From 8d37ffe0608d00f84191d229b9d4030e641f347f Mon Sep 17 00:00:00 2001 From: Mike Kucera Date: Mon, 24 Mar 2008 16:16:14 +0000 Subject: [PATCH] attempt at fixing function declarator/constructor initializer ambiguity, needs more testing --- .../core/dom/parser/cpp/CPPASTAmbiguity.java | 3 +- .../grammar/build.xml | 9 + .../grammar/cpp/CPPGrammar.g | 33 +- .../cpp/CPPNoFunctionDeclaratorParser.g | 43 + .../lrparser/action/BuildASTParserAction.java | 95 +- .../action/c99/C99BuildASTParserAction.java | 32 + .../action/cpp/CPPASTAmbiguousDeclarator.java | 138 + .../action/cpp/CPPASTNodeFactory.java | 4 +- .../action/cpp/CPPBuildASTParserAction.java | 163 +- .../cpp/ISOCPPASTSimpleDeclaration.java | 35 + .../cpp/CPPExpressionStatementParser.java | 493 +-- .../cpp/CPPExpressionStatementParserprs.java | 2969 ++++++++------- .../cpp/CPPNoCastExpressionParser.java | 493 +-- .../cpp/CPPNoCastExpressionParserprs.java | 2940 ++++++++------- .../cpp/CPPNoFunctionDeclaratorParser.java | 2116 +++++++++++ .../cpp/CPPNoFunctionDeclaratorParserprs.java | 2639 +++++++++++++ .../cpp/CPPNoFunctionDeclaratorParsersym.java | 272 ++ .../core/dom/lrparser/cpp/CPPParser.java | 489 +-- .../core/dom/lrparser/cpp/CPPParserprs.java | 3327 ++++++++--------- .../core/dom/lrparser/cpp/CPPRules.java | 544 +++ .../cpp/CPPSizeofExpressionParser.java | 493 +-- .../cpp/CPPSizeofExpressionParserprs.java | 2948 +++++++-------- 22 files changed, 13121 insertions(+), 7157 deletions(-) create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTAmbiguousDeclarator.java create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ISOCPPASTSimpleDeclaration.java create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java create mode 100644 lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguity.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguity.java index f9071bfa96d..3fea21ef45e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguity.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguity.java @@ -30,7 +30,8 @@ public abstract class CPPASTAmbiguity extends CPPASTNode { protected static class CPPASTNameCollector extends CPPASTVisitor { private IASTName[] names = new IASTName[2]; private int namesPos=-1; - { + + public CPPASTNameCollector() { shouldVisitNames = true; } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml b/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml index 96f11442b79..6801241a2d6 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml @@ -79,6 +79,15 @@ + + + + + diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g index ee7622c560e..fc704e74057 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g @@ -233,7 +233,7 @@ $Headers int kind = super.getKind(i); // There used to be a special token kind for zero used to parser pure virtual function declarations. - // But it turned out to be easier to just parse them as an init_declarator and programaticaly check + // But it turned out to be easier to just parse them as an init_ declarator and programaticaly check // for pure virtual, see consumeMemberDeclaratorWithInitializer(). //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$ @@ -435,8 +435,9 @@ template_opt /. $Build consumeEmpty(); $EndBuild ./ +-- the ::=? is necessary for example 8.2.1 in the C++ spec to parse correctly dcolon_opt - ::= '::' + ::=? '::' /. $Build consumePlaceHolder(); $EndBuild ./ | $empty /. $Build consumeEmpty(); $EndBuild ./ @@ -942,12 +943,12 @@ declaration_seq_opt simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ';' - /. $Build consumeDeclarationSimple(true); $EndBuild ./ + /. $Build consumeDeclarationSimple(true, true); $EndBuild ./ simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ';' - /. $Build consumeDeclarationSimple(true); $EndBuild ./ + /. $Build consumeDeclarationSimple(true, false); $EndBuild ./ -- declaration specifier nodes not created here, they are created by sub-rules @@ -1238,8 +1239,8 @@ linkage_specification init_declarator_list - ::= init_declarator - | init_declarator_list ',' init_declarator + ::= init_declarator_complete + | init_declarator_list ',' init_declarator_complete init_declarator_list_opt @@ -1247,6 +1248,11 @@ init_declarator_list_opt | $empty +init_declarator_complete + ::= init_declarator + /. $Build consumeInitDeclaratorComplete(); $EndBuild ./ + + init_declarator ::= declarator | declarator initializer @@ -1332,9 +1338,10 @@ cv_qualifier declarator_id_name - ::= qualified_or_unqualified_name - | dcolon_opt nested_name_specifier_opt type_name + ::= qualified_or_unqualified_name + | dcolon_opt nested_name_specifier_opt type_name /. $Build consumeQualifiedId(false); $EndBuild ./ + type_id @@ -1520,9 +1527,9 @@ visibility_label member_declaration ::= declaration_specifiers_opt member_declarator_list ';' - /. $Build consumeDeclarationSimple(true); $EndBuild ./ + /. $Build consumeDeclarationSimple(true, true); $EndBuild ./ | declaration_specifiers_opt ';' - /. $Build consumeDeclarationSimple(false); $EndBuild ./ + /. $Build consumeDeclarationSimple(false, false); $EndBuild ./ | function_definition ';' | function_definition | dcolon_opt nested_name_specifier template_opt unqualified_id_name ';' @@ -1785,11 +1792,11 @@ handler -- open a scope just so that we can reuse consumeDeclarationSimple() exception_declaration ::= type_specifier_seq declarator - /. $Build consumeDeclarationSimple(true); $EndBuild ./ + /. $Build consumeDeclarationSimple(true, false); $EndBuild ./ | type_specifier_seq abstract_declarator -- TODO might need to be abstract_declarator_without_function, might be too lenient, what exactly can you catch? - /. $Build consumeDeclarationSimple(true); $EndBuild ./ + /. $Build consumeDeclarationSimple(true, false); $EndBuild ./ | type_specifier_seq - /. $Build consumeDeclarationSimple(false); $EndBuild ./ + /. $Build consumeDeclarationSimple(false, false); $EndBuild ./ -- puts type ids on the stack diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g new file mode 100644 index 00000000000..5ca750de1fe --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoFunctionDeclaratorParser.g @@ -0,0 +1,43 @@ +----------------------------------------------------------------------------------- +-- Copyright (c) 2006, 2008 IBM Corporation and others. +-- All rights reserved. This program and the accompanying materials +-- are made available under the terms of the Eclipse Public License v1.0 +-- which accompanies this distribution, and is available at +-- http://www.eclipse.org/legal/epl-v10.html +-- +-- Contributors: +-- IBM Corporation - initial API and implementation +----------------------------------------------------------------------------------- + +%options la=2 +%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp +%options template=btParserTemplateD.g + +$Import + CPPGrammar.g +$DropRules + + direct_declarator + ::= function_direct_declarator + + init_declarator_complete + ::= init_declarator + +$End + +$Start + no_function_declarator_start +$End + +$Rules + + no_function_declarator_start + ::= init_declarator_complete + | ERROR_TOKEN + /. $Build consumeDeclarationProblem(); $EndBuild ./ + + -- redeclare this rule with no semantic action, prevents recursion + init_declarator_complete + ::= init_declarator + +$End \ No newline at end of file diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java index 3bb5cfbf7d4..63f31fd21a1 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java @@ -70,6 +70,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.parser.util.DebugUtil; +import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; @@ -92,7 +93,7 @@ public abstract class BuildASTParserAction { * @see BuildASTParserAction#consumePlaceHolder() * @see BuildASTParserAction#consumeEmpty() */ - protected static final Object PLACE_HOLDER = Boolean.TRUE; + protected static final Object PLACE_HOLDER = Boolean.TRUE; // any object will do // turn debug tracing on and off @@ -311,6 +312,9 @@ public abstract class BuildASTParserAction { return true; } + + + /************************************************************************************************************* * Start of actions. ************************************************************************************************************/ @@ -403,6 +407,7 @@ public abstract class BuildASTParserAction { tu.accept(EMPTY_VISITOR); } + /** * When applied to the AST causes ambiguity nodes to be resolved. */ @@ -453,8 +458,10 @@ public abstract class BuildASTParserAction { result = declarationStatement; else if(isImplicitInt(decl)) result = expressionStatement; - else + else { result = nodeFactory.newAmbiguousStatement(declarationStatement, expressionStatement); + setOffsetAndLength(result); + } astStack.push(result); @@ -532,7 +539,11 @@ public abstract class BuildASTParserAction { public void consumeExpressionID() { if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); - IASTName name = createName(parser.getRightIToken()); + System.out.println("Right Token: " + parser.getRightIToken()); + System.out.println("Left Token: " + parser.getLeftIToken()); + System.out.println("All Tokens: " + parser.getRuleTokens()); + //IASTName name = createName(parser.getRightIToken()); + IASTName name = createName(parser.getLeftIToken()); IASTIdExpression expr = nodeFactory.newIdExpression(name); setOffsetAndLength(expr); astStack.push(expr); @@ -628,8 +639,11 @@ public abstract class BuildASTParserAction { if(alternateExpr == null || alternateExpr instanceof IASTProblemExpression) astStack.push(expr); - else - astStack.push(nodeFactory.newAmbiguousExpression(expr, (IASTExpression)alternateExpr)); + else { + IASTNode ambiguityNode = nodeFactory.newAmbiguousExpression(expr, (IASTExpression)alternateExpr); + setOffsetAndLength(ambiguityNode); + astStack.push(ambiguityNode); + } if(TRACE_AST_STACK) System.out.println(astStack); } @@ -669,19 +683,13 @@ public abstract class BuildASTParserAction { if(alternateExpr == null || alternateExpr instanceof IASTProblemExpression) astStack.push(expr); - else - astStack.push(nodeFactory.newAmbiguousExpression(expr, (IASTExpression)alternateExpr)); + else { + IASTNode ambiguityNode = nodeFactory.newAmbiguousExpression(expr, (IASTExpression)alternateExpr); + setOffsetAndLength(ambiguityNode); + astStack.push(ambiguityNode); + } if(TRACE_AST_STACK) System.out.println(astStack); - -// if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); -// -// IASTTypeId typeId = (IASTTypeId) astStack.pop(); -// IASTTypeIdExpression expr = nodeFactory.newTypeIdExpression(operator, typeId); -// setOffsetAndLength(expr); -// astStack.push(expr); -// -// if(TRACE_AST_STACK) System.out.println(astStack); } @@ -1035,15 +1043,14 @@ public abstract class BuildASTParserAction { /** * parameter_declaration ::= declaration_specifiers */ - public void consumeParameterDeclarationWithoutDeclarator(/*IBinding binding*/) { + public void consumeParameterDeclarationWithoutDeclarator() { if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); // offsets need to be calculated differently in this case - final int endOffset = parser.getRightIToken().getEndOffset() + 1; + final int endOffset = parser.getRightIToken().getEndOffset(); IASTName name = nodeFactory.newName(); setOffsetAndLength(name, endOffset, 0); - //name.setBinding(binding); // it appears that a declarator is always required in the AST here IASTDeclarator declarator = nodeFactory.newDeclarator(name); @@ -1078,31 +1085,31 @@ public abstract class BuildASTParserAction { * * TODO Make both grammars the same here. */ - public void consumeDeclarationSimple(boolean hasDeclaratorList) { - if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); - - List declarators = (hasDeclaratorList) ? astStack.closeScope() : Collections.emptyList(); - IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop(); // may be null - - // do not generate nodes for extra EOC tokens - if(matchTokens(parser.getRuleTokens(), CPPParsersym.TK_EndOfCompletion)) - return; - - if(declSpecifier == null) { // can happen if implicit int is used - declSpecifier = nodeFactory.newSimpleDeclSpecifier(); - setOffsetAndLength(declSpecifier, parser.getLeftIToken().getStartOffset(), 0); - } - - IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier); - - for(Object declarator : declarators) - declaration.addDeclarator((IASTDeclarator)declarator); - - setOffsetAndLength(declaration); - astStack.push(declaration); - - if(TRACE_AST_STACK) System.out.println(astStack); - } +// public void consumeDeclarationSimple(boolean hasDeclaratorList) { +// if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); +// +// List declarators = (hasDeclaratorList) ? astStack.closeScope() : Collections.emptyList(); +// IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop(); // may be null +// +// // do not generate nodes for extra EOC tokens +// if(matchTokens(parser.getRuleTokens(), CPPParsersym.TK_EndOfCompletion)) +// return; +// +// if(declSpecifier == null) { // can happen if implicit int is used +// declSpecifier = nodeFactory.newSimpleDeclSpecifier(); +// setOffsetAndLength(declSpecifier, parser.getLeftIToken().getStartOffset(), 0); +// } +// +// IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier); +// +// for(Object declarator : declarators) +// declaration.addDeclarator((IASTDeclarator)declarator); +// +// setOffsetAndLength(declaration); +// astStack.push(declaration); +// +// if(TRACE_AST_STACK) System.out.println(astStack); +// } /** diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java index f10423c181a..c683472099b 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java @@ -34,6 +34,7 @@ import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_uns import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_void; import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.TK_volatile; +import java.util.Collections; import java.util.List; import lpg.lpgjavaruntime.IToken; @@ -41,6 +42,7 @@ import lpg.lpgjavaruntime.IToken; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclaration; +import org.eclipse.cdt.core.dom.ast.IASTDeclarator; import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTFieldReference; @@ -131,16 +133,19 @@ public class C99BuildASTParserAction extends BuildASTParserAction { @Override protected IParser getExpressionStatementParser() { + DebugUtil.printMethodTrace(); return new C99ExpressionStatementParser(parser.getOrderedTerminalSymbols()); } @Override protected IParser getNoCastExpressionParser() { + DebugUtil.printMethodTrace(); return new C99NoCastExpressionParser(parser.getOrderedTerminalSymbols()); } @Override protected IParser getSizeofExpressionParser() { + DebugUtil.printMethodTrace(); return new C99SizeofExpressionParser(parser.getOrderedTerminalSymbols()); } @@ -539,6 +544,33 @@ public class C99BuildASTParserAction extends BuildASTParserAction { + /** + * declaration ::= declaration_specifiers init_declarator_list ';' + * declaration ::= declaration_specifiers ';' + */ + public void consumeDeclarationSimple(boolean hasDeclaratorList) { + if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); + + List declarators = (hasDeclaratorList) ? astStack.closeScope() : Collections.emptyList(); + IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop(); + + // do not generate nodes for extra EOC tokens + if(matchTokens(parser.getRuleTokens(), CPPParsersym.TK_EndOfCompletion)) + return; + + IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier); + + for(Object declarator : declarators) + declaration.addDeclarator((IASTDeclarator)declarator); + + setOffsetAndLength(declaration); + astStack.push(declaration); + + if(TRACE_AST_STACK) System.out.println(astStack); + } + + + /** * external_declaration ::= ';' * diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTAmbiguousDeclarator.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTAmbiguousDeclarator.java new file mode 100644 index 00000000000..339d8e3360a --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTAmbiguousDeclarator.java @@ -0,0 +1,138 @@ +package org.eclipse.cdt.core.dom.lrparser.action.cpp; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.cdt.core.dom.ast.ASTVisitor; +import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTDeclarator; +import org.eclipse.cdt.core.dom.ast.IASTInitializer; +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; +import org.eclipse.cdt.core.dom.ast.IBinding; +import org.eclipse.cdt.core.dom.ast.IProblemBinding; +import org.eclipse.cdt.core.dom.ast.IScope; +import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; +import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguity; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor; + + +public class CPPASTAmbiguousDeclarator extends CPPASTAmbiguity implements IASTDeclarator { + + private List declarators = new ArrayList(2); + + public CPPASTAmbiguousDeclarator(IASTDeclarator ... ds) { + for(IASTDeclarator declarator : ds) + addDeclarator(declarator); + } + + @Override + protected IASTNode[] getNodes() { + return declarators.toArray(new IASTDeclarator[declarators.size()]); + } + + + + @Override + public boolean accept(ASTVisitor visitor) { + // this code was copied from CPPASTAmbiguity.accept() and slightly modified. + IASTNode nodeToReplace = this; + IASTAmbiguityParent owner = (IASTAmbiguityParent) getParent(); + + IASTNode[] nodez = getNodes(); + int[] problems = new int[nodez.length]; + + for(int i = 0; i < nodez.length; ++i) { + IASTNode node = nodez[i]; + owner.replace(nodeToReplace, node); + nodeToReplace = node; + + node.accept(visitor); + CPPASTNameCollector nameCollector = new CPPASTNameCollector(); + node.accept(nameCollector); + IASTName[] names = nameCollector.getNames(); + for(IASTName name : names) { + try { + IBinding b = name.resolveBinding(); + if(b == null || b instanceof IProblemBinding) + ++problems[i]; + } catch (Exception t) { + t.printStackTrace(); + ++problems[i]; + } + } + if(names.length > 0) { + IScope scope = CPPVisitor.getContainingScope(names[0]); + if( scope != null ) { + try { + ASTInternal.flushCache(scope); + } catch (DOMException de) {} + } + } + } + int bestIndex = 0; + int bestValue = problems[0]; + for (int i = 1; i < problems.length; ++i) { + if (problems[i] < bestValue) { + bestIndex = i; + bestValue = problems[i]; + } + } + + //IASTAmbiguityParent owner = (IASTAmbiguityParent) getParent(); + owner.replace(nodeToReplace, nodez[bestIndex]); + return true; + } + + public void addDeclarator(IASTDeclarator declarator) { + if(declarator != null) { + declarators.add(declarator); + declarator.setParent(this); + declarator.setPropertyInParent(null); // it really doesn't matter + } + } + + private IASTDeclarator getDefaultDeclarator() { + return declarators.get(0); + } + + public void addPointerOperator(IASTPointerOperator operator) { + getDefaultDeclarator().addPointerOperator(operator); + } + + public void setInitializer(IASTInitializer initializer) { + getDefaultDeclarator().setInitializer(initializer); + } + + public void setName(IASTName name) { + getDefaultDeclarator().setName(name); + } + + public void setNestedDeclarator(IASTDeclarator nested) { + getDefaultDeclarator().setNestedDeclarator(nested); + } + + public IASTInitializer getInitializer() { + return getDefaultDeclarator().getInitializer(); + } + + public IASTName getName() { + return getDefaultDeclarator().getName(); + } + + public IASTDeclarator getNestedDeclarator() { + return getDefaultDeclarator().getNestedDeclarator(); + } + + public IASTPointerOperator[] getPointerOperators() { + return getDefaultDeclarator().getPointerOperators(); + } + + public int getRoleForName(IASTName n) { + return getDefaultDeclarator().getRoleForName(n); + } + + +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTNodeFactory.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTNodeFactory.java index 7b5d44c3dc6..93331543d22 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTNodeFactory.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPASTNodeFactory.java @@ -187,6 +187,8 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator; /** * Abstract factory implementation that creates C++ AST nodes. * + * TODO rename, its convention for AST nodes to start with CPPAST... + * * @author Mike Kucera */ @SuppressWarnings("restriction") // all AST node constructors are internal @@ -377,7 +379,7 @@ public class CPPASTNodeFactory implements ICPPASTNodeFactory { } public IASTSimpleDeclaration newSimpleDeclaration(IASTDeclSpecifier declSpecifier) { - return new CPPASTSimpleDeclaration(declSpecifier); + return new ISOCPPASTSimpleDeclaration(declSpecifier); } public IASTInitializerExpression newInitializerExpression(IASTExpression expression) { diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java index f47eca358d3..d5035c25694 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java @@ -10,8 +10,8 @@ *******************************************************************************/ package org.eclipse.cdt.core.dom.lrparser.action.cpp; -import static org.eclipse.cdt.core.parser.util.CollectionUtils.*; - +import static org.eclipse.cdt.core.parser.util.CollectionUtils.findFirstAndRemove; +import static org.eclipse.cdt.core.parser.util.CollectionUtils.reverseIterable; import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.*; import java.util.Collections; @@ -20,16 +20,17 @@ import java.util.List; import lpg.lpgjavaruntime.IToken; +import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclaration; -import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement; import org.eclipse.cdt.core.dom.ast.IASTDeclarator; import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTFieldReference; +import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.IASTIfStatement; import org.eclipse.cdt.core.dom.ast.IASTInitializer; @@ -40,6 +41,7 @@ import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTPointer; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; +import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IASTStatement; @@ -75,7 +77,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTryBlockStatement; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypenameExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression; @@ -87,15 +88,13 @@ import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.LPGTokenAdapter; import org.eclipse.cdt.core.dom.lrparser.action.BuildASTParserAction; -import org.eclipse.cdt.core.parser.util.CollectionUtils; +import org.eclipse.cdt.core.parser.util.ASTPrinter; import org.eclipse.cdt.core.parser.util.DebugUtil; -import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99ExpressionStatementParser; -import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPExpressionStatementParser; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoCastExpressionParser; +import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoFunctionDeclaratorParser; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPSizeofExpressionParser; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTQualifiedName; import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator; @@ -130,22 +129,21 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { @Override protected IParser getExpressionStatementParser() { - DebugUtil.printMethodTrace(); return new CPPExpressionStatementParser(parser.getOrderedTerminalSymbols()); } @Override protected IParser getNoCastExpressionParser() { - DebugUtil.printMethodTrace(); return new CPPNoCastExpressionParser(parser.getOrderedTerminalSymbols()); } @Override protected IParser getSizeofExpressionParser() { - DebugUtil.printMethodTrace(); return new CPPSizeofExpressionParser(parser.getOrderedTerminalSymbols()); } + + /** * new_expression @@ -964,8 +962,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { * object to determine how to set a specifier. */ protected void setSpecifier(IASTDeclSpecifier node, IToken token) { - //TODO int kind = asC99Kind(token); - + //TODO int kind = asC99Kind(token) int kind = token.getKind(); switch(kind){ case TK_typedef: node.setStorageClass(IASTDeclSpecifier.sc_typedef); return; @@ -1081,8 +1078,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { private static int getElaboratedTypeSpecifier(IToken token) { - switch(token.getKind()) { - default: assert false; + int kind = token.getKind(); + switch(kind) { + default: assert false : "wrong token kind: " + kind; //$NON-NLS-1$ case TK_struct: return IASTElaboratedTypeSpecifier.k_struct; case TK_union: return IASTElaboratedTypeSpecifier.k_union; case TK_enum: return IASTElaboratedTypeSpecifier.k_enum; @@ -1091,6 +1089,121 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { } + + /** + * simple_declaration + * ::= declaration_specifiers_opt init_declarator_list_opt ';' + * + * TODO: remove attemptAmbiguityResolution parameter + */ + public void consumeDeclarationSimple(boolean hasDeclaratorList, boolean attemptAmbiguityResolution) { + if(TRACE_ACTIONS) DebugUtil.printMethodTrace(); + + List declarators = (hasDeclaratorList) ? astStack.closeScope() : Collections.emptyList(); + IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop(); // may be null + + // do not generate nodes for extra EOC tokens + if(matchTokens(parser.getRuleTokens(), CPPParsersym.TK_EndOfCompletion)) + return; + + if(declSpecifier == null) { // can happen if implicit int is used + declSpecifier = nodeFactory.newSimpleDeclSpecifier(); + setOffsetAndLength(declSpecifier, parser.getLeftIToken().getStartOffset(), 0); + } + + IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpecifier); + setOffsetAndLength(declaration); + for(Object declarator : declarators) + declaration.addDeclarator((IASTDeclarator)declarator); + + astStack.push(declaration); + +// IASTNode alternateDeclaration = null; +// if(attemptAmbiguityResolution) {// && hasConstructorInitializer(declaration)) { // try to resolve the constructor initializer ambiguity +// // TODO should this ambiguity be resolved here, or at the level of individual declarators? +// IParser alternateParser = new CPPNoConstructorInitializerParser(parser.getOrderedTerminalSymbols()); +// alternateDeclaration = runSecondaryParser(alternateParser); +// } +// +// if(alternateDeclaration == null || alternateDeclaration instanceof IASTProblemDeclaration) +// astStack.push(declaration); +// else { +// System.out.println("Ambiguous Declaration in my parser!"); +//// ASTPrinter.print(declaration); +//// System.out.println(); +//// ASTPrinter.print(alternateDeclaration); +//// System.out.println(); +// +// IASTNode ambiguityNode = nodeFactory.newAmbiguousDeclaration((IASTDeclaration)alternateDeclaration, declaration); +// setOffsetAndLength(ambiguityNode); +// astStack.push(ambiguityNode); +// } +// + + + if(TRACE_AST_STACK) System.out.println(astStack); + } + + + public void consumeInitDeclaratorComplete() { + DebugUtil.printMethodTrace(); + + IASTDeclarator declarator = (IASTDeclarator) astStack.peek(); + if(!(declarator instanceof IASTFunctionDeclarator)) + return; + + IParser alternateParser = new CPPNoFunctionDeclaratorParser(parser.getOrderedTerminalSymbols()); + IASTNode alternateDeclarator = runSecondaryParser(alternateParser); + + if(alternateDeclarator == null || alternateDeclarator instanceof IASTProblemDeclaration) + return; + + + astStack.pop(); + IASTNode ambiguityNode = new CPPASTAmbiguousDeclarator(declarator, (IASTDeclarator)alternateDeclarator); + + System.out.println("AMBIGUOUS DECLARATOR!"); +// ASTPrinter.print(declarator); +// System.out.println(); +// ASTPrinter.print(alternateDeclarator); +// System.out.println(); + + setOffsetAndLength(ambiguityNode); + astStack.push(ambiguityNode); + + + if(TRACE_AST_STACK) System.out.println(astStack); + } + + + + /** + * Returns true iff the given AST contains at least one constructor initializer node. + * Can be called on any AST node but is mean to be called on declarations or declarators. + * + * TODO how freaking inefficient is this? + */ + private static boolean hasConstructorInitializer(IASTNode declaration) { + final boolean[] found = {false}; + + ASTVisitor detector = new ASTVisitor() { + {shouldVisitInitializers = true;} + @Override + public int visit(IASTInitializer initializer) { + if(initializer instanceof ICPPASTConstructorInitializer) { + found[0] = true; // who said Java doesn't have closures + return PROCESS_ABORT; + } + return PROCESS_CONTINUE; + } + }; + + declaration.accept(detector); + System.out.println("hasConstructorInitializer: " + found[0]); + return found[0]; + } + + /** * visibility_label * ::= access_specifier_keyword ':' @@ -1109,8 +1222,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { private static int getAccessSpecifier(IToken token) { - switch(token.getKind()) { - default: assert false; + int kind = token.getKind(); + switch(kind) { + default: assert false : "wrong token kind: " + kind; //$NON-NLS-1$ case TK_private: return ICPPASTVisiblityLabel.v_private; case TK_public: return ICPPASTVisiblityLabel.v_public; case TK_protected: return ICPPASTVisiblityLabel.v_protected; @@ -1218,8 +1332,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { private static int getCompositeTypeSpecifier(IToken token) { - switch(token.getKind()) { - default: assert false; + int kind = token.getKind(); + switch(kind) { + default: assert false : "wrong token kind: " + kind; //$NON-NLS-1$ case TK_struct: return IASTCompositeTypeSpecifier.k_struct; case TK_union: return IASTCompositeTypeSpecifier.k_union; case TK_class: return ICPPASTCompositeTypeSpecifier.k_class; @@ -1325,8 +1440,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { } for(Object token : astStack.closeScope()) { - switch(((IToken)token).getKind()) { - default: assert false; + int kind = ((IToken)token).getKind(); + switch(kind) { + default: assert false : "wrong token kind: " + kind; //$NON-NLS-1$ case TK_const: declarator.setConst(true); break; case TK_volatile: declarator.setVolatile(true); break; } @@ -1501,8 +1617,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { } private static int getTemplateParameterType(IToken token) { - switch(token.getKind()) { - default: assert false; + int kind = token.getKind(); + switch(kind) { + default: assert false : "wrong token kind: " + kind; //$NON-NLS-1$ case TK_class: return ICPPASTSimpleTypeTemplateParameter.st_class; case TK_typename: return ICPPASTSimpleTypeTemplateParameter.st_typename; } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ISOCPPASTSimpleDeclaration.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ISOCPPASTSimpleDeclaration.java new file mode 100644 index 00000000000..5d9427dbe6f --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/ISOCPPASTSimpleDeclaration.java @@ -0,0 +1,35 @@ +package org.eclipse.cdt.core.dom.lrparser.action.cpp; + +import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; +import org.eclipse.cdt.core.dom.ast.IASTDeclarator; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration; + +/** + * TODO this functionality should be moved into CPPASTSimpleDeclaration + * @author Mike Kucera + * + */ +public class ISOCPPASTSimpleDeclaration extends CPPASTSimpleDeclaration implements IASTAmbiguityParent { + + public ISOCPPASTSimpleDeclaration() { + } + + public ISOCPPASTSimpleDeclaration(IASTDeclSpecifier declSpecifier) { + super(declSpecifier); + } + + public void replace(IASTNode child, IASTNode other) { + IASTDeclarator[] declarators = getDeclarators(); + for(int i = 0; i < declarators.length; i++) { + if(declarators[i] == child) { + declarators[i] = (IASTDeclarator)other; + other.setParent(child.getParent()); + other.setPropertyInParent(child.getPropertyInParent()); + break; + } + } + } + +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParser.java index 20dcda3a3cf..34f4400af53 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParser.java @@ -213,7 +213,7 @@ public int getKind(int i) { int kind = super.getKind(i); // There used to be a special token kind for zero used to parser pure virtual function declarations. - // But it turned out to be easier to just parse them as an init_declarator and programaticaly check + // But it turned out to be easier to just parse them as an init_ declarator and programaticaly check // for pure virtual, see consumeMemberDeclaratorWithInitializer(). //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$ @@ -1221,14 +1221,14 @@ public CPPExpressionStatementParser(String[] mapFrom) { // constructor // Rule 221: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; // case 221: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, true); break; } // // Rule 222: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; // case 222: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // @@ -1449,660 +1449,667 @@ public CPPExpressionStatementParser(String[] mapFrom) { // constructor } // - // Rule 312: init_declarator ::= declarator initializer + // Rule 311: init_declarator_complete ::= init_declarator // - case 312: { action.builder. + case 311: { action.builder. + consumeInitDeclaratorComplete(); break; + } + + // + // Rule 313: init_declarator ::= declarator initializer + // + case 313: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 314: declarator ::= ptr_operator_seq direct_declarator + // Rule 315: declarator ::= ptr_operator_seq direct_declarator // - case 314: { action.builder. + case 315: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 316: function_declarator ::= ptr_operator_seq direct_declarator + // Rule 317: function_declarator ::= ptr_operator_seq direct_declarator // - case 316: { action.builder. + case 317: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 320: basic_direct_declarator ::= declarator_id_name + // Rule 321: basic_direct_declarator ::= declarator_id_name // - case 320: { action.builder. + case 321: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 321: basic_direct_declarator ::= ( declarator ) + // Rule 322: basic_direct_declarator ::= ( declarator ) // - case 321: { action.builder. + case 322: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 322: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 323: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 322: { action.builder. + case 323: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 323: array_direct_declarator ::= array_direct_declarator array_modifier - // - case 323: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 324: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 324: array_direct_declarator ::= array_direct_declarator array_modifier // case 324: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 325: array_modifier ::= [ constant_expression ] + // Rule 325: array_direct_declarator ::= basic_direct_declarator array_modifier // case 325: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 326: array_modifier ::= [ constant_expression ] + // + case 326: { action.builder. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 326: array_modifier ::= [ ] + // Rule 327: array_modifier ::= [ ] // - case 326: { action.builder. + case 327: { action.builder. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 327: ptr_operator ::= * cv_qualifier_seq_opt + // Rule 328: ptr_operator ::= * cv_qualifier_seq_opt // - case 327: { action.builder. + case 328: { action.builder. consumePointer(); break; } // - // Rule 328: ptr_operator ::= & + // Rule 329: ptr_operator ::= & // - case 328: { action.builder. + case 329: { action.builder. consumeReferenceOperator(); break; } // - // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt + // Rule 330: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt // - case 329: { action.builder. + case 330: { action.builder. consumePointerToMember(); break; } // - // Rule 335: cv_qualifier ::= const - // - case 335: { action.builder. - consumeDeclSpecToken(); break; - } - - // - // Rule 336: cv_qualifier ::= volatile + // Rule 336: cv_qualifier ::= const // case 336: { action.builder. consumeDeclSpecToken(); break; } // - // Rule 338: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 337: cv_qualifier ::= volatile // - case 338: { action.builder. + case 337: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 339: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // + case 339: { action.builder. consumeQualifiedId(false); break; } // - // Rule 339: type_id ::= type_specifier_seq + // Rule 340: type_id ::= type_specifier_seq // - case 339: { action.builder. + case 340: { action.builder. consumeTypeId(false); break; } // - // Rule 340: type_id ::= type_specifier_seq abstract_declarator + // Rule 341: type_id ::= type_specifier_seq abstract_declarator // - case 340: { action.builder. + case 341: { action.builder. consumeTypeId(true); break; } // - // Rule 343: abstract_declarator ::= ptr_operator_seq + // Rule 344: abstract_declarator ::= ptr_operator_seq // - case 343: { action.builder. + case 344: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 344: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // Rule 345: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator // - case 344: { action.builder. + case 345: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 348: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 349: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 348: { action.builder. + case 349: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 349: array_direct_abstract_declarator ::= array_modifier + // Rule 350: array_direct_abstract_declarator ::= array_modifier // - case 349: { action.builder. + case 350: { action.builder. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 350: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier - // - case 350: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 351: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 351: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // case 351: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 352: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 352: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // case 352: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 353: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 353: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 353: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 354: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 353: { action.builder. + case 354: { action.builder. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt ... - // - case 354: { action.builder. - consumePlaceHolder(); break; - } - - // - // Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt ... // case 355: { action.builder. - consumeEmpty(); break; - } - - // - // Rule 356: parameter_declaration_clause ::= parameter_declaration_list , ... - // - case 356: { action.builder. consumePlaceHolder(); break; } // - // Rule 362: abstract_declarator_opt ::= $Empty + // Rule 356: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 362: { action.builder. + case 356: { action.builder. consumeEmpty(); break; } // - // Rule 363: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 357: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 357: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 363: abstract_declarator_opt ::= $Empty // case 363: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 364: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 364: { action.builder. consumeParameterDeclaration(); break; } // - // Rule 364: parameter_declaration ::= declaration_specifiers + // Rule 365: parameter_declaration ::= declaration_specifiers // - case 364: { action.builder. + case 365: { action.builder. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 366: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 367: parameter_init_declarator ::= declarator = parameter_initializer // - case 366: { action.builder. + case 367: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 368: parameter_init_declarator ::= abstract_declarator = parameter_initializer - // - case 368: { action.builder. - consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 369: parameter_init_declarator ::= = parameter_initializer + // Rule 369: parameter_init_declarator ::= abstract_declarator = parameter_initializer // case 369: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 370: parameter_init_declarator ::= = parameter_initializer + // + case 370: { action.builder. consumeDeclaratorWithInitializer(false); break; } // - // Rule 370: parameter_initializer ::= assignment_expression + // Rule 371: parameter_initializer ::= assignment_expression // - case 370: { action.builder. + case 371: { action.builder. consumeInitializer(); break; } // - // Rule 371: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // Rule 372: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body // - case 371: { action.builder. + case 372: { action.builder. consumeFunctionDefinition(false); break; } // - // Rule 372: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // Rule 373: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq // - case 372: { action.builder. + case 373: { action.builder. consumeFunctionDefinition(true); break; } // - // Rule 375: initializer ::= ( expression_list ) + // Rule 376: initializer ::= ( expression_list ) // - case 375: { action.builder. + case 376: { action.builder. consumeInitializerConstructor(); break; } // - // Rule 376: initializer_clause ::= assignment_expression + // Rule 377: initializer_clause ::= assignment_expression // - case 376: { action.builder. + case 377: { action.builder. consumeInitializer(); break; } // - // Rule 377: initializer_clause ::= { initializer_list , } - // - case 377: { action.builder. - consumeInitializerList(); break; - } - - // - // Rule 378: initializer_clause ::= { initializer_list } + // Rule 378: initializer_clause ::= { initializer_list , } // case 378: { action.builder. consumeInitializerList(); break; } // - // Rule 379: initializer_clause ::= { } + // Rule 379: initializer_clause ::= { initializer_list } // case 379: { action.builder. consumeInitializerList(); break; } // - // Rule 384: class_specifier ::= class_head { member_declaration_list_opt } + // Rule 380: initializer_clause ::= { } // - case 384: { action.builder. + case 380: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 385: class_specifier ::= class_head { member_declaration_list_opt } + // + case 385: { action.builder. consumeClassSpecifier(); break; } // - // Rule 385: class_head ::= class_keyword identifier_name_opt base_clause_opt - // - case 385: { action.builder. - consumeClassHead(false); break; - } - - // - // Rule 386: class_head ::= class_keyword template_id_name base_clause_opt + // Rule 386: class_head ::= class_keyword identifier_name_opt base_clause_opt // case 386: { action.builder. consumeClassHead(false); break; } // - // Rule 387: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt + // Rule 387: class_head ::= class_keyword template_id_name base_clause_opt // case 387: { action.builder. - consumeClassHead(true); break; + consumeClassHead(false); break; } // - // Rule 388: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt + // Rule 388: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt // case 388: { action.builder. consumeClassHead(true); break; } // - // Rule 390: identifier_name_opt ::= $Empty + // Rule 389: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt // - case 390: { action.builder. + case 389: { action.builder. + consumeClassHead(true); break; + } + + // + // Rule 391: identifier_name_opt ::= $Empty + // + case 391: { action.builder. consumeEmpty(); break; } // - // Rule 394: visibility_label ::= access_specifier_keyword : + // Rule 395: visibility_label ::= access_specifier_keyword : // - case 394: { action.builder. + case 395: { action.builder. consumeVisibilityLabel(); break; } // - // Rule 395: member_declaration ::= declaration_specifiers_opt member_declarator_list ; - // - case 395: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 396: member_declaration ::= declaration_specifiers_opt ; + // Rule 396: member_declaration ::= declaration_specifiers_opt member_declarator_list ; // case 396: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, true); break; } // - // Rule 399: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 397: member_declaration ::= declaration_specifiers_opt ; // - case 399: { action.builder. + case 397: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 400: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 400: { action.builder. consumeMemberDeclarationQualifiedId(); break; } // - // Rule 403: member_declaration ::= ERROR_TOKEN + // Rule 404: member_declaration ::= ERROR_TOKEN // - case 403: { action.builder. + case 404: { action.builder. consumeDeclarationProblem(); break; } // - // Rule 411: member_declarator ::= declarator constant_initializer + // Rule 412: member_declarator ::= declarator constant_initializer // - case 411: { action.builder. + case 412: { action.builder. consumeMemberDeclaratorWithInitializer(); break; } // - // Rule 412: member_declarator ::= bit_field_declarator : constant_expression + // Rule 413: member_declarator ::= bit_field_declarator : constant_expression // - case 412: { action.builder. + case 413: { action.builder. consumeBitField(true); break; } // - // Rule 413: member_declarator ::= : constant_expression + // Rule 414: member_declarator ::= : constant_expression // - case 413: { action.builder. + case 414: { action.builder. consumeBitField(false); break; } // - // Rule 414: bit_field_declarator ::= identifier_name + // Rule 415: bit_field_declarator ::= identifier_name // - case 414: { action.builder. + case 415: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 415: constant_initializer ::= = constant_expression + // Rule 416: constant_initializer ::= = constant_expression // - case 415: { action.builder. + case 416: { action.builder. consumeInitializer(); break; } // - // Rule 421: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 422: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // - case 421: { action.builder. + case 422: { action.builder. consumeBaseSpecifier(false, false); break; } // - // Rule 422: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name - // - case 422: { action.builder. - consumeBaseSpecifier(true, true); break; - } - - // - // Rule 423: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 423: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // case 423: { action.builder. consumeBaseSpecifier(true, true); break; } // - // Rule 424: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 424: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // case 424: { action.builder. + consumeBaseSpecifier(true, true); break; + } + + // + // Rule 425: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 425: { action.builder. consumeBaseSpecifier(true, false); break; } // - // Rule 425: access_specifier_keyword ::= private - // - case 425: { action.builder. - consumeAccessKeywordToken(); break; - } - - // - // Rule 426: access_specifier_keyword ::= protected + // Rule 426: access_specifier_keyword ::= private // case 426: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 427: access_specifier_keyword ::= public + // Rule 427: access_specifier_keyword ::= protected // case 427: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 429: access_specifier_keyword_opt ::= $Empty + // Rule 428: access_specifier_keyword ::= public // - case 429: { action.builder. + case 428: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 430: access_specifier_keyword_opt ::= $Empty + // + case 430: { action.builder. consumeEmpty(); break; } // - // Rule 430: conversion_function_id_name ::= operator conversion_type_id + // Rule 431: conversion_function_id_name ::= operator conversion_type_id // - case 430: { action.builder. + case 431: { action.builder. consumeConversionName(); break; } // - // Rule 431: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 432: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 431: { action.builder. + case 432: { action.builder. consumeTypeId(true); break; } // - // Rule 432: conversion_type_id ::= type_specifier_seq + // Rule 433: conversion_type_id ::= type_specifier_seq // - case 432: { action.builder. + case 433: { action.builder. consumeTypeId(false); break; } // - // Rule 433: conversion_declarator ::= ptr_operator_seq + // Rule 434: conversion_declarator ::= ptr_operator_seq // - case 433: { action.builder. + case 434: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 439: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 440: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 439: { action.builder. + case 440: { action.builder. consumeConstructorChainInitializer(); break; } // - // Rule 440: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 441: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 440: { action.builder. + case 441: { action.builder. consumeQualifiedId(false); break; } // - // Rule 443: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // Rule 444: operator_function_id_name ::= operator_id_name < template_argument_list_opt > // - case 443: { action.builder. + case 444: { action.builder. consumeTemplateId(); break; } // - // Rule 444: operator_id_name ::= operator overloadable_operator + // Rule 445: operator_id_name ::= operator overloadable_operator // - case 444: { action.builder. + case 445: { action.builder. consumeOperatorName(); break; } // - // Rule 487: template_declaration ::= export_opt template < template_parameter_list > declaration + // Rule 488: template_declaration ::= export_opt template < template_parameter_list > declaration // - case 487: { action.builder. + case 488: { action.builder. consumeTemplateDeclaration(); break; } // - // Rule 488: export_opt ::= export + // Rule 489: export_opt ::= export // - case 488: { action.builder. + case 489: { action.builder. consumePlaceHolder(); break; } // - // Rule 489: export_opt ::= $Empty + // Rule 490: export_opt ::= $Empty // - case 489: { action.builder. + case 490: { action.builder. consumeEmpty(); break; } // - // Rule 494: type_parameter ::= class identifier_name_opt - // - case 494: { action.builder. - consumeSimpleTypeTemplateParameter(false); break; - } - - // - // Rule 495: type_parameter ::= class identifier_name_opt = type_id + // Rule 495: type_parameter ::= class identifier_name_opt // case 495: { action.builder. - consumeSimpleTypeTemplateParameter(true); break; - } - - // - // Rule 496: type_parameter ::= typename identifier_name_opt - // - case 496: { action.builder. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 497: type_parameter ::= typename identifier_name_opt = type_id + // Rule 496: type_parameter ::= class identifier_name_opt = type_id // - case 497: { action.builder. + case 496: { action.builder. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 498: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // Rule 497: type_parameter ::= typename identifier_name_opt + // + case 497: { action.builder. + consumeSimpleTypeTemplateParameter(false); break; + } + + // + // Rule 498: type_parameter ::= typename identifier_name_opt = type_id // case 498: { action.builder. + consumeSimpleTypeTemplateParameter(true); break; + } + + // + // Rule 499: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // + case 499: { action.builder. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 499: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // Rule 500: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression // - case 499: { action.builder. + case 500: { action.builder. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 500: template_id_name ::= template_identifier < template_argument_list_opt > + // Rule 501: template_id_name ::= template_identifier < template_argument_list_opt > // - case 500: { action.builder. + case 501: { action.builder. consumeTemplateId(); break; } // - // Rule 509: explicit_instantiation ::= template declaration + // Rule 510: explicit_instantiation ::= template declaration // - case 509: { action.builder. + case 510: { action.builder. consumeTemplateExplicitInstantiation(); break; } // - // Rule 510: explicit_specialization ::= template < > declaration + // Rule 511: explicit_specialization ::= template < > declaration // - case 510: { action.builder. + case 511: { action.builder. consumeTemplateExplicitSpecialization(); break; } // - // Rule 511: try_block ::= try compound_statement handler_seq + // Rule 512: try_block ::= try compound_statement handler_seq // - case 511: { action.builder. + case 512: { action.builder. consumeStatementTryBlock(); break; } // - // Rule 514: handler ::= catch ( exception_declaration ) compound_statement + // Rule 515: handler ::= catch ( exception_declaration ) compound_statement // - case 514: { action.builder. + case 515: { action.builder. consumeStatementCatchHandler(false); break; } // - // Rule 515: handler ::= catch ( ... ) compound_statement + // Rule 516: handler ::= catch ( ... ) compound_statement // - case 515: { action.builder. + case 516: { action.builder. consumeStatementCatchHandler(true); break; } // - // Rule 516: exception_declaration ::= type_specifier_seq declarator - // - case 516: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 517: exception_declaration ::= type_specifier_seq abstract_declarator + // Rule 517: exception_declaration ::= type_specifier_seq declarator // case 517: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 518: exception_declaration ::= type_specifier_seq + // Rule 518: exception_declaration ::= type_specifier_seq abstract_declarator // case 518: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 526: expression_parser_start ::= ERROR_TOKEN + // Rule 519: exception_declaration ::= type_specifier_seq // - case 526: { action.builder. + case 519: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 527: expression_parser_start ::= ERROR_TOKEN + // + case 527: { action.builder. consumeExpressionProblem(); break; } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParserprs.java index 38aa0ce7c05..1f064bf719c 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParserprs.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionStatementParserprs.java @@ -68,467 +68,464 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 5,4,5,6,1,3,1,0,1,3, 1,1,1,1,1,6,6,5,7,6, 1,0,6,5,6,4,1,3,1,0, - 1,2,1,3,1,3,1,1,1,1, - 3,9,2,2,3,2,3,1,5,1, - 2,2,1,0,1,1,1,3,1,2, - 1,1,2,3,1,1,1,3,1,2, - 2,9,8,2,1,3,1,3,1,0, - 1,0,2,1,1,3,1,3,2,1, - 5,8,1,2,3,1,5,4,3,1, - 3,1,1,5,4,4,5,5,1,0, - 1,1,1,2,4,2,2,1,5,1, - 1,1,1,1,2,1,0,1,3,1, - 2,3,2,1,2,2,1,0,1,3, - 3,5,5,4,1,1,1,1,0,2, - 2,1,2,2,1,0,1,3,4,3, - 1,1,5,2,1,1,3,3,1,1, + 1,1,2,1,3,1,3,1,1,1, + 1,3,9,2,2,3,2,3,1,5, + 1,2,2,1,0,1,1,1,3,1, + 2,1,1,2,3,1,1,1,3,1, + 2,2,9,8,2,1,3,1,3,1, + 0,1,0,2,1,1,3,1,3,2, + 1,5,8,1,2,3,1,5,4,3, + 1,3,1,1,5,4,4,5,5,1, + 0,1,1,1,2,4,2,2,1,5, + 1,1,1,1,1,2,1,0,1,3, + 1,2,3,2,1,2,2,1,0,1, + 3,3,5,5,4,1,1,1,1,0, + 2,2,1,2,2,1,0,1,3,4, + 3,1,1,5,2,1,1,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,2,2,7,1,0,1, - 3,1,1,2,4,2,4,7,9,5, - 1,1,3,1,0,1,1,1,2,4, - 4,1,2,5,5,3,3,1,4,3, - 1,0,1,3,2,1,-63,0,0,0, - 0,-54,0,0,0,0,0,0,0,0, + 1,1,1,1,1,2,2,7,1,0, + 1,3,1,1,2,4,2,4,7,9, + 5,1,1,3,1,0,1,1,1,2, + 4,4,1,2,5,5,3,3,1,4, + 3,1,0,1,3,2,1,-63,0,0, + 0,0,-54,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -50,0,0,0,0,0,0,0,0,0, - -11,0,0,0,0,0,0,0,0,-72, - 0,0,0,0,-2,0,0,0,0,0, - 0,0,-89,0,0,0,0,0,0,0, + 0,-50,0,0,0,0,0,0,0,0, + 0,-11,0,0,0,0,0,0,0,0, + -72,0,0,0,0,-2,0,0,0,0, + 0,0,0,-89,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-51,0,0,0, - 0,0,-57,0,0,0,0,0,-5,0, - -20,0,0,0,0,-6,0,0,0,0, + 0,0,0,0,0,0,0,-434,0,0, + 0,0,-124,0,0,0,0,0,0,-5, + 0,-20,0,0,0,0,-263,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-73,0,0, + 0,0,0,0,0,0,0,0,-365,-516, 0,0,0,0,0,0,0,0,0,0, - -176,0,0,0,0,-3,0,-7,0,0, - 0,0,0,0,-116,0,0,0,0,0, + 0,0,-6,-181,0,-370,0,0,0,0, + 0,0,0,0,0,0,-116,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-114,0, - 0,0,0,-53,-8,0,0,-420,-292,0, - -17,0,0,0,0,-60,-58,0,0,0, - -131,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-7,0,0,0, + -288,0,0,0,0,-145,-8,0,0,0, + 0,0,-17,0,0,0,0,-60,-58,0, + 0,0,-131,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -9,0,0,0,-374,0,0,0,0,0, - -10,0,0,0,0,0,-185,0,0,0, - 0,0,-177,0,0,0,-144,0,0,0, - 0,0,0,0,0,0,0,-224,-134,0, + 0,0,-244,0,0,0,-374,0,0,0, + 0,0,0,0,0,0,-208,0,0,0, + 0,0,-40,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-12,0,0,0,0,-65,0,0, - 0,0,0,0,0,0,0,-143,-117,0, - 0,-61,0,0,0,-516,0,0,0,0, - -13,0,0,0,0,0,0,0,0,0, - 0,-147,0,0,0,0,0,0,0,0, - 0,0,0,0,-66,0,0,-150,0,0, - 0,0,-14,0,0,0,0,0,0,0, - -208,-260,0,0,0,0,0,0,0,0, - -222,0,0,0,0,0,0,0,0,0, + 0,-310,0,0,0,0,-1,0,0,0, + 0,0,-53,0,0,-147,0,0,0,0, + 0,0,0,0,0,0,0,0,-176,0, + 0,0,0,0,-9,0,0,0,0,0, + 0,-148,0,0,0,0,0,-309,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-181,0,0,0,0,0, - 0,0,0,-124,0,0,-233,0,0,0, - -514,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-127,0,0,0,0,-183, - 0,0,0,0,0,0,0,0,0,-129, - 0,0,0,-327,0,0,0,0,0,-244, - 0,0,0,0,-241,0,0,-16,-353,0, - 0,0,0,-365,0,0,0,0,0,-235, - 0,0,0,0,-524,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-108,0, - 0,0,0,-310,0,0,0,0,-139,0, - 0,0,0,0,0,0,0,0,-263,0, - -242,0,0,0,0,0,-228,-148,0,0, - 0,0,0,-4,0,0,0,0,0,0, + 0,0,0,0,0,0,-10,-66,0,0, + 0,-117,0,0,0,0,0,0,0,0, + 0,0,0,-222,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-415,0,0,0,0,-230,0,0, - 0,0,-419,0,0,0,-400,-136,0,-249, - 0,0,0,0,0,0,0,0,-344,0, - 0,0,0,0,-276,0,0,0,0,0, + 0,0,0,-339,0,0,0,-57,0,0, + 0,0,0,-61,0,0,-12,0,0,-65, + 0,0,0,-514,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-184,0,0,0,0,0,0, - 0,0,0,-288,-109,0,0,0,0,-312, + 0,0,0,-13,0,0,0,0,0,0, + 0,0,-14,-246,0,0,-73,0,0,0, + 0,-136,0,0,0,0,0,0,0,-177, + 0,0,-150,0,0,0,0,0,0,0, + 0,0,0,0,0,-233,0,0,-524,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-204,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-29,-30,-313,0,0,0,0,-115, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-214,0, - 0,0,0,-306,-297,0,0,0,0,0, - 0,0,0,0,-146,0,0,0,0,-475, - 0,0,0,0,-151,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-299,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-40,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-305,0, - 0,0,0,-145,0,0,0,0,0,0, - 0,0,0,-186,-188,0,0,0,0,0, - -42,0,0,0,0,-130,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-191,0,0,0,0,0, - -31,0,0,0,0,0,0,0,0,-200, - -404,0,0,-95,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-284,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-32,0,0,0,-96,0,0,0, + 0,0,-129,0,0,0,0,-143,0,0, + 0,0,0,0,0,0,0,-16,0,0, + 0,-400,-3,-144,0,0,0,0,-224,0, + 0,0,0,0,-29,-306,0,-4,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -137,0,0,0,0,0,0,0,0,0, - -202,0,0,0,0,0,-472,0,0,-97, - 0,0,0,0,-141,0,0,0,0,0, + 0,0,0,0,0,0,0,-30,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-207,0, - 0,0,0,0,0,0,0,0,-209,-33, - 0,0,-98,0,0,0,0,0,0,0, + 0,0,0,-327,0,0,0,0,-257,0, + 0,0,0,0,-185,0,0,0,0,-276, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-226,0,0,0,0,0,0,0,0, - 0,-236,0,0,0,-99,0,0,0,0, - -152,0,0,0,0,0,0,0,0,0, + 0,0,0,-331,0,0,0,0,0,0, + 0,0,0,-51,0,0,0,0,0,0, + 0,0,-415,0,-312,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-227,0,0,0,0,0, - 0,0,0,0,-243,-34,0,0,-100,0, - 0,0,0,-198,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-228,0, + 0,0,0,0,-31,0,0,0,0,0, + 0,0,0,-32,-348,0,0,-33,0,0, + -313,0,0,0,0,-108,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-231,0,0, - 0,0,0,0,0,0,0,-250,0,0, - 0,-101,0,0,0,0,-251,0,0,0, + 0,0,0,0,-230,0,0,0,0,-34, + 0,0,0,0,0,0,0,0,0,0, + -109,0,0,-130,-35,-475,0,0,0,0, + -115,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-127, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-36,0,0,0,0, + 0,-42,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-183,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-95,0,0, + 0,0,-137,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-284,0,0,0,0,0,-37,0,0, + 0,0,0,0,0,0,-419,0,0,0, + -96,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-139,0,0,0,0,0, + 0,0,0,0,-184,0,0,0,0,0, + -38,0,0,-97,0,0,0,0,-141,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-186,0,0, + 0,0,0,0,0,0,0,-299,0,0, + 0,0,-146,0,0,0,-98,0,0,0, + 0,-151,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -188,0,0,0,0,0,0,0,0,0, + -260,0,0,0,0,0,0,0,0,-99, + 0,0,0,0,-152,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-191,0,0,0,0,0,0, + 0,0,0,-305,0,0,0,0,-200,0, + 0,0,-100,0,0,0,0,-198,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-202,0,0,0, + 0,0,0,0,0,0,-207,0,0,0, + 0,0,0,0,0,-101,0,0,0,0, + -209,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-226, + 0,0,0,0,0,-39,0,0,0,-333, + 0,0,0,0,0,0,0,0,-102,0, + 0,0,0,-41,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-227,0,0,0,0,0,0,0, + 0,0,-231,0,0,0,0,0,-55,0, + 0,-103,0,0,0,0,-236,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,-256,0,0,0,0, - 0,0,0,0,0,-333,0,0,0,0, - 0,0,0,0,-102,0,0,0,0,-252, + 0,-56,0,0,0,-59,0,0,0,0, + 0,-404,0,0,-104,0,0,0,0,-243, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-275,0, 0,0,0,0,0,0,0,0,-342,0, - 0,0,0,0,0,0,0,-103,0,0, - 0,0,-253,0,0,0,0,0,0,0, + 0,0,0,-322,0,0,0,0,-343,0, + 0,0,0,0,0,0,0,-105,0,0, + 0,0,-250,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-279,0,0,0,0,-287,-339,0,0, - 0,0,0,0,0,0,0,-35,0,0, - -104,0,0,0,0,-280,0,0,0,0, + 0,-275,0,0,0,0,0,-420,0,0, + 0,-351,0,0,0,0,0,-67,0,0, + -134,0,0,0,0,-472,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-300,0,0,0,0,0, - -36,0,0,0,-343,0,0,0,0,-285, - 0,0,0,-105,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-287, + 0,0,0,0,0,0,0,0,0,-215, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-37,0,0, - 0,0,0,0,0,0,0,-432,0,0, - 0,0,-294,0,0,0,-215,0,0,0, - 0,-295,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -314,0,0,0,0,0,0,0,0,0, - -351,0,0,0,0,0,-326,0,0,-508, - 0,0,0,0,-317,0,0,0,0,0, + 0,0,0,-245,0,0,0,0,0,0, + 0,0,0,-258,0,0,0,0,0,0, + 0,0,0,-194,0,0,0,0,-68,-508, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-320,0,0,0,0,0,0, - 0,0,0,-372,0,0,0,0,0,0, - 0,0,-309,0,0,0,0,-258,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-271,0,0,0, - 0,-328,0,0,0,0,0,0,0,0, - 0,-324,0,0,0,0,-38,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-266,0,0,0,0, - 0,0,0,0,0,-39,0,0,0,0, - -269,0,0,0,0,-194,0,0,0,0, + 0,0,0,-300,0,0,0,0,0,-70, + 0,0,-324,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-71,0,0,0, + 0,-251,0,0,0,0,-252,0,0,0, 0,-337,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -330,-409,0,0,0,0,0,0,0,0, - -360,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-110,0,0,0,0, + -353,0,0,0,0,-111,-253,0,0,0, + 0,-360,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-345,0,0,0,0,0, - 0,0,0,0,-41,0,0,0,0,-274, - 0,0,0,0,-55,-325,0,0,0,-308, + 0,0,0,0,0,-271,0,0,0,0, + 0,-372,0,0,0,-285,0,0,0,0, -361,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-367,0,0,0,0,0, - -417,0,0,0,-349,0,0,0,0,-407, + 0,0,0,0,-292,0,0,0,0,0, + 0,0,0,0,-112,0,0,0,0,-235, + 0,0,0,0,-248,0,0,0,0,0, + -407,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-113, + -120,0,0,0,-354,0,0,0,0,-107, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-286,0, - 0,0,0,-19,0,0,0,0,-56,-107, + 0,0,0,-133,0,0,0,0,-314,0, + 0,0,0,0,0,0,-242,0,0,0, + 0,-399,0,0,-241,0,0,0,0,-94, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-366,-59, - 0,0,0,-418,0,0,0,0,-94,0, + 0,0,0,-138,0,0,0,0,-204,0, + 0,0,0,-114,0,-92,0,0,0,0, + -294,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-266,0,0,0,-93, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-316,-348,0, - 0,0,0,0,-92,0,0,0,0,-322, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-267,0, - 0,0,0,-434,-421,0,0,0,-93,0, - 0,0,0,-67,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-350,0,0, - 0,-90,0,0,0,0,-359,0,0,0, + 0,0,-90,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-68,0,0,0,0, - -91,0,0,0,0,-70,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-71,0,0,0,0,-52, - 0,0,0,0,0,0,-110,0,-111,0, - 0,0,0,0,0,0,0,0,-213,0, - 0,0,0,-454,-83,0,0,0,0,0, + 0,-91,0,0,0,0,-325,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-153,0,0,0,0, + -52,0,0,0,0,0,0,-249,0,0, + 0,0,-432,0,0,-154,0,0,0,-213, + 0,0,0,0,-155,-83,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-399,0,0,-84,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-15, - 0,0,0,-505,0,-381,-385,0,0,0, - 0,0,0,-48,0,0,0,0,-362,0, - 0,0,0,0,-483,0,0,-463,-356,0, - 0,0,0,-112,0,0,0,0,0,0, - -113,-388,-423,0,0,0,0,0,0,-424, - -428,0,0,-447,0,0,0,0,0,-120, - 0,0,0,0,0,0,0,-85,0,0, + 0,0,0,-156,0,-157,-84,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-138,0,0,0,-86,0,0,0,0, - -478,0,0,0,0,0,0,0,0,0, + -15,0,0,0,-158,0,-18,-142,0,0, + 0,0,0,0,-19,0,0,0,0,-211, + 0,0,0,0,0,-344,0,0,0,0, + 0,0,0,-159,-160,0,0,0,0,0, + 0,-232,0,-320,0,0,0,0,0,0, + -454,0,0,0,-460,0,-214,0,0,-295, + 0,0,0,0,0,0,0,0,0,-85, + 0,0,0,0,-161,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-238,0,0,0,0,0,0, - 0,0,0,0,0,0,-87,0,0,0, - 0,-422,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-86,0,0, + 0,0,-279,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -246,0,0,-240,0,-153,0,-154,0,-248, - 0,0,0,0,0,0,-444,-445,-331,-155, - -156,0,0,0,0,0,0,0,-157,-158, - 0,0,0,0,-378,0,0,0,0,0, - 0,-282,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-159,0,0, - 0,0,-232,0,0,0,0,-88,0,0, - 0,0,-456,0,0,0,0,0,0,0, + 0,0,0,0,0,-238,0,0,0,0, + 0,0,0,0,0,0,0,0,-87,0, + 0,0,0,-317,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-451,0,0,-160,0,0,-161,-162,0, - 0,0,0,0,0,-497,0,-163,0,-164, - 0,0,0,-379,0,0,0,0,0,-507, + 0,0,0,0,0,-240,-162,-267,0,0, + 0,-315,0,0,0,0,-383,0,-382,-163, + 0,0,-349,0,0,0,0,0,0,0, + 0,0,0,-280,-362,0,0,0,0,-505, + 0,0,0,-282,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-483,0,0, + 0,0,0,0,0,-366,-164,0,0,-88, + 0,0,0,0,-165,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-165,-382,0,0,0,0, - 0,-270,0,0,0,-78,0,0,0,0, - -464,0,0,0,0,0,0,0,0,0, + 0,0,0,-346,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-449,0,-409, + 0,-326,0,0,0,-270,0,0,0,0, + 0,-426,0,0,0,0,0,0,0,0, + 0,0,0,0,-229,0,0,-496,0,0, + 0,0,0,0,0,0,0,-166,0,0, + -297,-507,0,0,0,0,0,0,0,0, + 0,0,0,0,-301,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-119,0, + 0,0,-167,0,0,0,-128,0,0,0, + 0,-140,0,0,0,0,-355,-168,0,0, + 0,0,0,-378,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-421,0,-169, 0,0,0,0,0,0,0,0,0,0, - 0,-346,0,-370,0,0,0,0,0,0, - 0,0,0,0,0,-166,0,-460,-315,0, - 0,0,0,0,-466,0,0,-301,0,0, + 0,0,-328,0,0,0,0,0,0,0, + 0,0,-170,0,0,0,0,0,0,0, + 0,0,-62,0,0,0,-316,0,-269,0, + 0,0,0,0,0,0,0,0,0,-78, 0,0,0,0,0,0,0,0,0,0, - 0,0,-167,-355,0,0,0,0,0,-229, - 0,0,0,-79,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-389,0,-502, - 0,0,0,0,-168,0,0,0,0,0, - 0,-457,0,0,-257,0,0,-234,0,0, - 0,0,-119,-169,0,-496,0,-49,0,0, + 0,0,0,-121,0,-79,0,0,0,0, + -308,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-170,-453,0,0,0,0,0,0,0, - 0,-371,0,0,0,-500,0,0,0,0, - 0,0,0,0,0,-468,0,0,0,0, - 0,0,0,0,-171,0,-172,0,-173,0, - -1,0,0,0,-405,0,-484,0,0,0, - 0,0,0,0,0,0,0,0,0,-122, + 0,0,-389,-373,0,0,-171,0,-264,0, 0,0,0,0,0,0,0,0,0,0, + 0,-350,-172,-173,-174,0,0,0,0,0, + 0,0,0,-175,0,0,-178,-356,0,0, + -405,0,0,0,0,0,-179,0,0,0, + 0,0,0,0,0,0,-502,0,0,0, + 0,0,0,0,0,-474,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-174,-175,0,0,-178,0,0,-471,0, - 0,0,0,0,0,0,0,0,0,-473, - -74,0,0,0,0,0,-201,-296,0,0, - -179,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-391,0,0,0,0,0, - 0,0,-426,0,0,0,0,0,0,0, + 0,-274,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-180,-135,0,-330,0, + -457,0,-345,0,0,0,-189,0,-190,0, + 0,0,0,0,0,0,0,-506,-195,-80, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-485,0,-62,0,-390,0,0, - 0,-458,0,0,-373,0,0,0,0,0, - -449,-180,-477,-128,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-189, - 0,0,0,-501,0,0,-480,0,0,0, - -245,0,-491,0,0,0,0,0,0,0, - 0,0,-133,0,0,0,0,0,0,-459, - 0,0,0,0,0,-190,-195,0,-476,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-234,0,0,0,0,0,0, + 0,0,0,0,-286,0,0,0,0,0, + -467,-196,0,0,-473,0,0,-199,0,0, + -390,0,0,-480,0,-359,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-469,0,0,0,-197, - 0,-481,0,-121,0,0,0,-487,0,-196, - -486,-199,0,0,-123,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-474, - 0,0,-210,0,0,-140,0,0,0,0, - 0,0,0,0,0,0,-220,0,0,0, - 0,0,0,0,0,0,-221,-223,0,0, - 0,0,0,-499,0,0,0,0,0,0, - -211,0,0,0,0,0,-237,0,0,0, + -367,0,0,0,0,0,-417,0,-210,0, + 0,0,0,0,-381,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-220,0, + 0,0,0,0,0,0,0,-371,0,0, + 0,-385,0,-388,-422,0,0,-481,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-498,-239, - 0,-247,0,0,0,-506,0,0,-22,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-48,0,0,0,0,0,0, + 0,-149,0,0,0,0,-283,-221,0,0, + -223,-237,0,0,0,0,0,0,0,0, + 0,-418,-444,0,-239,-247,-182,0,0,0, + 0,0,-445,0,-261,0,0,0,-379,0, + 0,0,0,-262,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-272,-423,-453, 0,0,0,0,0,0,0,0,0,0, - 0,-261,0,-80,0,0,0,0,0,0, + 0,0,0,0,-22,0,0,0,0,-273, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-81,0,0, + 0,0,0,0,0,0,0,0,0,-81, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-82,0,0,0,0,-521,0,0,0, + 0,0,0,-82,0,0,0,0,-277,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-319,0,0,0,0, - -503,0,0,0,0,0,0,0,-21,0, - 0,0,0,-311,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-319,0,0, + 0,0,-278,0,0,0,0,0,0,0, + -21,0,0,0,0,-289,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-262,-413,-272,-511,-513,-347,0,-512,0, - 0,-44,-318,-268,-283,-273,0,0,0,0, - 0,0,-277,0,0,0,0,0,0,-278, - -289,0,0,-135,-293,0,0,-125,0,0, - -438,0,0,0,0,0,-515,0,0,0, - 0,0,0,0,0,0,0,-520,-298,0, - 0,0,0,0,0,-303,0,0,0,0, + 0,0,0,-49,-413,-456,-296,-468,0,0, + -397,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-464,0,0,0,0,0, + 0,-197,0,0,0,-424,-428,0,-293,0, + 0,0,-438,0,0,-477,0,0,-298,-466, + 0,0,0,0,0,0,0,0,0,-478, + -303,0,0,0,0,0,0,0,0,0, + 0,0,-118,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-304,-321,0,0,0,0,0,0,0, - 0,0,0,0,-488,-336,0,0,0,0, - 0,-518,-338,0,0,0,0,0,-368,0, + 0,0,0,0,0,0,-488,-471,0,0, + -447,0,0,-291,-485,0,0,0,-304,0, + -321,0,0,0,0,0,0,0,0,-451, + 0,-336,-338,0,0,0,0,0,0,0, + -368,0,-352,0,-490,0,0,0,0,0, + -369,-375,0,0,0,0,0,0,0,0, + -416,-377,-458,0,-380,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-369,0,-523,0,0,0,0,0, - 0,0,-490,0,0,0,0,0,-375,-377, - 0,0,0,0,0,0,0,0,-416,-380, - -386,0,-387,0,-395,-398,0,-406,0,-408, - -410,0,-118,0,0,0,0,0,0,0, - 0,0,0,-411,0,0,0,0,0,0, - 0,0,0,0,0,0,-495,0,0,0, - -412,0,-352,-254,-414,-383,0,0,0,-425, - 0,0,0,0,0,0,0,0,0,-427, - 0,-429,-255,-323,-430,0,0,0,0,0, - -354,-431,0,0,-517,0,0,-433,-435,0, - -436,-437,0,0,0,0,0,0,0,0, - -467,0,0,0,-442,0,-446,-455,0,-462, - 0,0,0,0,-470,0,0,0,0,0, - 0,0,0,0,0,-489,-504,-509,0,0, - 0,0,0,0,0,0,0,0,-522,0, - 0,0,0,0,0,-392,0,0,0,0, + 0,0,0,0,0,-484,0,0,-386,0, + 0,0,0,0,0,0,0,0,-459,0, + 0,0,-497,0,-491,-334,-122,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-75,-106,0,0,0,0,0, - 0,0,0,0,0,0,-525,0,0,0, + 0,-493,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-486,0,-387,-391,0, + 0,0,0,0,-193,0,0,0,0,0, + 0,0,-463,-495,-469,-500,-395,0,0,0, + -123,0,-398,-406,-408,-410,0,-265,0,0, + 0,0,0,0,0,-411,0,0,-501,0, + 0,0,0,0,0,-44,-498,0,0,-74, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-517,-412,0, + 0,0,0,0,0,0,0,-513,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-216,0,0,0,0,0,0,0,0, + 0,0,-487,0,-499,0,0,0,-518,0, + 0,-523,0,0,0,-503,0,0,0,0, + 0,0,-414,0,0,0,0,0,0,0, + 0,-522,-492,0,0,-510,0,0,-425,-427, + 0,0,0,-429,0,0,0,0,0,0, + 0,0,0,0,0,0,-430,-75,0,-431, + 0,0,0,-521,0,-433,-435,-436,-45,-525, + 0,0,0,0,0,0,-437,0,0,0, + 0,0,0,0,0,-106,0,-442,0,-511, + 0,-512,0,0,-515,0,0,0,0,-446, 0,0,0,0,0,0,0,0,0,0, + 0,-455,-520,0,0,0,0,0,0,0, + 0,0,0,0,-462,0,0,0,0,-470, + 0,-489,-504,0,0,-509,0,0,0,0, + 0,0,0,0,0,0,-23,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-24, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-23,0,0,0,0,0,0, + 0,0,-25,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-24,0,0,0, + 0,0,0,0,0,-26,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-25, + 0,0,0,0,0,0,0,0,-27,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-26,0,0,0,0,0,0,0, + 0,-28,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-27,0,0,0,0, + 0,0,0,0,-64,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-28,0, + 0,0,0,0,0,0,0,-76,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-64,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-76,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-77,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -132,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-205,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-384,-492,-217,-218, - 0,0,0,0,0,-396,0,-291,0,0, - 0,0,0,0,0,0,-142,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -510,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -340,0,0,0,0,-394,0,0,0,-450, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -493,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-452,0,0,0,0,0,0, - 0,0,0,-479,0,0,0,0,0,0, + -77,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-132,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-205,0,0,0, + 0,-125,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-384, + -519,-216,-254,0,0,0,0,0,-396,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-217,-255,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-311,0, + 0,0,-450,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,-357,0,0,0,0,0,0, - 0,0,0,0,0,0,-126,0,0,0, - 0,0,0,0,-149,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-452,0,0,0, + 0,0,0,0,0,0,-479,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -340,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-476,0,0,0,0,0, + 0,0,0,0,0,0,0,-126,0,0, + 0,0,0,0,0,-187,0,0,0,0, + 0,0,-218,-401,0,0,-441,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-46,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, 0,0,0,-302,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-219,0,0, - 0,0,0,0,0,-182,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-334, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-219, 0,0,0,0,0,0,0,0,0,0, 0,-465,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-193,0,0, - 0,0,0,-264,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-332,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-323,0,0,0,0,0,0, + 0,0,0,0,0,-358,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-201,0,-225,0,-318,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-290,0,0,0,0,0,0, + -192,0,0,0,0,-281,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-392,0,0,0,0,0, + 0,0,0,0,-268,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-347,0,0,0, + 0,0,0,0,0,0,0,0,-307,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-329,0,0,0,0, + -335,0,0,0,0,-47,-494,-43,0,0, + 0,0,0,0,0,-341,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-394,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-332,0,0,0,0,0,0, + -363,0,0,0,0,-364,0,0,0,0, + 0,0,-376,0,0,0,0,-461,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-358,0,0,0,0,0, - 0,0,0,0,0,0,0,-397,0,0, - 0,0,0,0,0,0,0,0,0,0, - -290,0,-225,0,0,0,0,0,0,0, - 0,0,0,0,-265,0,0,0,0,0, - 0,-187,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-482,0,0, + 0,0,0,0,0,-393,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-192,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-45,0,0,0,0,0,0,0,0, - 0,0,0,0,-281,0,0,0,0,-307, - 0,0,0,0,0,0,0,0,0,0, - 0,-329,0,0,0,0,0,0,0,-335, - 0,0,0,0,0,0,0,0,0,0, - 0,-341,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-363,0,0,0, - 0,0,0,0,0,0,-46,0,0,0, - 0,0,0,0,0,0,-364,0,0,0, - 0,0,0,0,-47,0,0,0,0,0, - 0,0,0,0,-376,0,0,0,0,0, - 0,-461,0,0,0,0,0,0,0,0, - 0,0,0,-482,0,0,0,0,-18,0, - 0,0,-401,0,0,0,0,0,0,0, 0,0,-203,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-212, - 0,0,0,0,-43,0,0,0,0,0, - -69,-393,0,0,0,0,0,0,-259,0, + 0,0,-212,0,0,0,0,0,0,0, + 0,0,-259,0,0,0,0,0,0,-69, + 0,0,0,-439,0,-440,-206,0,0,0, + 0,0,0,-443,-402,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-439,-440,0,0, - 0,0,0,-441,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-443,-206,0,0,0,0,0, - -402,0,0,-403,0,0,0,0,0,0, - 0,0,0,0,0,0,-448,0,0,0, - 0,0,0,-519,0,-494,0,0,0,0, + 0,-403,0,0,0,0,0,-448,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, @@ -537,10 +534,7 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -550,546 +544,539 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface BaseAction { public final static char baseAction[] = { - 170,5,131,78,78,34,34,64,64,39, - 39,190,190,191,191,192,192,1,1,16, + 171,5,132,78,78,34,34,64,64,39, + 39,191,191,192,192,193,193,1,1,16, 16,16,16,16,16,16,16,17,17,17, 15,11,11,9,9,9,9,9,2,65, - 65,6,6,12,12,12,12,44,44,132, - 132,133,54,54,43,18,18,18,18,18, + 65,6,6,12,12,12,12,44,44,133, + 133,134,54,54,43,18,18,18,18,18, 18,18,18,18,18,18,18,18,18,18, - 18,18,18,18,18,134,134,134,114,19, + 18,18,18,18,18,135,135,135,114,19, 19,19,19,19,19,19,19,19,19,19, - 19,19,20,20,171,171,172,172,173,137, - 137,138,138,135,135,139,136,136,21,21, + 19,19,20,20,172,172,173,173,174,138, + 138,139,139,136,136,140,137,137,21,21, 22,22,23,23,23,25,25,25,25,26, 26,26,27,27,27,28,28,28,28,28, 31,31,31,32,32,33,33,35,35,36, 36,37,37,38,38,42,42,41,41,41, 41,41,41,41,41,41,41,41,41,41, - 40,29,140,140,99,99,102,102,94,193, - 193,69,69,69,69,69,69,69,69,69, - 70,70,70,71,71,57,57,174,174,72, + 40,29,141,141,99,99,102,102,94,194, + 194,69,69,69,69,69,69,69,69,69, + 70,70,70,71,71,57,57,175,175,72, 72,72,115,115,73,73,73,73,74,74, 74,74,74,75,75,79,79,79,79,79, 79,79,49,49,49,49,49,105,105,106, - 106,50,175,24,24,24,24,24,48,48, - 88,88,88,88,88,147,147,142,142,142, - 142,142,143,143,143,144,144,144,145,145, - 145,146,146,146,89,89,89,89,89,90, + 106,50,176,24,24,24,24,24,48,48, + 88,88,88,88,88,148,148,143,143,143, + 143,143,144,144,144,145,145,145,146,146, + 146,147,147,147,89,89,89,89,89,90, 90,90,13,14,14,14,14,14,14,14, 14,14,14,14,93,119,119,119,119,119, - 117,117,117,118,118,149,149,148,148,121, - 121,150,83,83,84,84,86,87,85,52, - 47,151,151,53,51,82,82,152,152,141, - 141,122,122,77,77,153,153,62,62,62, - 59,59,58,63,63,67,67,56,56,56, - 91,91,101,100,100,61,61,60,60,55, - 55,45,103,103,103,95,95,95,96,97, - 97,97,98,98,107,107,107,109,109,108, - 108,194,194,92,92,177,177,177,177,177, - 124,46,46,155,176,176,125,125,125,125, - 178,178,30,30,116,126,126,126,126,110, - 110,120,120,120,157,158,158,158,158,158, - 158,158,158,158,181,181,179,179,180,180, - 159,159,159,159,160,182,112,111,111,183, - 183,161,161,161,161,104,104,104,184,184, - 10,185,185,186,162,154,154,163,163,164, - 165,165,7,7,8,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,66,68,68, - 168,168,127,127,128,128,128,128,128,128, - 3,4,169,169,166,166,129,129,129,80, - 81,76,156,156,113,113,187,187,187,130, - 130,123,123,188,188,170,170,958,38,2435, - 2416,883,508,3266,34,1008,31,35,30,32, - 2612,262,29,27,55,1233,110,80,81,112, - 1234,30,1453,1401,1626,1540,675,274,1831,1798, - 2017,590,1868,2046,2135,147,485,2534,162,148, - 1476,38,851,36,883,117,4365,34,1008,31, - 35,62,32,2351,38,851,36,883,232,2234, - 34,1008,31,35,30,32,823,262,29,27, - 55,1233,110,80,81,112,1234,1315,1453,1401, - 1626,1540,839,30,2790,235,230,231,731,82, - 275,2307,38,851,36,883,1155,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 90,80,81,242,245,248,251,3030,2025,38, - 851,36,883,2580,4365,34,1008,31,35,61, - 32,327,38,501,3277,883,1186,619,160,3633, - 2953,3234,3245,3508,4357,1496,38,851,36,883, - 2440,2234,34,1008,31,35,3081,32,823,262, - 29,27,55,1233,110,80,81,112,1234,341, - 1453,1401,1626,1540,66,525,1831,1798,2017,1106, - 1868,2046,2135,147,943,856,506,148,865,2528, - 3126,66,38,2270,46,883,508,2094,45,1008, - 507,1496,38,851,36,883,2440,2234,34,1008, - 31,35,3081,32,823,262,29,27,55,1233, - 110,80,81,112,1234,341,1453,1401,1626,1540, - 4071,1189,1831,1798,2017,1311,1868,2046,2135,147, - 2928,1449,506,148,661,2574,3126,327,38,1615, - 1572,883,65,327,38,3287,507,2658,38,851, - 36,883,486,431,34,1008,43,35,938,1826, - 38,851,36,883,502,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,112,1234,1243,1453,1401,1626,1540,1472,186, - 1831,1798,2017,75,1868,2046,3242,168,30,1607, - 783,3056,508,1084,3142,4396,2148,38,851,36, - 883,1852,4810,34,1008,31,35,30,32,2945, - 502,499,1466,38,851,36,883,1539,4810,34, - 1008,31,35,64,32,1076,28,326,1466,38, - 851,36,883,1855,4810,34,1008,31,35,63, - 32,2121,2541,1634,444,330,3171,3240,327,333, - 3142,1761,38,851,36,883,2440,2234,34,1008, - 31,35,3081,32,823,262,29,27,55,1233, - 110,80,81,112,1234,341,1453,1401,1626,1540, - 935,397,1831,1798,2017,2011,1868,2046,2135,147, - 787,4396,506,148,1092,3196,3126,327,38,282, - 4624,1562,38,851,36,883,507,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,112,1234,590,1453,1401,1626,1540, - 30,4478,1831,1798,2017,798,1868,2046,2135,147, - 943,331,376,148,2658,38,851,36,883,4137, - 1682,34,1008,1921,35,2701,38,278,1918,2658, - 38,851,36,883,1879,379,34,1008,1964,35, - 327,38,501,277,883,1634,38,851,36,883, - 503,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,508, - 1453,1401,1626,1540,327,3474,1831,1798,2017,590, - 1868,2046,2135,147,97,4793,376,148,448,1054, - 2229,1555,38,501,277,883,380,1095,327,38, - 2406,383,883,74,1935,38,851,36,883,377, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,112,1234,37,1453, - 1401,1626,1540,327,2697,1831,1798,2017,1095,1868, - 2046,2135,147,327,3717,162,148,1375,507,3417, - 1555,38,501,3505,883,1184,783,353,3501,327, - 38,2406,383,883,521,1935,38,851,36,883, - 381,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,421, - 1453,1401,1626,1540,30,286,1831,1798,2017,4573, - 1868,2046,2135,147,2377,508,370,148,385,417, - 1935,38,851,36,883,350,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,112,1234,1932,1453,1401,1626,1540,73, - 1304,1831,1798,2017,619,1868,2046,2135,147,386, - 417,370,148,2566,1725,1935,38,851,36,883, - 508,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,2690, - 1453,1401,1626,1540,1139,1076,1831,1798,2017,369, - 1868,2046,2135,147,58,508,370,148,1304,787, - 1870,38,851,36,883,508,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,112,1234,590,1453,1401,1626,1540,91, - 4672,1831,1798,2017,368,1868,2046,2135,147,57, - 92,376,148,106,787,1696,38,851,36,883, - 994,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,2018, - 1453,1401,1626,1540,1175,4692,1831,1798,2017,366, - 1868,2046,2135,147,30,2442,146,148,428,1077, - 1118,1935,38,851,36,883,943,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,112,1234,30,1453,1401,1626,1540, - 2743,235,1831,1798,2017,374,1868,2046,2135,147, - 508,2303,163,148,1935,38,851,36,883,3301, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,112,1234,2049,1453, - 1401,1626,1540,2440,348,1831,1798,2017,1835,1868, - 2046,2135,147,931,447,159,148,1935,38,851, - 36,883,2644,2234,34,1008,31,35,30,32, - 823,262,29,27,55,1233,110,80,81,112, - 1234,2130,1453,1401,1626,1540,47,3263,1831,1798, - 2017,30,1868,2046,2135,147,2684,2303,158,148, - 1935,38,851,36,883,943,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,112,1234,512,1453,1401,1626,1540,30, - 358,1831,1798,2017,1000,1868,2046,2135,147,508, - 2445,157,148,1935,38,851,36,883,351,2234, - 34,1008,31,35,30,32,823,262,29,27, - 55,1233,110,80,81,112,1234,2344,1453,1401, - 1626,1540,30,94,1831,1798,2017,2036,1868,2046, - 2135,147,508,4094,156,148,1935,38,851,36, - 883,943,2234,34,1008,31,35,30,32,823, - 262,29,27,55,1233,110,80,81,112,1234, - 512,1453,1401,1626,1540,2316,1739,1831,1798,2017, - 2339,1868,2046,2135,147,508,153,155,148,1935, - 38,851,36,883,943,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,112,1234,2956,1453,1401,1626,1540,30,1787, - 1831,1798,2017,2822,1868,2046,2135,147,508,56, - 154,148,1935,38,851,36,883,508,2234,34, - 1008,31,35,30,32,823,262,29,27,55, - 1233,110,80,81,112,1234,30,1453,1401,1626, - 1540,3078,72,1831,1798,2017,2526,1868,2046,2135, - 147,71,325,153,148,1935,38,851,36,883, - 508,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,30, - 1453,1401,1626,1540,3454,395,1831,1798,2017,590, - 1868,2046,2135,147,70,4717,152,148,1935,38, - 851,36,883,508,2234,34,1008,31,35,30, - 32,823,262,29,27,55,1233,110,80,81, - 112,1234,1979,1453,1401,1626,1540,30,2684,1831, - 1798,2017,2320,1868,2046,2135,147,69,1474,151, - 148,1935,38,851,36,883,2175,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,112,1234,1479,1453,1401,1626,1540, - 2699,1006,1831,1798,2017,590,1868,2046,2135,147, - 508,4737,150,148,1935,38,851,36,883,323, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,112,1234,1248,1453, - 1401,1626,1540,324,1954,1831,1798,2017,590,1868, - 2046,2135,147,508,4762,149,148,1935,38,851, - 36,883,508,2234,34,1008,31,35,30,32, - 823,262,29,27,55,1233,110,80,81,112, - 1234,30,1453,1401,1626,1540,2852,60,1831,1798, - 2017,1186,1868,2046,2135,147,59,2528,144,148, - 2259,38,851,36,883,508,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,112,1234,30,1453,1401,1626,1540,3477, - 399,1831,1798,2017,1186,1868,2046,2135,147,321, - 411,193,148,2351,38,851,36,883,1178,2234, - 34,1008,31,35,30,32,823,262,29,27, - 55,1233,110,80,81,112,1234,1178,1453,1401, - 1626,1540,30,300,1831,1798,2017,3663,1868,2046, - 3242,168,2351,38,851,36,883,1109,2234,34, - 1008,31,35,30,32,823,262,29,27,55, - 1233,110,80,81,112,1234,1095,1453,1401,1626, - 1540,76,384,1831,1798,2017,155,1868,2046,3242, - 168,327,38,501,281,883,327,38,2406,383, - 883,283,2351,38,851,36,883,290,2234,34, - 1008,31,35,30,32,823,262,29,27,55, - 1233,110,80,81,112,1234,274,1453,1401,1626, - 1540,30,1186,1831,1798,2017,3691,1868,2046,3242, - 168,2351,38,851,36,883,2378,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,112,1234,30,1453,1401,1626,1540, - 1014,183,1831,1798,2017,1247,1868,2046,3242,168, - 327,38,501,279,883,333,943,388,417,276, - 1178,2351,38,851,36,883,413,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,112,1234,30,1453,1401,1626,1540, - 2816,1186,1831,1798,2017,508,1868,2046,3242,168, - 2395,38,851,36,883,412,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,112,1234,284,1453,1401,1626,1540,105, - 199,1831,1798,2017,101,1868,2046,3242,168,327, - 38,501,3553,883,1630,38,2406,383,883,420, - 2351,38,851,36,883,415,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,112,1234,54,1453,1401,1626,1540,508, - 2107,1831,1798,2017,1186,1868,3005,2354,875,2351, - 38,851,36,883,3702,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,112,1234,2526,1453,1401,1626,1540,2740,2377, - 1831,1798,2017,198,2954,2351,38,851,36,883, - 1682,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,1095, - 1453,1401,1626,1540,2530,508,1831,1798,2893,2351, - 38,851,36,883,1085,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,112,1234,787,1453,1401,1626,1540,943,439, - 1831,2935,2351,38,851,36,883,2645,2234,34, - 1008,31,35,30,32,823,262,29,27,55, - 1233,110,80,81,112,1234,2173,1453,1401,1626, - 2815,2351,38,851,36,883,1185,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,112,1234,1301,1453,1401,1626,2866, - 2439,38,2406,383,883,93,3144,154,106,589, - 387,417,787,237,262,2309,102,513,3501,1369, - 38,2406,383,883,2447,2351,38,851,36,883, - 274,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,112,1234,274, - 1453,1401,2710,1914,3692,3685,2351,38,851,36, - 883,232,2234,34,1008,31,35,30,32,823, - 262,29,27,55,1233,110,80,81,112,1234, - 1980,1453,1401,2738,865,2440,30,30,235,230, - 231,4186,4783,275,327,38,2406,383,883,327, - 38,2406,383,883,341,327,38,291,2404,1267, - 38,441,3332,2440,1545,4755,242,245,248,251, - 3030,1758,30,30,54,607,2580,1411,3141,424, - 2286,30,341,77,30,4190,2942,2354,709,1497, - 691,515,3633,2953,3234,3245,3508,4357,2351,38, - 851,36,883,3238,2234,34,1008,31,35,30, - 32,823,262,29,27,55,1233,110,80,81, - 112,1234,1522,1453,1401,2775,2351,38,851,36, - 883,1178,2234,34,1008,31,35,30,32,823, - 262,29,27,55,1233,110,80,81,112,1234, - 312,1453,1401,2778,1146,38,851,36,883,3485, - 4655,34,1008,31,35,337,32,2351,38,851, - 36,883,1299,2234,34,1008,31,35,30,32, - 823,262,29,27,55,1233,110,80,81,112, - 1234,2704,1453,2779,1919,298,2051,444,2165,2440, - 327,38,2406,383,883,3441,519,1186,1186,1228, - 1897,2162,318,1806,320,430,313,1782,2644,2444, - 588,349,434,3609,3610,327,38,2406,383,883, - 274,3500,1618,38,851,36,883,3483,4655,34, - 1008,31,35,337,32,3241,202,200,675,342, - 1481,1128,347,1415,3474,423,3301,3493,2351,38, - 851,36,883,508,2234,34,1008,31,35,30, - 32,823,262,29,27,55,1233,110,80,81, - 112,1234,30,1453,2788,762,357,3070,936,670, - 318,1806,320,78,313,1782,1178,3143,757,349, - 2448,1840,3307,3330,327,38,2406,383,883,1935, - 1685,38,851,36,883,3485,4655,34,1008,31, - 35,337,32,49,3263,2500,1879,342,1481,1128, - 347,363,1415,3474,422,1410,2351,38,851,36, - 883,508,2234,34,1008,31,35,30,32,823, - 262,29,27,55,1233,110,80,81,112,1234, - 305,2686,1919,2894,1805,38,389,2440,318,1806, - 320,435,313,1782,285,3565,2606,349,590,327, - 38,2406,383,883,4774,508,2644,516,1234,38, - 3566,36,883,4410,4680,34,1008,31,35,337, - 32,1997,3486,1691,865,342,1481,1128,347,274, - 2678,38,280,517,2351,38,851,36,883,3603, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,112,1234,175,2688, - 327,38,291,527,330,2095,318,1806,320,352, - 313,1782,2108,285,357,938,521,2440,2678,38, - 278,373,229,1014,1384,1788,2542,160,334,2269, - 3307,3330,338,1084,3621,2051,229,184,2092,4524, - 2150,3486,306,1186,204,215,4558,203,212,213, - 214,216,1805,38,389,173,1178,164,206,215, - 4558,205,212,213,214,216,1186,187,171,172, - 174,175,176,177,178,1350,2945,1817,207,2098, - 3472,1422,221,2140,232,1,1084,1805,38,389, - 527,217,208,209,210,211,292,293,294,295, - 2637,38,3160,1365,883,4118,4592,408,3573,229, - 160,244,230,231,160,332,333,4254,2621,371, - 297,666,2128,2177,184,2092,1788,1240,1706,508, - 54,204,215,4558,203,212,213,214,216,513, - 2596,334,173,2354,777,2440,1084,1921,938,185, - 3517,1057,2440,4396,188,171,172,174,175,176, - 177,178,3623,3657,229,327,38,2406,383,883, - 164,2644,3015,1328,38,851,36,883,4410,4680, - 34,1008,31,35,337,32,206,215,4558,205, - 212,213,214,216,508,440,2471,3737,1540,38, - 441,3183,30,330,4755,865,207,3167,3472,2945, - 1364,1879,430,1186,414,38,2406,383,883,217, - 208,209,210,211,292,293,294,295,2524,330, - 1343,318,1806,320,1178,313,1782,2709,3230,357, - 1285,1607,2440,1186,54,4254,2786,4396,329,333, - 2464,575,304,1607,1582,3307,3330,2354,3197,4396, - 30,229,373,349,4524,3232,778,2067,2056,1487, - 38,851,36,883,4410,4655,34,1008,31,35, - 337,32,4151,206,215,4558,205,212,213,214, - 216,342,1481,1128,347,307,30,4128,296,340, - 1546,4221,2720,207,1695,3472,4396,2440,2609,330, - 1924,508,1931,2800,2973,2007,217,208,209,210, - 211,292,293,294,295,3718,229,318,1806,320, - 30,313,1782,2463,322,1084,1755,38,2406,383, - 883,521,4254,2986,3230,3336,2464,2234,206,215, - 4558,205,212,213,214,216,331,2285,849,3329, - 2562,438,3609,3610,30,232,54,349,207,951, - 3472,327,38,2406,383,883,232,2009,98,2354, - 1214,217,208,209,210,211,292,293,294,295, - 2056,308,247,230,231,344,1481,1128,347,508, - 942,54,2464,250,230,231,865,4254,3164,2351, - 38,2435,2416,883,51,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,88,1172,375,2351,38,851,36,883,37, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,112,2700,2351,38, - 851,36,883,514,2234,34,1008,31,35,30, - 32,823,262,29,27,55,1233,110,80,81, - 112,2701,2351,38,851,36,883,1070,2234,34, - 1008,31,35,30,32,823,262,29,27,55, - 1233,110,80,81,112,2709,1258,38,851,36, - 883,1186,4680,34,1008,31,35,337,32,2351, - 38,851,36,883,938,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,89,2304,262,2465,1186,508,938,527,1186, - 303,378,30,1921,2031,1607,1558,2440,2440,4396, - 4660,4396,331,2543,318,1806,320,229,314,1782, - 2670,2527,160,349,1981,2668,341,2644,2424,3077, - 3528,349,184,2092,4914,2945,527,1186,222,204, - 215,4558,203,212,213,214,216,3126,1186,2334, - 173,344,1481,1128,347,229,2640,2447,2945,330, - 160,330,3715,171,172,174,175,176,177,178, - 184,2092,1614,2682,2125,333,299,204,215,4558, - 203,212,213,214,216,436,1018,195,173,232, - 527,349,508,2676,3436,357,3436,2175,333,1523, - 180,171,172,174,175,176,177,178,1349,229, - 1582,3307,3330,2505,160,508,253,230,231,342, - 1481,1128,347,523,184,2092,3749,1410,527,2421, - 2694,204,215,4558,203,212,213,214,216,2655, - 2750,2687,173,2689,1084,2731,2752,229,2758,3787, - 2760,2761,160,2562,191,171,172,174,175,176, - 177,178,184,2092,2771,419,239,262,160,204, - 215,4558,203,212,213,214,216,610,201,2698, - 173,2772,527,1161,334,2779,1161,3552,2440,1084, - 2732,2440,3738,171,172,174,175,176,177,178, - 2739,229,2513,334,334,2574,160,2644,1084,1084, - 2644,1228,2766,164,232,697,184,2092,1551,2783, - 527,88,2762,204,215,4558,203,212,213,214, - 216,2586,164,164,173,2773,1084,2777,2785,229, - 2778,240,230,231,160,2784,194,171,172,174, - 175,176,177,178,184,2092,2788,2789,1053,5394, - 160,204,215,4558,203,212,213,214,216,784, - 5394,166,173,5394,527,493,334,5394,493,5394, - 5394,1084,5394,1883,190,171,172,174,175,176, - 177,178,5394,229,30,30,5394,5394,160,1084, - 1084,5394,1892,2185,5394,164,5394,871,184,2092, - 490,492,527,491,492,204,215,4558,203,212, - 213,214,216,160,160,5394,173,5394,5394,5394, - 5394,229,30,3173,1591,2972,160,1084,197,171, - 172,174,175,176,177,178,184,2092,5394,5394, - 5394,3579,5394,204,215,4558,203,212,213,214, - 216,160,5394,5394,173,3135,5394,5394,5394,5394, - 5394,5394,1668,435,5394,2345,196,171,172,174, - 175,176,177,178,2351,38,851,36,883,5394, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,87,2351,38,851, - 36,883,5394,2234,34,1008,31,35,30,32, - 823,262,29,27,55,1233,110,80,81,86, - 2351,38,851,36,883,5394,2234,34,1008,31, - 35,30,32,823,262,29,27,55,1233,110, - 80,81,85,2351,38,851,36,883,5394,2234, - 34,1008,31,35,30,32,823,262,29,27, - 55,1233,110,80,81,84,2351,38,851,36, - 883,5394,2234,34,1008,31,35,30,32,823, - 262,29,27,55,1233,110,80,81,83,2351, - 38,851,36,883,5394,2234,34,1008,31,35, - 30,32,823,262,29,27,55,1233,110,80, - 81,82,2208,38,851,36,883,5394,2234,34, - 1008,31,35,30,32,823,262,29,27,55, - 1233,110,80,81,108,2351,38,851,36,883, - 5394,2234,34,1008,31,35,30,32,823,262, - 29,27,55,1233,110,80,81,114,2351,38, - 851,36,883,5394,2234,34,1008,31,35,30, - 32,823,262,29,27,55,1233,110,80,81, - 113,2351,38,851,36,883,5394,2234,34,1008, - 31,35,30,32,823,262,29,27,55,1233, - 110,80,81,111,2351,38,851,36,883,5394, - 2234,34,1008,31,35,30,32,823,262,29, - 27,55,1233,110,80,81,109,2802,2586,30, - 30,5394,2440,1084,1084,1084,1994,5394,2166,5394, - 5394,2440,5394,5394,4396,5394,5394,1660,5394,5394, - 5394,229,2440,5394,5394,5394,5394,160,160,160, - 229,2586,5394,5394,5394,5394,1084,5394,166,1677, - 1720,341,5394,206,215,4558,205,212,213,214, - 216,5394,206,215,4558,205,212,213,214,216, - 160,2031,891,207,4128,3472,938,4660,5394,5394, - 2812,166,207,5394,3472,2440,487,208,209,210, - 211,292,293,294,295,509,208,209,210,211, - 292,293,294,295,229,5394,5394,5394,5394,5394, - 3475,1337,38,851,36,883,4410,4655,34,1008, - 31,35,337,32,5394,5394,206,215,4558,205, - 212,213,214,216,2894,5394,5394,2945,5394,2440, - 5394,5394,5394,3572,2627,5394,207,5394,3472,2440, - 5394,5394,5394,5394,5394,100,5394,5394,229,306, - 208,209,210,211,292,293,294,295,229,318, - 1806,320,5394,313,1782,1349,2563,333,5394,5394, - 206,215,4558,205,212,213,214,216,2464,5394, - 206,215,4558,205,212,213,214,216,5394,1529, - 207,5394,3472,5394,5394,5394,5394,5394,5394,5394, - 207,5394,3472,510,208,209,210,211,292,293, - 294,295,5394,218,208,209,210,211,292,293, - 294,295,420,307,1376,38,3566,36,883,4410, - 4655,34,1008,31,35,337,32,2502,38,2406, - 383,883,3479,3144,5394,501,38,2406,383,883, - 238,262,5394,3718,1487,38,851,36,883,4410, - 4655,34,1008,31,35,337,32,274,30,5394, - 5394,5394,5394,1084,5394,54,327,38,2406,383, - 883,5394,318,1806,320,5394,313,1782,2354,1259, - 1607,5394,5394,5394,5394,5394,4396,160,232,2459, - 5394,1788,5394,5394,5394,5394,54,5394,1763,5394, - 5394,5394,318,1806,320,5394,313,1782,5394,2354, - 3288,5394,5394,5394,5394,236,230,231,5394,5394, - 275,1935,1487,38,851,36,883,4410,4655,34, - 1008,31,35,337,32,5394,330,5394,5394,5394, - 5394,5394,5394,243,246,249,252,3030,327,38, - 2406,383,883,2580,1198,38,851,36,883,2878, - 4655,34,1008,31,35,337,32,5394,5394,5394, - 5394,4545,5394,409,3573,5394,5394,5394,54,5394, - 318,1806,320,5394,313,1782,5394,5394,5394,5394, - 5394,2354,2948,396,1214,38,851,36,883,3736, - 4680,34,1008,31,35,337,32,5394,5394,5394, - 5394,5394,315,3536,320,1214,38,851,36,883, - 5394,4680,34,1008,31,35,337,32,1809,38, - 851,36,883,3103,4655,34,1008,31,35,337, - 32,30,5394,1029,5394,5394,1084,5394,2440,4829, - 331,5394,318,1806,320,1111,316,1782,5394,5394, - 2440,4829,1230,38,2406,383,883,229,5394,5394, - 160,331,5394,318,1806,320,5394,314,1782,229, - 5394,2146,5394,5394,5394,5394,315,3536,320,892, - 400,4484,54,5394,414,38,2406,383,883,5394, - 5394,892,400,4484,5394,2354,52,1825,5394,401, - 5394,3472,30,5394,5394,5394,2900,2440,5394,5394, - 5394,401,5394,3472,54,1626,38,2406,383,883, - 1626,38,2406,383,883,5394,341,2354,52,5394, - 5394,5394,501,38,2406,383,883,3362,947,5394, - 1626,38,2406,383,883,54,5394,3126,5394,3362, - 54,5394,1626,38,2406,383,883,2449,2354,2308, - 5394,5394,54,2354,52,5394,5394,5394,5394,2869, - 54,1825,5394,5394,1139,2354,52,1626,38,2406, - 383,883,54,2354,2387,5394,1009,30,5394,5394, - 402,404,2440,5394,2869,2354,52,1626,38,2406, - 383,883,402,405,5394,30,2539,54,5394,5394, - 2440,341,1978,5394,4585,1626,38,2406,383,883, - 2354,52,2139,38,2406,383,883,54,5394,341, - 5394,2715,3126,5394,2253,38,2406,383,883,30, - 2354,52,2554,2734,527,54,5394,5394,2440,5394, - 3126,2794,54,327,38,2406,383,883,2354,52, - 2561,5394,5394,341,54,2354,52,2644,160,3095, - 327,38,2406,383,883,30,2545,2354,52,842, - 527,30,2486,54,3126,5394,527,2440,2930,327, - 38,2406,383,883,726,5394,2354,1005,5394,341, - 54,5394,5394,5394,160,341,341,5394,5394,5394, - 160,5394,5394,2354,875,1185,520,30,30,54, - 3126,842,527,527,2586,5394,3126,3126,5394,527, - 1049,5394,2354,1265,5394,493,1275,523,5394,5394, - 5394,341,341,5394,30,30,160,160,3226,527, - 2440,30,5394,160,30,5394,2440,192,192,2440, - 5394,5394,4452,4452,166,5394,5394,30,341,341, - 490,492,2440,160,2586,341,30,5394,341,1084, - 5394,1084,5394,5394,192,5394,5394,5394,5394,4452, - 3126,341,5394,5394,5394,5394,3126,5394,5394,3126, - 1625,5394,5394,160,5394,160,497,5394,5394,495, - 5394,3698,3126,5394,166,5394,3476,5394,5394,5394, - 5394,5394,524,5394,5394,5394,2996,5394,5394,5394, - 5394,5394,2831,2875,5394,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,3059, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,5394, - 2662,5394,5394,5394,5394,5394,3595,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,3711, - 5394,0,5412,42,0,5411,42,0,501,33, - 0,442,613,0,41,5412,0,41,5411,0, - 130,2588,0,1,432,0,42,5412,0,42, - 5411,0,446,990,0,445,1376,0,501,44, - 0,838,95,0,501,382,0,383,36,0, - 36,383,0,382,33,0,33,382,0,501, - 33,382,0,1078,42,0,1,561,0,1, - 5667,0,1,5666,0,1,5665,0,1,5664, - 0,1,5663,0,1,5662,0,1,5661,0, - 1,5660,0,1,5659,0,1,5658,0,1, - 5657,0,1,5412,42,0,1,5411,42,0, - 1,721,0,5628,241,0,5627,241,0,5730, - 241,0,5729,241,0,5655,241,0,5654,241, - 0,5653,241,0,5652,241,0,5651,241,0, - 5650,241,0,5649,241,0,5648,241,0,5667, - 241,0,5666,241,0,5665,241,0,5664,241, - 0,5663,241,0,5662,241,0,5661,241,0, - 5660,241,0,5659,241,0,5658,241,0,5657, - 241,0,42,241,5412,0,42,241,5411,0, - 241,5435,0,53,5412,0,53,5411,0,237, - 2958,0,48,5433,0,48,40,0,5412,53, - 0,5411,53,0,132,2588,0,131,2588,0, - 30,508,0,5722,433,0,980,433,0,1, - 5435,0,1,42,0,52,40,0,1,96, - 0,228,1,5435,0,228,1,42,0,228, - 407,0,40,5412,0,40,5411,0,40,5412, - 2,0,40,5411,2,0,5412,39,0,5411, - 39,0,5433,50,0,50,40,0,5404,398, - 0,5403,398,0,1,4374,0,1,2520,0, - 1,1078,0,228,406,0,1911,317,0,5722, - 99,0,980,99,0,1,5722,0,1,980, - 0,279,3664,0,1,2854,0,1,2982,0, - 5402,1,0,489,4126,0,228,1,0,228, - 1,3630,0,5404,228,0,5403,228,0,3701, + 117,117,117,118,118,150,150,149,149,121, + 121,151,83,83,84,84,86,87,85,52, + 47,152,152,53,51,82,82,153,153,142, + 142,122,123,123,77,77,154,154,62,62, + 62,59,59,58,63,63,67,67,56,56, + 56,91,91,101,100,100,61,61,60,60, + 55,55,45,103,103,103,95,95,95,96, + 97,97,97,98,98,107,107,107,109,109, + 108,108,195,195,92,92,178,178,178,178, + 178,125,46,46,156,177,177,126,126,126, + 126,179,179,30,30,116,127,127,127,127, + 110,110,120,120,120,158,159,159,159,159, + 159,159,159,159,159,182,182,180,180,181, + 181,160,160,160,160,161,183,112,111,111, + 184,184,162,162,162,162,104,104,104,185, + 185,10,186,186,187,163,155,155,164,164, + 165,166,166,7,7,8,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,66,68, + 68,169,169,128,128,129,129,129,129,129, + 129,3,4,170,170,167,167,130,130,130, + 80,81,76,157,157,113,113,188,188,188, + 131,131,124,124,189,189,171,171,958,38, + 2007,1980,993,508,2842,34,1068,31,35,30, + 32,2274,262,29,27,55,1085,110,80,81, + 112,1118,30,1234,1225,1270,1238,677,274,1326, + 1285,1461,590,1408,1666,1684,147,486,3234,162, + 148,1476,38,984,36,993,117,3242,34,1068, + 31,35,62,32,2351,38,984,36,993,232, + 2505,34,1068,31,35,30,32,947,262,29, + 27,55,1085,110,80,81,112,1118,2530,1234, + 1225,1270,1238,1092,3079,2717,235,230,231,4581, + 82,275,2307,38,984,36,993,1054,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,90,80,81,242,245,248,251,3617,1879, + 2148,38,984,36,993,2191,4823,34,1068,31, + 35,30,32,1155,2011,500,1805,38,390,620, + 3267,3493,2829,2944,3671,4122,4378,1496,38,984, + 36,993,2411,2505,34,1068,31,35,3017,32, + 947,262,29,27,55,1085,110,80,81,112, + 1118,342,1234,1225,1270,1238,66,160,1326,1285, + 1461,2377,1408,1666,1684,147,1175,856,507,148, + 332,514,2903,66,38,1756,46,993,508,2094, + 45,1068,508,1496,38,984,36,993,2411,2505, + 34,1068,31,35,3017,32,947,262,29,27, + 55,1085,110,80,81,112,1118,342,1234,1225, + 1270,1238,4094,1682,1326,1285,1461,1311,1408,1666, + 1684,147,2973,354,507,148,3599,2121,2903,1498, + 522,2510,1914,1696,38,984,36,993,508,2505, + 34,1068,31,35,30,32,947,262,29,27, + 55,1085,110,80,81,112,1118,503,1234,1225, + 1270,1238,327,3298,1326,1285,1461,1422,1408,1666, + 1684,147,1088,943,146,148,1466,38,984,36, + 993,186,4823,34,1068,31,35,64,32,327, + 38,502,3189,993,3007,1189,160,3066,92,47, + 3169,106,327,38,1939,384,993,1073,2351,38, + 984,36,993,503,2505,34,1068,31,35,30, + 32,947,262,29,27,55,1085,110,80,81, + 112,1118,37,1234,1225,1270,1238,1449,1076,1326, + 1285,1461,1607,1408,1666,3138,168,445,3267,711, + 3132,487,3406,3066,1761,38,984,36,993,2411, + 2505,34,1068,31,35,3017,32,947,262,29, + 27,55,1085,110,80,81,112,1118,342,1234, + 1225,1270,1238,286,2684,1326,1285,1461,30,1408, + 1666,1684,147,733,508,507,148,1243,331,2903, + 1472,97,290,1074,1562,38,984,36,993,508, + 2505,34,1068,31,35,30,32,947,262,29, + 27,55,1085,110,80,81,112,1118,28,1234, + 1225,1270,1238,664,1852,1326,1285,1461,576,1408, + 1666,1684,147,1855,2704,377,148,2025,38,984, + 36,993,507,3242,34,1068,31,35,61,32, + 327,38,3248,1466,38,984,36,993,380,4823, + 34,1068,31,35,63,32,327,38,282,1634, + 38,984,36,993,504,2505,34,1068,31,35, + 30,32,947,262,29,27,55,1085,110,80, + 81,112,1118,943,1234,1225,1270,1238,30,2510, + 1326,1285,1461,1088,1408,1666,1684,147,1918,351, + 377,148,1375,1186,2658,38,984,36,993,938, + 381,34,1068,43,35,2566,1139,1641,1935,38, + 984,36,993,378,2505,34,1068,31,35,30, + 32,947,262,29,27,55,1085,110,80,81, + 112,1118,526,1234,1225,1270,1238,412,1725,1326, + 1285,1461,2498,1408,1666,1684,147,49,3169,162, + 148,449,65,3804,2658,38,984,36,993,938, + 1139,34,1068,1842,35,327,38,1703,1660,993, + 1935,38,984,36,993,382,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1228,1234,1225,1270,1238,328, + 334,1326,1285,1461,1315,1408,1666,1684,147,892, + 429,371,148,327,3263,1935,38,984,36,993, + 1139,2505,34,1068,31,35,30,32,947,262, + 29,27,55,1085,110,80,81,112,1118,1095, + 1234,1225,1270,1238,1498,235,1326,1285,1461,620, + 1408,1666,1684,147,931,2377,371,148,2445,333, + 334,1935,38,984,36,993,508,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,112,1118,1095,1234,1225,1270,1238, + 153,1799,1326,1285,1461,370,1408,1666,1684,147, + 74,508,371,148,943,1474,1870,38,984,36, + 993,508,2505,34,1068,31,35,30,32,947, + 262,29,27,55,1085,110,80,81,112,1118, + 590,1234,1225,1270,1238,73,3655,1326,1285,1461, + 369,1408,1666,1684,147,58,1006,377,148,2847, + 386,418,1935,38,984,36,993,436,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,110,80,81,112,1118,30,1234,1225,1270, + 1238,1079,448,1326,1285,1461,367,1408,1666,1684, + 147,432,93,163,148,106,387,418,1935,38, + 984,36,993,2130,2505,34,1068,31,35,30, + 32,947,262,29,27,55,1085,110,80,81, + 112,1118,2049,1234,1225,1270,1238,2411,1248,1326, + 1285,1461,375,1408,1666,1684,147,327,3840,159, + 148,1935,38,984,36,993,2616,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,112,1118,590,1234,1225,1270,1238, + 352,4813,1326,1285,1461,30,1408,1666,1684,147, + 4554,1109,158,148,1935,38,984,36,993,943, + 2505,34,1068,31,35,30,32,947,262,29, + 27,55,1085,110,80,81,112,1118,30,1234, + 1225,1270,1238,1219,359,1326,1285,1461,590,1408, + 1666,1684,147,508,4666,157,148,1935,38,984, + 36,993,508,2505,34,1068,31,35,30,32, + 947,262,29,27,55,1085,110,80,81,112, + 1118,2442,1234,1225,1270,1238,1265,91,1326,1285, + 1461,2541,1408,1666,1684,147,57,4117,156,148, + 1935,38,984,36,993,943,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,30,1234,1225,1270,1238,2532, + 398,1326,1285,1461,2018,1408,1666,1684,147,508, + 4686,155,148,1935,38,984,36,993,943,2505, + 34,1068,31,35,30,32,947,262,29,27, + 55,1085,110,80,81,112,1118,30,1234,1225, + 1270,1238,2656,349,1326,1285,1461,30,1408,1666, + 1684,147,763,56,154,148,1935,38,984,36, + 993,508,2505,34,1068,31,35,30,32,947, + 262,29,27,55,1085,110,80,81,112,1118, + 30,1234,1225,1270,1238,2316,155,1326,1285,1461, + 2526,1408,1666,1684,147,94,326,153,148,1935, + 38,984,36,993,1247,2505,34,1068,31,35, + 30,32,947,262,29,27,55,1085,110,80, + 81,112,1118,2316,1234,1225,1270,1238,2658,396, + 1326,1285,1461,30,1408,1666,1684,147,2766,333, + 152,148,1935,38,984,36,993,508,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,110,80,81,112,1118,30,1234,1225,1270, + 1238,3427,420,1326,1285,1461,2107,1408,1666,1684, + 147,1832,2303,151,148,1935,38,984,36,993, + 508,2505,34,1068,31,35,30,32,947,262, + 29,27,55,1085,110,80,81,112,1118,590, + 1234,1225,1270,1238,1682,4741,1326,1285,1461,590, + 1408,1666,1684,147,1880,4746,150,148,1935,38, + 984,36,993,508,2505,34,1068,31,35,30, + 32,947,262,29,27,55,1085,110,80,81, + 112,1118,30,1234,1225,1270,1238,4209,865,1326, + 1285,1461,1186,1408,1666,1684,147,72,1085,149, + 148,1826,38,984,36,993,2303,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,112,1118,513,1234,1225,1270,1238, + 30,400,1326,1285,1461,1794,1408,1666,3138,168, + 1935,38,984,36,993,3521,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1607,1234,1225,1270,1238,608, + 3267,1326,1285,1461,1178,1408,1666,1684,147,327, + 1235,144,148,3406,327,38,1939,384,993,2173, + 2259,38,984,36,993,1598,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,274,1234,1225,1270,1238,513, + 3524,1326,1285,1461,1479,1408,1666,1684,147,1174, + 1185,193,148,2351,38,984,36,993,385,2505, + 34,1068,31,35,30,32,947,262,29,27, + 55,1085,110,80,81,112,1118,1301,1234,1225, + 1270,1238,508,2788,1326,1285,1461,508,1408,1666, + 3138,168,2351,38,984,36,993,276,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,110,80,81,112,1118,71,1234,1225,1270, + 1238,70,98,1326,1285,1461,154,1408,1666,3138, + 168,2658,38,984,36,993,589,508,34,1068, + 2102,35,2351,38,984,36,993,2992,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,110,80,81,112,1118,1178,1234,1225,1270, + 1238,69,1186,1326,1285,1461,508,1408,1666,3138, + 168,2351,38,984,36,993,414,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,112,1118,2528,1234,1225,1270,1238, + 2534,300,1326,1285,1461,1545,1408,1666,3138,168, + 327,38,502,277,993,327,38,1939,384,993, + 283,2395,38,984,36,993,413,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,112,1118,274,1234,1225,1270,1238, + 1758,691,1326,1285,1461,1228,1408,1666,3138,168, + 2351,38,984,36,993,416,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1607,1234,1225,1270,1238,30, + 3267,1326,1285,1461,2744,1408,2977,1555,38,502, + 277,993,1914,3800,3797,2701,38,278,78,75, + 2351,38,984,36,993,3817,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1522,1234,1225,1270,1238,1932, + 331,1326,1285,1461,1106,2870,2351,38,984,36, + 993,508,2505,34,1068,31,35,30,32,947, + 262,29,27,55,1085,110,80,81,112,1118, + 3125,1234,1225,1270,1238,3452,1095,1326,1285,2833, + 2351,38,984,36,993,60,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1074,1234,1225,1270,1238,839, + 2974,1326,2848,2351,38,984,36,993,436,2505, + 34,1068,31,35,30,32,947,262,29,27, + 55,1085,110,80,81,112,1118,1010,1234,1225, + 1270,2725,2351,38,984,36,993,943,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,110,80,81,112,1118,2051,1234,1225,1270, + 2798,2439,38,1939,384,993,1010,2837,1555,38, + 502,3459,993,590,237,262,2165,389,418,4758, + 1369,38,1939,384,993,1897,2351,38,984,36, + 993,274,2505,34,1068,31,35,30,32,947, + 262,29,27,55,1085,110,80,81,112,1118, + 274,1234,1225,2495,2162,101,2444,2351,38,984, + 36,993,232,2505,34,1068,31,35,30,32, + 947,262,29,27,55,1085,110,80,81,112, + 1118,1980,1234,1225,2524,588,2411,30,1660,235, + 230,231,528,2411,275,1630,38,1939,384,993, + 327,38,1939,384,993,342,327,38,1939,384, + 993,342,342,3266,675,762,160,242,245,248, + 251,3617,1415,3298,30,54,1184,944,2191,4637, + 54,2447,2903,777,77,590,422,2690,1848,888, + 508,4778,728,51,3493,2829,2944,3671,4122,4378, + 2351,38,984,36,993,936,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,59,1234,1225,2525,2351,38, + 984,36,993,1979,2505,34,1068,31,35,30, + 32,947,262,29,27,55,1085,110,80,81, + 112,1118,1074,1234,1225,2565,1146,38,984,36, + 993,3247,4586,34,1068,31,35,338,32,2351, + 38,984,36,993,508,2505,34,1068,31,35, + 30,32,947,262,29,27,55,1085,110,80, + 81,112,1118,285,1234,2657,1919,670,1095,445, + 324,2411,327,38,1939,384,993,1161,322,1879, + 757,1627,2411,508,319,2684,321,431,314,2593, + 2616,2096,3320,350,2175,327,38,1939,384,993, + 865,2616,274,3393,1618,38,984,36,993,4556, + 4586,34,1068,31,35,338,32,105,327,38, + 291,343,1383,1002,348,425,508,2448,313,3369, + 2351,38,984,36,993,2500,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1919,1234,2670,516,358,2411, + 3175,325,319,2684,321,339,314,2593,1879,494, + 1186,350,2528,2106,3252,3265,1415,3298,2616,388, + 418,2634,1328,38,984,36,993,3616,4671,34, + 1068,31,35,338,32,2678,38,280,2542,343, + 1383,1002,348,353,364,492,493,1589,2606,183, + 522,1076,1685,38,984,36,993,3247,4586,34, + 1068,31,35,338,32,1234,38,3542,36,993, + 3616,4671,34,1068,31,35,338,32,331,1014, + 319,2684,321,1691,314,2593,358,414,38,1939, + 384,993,1755,38,1939,384,993,865,2095,2541, + 2909,2716,3252,3265,327,38,1939,384,993,3756, + 319,2684,321,4508,314,2593,1134,54,508,350, + 1384,331,54,319,2684,321,76,314,2593,517, + 1848,3089,323,30,424,1848,2279,285,3553,522, + 232,1934,934,306,307,311,1934,343,1383,1002, + 348,514,440,2471,374,518,4508,2740,2224,327, + 38,502,281,993,3300,2951,3320,244,230,231, + 2351,38,984,36,993,3852,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,1118,1695,2406,2351,38,984,36, + 993,1178,2505,34,1068,31,35,30,32,947, + 262,29,27,55,1085,110,80,81,112,1118, + 350,2426,1074,175,865,409,3543,1350,528,1198, + 38,984,36,993,2815,4586,34,1068,31,35, + 338,32,943,1817,2098,2128,1670,229,343,1383, + 1002,348,160,372,2177,232,341,1788,1267,38, + 442,1,184,2760,4753,284,528,1057,397,204, + 215,3431,203,212,213,214,216,327,38,291, + 173,374,247,230,231,229,30,316,3481,321, + 160,1088,187,171,172,174,175,176,177,178, + 184,2760,327,38,502,279,993,204,215,3431, + 203,212,213,214,216,3697,430,1981,173,30, + 102,2108,4552,30,2195,185,2411,1343,649,778, + 188,171,172,174,175,176,177,178,865,2067, + 2351,38,984,36,993,229,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,2435,2678,38,278,206,215,3431, + 205,212,213,214,216,327,38,502,3531,993, + 3204,2586,1924,1974,350,2596,1088,207,1931,3284, + 2411,1540,38,442,2709,515,2645,4753,3011,2411, + 217,208,209,210,211,292,293,294,295,229, + 160,30,343,1383,1002,348,2669,1186,229,2463, + 1589,166,435,3562,3572,30,4277,3480,3835,3052, + 4705,206,215,3431,205,212,213,214,216,2234, + 206,215,3431,205,212,213,214,216,1805,38, + 390,207,30,3284,30,1299,199,4394,2720,1762, + 207,1074,3284,2411,217,208,209,210,211,292, + 293,294,295,217,208,209,210,211,292,293, + 294,295,229,3615,327,38,1939,384,993,520, + 4277,3613,501,38,1939,384,993,1607,2285,4277, + 3666,849,2009,3267,206,215,3431,205,212,213, + 214,216,1186,1186,54,942,2464,327,38,1939, + 384,993,54,1186,207,1172,3284,1848,2284,327, + 38,1939,384,993,2304,1848,2547,217,208,209, + 210,211,292,293,294,295,2430,54,2465,30, + 1186,198,202,331,2758,439,3562,3572,3648,423, + 1848,3251,200,4277,3689,2351,38,2007,1980,993, + 1558,2505,34,1068,31,35,30,32,947,262, + 29,27,55,1085,110,80,81,88,3388,221, + 2351,38,984,36,993,37,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,112,2464,2351,38,984,36,993,2543, + 2505,34,1068,31,35,30,32,947,262,29, + 27,55,1085,110,80,81,112,2466,1258,38, + 984,36,993,2670,4671,34,1068,31,35,338, + 32,2351,38,984,36,993,2527,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,89,334,262,508,938,1186,1088, + 528,1809,38,984,36,993,2772,4586,34,1068, + 31,35,338,32,332,508,319,2684,321,229, + 315,2593,1546,164,160,350,2286,30,3267,2668, + 3466,4213,3071,349,184,2760,1186,3773,528,2334, + 508,204,215,3431,203,212,213,214,216,3517, + 1178,2640,173,345,1383,1002,348,229,1139,316, + 3481,321,160,2562,3828,171,172,174,175,176, + 177,178,184,2760,3555,304,239,262,332,204, + 215,3431,203,212,213,214,216,436,508,350, + 173,30,528,1291,2166,508,1856,330,334,1614, + 3267,2682,180,171,172,174,175,176,177,178, + 30,229,1018,2676,298,3135,160,345,1383,1002, + 348,1523,3664,1161,232,523,184,2760,2411,2690, + 528,2505,2421,204,215,3431,203,212,213,214, + 216,2655,2694,30,173,2750,1088,2616,3144,229, + 3524,240,230,231,160,1974,191,171,172,174, + 175,176,177,178,184,2760,1805,38,390,2687, + 160,204,215,3431,203,212,213,214,216,30, + 201,3273,173,1178,3208,1186,1607,2637,38,3077, + 1531,993,3267,4386,3876,171,172,174,175,176, + 177,178,1337,38,984,36,993,3616,4586,34, + 1068,31,35,338,32,494,508,54,2689,327, + 38,1939,384,993,3776,327,38,1939,384,993, + 1848,1145,100,2404,610,30,1178,2731,2411,528, + 3632,2007,331,2752,2758,2760,2761,305,1111,441, + 3088,491,493,2411,4833,54,2771,342,229,1178, + 319,2684,321,160,314,2593,30,508,1848,3114, + 334,2411,229,184,2760,1088,3873,4536,3743,2541, + 204,215,3431,203,212,213,214,216,697,2772, + 342,173,3551,528,1541,401,2979,1488,508,164, + 297,376,232,194,171,172,174,175,176,177, + 178,2903,229,2609,402,30,3284,160,2802,508, + 954,2056,508,296,307,311,1186,184,2760,250, + 230,231,3853,2779,204,215,3431,203,212,213, + 214,216,784,2586,3832,173,2586,528,1088,2732, + 2739,1088,3275,3772,2513,3852,3810,190,171,172, + 174,175,176,177,178,303,229,2574,30,1512, + 2766,160,160,1088,1070,160,1551,2783,88,30, + 871,184,2760,166,2411,528,166,2762,204,215, + 3431,203,212,213,214,216,30,160,2773,173, + 1186,1088,1186,342,229,1186,403,406,1555,160, + 2777,197,171,172,174,175,176,177,178,184, + 2760,3646,2785,1186,2903,160,204,215,3431,203, + 212,213,214,216,2066,2778,2893,173,379,4141, + 2784,222,2788,2789,299,3830,1053,5324,3749,196, + 171,172,174,175,176,177,178,2351,38,984, + 36,993,195,2505,34,1068,31,35,30,32, + 947,262,29,27,55,1085,110,80,81,87, + 2351,38,984,36,993,5324,2505,34,1068,31, + 35,30,32,947,262,29,27,55,1085,110, + 80,81,86,2351,38,984,36,993,5324,2505, + 34,1068,31,35,30,32,947,262,29,27, + 55,1085,110,80,81,85,2351,38,984,36, + 993,5324,2505,34,1068,31,35,30,32,947, + 262,29,27,55,1085,110,80,81,84,2351, + 38,984,36,993,5324,2505,34,1068,31,35, + 30,32,947,262,29,27,55,1085,110,80, + 81,83,2351,38,984,36,993,5324,2505,34, + 1068,31,35,30,32,947,262,29,27,55, + 1085,110,80,81,82,2208,38,984,36,993, + 5324,2505,34,1068,31,35,30,32,947,262, + 29,27,55,1085,110,80,81,108,2351,38, + 984,36,993,5324,2505,34,1068,31,35,30, + 32,947,262,29,27,55,1085,110,80,81, + 114,2351,38,984,36,993,5324,2505,34,1068, + 31,35,30,32,947,262,29,27,55,1085, + 110,80,81,113,2351,38,984,36,993,5324, + 2505,34,1068,31,35,30,32,947,262,29, + 27,55,1085,110,80,81,111,2351,38,984, + 36,993,2424,2505,34,1068,31,35,30,32, + 947,262,29,27,55,1085,110,80,81,109, + 2802,2586,30,334,5324,2411,1088,1088,1088,1994, + 5324,5324,5324,5324,2411,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,229,5324,5324,5324,5324,5324, + 160,160,164,229,30,334,5324,5324,5324,1088, + 1088,166,1813,232,5324,5324,206,215,3431,205, + 212,213,214,216,5324,206,215,3431,205,212, + 213,214,216,160,164,5324,207,5324,3284,938, + 253,230,231,2812,2012,207,5324,3284,2411,488, + 208,209,210,211,292,293,294,295,510,208, + 209,210,211,292,293,294,295,229,5324,5324, + 5324,5324,2291,3752,1376,38,3542,36,993,3616, + 4586,34,1068,31,35,338,32,5324,5324,206, + 215,3431,205,212,213,214,216,2894,5324,5324, + 1139,5324,2411,5324,2550,5324,5324,2627,5324,207, + 5324,3284,2411,5324,5324,5324,5324,5324,5324,5324, + 5324,229,306,208,209,210,211,292,293,294, + 295,229,319,2684,321,5324,314,2593,5324,3073, + 334,5324,5324,206,215,3431,205,212,213,214, + 216,934,5324,206,215,3431,205,212,213,214, + 216,2031,5324,207,5324,3284,5324,4649,5324,5324, + 5324,5324,5324,207,5324,3284,511,208,209,210, + 211,292,293,294,295,5324,218,208,209,210, + 211,292,293,294,295,1487,38,984,36,993, + 3616,4586,34,1068,31,35,338,32,2502,38, + 1939,384,993,5324,2837,5324,1230,38,1939,384, + 993,238,262,30,2734,5324,5324,2586,1088,2411, + 5324,5324,528,5324,410,3543,5324,5324,274,5324, + 5324,5324,5324,5324,30,5324,54,5324,2616,2411, + 5324,3665,160,319,2684,321,160,314,2593,1848, + 52,5324,5324,2017,5324,1584,5324,166,342,232, + 2785,5324,2541,5324,1487,38,984,36,993,3616, + 4586,34,1068,31,35,338,32,5324,5324,2903, + 30,5324,5324,5324,5324,1088,236,230,231,2145, + 5324,275,1487,38,984,36,993,3616,4586,34, + 1068,31,35,338,32,5324,494,308,311,160, + 5324,5324,5324,421,243,246,249,252,3617,3428, + 2067,5324,319,2684,321,2191,314,2593,1214,38, + 984,36,993,5324,4671,34,1068,31,35,338, + 32,2634,491,493,334,5324,5324,5324,5324,1088, + 319,2684,321,5324,314,2593,1214,38,984,36, + 993,5324,4671,34,1068,31,35,338,32,3872, + 5324,5324,1921,164,1029,5324,1921,2411,3267,2411, + 4833,2411,3267,3806,332,5324,319,2684,321,5324, + 317,2593,5324,3131,30,5324,2616,5324,229,1088, + 2616,414,38,1939,384,993,1626,38,1939,384, + 993,5324,332,5324,319,2684,321,5324,315,2593, + 1541,401,2979,160,5324,334,5324,5324,331,5324, + 1088,54,331,5324,2387,2031,54,5324,5324,5324, + 402,4649,3284,2673,1848,52,5324,5324,5324,1848, + 2907,5324,5324,5324,164,1026,5324,938,5324,5324, + 2662,5324,5324,3452,358,5324,5324,3388,358,1626, + 38,1939,384,993,5324,5324,5324,5324,3275,1727, + 3252,3265,5324,1727,3252,3265,501,38,1939,384, + 993,1626,38,1939,384,993,30,30,30,54, + 5324,2411,1088,528,5324,5324,1626,38,1939,384, + 993,5324,1848,52,5324,5324,54,5324,1139,5324, + 342,54,342,2516,2868,938,160,160,5324,1848, + 52,5324,403,405,1848,3146,54,3728,1281,1584, + 2061,2903,5324,2903,5324,2662,5324,5324,5324,1848, + 52,2190,5324,1246,1924,5324,3678,3161,334,5324, + 2685,1626,38,1939,384,993,1626,38,1939,384, + 993,5324,5324,1626,38,1939,384,993,2139,38, + 1939,384,993,5324,5324,5324,1139,5324,5324,5324, + 5324,54,5324,5324,5324,5324,54,420,2253,38, + 1939,384,993,54,1848,52,2486,5324,54,1848, + 52,2411,5324,5324,5324,2854,1848,52,5324,3529, + 3279,1848,52,5324,5324,3299,334,3649,54,5324, + 342,5324,2708,327,38,1939,384,993,5324,5324, + 521,1848,52,327,38,1939,384,993,5324,5324, + 5324,2903,3027,327,38,1939,384,993,5324,5324, + 30,524,5324,54,30,528,30,30,5324,528, + 5324,528,2411,54,30,30,1848,2245,5324,528, + 2411,5324,5324,54,342,5324,1848,888,342,160, + 342,342,5324,160,5324,160,1848,2801,342,342, + 944,5324,30,160,192,2903,192,2411,30,4472, + 5324,4472,2903,2411,192,1503,5324,5324,5324,4472, + 2903,5324,1770,5324,5324,5324,342,5324,5324,5324, + 498,5324,342,5324,5324,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,5324,5324,5324,2903,5324,5324, + 5324,5324,5324,2903,5324,5324,5324,496,5324,5324, + 5324,5324,5324,525,5324,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,5324,5324,5324,5324,5324,3445, + 5324,3470,5324,5324,5324,5324,5324,5324,5324,3518, + 5324,5324,5324,5324,5324,3205,5324,0,42,5342, + 0,42,5341,0,502,33,0,443,938,0, + 41,5342,0,41,5341,0,130,2560,0,1, + 433,0,447,1053,0,446,1284,0,502,44, + 0,1058,95,0,502,383,0,384,36,0, + 36,384,0,383,33,0,33,383,0,502, + 33,383,0,42,852,0,1,562,0,1, + 5597,0,1,5596,0,1,5595,0,1,5594, + 0,1,5593,0,1,5592,0,1,5591,0, + 1,5590,0,1,5589,0,1,5588,0,1, + 5587,0,42,1,5342,0,42,1,5341,0, + 723,1,0,5558,241,0,5557,241,0,5661, + 241,0,5660,241,0,5585,241,0,5584,241, + 0,5583,241,0,5582,241,0,5581,241,0, + 5580,241,0,5579,241,0,5578,241,0,5597, + 241,0,5596,241,0,5595,241,0,5594,241, + 0,5593,241,0,5592,241,0,5591,241,0, + 5590,241,0,5589,241,0,5588,241,0,5587, + 241,0,42,241,5342,0,42,241,5341,0, + 5365,241,0,53,5342,0,53,5341,0,237, + 3424,0,48,5363,0,48,40,0,5342,53, + 0,5341,53,0,132,2560,0,131,2560,0, + 30,509,0,5653,434,0,1356,434,0,5365, + 1,0,42,1,0,52,40,0,1,96, + 0,5365,228,1,0,42,228,1,0,228, + 408,0,40,5342,0,40,5341,0,40,5342, + 2,0,40,5341,2,0,5342,39,0,5341, + 39,0,5363,50,0,50,40,0,5334,399, + 0,5333,399,0,1,4444,0,1,2491,0, + 1,852,0,228,407,0,2229,318,0,5653, + 99,0,1356,99,0,1,5653,0,1,1356, + 0,279,4143,0,1,666,0,1,3198,0, + 5332,1,0,490,4149,0,228,1,0,228, + 1,3675,0,5334,228,0,5333,228,0,3808, 228,0,8,10,0,228,220,0,228,219, - 0,189,3695,0 + 0,189,3718,0 }; }; public final static char baseAction[] = BaseAction.baseAction; @@ -1408,304 +1395,304 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface TermAction { public final static char termAction[] = {0, - 5394,5369,5366,5366,5366,5366,5366,5366,5366,5379, + 5324,5299,5296,5296,5296,5296,5296,5296,5296,5309, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,5376,1,1,1, + 1,1,1,1,1,1,5306,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5394,1,1,1,1127,1, - 765,1,1,1,1,1,1123,1,1,1, - 5394,3626,1,1,1,41,5057,5054,1,1, - 1,5401,727,5573,718,3665,2274,2190,2181,3628, - 3473,161,3661,1113,3644,3619,3631,8,5382,5382, - 5382,5382,5382,5382,5382,5382,5382,5382,5382,5382, - 5382,5382,5382,5382,5382,5382,5382,5382,5382,5382, - 5382,5382,5382,5382,5382,5382,5394,5382,5382,5382, - 5382,5382,5382,5382,5382,5382,5382,5382,5382,5382, - 5382,5394,5382,5382,5382,5382,5382,5382,5382,5382, - 5382,5382,5382,5382,5382,5382,5382,1371,5382,5382, - 5382,5382,125,5394,141,5382,5382,5382,5382,5394, - 5382,5382,5382,5382,5382,5382,5382,5382,5394,5382, - 5382,5382,5382,5382,5394,5369,5366,5366,5366,5366, - 5366,5366,5366,5373,1,1,1,1,1,1, + 1,1,1,1,5324,1,1,1,1072,1, + 767,1,1,1,1,1,1417,1,1,1, + 5324,3673,1,1,1,41,4993,4990,1,1, + 1,5331,729,5503,1838,3763,3262,2161,3167,3674, + 3425,161,3719,1193,3686,3571,3676,8,5312,5312, + 5312,5312,5312,5312,5312,5312,5312,5312,5312,5312, + 5312,5312,5312,5312,5312,5312,5312,5312,5312,5312, + 5312,5312,5312,5312,5312,5312,5324,5312,5312,5312, + 5312,5312,5312,5312,5312,5312,5312,5312,5312,5312, + 5312,5324,5312,5312,5312,5312,5312,5312,5312,5312, + 5312,5312,5312,5312,5312,5312,5312,1332,5312,5312, + 5312,5312,125,5324,141,5312,5312,5312,5312,5324, + 5312,5312,5312,5312,5312,5312,5312,5312,5324,5312, + 5312,5312,5312,5312,5324,5299,5296,5296,5296,5296, + 5296,5296,5296,5303,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 5376,1,1,3482,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,3007,1, - 1,1,1127,1,765,1,1,1,1,1, - 1123,1,1,1,122,3626,1,1,1,5041, - 2657,2748,1,1,1,2904,2826,5573,718,3665, - 2274,2190,2181,3628,3473,2279,3661,1113,3644,3619, - 3631,5394,5369,5366,5366,5366,5366,5366,5366,5366, - 5373,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,5376,1,1, - 5394,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,5394,1,1,1,1127, - 1,765,1,1,1,1,1,1123,1,1, - 1,5394,3626,1,1,1,5394,5411,5412,1, - 1,1,446,1,5573,718,3665,2274,2190,2181, - 3628,3473,165,3661,1113,3644,3619,3631,5394,5369, - 5366,5366,5366,5366,5366,5366,5366,5373,1,1, + 5306,1,1,3696,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2993,1, + 1,1,1072,1,767,1,1,1,1,1, + 1417,1,1,1,122,3673,1,1,1,4977, + 2629,2720,1,1,1,2946,2920,5503,1838,3763, + 3262,2161,3167,3674,3425,2250,3719,1193,3686,3571, + 3676,5324,5299,5296,5296,5296,5296,5296,5296,5296, + 5303,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,5306,1,1, + 5324,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,5324,1,1,1,1072, + 1,767,1,1,1,1,1,1417,1,1, + 1,5324,3673,1,1,1,5324,5341,5342,1, + 1,1,447,1,5503,1838,3763,3262,2161,3167, + 3674,3425,165,3719,1193,3686,3571,3676,5324,5299, + 5296,5296,5296,5296,5296,5296,5296,5303,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5376,1,1,1887,1,1, + 1,1,1,1,5306,1,1,1890,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,5072,1,1,1,1127,1,765,1, - 1,1,1,1,1123,1,1,1,5394,3626, - 1,1,1,5394,5236,5233,1,1,1,445, - 165,5573,718,3665,2274,2190,2181,3628,3473,504, - 3661,1113,3644,3619,3631,5394,5369,5366,5366,5366, - 5366,5366,5366,5366,5373,1,1,1,1,1, + 1,1,5002,1,1,1,1072,1,767,1, + 1,1,1,1,1417,1,1,1,5324,3673, + 1,1,1,5324,5166,5163,1,1,1,446, + 165,5503,1838,3763,3262,2161,3167,3674,3425,505, + 3719,1193,3686,3571,3676,5324,5299,5296,5296,5296, + 5296,5296,5296,5296,5303,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,5376,1,1,5394,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,5075, - 1,1,1,1127,1,765,1,1,1,1, - 1,1123,1,1,1,901,3626,1,1,1, - 53,5251,5248,1,1,1,346,5394,5573,718, - 3665,2274,2190,2181,3628,3473,5400,3661,1113,3644, - 3619,3631,5394,5369,5366,5366,5366,5366,5366,5366, - 5366,5373,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,5376,1, - 1,5394,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,799,1,1,1, - 1127,1,765,1,1,1,1,1,1123,1, - 1,1,5394,3626,1,1,1,129,5394,42, - 1,1,1,5435,5399,5573,718,3665,2274,2190, - 2181,3628,3473,5394,3661,1113,3644,3619,3631,5394, - 5369,5366,5366,5366,5366,5366,5366,5366,5373,1, + 1,5306,1,1,5324,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5005, + 1,1,1,1072,1,767,1,1,1,1, + 1,1417,1,1,1,904,3673,1,1,1, + 53,5181,5178,1,1,1,347,5324,5503,1838, + 3763,3262,2161,3167,3674,3425,5330,3719,1193,3686, + 3571,3676,5324,5299,5296,5296,5296,5296,5296,5296, + 5296,5303,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,5306,1, + 1,5324,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1851,1,1,1, + 1072,1,767,1,1,1,1,1,1417,1, + 1,1,5324,3673,1,1,1,129,5324,42, + 1,1,1,5365,5329,5503,1838,3763,3262,2161, + 3167,3674,3425,5324,3719,1193,3686,3571,3676,5324, + 5299,5296,5296,5296,5296,5296,5296,5296,5303,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,5376,1,1,5394,1, + 1,1,1,1,1,5306,1,1,5324,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,3009,1,1,1,1127,1,765, - 1,1,1,1,1,1123,1,1,1,124, - 3626,1,1,1,128,2657,2748,1,1,1, - 2904,2826,5573,718,3665,2274,2190,2181,3628,3473, - 5394,3661,1113,3644,3619,3631,5394,5369,5366,5366, - 5366,5366,5366,5366,5366,5373,1,1,1,1, + 1,1,1,2994,1,1,1,1072,1,767, + 1,1,1,1,1,1417,1,1,1,124, + 3673,1,1,1,128,2629,2720,1,1,1, + 2946,2920,5503,1838,3763,3262,2161,3167,3674,3425, + 5324,3719,1193,3686,3571,3676,5324,5299,5296,5296, + 5296,5296,5296,5296,5296,5303,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,5376,1,1,5394,1,1,1,1, + 1,1,5306,1,1,5324,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1174,1,1,1,1127,1,765,1,1,1, - 1,1,1123,1,1,1,123,3626,1,1, - 1,127,2657,2748,1,1,1,2904,2826,5573, - 718,3665,2274,2190,2181,3628,3473,5394,3661,1113, - 3644,3619,3631,5394,5369,5366,5366,5366,5366,5366, - 5366,5366,5373,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,5376, - 1,1,5394,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1658,1,1, - 1,1127,1,765,1,1,1,1,1,1123, - 1,1,1,5394,3626,1,1,1,5394,2657, - 2748,1,1,1,1696,5394,5573,718,3665,2274, - 2190,2181,3628,3473,5394,3661,1113,3644,3619,3631, - 5394,3630,1,1,1,1,1,1,1,5404, + 1455,1,1,1,1072,1,767,1,1,1, + 1,1,1417,1,1,1,123,3673,1,1, + 1,127,2629,2720,1,1,1,2946,2920,5503, + 1838,3763,3262,2161,3167,3674,3425,5324,3719,1193, + 3686,3571,3676,5324,5299,5296,5296,5296,5296,5296, + 5296,5296,5303,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5306, + 1,1,5324,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1713,1,1, + 1,1072,1,767,1,1,1,1,1,1417, + 1,1,1,5324,3673,1,1,1,5324,2629, + 2720,1,1,1,1746,5324,5503,1838,3763,3262, + 2161,3167,3674,3425,5324,3719,1193,3686,3571,3676, + 5324,3675,1,1,1,1,1,1,1,5334, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,5403,1,1,4642, + 1,1,1,1,1,1,5333,1,1,3809, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,765,1,1,1,1127,1, - 765,1,1,1,1,1,1123,1,1,1, - 119,3626,1,1,1,126,3412,334,1,1, - 1,359,5394,5573,718,3665,2274,2190,2181,3628, - 3473,5398,3661,1113,3644,3619,3631,42,5069,5066, - 4779,721,3339,3910,2520,3933,5394,1059,3887,3864, - 5659,5657,5666,5665,5661,5662,5660,5663,5664,5667, - 5658,3979,3956,5729,5651,5417,5730,3449,668,771, - 5419,715,621,761,5420,5418,626,5413,5415,5416, - 5414,5394,5654,5729,1325,133,5730,1438,5648,5655, - 5627,5653,5652,224,5649,5650,5628,33,5394,5785, - 5394,3388,3364,2657,2748,944,5786,5787,5394,5285, - 5285,228,5281,228,228,228,228,5289,1,5394, - 5651,1,1,1,1,1,1,1,1,1, - 1,1,189,302,228,1,30,489,5654,5729, - 5397,501,5730,5695,5648,5655,5627,5653,5652,5394, - 5649,5650,5628,1,1,40,1069,1,5402,1, - 1,1,1,1,5394,1,1,1,1354,414, - 1,5394,5069,5066,418,5435,1,1,1,407, - 228,5797,2411,2382,5433,5394,8712,8712,137,5882, - 5394,5285,5285,228,5281,228,228,228,228,5333, - 1,5260,5260,1,1,1,1,1,1,1, - 1,1,1,1,5433,1025,228,1,429,489, - 5401,1395,5819,5820,5821,364,5146,5142,2722,5150, - 1078,1,2520,1,5394,1,1,4815,1069,1, - 1,1,1,1,1,1,3484,1,1,1, - 5354,5394,1,5391,48,5245,5245,5394,1,1, - 1,406,228,5797,383,5394,5402,5087,5394,3593, - 5087,5882,5087,5090,5404,5090,5090,1,5146,5142, - 5324,5150,5330,5242,5327,799,5404,2349,5090,5090, - 5087,5403,1145,5394,5045,5042,4374,721,1078,980, - 2520,5722,5357,5403,5819,5820,5821,436,5090,53, - 5236,5233,4727,5394,5146,5142,4374,5150,1078,5348, - 2520,5345,5394,5788,5090,2958,143,139,5401,5090, - 5090,5090,5819,5820,5821,5090,5090,343,5045,5042, - 2722,721,1078,980,2520,5722,5394,5045,5042,5394, - 5435,5090,5090,5090,5090,5090,5090,5090,5090,5090, - 5090,5090,5090,5090,5090,5090,5090,5090,5090,5090, - 5090,5090,5090,5090,5090,5090,5090,5090,5394,2549, - 382,5090,5090,5093,5090,2062,5093,5400,5093,5096, - 1,5096,5096,1844,432,1,1,799,1,5360, - 5063,5394,5063,5394,5096,5096,5093,310,5146,5142, - 4374,5150,1078,5348,2520,5345,1,5146,5142,4374, - 5150,1078,389,2520,5099,310,382,2315,2240,142, - 1801,1758,1715,1672,1629,1586,1543,1500,1457,1414, - 5096,5394,310,3775,4907,5096,5096,5096,5394,5411, - 5412,5096,5096,2690,302,1,5146,5142,4374,5150, - 1078,5401,2520,140,5695,5399,501,5096,5096,5096, - 5096,5096,5096,5096,5096,5096,5096,5096,5096,5096, - 5096,5096,5096,5096,5096,5096,5096,5096,5096,5096, - 5096,5096,5096,5096,288,5411,5412,5096,5096,5394, - 5096,5394,1,1,1,1,1,1,1,1, - 1878,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,2062,5394,1, - 2279,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,5394,5045,5042,1,721, - 1078,95,2520,135,5081,5394,5045,5042,1,721, - 5103,583,2520,2315,1,1,1,5146,5142,4374, - 5150,1078,4745,2520,5920,1,5146,5142,4779,5150, - 3339,3910,2520,3933,862,5106,3887,3864,5133,5139, - 5112,5115,5127,5124,5130,5121,5118,5109,5136,3979, - 3956,237,5394,5417,5239,3449,668,771,5419,715, - 621,761,5420,5418,626,5413,5415,5416,5414,5394, - 5045,5042,1325,5435,5394,343,42,42,3504,5435, - 5394,980,2091,5722,39,5309,5306,287,42,42, - 505,42,5045,5042,4779,721,3339,3910,2520,3933, - 5402,561,3887,3864,5659,5657,5666,5665,5661,5662, - 5660,5663,5664,5667,5658,3979,3956,4117,3666,5417, - 5394,3449,668,771,5419,715,621,761,5420,5418, - 626,5413,5415,5416,5414,799,42,5394,1325,3052, - 5435,3294,980,416,5722,3720,3666,1,5146,5142, - 2722,5150,1078,1054,2520,5394,5251,5248,5394,5394, - 5411,5412,5401,42,5045,5042,4779,721,3339,3910, - 2520,3933,5402,561,3887,3864,5659,5657,5666,5665, - 5661,5662,5660,5663,5664,5667,5658,3979,3956,1, - 5394,5417,4885,3449,668,771,5419,715,621,761, - 5420,5418,626,5413,5415,5416,5414,799,53,4181, - 1325,104,5412,3294,1,5146,5142,2722,5150,1078, - 138,2520,4002,828,225,145,5045,5042,4779,721, - 3339,3910,2520,3933,5401,561,3887,3864,5659,5657, - 5666,5665,5661,5662,5660,5663,5664,5667,5658,3979, - 3956,5651,5412,5417,115,3449,668,771,5419,715, - 621,761,5420,5418,626,5413,5415,5416,5414,5654, - 5729,4571,1325,5730,799,5648,5655,5627,5653,5652, - 5394,5649,5650,5628,5394,5236,5233,5394,42,42, - 1,5146,5142,4779,5150,3339,3910,2520,3933,5394, - 5106,3887,3864,5133,5139,5112,5115,5127,5124,5130, - 5121,5118,5109,5136,3979,3956,5394,5394,5417,2349, - 3449,668,771,5419,715,621,761,5420,5418,626, - 5413,5415,5416,5414,390,5411,5412,1325,1,5146, - 5142,5324,5150,5330,4025,5327,5394,4002,828,3812, - 4048,5394,3053,42,42,42,5045,5042,4779,721, - 3339,3910,2520,3933,5398,561,3887,3864,5659,5657, - 5666,5665,5661,5662,5660,5663,5664,5667,5658,3979, - 3956,33,5894,5417,5394,3449,668,771,5419,715, - 621,761,5420,5418,626,5413,5415,5416,5414,42, - 5045,5042,4779,721,3339,3910,2520,3933,522,561, - 3887,3864,5659,5657,5666,5665,5661,5662,5660,5663, - 5664,5667,5658,3979,3956,5048,118,5417,551,3449, - 668,771,5419,715,621,761,5420,5418,626,5413, - 5415,5416,5414,5394,5411,5412,1325,442,1,3294, - 1,5272,5272,5394,5269,3620,980,360,5722,360, - 143,40,5275,5275,42,5045,5042,4779,721,3339, - 3910,2520,3933,5397,561,3887,3864,5659,5657,5666, - 5665,5661,5662,5660,5663,5664,5667,5658,3979,3956, - 1071,5051,5417,2571,3449,668,771,5419,715,621, - 761,5420,5418,626,5413,5415,5416,5414,319,1, - 1,1325,532,3504,5851,5845,4025,5849,5837,5394, - 5843,5844,4048,1,5366,5366,228,5366,228,228, - 228,228,228,5874,5875,360,226,360,355,5852, - 433,42,42,360,5435,360,5266,42,5263,228, - 8714,5435,5363,5854,5394,5045,5042,5394,721,5103, - 42,2520,2240,5651,5435,3682,5394,3670,799,714, - 799,1127,2145,2239,5855,5876,5853,3775,1,2493, - 121,5654,5729,878,3626,5730,3412,5648,5655,5627, - 5653,5652,1749,5649,5650,5628,52,5865,5864,5877, - 5846,5847,5870,5871,5882,1264,5868,5869,5848,5850, - 5872,5873,5878,5858,5859,5860,5856,5857,5866,5867, - 5862,5861,5863,5394,136,1020,532,5394,5851,5845, - 4119,5849,583,5748,5843,5844,44,1,5366,5366, - 228,5366,228,228,228,228,5385,5874,5875,5394, - 96,1,1,5852,1,5394,5278,5394,5278,345, - 4120,53,1491,228,8714,5411,5363,5854,5394,8052, - 7599,3388,3364,5750,5819,5820,5821,5394,5045,5042, - 5078,721,1078,714,2520,1127,2145,2239,5855,5876, - 5853,117,5394,2493,120,99,42,42,3626,5435, - 3412,5342,382,5339,317,5411,5394,5336,220,4388, - 5394,5865,5864,5877,5846,5847,5870,5871,5882,799, - 5868,5869,5848,5850,5872,5873,5878,5858,5859,5860, - 5856,5857,5866,5867,5862,5861,5863,42,5045,5042, - 4779,721,3339,3910,2520,3933,5084,561,3887,3864, - 5659,5657,5666,5665,5661,5662,5660,5663,5664,5667, - 5658,3979,3956,5394,799,5417,3664,3449,668,771, - 5419,715,621,761,5420,5418,626,5413,5415,5416, - 5414,4025,5394,8052,7599,3388,3364,4048,42,5045, - 5042,4779,721,3339,3910,2520,3933,1505,561,3887, - 3864,5659,5657,5666,5665,5661,5662,5660,5663,5664, - 5667,5658,3979,3956,5394,1,5417,3683,3449,668, - 771,5419,715,621,761,5420,5418,626,5413,5415, - 5416,5414,5394,5394,5394,1325,42,5045,5042,4821, - 721,3339,3910,2520,3933,1,561,3887,3864,5659, - 5657,5666,5665,5661,5662,5660,5663,5664,5667,5658, - 3979,3956,3529,5394,5417,2772,3449,668,771,5419, - 715,621,761,5420,5418,626,5413,5415,5416,5414, - 42,5045,5042,4779,721,3339,3910,2520,3933,501, - 561,3887,3864,5659,5657,5666,5665,5661,5662,5660, - 5663,5664,5667,5658,3979,3956,107,2002,5417,3684, - 3449,668,771,5419,715,621,761,5420,5418,626, - 5413,5415,5416,5414,42,5045,5042,4779,721,3339, - 3910,2520,3933,1,561,3887,3864,5659,5657,5666, - 5665,5661,5662,5660,5663,5664,5667,5658,3979,3956, - 437,3699,5417,227,3449,668,771,5419,715,621, - 761,5420,5418,626,5413,5415,5416,5414,5394,5069, - 5066,1,5435,116,130,383,311,134,975,3260, - 5651,5659,5657,5666,5665,5661,5662,5660,5663,5664, - 5667,5658,5394,5394,289,5651,2681,719,5654,5729, - 1,5394,5730,3504,5648,5655,5627,5653,5652,339, - 5649,5650,5628,5654,5729,1,3128,5730,2616,5648, - 5655,5627,5653,5652,5400,5649,5650,5628,3124,132, - 5785,241,5226,5222,5394,5230,944,5786,5787,5060, - 5394,975,5394,1280,5213,5219,5192,5195,5207,5204, - 5210,5201,5198,5189,5216,5394,103,5394,5177,372, - 799,1973,2690,4025,5404,339,339,2496,2465,4048, - 398,511,367,2616,2411,2382,5168,5162,2527,5318, - 5159,5403,5186,5165,5156,5171,5174,339,5183,5180, - 5153,223,3132,5785,5254,79,5321,5394,3071,944, - 5786,5787,5399,5394,5659,5657,5666,5665,5661,5662, - 5660,5663,5664,5667,5658,1,2012,5394,5651,5461, - 5462,4344,2496,2465,167,1,5366,5366,228,5366, - 228,228,228,228,5385,131,5654,5729,1,1190, - 5730,167,5648,5655,5627,5653,5652,518,5649,5650, - 5628,228,8714,3190,5363,3774,1,5366,5366,228, - 5366,228,228,228,228,5388,390,5069,5066,5394, - 5435,5394,1911,1127,40,5275,5275,5394,3699,2616, - 1696,2493,228,8714,1,5363,3626,5394,5411,5412, - 3699,5394,1078,5404,2520,42,220,5394,570,365, - 5257,1927,167,5433,1127,5394,5882,5394,5295,5292, - 5403,279,2493,410,5351,648,496,3626,494,40, - 5275,5275,5394,5394,5275,518,3756,219,2496,2465, - 5394,5302,5298,50,5315,5315,5433,5882,1,5366, - 5366,228,5366,228,228,228,228,5385,1130,1, - 5366,5366,228,5366,228,228,228,228,5385,5433, - 5394,5394,5312,1,228,8714,1235,5363,5394,40, - 5275,5275,5394,5354,5394,228,8714,2101,5363,5394, - 2151,5394,4822,4891,3680,4894,1127,5394,2570,5394, - 5394,5394,3593,4857,2493,38,2753,1127,5433,3626, - 5394,5394,5394,4858,4864,2493,5394,5394,5394,220, - 3626,4884,5394,5394,309,2548,4916,5394,498,5882, - 220,2,5394,1,5394,5357,4244,5394,5394,5394, - 5882,1,5366,5366,228,5366,228,228,228,228, - 228,1,5366,5366,228,5366,228,228,228,228, - 228,3625,5394,5394,5394,5394,5394,228,8714,5576, - 5363,3511,2868,5575,5394,40,5394,228,8714,3017, - 5363,5394,5394,2868,5394,5394,5394,3725,5394,1127, - 3199,5394,5394,5394,1930,846,5394,2493,5394,1127, - 5394,5394,3626,5394,5394,5394,5394,2493,5394,5394, - 5394,5394,3626,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5882,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5882,1,5366,5366,228,5366,228,228, - 228,228,228,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,228, - 8714,5394,5363,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,5394, - 5394,1127,5394,5394,5394,5394,5394,5394,5394,2493, - 5394,5394,5394,5394,3626,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5394,5394,5394,5394,5394,5394, - 5394,5394,5394,5394,5882 + 1,1,1,1,767,1,1,1,1072,1, + 767,1,1,1,1,1,1417,1,1,1, + 119,3673,1,1,1,126,3364,335,1,1, + 1,360,5324,5503,1838,3763,3262,2161,3167,3674, + 3425,5328,3719,1193,3686,3571,3676,42,4981,4978, + 2497,723,3315,3933,2491,3956,5324,1445,3910,3887, + 5589,5587,5596,5595,5591,5592,5590,5593,5594,5597, + 5588,4002,3979,5660,5581,5347,5661,3401,707,887, + 5349,717,622,845,5350,5348,663,5343,5345,5346, + 5344,5324,5584,5660,783,133,5661,1402,5578,5585, + 5557,5583,5582,224,5579,5580,5558,33,5324,5716, + 5324,3340,3090,2629,2720,613,5717,5718,5324,5215, + 5215,228,5211,228,228,228,228,5219,1,5324, + 5581,1,1,1,1,1,1,1,1,1, + 1,1,189,302,228,1,30,490,5584,5660, + 5327,502,5661,5625,5578,5585,5557,5583,5582,5324, + 5579,5580,5558,1,1,40,627,1,5332,1, + 1,1,1,1,5324,1,1,1,716,415, + 1,5324,4981,4978,419,5365,1,1,1,408, + 228,5728,2382,2353,5363,5324,8643,8643,137,5813, + 5324,5215,5215,228,5211,228,228,228,228,5263, + 1,5190,5190,1,1,1,1,1,1,1, + 1,1,1,1,5363,1029,228,1,430,490, + 5331,1574,5750,5751,5752,365,5076,5072,2694,5080, + 852,1,2491,1,5324,1,1,4678,627,1, + 1,1,1,1,1,1,4615,1,1,1, + 5284,5324,1,5321,48,5175,5175,5324,1,1, + 1,407,228,5728,384,5324,5332,5017,5324,3561, + 5017,5813,5017,5020,5334,5020,5020,1,5076,5072, + 5254,5080,5260,5172,5257,1851,5334,2320,5020,5020, + 5017,5333,1150,5324,4981,4978,4444,723,852,1356, + 2491,5653,5287,5333,5750,5751,5752,437,5020,53, + 5166,5163,4414,5324,5076,5072,4444,5080,852,5278, + 2491,5275,5324,5719,5020,3424,143,139,5331,5020, + 5020,5020,5750,5751,5752,5020,5020,344,4981,4978, + 2694,723,852,1356,2491,5653,5324,4981,4978,5324, + 5365,5020,5020,5020,5020,5020,5020,5020,5020,5020, + 5020,5020,5020,5020,5020,5020,5020,5020,5020,5020, + 5020,5020,5020,5020,5020,5020,5020,5020,5324,3008, + 383,5020,5020,5023,5020,2022,5023,5330,5023,5026, + 1,5026,5026,1808,433,1,1,1851,1,5290, + 4999,5324,4999,5324,5026,5026,5023,310,5076,5072, + 4444,5080,852,5278,2491,5275,1,5076,5072,4444, + 5080,852,390,2491,5029,310,383,2286,2200,142, + 1765,1722,1679,1636,1593,1550,1507,1464,1421,1378, + 5026,5324,310,3826,4888,5026,5026,5026,5324,5341, + 5342,5026,5026,2155,302,1,5076,5072,4444,5080, + 852,5331,2491,140,5625,5329,502,5026,5026,5026, + 5026,5026,5026,5026,5026,5026,5026,5026,5026,5026, + 5026,5026,5026,5026,5026,5026,5026,5026,5026,5026, + 5026,5026,5026,5026,288,5341,5342,5026,5026,5324, + 5026,5324,1,1,1,1,1,1,1,1, + 2423,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2022,5324,1, + 2250,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,5324,4981,4978,1,723, + 852,95,2491,135,5011,5324,4981,4978,1,723, + 5033,584,2491,2286,1,1,1,5076,5072,4444, + 5080,852,4676,2491,5851,1,5076,5072,2497,5080, + 3315,3933,2491,3956,826,5036,3910,3887,5063,5069, + 5042,5045,5057,5054,5060,5051,5048,5039,5066,4002, + 3979,237,5324,5347,5169,3401,707,887,5349,717, + 622,845,5350,5348,663,5343,5345,5346,5344,5324, + 4981,4978,783,5365,5324,344,42,42,3067,5365, + 5324,1356,3069,5653,39,5239,5236,287,42,42, + 506,42,4981,4978,2497,723,3315,3933,2491,3956, + 5332,562,3910,3887,5589,5587,5596,5595,5591,5592, + 5590,5593,5594,5597,5588,4002,3979,4140,2667,5347, + 5324,3401,707,887,5349,717,622,845,5350,5348, + 663,5343,5345,5346,5344,1851,42,5324,783,2995, + 5365,3745,1356,417,5653,3865,2667,1,5076,5072, + 2694,5080,852,812,2491,5324,5181,5178,5324,5324, + 5341,5342,5331,42,4981,4978,2497,723,3315,3933, + 2491,3956,5332,562,3910,3887,5589,5587,5596,5595, + 5591,5592,5590,5593,5594,5597,5588,4002,3979,1, + 5324,5347,4847,3401,707,887,5349,717,622,845, + 5350,5348,663,5343,5345,5346,5344,1851,53,4331, + 783,104,5342,3745,1,5076,5072,2694,5080,852, + 138,2491,4025,950,225,145,4981,4978,2497,723, + 3315,3933,2491,3956,5331,562,3910,3887,5589,5587, + 5596,5595,5591,5592,5590,5593,5594,5597,5588,4002, + 3979,5581,5342,5347,115,3401,707,887,5349,717, + 622,845,5350,5348,663,5343,5345,5346,5344,5584, + 5660,4574,783,5661,1851,5578,5585,5557,5583,5582, + 5324,5579,5580,5558,5324,5166,5163,5324,42,42, + 1,5076,5072,2497,5080,3315,3933,2491,3956,5324, + 5036,3910,3887,5063,5069,5042,5045,5057,5054,5060, + 5051,5048,5039,5066,4002,3979,5324,5324,5347,2320, + 3401,707,887,5349,717,622,845,5350,5348,663, + 5343,5345,5346,5344,391,5341,5342,783,1,5076, + 5072,5254,5080,5260,4048,5257,5324,4025,950,4142, + 4071,5324,3004,42,42,42,4981,4978,2497,723, + 3315,3933,2491,3956,5328,562,3910,3887,5589,5587, + 5596,5595,5591,5592,5590,5593,5594,5597,5588,4002, + 3979,33,5825,5347,5324,3401,707,887,5349,717, + 622,845,5350,5348,663,5343,5345,5346,5344,42, + 4981,4978,2497,723,3315,3933,2491,3956,523,562, + 3910,3887,5589,5587,5596,5595,5591,5592,5590,5593, + 5594,5597,5588,4002,3979,4984,118,5347,552,3401, + 707,887,5349,717,622,845,5350,5348,663,5343, + 5345,5346,5344,5324,5341,5342,783,443,1,3745, + 1,5202,5202,5324,5199,3575,1356,361,5653,361, + 143,40,5205,5205,42,4981,4978,2497,723,3315, + 3933,2491,3956,5327,562,3910,3887,5589,5587,5596, + 5595,5591,5592,5590,5593,5594,5597,5588,4002,3979, + 2237,4987,5347,3457,3401,707,887,5349,717,622, + 845,5350,5348,663,5343,5345,5346,5344,320,1, + 1,783,533,3067,5782,5776,4048,5780,5768,5324, + 5774,5775,4071,1,5296,5296,228,5296,228,228, + 228,228,228,5805,5806,361,226,361,356,5783, + 434,42,42,361,5365,361,5196,42,5193,228, + 8645,5365,5293,5785,5324,4981,4978,5324,723,5033, + 42,2491,2200,5581,5365,3784,5324,3779,1851,823, + 1851,1072,1719,1752,5786,5807,5784,3826,1,2242, + 121,5584,5660,1013,3673,5661,3364,5578,5585,5557, + 5583,5582,1789,5579,5580,5558,52,5796,5795,5808, + 5777,5778,5801,5802,5813,1086,5799,5800,5779,5781, + 5803,5804,5809,5789,5790,5791,5787,5788,5797,5798, + 5793,5792,5794,5324,136,2150,533,5324,5782,5776, + 4174,5780,584,5679,5774,5775,44,1,5296,5296, + 228,5296,228,228,228,228,5315,5805,5806,5324, + 96,1,1,5783,1,5324,5208,5324,5208,346, + 4393,53,1617,228,8645,5341,5293,5785,5324,7983, + 7530,3340,3090,5681,5750,5751,5752,5324,4981,4978, + 5008,723,852,823,2491,1072,1719,1752,5786,5807, + 5784,117,5324,2242,120,99,42,42,3673,5365, + 3364,5272,383,5269,318,5341,5324,5266,220,4460, + 5324,5796,5795,5808,5777,5778,5801,5802,5813,1851, + 5799,5800,5779,5781,5803,5804,5809,5789,5790,5791, + 5787,5788,5797,5798,5793,5792,5794,42,4981,4978, + 2497,723,3315,3933,2491,3956,5014,562,3910,3887, + 5589,5587,5596,5595,5591,5592,5590,5593,5594,5597, + 5588,4002,3979,5324,1851,5347,4143,3401,707,887, + 5349,717,622,845,5350,5348,663,5343,5345,5346, + 5344,4048,5324,7983,7530,3340,3090,4071,42,4981, + 4978,2497,723,3315,3933,2491,3956,1469,562,3910, + 3887,5589,5587,5596,5595,5591,5592,5590,5593,5594, + 5597,5588,4002,3979,5324,1,5347,4175,3401,707, + 887,5349,717,622,845,5350,5348,663,5343,5345, + 5346,5344,5324,5324,5324,783,42,4981,4978,4840, + 723,3315,3933,2491,3956,1,562,3910,3887,5589, + 5587,5596,5595,5591,5592,5590,5593,5594,5597,5588, + 4002,3979,3469,5324,5347,3540,3401,707,887,5349, + 717,622,845,5350,5348,663,5343,5345,5346,5344, + 42,4981,4978,2497,723,3315,3933,2491,3956,502, + 562,3910,3887,5589,5587,5596,5595,5591,5592,5590, + 5593,5594,5597,5588,4002,3979,107,2883,5347,4524, + 3401,707,887,5349,717,622,845,5350,5348,663, + 5343,5345,5346,5344,42,4981,4978,2497,723,3315, + 3933,2491,3956,1,562,3910,3887,5589,5587,5596, + 5595,5591,5592,5590,5593,5594,5597,5588,4002,3979, + 438,3807,5347,227,3401,707,887,5349,717,622, + 845,5350,5348,663,5343,5345,5346,5344,5324,4981, + 4978,1,5365,116,130,384,312,134,1310,3036, + 5581,5589,5587,5596,5595,5591,5592,5590,5593,5594, + 5597,5588,5324,5324,289,5581,994,2135,5584,5660, + 1,5324,5661,3067,5578,5585,5557,5583,5582,340, + 5579,5580,5558,5584,5660,1,3141,5661,2588,5578, + 5585,5557,5583,5582,5330,5579,5580,5558,3525,132, + 5716,241,5156,5152,5324,5160,613,5717,5718,4996, + 5324,1310,5324,1286,5143,5149,5122,5125,5137,5134, + 5140,5131,5128,5119,5146,5324,103,5324,5107,373, + 1851,858,2155,4048,5334,340,340,2467,2436,4071, + 399,512,368,2588,2382,2353,5098,5092,3202,5248, + 5089,5333,5116,5095,5086,5101,5104,340,5113,5110, + 5083,223,3573,5716,5184,79,5251,5324,3700,613, + 5717,5718,5329,5324,5589,5587,5596,5595,5591,5592, + 5590,5593,5594,5597,5588,1,1983,5324,5581,5391, + 5392,4244,2467,2436,167,1,5296,5296,228,5296, + 228,228,228,228,5315,131,5584,5660,1,1195, + 5661,167,5578,5585,5557,5583,5582,519,5579,5580, + 5558,228,8645,3609,5293,3798,1,5296,5296,228, + 5296,228,228,228,228,5318,391,4981,4978,5324, + 5365,5324,2229,1072,40,5205,5205,5324,3807,2588, + 1746,2242,228,8645,1,5293,3673,5324,5341,5342, + 3807,5324,852,5334,2491,42,220,5324,571,366, + 5187,2762,167,5363,1072,5324,5813,5324,5225,5222, + 5333,279,2242,411,5281,997,497,3673,495,40, + 5205,5205,5324,5324,5205,519,4605,219,2467,2436, + 5324,5232,5228,50,5245,5245,5363,5813,1,5296, + 5296,228,5296,228,228,228,228,5315,2418,1, + 5296,5296,228,5296,228,228,228,228,5315,5363, + 5324,5324,5242,1,228,8645,1241,5293,5324,40, + 5205,5205,5324,5284,5324,228,8645,2072,5293,5324, + 2111,5324,4786,4855,3780,4882,1072,5324,3456,5324, + 5324,5324,3561,4844,2242,38,3426,1072,5363,3673, + 5324,5324,5324,4846,4397,2242,5324,5324,5324,220, + 3673,4854,5324,5324,309,3663,4677,5324,499,5813, + 220,2,5324,1,5324,5287,4267,5324,5324,5324, + 5813,1,5296,5296,228,5296,228,228,228,228, + 228,1,5296,5296,228,5296,228,228,228,228, + 228,3667,5324,5324,5324,5324,5324,228,8645,5506, + 5293,3463,2545,5505,5324,40,5324,228,8645,3596, + 5293,5324,5324,2545,5324,5324,5324,3870,5324,1072, + 4365,5324,5324,5324,1940,650,5324,2242,5324,1072, + 5324,5324,3673,5324,5324,5324,5324,2242,5324,5324, + 5324,5324,3673,5324,5324,5324,5324,5324,5324,5324, + 5324,5324,5813,5324,5324,5324,5324,5324,5324,5324, + 5324,5324,5813,1,5296,5296,228,5296,228,228, + 228,228,228,5324,5324,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,5324,5324,5324,5324,5324,228, + 8645,5324,5293,5324,5324,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,5324,5324,5324,5324,5324,5324, + 5324,1072,5324,5324,5324,5324,5324,5324,5324,2242, + 5324,5324,5324,5324,3673,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,5324,5324,5324,5324,5324,5324, + 5324,5324,5324,5324,5813 }; }; public final static char termAction[] = TermAction.termAction; @@ -1713,59 +1700,59 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface Asb { public final static char asb[] = {0, - 801,61,1100,373,63,974,926,926,926,926, - 57,974,707,926,421,707,794,357,796,374, - 374,374,374,374,374,374,374,374,1056,1062, - 1067,1064,1071,1069,1076,1074,1078,1077,1079,208, - 1080,373,357,29,29,29,29,413,756,1, - 704,29,111,157,707,707,1,452,707,157, - 157,148,357,933,28,549,59,1037,357,1039, - 1039,1014,1014,756,373,374,374,374,374,374, - 374,374,374,374,374,374,374,374,374,374, - 374,374,374,374,373,373,373,373,373,373, - 373,373,373,373,373,373,374,157,157,491, - 491,491,491,204,157,1,254,1026,1037,850, - 1037,845,1037,847,1037,1021,57,413,111,111, - 1,374,254,70,654,644,643,600,57,796, - 111,28,373,411,548,157,410,413,412,410, - 157,111,1064,1064,1062,1062,1062,1069,1069,1069, - 1069,1067,1067,1074,1071,1071,1077,1076,1078,1113, - 1079,974,974,974,974,413,413,491,716,490, - 704,413,700,160,413,854,204,260,852,850, - 264,413,413,413,204,491,148,111,1094,157, - 656,658,413,549,374,29,1060,114,157,59, - 413,413,412,549,373,373,373,373,373,974, - 974,357,258,700,160,854,853,854,204,854, - 264,264,413,204,413,157,648,636,647,658, - 204,411,157,1060,254,548,59,413,411,157, - 157,157,157,756,756,700,699,905,413,160, - 1113,206,896,1103,160,854,854,908,413,264, - 905,903,904,413,302,373,645,645,312,312, - 413,652,254,269,157,413,1060,1061,1060,373, - 114,901,59,157,157,700,549,926,410,325, - 1105,407,974,916,56,909,413,905,374,413, - 302,373,373,658,413,549,157,656,636,302, - 611,1060,756,374,111,901,411,175,411,854, - 854,407,1099,254,413,919,374,1113,320,908, - 413,57,57,413,500,658,302,1061,157,111, - 1100,175,411,854,850,57,1105,407,548,374, - 374,413,413,413,500,157,500,490,926,693, - 693,1100,850,337,916,413,974,413,413,974, - 493,500,175,556,175,489,489,508,338,57, - 413,756,659,493,843,976,249,974,416,592, - 175,29,29,508,337,1113,374,1113,1100,974, - 974,974,338,974,413,215,1100,1100,413,850, - 157,156,495,510,491,249,843,555,850,850, - 928,57,490,329,974,329,1113,338,357,357, - 355,931,357,1100,1100,754,508,29,495,556, - 555,556,1100,319,1099,157,555,555,555,57, - 413,691,269,157,407,157,215,1100,249,974, - 157,508,555,373,859,407,1100,905,555,555, - 555,413,413,693,157,157,624,338,754,338, - 1100,215,249,373,338,335,905,157,857,905, - 905,413,1100,489,850,850,966,373,336,756, - 1100,1100,157,857,1100,410,338,157,756,1100, - 904,338,157,857,338 + 261,61,1104,107,150,978,877,877,877,877, + 57,978,313,877,551,313,770,91,772,108, + 108,108,108,108,108,108,108,108,1060,1066, + 1071,1068,1075,1073,1080,1078,1082,1081,1083,209, + 1084,107,91,29,29,29,29,147,732,1, + 310,29,503,206,313,313,1,582,313,206, + 206,197,91,937,28,816,59,1041,91,1043, + 1043,1018,1018,732,107,108,108,108,108,108, + 108,108,108,108,108,108,108,108,108,108, + 108,108,108,108,107,107,107,107,107,107, + 107,107,107,107,107,107,108,206,206,621, + 621,621,621,439,206,1,255,1030,1041,884, + 1041,879,1041,881,1041,1025,57,147,503,503, + 1,108,255,462,654,644,643,515,57,772, + 503,28,107,145,815,206,144,147,146,144, + 206,503,1068,1068,1066,1066,1066,1073,1073,1073, + 1073,1071,1071,1078,1075,1075,1081,1080,1082,703, + 1083,978,978,978,978,147,147,621,322,620, + 310,147,306,395,147,707,439,443,705,884, + 447,147,147,147,439,621,197,503,1098,206, + 656,658,147,816,108,29,1064,163,206,59, + 147,147,146,816,107,107,107,107,107,978, + 978,91,259,306,395,707,706,707,439,707, + 447,447,147,439,147,206,648,636,647,658, + 439,145,206,1064,255,815,59,147,145,206, + 206,206,206,732,732,306,305,729,147,395, + 703,441,925,693,395,707,707,1107,147,447, + 729,727,728,147,452,107,645,645,623,623, + 147,652,255,362,206,147,1064,1065,1064,107, + 163,930,59,206,206,306,816,877,144,506, + 695,141,978,867,56,1108,147,729,108,147, + 452,107,107,658,147,816,206,656,636,452, + 526,1064,732,108,503,930,145,410,145,707, + 707,141,1103,255,147,870,108,703,631,1107, + 147,57,57,147,717,658,452,1065,206,503, + 1104,410,145,707,884,57,695,141,815,108, + 108,147,147,147,717,206,717,620,877,157, + 157,1104,884,71,867,147,978,147,147,978, + 710,717,410,823,410,619,619,725,72,57, + 147,732,659,710,303,980,250,978,510,859, + 410,29,29,725,71,703,108,703,1104,978, + 978,978,72,978,147,216,1104,1104,147,884, + 206,205,712,777,621,250,303,822,884,884, + 932,57,620,63,978,63,703,72,91,91, + 89,935,91,1104,1104,360,725,29,712,823, + 822,823,1104,630,1103,206,822,822,822,57, + 147,691,362,206,141,206,216,1104,250,978, + 206,725,822,107,888,141,1104,729,822,822, + 822,147,147,157,206,206,539,72,360,72, + 1104,216,250,107,72,69,729,206,886,729, + 729,147,1104,619,884,884,970,107,70,732, + 1104,1104,206,886,1104,144,72,206,732,1104, + 728,72,206,886,72 }; }; public final static char asb[] = Asb.asb; @@ -1779,42 +1766,55 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 14,62,46,15,68,52,27,16,53,54, 17,18,55,57,19,20,58,69,59,10, 70,21,22,49,23,45,1,2,4,0, - 123,0,9,72,118,87,26,66,0,63, - 64,3,10,32,36,34,31,39,14,23, - 13,19,17,18,20,21,16,15,22,40, - 43,41,42,28,38,33,37,5,7,4, - 24,25,8,6,11,12,30,35,1,2, - 118,9,0,96,90,11,12,91,92,88, - 89,44,93,94,97,98,99,100,101,102, - 117,72,95,67,104,105,106,107,108,109, - 110,111,112,113,118,71,26,65,1,2, - 8,6,4,3,60,66,87,9,0,81, - 7,114,115,116,48,9,3,8,6,5, - 72,71,26,73,51,13,14,62,46,15, - 68,52,27,16,53,54,17,18,55,57, - 19,20,58,69,59,10,70,21,45,22, - 49,23,4,1,2,29,0,65,72,95, - 66,118,87,71,13,14,31,63,15,32, - 33,16,17,18,64,34,19,20,35,36, - 37,47,38,39,10,21,22,23,40,41, - 42,28,24,25,11,12,30,43,9,26, - 5,7,3,1,2,8,4,6,0,4, - 50,72,0,1,2,9,71,0,51,13, - 14,62,46,15,68,52,27,16,53,54, - 17,18,55,57,19,20,58,69,59,10, - 70,21,45,22,49,23,1,2,4,95, + 123,0,81,114,115,116,29,72,119,121, + 71,73,74,48,56,61,76,78,85,83, + 75,80,82,84,86,50,77,79,9,26, + 51,62,46,68,52,27,53,54,55,57, + 58,69,59,70,45,49,47,63,64,10, + 32,36,34,31,39,14,23,13,19,17, + 18,20,21,16,15,22,40,43,41,42, + 28,38,33,37,24,25,11,12,30,35, + 8,6,3,4,7,5,1,2,0,9, + 72,118,87,26,66,0,65,67,66,1, + 2,0,96,90,11,12,91,92,88,89, + 44,93,94,97,98,99,100,101,102,117, + 72,95,67,104,105,106,107,108,109,110, + 111,112,113,118,71,26,65,1,2,8, + 6,4,3,60,66,87,9,0,65,72, + 95,66,118,87,71,13,14,31,63,15, + 32,33,16,17,18,64,34,19,20,35, + 36,37,47,38,39,10,21,22,23,40, + 41,42,28,24,25,11,12,30,43,9, + 26,5,7,3,1,2,8,4,6,0, + 13,14,31,63,15,32,33,16,17,18, + 64,7,34,19,20,35,36,37,47,38, + 39,10,21,22,23,40,41,42,1,2, + 3,24,25,8,6,11,12,5,30,4, + 43,73,28,0,47,46,7,49,5,1, + 2,4,74,9,50,72,95,118,87,71, + 26,60,3,120,96,103,90,24,25,8, + 6,11,12,91,92,88,89,44,93,94, + 97,98,99,100,101,102,117,104,105,106, + 107,108,109,110,111,112,113,65,66,67, + 0,51,13,14,62,46,15,68,52,27, + 16,53,54,17,18,55,57,19,20,58, + 69,59,10,70,21,45,22,49,23,1, + 2,4,95,0,81,7,114,115,116,48, + 9,3,8,6,5,72,71,26,73,51, + 13,14,62,46,15,68,52,27,16,53, + 54,17,18,55,57,19,20,58,69,59, + 10,70,21,45,22,49,23,4,1,2, + 29,0,4,50,72,0,1,2,9,71, 0,46,47,49,9,65,95,67,66,87, - 0,74,50,65,72,95,87,60,3,9, - 66,26,67,0,50,72,74,0,81,114, - 115,116,29,72,119,121,71,73,74,48, - 56,61,76,78,85,83,75,80,82,84, - 86,50,77,79,9,26,51,62,46,68, - 52,27,53,54,55,57,58,69,59,70, - 45,49,47,63,64,10,32,36,34,31, - 39,14,23,13,19,17,18,20,21,16, - 15,22,40,43,41,42,28,38,33,37, - 24,25,11,12,30,35,8,6,3,4, - 7,5,1,2,0,1,2,122,50,0, + 0,63,64,3,10,32,36,34,31,39, + 14,23,13,19,17,18,20,21,16,15, + 22,40,43,41,42,28,38,33,37,5, + 7,4,24,25,8,6,11,12,30,35, + 1,2,118,9,0,50,72,74,0,1, + 2,122,50,0,13,14,15,16,17,18, + 19,20,21,22,23,51,46,52,27,53, + 54,55,57,58,59,45,49,26,9,87, + 7,1,2,60,3,8,6,5,4,0, 51,13,14,62,46,15,68,52,27,16, 53,54,17,18,55,57,19,20,58,69, 59,10,70,21,45,22,49,23,1,2, @@ -1822,69 +1822,56 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 100,5,30,44,107,108,104,105,106,112, 111,113,89,88,109,110,97,98,93,94, 101,102,24,25,90,103,3,60,67,66, - 65,0,46,49,74,3,50,72,26,47, - 9,65,95,67,66,87,0,119,0,61, - 51,13,14,62,46,15,68,52,81,27, - 16,53,54,17,18,55,56,57,19,20, - 58,69,59,10,70,21,48,45,22,49, - 23,9,3,8,4,26,50,6,7,1, - 2,5,29,0,71,62,46,15,68,52, - 16,53,54,17,18,55,57,19,20,58, - 69,59,70,21,45,22,49,23,14,13, - 51,9,3,8,6,26,48,61,81,27, - 29,7,1,2,5,4,10,56,0,13, - 14,15,16,17,18,19,20,21,22,23, - 51,46,52,27,53,54,55,57,58,59, - 45,49,26,9,87,7,1,2,60,3, - 8,6,5,4,0,8,6,7,5,4, + 65,0,74,50,65,72,95,87,60,3, + 9,66,26,67,0,8,6,7,5,4, 1,2,3,60,65,67,66,9,87,95, 0,5,7,3,60,6,8,95,51,13, 14,46,15,68,52,27,16,53,54,17, 18,55,57,19,20,58,69,59,10,70, 21,45,22,49,23,1,2,4,87,9, - 62,0,65,67,66,1,2,0,47,46, - 7,49,5,1,2,4,74,9,50,72, - 95,118,87,71,26,60,3,120,96,103, - 90,24,25,8,6,11,12,91,92,88, - 89,44,93,94,97,98,99,100,101,102, - 117,104,105,106,107,108,109,110,111,112, - 113,65,66,67,0,9,87,13,14,31, - 15,32,33,16,17,18,34,19,20,35, - 36,37,47,38,39,10,21,22,23,40, - 41,42,28,3,24,25,8,6,11,12, - 30,4,43,5,7,1,2,64,63,0, - 13,14,31,63,15,32,33,16,17,18, - 64,7,34,19,20,35,36,37,47,38, - 39,10,21,22,23,40,41,42,1,2, - 3,24,25,8,6,11,12,5,30,4, - 43,73,28,0,29,72,4,1,2,50, - 0,4,44,50,72,0,9,71,63,64, - 47,24,25,8,6,11,12,30,35,3, - 40,43,41,42,28,38,33,37,14,23, - 13,19,17,18,20,21,16,15,22,32, - 36,34,31,39,50,7,1,2,4,10, - 5,0,67,66,71,9,0,45,1,2, - 4,114,115,116,0,50,66,0,72,9, - 60,3,67,66,26,44,0,50,67,0, - 75,0,63,64,24,25,11,12,30,35, - 40,43,41,42,28,38,33,37,14,23, - 13,19,17,18,20,21,16,15,22,10, - 32,36,34,31,39,8,6,60,5,7, - 1,2,4,3,0,62,46,15,68,52, - 16,53,54,17,18,55,57,19,20,58, - 69,59,10,70,21,45,22,49,23,14, - 13,51,9,3,8,6,26,48,56,61, - 81,27,44,7,4,29,5,1,2,0, - 10,68,62,69,70,14,23,13,19,17, - 18,20,21,16,15,22,74,50,5,4, - 2,1,49,45,59,58,57,7,55,54, - 53,27,52,46,51,120,103,24,25,60, - 3,96,90,6,91,92,11,12,89,88, - 44,93,94,97,98,8,99,100,101,65, - 95,87,67,104,105,106,107,108,109,110, - 111,112,113,72,118,71,102,117,66,26, - 9,0,26,9,5,7,3,1,2,4, - 6,8,72,0 + 62,0,26,9,5,7,3,1,2,4, + 6,8,72,0,4,44,50,72,0,46, + 49,74,3,50,72,26,47,9,65,95, + 67,66,87,0,119,0,67,66,71,9, + 0,9,87,13,14,31,15,32,33,16, + 17,18,34,19,20,35,36,37,47,38, + 39,10,21,22,23,40,41,42,28,3, + 24,25,8,6,11,12,30,4,43,5, + 7,1,2,64,63,0,61,51,13,14, + 62,46,15,68,52,81,27,16,53,54, + 17,18,55,56,57,19,20,58,69,59, + 10,70,21,48,45,22,49,23,9,3, + 8,4,26,50,6,7,1,2,5,29, + 0,71,62,46,15,68,52,16,53,54, + 17,18,55,57,19,20,58,69,59,70, + 21,45,22,49,23,14,13,51,9,3, + 8,6,26,48,61,81,27,29,7,1, + 2,5,4,10,56,0,50,66,0,72, + 9,60,3,67,66,26,44,0,29,72, + 4,1,2,50,0,9,71,63,64,47, + 24,25,8,6,11,12,30,35,3,40, + 43,41,42,28,38,33,37,14,23,13, + 19,17,18,20,21,16,15,22,32,36, + 34,31,39,50,7,1,2,4,10,5, + 0,50,67,0,75,0,63,64,24,25, + 11,12,30,35,40,43,41,42,28,38, + 33,37,14,23,13,19,17,18,20,21, + 16,15,22,10,32,36,34,31,39,8, + 6,60,5,7,1,2,4,3,0,62, + 46,15,68,52,16,53,54,17,18,55, + 57,19,20,58,69,59,10,70,21,45, + 22,49,23,14,13,51,9,3,8,6, + 26,48,56,61,81,27,44,7,4,29, + 5,1,2,0,10,68,62,69,70,14, + 23,13,19,17,18,20,21,16,15,22, + 74,50,5,4,2,1,49,45,59,58, + 57,7,55,54,53,27,52,46,51,120, + 103,24,25,60,3,96,90,6,91,92, + 11,12,89,88,44,93,94,97,98,8, + 99,100,101,65,95,87,67,104,105,106, + 107,108,109,110,111,112,113,72,118,71, + 102,117,66,26,9,0,45,1,2,4, + 114,115,116,0 }; }; public final static byte asr[] = Asr.asr; @@ -1892,59 +1879,59 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface Nasb { public final static char nasb[] = {0, - 140,11,189,25,11,11,11,11,11,11, - 123,11,11,11,96,11,171,226,152,25, - 25,169,25,25,25,25,25,25,11,11, - 11,11,11,11,11,11,11,11,11,25, - 11,25,226,235,235,235,235,152,137,112, - 17,4,44,232,11,11,112,98,11,232, - 232,160,1,25,46,67,11,11,226,11, - 11,12,12,137,147,25,25,25,25,25, - 25,25,25,25,25,25,25,25,25,25, - 25,25,25,25,25,25,25,25,25,25, - 25,25,25,25,25,147,25,232,232,11, - 11,11,11,30,232,23,122,206,207,11, - 207,150,207,54,207,200,123,152,44,44, - 23,25,122,40,160,75,75,11,123,152, - 44,235,48,180,81,232,179,10,152,179, - 232,44,11,11,11,11,11,11,11,11, + 49,11,186,30,11,11,11,11,11,11, + 127,11,11,11,102,11,164,106,190,30, + 30,162,30,30,30,30,30,30,11,11, + 11,11,11,11,11,11,11,11,11,30, + 11,30,106,240,240,240,240,190,176,118, + 77,4,90,237,11,11,118,104,11,237, + 237,131,1,30,58,94,11,11,106,11, + 11,12,12,176,154,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,154,30,237,237,11, + 11,11,11,96,237,28,126,208,209,11, + 209,188,209,19,209,202,127,190,90,90, + 28,30,126,86,131,66,66,11,127,190, + 90,240,68,173,37,237,172,10,190,172, + 237,90,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11, - 11,11,11,11,11,20,10,11,11,11, - 166,152,112,112,172,112,223,112,11,11, - 112,223,152,10,11,11,164,44,11,232, - 155,112,152,67,25,235,112,51,232,11, - 10,152,91,67,25,147,147,147,147,11, - 11,23,11,38,216,112,112,73,66,73, - 112,55,10,66,20,232,11,106,11,157, - 65,20,232,63,166,81,11,10,20,232, - 232,232,232,137,137,112,38,61,152,189, - 11,11,71,209,216,73,73,183,20,55, - 61,11,11,20,112,25,11,11,75,75, - 152,106,122,157,232,20,112,77,11,147, - 166,92,11,232,232,38,67,11,123,112, - 118,108,11,11,123,79,223,61,25,55, - 38,25,25,112,10,67,232,155,175,112, - 11,63,137,25,44,92,180,112,223,112, - 114,177,189,122,152,11,25,11,87,196, - 223,123,123,10,112,157,38,77,232,44, - 189,157,180,114,125,102,108,177,67,25, - 25,10,223,223,69,232,112,11,11,116, - 116,189,125,35,11,223,11,10,10,11, - 112,69,157,191,112,11,11,112,127,102, - 10,137,230,38,11,191,210,11,55,71, - 157,235,235,85,144,11,25,11,189,11, - 11,11,145,11,55,187,189,189,55,33, - 232,232,112,112,11,118,11,112,11,11, - 11,123,11,89,11,11,11,145,234,234, - 238,11,234,189,189,11,112,235,69,191, - 112,191,189,94,11,232,132,112,112,123, - 223,11,235,232,108,232,240,189,112,11, - 232,85,132,48,25,108,189,61,191,132, - 132,223,100,116,232,232,112,145,11,145, - 189,240,108,147,145,89,61,232,112,61, - 61,100,189,11,33,33,106,25,11,240, - 189,189,232,57,189,179,145,232,240,189, - 61,145,232,57,145 + 11,11,11,11,11,53,10,11,11,11, + 181,190,118,118,165,118,211,118,11,11, + 118,211,190,10,11,11,179,90,11,237, + 219,118,190,94,30,240,118,46,237,11, + 10,190,99,94,30,154,154,154,154,11, + 11,28,11,71,224,118,118,80,93,80, + 118,20,10,93,53,237,11,112,11,221, + 92,53,237,41,181,37,11,10,53,237, + 237,237,237,176,176,118,71,64,190,186, + 11,11,22,140,224,80,80,231,53,20, + 64,11,11,53,118,30,11,11,66,66, + 190,112,126,221,237,53,118,35,11,154, + 181,100,11,237,237,71,94,11,127,118, + 122,114,11,11,127,73,211,64,30,20, + 71,30,30,118,10,94,237,219,168,118, + 11,41,176,30,90,100,173,118,211,118, + 75,170,186,126,190,11,30,11,56,198, + 211,127,127,10,118,221,71,35,237,90, + 186,221,173,75,129,147,114,170,94,30, + 30,10,211,211,24,237,118,11,11,26, + 26,186,129,43,11,211,11,10,10,11, + 118,24,221,193,118,11,11,118,135,147, + 10,176,235,71,11,193,141,11,20,22, + 221,240,240,82,151,11,30,11,186,11, + 11,11,152,11,20,184,186,186,20,84, + 237,237,118,118,11,122,11,118,11,11, + 11,127,11,17,11,11,11,152,239,239, + 214,11,239,186,186,11,118,240,24,193, + 118,193,186,110,11,237,157,118,118,127, + 211,11,240,237,114,237,216,186,118,11, + 237,82,157,68,30,114,186,64,193,157, + 157,211,120,26,237,237,118,152,11,152, + 186,216,114,154,152,17,64,237,118,64, + 64,120,186,11,84,84,112,30,11,216, + 186,186,237,60,186,172,152,237,216,186, + 64,152,237,60,152 }; }; public final static char nasb[] = Nasb.nasb; @@ -1952,31 +1939,31 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface Nasr { public final static char nasr[] = {0, - 3,13,8,6,147,145,120,144,143,2, - 0,6,2,8,134,0,5,186,0,4, - 3,0,45,5,6,8,2,13,0,131, - 65,0,57,0,5,64,0,61,0,13, - 2,8,6,78,0,171,0,5,29,0, - 5,173,0,6,1,0,13,2,8,6, - 64,0,138,0,131,2,65,0,123,0, - 151,0,111,0,67,0,136,0,184,0, - 65,133,132,0,156,0,182,0,113,0, - 2,114,0,176,0,5,45,167,0,150, - 0,165,6,164,0,97,96,63,6,2, - 8,5,0,154,0,110,0,2,63,8, - 5,91,6,0,155,0,5,48,40,174, - 0,105,5,48,68,0,5,99,0,5, - 40,170,0,64,48,69,5,40,0,3, - 6,2,44,0,6,91,24,5,0,96, - 97,5,0,97,96,6,56,0,6,13, - 8,2,3,0,97,96,63,56,6,8, - 2,0,6,104,183,0,5,40,39,0, - 5,48,68,79,0,6,104,161,0,2, - 6,120,116,117,118,13,88,0,39,6, - 2,8,5,153,0,5,48,68,104,46, - 6,0,2,54,0,5,45,40,0,45, - 5,34,0,115,5,45,0,24,175,5, - 102,0 + 3,13,8,6,148,146,120,145,144,2, + 0,6,2,8,135,0,113,0,6,1, + 0,152,0,124,0,110,0,45,5,6, + 8,2,13,0,137,0,65,134,133,0, + 139,0,5,64,0,5,174,0,5,40, + 171,0,4,3,0,183,0,172,0,13, + 2,8,6,64,0,67,0,5,29,0, + 61,0,185,0,155,0,5,187,0,111, + 0,157,0,57,0,13,2,8,6,78, + 0,132,2,65,0,132,65,0,2,114, + 0,5,45,168,0,5,45,40,0,177, + 0,97,96,63,6,2,8,5,0,151, + 0,2,63,8,5,91,6,0,156,0, + 96,97,5,0,5,48,40,175,0,39, + 6,2,8,5,154,0,166,6,165,0, + 64,48,69,5,40,0,105,5,48,68, + 0,6,13,8,2,3,0,97,96,63, + 56,6,8,2,0,5,99,0,97,96, + 6,56,0,5,40,39,0,3,6,2, + 44,0,5,48,68,79,0,6,104,162, + 0,2,6,120,116,117,118,13,88,0, + 2,54,0,24,176,5,102,0,6,91, + 24,5,0,5,48,68,104,46,6,0, + 6,104,184,0,45,5,34,0,115,5, + 45,0 }; }; public final static char nasr[] = Nasr.nasr; @@ -2016,14 +2003,14 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 203,213,149,160,209,210,211,0,0,0, 0,0,208,221,181,0,0,0,212,0, 0,0,242,150,177,191,192,193,194,195, - 197,200,0,215,218,220,238,0,241,0, - 0,143,144,147,0,0,157,159,0,173, - 0,183,184,185,186,187,190,0,196,198, - 0,199,204,0,216,217,0,222,225,227, - 229,0,232,233,234,0,236,237,240,126, - 0,153,156,176,179,201,214,219,0,223, - 224,226,228,0,230,231,243,244,0,0, - 0,0,0,0 + 197,200,0,0,215,218,220,238,0,241, + 0,0,143,144,147,0,0,157,159,0, + 173,0,183,184,185,186,187,190,0,196, + 198,0,199,204,0,216,217,0,222,225, + 227,229,0,232,233,234,0,236,237,240, + 126,0,153,156,176,179,201,214,219,0, + 223,224,226,228,0,230,231,243,244,0, + 0,0,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -2071,16 +2058,16 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public final static char scopeLhs[] = { 46,18,18,73,18,18,18,18,73,82, 47,87,86,118,66,52,73,72,46,18, - 73,20,3,7,161,161,158,116,46,85, - 118,117,119,53,47,134,128,73,18,18, - 128,98,58,130,76,164,161,158,125,117, - 117,119,175,50,57,138,19,18,18,18, - 18,18,12,113,158,125,73,72,72,38, - 134,72,18,18,18,18,98,73,20,165, - 161,176,96,103,60,67,59,153,77,119, - 74,70,139,138,171,134,17,158,119,115, - 22,126,126,56,134,134,73,46,158,71, - 132,44,132,44,164,115,116,46,46,58 + 73,20,3,7,162,162,159,116,46,85, + 118,117,119,53,47,135,129,73,18,18, + 129,98,58,131,76,165,162,159,126,117, + 117,119,176,50,57,139,19,18,18,18, + 18,18,12,113,159,126,73,72,72,38, + 135,72,18,18,18,18,98,73,20,166, + 162,177,96,103,60,67,59,154,77,119, + 74,70,140,139,172,135,17,159,119,115, + 22,127,127,56,135,135,73,46,159,71, + 133,44,133,44,165,115,116,46,46,58 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -2126,25 +2113,25 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface ScopeRhs { public final static char scopeRhs[] = {0, - 312,3,47,0,128,0,311,3,119,0, - 128,175,0,129,181,74,0,217,0,290, - 129,44,128,0,21,0,292,129,44,29, + 313,3,47,0,128,0,312,3,119,0, + 128,175,0,129,181,74,0,217,0,291, + 129,44,128,0,21,0,293,129,44,29, 0,21,55,0,34,134,0,21,55,0, - 0,292,129,44,29,192,0,21,131,0, - 290,129,44,132,0,178,130,0,140,0, - 223,3,289,0,289,0,2,0,128,0, + 0,293,129,44,29,192,0,21,131,0, + 291,129,44,132,0,178,130,0,140,0, + 223,3,290,0,290,0,2,0,128,0, 178,130,228,0,178,130,45,228,0,178, - 130,308,45,0,133,189,168,130,0,130, + 130,309,45,0,133,189,168,130,0,130, 0,189,168,130,0,136,130,0,172,0, - 304,129,172,0,129,172,0,223,130,0, + 305,129,172,0,129,172,0,223,130,0, 168,244,0,139,0,0,0,137,0,0, - 0,303,129,50,250,0,129,0,250,0, - 3,0,0,129,0,302,129,50,0,45, - 129,0,153,3,0,129,279,278,129,74, - 277,172,0,278,129,74,277,172,0,216, - 0,217,0,277,172,0,98,0,0,216, + 0,304,129,50,251,0,129,0,251,0, + 3,0,0,129,0,303,129,50,0,45, + 129,0,153,3,0,129,280,279,129,74, + 278,172,0,279,129,74,278,172,0,216, + 0,217,0,278,172,0,98,0,0,216, 0,217,0,204,98,0,0,216,0,217, - 0,278,129,277,172,0,216,0,204,0, + 0,279,129,278,172,0,216,0,204,0, 0,216,0,231,129,3,0,128,0,0, 0,0,0,231,129,3,220,0,227,3, 0,215,129,0,209,0,149,0,168,130, @@ -2152,17 +2139,17 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 231,129,3,183,0,183,0,2,0,0, 128,0,0,0,0,0,201,3,0,202, 0,230,129,50,28,27,0,178,130,56, - 48,0,198,130,0,133,178,130,275,48, - 0,178,130,275,48,0,178,130,67,125, + 48,0,198,130,0,133,178,130,276,48, + 0,178,130,276,48,0,178,130,67,125, 56,0,230,129,50,56,0,230,129,50, - 122,56,0,230,129,50,126,56,0,272, - 129,50,125,68,0,272,129,50,68,0, + 122,56,0,230,129,50,126,56,0,273, + 129,50,125,68,0,273,129,50,68,0, 178,130,68,0,137,0,189,178,130,244, 0,139,0,178,130,244,0,189,168,130, - 10,0,168,130,10,0,95,139,0,265, - 129,148,0,265,129,172,0,164,85,0, - 226,163,226,299,3,82,0,128,174,0, - 226,299,3,82,0,130,0,128,174,0, + 10,0,168,130,10,0,95,139,0,266, + 129,148,0,266,129,172,0,164,85,0, + 226,163,226,300,3,82,0,128,174,0, + 226,300,3,82,0,130,0,128,174,0, 226,163,226,163,226,3,82,0,226,163, 226,3,82,0,226,3,82,0,130,0, 130,0,128,174,0,164,3,75,193,80, @@ -2171,11 +2158,11 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 34,172,0,169,0,178,34,172,0,239, 3,86,0,193,158,239,3,84,0,64, 174,0,239,3,84,0,128,174,64,174, - 0,298,129,50,0,164,0,218,77,0, + 0,299,129,50,0,164,0,218,77,0, 31,0,164,117,161,0,31,172,0,179, 3,0,128,152,0,223,3,0,218,60, - 262,0,164,60,0,179,3,295,64,130, - 0,128,0,0,0,0,295,64,130,0, + 263,0,164,60,0,179,3,296,64,130, + 0,128,0,0,0,0,296,64,130,0, 2,148,128,0,0,0,0,179,3,35, 0,150,0,127,29,168,130,0,32,150, 0,95,139,32,150,0,217,178,130,0, @@ -2187,10 +2174,10 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 164,3,65,179,44,32,0,179,44,32, 0,223,3,127,189,168,130,10,0,127, 189,168,130,10,0,139,2,0,128,0, - 223,3,126,255,168,130,10,0,255,168, + 223,3,126,256,168,130,10,0,256,168, 130,10,0,137,2,0,128,0,223,3, 137,0,223,3,142,0,164,60,142,0, - 257,0,32,0,32,143,0,167,0,136, + 258,0,32,0,32,143,0,167,0,136, 0,164,3,0 }; }; @@ -2199,37 +2186,37 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface ScopeState { public final static char scopeState[] = {0, - 2464,0,4864,0,4884,4858,4857,0,2956,1497, - 2344,1411,0,3141,2816,1014,0,3128,2549,0, - 3787,3749,3695,3336,2524,3657,3603,3565,3511,718, - 3473,3015,2928,3135,2894,0,4783,3666,3663,0, - 2309,1184,0,4181,3484,0,4558,4484,0,2320, - 1000,0,4558,4545,4524,3436,4484,2800,4221,3199, - 4452,3103,4344,4374,2878,2722,2644,0,4585,4573, - 0,4585,4573,3232,3167,4254,3070,2942,4244,4190, - 4126,4117,3787,3749,3695,3657,3603,3565,3511,3473, - 3015,2928,0,4585,4573,3232,3167,4254,3070,2942, - 4244,4190,4126,4117,0,2681,1354,0,3103,4545, - 4410,4524,3436,3483,2878,4128,3485,3171,3077,3230, - 935,3183,839,0,648,570,0,828,0,1806, - 1782,1481,1128,3436,3230,2800,2722,2644,3504,3126, - 0,4357,527,2440,0,4774,4762,4755,4737,4717, - 4692,4680,4672,4660,4655,4829,4810,4793,4478,4624, - 4592,4396,4365,3266,3144,3030,2534,2234,0,4774, - 4762,3095,2794,2715,4755,4737,4717,2539,1139,4692, - 4680,4672,2869,4660,2229,4655,2140,2051,4829,1130, - 2690,1071,1020,2459,4810,3301,4793,2056,4478,4624, - 4592,777,4396,661,4365,1078,3266,3144,4357,3030, - 2440,2534,2234,1009,994,787,721,846,2800,4221, - 3199,4452,3103,4558,4545,4344,4524,3436,4374,2878, - 2722,4484,2644,878,862,648,570,621,4094,4071, - 2240,2279,2349,2315,2411,2382,583,2748,2657,2616, - 2588,2496,2465,3412,3388,3364,2904,2826,4048,4025, - 4002,3979,3956,3933,3910,3887,3864,3339,3449,1930, - 2190,2151,2101,2062,2012,1235,1190,1973,1145,901, - 1887,799,731,675,1844,1801,1758,1715,1672,1629, - 1586,1543,1500,1457,1414,527,1371,1325,1084,1025, - 951,1280,0 + 2541,0,4397,0,4854,4846,4844,0,2788,1856, + 608,1762,0,2758,2669,649,0,3141,3008,0, + 3810,3772,3718,3088,2690,3664,3555,3517,3463,1838, + 3425,3011,2973,2974,2847,0,4394,2667,3553,0, + 1235,711,0,4331,4615,0,3431,2979,0,1794, + 763,0,3431,4536,4508,3388,2979,2802,3632,4365, + 4472,2772,4244,4444,2815,2694,2616,0,3678,4554, + 0,3678,4554,3208,3144,4277,3135,3071,4267,4213, + 4149,4140,3810,3772,3718,3664,3555,3517,3463,3425, + 3011,2973,0,3678,4554,3208,3144,4277,3135,3071, + 4267,4213,4149,4140,0,994,716,0,2772,4536, + 3616,4508,3388,4556,2815,3524,3247,1914,4552,3452, + 664,2224,892,0,997,571,0,950,0,2684, + 2593,1383,1002,3388,3452,2802,2694,2616,3067,2903, + 0,4378,528,2411,0,4778,4758,4753,4746,4741, + 4686,4671,4666,4649,4586,4833,4823,4813,3655,4581, + 4386,3267,3242,2842,2837,3617,3234,2505,0,4778, + 4758,3649,3279,2854,4753,4746,4741,2685,2516,4686, + 4671,4666,2662,4649,3125,4586,3052,2909,4833,2418, + 2155,2237,2150,2430,4823,2510,4813,1934,3655,4581, + 4386,1145,3267,839,3242,852,2842,2837,4378,3617, + 2411,3234,2505,2061,1134,1074,723,650,2802,3632, + 4365,4472,2772,3431,4536,4244,4508,3388,4444,2815, + 2694,2979,2616,1013,826,997,571,622,4117,4094, + 2200,2250,2320,2286,2382,2353,584,2720,2629,2588, + 2560,2467,2436,3364,3340,3090,2946,2920,4071,4048, + 4025,4002,3979,3956,3933,3910,3887,3315,3401,1940, + 2161,2111,2072,2022,1983,1241,1195,858,1150,904, + 1890,1851,733,677,1808,1765,1722,1679,1636,1593, + 1550,1507,1464,1421,1378,528,1332,783,1088,1029, + 954,1286,0 }; }; public final static char scopeState[] = ScopeState.scopeState; @@ -2237,7 +2224,7 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public interface InSymb { public final static char inSymb[] = {0, - 0,294,164,129,264,39,31,34,36,32, + 0,295,164,129,265,39,31,34,36,32, 10,137,126,128,7,132,4,3,130,35, 30,5,12,11,6,8,25,24,142,147, 150,149,152,151,156,155,159,157,160,47, @@ -2248,48 +2235,48 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse 91,6,94,93,65,44,88,89,8,98, 97,100,99,101,113,112,111,110,109,108, 107,106,105,104,67,117,102,179,164,179, - 179,179,179,168,223,129,129,266,267,250, - 268,244,269,68,270,271,10,130,60,60, + 179,179,179,168,223,129,129,267,268,251, + 269,244,270,68,271,272,10,130,60,60, 129,158,129,60,3,221,220,137,10,130, - 60,295,3,189,4,179,29,5,130,29, + 60,296,3,189,4,179,29,5,130,29, 223,164,149,149,147,147,147,151,151,151, 151,150,150,155,152,152,157,156,159,164, - 160,65,65,65,65,189,255,290,135,293, + 160,65,65,65,65,189,256,291,135,294, 215,130,6,50,168,234,130,127,126,125, - 50,130,130,178,168,290,215,218,161,227, - 129,3,130,168,202,3,296,169,153,257, + 50,130,130,178,168,291,215,218,161,227, + 129,3,130,168,202,3,297,169,153,258, 189,130,178,168,72,3,3,3,3,127, 126,66,168,129,129,127,126,129,178,129, 50,129,178,168,29,231,232,148,233,129, 168,29,179,129,129,4,217,5,29,164, - 164,164,164,3,3,6,185,303,130,170, - 228,192,48,172,305,129,129,72,189,129, - 272,125,273,189,158,67,227,201,187,183, - 130,3,129,66,231,189,158,259,262,60, - 180,4,127,223,223,129,168,29,275,277, - 129,3,183,307,228,45,130,272,67,66, + 164,164,164,3,3,6,185,304,130,170, + 228,192,48,172,306,129,129,72,189,129, + 273,125,274,189,158,67,227,201,187,183, + 130,3,129,66,231,189,158,260,263,60, + 180,4,127,223,223,129,168,29,276,278, + 129,3,183,308,228,45,130,273,67,66, 129,67,67,3,178,168,201,129,215,158, 127,129,3,60,164,4,189,44,130,74, - 129,215,304,129,130,126,72,284,201,66, - 130,45,308,178,224,129,129,259,223,218, - 133,129,178,129,278,72,66,215,168,72, - 67,178,130,130,129,231,224,292,29,10, - 62,133,278,50,288,130,289,178,178,47, - 158,129,66,65,44,234,234,279,129,66, + 129,215,305,129,130,126,72,285,201,66, + 130,45,309,178,224,129,129,260,223,218, + 133,129,178,129,279,72,66,215,168,72, + 67,178,130,130,129,231,224,293,29,10, + 62,133,279,50,289,130,290,178,178,47, + 158,129,66,65,44,234,234,280,129,66, 178,3,3,129,27,29,172,61,56,48, - 129,67,67,129,298,79,77,1,164,86, + 129,67,67,129,299,79,77,1,164,86, 84,82,80,75,83,85,78,76,56,74, - 223,312,224,28,44,129,3,50,122,126, - 125,56,292,280,119,9,218,72,3,3, + 223,313,224,28,44,129,3,50,122,126, + 125,56,293,281,119,9,218,72,3,3, 3,193,3,125,164,125,181,66,129,129, - 50,65,265,201,276,28,129,50,50,67, - 130,65,3,239,169,239,299,226,148,75, + 50,65,266,201,277,28,129,50,50,67, + 130,65,3,239,169,239,300,226,148,75, 239,129,129,3,67,66,158,230,229,129, - 129,130,178,62,95,311,169,158,201,158, - 226,163,129,3,158,280,230,153,50,230, - 230,178,274,234,158,158,129,67,193,163, - 226,265,164,129,274,67,121,226,163,158, - 302,158,226,66,158 + 129,130,178,62,95,312,169,158,201,158, + 226,163,129,3,158,281,230,153,50,230, + 230,178,275,234,158,158,129,67,193,163, + 226,266,164,129,275,67,121,226,163,158, + 303,158,226,66,158 }; }; public final static char inSymb[] = InSymb.inSymb; @@ -2502,7 +2489,7 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse "enumerator_definition", "namespace_name", "init_declarator_list", - "init_declarator", + "init_declarator_complete", "initializer", "direct_declarator", "ptr_operator_seq", @@ -2568,18 +2555,18 @@ public class CPPExpressionStatementParserprs implements lpg.lpgjavaruntime.Parse public final static int NUM_STATES = 525, NT_OFFSET = 124, - LA_STATE_OFFSET = 5920, + LA_STATE_OFFSET = 5851, MAX_LA = 2147483647, - NUM_RULES = 526, - NUM_NONTERMINALS = 194, - NUM_SYMBOLS = 318, + NUM_RULES = 527, + NUM_NONTERMINALS = 195, + NUM_SYMBOLS = 319, SEGMENT_SIZE = 8192, - START_STATE = 3011, + START_STATE = 817, IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 123, EOLT_SYMBOL = 123, - ACCEPT_ACTION = 5041, - ERROR_ACTION = 5394; + ACCEPT_ACTION = 4977, + ERROR_ACTION = 5324; public final static boolean BACKTRACK = true; diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java index d5cb5f89fb9..765d6e392c7 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java @@ -213,7 +213,7 @@ public int getKind(int i) { int kind = super.getKind(i); // There used to be a special token kind for zero used to parser pure virtual function declarations. - // But it turned out to be easier to just parse them as an init_declarator and programaticaly check + // But it turned out to be easier to just parse them as an init_ declarator and programaticaly check // for pure virtual, see consumeMemberDeclaratorWithInitializer(). //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$ @@ -1214,14 +1214,14 @@ public CPPNoCastExpressionParser(String[] mapFrom) { // constructor // Rule 220: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; // case 220: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, true); break; } // // Rule 221: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; // case 221: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // @@ -1442,660 +1442,667 @@ public CPPNoCastExpressionParser(String[] mapFrom) { // constructor } // - // Rule 311: init_declarator ::= declarator initializer + // Rule 310: init_declarator_complete ::= init_declarator // - case 311: { action.builder. + case 310: { action.builder. + consumeInitDeclaratorComplete(); break; + } + + // + // Rule 312: init_declarator ::= declarator initializer + // + case 312: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 313: declarator ::= ptr_operator_seq direct_declarator + // Rule 314: declarator ::= ptr_operator_seq direct_declarator // - case 313: { action.builder. + case 314: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 315: function_declarator ::= ptr_operator_seq direct_declarator + // Rule 316: function_declarator ::= ptr_operator_seq direct_declarator // - case 315: { action.builder. + case 316: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 319: basic_direct_declarator ::= declarator_id_name + // Rule 320: basic_direct_declarator ::= declarator_id_name // - case 319: { action.builder. + case 320: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 320: basic_direct_declarator ::= ( declarator ) + // Rule 321: basic_direct_declarator ::= ( declarator ) // - case 320: { action.builder. + case 321: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 321: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 322: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 321: { action.builder. + case 322: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier - // - case 322: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 323: array_direct_declarator ::= array_direct_declarator array_modifier // case 323: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 324: array_modifier ::= [ constant_expression ] + // Rule 324: array_direct_declarator ::= basic_direct_declarator array_modifier // case 324: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 325: array_modifier ::= [ constant_expression ] + // + case 325: { action.builder. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 325: array_modifier ::= [ ] + // Rule 326: array_modifier ::= [ ] // - case 325: { action.builder. + case 326: { action.builder. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 326: ptr_operator ::= * cv_qualifier_seq_opt + // Rule 327: ptr_operator ::= * cv_qualifier_seq_opt // - case 326: { action.builder. + case 327: { action.builder. consumePointer(); break; } // - // Rule 327: ptr_operator ::= & + // Rule 328: ptr_operator ::= & // - case 327: { action.builder. + case 328: { action.builder. consumeReferenceOperator(); break; } // - // Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt + // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt // - case 328: { action.builder. + case 329: { action.builder. consumePointerToMember(); break; } // - // Rule 334: cv_qualifier ::= const - // - case 334: { action.builder. - consumeDeclSpecToken(); break; - } - - // - // Rule 335: cv_qualifier ::= volatile + // Rule 335: cv_qualifier ::= const // case 335: { action.builder. consumeDeclSpecToken(); break; } // - // Rule 337: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 336: cv_qualifier ::= volatile // - case 337: { action.builder. + case 336: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 338: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // + case 338: { action.builder. consumeQualifiedId(false); break; } // - // Rule 338: type_id ::= type_specifier_seq + // Rule 339: type_id ::= type_specifier_seq // - case 338: { action.builder. + case 339: { action.builder. consumeTypeId(false); break; } // - // Rule 339: type_id ::= type_specifier_seq abstract_declarator + // Rule 340: type_id ::= type_specifier_seq abstract_declarator // - case 339: { action.builder. + case 340: { action.builder. consumeTypeId(true); break; } // - // Rule 342: abstract_declarator ::= ptr_operator_seq + // Rule 343: abstract_declarator ::= ptr_operator_seq // - case 342: { action.builder. + case 343: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 343: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // Rule 344: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator // - case 343: { action.builder. + case 344: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 347: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 348: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 347: { action.builder. + case 348: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 348: array_direct_abstract_declarator ::= array_modifier + // Rule 349: array_direct_abstract_declarator ::= array_modifier // - case 348: { action.builder. + case 349: { action.builder. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 349: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier - // - case 349: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 350: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 350: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // case 350: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 351: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 351: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // case 351: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 352: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 352: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 352: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 353: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 352: { action.builder. + case 353: { action.builder. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt ... - // - case 353: { action.builder. - consumePlaceHolder(); break; - } - - // - // Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt ... // case 354: { action.builder. - consumeEmpty(); break; - } - - // - // Rule 355: parameter_declaration_clause ::= parameter_declaration_list , ... - // - case 355: { action.builder. consumePlaceHolder(); break; } // - // Rule 361: abstract_declarator_opt ::= $Empty + // Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 361: { action.builder. + case 355: { action.builder. consumeEmpty(); break; } // - // Rule 362: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 356: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 356: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 362: abstract_declarator_opt ::= $Empty // case 362: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 363: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 363: { action.builder. consumeParameterDeclaration(); break; } // - // Rule 363: parameter_declaration ::= declaration_specifiers + // Rule 364: parameter_declaration ::= declaration_specifiers // - case 363: { action.builder. + case 364: { action.builder. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 365: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 366: parameter_init_declarator ::= declarator = parameter_initializer // - case 365: { action.builder. + case 366: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 367: parameter_init_declarator ::= abstract_declarator = parameter_initializer - // - case 367: { action.builder. - consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 368: parameter_init_declarator ::= = parameter_initializer + // Rule 368: parameter_init_declarator ::= abstract_declarator = parameter_initializer // case 368: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 369: parameter_init_declarator ::= = parameter_initializer + // + case 369: { action.builder. consumeDeclaratorWithInitializer(false); break; } // - // Rule 369: parameter_initializer ::= assignment_expression + // Rule 370: parameter_initializer ::= assignment_expression // - case 369: { action.builder. + case 370: { action.builder. consumeInitializer(); break; } // - // Rule 370: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // Rule 371: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body // - case 370: { action.builder. + case 371: { action.builder. consumeFunctionDefinition(false); break; } // - // Rule 371: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // Rule 372: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq // - case 371: { action.builder. + case 372: { action.builder. consumeFunctionDefinition(true); break; } // - // Rule 374: initializer ::= ( expression_list ) + // Rule 375: initializer ::= ( expression_list ) // - case 374: { action.builder. + case 375: { action.builder. consumeInitializerConstructor(); break; } // - // Rule 375: initializer_clause ::= assignment_expression + // Rule 376: initializer_clause ::= assignment_expression // - case 375: { action.builder. + case 376: { action.builder. consumeInitializer(); break; } // - // Rule 376: initializer_clause ::= { initializer_list , } - // - case 376: { action.builder. - consumeInitializerList(); break; - } - - // - // Rule 377: initializer_clause ::= { initializer_list } + // Rule 377: initializer_clause ::= { initializer_list , } // case 377: { action.builder. consumeInitializerList(); break; } // - // Rule 378: initializer_clause ::= { } + // Rule 378: initializer_clause ::= { initializer_list } // case 378: { action.builder. consumeInitializerList(); break; } // - // Rule 383: class_specifier ::= class_head { member_declaration_list_opt } + // Rule 379: initializer_clause ::= { } // - case 383: { action.builder. + case 379: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 384: class_specifier ::= class_head { member_declaration_list_opt } + // + case 384: { action.builder. consumeClassSpecifier(); break; } // - // Rule 384: class_head ::= class_keyword identifier_name_opt base_clause_opt - // - case 384: { action.builder. - consumeClassHead(false); break; - } - - // - // Rule 385: class_head ::= class_keyword template_id_name base_clause_opt + // Rule 385: class_head ::= class_keyword identifier_name_opt base_clause_opt // case 385: { action.builder. consumeClassHead(false); break; } // - // Rule 386: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt + // Rule 386: class_head ::= class_keyword template_id_name base_clause_opt // case 386: { action.builder. - consumeClassHead(true); break; + consumeClassHead(false); break; } // - // Rule 387: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt + // Rule 387: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt // case 387: { action.builder. consumeClassHead(true); break; } // - // Rule 389: identifier_name_opt ::= $Empty + // Rule 388: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt // - case 389: { action.builder. + case 388: { action.builder. + consumeClassHead(true); break; + } + + // + // Rule 390: identifier_name_opt ::= $Empty + // + case 390: { action.builder. consumeEmpty(); break; } // - // Rule 393: visibility_label ::= access_specifier_keyword : + // Rule 394: visibility_label ::= access_specifier_keyword : // - case 393: { action.builder. + case 394: { action.builder. consumeVisibilityLabel(); break; } // - // Rule 394: member_declaration ::= declaration_specifiers_opt member_declarator_list ; - // - case 394: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 395: member_declaration ::= declaration_specifiers_opt ; + // Rule 395: member_declaration ::= declaration_specifiers_opt member_declarator_list ; // case 395: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, true); break; } // - // Rule 398: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 396: member_declaration ::= declaration_specifiers_opt ; // - case 398: { action.builder. + case 396: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 399: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 399: { action.builder. consumeMemberDeclarationQualifiedId(); break; } // - // Rule 402: member_declaration ::= ERROR_TOKEN + // Rule 403: member_declaration ::= ERROR_TOKEN // - case 402: { action.builder. + case 403: { action.builder. consumeDeclarationProblem(); break; } // - // Rule 410: member_declarator ::= declarator constant_initializer + // Rule 411: member_declarator ::= declarator constant_initializer // - case 410: { action.builder. + case 411: { action.builder. consumeMemberDeclaratorWithInitializer(); break; } // - // Rule 411: member_declarator ::= bit_field_declarator : constant_expression + // Rule 412: member_declarator ::= bit_field_declarator : constant_expression // - case 411: { action.builder. + case 412: { action.builder. consumeBitField(true); break; } // - // Rule 412: member_declarator ::= : constant_expression + // Rule 413: member_declarator ::= : constant_expression // - case 412: { action.builder. + case 413: { action.builder. consumeBitField(false); break; } // - // Rule 413: bit_field_declarator ::= identifier_name + // Rule 414: bit_field_declarator ::= identifier_name // - case 413: { action.builder. + case 414: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 414: constant_initializer ::= = constant_expression + // Rule 415: constant_initializer ::= = constant_expression // - case 414: { action.builder. + case 415: { action.builder. consumeInitializer(); break; } // - // Rule 420: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 421: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // - case 420: { action.builder. + case 421: { action.builder. consumeBaseSpecifier(false, false); break; } // - // Rule 421: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name - // - case 421: { action.builder. - consumeBaseSpecifier(true, true); break; - } - - // - // Rule 422: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 422: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // case 422: { action.builder. consumeBaseSpecifier(true, true); break; } // - // Rule 423: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 423: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // case 423: { action.builder. + consumeBaseSpecifier(true, true); break; + } + + // + // Rule 424: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 424: { action.builder. consumeBaseSpecifier(true, false); break; } // - // Rule 424: access_specifier_keyword ::= private - // - case 424: { action.builder. - consumeAccessKeywordToken(); break; - } - - // - // Rule 425: access_specifier_keyword ::= protected + // Rule 425: access_specifier_keyword ::= private // case 425: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 426: access_specifier_keyword ::= public + // Rule 426: access_specifier_keyword ::= protected // case 426: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 428: access_specifier_keyword_opt ::= $Empty + // Rule 427: access_specifier_keyword ::= public // - case 428: { action.builder. + case 427: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 429: access_specifier_keyword_opt ::= $Empty + // + case 429: { action.builder. consumeEmpty(); break; } // - // Rule 429: conversion_function_id_name ::= operator conversion_type_id + // Rule 430: conversion_function_id_name ::= operator conversion_type_id // - case 429: { action.builder. + case 430: { action.builder. consumeConversionName(); break; } // - // Rule 430: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 431: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 430: { action.builder. + case 431: { action.builder. consumeTypeId(true); break; } // - // Rule 431: conversion_type_id ::= type_specifier_seq + // Rule 432: conversion_type_id ::= type_specifier_seq // - case 431: { action.builder. + case 432: { action.builder. consumeTypeId(false); break; } // - // Rule 432: conversion_declarator ::= ptr_operator_seq + // Rule 433: conversion_declarator ::= ptr_operator_seq // - case 432: { action.builder. + case 433: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 438: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 439: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 438: { action.builder. + case 439: { action.builder. consumeConstructorChainInitializer(); break; } // - // Rule 439: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 440: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 439: { action.builder. + case 440: { action.builder. consumeQualifiedId(false); break; } // - // Rule 442: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // Rule 443: operator_function_id_name ::= operator_id_name < template_argument_list_opt > // - case 442: { action.builder. + case 443: { action.builder. consumeTemplateId(); break; } // - // Rule 443: operator_id_name ::= operator overloadable_operator + // Rule 444: operator_id_name ::= operator overloadable_operator // - case 443: { action.builder. + case 444: { action.builder. consumeOperatorName(); break; } // - // Rule 486: template_declaration ::= export_opt template < template_parameter_list > declaration + // Rule 487: template_declaration ::= export_opt template < template_parameter_list > declaration // - case 486: { action.builder. + case 487: { action.builder. consumeTemplateDeclaration(); break; } // - // Rule 487: export_opt ::= export + // Rule 488: export_opt ::= export // - case 487: { action.builder. + case 488: { action.builder. consumePlaceHolder(); break; } // - // Rule 488: export_opt ::= $Empty + // Rule 489: export_opt ::= $Empty // - case 488: { action.builder. + case 489: { action.builder. consumeEmpty(); break; } // - // Rule 493: type_parameter ::= class identifier_name_opt - // - case 493: { action.builder. - consumeSimpleTypeTemplateParameter(false); break; - } - - // - // Rule 494: type_parameter ::= class identifier_name_opt = type_id + // Rule 494: type_parameter ::= class identifier_name_opt // case 494: { action.builder. - consumeSimpleTypeTemplateParameter(true); break; - } - - // - // Rule 495: type_parameter ::= typename identifier_name_opt - // - case 495: { action.builder. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 496: type_parameter ::= typename identifier_name_opt = type_id + // Rule 495: type_parameter ::= class identifier_name_opt = type_id // - case 496: { action.builder. + case 495: { action.builder. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 497: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // Rule 496: type_parameter ::= typename identifier_name_opt + // + case 496: { action.builder. + consumeSimpleTypeTemplateParameter(false); break; + } + + // + // Rule 497: type_parameter ::= typename identifier_name_opt = type_id // case 497: { action.builder. + consumeSimpleTypeTemplateParameter(true); break; + } + + // + // Rule 498: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // + case 498: { action.builder. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 498: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // Rule 499: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression // - case 498: { action.builder. + case 499: { action.builder. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 499: template_id_name ::= template_identifier < template_argument_list_opt > + // Rule 500: template_id_name ::= template_identifier < template_argument_list_opt > // - case 499: { action.builder. + case 500: { action.builder. consumeTemplateId(); break; } // - // Rule 508: explicit_instantiation ::= template declaration + // Rule 509: explicit_instantiation ::= template declaration // - case 508: { action.builder. + case 509: { action.builder. consumeTemplateExplicitInstantiation(); break; } // - // Rule 509: explicit_specialization ::= template < > declaration + // Rule 510: explicit_specialization ::= template < > declaration // - case 509: { action.builder. + case 510: { action.builder. consumeTemplateExplicitSpecialization(); break; } // - // Rule 510: try_block ::= try compound_statement handler_seq + // Rule 511: try_block ::= try compound_statement handler_seq // - case 510: { action.builder. + case 511: { action.builder. consumeStatementTryBlock(); break; } // - // Rule 513: handler ::= catch ( exception_declaration ) compound_statement + // Rule 514: handler ::= catch ( exception_declaration ) compound_statement // - case 513: { action.builder. + case 514: { action.builder. consumeStatementCatchHandler(false); break; } // - // Rule 514: handler ::= catch ( ... ) compound_statement + // Rule 515: handler ::= catch ( ... ) compound_statement // - case 514: { action.builder. + case 515: { action.builder. consumeStatementCatchHandler(true); break; } // - // Rule 515: exception_declaration ::= type_specifier_seq declarator - // - case 515: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 516: exception_declaration ::= type_specifier_seq abstract_declarator + // Rule 516: exception_declaration ::= type_specifier_seq declarator // case 516: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 517: exception_declaration ::= type_specifier_seq + // Rule 517: exception_declaration ::= type_specifier_seq abstract_declarator // case 517: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 525: no_cast_start ::= ERROR_TOKEN + // Rule 518: exception_declaration ::= type_specifier_seq // - case 525: { action.builder. + case 518: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 526: no_cast_start ::= ERROR_TOKEN + // + case 526: { action.builder. consumeExpressionProblem(); break; } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java index ec836af0177..28e7be5b912 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java @@ -68,476 +68,471 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 4,5,6,1,3,1,0,1,3,1, 1,1,1,1,6,6,5,7,6,1, 0,6,5,6,4,1,3,1,0,1, - 2,1,3,1,3,1,1,1,1,3, - 9,2,2,3,2,3,1,5,1,2, - 2,1,0,1,1,1,3,1,2,1, - 1,2,3,1,1,1,3,1,2,2, - 9,8,2,1,3,1,3,1,0,1, - 0,2,1,1,3,1,3,2,1,5, - 8,1,2,3,1,5,4,3,1,3, - 1,1,5,4,4,5,5,1,0,1, - 1,1,2,4,2,2,1,5,1,1, - 1,1,1,2,1,0,1,3,1,2, - 3,2,1,2,2,1,0,1,3,3, - 5,5,4,1,1,1,1,0,2,2, - 1,2,2,1,0,1,3,4,3,1, - 1,5,2,1,1,3,3,1,1,1, + 1,2,1,3,1,3,1,1,1,1, + 3,9,2,2,3,2,3,1,5,1, + 2,2,1,0,1,1,1,3,1,2, + 1,1,2,3,1,1,1,3,1,2, + 2,9,8,2,1,3,1,3,1,0, + 1,0,2,1,1,3,1,3,2,1, + 5,8,1,2,3,1,5,4,3,1, + 3,1,1,5,4,4,5,5,1,0, + 1,1,1,2,4,2,2,1,5,1, + 1,1,1,1,2,1,0,1,3,1, + 2,3,2,1,2,2,1,0,1,3, + 3,5,5,4,1,1,1,1,0,2, + 2,1,2,2,1,0,1,3,4,3, + 1,1,5,2,1,1,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,2,2,7,1,0,1,3, - 1,1,2,4,2,4,7,9,5,1, - 1,3,1,0,1,1,1,2,4,4, - 1,2,5,5,3,3,1,4,3,1, - 0,1,3,1,1,-107,0,0,0,0, - -336,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-49, + 1,1,1,1,2,2,7,1,0,1, + 3,1,1,2,4,2,4,7,9,5, + 1,1,3,1,0,1,1,1,2,4, + 4,1,2,5,5,3,3,1,4,3, + 1,0,1,3,1,1,-107,0,0,0, + 0,-2,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -371,0,0,0,-2,0,0,0,-68,0, - 0,0,0,-4,0,0,0,0,0,0, - 0,-85,0,0,0,0,0,0,0,0, + -49,0,0,0,0,0,0,0,0,0, + 0,-371,0,0,0,-4,0,0,0,-68, + 0,0,0,0,-5,0,0,0,0,0, + 0,0,-85,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-5,0,0,0,0, - -122,0,0,0,0,0,0,-431,0,-19, + 0,0,0,0,0,0,-56,0,0,0, + 0,0,-50,0,0,0,0,0,-61,0, + -19,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-164,-69,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-173,0,0,0,0,-112,0,-255,0, + 0,0,0,0,0,-114,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-69,0,0,0, - 0,0,0,0,0,0,0,0,0,-173, - 0,0,0,0,-112,0,-362,0,0,0, - 0,0,0,-114,0,0,0,0,0,0, + 0,0,0,0,0,-6,0,0,0,0, + -134,0,0,0,0,-7,0,0,-513,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-8,0,-129,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-52,0,0,0,0,-134,0, - 0,0,0,-6,0,0,-513,0,0,0, + 0,0,0,0,0,-122,0,0,0,0, + 0,0,0,0,0,0,-9,0,0,-57, + -367,0,0,0,0,-133,0,0,0,0, + 0,-10,0,0,0,0,0,0,0,0, + -162,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-57,0,-129,0,0,0,0,0, + 0,0,0,0,-52,0,0,0,0,-165, + -132,0,0,0,0,0,0,0,0,-174, + 0,0,0,0,0,0,-136,0,0,0, + 0,-11,0,0,0,0,0,0,0,0, + -53,-139,0,0,0,0,0,0,0,0, + 0,0,0,0,-230,0,0,-62,0,-324, + 0,0,0,0,-412,0,0,0,0,0, + 0,-245,0,0,0,0,0,-16,0,0, + 0,0,0,0,0,0,0,-219,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-7,-244,0,0,0,0,0, - 0,0,0,0,-8,0,0,-367,0,0, - 0,0,0,-133,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-162,0,0, + 0,0,0,0,0,0,-203,-12,0,0, + 0,0,0,0,0,0,-127,0,0,0, + -350,0,0,0,0,0,0,0,0,0, + 0,-221,-511,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-17,0,0,0, + 0,0,-380,0,0,0,0,0,0,0, + 0,0,-128,0,0,-182,0,0,0,0, + -232,0,0,0,0,0,0,-239,0,0, + 0,0,0,0,0,0,0,-246,0,0, + 0,0,-521,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-13,0,0,0, + 0,0,0,0,0,0,0,-197,0,0, + 0,-15,0,0,0,-266,0,0,0,0, + 0,-225,-28,-125,0,-480,0,0,0,0, + -257,-3,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-227,0,0,0,0, + 0,0,0,0,0,0,-180,0,0,0, + 0,0,0,0,-271,0,0,0,0,-416, + 0,0,-290,0,0,0,0,-191,0,0, + 0,0,-29,-280,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-10,0,0,0,0,-178,0,0,0, - 0,0,0,0,0,0,-174,0,0,0, - 0,0,0,-136,0,0,0,0,-260,0, - 0,0,0,0,0,0,0,-53,-139,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-9,0,-324,0,0,0, - 0,0,-11,0,0,0,0,0,-245,0, - 0,0,0,-236,-16,0,0,0,0,0, - 0,0,0,0,-219,0,0,0,0,0, + 0,0,-115,-236,0,0,0,0,0,0, + 0,0,0,0,0,0,-167,-314,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-62,-56,0,0,0,0,0, - 0,0,0,-277,-12,0,0,-350,0,0, - 0,0,0,0,0,0,0,0,0,-511, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-464,0,0,0,0,0,-380, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-182,0,0,0,0,-232,0,0, - 0,0,0,0,-239,0,0,0,0,0, - -307,0,0,0,-13,0,0,-225,-521,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-273,0,0,0,0,0,-197,0, - 0,0,0,0,0,0,0,-412,0,0, - 0,-246,0,0,0,0,-266,0,0,0, - 0,0,-203,-303,0,0,-257,-3,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-15,0,0,0,0,0,0,0,0, - 0,0,-352,0,0,0,0,-28,0,0, - -271,0,0,0,0,-50,-29,0,0,0, - 0,0,-191,0,0,0,0,0,-280,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-125,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-314,0,0,0,0,-59,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-167,0,0,0, 0,-212,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-296,-315,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-330,-315,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-180,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-104,0,0,0, - -30,-472,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-181,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-181,0,0,0,0, + 0,0,0,-451,0,0,0,-472,0,0, + 0,0,-59,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -105,0,0,0,-312,-61,-39,0,0,0, - 0,-401,0,0,0,0,0,0,0,0, + 0,-294,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-296,0,0,0, + -307,0,0,-39,0,0,0,0,-104,0, 0,0,0,0,0,0,0,0,0,0, - -302,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-183,-113,0,0,-31, - 0,-41,0,0,0,0,-127,0,0,0, + 0,0,0,0,0,0,0,-303,0,0, + 0,0,-30,-336,0,0,0,0,0,0, + 0,0,-183,0,0,0,0,0,-41,0, + 0,0,0,-105,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-131,0,0,0,0, + 0,0,-460,0,0,0,0,0,-31,0, + 0,0,0,0,0,0,0,-32,0,0, + 0,-91,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -416,0,0,0,-91,0,0,0,0,0, + 0,0,0,0,0,-33,0,0,0,0, + 0,0,0,0,0,0,-34,0,0,0, + 0,0,0,0,-92,0,0,0,0,-113, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-288,0, + 0,0,0,0,-185,0,0,0,0,0, + 0,0,0,-35,0,0,0,-93,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-451, - 0,0,0,-32,0,0,0,-92,0,0, - 0,0,-135,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-460,0,0,0,0,0,0,0,0, - 0,0,-33,0,0,0,0,0,0,0, - -93,0,0,0,0,0,0,0,0,0, + 0,-188,0,0,0,0,0,-36,0,0, + 0,0,0,0,0,0,0,-37,0,0, + -94,0,0,0,0,-130,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-34,0,0,0,0,0, - -185,0,0,0,0,0,0,0,0,-35, - -469,0,0,-94,0,0,0,0,-128,0, + 0,0,0,0,-196,0,0,0,0,0, + 0,0,0,0,0,-38,0,0,0,-40, + 0,0,0,-95,0,0,0,0,-54,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-210,0,0, + 0,0,0,-223,0,0,0,0,0,0, + 0,0,-277,0,0,0,-96,0,0,0, + 0,-135,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-36,-188,0,0,0,0,0,0, - 0,0,-37,-38,0,0,-95,0,0,0, - 0,-130,0,0,0,0,0,0,0,0, + -224,0,0,0,0,0,-228,0,0,0, + 0,0,0,0,0,-55,0,0,0,-97, + 0,0,0,0,-140,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -288,0,0,0,0,0,-196,0,0,0, - 0,0,0,0,0,0,0,0,0,-96, + 0,0,0,-253,0,0,0,0,0,-272, + 0,0,0,0,0,0,0,0,-58,0, + 0,0,-98,0,0,0,0,-141,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-40,-210, + 0,-63,-279,0,0,0,0,0,0,0, + 0,-64,-66,0,0,-99,0,0,0,0, + -283,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-297, + 0,0,0,0,0,-316,0,0,0,0, + 0,0,0,0,-312,0,0,0,-100,0, + 0,0,0,-198,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-97,0,0,0,0,-140,0,0, + 0,0,-302,0,0,0,0,0,0,0, + 0,0,0,-67,0,0,0,-108,0,0, + 0,-101,0,0,0,0,-206,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-14,0,0,0,0, + 0,-322,0,0,0,0,0,0,0,0, + -109,-110,0,0,-204,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-339,0,0,0,0,0,0,0,0, - 0,-54,0,0,0,-98,0,0,0,0, - -141,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-164, - 0,0,0,0,-55,-223,0,0,0,0, - 0,0,0,0,-58,-63,0,0,-99,0, - 0,0,0,-165,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-224,0,0,0,0,0,-228,0, - 0,0,0,0,0,0,0,-64,0,0, - 0,-100,0,0,0,0,0,0,0,0, + 0,0,0,0,-325,0,0,0,0,0, + 0,0,0,-111,0,0,0,-505,0,0, + 0,0,-208,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-66,0,0,0,0, - 0,-253,0,0,0,0,0,0,0,0, - -67,-108,0,0,-101,0,0,0,0,-198, + 0,-327,0,0,0,0,0,-345,0,0, + 0,0,0,0,0,0,-311,0,0,0, + -306,0,0,0,0,-260,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-272,0, - 0,0,0,0,-279,0,0,0,0,0, - 0,0,0,-109,0,0,0,-204,0,0, - 0,0,-206,0,0,0,0,0,0,0, + 0,0,0,0,-178,0,0,0,0,-348, + 0,0,0,0,0,-234,0,0,0,-310, + 0,0,0,0,-362,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-297,0,0,0,0,0,-316,0,0, - 0,0,0,0,0,0,-110,-111,0,0, - -505,0,0,0,0,-283,0,0,0,0, + 0,0,0,0,0,0,0,0,-118,0, + 0,0,0,0,0,0,0,0,-142,0, + -344,0,-143,-238,0,0,0,0,-268,-334, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-322,0,0,0,0,0, - -325,0,0,0,0,0,0,0,0,-311, - 0,0,0,-306,0,0,0,0,-255,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-268,0,0, - 0,0,0,-118,0,0,0,0,-234,0, - 0,0,-310,0,0,0,0,-142,0,0, + 0,0,0,0,0,0,0,0,-235,-144, + 0,0,0,0,0,0,0,0,-357,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-227,0,0,0, - 0,-143,0,0,0,0,0,0,0,0, - 0,-290,0,0,0,0,-238,0,0,0, - 0,0,-334,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-330,-327,0,0,0,0,0,0,0, - 0,-357,0,0,0,0,0,0,0,0, + 0,0,0,-339,0,0,0,-233,0,0, + -145,0,-240,0,0,0,0,-305,-358,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-144,0,0,0,0, - -340,0,0,0,0,0,0,0,0,0, - -230,0,0,0,-145,-208,0,0,0,0, - -305,-358,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-146,0,0,0,0, - 0,-345,0,0,0,0,0,0,0,0, - -404,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-364,0, + 0,0,0,0,0,0,0,-404,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-147, - -148,0,0,0,0,-344,0,0,0,-396, - 0,0,-263,-429,-18,0,0,0,0,0, - -103,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-149, - -364,0,0,0,0,0,0,0,0,-90, + 0,0,0,0,0,0,-340,-146,0,0, + 0,0,0,0,0,0,0,-369,-147,-263, + -429,-18,0,0,0,0,0,-103,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-150,-308, - 0,0,0,0,-88,0,0,0,0,-284, + 0,0,0,0,0,0,-406,0,0,0, + 0,0,-148,0,0,0,-90,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-264,0, - 0,0,0,0,0,0,0,0,-89,0, - 0,0,0,-151,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-378,0,0,0,0,0,-417,0, - 0,-86,0,0,0,0,0,0,0,0, + -149,0,0,0,0,-308,0,0,0,0, + 0,-88,0,0,0,0,-284,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-152,0,0,0,0, - -87,0,0,0,0,-348,0,0,0,0, + 0,0,0,0,0,-264,0,0,0,0, + 0,0,0,0,0,-89,0,0,0,0, + -150,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-378, + 0,0,0,0,0,-417,0,0,-86,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-51, - 0,0,0,0,0,0,-382,0,-153,0, - 0,0,0,0,-369,0,-154,-233,-202,0, - 0,0,0,-155,-79,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-156,0,-80,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-43, - 0,0,0,-157,0,-1,-240,0,0,0, - 0,-247,0,-47,0,0,0,0,-137,0, - 0,0,0,0,-353,0,0,-480,0,0, - 0,0,-406,-397,0,0,0,0,0,0, - -158,0,-159,0,0,0,0,0,0,-499, - 0,0,0,-379,-294,-160,0,0,-493,0, - -328,0,0,0,0,0,0,-81,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-166,0,0,0,-82,0,0,0,0, - -351,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,-83,0,0,0, - 0,-169,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -318,0,0,-317,0,0,0,0,-387,0, - 0,0,-446,-337,0,0,0,0,-170,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-171,-172,0,-341,0,0,0,0,0, - 0,-286,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-414,-248,-457,0,0, - 0,0,0,0,0,0,0,-84,0,0, - 0,0,-249,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-250,0,0, - 0,-385,0,0,0,-132,0,0,0,-175, - 0,-359,0,0,0,0,-176,0,0,-504, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-177,0,0,0,0,0,0, - 0,0,0,-186,0,-74,0,0,0,0, - -289,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-187, - 0,0,0,0,0,-192,0,0,0,-420, - -415,0,0,-106,0,0,0,-475,0,-375, - 0,0,0,0,-193,-199,0,-298,0,0, + 0,0,-151,0,0,0,0,-87,0,0, + 0,0,-397,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -226,0,0,-370,0,0,0,0,-356,0, - 0,-494,0,-75,0,0,0,0,-291,0, + 0,0,0,0,0,0,-51,0,0,0, + 0,0,0,-382,0,-152,0,0,0,0, + 0,-226,0,0,-457,-202,0,0,0,0, + 0,-79,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-441,0,-221, - 0,0,0,-386,0,0,0,-421,0,0, - 0,-115,0,0,-207,-471,-262,0,-17,0, - 0,0,0,0,0,0,-217,0,0,0, - 0,0,0,0,-346,0,0,0,0,0, - 0,-402,0,0,0,-442,0,0,0,0, - 0,-218,0,0,0,0,0,0,0,0, - 0,0,0,0,-220,0,0,-237,-229,0, - 0,-241,0,0,0,0,0,0,0,0, - 0,0,0,-243,0,0,0,0,0,-161, - 0,0,0,0,0,0,-425,0,-235,0, - 0,0,0,-444,0,0,0,0,0,-258, - 0,0,0,0,0,0,0,0,0,-259, - 0,-126,0,0,0,0,0,0,-423,0, + 0,0,0,0,0,0,0,0,0,-396, + 0,0,-80,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-502,-269,-454,-497,-71, - -342,0,0,0,0,-48,-448,-470,-455,-117, - 0,0,0,0,0,0,-287,-270,-368,0, - 0,0,0,0,0,0,-292,0,0,-319, - 0,0,-450,0,0,0,0,0,0,0, - 0,0,0,0,0,-274,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-278,0, - 0,0,0,0,-343,0,0,0,0,0, + -153,-353,0,0,0,0,0,0,-154,0, + -47,0,0,0,0,-200,0,0,0,0, + -137,0,0,0,0,-387,0,0,0,-155, + -414,0,0,0,0,0,0,-385,-379,-156, + 0,-157,0,0,0,0,-499,0,0,0, + 0,-420,-318,0,0,-158,0,-328,0,0, + 0,0,0,0,0,-81,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-281,-477,0,0,0, - 0,0,0,0,0,-478,-456,0,-116,0, - 0,0,0,0,-376,0,0,0,0,0, - 0,0,0,-179,0,0,0,0,0,0, - 0,-200,0,0,0,0,0,-363,-282,0, - -295,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-418, - -419,0,0,-466,0,-453,0,0,0,0, - -300,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-159, + 0,0,0,-82,0,0,0,0,-160,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-301,0,0,0,0,0,-323, - 0,0,0,-267,0,-388,0,0,0,0, - 0,0,-21,0,0,0,0,-333,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-335,-76,0,0, + 0,-242,0,0,0,0,0,0,0,0, + 0,0,0,0,-83,0,0,0,0,-247, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-356,0, + 0,-273,0,-244,-166,0,0,0,0,0, + -169,-337,-229,0,0,-415,-421,0,0,0, + 0,0,-351,0,0,-170,-248,0,0,0, + 0,0,-341,0,0,0,0,0,0,-286, 0,0,0,0,0,0,0,0,0,0, - 0,-77,0,0,0,0,-365,0,0,0, + 0,0,0,-441,-401,0,0,0,0,0, + 0,0,0,0,0,-84,0,0,0,0, + -249,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-346, + 0,0,-442,0,0,0,0,0,0,-171, + -172,0,0,-175,-106,0,0,-176,-276,0, + 0,0,0,0,0,0,0,-423,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-78,0,0,0,0, - -461,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-321, - 0,0,0,0,-463,0,0,0,0,0, - 0,0,-254,-465,0,0,-468,-481,0,0, - -120,0,0,0,0,-474,0,-231,0,0, - -484,-410,-366,-372,-503,0,0,-482,-70,0, - -374,0,0,0,-377,-138,0,0,0,0, - 0,0,-383,0,0,0,0,0,0,-384, - 0,0,0,0,0,0,0,0,-119,-435, - 0,0,0,0,0,0,0,0,0,-276, - 0,0,0,0,0,0,-163,0,0,0, + -116,-250,0,0,0,0,0,0,0,0, + -209,0,0,0,0,0,0,-504,0,0, 0,0,0,0,0,0,0,0,0,0, + -163,0,0,0,0,0,0,0,-231,0, + 0,0,0,0,0,0,0,0,-289,0, + 0,0,-177,-186,-187,0,-120,0,0,0, + 0,0,0,-192,0,0,0,0,0,0, + 0,0,0,-193,0,0,0,0,0,0, + 0,0,-1,0,0,-199,0,0,0,0, + 0,-207,-431,-71,0,-291,-292,0,0,0, + 0,0,0,0,-359,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -392,-483,0,0,0,0,0,-395,0,0, - 0,0,0,-485,-488,0,-438,0,0,0, - 0,0,-495,-403,0,-405,-510,0,0,0, - 0,0,0,0,0,0,0,0,-500,-407, - 0,-508,0,0,-205,0,0,0,0,-408, - 0,-487,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-498,-409,0, - -411,0,0,0,0,0,-121,-422,0,0, + 0,0,0,-217,-254,0,0,0,0,0, + 0,0,0,0,0,-74,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-509,-515,-424,-426,0,0,0,0, - 0,0,0,0,0,-492,0,0,-496,-512, - 0,0,-14,0,-427,-428,-430,0,0,-432, + 0,0,0,0,0,0,0,0,0,-218, + 0,-75,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -413,0,0,-251,0,0,0,0,0,0, - 0,0,0,-514,0,0,-517,-433,0,0, - 0,0,0,-434,0,0,0,0,0,0, - 0,0,0,-44,0,0,0,0,0,0, - 0,-439,0,-443,0,0,0,0,0,0, - 0,0,0,0,-452,-520,0,0,0,0, - 0,0,0,0,0,0,0,-519,-518,0, - -489,-252,0,-45,-123,0,0,-459,0,-467, - -486,0,0,0,0,0,0,0,0,0, - 0,0,-501,0,-506,0,0,0,0,0, - 0,0,0,0,0,-522,0,0,0,0, + 0,0,0,0,0,0,0,-298,0,0, 0,0,0,0,0,0,0,0,0,0, + -21,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-386,0,0,-352,-48,0,-471, + 0,-320,0,-161,0,-131,0,0,-102,0, + 0,-293,0,0,0,0,0,0,-205,0, + 0,-450,0,0,0,0,0,-342,0,0, + -70,-402,0,0,0,0,0,0,0,0, + 0,-370,0,0,0,0,0,0,0,0, + -446,-319,0,0,-220,0,0,-237,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-454,-241,0,0,0,0, + 0,0,0,0,0,0,0,0,-267,0, + -465,-243,0,0,0,0,0,0,0,-258, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-259,0,0,0,0,0,-269,0, + 0,-343,-179,0,0,0,0,-270,0,-470, + 0,-425,0,-474,0,-274,0,-317,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-469,0,0,0,-190, 0,0,0,0,0,0,0,0,0,0, - 0,0,-20,0,0,0,0,0,0,0, + 0,0,-477,0,0,0,0,0,0,0, + 0,0,0,-43,-475,-278,-502,0,0,0, + -375,0,0,0,0,0,0,0,-363,0, + -213,-444,0,0,-281,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-22,0,0,0,0, + 0,0,0,0,0,0,-418,0,0,0, + 0,0,-448,0,0,0,-478,0,0,0, + 0,0,0,0,-419,-381,-282,-117,0,-453, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-23,0, + 0,0,-295,-201,0,0,0,0,0,0, + -376,0,0,0,0,-455,-494,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-461, + 0,-300,0,-301,0,-456,0,0,0,-214, 0,0,0,0,0,0,0,0,0,0, - 0,-24,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-25,0,0,0,0,0, + 0,0,0,-493,0,0,0,0,0,-323, + 0,0,0,-76,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-26,0,0, + 0,0,0,0,0,0,0,-77,0,0, + 0,0,-333,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-78,0,0,0,0,-335,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -27,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-321,0,0,0,0, + -365,0,0,0,0,0,0,0,-388,0, + 0,0,0,-368,0,0,-265,-126,0,0, + 0,0,0,-466,-484,-366,0,-410,0,0, + -464,-496,0,-463,-251,0,0,-372,0,0, + -222,-488,-481,0,0,0,0,0,-500,-468, + 0,0,0,0,0,-508,0,0,0,0, + 0,0,0,0,0,-435,0,0,0,0, + 0,0,0,0,0,-503,0,0,0,0, + 0,0,-374,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-60,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-482,0,-377, + 0,0,0,-497,0,0,0,0,0,-485, + 0,0,-438,0,0,-390,-119,0,-483,-383, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-72,0,0,0, + 0,0,0,0,0,-215,0,-495,0,0, + 0,0,0,-498,-518,-384,-392,-487,0,0, + 0,0,0,0,0,0,0,-395,0,0, + 0,0,0,0,0,0,-510,0,0,-509, + -403,0,0,-512,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-73, + 0,-405,0,0,0,-407,0,0,0,0, + 0,0,-313,0,0,0,0,0,0,0, + 0,-408,0,0,0,-409,0,0,0,0, + 0,0,0,0,-490,0,0,0,0,0, + 0,0,0,0,0,0,0,-20,0,0, + 0,0,-411,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -492,-422,-252,0,-424,0,-426,0,-349,-489, + -427,-428,-393,0,0,-430,-432,0,-433,-434, + -439,0,0,0,0,-443,0,0,0,0, + -398,0,0,-515,-452,0,0,-517,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-194,0,0,0,0,0,0,0, + 0,0,0,0,0,-121,0,0,0,0, + -347,0,0,0,0,0,-391,-520,0,0, + 0,0,0,0,0,0,0,0,0,-514, + 0,-459,-467,-486,0,-501,0,0,-506,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-381,0,0,0,-293, - 0,0,-309,-389,-393,0,-313,0,0,0, - 0,-46,-349,0,0,0,0,0,0,0, - 0,-265,-190,0,0,0,0,0,0,0, + 0,0,0,0,-123,0,0,0,0,0, + 0,0,0,0,0,-44,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-519,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-507,0,0,0,-447,0, 0,0,0,0,0,0,0,0,0,0, + 0,-522,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-201,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-347,0, - 0,-449,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-391,0,-168, + 0,0,0,0,0,0,-413,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-211,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-476,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-256, + 0,0,0,0,0,0,0,0,-22,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-331,0,0,0, + 0,-23,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-24,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-490,0,0,0,0,0,0, - 0,0,0,0,0,0,-354,0,0,0, + 0,0,0,0,0,0,0,-25,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-124,0,0,0,0,0,0, - 0,-184,0,0,0,0,0,0,-436,0, - 0,0,-516,0,0,0,0,0,0,-102, 0,0,0,0,0,0,0,0,0,0, + -26,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-27,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-60,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-473,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-42, - 0,0,0,0,0,0,0,-299,0,0, + 0,0,0,0,0,0,0,0,0,-72, 0,0,0,0,0,0,0,0,0,0, - 0,0,-213,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-73,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-194,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-447,0, + 0,-216,0,0,0,0,0,-449,0,0, + 0,0,0,0,-45,0,0,0,0,0, + 0,0,0,0,0,-211,0,0,0,0, + 0,0,-309,0,-389,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-462,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-261,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -329,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-214,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-476,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-222,0,0,0,0, + 0,0,0,0,0,0,0,-256,0,0, + 0,0,-354,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-355,0,0,0,0,0, - 0,0,0,0,0,0,0,-394,0,0, 0,0,0,0,0,0,0,0,0,0, + -287,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -209,0,0,0,-320,0,0,0,0,0, - 0,0,0,0,-189,0,0,0,0,0, - 0,0,0,0,0,-215,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-285, - 0,0,0,0,0,0,-390,0,-216,0, 0,0,0,0,0,0,0,0,0,0, - -275,-491,-195,0,0,0,0,0,0,0, - 0,-304,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-473,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -124,0,0,0,0,0,0,0,-138,0, + 0,0,0,0,0,-299,0,0,0,0, + 0,0,0,0,0,0,0,0,-275,-491, + 0,-42,0,0,0,0,0,0,0,0, + 0,0,-507,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-331, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-326,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-332,0,0,0,0,-338,0,0,0, - 0,0,0,0,0,0,0,0,-360,0, - 0,0,0,-361,0,0,0,0,0,0, - 0,0,-398,0,0,0,0,0,0,0, + 0,0,0,0,-462,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-168,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-261,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-65,0,0,0,0,0,0,-373,0, - 0,0,0,-458,0,0,0,0,0,0, - -479,0,0,0,0,0,0,0,0,0, - 0,-437,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-440,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-399,0, - 0,-400,0,0,0,-445,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-329,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-355,0, 0,0,0,0,0,0,0,0,0,0, + 0,-394,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-262,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-184,0,0,0, + 0,0,0,0,0,0,0,0,0,-516, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-189,0, + 0,0,0,-285,0,0,0,0,0,0, + 0,0,0,0,0,0,-65,0,0,0, + 0,0,0,-304,0,0,0,0,0,0, + 0,0,0,0,0,-326,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-332,0, 0,0,0,0,0,0,0,0,0,0, + -338,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -360,0,0,0,0,-361,0,0,0,0, + 0,0,0,0,0,0,0,-373,0,0, + 0,0,0,0,0,-458,0,0,0,0, + 0,0,0,0,0,0,0,-479,0,0, + 0,0,0,0,0,0,-436,0,0,0, + 0,0,0,-437,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0 + 0,0,0,-440,0,0,0,0,0,0, + 0,0,0,-46,-195,0,0,0,0,0, + -399,0,0,-400,0,0,0,0,0,-445, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -547,542 +542,537 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface BaseAction { public final static char baseAction[] = { - 170,5,131,78,78,35,35,64,64,40, - 40,190,190,191,191,192,192,1,1,16, + 171,5,132,78,78,35,35,64,64,40, + 40,191,191,192,192,193,193,1,1,16, 16,16,16,16,16,16,16,17,17,17, 15,11,11,9,9,9,9,9,2,65, - 65,6,6,12,12,12,12,44,44,132, - 132,133,54,54,43,18,18,18,18,18, + 65,6,6,12,12,12,12,44,44,133, + 133,134,54,54,43,18,18,18,18,18, 18,18,18,18,18,18,18,18,18,18, - 18,18,18,18,18,134,134,134,114,19, + 18,18,18,18,18,135,135,135,114,19, 19,19,19,19,19,19,19,19,19,19, - 19,19,20,20,171,171,172,172,173,137, - 137,138,138,135,135,139,136,136,21,21, + 19,19,20,20,172,172,173,173,174,138, + 138,139,139,136,136,140,137,137,21,21, 22,23,23,23,25,25,25,25,26,26, 26,27,27,27,28,28,28,28,28,31, 31,31,32,32,33,33,34,34,36,36, 37,37,38,38,42,42,41,41,41,41, 41,41,41,41,41,41,41,41,41,39, - 29,140,140,99,99,102,102,94,193,193, + 29,141,141,99,99,102,102,94,194,194, 69,69,69,69,69,69,69,69,69,70, - 70,70,71,71,56,56,174,174,72,72, + 70,70,71,71,56,56,175,175,72,72, 72,115,115,73,73,73,73,74,74,74, 74,74,75,75,79,79,79,79,79,79, 79,49,49,49,49,49,105,105,106,106, - 50,175,24,24,24,24,24,47,47,88, - 88,88,88,88,147,147,142,142,142,142, - 142,143,143,143,144,144,144,145,145,145, - 146,146,146,89,89,89,89,89,90,90, + 50,176,24,24,24,24,24,47,47,88, + 88,88,88,88,148,148,143,143,143,143, + 143,144,144,144,145,145,145,146,146,146, + 147,147,147,89,89,89,89,89,90,90, 90,13,14,14,14,14,14,14,14,14, 14,14,14,93,119,119,119,119,119,117, - 117,117,118,118,149,149,148,148,121,121, - 150,83,83,84,84,86,87,85,52,46, - 151,151,53,51,82,82,152,152,141,141, - 122,122,77,77,153,153,62,62,62,58, - 58,57,63,63,67,67,55,55,55,91, - 91,101,100,100,61,61,59,59,60,60, - 48,103,103,103,95,95,95,96,97,97, - 97,98,98,107,107,107,109,109,108,108, - 194,194,92,92,177,177,177,177,177,124, - 45,45,155,176,176,125,125,125,125,178, - 178,30,30,116,126,126,126,126,110,110, - 120,120,120,157,158,158,158,158,158,158, - 158,158,158,181,181,179,179,180,180,159, - 159,159,159,160,182,112,111,111,183,183, - 161,161,161,161,104,104,104,184,184,10, - 185,185,186,162,154,154,163,163,164,165, - 165,7,7,8,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,66,68,68,168, - 168,127,127,128,128,128,128,128,128,3, - 4,169,169,166,166,129,129,129,80,81, - 76,156,156,113,113,187,187,187,130,130, - 123,123,188,188,170,170,958,38,1841,1826, - 1025,2572,4200,34,1112,31,35,30,32,2612, - 261,29,27,55,1128,110,80,81,111,1137, - 30,1370,1281,1493,1454,674,273,1540,1525,1583, - 1573,1663,1584,1659,146,915,2934,161,147,2056, - 38,945,36,1025,82,3436,34,1112,31,35, - 62,32,2395,38,945,36,1025,231,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,984,1370,1281,1493, - 1454,1330,2850,2449,234,229,230,4655,2692,274, - 2351,38,945,36,1025,185,2235,34,1112,31, - 35,30,32,883,261,29,27,55,1128,90, - 80,81,241,244,247,250,3411,2165,38,945, - 36,1025,2004,3436,34,1112,31,35,61,32, - 327,38,500,2957,1025,1344,574,2466,3189,3090, - 3459,3577,3705,4354,1540,38,945,36,1025,2440, - 2235,34,1112,31,35,2797,32,883,261,29, - 27,55,1128,110,80,81,111,1137,340,1370, - 1281,1493,1454,66,1209,1540,1525,1583,1573,2300, - 1584,1659,146,410,160,505,147,1856,38,945, - 36,1025,2864,4165,34,1112,31,35,30,32, - 660,512,498,2138,506,1540,38,945,36,1025, - 2440,2235,34,1112,31,35,2797,32,883,261, - 29,27,55,1128,110,80,81,111,1137,340, - 1370,1281,1493,1454,856,1425,1540,1525,1583,1573, - 2440,1584,1659,146,3212,1008,505,147,1972,38, - 388,65,485,2864,1097,38,945,36,1025,2644, - 352,34,1112,43,35,506,837,520,1870,38, - 945,36,1025,501,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,590,1370,1281,1493,1454,1658,2534,1540, - 1525,1583,1573,3204,1584,2945,167,327,38,2982, - 2790,47,2876,2814,1650,38,945,36,1025,855, - 4165,34,1112,31,35,64,32,356,508,1650, - 38,945,36,1025,501,4165,34,1112,31,35, - 63,32,2831,3002,3014,1071,325,1097,38,945, - 36,1025,330,1031,34,1112,2416,35,3443,2582, - 38,277,1893,484,2525,66,38,1755,46,1025, - 443,2875,45,1112,2814,1805,38,945,36,1025, - 2440,2235,34,1112,31,35,2797,32,883,261, - 29,27,55,1128,110,80,81,111,1137,340, - 1370,1281,1493,1454,1707,30,1540,1525,1583,1573, - 735,1584,1659,146,1379,1853,505,147,1097,38, - 945,36,1025,2864,2052,34,1112,2455,35,3212, - 1606,38,945,36,1025,506,2235,34,1112,31, - 35,30,32,883,261,29,27,55,1128,110, - 80,81,111,1137,2507,1370,1281,1493,1454,1088, - 1399,1540,1525,1583,1573,2440,1584,1659,146,784, - 1237,375,147,327,38,1783,1746,1025,327,38, - 500,276,1025,159,2644,1588,38,500,3149,1025, - 837,327,3077,165,378,1899,49,2876,1206,1678, - 38,945,36,1025,502,2235,34,1112,31,35, - 30,32,883,261,29,27,55,1128,110,80, - 81,111,1137,2196,1370,1281,1493,1454,75,1667, - 1540,1525,1583,1573,3029,1584,1659,146,327,2928, - 375,147,1588,38,500,276,1025,327,38,500, - 280,1025,492,2183,1114,379,3515,2171,1979,38, - 945,36,1025,376,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,2008,1370,1281,1493,1454,490,491,1540, - 1525,1583,1573,2618,1584,1659,146,396,2610,161, - 147,327,38,500,278,1025,1182,943,3699,384, - 416,2942,285,327,38,1798,382,1025,784,1979, - 38,945,36,1025,380,2235,34,1112,31,35, - 30,32,883,261,29,27,55,1128,110,80, - 81,111,1137,273,1370,1281,1493,1454,590,372, - 1540,1525,1583,1573,4093,1584,1659,146,427,92, - 369,147,106,1979,38,945,36,1025,508,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,111,1137,590,1370,1281, - 1493,1454,2490,4212,1540,1525,1583,1573,574,1584, - 1659,146,97,28,369,147,275,590,1979,38, - 945,36,1025,4757,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,30,1370,1281,1493,1454,2930,2131,1540, - 1525,1583,1573,368,1584,1659,146,508,370,369, - 147,235,1914,38,945,36,1025,784,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,30,1370,1281,1493, - 1454,4586,74,1540,1525,1583,1573,367,1584,1659, - 146,508,430,375,147,1379,1374,1740,38,945, - 36,1025,2631,2235,34,1112,31,35,30,32, - 883,261,29,27,55,1128,110,80,81,111, - 1137,2066,1370,1281,1493,1454,73,4777,1540,1525, - 1583,1573,365,1584,1659,146,30,508,145,147, - 1207,1028,1979,38,945,36,1025,1209,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,1492,1370,1281,1493, - 1454,2440,58,1540,1525,1583,1573,373,1584,1659, - 146,327,3674,162,147,1979,38,945,36,1025, - 340,2235,34,1112,31,35,30,32,883,261, - 29,27,55,1128,110,80,81,111,1137,76, - 1370,1281,1493,1454,1059,511,1540,1525,1583,1573, - 1566,1584,1659,146,2421,447,158,147,1979,38, - 945,36,1025,508,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,2724,1370,1281,1493,1454,2440,618,1540, - 1525,1583,1573,153,1584,1659,146,1396,91,157, - 147,1979,38,945,36,1025,340,2235,34,1112, - 31,35,30,32,883,261,29,27,55,1128, - 110,80,81,111,1137,1006,1370,1281,1493,1454, - 3421,2147,1540,1525,1583,1573,2037,1584,1659,146, - 1295,2631,156,147,1979,38,945,36,1025,1209, - 2235,34,1112,31,35,30,32,883,261,29, - 27,55,1128,110,80,81,111,1137,1617,1370, - 1281,1493,1454,1092,30,1540,1525,1583,1573,2999, - 1584,1659,146,931,155,155,147,1979,38,945, - 36,1025,1209,2235,34,1112,31,35,30,32, - 883,261,29,27,55,1128,110,80,81,111, - 1137,1976,1370,1281,1493,1454,2440,30,1540,1525, - 1583,1573,2009,1584,1659,146,311,446,154,147, - 1979,38,945,36,1025,2644,2235,34,1112,31, - 35,30,32,883,261,29,27,55,1128,110, - 80,81,111,1137,511,1370,1281,1493,1454,1091, - 30,1540,1525,1583,1573,765,1584,1659,146,3502, - 4043,153,147,1979,38,945,36,1025,508,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,111,1137,2579,1370,1281, - 1493,1454,590,357,1540,1525,1583,1573,4789,1584, - 1659,146,333,57,152,147,1979,38,945,36, - 1025,1209,2235,34,1112,31,35,30,32,883, - 261,29,27,55,1128,110,80,81,111,1137, - 507,1370,1281,1493,1454,420,30,1540,1525,1583, - 1573,2233,1584,1659,146,2025,1795,151,147,1979, - 38,945,36,1025,1433,2235,34,1112,31,35, - 30,32,883,261,29,27,55,1128,110,80, - 81,111,1137,2360,1370,1281,1493,1454,2339,30, - 1540,1525,1583,1573,3284,1584,1659,146,2148,56, - 150,147,1979,38,945,36,1025,349,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,1029,1370,1281,1493, - 1454,350,30,1540,1525,1583,1573,4070,1584,1659, - 146,1145,154,149,147,1979,38,945,36,1025, - 508,2235,34,1112,31,35,30,32,883,261, - 29,27,55,1128,110,80,81,111,1137,30, - 1370,1281,1493,1454,2310,30,1540,1525,1583,1573, - 4077,1584,1659,146,589,94,148,147,1979,38, - 945,36,1025,1209,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,1475,1370,1281,1493,1454,2581,30,1540, - 1525,1583,1573,2965,1584,1659,146,1214,1347,143, - 147,2303,38,945,36,1025,2495,2235,34,1112, - 31,35,30,32,883,261,29,27,55,1128, - 110,80,81,111,1137,30,1370,1281,1493,1454, - 4179,30,1540,1525,1583,1573,4083,1584,1659,146, - 1209,324,192,147,2395,38,945,36,1025,1314, - 2235,34,1112,31,35,30,32,883,261,29, - 27,55,1128,110,80,81,111,1137,1314,1370, - 1281,1493,1454,322,691,1540,1525,1583,1573,1155, - 1584,2945,167,2395,38,945,36,1025,2095,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,111,1137,1206,1370,1281, - 1493,1454,2488,383,1540,1525,1583,1573,101,1584, - 2945,167,327,38,500,3280,1025,327,38,1798, - 382,1025,282,2395,38,945,36,1025,289,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,111,1137,273,1370,1281, - 1493,1454,2708,30,1540,1525,1583,1573,2621,1584, - 2945,167,2395,38,945,36,1025,2226,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,952,1370,1281,1493, - 1454,590,394,1540,1525,1583,1573,4794,1584,2945, - 167,327,38,281,1053,1333,508,3126,385,416, - 78,1314,2395,38,945,36,1025,412,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,1769,1370,1281,1493, - 1454,347,30,1540,1525,1583,1573,667,1584,2945, - 167,2439,38,945,36,1025,411,2235,34,1112, - 31,35,30,32,883,261,29,27,55,1128, - 110,80,81,111,1137,283,1370,1281,1493,1454, - 588,675,1540,1525,1583,1573,1209,1584,2945,167, - 1800,3616,3615,1206,590,1522,38,1798,382,1025, - 4854,2395,38,945,36,1025,414,2235,34,1112, - 31,35,30,32,883,261,29,27,55,1128, - 110,80,81,111,1137,54,1370,1281,1493,1454, - 762,30,1540,1525,1583,1573,2574,2576,1756,934, - 2395,38,945,36,1025,3654,2235,34,1112,31, - 35,30,32,883,261,29,27,55,1128,110, - 80,81,111,1137,102,1370,1281,1493,1454,849, - 1155,1540,1525,1583,2561,2395,38,945,36,1025, - 2080,2235,34,1112,31,35,30,32,883,261, - 29,27,55,1128,110,80,81,111,1137,1206, - 1370,1281,1493,1454,387,416,1540,1525,2494,2395, - 38,945,36,1025,670,2235,34,1112,31,35, - 30,32,883,261,29,27,55,1128,110,80, - 81,111,1137,30,1370,1281,1493,1454,4198,2618, - 1540,2524,2395,38,945,36,1025,323,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,1137,757,1370,1281,1493, - 2457,2395,38,945,36,1025,2576,2235,34,1112, - 31,35,30,32,883,261,29,27,55,1128, - 110,80,81,111,1137,3034,1370,1281,1493,2464, - 2483,38,1798,382,1025,3081,3052,30,3126,1317, - 386,416,4803,236,261,2576,398,2424,508,1259, - 38,1798,382,1025,2544,2395,38,945,36,1025, - 273,2235,34,1112,31,35,30,32,883,261, - 29,27,55,1128,110,80,81,111,1137,273, - 1370,1281,2220,1869,1297,299,2395,38,945,36, - 1025,231,2235,34,1112,31,35,30,32,883, - 261,29,27,55,1128,110,80,81,111,1137, - 30,1370,1281,2221,1854,2440,1466,508,234,229, - 230,1088,508,274,327,38,1798,382,1025,327, - 38,1798,382,1025,340,1722,38,440,327,38, - 290,4849,2998,2576,2164,159,241,244,247,250, - 3411,1410,1875,45,54,524,2004,72,2864,37, - 327,38,290,77,2466,1707,1093,1756,665,2749, - 1842,2558,3189,3090,3459,3577,3705,4354,2395,38, - 945,36,1025,182,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,1525,1370,1281,2270,2395,38,945,36, - 1025,2558,2235,34,1112,31,35,30,32,883, - 261,29,27,55,1128,110,80,81,111,1137, - 877,1370,1281,2309,1105,38,945,36,1025,3097, - 4680,34,1112,31,35,336,32,2395,38,945, - 36,1025,1786,2235,34,1112,31,35,30,32, - 883,261,29,27,55,1128,110,80,81,111, - 1137,2681,1370,2354,327,38,1798,382,1025,1958, - 38,440,512,2466,1851,4849,565,351,3539,1831, - 4712,317,2320,319,520,1237,312,1936,433,3424, - 3431,348,1864,1975,273,327,38,1798,382,1025, - 3610,3219,1083,38,945,36,1025,4645,4680,34, - 1112,31,35,336,32,1123,2576,508,590,341, - 1764,1740,346,434,4861,420,784,3176,2395,38, - 945,36,1025,508,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,1137,71,1370,2406,2894,198,337,508,317, - 2320,319,30,434,312,1936,30,1332,70,348, - 1767,1088,327,38,1798,382,1025,1361,1351,3110, - 1531,38,945,36,1025,3097,4680,34,1112,31, - 35,336,32,69,240,1850,321,341,1764,1740, - 346,362,423,520,1187,2146,2395,38,945,36, - 1025,508,2235,34,1112,31,35,30,32,883, - 261,29,27,55,1128,110,80,81,111,1137, - 778,2018,437,3424,3431,419,1941,317,2320,319, - 30,2576,312,1936,1968,2693,1955,348,1314,3020, - 327,38,1798,382,1025,2142,2221,515,1219,38, - 3298,36,1025,4297,4772,34,1112,31,35,336, - 32,2520,38,279,2618,341,1764,1740,346,2189, - 422,197,1314,516,2395,38,945,36,1025,508, - 2235,34,1112,31,35,30,32,883,261,29, - 27,55,1128,110,80,81,111,1137,2576,2042, - 1021,348,297,329,175,317,2320,319,2733,526, - 312,1936,1056,4139,60,2107,30,1349,3204,30, - 372,1088,2440,4270,1088,531,1077,2050,228,341, - 1764,1740,346,159,784,1425,304,339,201,4541, - 2440,228,1,2553,183,3523,2576,526,159,203, - 214,4618,2059,202,211,212,213,215,1198,2644, - 172,3403,1087,399,4526,936,228,329,2508,1341, - 3077,159,1442,186,170,171,173,174,175,176, - 177,2553,183,400,430,3050,199,203,214,4618, - 1056,202,211,212,213,215,3204,30,172,1056, - 326,332,3078,827,30,3204,184,407,3317,1541, - 1526,187,170,171,173,174,175,176,177,2782, - 2193,3040,414,38,1798,382,1025,356,2092,1446, - 38,945,36,1025,4297,4772,34,1112,31,35, - 336,32,3218,3002,3014,329,2618,2139,2152,1314, - 30,2196,54,2440,3470,1088,334,30,2640,30, - 1023,1088,3088,2440,3177,1756,2856,1056,2145,1972, - 38,388,228,3204,401,404,1143,508,2972,159, - 508,3545,228,2576,329,163,317,2320,319,1721, - 284,312,1936,205,214,4618,1963,204,211,212, - 213,215,514,205,214,4618,1450,204,211,212, - 213,215,59,296,206,320,3050,1998,3098,2589, - 4541,231,329,220,206,508,3050,216,207,208, - 209,210,291,292,293,294,98,216,207,208, - 209,210,291,292,293,294,2214,2753,243,229, - 230,306,2440,4236,2868,1367,2764,30,3390,2606, - 105,2440,3186,4236,2902,327,38,1798,382,1025, - 3113,228,238,261,327,38,1798,382,1025,3450, - 228,3685,327,38,1798,382,1025,93,508,2511, - 106,2378,205,214,4618,421,204,211,212,213, - 215,205,214,4618,54,204,211,212,213,215, - 508,2530,54,206,30,3050,508,1756,2995,4324, - 231,2296,206,2373,3050,51,216,207,208,209, - 210,291,292,293,294,216,207,208,209,210, - 291,292,293,294,2570,438,518,239,229,230, - 2377,3416,4236,3079,1341,3077,327,38,1798,382, - 1025,4236,3568,2395,38,1841,1826,1025,1632,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,88,439,2612,2395,38, - 945,36,1025,37,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 111,2126,2395,38,945,36,1025,1940,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,111,2145,2395,38,945,36, - 1025,508,2235,34,1112,31,35,30,32,883, - 261,29,27,55,1128,110,80,81,111,2176, - 1300,38,945,36,1025,508,4772,34,1112,31, - 35,336,32,1021,2576,284,3514,508,1972,38, - 388,1387,38,2824,1531,1025,2576,4362,2520,38, - 277,2653,262,2543,2656,2618,2800,526,508,334, - 3552,2686,2151,3098,1088,2690,501,38,1798,382, - 1025,54,3606,2632,3701,330,228,317,2320,319, - 2709,159,313,1936,1756,1003,303,348,163,1386, - 349,2553,183,3076,3403,526,54,203,214,4618, - 1729,202,211,212,213,215,3204,1019,172,1756, - 1083,513,4641,1131,228,343,1764,1740,346,159, - 2459,3672,170,171,173,174,175,176,177,2553, - 183,2092,508,331,332,203,214,4618,2702,202, - 211,212,213,215,436,2576,172,2507,3723,526, - 231,1366,526,508,2703,3470,2706,508,1678,179, - 170,171,173,174,175,176,177,3425,228,2576, - 2704,3244,2576,159,348,1043,159,246,229,230, - 2712,3204,523,2553,183,4135,165,526,374,203, - 214,4618,3647,202,211,212,213,215,1314,2720, - 172,2725,341,1764,1740,346,228,1739,2716,302, - 2146,159,4373,190,170,171,173,174,175,176, - 177,2553,183,2576,508,2718,2735,203,214,4618, - 330,202,211,212,213,215,610,100,172,30, - 2576,526,348,2024,960,2736,2729,2509,2440,3404, - 2738,3725,170,171,173,174,175,176,177,3698, - 228,2581,295,221,334,159,1088,340,231,1088, - 343,1764,1740,346,697,2553,183,2576,88,526, - 298,203,214,4618,2726,202,211,212,213,215, - 159,1136,172,163,30,249,229,230,228,2440, - 2976,200,2448,159,2737,193,170,171,173,174, - 175,176,177,2553,183,2739,508,194,340,203, - 214,4618,984,202,211,212,213,215,784,1661, - 172,2507,334,526,30,2051,1088,1088,1328,2440, - 2745,2743,2864,189,170,171,173,174,175,176, - 177,3736,228,2751,1884,169,5359,159,340,5359, - 159,163,5359,2909,5359,5359,871,2553,183,5359, - 165,526,5359,203,214,4618,5359,202,211,212, - 213,215,2864,5359,172,5359,5359,5359,5359,5359, - 228,5359,5359,377,1927,159,231,196,170,171, - 173,174,175,176,177,2553,183,5359,5359,5359, - 443,203,214,4618,5359,202,211,212,213,215, - 5359,5359,172,252,229,230,5359,5359,429,5359, - 5359,3107,5359,3542,5359,195,170,171,173,174, - 175,176,177,2395,38,945,36,1025,5359,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,89,2395,38,945,36, - 1025,5359,2235,34,1112,31,35,30,32,883, - 261,29,27,55,1128,110,80,81,87,2395, - 38,945,36,1025,5359,2235,34,1112,31,35, - 30,32,883,261,29,27,55,1128,110,80, - 81,86,2395,38,945,36,1025,5359,2235,34, - 1112,31,35,30,32,883,261,29,27,55, - 1128,110,80,81,85,2395,38,945,36,1025, - 5359,2235,34,1112,31,35,30,32,883,261, - 29,27,55,1128,110,80,81,84,2395,38, - 945,36,1025,5359,2235,34,1112,31,35,30, - 32,883,261,29,27,55,1128,110,80,81, - 83,2395,38,945,36,1025,5359,2235,34,1112, - 31,35,30,32,883,261,29,27,55,1128, - 110,80,81,82,2252,38,945,36,1025,5359, - 2235,34,1112,31,35,30,32,883,261,29, - 27,55,1128,110,80,81,108,2395,38,945, - 36,1025,5359,2235,34,1112,31,35,30,32, - 883,261,29,27,55,1128,110,80,81,113, - 2395,38,945,36,1025,5359,2235,34,1112,31, - 35,30,32,883,261,29,27,55,1128,110, - 80,81,112,2395,38,945,36,1025,5359,2235, - 34,1112,31,35,30,32,883,261,29,27, - 55,1128,110,80,81,109,2846,5359,5359,5359, - 1021,2440,5359,334,334,2038,5359,1021,1088,1088, - 2440,5359,30,1399,5359,5359,5359,2440,2440,5359, - 228,5359,1851,327,38,1798,382,1025,4712,228, - 5359,5359,163,163,5359,5359,340,2644,5359,5359, - 5359,205,214,4618,5359,204,211,212,213,215, - 205,214,4618,54,204,211,212,213,215,5359, - 2864,3403,206,5359,3050,2507,1756,3418,3403,2856, - 1088,206,1928,3050,2440,486,207,208,209,210, - 291,292,293,294,508,207,208,209,210,291, - 292,293,294,228,159,327,38,1798,382,1025, - 328,332,3155,3240,165,492,5359,2182,332,1021, - 5359,5359,2938,5359,205,214,4618,2440,204,211, - 212,213,215,5359,5359,54,1351,5359,1021,5359, - 2215,38,1798,382,1025,206,228,3050,1756,934, - 489,491,327,38,1798,382,1025,5359,305,207, - 208,209,210,291,292,293,294,205,214,4618, - 54,204,211,212,213,215,2671,3594,5359,5359, - 3403,2440,54,1756,1222,5359,5359,5359,206,5359, - 3050,3347,5359,418,1143,1756,889,5359,5359,3403, - 228,509,207,208,209,210,291,292,293,294, - 327,38,1798,382,1025,3274,5359,5359,5359,2271, - 332,205,214,4618,5359,204,211,212,213,215, - 5359,5359,5359,5359,5359,5359,5359,1056,2860,332, - 54,5359,206,3204,3050,5359,5359,5359,5359,5359, - 5359,5359,5359,1756,2575,217,207,208,209,210, - 291,292,293,294,2072,38,945,36,1025,4297, - 4680,34,1112,31,35,336,32,1455,38,3298, - 36,1025,4297,4680,34,1112,31,35,336,32, - 5359,5359,329,5359,2546,38,1798,382,1025,5359, - 3052,5359,1309,38,1798,382,1025,237,261,30, - 5359,5359,5359,2507,526,5359,5359,5359,1088,5359, - 30,317,2320,319,273,1088,312,1936,4605,5359, - 5359,5359,54,340,317,2320,319,5359,159,312, - 1936,1450,159,5359,5359,1756,52,5359,191,159, - 5359,5359,165,5359,531,231,2891,4512,5359,2563, - 5359,5359,5359,5359,1514,38,945,36,1025,4297, - 4680,34,1112,31,35,336,32,5359,5359,5359, - 30,5359,235,229,230,526,306,274,1514,38, - 945,36,1025,4297,4680,34,1112,31,35,336, - 32,5359,5359,30,340,3593,5359,5359,1088,159, - 242,245,248,251,3411,3686,3685,5359,5359,1321, - 2004,317,2320,319,3371,5359,312,1936,2864,5359, - 5359,5359,159,5359,5359,5359,408,3317,5359,5359, - 1277,1450,2532,5359,5359,317,2320,319,5359,5359, - 312,1936,1514,38,945,36,1025,4297,4680,34, - 1112,31,35,336,32,3110,1159,38,945,36, - 1025,2878,4680,34,1112,31,35,336,32,5359, - 5359,1173,38,945,36,1025,307,4772,34,1112, - 31,35,336,32,5359,5359,5359,5359,30,5359, - 5359,5359,5359,1088,5359,5359,395,5359,5359,317, - 2320,319,5359,5359,312,1936,5359,5359,5359,5359, - 5359,5359,5359,314,3251,319,1267,159,5359,3711, - 5359,2440,4270,5359,5359,5359,330,2737,317,2320, - 319,5359,5359,315,1936,1173,38,945,36,1025, - 228,4772,34,1112,31,35,336,32,1592,38, - 945,36,1025,3059,4680,34,1112,31,35,336, - 32,1087,399,4526,5359,5359,5359,5359,5359,5359, - 5359,1057,5359,5359,5359,1057,2440,3204,5359,5359, - 2440,3204,400,5359,3050,414,38,1798,382,1025, - 330,5359,317,2320,319,2644,30,313,1936,2644, - 5359,1088,5359,5359,5359,314,3251,319,5359,1912, - 1600,38,1798,382,1025,54,5359,2210,5359,30, - 3040,5359,2440,5359,1088,159,329,5359,1756,52, - 329,30,30,30,5359,2753,1088,1088,2440,2141, - 54,340,1600,38,1798,382,1025,5359,159,5359, - 5359,5359,519,1756,2681,5359,5359,340,2778,5359, - 159,159,3545,356,2684,2864,3390,356,5359,5359, - 1970,3527,54,401,403,5359,5359,522,2527,3002, - 3014,2864,2527,3002,3014,1756,52,501,38,1798, - 382,1025,5359,2458,5359,1979,2715,2947,5359,5359, - 5359,1912,1600,38,1798,382,1025,1600,38,1798, - 382,1025,5359,5359,5359,5359,5359,54,5359,1600, - 38,1798,382,1025,1600,38,1798,382,1025,5359, - 1756,52,54,2685,5359,5359,5359,54,2440,5359, - 5359,948,5359,5359,5359,1756,2899,5359,5359,54, - 1756,52,5359,5359,54,5359,2684,2644,5359,5359, - 5359,2792,1756,52,5359,5359,5359,1756,52,5359, - 5359,5359,30,2870,5359,5359,5359,526,3195,1600, - 38,1798,382,1025,2175,38,1798,382,1025,5359, - 5359,2347,38,1798,382,1025,340,5359,5359,5359, - 5359,159,30,5359,5359,3241,5359,526,5359,54, - 5359,1198,5359,5359,54,5359,5359,5359,5359,30, - 2864,54,1756,52,526,492,340,1756,52,5359, - 5359,159,1463,3286,1756,52,5359,5359,2548,30, - 5359,191,30,340,2440,2570,30,2440,159,5359, - 4512,2440,5359,5359,5359,5359,5359,5359,191,5359, - 489,491,5359,340,5359,5359,340,4512,5359,5359, - 340,5359,5359,5359,5359,5359,5359,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5359,2864,5359,5359, - 2864,5359,5359,5359,2864,5359,5359,5359,5359,496, - 5359,3617,494,5359,5359,5359,523,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5359,3395,5359,5359, - 5359,5359,5359,5359,5359,5359,5359,5359,5359,5359, - 5359,5359,5359,5359,3407,5359,0,5377,42,0, - 5376,42,0,500,33,0,441,935,0,41, - 5377,0,41,5376,0,129,2588,0,1,431, - 0,42,5377,0,42,5376,0,445,1377,0, - 444,1549,0,500,44,0,2786,95,0,500, - 381,0,36,382,0,382,36,0,33,381, - 0,381,33,0,500,33,381,0,2539,42, - 0,1,822,0,1,5631,0,1,5630,0, - 1,5629,0,1,5628,0,1,5627,0,1, - 5626,0,1,5625,0,1,5624,0,1,5623, - 0,1,5622,0,1,5621,0,1,5377,42, - 0,1,5376,42,0,1,895,0,5592,240, - 0,5591,240,0,5694,240,0,5693,240,0, - 5619,240,0,5618,240,0,5617,240,0,5616, - 240,0,5615,240,0,5614,240,0,5613,240, - 0,5612,240,0,5631,240,0,5630,240,0, - 5629,240,0,5628,240,0,5627,240,0,5626, - 240,0,5625,240,0,5624,240,0,5623,240, - 0,5622,240,0,5621,240,0,42,240,5377, - 0,42,240,5376,0,240,5400,0,53,5377, - 0,53,5376,0,48,5398,0,48,40,0, - 5377,53,0,5376,53,0,131,2588,0,130, - 2588,0,236,3086,0,30,507,0,5686,432, - 0,1262,432,0,1,96,0,52,40,0, - 1,5400,0,1,42,0,227,1,5400,0, - 227,1,42,0,227,406,0,40,5377,0, - 40,5376,0,5398,50,0,50,40,0,5377, - 39,0,5376,39,0,40,5377,2,0,40, - 5376,2,0,5369,397,0,5368,397,0,1, - 4448,0,1,3613,0,1,2539,0,227,405, - 0,5686,99,0,1262,99,0,1918,316,0, - 1,5686,0,1,1262,0,278,3634,0,1, - 778,0,1,3099,0,5367,1,0,488,4075, - 0,227,1,0,227,1,3526,0,5369,227, - 0,5368,227,0,3648,227,0,8,10,0, - 227,219,0,227,218,0,188,3644,0 + 117,117,118,118,150,150,149,149,121,121, + 151,83,83,84,84,86,87,85,52,46, + 152,152,53,51,82,82,153,153,142,142, + 122,123,123,77,77,154,154,62,62,62, + 58,58,57,63,63,67,67,55,55,55, + 91,91,101,100,100,61,61,59,59,60, + 60,48,103,103,103,95,95,95,96,97, + 97,97,98,98,107,107,107,109,109,108, + 108,195,195,92,92,178,178,178,178,178, + 125,45,45,156,177,177,126,126,126,126, + 179,179,30,30,116,127,127,127,127,110, + 110,120,120,120,158,159,159,159,159,159, + 159,159,159,159,182,182,180,180,181,181, + 160,160,160,160,161,183,112,111,111,184, + 184,162,162,162,162,104,104,104,185,185, + 10,186,186,187,163,155,155,164,164,165, + 166,166,7,7,8,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,66,68,68, + 169,169,128,128,129,129,129,129,129,129, + 3,4,170,170,167,167,130,130,130,80, + 81,76,157,157,113,113,188,188,188,131, + 131,124,124,189,189,171,171,958,38,1844, + 1763,1057,915,4522,34,1072,31,35,30,32, + 2695,261,29,27,55,1083,110,80,81,111, + 1153,30,1409,1363,1446,1418,676,273,1504,1457, + 1548,1538,1663,1586,1590,146,82,3044,161,147, + 2056,38,938,36,1057,984,4419,34,1072,31, + 35,62,32,2395,38,938,36,1057,231,2242, + 34,1072,31,35,30,32,852,261,29,27, + 55,1083,110,80,81,111,1153,30,1409,1363, + 1446,1418,737,1182,2531,234,229,230,1183,1374, + 274,2351,38,938,36,1057,185,2242,34,1072, + 31,35,30,32,852,261,29,27,55,1083, + 90,80,81,241,244,247,250,2877,507,2165, + 38,938,36,1057,2049,4419,34,1072,31,35, + 61,32,327,38,501,2944,1057,1344,566,1314, + 2821,3308,3607,3806,3855,4411,1540,38,938,36, + 1057,2447,2242,34,1072,31,35,2798,32,852, + 261,29,27,55,1083,110,80,81,111,1153, + 341,1409,1363,1446,1418,66,160,1504,1457,1548, + 1538,2300,1586,1590,146,350,856,506,147,1856, + 38,938,36,1057,2795,3324,34,1072,31,35, + 30,32,662,384,499,1008,507,1540,38,938, + 36,1057,2447,2242,34,1072,31,35,2798,32, + 852,261,29,27,55,1083,110,80,81,111, + 1153,341,1409,1363,1446,1418,1330,2875,1504,1457, + 1548,1538,4679,1586,1590,146,2546,1071,506,147, + 2138,1972,38,389,65,2795,1097,38,938,36, + 1057,3056,590,34,1072,43,35,507,2541,840, + 431,1870,38,938,36,1057,502,2242,34,1072, + 31,35,30,32,852,261,29,27,55,1083, + 110,80,81,111,1153,1209,1409,1363,1446,1418, + 1433,30,1504,1457,1548,1538,1092,1586,2912,167, + 327,38,2980,2794,47,2906,2873,1650,38,938, + 36,1057,1031,3324,34,1072,31,35,64,32, + 1814,508,1650,38,938,36,1057,502,3324,34, + 1072,31,35,63,32,327,38,281,1707,326, + 1097,38,938,36,1057,327,2744,34,1072,2010, + 35,3610,2582,38,277,1857,485,351,66,38, + 1719,46,1057,486,2894,45,1072,2873,1805,38, + 938,36,1057,2447,2242,34,1072,31,35,2798, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,341,1409,1363,1446,1418,2183,1853,1504, + 1457,1548,1538,786,1586,1590,146,1209,444,506, + 147,1097,38,938,36,1057,2795,1143,34,1072, + 2238,35,1021,1606,38,938,36,1057,507,2242, + 34,1072,31,35,30,32,852,261,29,27, + 55,1083,110,80,81,111,1153,30,1409,1363, + 1446,1418,1092,1399,1504,1457,1548,1538,2447,1586, + 1590,146,786,1209,376,147,327,38,1661,1624, + 1057,327,38,501,276,1057,159,2652,1588,38, + 501,3246,1057,2945,840,448,1293,379,1588,38, + 501,276,1057,1678,38,938,36,1057,503,2242, + 34,1072,31,35,30,32,852,261,29,27, + 55,1083,110,80,81,111,1153,1899,1409,1363, + 1446,1418,327,333,1504,1457,1548,1538,1667,1586, + 1590,146,2008,2099,376,147,327,38,501,280, + 1057,447,1206,2610,590,493,327,38,290,380, + 3220,2171,1979,38,938,36,1057,377,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,1153,1206,1409,1363,1446, + 1418,491,492,1504,1457,1548,1538,30,1586,1590, + 146,397,962,161,147,327,38,501,278,1057, + 327,3776,3635,327,38,501,3400,1057,327,38, + 1762,383,1057,943,1979,38,938,36,1057,381, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,111,1153,273,1409, + 1363,1446,1418,1056,2525,1504,1457,1548,1538,3183, + 1586,1590,146,385,417,370,147,590,1979,38, + 938,36,1057,4256,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,2490,1409,1363,1446,1418,386,417,1504, + 1457,1548,1538,566,1586,1590,146,3529,330,370, + 147,275,97,2708,1979,38,938,36,1057,2546, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,111,1153,30,1409, + 1363,1446,1418,3521,2005,1504,1457,1548,1538,369, + 1586,1590,146,395,1566,370,147,786,1914,38, + 938,36,1057,508,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,1707,1409,1363,1446,1418,49,2906,1504, + 1457,1548,1538,368,1586,1590,146,590,28,376, + 147,327,3179,4716,1740,38,938,36,1057,508, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,111,1153,1114,1409, + 1363,1446,1418,235,2572,1504,1457,1548,1538,366, + 1586,1590,146,30,74,145,147,880,1082,1979, + 38,938,36,1057,508,2242,34,1072,31,35, + 30,32,852,261,29,27,55,1083,110,80, + 81,111,1153,2724,1409,1363,1446,1418,2447,1207, + 1504,1457,1548,1538,374,1586,1590,146,2421,73, + 162,147,1979,38,938,36,1057,341,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,1153,153,1409,1363,1446, + 1418,3505,285,1504,1457,1548,1538,1006,1586,1590, + 146,312,428,158,147,1979,38,938,36,1057, + 508,2242,34,1072,31,35,30,32,852,261, + 29,27,55,1083,110,80,81,111,1153,1976, + 1409,1363,1446,1418,2447,2147,1504,1457,1548,1538, + 1116,1586,1590,146,1295,58,157,147,1979,38, + 938,36,1057,2652,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,30,1409,1363,1446,1418,2703,1092,1504, + 1457,1548,1538,2227,1586,1590,146,411,931,156, + 147,1979,38,938,36,1057,1209,2242,34,1072, + 31,35,30,32,852,261,29,27,55,1083, + 110,80,81,111,1153,30,1409,1363,1446,1418, + 2016,358,1504,1457,1548,1538,155,1586,1590,146, + 1091,3609,155,147,1979,38,938,36,1057,333, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,111,1153,30,1409, + 1363,1446,1418,2694,30,1504,1457,1548,1538,2240, + 1586,1590,146,1379,4206,154,147,1979,38,938, + 36,1057,508,2242,34,1072,31,35,30,32, + 852,261,29,27,55,1083,110,80,81,111, + 1153,2360,1409,1363,1446,1418,2346,30,1504,1457, + 1548,1538,3139,1586,1590,146,420,91,153,147, + 1979,38,938,36,1057,508,2242,34,1072,31, + 35,30,32,852,261,29,27,55,1083,110, + 80,81,111,1153,30,1409,1363,1446,1418,3062, + 30,1504,1457,1548,1538,2316,1586,1590,146,2025, + 57,152,147,1979,38,938,36,1057,1209,2242, + 34,1072,31,35,30,32,852,261,29,27, + 55,1083,110,80,81,111,1153,75,1409,1363, + 1446,1418,1795,30,1504,1457,1548,1538,3693,1586, + 1590,146,2148,1029,151,147,1979,38,938,36, + 1057,2495,2242,34,1072,31,35,30,32,852, + 261,29,27,55,1083,110,80,81,111,1153, + 1475,1409,1363,1446,1418,2588,30,1504,1457,1548, + 1538,2780,1586,1590,146,1379,56,150,147,1979, + 38,938,36,1057,508,2242,34,1072,31,35, + 30,32,852,261,29,27,55,1083,110,80, + 81,111,1153,2066,1409,1363,1446,1418,323,4751, + 1504,1457,1548,1538,1145,1586,1590,146,154,94, + 149,147,1979,38,938,36,1057,1209,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,1153,2024,1409,1363,1446, + 1418,2447,30,1504,1457,1548,1538,3811,1586,1590, + 146,589,1214,148,147,1979,38,938,36,1057, + 341,2242,34,1072,31,35,30,32,852,261, + 29,27,55,1083,110,80,81,111,1153,76, + 1409,1363,1446,1418,613,30,1504,1457,1548,1538, + 3759,1586,1590,146,1347,325,143,147,2303,38, + 938,36,1057,508,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,30,1409,1363,1446,1418,2713,30,1504, + 1457,1548,1538,2025,1586,1590,146,1209,348,192, + 147,2395,38,938,36,1057,855,2242,34,1072, + 31,35,30,32,852,261,29,27,55,1083, + 110,80,81,111,1153,1658,1409,1363,1446,1418, + 2576,3183,1504,1457,1548,1538,1155,1586,2912,167, + 2395,38,938,36,1057,2466,2242,34,1072,31, + 35,30,32,852,261,29,27,55,1083,110, + 80,81,111,1153,444,1409,1363,1446,1418,691, + 399,1504,1457,1548,1538,101,1586,2912,167,2095, + 331,1209,430,2488,327,38,1762,383,1057,1314, + 2395,38,938,36,1057,289,2242,34,1072,31, + 35,30,32,852,261,29,27,55,1083,110, + 80,81,111,1153,273,1409,1363,1446,1418,1056, + 952,1504,1457,1548,1538,3183,1586,2912,167,2395, + 38,938,36,1057,2061,2242,34,1072,31,35, + 30,32,852,261,29,27,55,1083,110,80, + 81,111,1153,282,1409,1363,1446,1418,1327,102, + 1504,1457,1548,1538,590,1586,2912,167,508,353, + 4771,1333,2692,508,2799,3196,521,78,1314,2395, + 38,938,36,1057,413,2242,34,1072,31,35, + 30,32,852,261,29,27,55,1083,110,80, + 81,111,1153,1710,1409,1363,1446,1418,1753,30, + 1504,1457,1548,1538,2569,1586,2912,167,2439,38, + 938,36,1057,412,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,283,1409,1363,1446,1418,590,1769,1504, + 1457,1548,1538,4776,1586,2912,167,98,2576,588, + 1206,590,1522,38,1762,383,1057,4796,2395,38, + 938,36,1057,415,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,54,1409,1363,1446,1418,2576,299,1504, + 1457,1548,1538,675,2629,1752,878,2395,38,938, + 36,1057,3770,2242,34,1072,31,35,30,32, + 852,261,29,27,55,1083,110,80,81,111, + 1153,762,1409,1363,1446,1418,1155,182,1504,1457, + 1548,2586,2395,38,938,36,1057,2080,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,1153,1206,1409,1363,1446, + 1418,388,417,1504,1457,2570,2395,38,938,36, + 1057,849,2242,34,1072,31,35,30,32,852, + 261,29,27,55,1083,110,80,81,111,1153, + 30,1409,1363,1446,1418,3817,2618,1504,2572,2395, + 38,938,36,1057,324,2242,34,1072,31,35, + 30,32,852,261,29,27,55,1083,110,80, + 81,111,1153,670,1409,1363,1446,2539,2395,38, + 938,36,1057,2164,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,1153,3262,1409,1363,1446,2560,2483,38,1762, + 383,1057,3078,3498,30,3196,757,387,417,3781, + 236,261,2520,38,279,590,1259,38,1762,383, + 1057,4808,2395,38,938,36,1057,273,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,1153,273,1409,1363,2239, + 1800,3762,3761,2395,38,938,36,1057,231,2242, + 34,1072,31,35,30,32,852,261,29,27, + 55,1083,110,80,81,111,1153,1076,1409,1363, + 2283,1317,1722,38,441,234,229,230,4788,2424, + 274,327,38,1762,383,1057,327,38,1762,383, + 1057,327,38,1762,383,1057,1958,38,441,3108, + 2544,2576,4788,241,244,247,250,2877,30,2466, + 1297,54,1854,2745,2049,1327,54,327,38,290, + 77,37,30,2681,1752,667,1410,3101,2558,51, + 2821,3308,3607,3806,3855,4411,2395,38,938,36, + 1057,198,2242,34,1072,31,35,30,32,852, + 261,29,27,55,1083,110,80,81,111,1153, + 45,1409,1363,2311,2395,38,938,36,1057,1093, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,111,1153,786,1409, + 1363,2361,1105,38,938,36,1057,4361,4684,34, + 1072,31,35,337,32,2395,38,938,36,1057, + 508,2242,34,1072,31,35,30,32,852,261, + 29,27,55,1083,110,80,81,111,1153,2189, + 1409,2413,2196,352,1425,1525,434,3518,3563,2447, + 521,1786,1851,1341,3179,72,2576,2733,4704,318, + 2327,320,4229,2558,313,1771,1831,508,2652,349, + 438,3518,3563,327,38,1762,383,1057,3664,3307, + 1083,38,938,36,1057,3052,4684,34,1072,31, + 35,337,32,3047,2576,2631,197,342,830,648, + 347,435,71,421,786,3265,2395,38,938,36, + 1057,508,2242,34,1072,31,35,30,32,852, + 261,29,27,55,1083,110,80,81,111,1153, + 1425,1409,2456,2576,201,2447,357,318,2327,320, + 1864,1975,313,1771,1767,1968,70,349,1361,1729, + 3054,2869,3126,3142,2652,3183,1833,3102,1446,38, + 938,36,1057,4480,4739,34,1072,31,35,337, + 32,2606,508,199,284,342,830,648,347,92, + 363,1057,106,1943,238,261,2447,3183,1531,38, + 938,36,1057,4361,4684,34,1072,31,35,337, + 32,1019,2069,3188,2799,2652,2831,69,512,2520, + 38,277,349,330,420,318,2327,320,3092,508, + 313,1771,357,240,1187,778,435,1387,38,2874, + 1495,1057,231,4647,1941,1284,330,3259,3126,3142, + 342,830,648,347,2142,318,2327,320,340,4583, + 313,1771,2913,1466,1882,349,2221,54,1092,239, + 229,230,2107,2692,30,516,508,508,349,1092, + 1752,1006,3069,357,1135,327,38,1762,383,1057, + 306,310,159,342,830,648,347,100,2153,3126, + 3142,517,525,159,2050,1021,342,830,648,347, + 3072,60,59,1728,1943,424,2395,38,938,36, + 1057,3785,2242,34,1072,31,35,30,32,852, + 261,29,27,55,1083,110,80,81,111,1153, + 2059,2059,2395,38,938,36,1057,1373,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,1153,2945,2063,1219,38, + 3433,36,1057,4480,4739,34,1072,31,35,337, + 32,2395,38,1844,1763,1057,513,2242,34,1072, + 31,35,30,32,852,261,29,27,55,1083, + 110,80,81,88,175,332,333,2618,334,527, + 30,37,1057,1092,1056,1092,1492,2447,3183,30, + 3183,2447,1021,330,1092,318,2327,320,228,1043, + 313,1771,2576,159,532,3183,2652,163,2196,3628, + 341,334,1,2277,183,1364,1092,527,159,203, + 214,4612,2618,202,211,212,213,215,2620,4583, + 172,2466,508,373,1068,936,228,330,2508,330, + 163,159,220,186,170,171,173,174,175,176, + 177,2277,183,2945,331,2152,1442,203,214,4612, + 2447,202,211,212,213,215,349,321,172,1341, + 3179,2576,430,3476,357,3069,184,1470,373,228, + 1526,187,170,171,173,174,175,176,177,2153, + 3126,3142,329,333,344,830,648,347,408,3457, + 205,214,4612,2193,204,211,212,213,215,2139, + 1685,3760,508,327,38,1762,383,1057,2145,1243, + 2640,206,30,3173,2576,2447,1963,3125,327,38, + 1762,383,1057,371,216,207,208,209,210,291, + 292,293,294,54,228,93,2631,105,106,3082, + 327,38,1762,383,1057,322,1752,3105,273,1575, + 4302,3245,521,2753,303,205,214,4612,2447,204, + 211,212,213,215,30,1314,2589,2618,2568,2447, + 54,327,38,1762,383,1057,206,228,3173,508, + 284,30,30,1752,2859,2214,1092,3216,341,216, + 207,208,209,210,291,292,293,294,205,214, + 4612,423,204,211,212,213,215,508,2158,3188, + 159,338,2795,30,2380,4302,3337,2764,3190,206, + 2670,3173,2447,515,1848,2530,2846,2511,1023,297, + 508,2447,216,207,208,209,210,291,292,293, + 294,228,439,2378,327,38,1762,383,1057,512, + 228,327,38,1762,383,1057,30,1314,4302,3594, + 519,3233,205,214,4612,3194,204,211,212,213, + 215,205,214,4612,54,204,211,212,213,215, + 508,422,2296,206,2570,3173,30,1752,878,231, + 30,3297,206,3394,3173,1092,216,207,208,209, + 210,291,292,293,294,487,207,208,209,210, + 291,292,293,294,2749,3600,243,229,230,159, + 2377,304,4302,3634,2395,38,938,36,1057,2717, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,111,2100,2395,38, + 938,36,1057,1632,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 111,2151,2395,38,938,36,1057,2612,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,111,2228,1300,38,938,36, + 1057,1940,4739,34,1072,31,35,337,32,327, + 38,1762,383,1057,1972,38,389,1851,414,38, + 1762,383,1057,4704,30,2653,2543,513,262,3715, + 2838,2507,30,527,508,334,1092,963,2656,440, + 1092,1267,2576,1972,38,389,2447,4328,54,2576, + 508,331,228,318,2327,320,2576,159,314,1771, + 159,1752,2884,349,163,228,349,2277,183,3638, + 165,527,1148,203,214,4612,2618,202,211,212, + 213,215,4453,2686,172,3751,1091,400,4539,302, + 228,344,830,648,347,159,4660,3771,170,171, + 173,174,175,176,177,2277,183,401,508,3173, + 2690,203,214,4612,1314,202,211,212,213,215, + 436,1833,172,2507,3636,527,2210,1386,527,508, + 2632,2447,514,3522,2916,179,170,171,173,174, + 175,176,177,3247,228,3150,30,3504,508,159, + 341,1092,159,3836,1314,1661,2709,2092,523,2277, + 183,520,165,527,3556,203,214,4612,2702,202, + 211,212,213,215,2795,159,172,508,296,419, + 2576,2703,228,375,2576,2761,523,159,231,190, + 170,171,173,174,175,176,177,2277,183,402, + 404,3364,2706,203,214,4612,2704,202,211,212, + 213,215,3788,1021,172,246,229,230,295,378, + 221,669,2712,4628,298,3141,2720,3839,170,171, + 173,174,175,176,177,2072,38,938,36,1057, + 4480,4684,34,1072,31,35,337,32,2395,38, + 938,36,1057,2725,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 89,610,2716,334,2945,2718,527,2735,1092,1399, + 2507,2736,2729,2038,2447,1092,2509,2738,2447,88, + 2726,2448,318,2327,320,228,2737,313,1771,3511, + 159,2685,163,2652,508,2739,2447,228,2576,159, + 2277,183,1284,1968,333,3305,203,214,4612,165, + 202,211,212,213,215,2652,1739,172,205,214, + 4612,1021,204,211,212,213,215,1021,508,3884, + 193,170,171,173,174,175,176,177,194,206, + 697,3173,1328,2745,2743,527,2751,306,310,169, + 5308,5308,509,207,208,209,210,291,292,293, + 294,493,2917,3922,228,2051,5308,3660,5308,159, + 5308,5308,3536,5308,5308,5308,30,231,3785,2277, + 183,2447,2945,493,5308,203,214,4612,2945,202, + 211,212,213,215,784,5308,172,490,492,527, + 341,5308,5308,5308,249,229,230,5308,5308,189, + 170,171,173,174,175,176,177,5308,228,490, + 492,2189,333,159,2795,5308,231,2582,333,5308, + 5308,5308,871,2277,183,5308,1891,527,3481,203, + 214,4612,5308,202,211,212,213,215,5308,5308, + 172,5308,5308,252,229,230,228,2581,5308,5308, + 3766,159,1092,196,170,171,173,174,175,176, + 177,2277,183,5308,5308,5308,5308,203,214,4612, + 5308,202,211,212,213,215,159,5308,172,5308, + 5308,5308,5308,5308,5308,5308,2783,200,5308,5308, + 5308,195,170,171,173,174,175,176,177,2395, + 38,938,36,1057,5308,2242,34,1072,31,35, + 30,32,852,261,29,27,55,1083,110,80, + 81,87,2395,38,938,36,1057,5308,2242,34, + 1072,31,35,30,32,852,261,29,27,55, + 1083,110,80,81,86,2395,38,938,36,1057, + 5308,2242,34,1072,31,35,30,32,852,261, + 29,27,55,1083,110,80,81,85,2395,38, + 938,36,1057,5308,2242,34,1072,31,35,30, + 32,852,261,29,27,55,1083,110,80,81, + 84,2395,38,938,36,1057,5308,2242,34,1072, + 31,35,30,32,852,261,29,27,55,1083, + 110,80,81,83,2395,38,938,36,1057,5308, + 2242,34,1072,31,35,30,32,852,261,29, + 27,55,1083,110,80,81,82,2252,38,938, + 36,1057,5308,2242,34,1072,31,35,30,32, + 852,261,29,27,55,1083,110,80,81,108, + 2395,38,938,36,1057,5308,2242,34,1072,31, + 35,30,32,852,261,29,27,55,1083,110, + 80,81,113,2395,38,938,36,1057,5308,2242, + 34,1072,31,35,30,32,852,261,29,27, + 55,1083,110,80,81,112,2395,38,938,36, + 1057,5308,2242,34,1072,31,35,30,32,852, + 261,29,27,55,1083,110,80,81,109,2856, + 5308,5308,30,5308,2447,5308,5308,1092,2938,5308, + 5308,5308,5308,2447,5308,30,5308,5308,5308,5308, + 2447,5308,5308,228,5308,5308,327,38,1762,383, + 1057,159,228,334,5308,334,5308,5308,1092,341, + 1092,2822,5308,5308,205,214,4612,5308,204,211, + 212,213,215,205,214,4612,54,204,211,212, + 213,215,163,2795,163,206,5308,3173,5308,1752, + 892,5308,2671,5308,206,1892,3173,2447,305,207, + 208,209,210,291,292,293,294,510,207,208, + 209,210,291,292,293,294,228,5308,327,38, + 1762,383,1057,1455,38,3433,36,1057,4480,4684, + 34,1072,31,35,337,32,5308,205,214,4612, + 5308,204,211,212,213,215,5308,5308,54,5308, + 5308,1056,3182,5308,3287,5308,5308,3183,206,5308, + 3173,1752,1312,5308,5308,5308,5308,5308,5308,5308, + 5308,217,207,208,209,210,291,292,293,294, + 318,2327,320,5308,5308,313,1771,1514,38,938, + 36,1057,4480,4684,34,1072,31,35,337,32, + 1364,2546,38,1762,383,1057,330,3498,5308,501, + 38,1762,383,1057,237,261,1514,38,938,36, + 1057,4480,4684,34,1072,31,35,337,32,30, + 30,273,30,5308,1092,1092,5308,527,5308,54, + 5308,5308,3476,2507,318,2327,320,5308,1092,313, + 1771,5308,1752,937,5308,5308,341,5308,159,159, + 5308,159,231,2466,1284,5308,5308,5308,1977,3657, + 1056,1384,159,318,2327,320,3183,5308,313,1771, + 2795,5308,165,409,3457,5308,5308,5308,5308,235, + 229,230,1339,3102,274,1514,38,938,36,1057, + 4480,4684,34,1072,31,35,337,32,5308,307, + 310,5308,2215,38,1762,383,1057,242,245,248, + 251,2877,5308,5308,5308,330,5308,5308,2049,1159, + 38,938,36,1057,3008,4684,34,1072,31,35, + 337,32,54,5308,5308,3784,5308,5308,5308,5308, + 5308,5308,318,2327,320,1752,1222,313,1771,5308, + 5308,4599,5308,5308,5308,5308,1148,5308,5308,396, + 5308,5308,3834,1173,38,938,36,1057,5308,4739, + 34,1072,31,35,337,32,315,3362,320,1173, + 38,938,36,1057,5308,4739,34,1072,31,35, + 337,32,1592,38,938,36,1057,2808,4684,34, + 1072,31,35,337,32,5308,5308,5308,1349,5308, + 5308,5308,5308,2447,4328,5308,5308,5308,331,5308, + 318,2327,320,5308,5308,316,1771,1309,38,1762, + 383,1057,228,5308,331,5308,318,2327,320,5308, + 2507,314,1771,5308,5308,1092,5308,5308,5308,315, + 3362,320,5308,1091,400,4539,5308,54,5308,414, + 38,1762,383,1057,1600,38,1762,383,1057,159, + 1752,52,5308,1790,401,5308,3173,30,5308,165, + 5308,2462,527,5308,1600,38,1762,383,1057,54, + 5308,5308,5308,5308,54,5308,501,38,1762,383, + 1057,341,1752,52,5308,5308,159,1752,2583,5308, + 5308,5308,3150,875,54,5308,1293,5308,3198,1600, + 38,1762,383,1057,5308,2795,54,1752,52,5308, + 5308,1600,38,1762,383,1057,5308,1642,2723,1752, + 52,5308,3818,5308,5308,5308,1790,5308,5308,54, + 951,1600,38,1762,383,1057,1600,38,1762,383, + 1057,54,1752,2689,5308,5308,402,405,1600,38, + 1762,383,1057,3198,1752,52,2175,38,1762,383, + 1057,54,5308,5308,5308,2925,54,5308,2347,38, + 1762,383,1057,5308,1752,52,5308,30,54,1752, + 52,5308,527,5308,30,3251,54,5308,5308,527, + 3331,1752,52,5308,5308,5308,5308,5308,54,1752, + 52,341,3489,5308,30,5308,159,5308,341,527, + 1086,1752,52,159,30,30,191,5308,5308,2447, + 2447,30,2577,191,30,4505,2447,5308,341,2447, + 30,5308,4505,159,5308,2447,5308,5308,341,341, + 5308,5308,5308,191,5308,341,5308,5308,341,5308, + 5308,5308,4505,5308,341,5308,5308,5308,5308,5308, + 5308,5308,2795,2795,5308,5308,5308,5308,5308,2795, + 5308,5308,2795,5308,1934,2148,5308,5308,2795,5308, + 5308,497,5308,5308,495,5308,5308,5308,5308,5308, + 524,5308,3360,5308,5308,5308,5308,5308,5308,3514, + 5308,5308,5308,5308,5308,5308,5308,5308,5308,5308, + 5308,5308,5308,5308,5308,5308,5308,5308,5308,3530, + 5308,0,42,5326,0,42,5325,0,501,33, + 0,442,607,0,41,5326,0,41,5325,0, + 129,2596,0,1,432,0,446,947,0,445, + 1003,0,501,44,0,831,95,0,501,382, + 0,36,383,0,383,36,0,33,382,0, + 382,33,0,501,33,382,0,42,2551,0, + 1,792,0,1,5580,0,1,5579,0,1, + 5578,0,1,5577,0,1,5576,0,1,5575, + 0,1,5574,0,1,5573,0,1,5572,0, + 1,5571,0,1,5570,0,42,1,5326,0, + 42,1,5325,0,898,1,0,5541,240,0, + 5540,240,0,5644,240,0,5643,240,0,5568, + 240,0,5567,240,0,5566,240,0,5565,240, + 0,5564,240,0,5563,240,0,5562,240,0, + 5561,240,0,5580,240,0,5579,240,0,5578, + 240,0,5577,240,0,5576,240,0,5575,240, + 0,5574,240,0,5573,240,0,5572,240,0, + 5571,240,0,5570,240,0,42,240,5326,0, + 42,240,5325,0,5349,240,0,53,5326,0, + 53,5325,0,48,5347,0,48,40,0,5326, + 53,0,5325,53,0,131,2596,0,130,2596, + 0,236,3048,0,30,508,0,5636,433,0, + 1127,433,0,1,96,0,52,40,0,5349, + 1,0,42,1,0,5349,227,1,0,42, + 227,1,0,227,407,0,40,5326,0,40, + 5325,0,5347,50,0,50,40,0,5326,39, + 0,5325,39,0,40,5326,2,0,40,5325, + 2,0,5318,398,0,5317,398,0,1,4426, + 0,1,1876,0,1,2551,0,227,406,0, + 5636,99,0,1127,99,0,1796,317,0,1, + 5636,0,1,1127,0,278,3515,0,1,781, + 0,1,3494,0,5316,1,0,489,3763,0, + 227,1,0,227,1,3682,0,5318,227,0, + 5317,227,0,3769,227,0,8,10,0,227, + 219,0,227,218,0,188,3830,0 }; }; public final static char baseAction[] = BaseAction.baseAction; @@ -1406,308 +1396,308 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface TermAction { public final static char termAction[] = {0, - 5359,5334,5331,5331,5331,5331,5331,5331,5331,5344, + 5308,5283,5280,5280,5280,5280,5280,5280,5280,5293, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,5341,1,1,1, + 1,1,1,1,1,1,5290,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5359,1,1,1,2554,1, - 561,1,1,1,1,1,1411,1,1,1, - 5359,3508,1,1,1,41,5022,5019,1,1, - 1,5366,733,5537,2379,3571,2861,2191,2736,3524, - 3422,160,3569,1068,3550,3631,3540,8,5347,5347, - 5347,5347,5347,5347,5347,5347,5347,5347,5347,5347, - 5347,5347,5347,5347,5347,5347,5347,5347,5347,5347, - 5347,5347,5347,5347,5347,5347,1888,5347,5347,5347, - 5347,5347,5347,5347,5347,5347,5347,5347,5347,5347, - 5347,5359,5347,5347,5347,5347,5347,5347,5347,5347, - 5347,5347,5347,5347,5347,5347,5347,1372,5347,5347, - 5347,5347,124,5359,140,5347,5347,5347,5347,5359, - 5347,5347,5347,5347,5347,5347,5347,5347,188,5347, - 5347,5347,5347,5347,5359,5334,5331,5331,5331,5331, - 5331,5331,5331,5338,1,1,1,1,1,1, + 1,1,1,1,5308,1,1,1,2423,1, + 562,1,1,1,1,1,1140,1,1,1, + 5308,3648,1,1,1,41,4977,4974,1,1, + 1,5315,780,5486,2386,3733,2706,2198,2561,3661, + 3508,160,3706,885,3702,3947,3686,8,5296,5296, + 5296,5296,5296,5296,5296,5296,5296,5296,5296,5296, + 5296,5296,5296,5296,5296,5296,5296,5296,5296,5296, + 5296,5296,5296,5296,5296,5296,1895,5296,5296,5296, + 5296,5296,5296,5296,5296,5296,5296,5296,5296,5296, + 5296,5308,5296,5296,5296,5296,5296,5296,5296,5296, + 5296,5296,5296,5296,5296,5296,5296,1379,5296,5296, + 5296,5296,124,5308,140,5296,5296,5296,5296,5308, + 5296,5296,5296,5296,5296,5296,5296,5296,188,5296, + 5296,5296,5296,5296,5308,5283,5280,5280,5280,5280, + 5280,5280,5280,5287,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 5341,1,1,2520,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,2662,1, - 1,1,2554,1,561,1,1,1,1,1, - 1411,1,1,1,121,3508,1,1,1,503, - 2657,2748,1,1,1,2904,2826,5537,2379,3571, - 2861,2191,2736,3524,3422,2280,3569,1068,3550,3631, - 3540,5359,5334,5331,5331,5331,5331,5331,5331,5331, - 5338,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,5341,1,1, - 5356,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,905,1,1,1,2554, - 1,561,1,1,1,1,1,1411,1,1, - 1,5359,3508,1,1,1,5359,5376,5377,1, - 1,1,445,1,5537,2379,3571,2861,2191,2736, - 3524,3422,164,3569,1068,3550,3631,3540,5359,5334, - 5331,5331,5331,5331,5331,5331,5331,5338,1,1, + 5290,1,1,3244,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2701,1, + 1,1,2423,1,562,1,1,1,1,1, + 1140,1,1,1,121,3648,1,1,1,504, + 2665,2756,1,1,1,2982,2956,5486,2386,3733, + 2706,2198,2561,3661,3508,2287,3706,885,3702,3947, + 3686,5308,5283,5280,5280,5280,5280,5280,5280,5280, + 5287,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,5290,1,1, + 5305,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,908,1,1,1,2423, + 1,562,1,1,1,1,1,1140,1,1, + 1,5308,3648,1,1,1,5308,5325,5326,1, + 1,1,446,1,5486,2386,3733,2706,2198,2561, + 3661,3508,164,3706,885,3702,3947,3686,5308,5283, + 5280,5280,5280,5280,5280,5280,5280,5287,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5341,1,1,5359,1,1, + 1,1,1,1,5290,1,1,5308,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,5037,1,1,1,2554,1,561,1, - 1,1,1,1,1411,1,1,1,5359,3508, - 1,1,1,5359,5201,5198,1,1,1,444, - 164,5537,2379,3571,2861,2191,2736,3524,3422,358, - 3569,1068,3550,3631,3540,5359,5334,5331,5331,5331, - 5331,5331,5331,5331,5338,1,1,1,1,1, + 1,1,4986,1,1,1,2423,1,562,1, + 1,1,1,1,1140,1,1,1,5308,3648, + 1,1,1,5308,5150,5147,1,1,1,445, + 164,5486,2386,3733,2706,2198,2561,3661,3508,359, + 3706,885,3702,3947,3686,5308,5283,5280,5280,5280, + 5280,5280,5280,5280,5287,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,5341,1,1,5359,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,5040, - 1,1,1,2554,1,561,1,1,1,1, - 1,1411,1,1,1,1611,3508,1,1,1, - 53,5213,5210,1,1,1,345,5359,5537,2379, - 3571,2861,2191,2736,3524,3422,5365,3569,1068,3550, - 3631,3540,5359,5334,5331,5331,5331,5331,5331,5331, - 5331,5338,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,5341,1, - 1,5359,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,798,1,1,1, - 2554,1,561,1,1,1,1,1,1411,1, - 1,1,5359,3508,1,1,1,128,5359,42, - 1,1,1,5400,5364,5537,2379,3571,2861,2191, - 2736,3524,3422,5359,3569,1068,3550,3631,3540,5359, - 5334,5331,5331,5331,5331,5331,5331,5331,5338,1, + 1,5290,1,1,5308,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,4989, + 1,1,1,2423,1,562,1,1,1,1, + 1,1140,1,1,1,1489,3648,1,1,1, + 53,5162,5159,1,1,1,346,5308,5486,2386, + 3733,2706,2198,2561,3661,3508,5314,3706,885,3702, + 3947,3686,5308,5283,5280,5280,5280,5280,5280,5280, + 5280,5287,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,5290,1, + 1,5308,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,801,1,1,1, + 2423,1,562,1,1,1,1,1,1140,1, + 1,1,5308,3648,1,1,1,128,5308,42, + 1,1,1,5349,5313,5486,2386,3733,2706,2198, + 2561,3661,3508,5308,3706,885,3702,3947,3686,5308, + 5283,5280,5280,5280,5280,5280,5280,5280,5287,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,5341,1,1,5359,1, + 1,1,1,1,1,5290,1,1,5308,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,2699,1,1,1,2554,1,561, - 1,1,1,1,1,1411,1,1,1,123, - 3508,1,1,1,127,2657,2748,1,1,1, - 2904,2826,5537,2379,3571,2861,2191,2736,3524,3422, - 5359,3569,1068,3550,3631,3540,5359,5334,5331,5331, - 5331,5331,5331,5331,5331,5338,1,1,1,1, + 1,1,1,2716,1,1,1,2423,1,562, + 1,1,1,1,1,1140,1,1,1,123, + 3648,1,1,1,127,2665,2756,1,1,1, + 2982,2956,5486,2386,3733,2706,2198,2561,3661,3508, + 5308,3706,885,3702,3947,3686,5308,5283,5280,5280, + 5280,5280,5280,5280,5280,5287,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,5341,1,1,5359,1,1,1,1, + 1,1,5290,1,1,5308,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1306,1,1,1,2554,1,561,1,1,1, - 1,1,1411,1,1,1,122,3508,1,1, - 1,126,2657,2748,1,1,1,2904,2826,5537, - 2379,3571,2861,2191,2736,3524,3422,5359,3569,1068, - 3550,3631,3540,5359,5334,5331,5331,5331,5331,5331, - 5331,5331,5338,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,5341, - 1,1,5359,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1789,1,1, - 1,2554,1,561,1,1,1,1,1,1411, - 1,1,1,5359,3508,1,1,1,125,2657, - 2748,1,1,1,301,5359,5537,2379,3571,2861, - 2191,2736,3524,3422,5659,3569,1068,3550,3631,3540, - 5359,3526,1,1,1,1,1,1,1,5369, + 1268,1,1,1,2423,1,562,1,1,1, + 1,1,1140,1,1,1,122,3648,1,1, + 1,126,2665,2756,1,1,1,2982,2956,5486, + 2386,3733,2706,2198,2561,3661,3508,5308,3706,885, + 3702,3947,3686,5308,5283,5280,5280,5280,5280,5280, + 5280,5280,5287,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5290, + 1,1,5308,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1667,1,1, + 1,2423,1,562,1,1,1,1,1,1140, + 1,1,1,5308,3648,1,1,1,125,2665, + 2756,1,1,1,301,5308,5486,2386,3733,2706, + 2198,2561,3661,3508,5608,3706,885,3702,3947,3686, + 5308,3682,1,1,1,1,1,1,1,5318, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,5368,1,1,3664, + 1,1,1,1,1,1,5317,1,1,3866, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5359,1,1,1,2554,1, - 561,1,1,1,1,1,1411,1,1,1, - 136,3508,1,1,1,5359,2657,2748,1,1, - 1,1832,114,5537,2379,3571,2861,2191,2736,3524, - 3422,117,3569,1068,3550,3631,3540,42,5034,5031, - 2949,895,3293,3882,3613,3905,5359,1217,3859,3836, - 5623,5621,5630,5629,5625,5626,5624,5627,5628,5631, - 5622,3951,3928,5359,5615,5382,4440,3813,714,875, - 5384,764,620,775,5385,5383,606,5378,5380,5381, - 5379,5359,5618,5693,1327,134,5694,5359,5612,5619, - 5591,5617,5616,582,5613,5614,5592,5359,1,5749, - 333,3477,223,5359,5359,611,5750,5751,382,2349, - 5359,5055,3997,3086,5055,5006,5055,5052,4020,5052, - 5052,3997,342,42,42,3477,5400,4020,1262,5615, - 5686,3704,5052,5052,5055,42,1,5243,5243,5400, - 5240,1262,1262,5686,5686,359,5693,5618,5693,5694, - 5359,5694,5052,5612,5619,5591,5617,5616,798,5613, - 5614,5592,1,5111,5107,2722,5115,2539,5052,3613, - 142,138,141,5052,5052,5052,5359,5376,5377,5052, - 5052,2539,798,3613,363,5111,5107,2722,5115,2539, - 1,3613,1,428,4082,5052,5052,5052,5052,5052, - 5052,5052,5052,5052,5052,5052,5052,5052,5052,5052, - 5052,5052,5052,5052,5052,5052,5052,5052,5052,5052, - 5052,5052,798,359,381,5052,5052,5061,5052,5052, - 5061,359,5061,5058,104,5058,5058,1845,1,5111, - 5107,5289,5115,5295,798,5292,5359,5369,5058,5058, - 5061,1149,5359,5010,5007,4448,895,2539,1262,3613, - 5686,431,1,1,5368,1,388,5028,5064,5028, - 381,2315,2241,2280,1802,1759,1716,1673,1630,1587, - 1544,1501,1458,1415,5058,417,118,4380,5359,5058, - 5058,5058,3366,5359,4701,5058,5058,5363,5359,5111, - 5107,4448,5115,2539,5313,3613,5310,5783,5784,5785, - 500,5058,5058,5058,5058,5058,5058,5058,5058,5058, - 5058,5058,5058,5058,5058,5058,5058,5058,5058,5058, - 5058,5058,5058,5058,5058,5058,5058,5058,5359,5376, - 5377,5058,5058,2057,5058,5058,5359,5250,5250,227, - 5246,227,227,227,227,5254,1,4092,2712,1, + 1,1,1,1,5308,1,1,1,2423,1, + 562,1,1,1,1,1,1140,1,1,1, + 136,3648,1,1,1,5308,2665,2756,1,1, + 1,1704,114,5486,2386,3733,2706,2198,2561,3661, + 3508,117,3706,885,3702,3947,3686,42,4965,4962, + 987,898,3021,4045,1876,4068,5308,1197,4022,3999, + 5572,5570,5579,5578,5574,5575,5573,5576,5577,5580, + 5571,4114,4091,5308,5564,5331,4442,3728,706,777, + 5333,716,621,735,5334,5332,575,5327,5329,5330, + 5328,5308,5567,5643,1334,134,5644,5308,5561,5568, + 5540,5566,5565,583,5562,5563,5541,5308,1,5699, + 334,2851,223,5308,5308,766,5700,5701,383,2356, + 5308,5004,4160,3048,5004,4961,5004,5001,4183,5001, + 5001,4160,343,42,42,2851,5349,4183,1127,5564, + 5636,4245,5001,5001,5004,42,1,5192,5192,5349, + 5189,1127,1127,5636,5636,360,5643,5567,5643,5644, + 5308,5644,5001,5561,5568,5540,5566,5565,801,5562, + 5563,5541,1,5060,5056,2730,5064,2551,5001,1876, + 142,138,141,5001,5001,5001,5308,5325,5326,5001, + 5001,2551,801,1876,364,5060,5056,2730,5064,2551, + 1,1876,1,429,4854,5001,5001,5001,5001,5001, + 5001,5001,5001,5001,5001,5001,5001,5001,5001,5001, + 5001,5001,5001,5001,5001,5001,5001,5001,5001,5001, + 5001,5001,801,360,382,5001,5001,5010,5001,5001, + 5010,360,5010,5007,104,5007,5007,1852,1,5060, + 5056,5238,5064,5244,801,5241,5308,5318,5007,5007, + 5010,1154,5308,4965,4962,4426,898,2551,1127,1876, + 5636,432,1,1,5317,1,389,4983,5013,4983, + 382,2322,2248,2287,1809,1766,1723,1680,1637,1594, + 1551,1508,1465,1422,5007,418,118,3059,5308,5007, + 5007,5007,3452,5308,4439,5007,5007,5312,5308,5060, + 5056,4426,5064,2551,5262,1876,5259,5733,5734,5735, + 501,5007,5007,5007,5007,5007,5007,5007,5007,5007, + 5007,5007,5007,5007,5007,5007,5007,5007,5007,5007, + 5007,5007,5007,5007,5007,5007,5007,5007,5308,5325, + 5326,5007,5007,2064,5007,5007,5308,5199,5199,227, + 5195,227,227,227,227,5203,1,3497,2790,1, 1,1,1,1,1,1,1,1,1,1, - 2063,5359,227,1,132,488,137,3342,3318,342, - 5010,5007,2722,895,2539,1262,3613,5686,53,5201, - 5198,1,1,5359,849,1,133,1,1,1, - 1,1,5367,1,1,1,5362,5359,1,5359, - 5034,5031,116,5400,1,1,1,406,227,5761, - 287,5376,5377,5359,8628,8628,5359,5846,5359,5250, - 5250,227,5246,227,227,227,227,5298,1,798, + 2070,5308,227,1,132,489,137,3428,3404,343, + 4965,4962,2730,898,2551,1127,1876,5636,53,5150, + 5147,1,1,5308,1986,1,133,1,1,1, + 1,1,5316,1,1,1,5311,5308,1,5308, + 4965,4962,116,5349,1,1,1,407,227,5711, + 287,5325,5326,5308,8578,8578,5308,5796,5308,5199, + 5199,227,5195,227,227,227,227,5247,1,801, 30,1,1,1,1,1,1,1,1,1, - 1,1,5398,95,227,1,5046,488,5359,1574, - 5783,5784,5785,2057,5366,224,389,5034,5031,3408, - 5400,2411,2382,1,1,2349,849,1,1,1, - 1,1,1,1,5359,1,1,1,5319,139, - 1,2713,5615,2411,2382,42,1,1,1,405, - 227,5761,3997,5359,1,5225,5225,3423,4020,5846, - 5618,5693,344,359,5694,1660,5612,5619,5591,5617, - 5616,354,5613,5614,5592,309,5111,5107,4448,5115, - 2539,5313,3613,5310,1,5111,5107,4448,5115,2539, - 5322,3613,5783,5784,5785,5359,1,1,1,1, + 1,1,5347,95,227,1,4995,489,5308,1532, + 5733,5734,5735,2064,5315,224,390,4965,4962,3523, + 5349,2418,2389,1,1,2356,1986,1,1,1, + 1,1,1,1,5308,1,1,1,5268,139, + 1,2791,5564,2418,2389,42,1,1,1,406, + 227,5711,4160,5308,1,5174,5174,3506,4183,5796, + 5567,5643,345,360,5644,1618,5561,5568,5540,5566, + 5565,355,5562,5563,5541,309,5060,5056,4426,5064, + 2551,5262,1876,5259,1,5060,5056,4426,5064,2551, + 5271,1876,5733,5734,5735,5308,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,798,1,4703,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,2315, - 5359,359,1,1,5111,5107,4448,5115,2539,359, - 3613,5359,5376,5377,236,5359,2063,5222,1,1, - 1,5111,5107,2722,5115,2539,5712,3613,5884,1, - 5111,5107,2949,5115,3293,3882,3613,3905,2093,5071, - 3859,3836,5098,5104,5077,5080,5092,5089,5095,5086, - 5083,5074,5101,3951,3928,310,5359,5382,2946,3813, - 714,875,5384,764,620,775,5385,5383,606,5378, - 5380,5381,5379,5359,3974,1326,1327,39,5272,5269, - 798,1,5111,5107,5289,5115,5295,5752,5292,5359, - 5213,5210,42,42,504,42,5010,5007,2949,895, - 3293,3882,3613,3905,5367,822,3859,3836,5623,5621, - 5630,5629,5625,5626,5624,5627,5628,5631,5622,3951, - 3928,33,1282,5382,5359,3813,714,875,5384,764, - 620,775,5385,5383,606,5378,5380,5381,5379,5359, - 5010,5007,1327,895,2539,3609,3613,432,42,42, - 5359,5400,1,5231,5359,5228,96,1,1,5367, - 1,5325,5234,5359,5234,500,5366,42,5010,5007, - 2949,895,3293,3882,3613,3905,5367,822,3859,3836, - 5623,5621,5630,5629,5625,5626,5624,5627,5628,5631, - 5622,3951,3928,413,5359,5382,40,3813,714,875, - 5384,764,620,775,5385,5383,606,5378,5380,5381, - 5379,5359,5010,5007,1327,5400,1029,3609,99,42, - 42,5366,5400,5366,5304,5398,5301,5359,225,144, - 5010,5007,2949,895,3293,3882,3613,3905,5366,822, - 3859,3836,5623,5621,5630,5629,5625,5626,5624,5627, - 5628,5631,5622,3951,3928,5615,5359,5382,115,3813, - 714,875,5384,764,620,775,5385,5383,606,5378, - 5380,5381,5379,5618,5693,5359,1327,5694,4463,5612, - 5619,5591,5617,5616,5359,5613,5614,5592,709,5359, - 5376,5377,42,42,1,5111,5107,2949,5115,3293, - 3882,3613,3905,5359,5071,3859,3836,5098,5104,5077, - 5080,5092,5089,5095,5086,5083,5074,5101,3951,3928, - 5359,5858,5382,4558,3813,714,875,5384,764,620, - 775,5385,5383,606,5378,5380,5381,5379,5359,3027, - 42,1327,33,135,5400,5359,5010,5007,3997,895, - 2539,582,3613,5359,4020,5359,4666,42,42,42, - 5010,5007,2949,895,3293,3882,3613,3905,5363,822, - 3859,3836,5623,5621,5630,5629,5625,5626,5624,5627, - 5628,5631,5622,3951,3928,1084,5013,5382,5359,3813, - 714,875,5384,764,620,775,5385,5383,606,5378, - 5380,5381,5379,42,5010,5007,2949,895,3293,3882, - 3613,3905,3596,822,3859,3836,5623,5621,5630,5629, - 5625,5626,5624,5627,5628,5631,5622,3951,3928,5359, - 52,5382,550,3813,714,875,5384,764,620,775, - 5385,5383,606,5378,5380,5381,5379,5359,5010,5007, - 1327,5400,103,3609,5783,5784,5785,1,5359,1008, - 3477,389,5376,5377,5359,1,338,4689,42,5010, - 5007,2949,895,3293,3882,3613,3905,5362,822,3859, - 3836,5623,5621,5630,5629,5625,5626,5624,5627,5628, - 5631,5622,3951,3928,4066,990,5382,441,3813,714, - 875,5384,764,620,775,5385,5383,606,5378,5380, - 5381,5379,2013,1,44,1327,858,798,5815,5809, - 5359,5813,338,338,5807,5808,5359,1,5331,5331, - 227,5331,227,227,227,227,227,5838,5839,5359, - 226,5016,3634,5816,338,5359,5010,5007,5359,895, - 5068,3702,3613,227,8671,42,5328,5818,5043,5400, - 5714,1,5111,5107,4448,5115,2539,5615,3613,316, - 309,3578,5307,704,844,2554,1712,1745,5819,5840, - 5817,5359,5359,2230,120,5618,5693,309,3508,5694, - 3366,5612,5619,5591,5617,5616,142,5613,5614,5592, - 1702,5829,5828,5841,5810,5811,5834,5835,5846,2938, - 5832,5833,5812,5814,5836,5837,5842,5822,5823,5824, - 5820,5821,5830,5831,5826,5825,5827,5359,288,798, - 858,5359,5815,5809,286,5813,1,381,5807,5808, - 382,1,5331,5331,227,5331,227,227,227,227, - 5350,5838,5839,301,5359,5010,5007,5816,895,5068, - 397,3613,5359,5659,5359,8571,8534,227,8671,5283, - 5328,5818,40,5237,5237,3342,3318,5237,40,5237, - 5237,5049,5359,859,1832,107,5286,704,4073,2554, - 1712,1745,5819,5840,5817,1974,5801,2230,2241,1, - 1021,1015,3508,366,5359,5201,5198,5398,5365,2234, - 5359,3221,219,4380,894,5829,5828,5841,5810,5811, - 5834,5835,5846,5359,5832,5833,5812,5814,5836,5837, - 5842,5822,5823,5824,5820,5821,5830,5831,5826,5825, - 5827,42,5010,5007,2949,895,3293,3882,3613,3905, - 5359,822,3859,3836,5623,5621,5630,5629,5625,5626, - 5624,5627,5628,5631,5622,3951,3928,3974,1326,5382, - 1193,3813,714,875,5384,764,620,775,5385,5383, - 606,5378,5380,5381,5379,5359,5364,5359,1918,48, - 5207,5207,42,5010,5007,2949,895,3293,3882,3613, - 3905,1592,822,3859,3836,5623,5621,5630,5629,5625, - 5626,5624,5627,5628,5631,5622,3951,3928,5204,5359, - 5382,5359,3813,714,875,5384,764,620,775,5385, - 5383,606,5378,5380,5381,5379,5359,8571,8534,1327, - 42,5010,5007,4842,895,3293,3882,3613,3905,1, - 822,3859,3836,5623,5621,5630,5629,5625,5626,5624, - 5627,5628,5631,5622,3951,3928,278,5359,5382,5316, - 3813,714,875,5384,764,620,775,5385,5383,606, - 5378,5380,5381,5379,42,5010,5007,2949,895,3293, - 3882,3613,3905,500,822,3859,3836,5623,5621,5630, - 5629,5625,5626,5624,5627,5628,5631,5622,3951,3928, - 129,1961,5382,131,3813,714,875,5384,764,620, - 775,5385,5383,606,5378,5380,5381,5379,42,5010, - 5007,2949,895,3293,3882,3613,3905,5359,822,3859, - 3836,5623,5621,5630,5629,5625,5626,5624,5627,5628, - 5631,5622,3951,3928,2616,521,5382,2616,3813,714, - 875,5384,764,620,775,5385,5383,606,5378,5380, - 5381,5379,5359,5034,5031,5025,5400,119,5216,40, - 5237,5237,1178,3366,318,5623,5621,5630,5629,5625, - 5626,5624,5627,5628,5631,5622,1,5359,5359,5615, - 364,944,3435,2496,2465,166,2496,2465,1072,5359, - 5260,5257,3710,5359,50,5266,5266,5618,5693,5359, - 5359,5694,166,5612,5619,5591,5617,5616,5365,5613, - 5614,5592,5359,130,5749,240,5191,5187,5398,5195, - 611,5750,5751,5263,798,1178,5359,435,5178,5184, - 5157,5160,5172,5169,5175,5166,5163,5154,5181,415, - 5359,409,5142,3708,990,5359,5359,1238,3342,3318, - 1,5359,5279,5275,5369,5359,2447,2616,5359,5369, - 5133,5127,1325,166,5124,4916,5151,5130,5121,5136, - 5139,5368,5148,5145,5118,222,5368,5749,5219,79, - 5398,5359,3429,611,5750,5751,5364,5359,5623,5621, - 5630,5629,5625,5626,5624,5627,5628,5631,5622,2545, - 5359,495,5615,5426,5427,2694,2496,2465,2152,1, - 5331,5331,227,5331,227,227,227,227,5350,53, - 5618,5693,1,5377,5694,436,5612,5619,5591,5617, - 5616,517,5613,5614,5592,227,8671,561,5328,3080, - 1,5331,5331,227,5331,227,227,227,227,5353, - 40,5237,5237,2102,1,5359,53,2554,4074,5359, - 5376,371,4687,5377,5319,2230,227,8671,4909,5328, - 3508,5359,5359,5359,3595,5359,4369,5359,493,5398, - 219,5359,569,3423,4872,5359,5369,5359,2554,5359, - 5846,2689,3517,1,5359,5359,2230,4889,38,647, - 5376,3508,1,5368,5359,5359,5359,5359,308,517, - 1482,218,5359,2,5359,3246,5322,4702,510,3620, - 497,5846,1,5331,5331,227,5331,227,227,227, - 227,5350,5359,1,5331,5331,227,5331,227,227, - 227,227,5350,4337,5540,4912,5359,3460,227,8671, - 4182,5328,3087,5359,3089,3187,1,40,5359,227, - 8671,5359,5328,5359,5359,2738,5359,5539,5359,5359, - 2554,5359,5359,2738,4424,5359,5359,5359,2230,1931, - 3620,2554,5359,3508,3501,5359,5359,717,3428,2230, - 5359,5359,5359,219,3508,5359,5359,5359,5359,5359, - 5359,5359,5359,5846,219,5359,5359,5359,5359,5359, - 5359,5359,5359,5359,5846,1,5331,5331,227,5331, - 227,227,227,227,227,1,5331,5331,227,5331, - 227,227,227,227,227,5359,5359,3620,5359,5359, - 5359,227,8671,5359,5328,5359,5359,5359,5359,5359, - 5359,227,8671,5359,5328,5359,5359,5359,5359,5359, - 5359,5359,5359,2554,5359,5359,5359,5359,5359,5359, - 5359,2230,5359,2554,5359,5359,3508,5359,5359,5359, - 5359,2230,5359,5359,5359,5359,3508,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5846,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5846,1,5331,5331, - 227,5331,227,227,227,227,227,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5359,5359,5359,5359, - 5359,5359,5359,227,8671,5359,5328,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5359,5359,5359,5359, - 5359,5359,5359,5359,5359,2554,5359,5359,5359,5359, - 5359,5359,5359,2230,5359,5359,5359,5359,3508,5359, - 5359,5359,5359,5359,5359,5359,5359,5359,5359,5359, - 5359,5359,5359,5359,5359,5359,5359,5359,5846 + 1,1,801,1,4855,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,2322, + 5308,360,1,1,5060,5056,4426,5064,2551,360, + 1876,5308,5325,5326,236,5308,2070,5171,1,1, + 1,5060,5056,2730,5064,2551,5662,1876,5834,1, + 5060,5056,987,5064,3021,4045,1876,4068,1962,5020, + 4022,3999,5047,5053,5026,5029,5041,5038,5044,5035, + 5032,5023,5050,4114,4091,311,5308,5331,3050,3728, + 706,777,5333,716,621,735,5334,5332,575,5327, + 5329,5330,5328,5308,4137,619,1334,39,5221,5218, + 801,1,5060,5056,5238,5064,5244,5702,5241,5308, + 5162,5159,42,42,505,42,4965,4962,987,898, + 3021,4045,1876,4068,5316,792,4022,3999,5572,5570, + 5579,5578,5574,5575,5573,5576,5577,5580,5571,4114, + 4091,33,1288,5331,5308,3728,706,777,5333,716, + 621,735,5334,5332,575,5327,5329,5330,5328,5308, + 4965,4962,1334,898,2551,3512,1876,433,42,42, + 5308,5349,1,5180,5308,5177,96,1,1,5316, + 1,5274,5183,5308,5183,501,5315,42,4965,4962, + 987,898,3021,4045,1876,4068,5316,792,4022,3999, + 5572,5570,5579,5578,5574,5575,5573,5576,5577,5580, + 5571,4114,4091,414,5308,5331,40,3728,706,777, + 5333,716,621,735,5334,5332,575,5327,5329,5330, + 5328,5308,4965,4962,1334,5349,1033,3512,99,42, + 42,5315,5349,5315,5253,5347,5250,5308,225,144, + 4965,4962,987,898,3021,4045,1876,4068,5315,792, + 4022,3999,5572,5570,5579,5578,5574,5575,5573,5576, + 5577,5580,5571,4114,4091,5564,5308,5331,115,3728, + 706,777,5333,716,621,735,5334,5332,575,5327, + 5329,5330,5328,5567,5643,5308,1334,5644,3261,5561, + 5568,5540,5566,5565,5308,5562,5563,5541,711,5308, + 5325,5326,42,42,1,5060,5056,987,5064,3021, + 4045,1876,4068,5308,5020,4022,3999,5047,5053,5026, + 5029,5041,5038,5044,5035,5032,5023,5050,4114,4091, + 5308,5808,5331,3370,3728,706,777,5333,716,621, + 735,5334,5332,575,5327,5329,5330,5328,5308,3192, + 42,1334,33,135,5349,5308,4965,4962,4160,898, + 2551,583,1876,5308,4183,5308,3626,42,42,42, + 4965,4962,987,898,3021,4045,1876,4068,5312,792, + 4022,3999,5572,5570,5579,5578,5574,5575,5573,5576, + 5577,5580,5571,4114,4091,1358,4968,5331,5308,3728, + 706,777,5333,716,621,735,5334,5332,575,5327, + 5329,5330,5328,42,4965,4962,987,898,3021,4045, + 1876,4068,3757,792,4022,3999,5572,5570,5579,5578, + 5574,5575,5573,5576,5577,5580,5571,4114,4091,5308, + 52,5331,551,3728,706,777,5333,716,621,735, + 5334,5332,575,5327,5329,5330,5328,5308,4965,4962, + 1334,5349,103,3512,5733,5734,5735,1,5308,1011, + 2851,390,5325,5326,5308,1,339,4232,42,4965, + 4962,987,898,3021,4045,1876,4068,5311,792,4022, + 3999,5572,5570,5579,5578,5574,5575,5573,5576,5577, + 5580,5571,4114,4091,3306,993,5331,442,3728,706, + 777,5333,716,621,735,5334,5332,575,5327,5329, + 5330,5328,2020,1,44,1334,861,801,5765,5759, + 5308,5763,339,339,5757,5758,5308,1,5280,5280, + 227,5280,227,227,227,227,227,5788,5789,5308, + 226,4971,3515,5766,339,5308,4965,4962,5308,898, + 5017,3753,1876,227,8621,42,5277,5768,4992,5349, + 5664,1,5060,5056,4426,5064,2551,5564,1876,317, + 309,3752,5256,825,847,2423,1599,1676,5769,5790, + 5767,5308,5308,2500,120,5567,5643,309,3648,5644, + 3452,5561,5568,5540,5566,5565,142,5562,5563,5541, + 2144,5779,5778,5791,5760,5761,5784,5785,5796,2707, + 5782,5783,5762,5764,5786,5787,5792,5772,5773,5774, + 5770,5771,5780,5781,5776,5775,5777,5308,288,801, + 861,5308,5765,5759,286,5763,1,382,5757,5758, + 383,1,5280,5280,227,5280,227,227,227,227, + 5299,5788,5789,301,5308,4965,4962,5766,898,5017, + 398,1876,5308,5608,5308,8521,8484,227,8621,5232, + 5277,5768,40,5186,5186,3428,3404,5186,40,5186, + 5186,4998,5308,862,1704,107,5235,825,4263,2423, + 1599,1676,5769,5790,5767,1981,5751,2500,2248,1, + 1331,1018,3648,367,5308,5150,5147,5347,5314,2241, + 5308,3323,219,3059,1184,5779,5778,5791,5760,5761, + 5784,5785,5796,5308,5782,5783,5762,5764,5786,5787, + 5792,5772,5773,5774,5770,5771,5780,5781,5776,5775, + 5777,42,4965,4962,987,898,3021,4045,1876,4068, + 5308,792,4022,3999,5572,5570,5579,5578,5574,5575, + 5573,5576,5577,5580,5571,4114,4091,4137,619,5331, + 1198,3728,706,777,5333,716,621,735,5334,5332, + 575,5327,5329,5330,5328,5308,5313,5308,1796,48, + 5156,5156,42,4965,4962,987,898,3021,4045,1876, + 4068,1556,792,4022,3999,5572,5570,5579,5578,5574, + 5575,5573,5576,5577,5580,5571,4114,4091,5153,5308, + 5331,5308,3728,706,777,5333,716,621,735,5334, + 5332,575,5327,5329,5330,5328,5308,8521,8484,1334, + 42,4965,4962,4697,898,3021,4045,1876,4068,1, + 792,4022,3999,5572,5570,5579,5578,5574,5575,5573, + 5576,5577,5580,5571,4114,4091,278,5308,5331,5265, + 3728,706,777,5333,716,621,735,5334,5332,575, + 5327,5329,5330,5328,42,4965,4962,987,898,3021, + 4045,1876,4068,501,792,4022,3999,5572,5570,5579, + 5578,5574,5575,5573,5576,5577,5580,5571,4114,4091, + 129,1925,5331,131,3728,706,777,5333,716,621, + 735,5334,5332,575,5327,5329,5330,5328,42,4965, + 4962,987,898,3021,4045,1876,4068,5308,792,4022, + 3999,5572,5570,5579,5578,5574,5575,5573,5576,5577, + 5580,5571,4114,4091,2624,522,5331,2624,3728,706, + 777,5333,716,621,735,5334,5332,575,5327,5329, + 5330,5328,5308,4965,4962,4980,5349,119,5165,40, + 5186,5186,1084,3452,319,5572,5570,5579,5578,5574, + 5575,5573,5576,5577,5580,5571,1,5308,5308,5564, + 365,1633,3590,2503,2472,166,2503,2472,1028,5308, + 5209,5206,3833,5308,50,5215,5215,5567,5643,5308, + 5308,5644,166,5561,5568,5540,5566,5565,5314,5562, + 5563,5541,5308,130,5699,240,5140,5136,5347,5144, + 766,5700,5701,5212,801,1084,5308,436,5127,5133, + 5106,5109,5121,5118,5124,5115,5112,5103,5130,416, + 5308,410,5091,3832,993,5308,5308,1244,3428,3404, + 1,5308,5228,5224,5318,5308,2454,2624,5308,5318, + 5082,5076,1805,166,5073,4870,5100,5079,5070,5085, + 5088,5317,5097,5094,5067,222,5317,5699,5168,79, + 5347,5308,3081,766,5700,5701,5313,5308,5572,5570, + 5579,5578,5574,5575,5573,5576,5577,5580,5571,2532, + 5308,496,5564,5375,5376,2702,2503,2472,2159,1, + 5280,5280,227,5280,227,227,227,227,5299,53, + 5567,5643,1,5326,5644,437,5561,5568,5540,5566, + 5565,518,5562,5563,5541,227,8621,562,5277,2914, + 1,5280,5280,227,5280,227,227,227,227,5302, + 40,5186,5186,2109,1,5308,53,2423,4265,5308, + 5325,372,3606,5326,5268,2500,227,8621,4861,5277, + 3648,5308,5308,5308,3755,5308,4817,5308,494,5347, + 219,5308,570,3506,4824,5308,5318,5308,2423,5308, + 5796,2556,3603,1,5308,5308,2500,4844,38,649, + 5325,3648,1,5317,5308,5308,5308,5308,308,518, + 1403,218,5308,2,5308,3310,5271,4440,511,3767, + 498,5796,1,5280,5280,227,5280,227,227,227, + 227,5299,5308,1,5280,5280,227,5280,227,227, + 227,227,5299,4333,5489,4864,5308,3546,227,8621, + 4238,5277,3293,5308,3336,3366,1,40,5308,227, + 8621,5308,5277,5308,5308,2465,5308,5488,5308,5308, + 2423,5308,5308,2465,4397,5308,5308,5308,2500,1938, + 3767,2423,5308,3648,3637,5308,5308,719,3588,2500, + 5308,5308,5308,219,3648,5308,5308,5308,5308,5308, + 5308,5308,5308,5796,219,5308,5308,5308,5308,5308, + 5308,5308,5308,5308,5796,1,5280,5280,227,5280, + 227,227,227,227,227,1,5280,5280,227,5280, + 227,227,227,227,227,5308,5308,3767,5308,5308, + 5308,227,8621,5308,5277,5308,5308,5308,5308,5308, + 5308,227,8621,5308,5277,5308,5308,5308,5308,5308, + 5308,5308,5308,2423,5308,5308,5308,5308,5308,5308, + 5308,2500,5308,2423,5308,5308,3648,5308,5308,5308, + 5308,2500,5308,5308,5308,5308,3648,5308,5308,5308, + 5308,5308,5308,5308,5308,5308,5796,5308,5308,5308, + 5308,5308,5308,5308,5308,5308,5796,1,5280,5280, + 227,5280,227,227,227,227,227,5308,5308,5308, + 5308,5308,5308,5308,5308,5308,5308,5308,5308,5308, + 5308,5308,5308,227,8621,5308,5277,5308,5308,5308, + 5308,5308,5308,5308,5308,5308,5308,5308,5308,5308, + 5308,5308,5308,5308,5308,2423,5308,5308,5308,5308, + 5308,5308,5308,2500,5308,5308,5308,5308,3648,5308, + 5308,5308,5308,5308,5308,5308,5308,5308,5308,5308, + 5308,5308,5308,5308,5308,5308,5308,5308,5796 }; }; public final static char termAction[] = TermAction.termAction; @@ -1715,59 +1705,59 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Asb { public final static char asb[] = {0, - 443,67,113,61,968,737,737,737,737,57, - 968,747,737,850,747,720,113,722,114,114, - 114,114,114,114,114,114,114,1058,1064,1069, - 1066,1073,1071,1078,1076,1080,1079,1081,301,1082, - 113,97,29,29,29,29,153,682,1,744, - 29,203,250,747,747,1,881,747,250,927, - 28,626,59,1039,97,1041,1041,1008,1008,682, - 113,114,114,114,114,114,114,114,114,114, - 114,114,114,114,114,114,114,114,114,114, - 113,113,113,113,113,113,113,113,113,113, - 113,113,114,250,250,241,97,920,920,920, - 920,297,250,1,348,1028,1039,802,1039,797, - 1039,799,1039,1023,57,153,203,203,1,203, - 28,113,151,625,250,150,153,152,150,250, - 203,1066,1066,1064,1064,1064,1071,1071,1071,1071, + 580,67,668,61,1021,874,874,874,874,57, + 1021,719,874,336,719,807,668,809,669,669, + 669,669,669,669,669,669,669,1058,1064,1069, + 1066,1073,1071,1078,1076,1080,1079,1081,214,1082, + 668,652,29,29,29,29,708,769,1,716, + 29,116,163,719,719,1,367,719,163,980, + 28,521,59,1039,652,1041,1041,971,971,769, + 668,669,669,669,669,669,669,669,669,669, + 669,669,669,669,669,669,669,669,669,669, + 668,668,668,668,668,668,668,668,668,668, + 668,668,669,163,163,154,652,406,406,406, + 406,210,163,1,261,1028,1039,578,1039,573, + 1039,575,1039,1023,57,708,116,116,1,116, + 28,668,706,520,163,705,708,707,705,163, + 116,1066,1066,1064,1064,1064,1071,1071,1071,1071, 1069,1069,1076,1073,1073,1079,1078,1080,1116,1081, - 348,162,541,531,530,487,57,722,968,968, - 968,968,153,153,920,757,919,744,153,740, - 253,153,584,297,354,582,802,358,153,153, - 153,297,920,114,29,1062,206,250,59,153, - 153,152,626,113,241,203,1097,250,543,545, - 153,626,113,113,113,113,968,968,97,352, - 740,253,584,583,584,297,584,358,358,153, - 297,153,250,1062,348,625,59,153,151,250, - 535,523,534,545,297,151,250,250,250,250, - 682,682,740,739,679,153,253,1116,299,843, - 1106,253,584,584,1015,153,358,679,677,678, - 153,1062,1063,1062,113,206,848,59,396,113, - 532,532,410,410,153,539,348,363,250,153, - 250,250,740,626,737,150,406,1108,147,968, - 727,56,1016,153,679,114,153,1062,682,114, - 203,848,396,113,113,545,153,626,250,543, - 523,396,498,151,268,151,584,584,147,1102, - 348,153,730,114,1116,418,1015,153,57,57, - 153,1063,250,203,435,545,396,1103,268,151, - 584,802,57,1108,147,625,114,114,153,153, - 153,435,250,435,919,737,156,156,1103,802, - 77,727,153,968,153,153,968,428,435,268, - 633,268,918,918,580,78,57,153,682,546, - 428,485,970,343,968,423,669,268,29,29, - 580,77,1116,114,1116,1103,968,968,968,78, - 968,153,309,1103,1103,153,802,250,249,430, - 587,920,343,485,632,802,802,922,57,919, - 69,968,69,1116,78,97,97,95,925,97, - 1103,1103,795,580,29,430,633,632,633,1103, - 417,1102,250,632,632,632,57,153,578,363, - 250,147,250,309,1103,343,968,250,580,632, - 113,806,147,1103,679,632,632,632,153,153, - 156,250,250,511,78,795,78,1103,309,343, - 113,78,75,679,250,804,679,679,153,1103, - 918,802,802,960,113,76,682,1103,1103,250, - 804,1103,150,78,250,682,1103,678,78,250, - 804,78 + 261,75,529,438,437,446,57,809,1021,1021, + 1021,1021,708,708,406,729,405,716,708,712, + 166,708,570,210,300,568,578,304,708,708, + 708,210,406,669,29,1062,119,163,59,708, + 708,707,521,668,154,116,1097,163,531,533, + 708,521,668,668,668,668,1021,1021,652,265, + 712,166,570,569,570,210,570,304,304,708, + 210,708,163,1062,261,520,59,708,706,163, + 442,430,441,533,210,706,163,163,163,163, + 769,769,712,711,816,708,166,1116,212,923, + 1106,166,570,570,876,708,304,816,814,815, + 708,1062,1063,1062,668,119,928,59,309,668, + 439,439,319,319,708,527,261,267,163,708, + 163,163,712,521,874,705,332,1108,702,1021, + 864,56,877,708,816,669,708,1062,769,669, + 116,928,309,668,668,533,708,521,163,531, + 430,309,457,706,181,706,570,570,702,1102, + 261,708,867,669,1116,327,876,708,57,57, + 708,1063,163,116,415,533,309,1103,181,706, + 570,578,57,1108,702,520,669,669,708,708, + 708,415,163,415,405,874,69,69,1103,578, + 632,864,708,1021,708,708,1021,408,415,181, + 820,181,404,404,428,633,57,708,769,534, + 408,622,933,256,1021,423,856,181,29,29, + 428,632,1116,669,1116,1103,1021,1021,1021,633, + 1021,708,222,1103,1103,708,578,163,162,410, + 482,406,256,622,819,578,578,930,57,405, + 624,1021,624,1116,633,652,652,650,978,652, + 1103,1103,767,428,29,410,820,819,820,1103, + 326,1102,163,819,819,819,57,708,566,267, + 163,702,163,222,1103,256,1021,163,428,819, + 668,886,702,1103,816,819,819,819,708,708, + 69,163,163,470,633,767,633,1103,222,256, + 668,633,630,816,163,884,816,816,708,1103, + 404,578,578,1013,668,631,769,1103,1103,163, + 884,1103,705,633,163,769,1103,815,633,163, + 884,633 }; }; public final static char asb[] = Asb.asb; @@ -1781,103 +1771,103 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 14,62,46,15,68,52,27,16,53,54, 17,18,55,57,19,20,58,69,59,10, 70,21,22,49,23,45,1,2,4,0, - 9,72,118,87,26,66,121,0,81,114, - 115,116,29,72,119,122,71,73,74,48, - 56,61,76,78,85,83,75,80,82,84, - 86,50,77,79,9,26,51,62,46,68, - 52,27,53,54,55,57,58,69,59,70, - 45,49,47,63,64,10,32,36,34,31, - 39,14,23,13,19,17,18,20,21,16, - 15,22,40,43,41,42,28,38,33,37, - 24,25,11,12,30,35,8,6,3,4, - 7,5,1,2,0,65,67,66,1,2, - 0,63,64,10,32,36,34,31,39,14, - 23,13,19,17,18,20,21,16,15,22, - 40,43,41,42,28,38,33,37,5,7, - 4,3,24,25,8,6,11,12,30,35, - 1,2,118,9,0,96,90,11,12,91, - 92,88,89,44,93,94,97,98,99,100, - 101,102,117,72,95,67,104,105,106,107, - 108,109,110,111,112,113,118,71,26,121, - 65,1,2,8,6,4,3,60,66,87, - 9,0,81,7,114,115,116,48,9,3, - 8,6,5,72,71,26,73,51,13,14, - 62,46,15,68,52,27,16,53,54,17, - 18,55,57,19,20,58,69,59,10,70, - 21,45,22,49,23,4,1,2,29,0, - 65,72,95,66,118,87,71,121,13,14, - 31,63,15,32,33,16,17,18,64,34, - 19,20,35,36,37,47,38,39,10,21, - 22,23,40,41,42,28,24,25,11,12, - 30,43,9,26,5,7,3,1,2,8, - 4,6,0,4,50,72,0,1,2,9, - 71,0,51,13,14,62,46,15,68,52, + 9,72,118,87,26,66,121,0,65,67, + 66,1,2,0,63,64,10,32,36,34, + 31,39,14,23,13,19,17,18,20,21, + 16,15,22,40,43,41,42,28,38,33, + 37,5,7,4,3,24,25,8,6,11, + 12,30,35,1,2,118,9,0,96,90, + 11,12,91,92,88,89,44,93,94,97, + 98,99,100,101,102,117,72,95,67,104, + 105,106,107,108,109,110,111,112,113,118, + 71,26,121,65,1,2,8,6,4,3, + 60,66,87,9,0,81,7,114,115,116, + 48,9,3,8,6,5,72,71,26,73, + 51,13,14,62,46,15,68,52,27,16, + 53,54,17,18,55,57,19,20,58,69, + 59,10,70,21,45,22,49,23,4,1, + 2,29,0,65,72,95,66,118,87,71, + 121,13,14,31,63,15,32,33,16,17, + 18,64,34,19,20,35,36,37,47,38, + 39,10,21,22,23,40,41,42,28,24, + 25,11,12,30,43,9,26,5,7,3, + 1,2,8,4,6,0,51,13,14,62, + 46,15,68,52,27,16,53,54,17,18, + 55,57,19,20,58,69,59,10,70,21, + 45,22,49,23,1,2,4,95,0,4, + 50,72,0,1,2,9,71,0,46,47, + 49,9,65,95,67,66,87,0,74,50, + 65,72,95,87,60,3,9,66,26,67, + 0,50,72,74,0,51,13,14,62,46, + 15,68,52,27,16,53,54,17,18,55, + 57,19,20,58,69,59,10,70,21,45, + 22,49,23,1,2,4,64,63,11,12, + 6,91,92,99,8,100,5,30,44,107, + 108,104,105,106,112,111,113,89,88,109, + 110,97,98,93,94,101,102,24,25,90, + 103,3,60,67,66,65,0,46,49,74, + 3,50,72,26,47,9,65,95,67,66, + 87,0,1,2,123,50,0,119,0,8, + 6,7,5,4,1,2,3,60,65,67, + 66,9,87,95,0,13,14,15,16,17, + 18,19,20,21,22,23,51,46,52,27, + 53,54,55,57,58,59,45,49,26,9, + 87,7,1,2,60,3,8,6,5,4, + 0,61,51,13,14,62,46,15,68,52, + 81,27,16,53,54,17,18,55,56,57, + 19,20,58,69,59,10,70,21,48,45, + 22,49,23,9,3,8,4,26,50,6, + 7,1,2,5,29,0,5,7,3,60, + 6,8,95,51,13,14,46,15,68,52, 27,16,53,54,17,18,55,57,19,20, 58,69,59,10,70,21,45,22,49,23, - 1,2,4,95,0,46,47,49,9,65, - 95,67,66,87,0,50,72,74,0,74, - 50,65,72,95,87,60,3,9,66,26, - 67,0,1,2,123,50,0,46,49,74, - 3,50,72,26,47,9,65,95,67,66, - 87,0,13,14,31,63,15,32,33,16, - 17,18,64,7,34,19,20,35,36,37, - 47,38,39,10,21,22,23,40,41,42, - 1,2,3,24,25,8,6,11,12,5, - 30,4,43,73,28,0,13,14,15,16, - 17,18,19,20,21,22,23,51,46,52, - 27,53,54,55,57,58,59,45,49,26, - 9,87,7,1,2,60,3,8,6,5, - 4,0,8,6,7,5,4,1,2,3, - 60,65,67,66,9,87,95,0,5,7, - 3,60,6,8,95,51,13,14,46,15, - 68,52,27,16,53,54,17,18,55,57, - 19,20,58,69,59,10,70,21,45,22, - 49,23,1,2,4,87,9,62,0,119, - 0,4,44,50,72,0,61,51,13,14, - 62,46,15,68,52,81,27,16,53,54, - 17,18,55,56,57,19,20,58,69,59, - 10,70,21,48,45,22,49,23,9,3, - 8,4,26,50,6,7,1,2,5,29, - 0,71,62,46,15,68,52,16,53,54, - 17,18,55,57,19,20,58,69,59,70, - 21,45,22,49,23,14,13,51,9,3, - 8,6,26,48,61,81,27,29,7,1, - 2,5,4,10,56,0,67,66,71,9, - 0,9,87,13,14,31,15,32,33,16, - 17,18,34,19,20,35,36,37,47,38, - 39,10,21,22,23,40,41,42,28,3, - 24,25,8,6,11,12,30,4,43,5, - 7,1,2,64,63,0,50,66,0,72, - 9,60,3,67,66,26,44,0,47,46, - 7,49,5,1,2,4,74,9,50,72, - 95,118,87,71,26,121,60,3,120,96, - 103,90,24,25,8,6,11,12,91,92, - 88,89,44,93,94,97,98,99,100,101, - 102,117,104,105,106,107,108,109,110,111, - 112,113,65,66,67,0,29,72,4,1, - 2,50,0,9,71,63,64,47,24,25, + 1,2,4,87,9,62,0,4,44,50, + 72,0,29,72,4,1,2,50,0,13, + 14,31,63,15,32,33,16,17,18,64, + 7,34,19,20,35,36,37,47,38,39, + 10,21,22,23,40,41,42,1,2,3, + 24,25,8,6,11,12,5,30,4,43, + 73,28,0,81,114,115,116,29,72,119, + 122,71,73,74,48,56,61,76,78,85, + 83,75,80,82,84,86,50,77,79,9, + 26,51,62,46,68,52,27,53,54,55, + 57,58,69,59,70,45,49,47,63,64, + 10,32,36,34,31,39,14,23,13,19, + 17,18,20,21,16,15,22,40,43,41, + 42,28,38,33,37,24,25,11,12,30, + 35,8,6,3,4,7,5,1,2,0, + 47,46,7,49,5,1,2,4,74,9, + 50,72,95,118,87,71,26,121,60,3, + 120,96,103,90,24,25,8,6,11,12, + 91,92,88,89,44,93,94,97,98,99, + 100,101,102,117,104,105,106,107,108,109, + 110,111,112,113,65,66,67,0,9,87, + 13,14,31,15,32,33,16,17,18,34, + 19,20,35,36,37,47,38,39,10,21, + 22,23,40,41,42,28,3,24,25,8, + 6,11,12,30,4,43,5,7,1,2, + 64,63,0,67,66,71,9,0,71,62, + 46,15,68,52,16,53,54,17,18,55, + 57,19,20,58,69,59,70,21,45,22, + 49,23,14,13,51,9,3,8,6,26, + 48,61,81,27,29,7,1,2,5,4, + 10,56,0,50,66,0,72,9,60,3, + 67,66,26,44,0,45,1,2,4,114, + 115,116,0,9,71,63,64,47,24,25, 8,6,11,12,30,35,3,40,43,41, 42,28,38,33,37,14,23,13,19,17, 18,20,21,16,15,22,32,36,34,31, - 39,50,7,1,2,4,10,5,0,51, - 13,14,62,46,15,68,52,27,16,53, - 54,17,18,55,57,19,20,58,69,59, - 10,70,21,45,22,49,23,1,2,4, - 64,63,11,12,6,91,92,99,8,100, - 5,30,44,107,108,104,105,106,112,111, - 113,89,88,109,110,97,98,93,94,101, - 102,24,25,90,103,3,60,67,66,65, - 0,50,67,0,75,0,63,64,24,25, - 11,12,30,35,40,43,41,42,28,38, - 33,37,14,23,13,19,17,18,20,21, - 16,15,22,10,32,36,34,31,39,8, - 6,60,5,7,1,2,4,3,0,62, - 46,15,68,52,16,53,54,17,18,55, - 57,19,20,58,69,59,10,70,21,45, - 22,49,23,14,13,51,9,3,8,6, - 26,48,56,61,81,27,44,7,4,29, - 5,1,2,0,45,1,2,4,114,115, - 116,0,10,68,62,69,70,14,23,13, + 39,50,7,1,2,4,10,5,0,50, + 67,0,62,46,15,68,52,16,53,54, + 17,18,55,57,19,20,58,69,59,10, + 70,21,45,22,49,23,14,13,51,9, + 3,8,6,26,48,56,61,81,27,44, + 7,4,29,5,1,2,0,75,0,63, + 64,24,25,11,12,30,35,40,43,41, + 42,28,38,33,37,14,23,13,19,17, + 18,20,21,16,15,22,10,32,36,34, + 31,39,8,6,60,5,7,1,2,4, + 3,0,10,68,62,69,70,14,23,13, 19,17,18,20,21,16,15,22,74,50, 4,5,2,1,49,45,59,58,57,7, 55,54,53,27,52,46,51,120,103,24, @@ -1894,59 +1884,59 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Nasb { public final static char nasb[] = {0, - 95,11,37,11,11,11,11,11,11,130, - 11,11,11,182,11,155,142,169,37,37, - 153,37,37,37,37,37,37,11,11,11, - 11,11,11,11,11,11,11,11,37,11, - 37,215,212,212,212,212,169,150,112,77, - 4,52,240,11,11,112,184,11,240,37, - 80,58,11,11,215,11,11,17,17,150, - 142,37,37,37,37,37,37,37,37,37, - 37,37,37,37,37,37,37,37,37,37, - 37,37,37,37,37,37,37,37,37,37, - 37,142,37,240,240,121,1,11,11,11, - 11,30,240,35,129,205,206,11,206,167, - 206,22,206,199,130,169,52,52,35,52, - 212,118,164,42,240,163,10,169,163,240, - 52,11,11,11,11,11,11,11,11,11, + 134,11,35,11,11,11,11,11,11,144, + 11,11,11,83,11,148,170,131,35,35, + 146,35,35,35,35,35,35,11,11,11, + 11,11,11,11,11,11,11,11,35,11, + 35,224,239,239,239,239,131,159,110,20, + 4,53,209,11,11,110,85,11,209,35, + 23,60,11,11,224,11,11,15,15,159, + 170,35,35,35,35,35,35,35,35,35, + 35,35,35,35,35,35,35,35,35,35, + 35,35,35,35,35,35,35,35,35,35, + 35,170,35,209,209,120,1,11,11,11, + 11,30,209,33,143,221,222,11,222,129, + 222,44,222,215,144,131,53,53,33,53, + 239,55,188,40,209,187,10,131,187,209, + 53,11,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11, - 129,48,121,86,86,11,130,169,11,11, - 11,11,27,10,11,11,11,179,169,112, - 112,156,112,208,112,11,11,112,208,169, - 10,11,11,37,212,112,70,240,11,10, - 169,92,58,37,177,52,11,240,233,112, - 169,58,142,142,142,142,11,11,35,11, - 132,226,112,112,66,57,66,112,23,10, - 57,27,240,88,179,42,11,10,27,240, - 11,106,11,235,56,27,240,240,240,240, - 150,150,112,132,64,169,188,11,11,54, - 219,226,66,66,195,27,23,64,11,11, - 27,112,68,11,142,179,93,11,112,37, - 11,11,86,86,169,106,129,235,240,27, - 240,240,132,58,11,130,112,125,108,11, - 11,130,73,208,64,37,23,88,150,37, - 52,93,132,37,37,112,10,58,240,233, - 159,112,11,164,112,208,112,104,161,188, - 129,169,11,37,11,12,114,208,130,130, - 10,68,240,52,112,235,132,188,235,164, - 104,75,98,108,161,58,37,37,10,208, - 208,33,240,112,11,11,46,46,188,75, - 14,11,208,11,10,10,11,112,33,235, - 190,112,11,11,112,134,98,10,150,238, - 132,11,190,220,11,23,54,235,212,212, - 82,139,11,37,11,188,11,11,11,140, - 11,23,186,188,188,23,90,240,240,112, - 112,11,125,11,112,11,11,11,130,11, - 25,11,11,11,140,211,211,172,11,211, - 188,188,11,112,212,33,190,112,190,188, - 84,11,240,145,112,112,130,208,11,212, - 240,108,240,174,188,112,11,240,82,145, - 118,37,108,188,64,190,145,145,208,102, - 46,240,240,112,140,11,140,188,174,108, - 142,140,25,64,240,112,64,64,102,188, - 11,90,90,106,37,11,174,188,188,240, - 60,188,163,140,240,174,188,64,140,240, - 60,140 + 143,49,120,25,25,11,144,131,11,11, + 11,11,27,10,11,11,11,164,131,110, + 110,149,110,235,110,11,11,110,235,131, + 10,11,11,35,239,110,70,209,11,10, + 131,95,60,35,162,53,11,209,124,110, + 131,60,170,170,170,170,11,11,33,11, + 62,195,110,110,73,59,73,110,45,10, + 59,27,209,89,164,40,11,10,27,209, + 11,104,11,126,58,27,209,209,209,209, + 159,159,110,62,68,131,213,11,11,87, + 228,195,73,73,191,27,45,68,11,11, + 27,110,112,11,170,164,96,11,110,35, + 11,11,25,25,131,104,143,126,209,27, + 209,209,62,60,11,144,110,139,106,11, + 11,144,79,235,68,35,45,89,159,35, + 53,96,62,35,35,110,10,60,209,124, + 183,110,11,188,110,235,110,102,185,213, + 143,131,11,35,11,81,114,235,144,144, + 10,112,209,53,110,126,62,213,126,188, + 102,157,98,106,185,60,35,35,10,235, + 235,91,209,110,11,11,47,47,213,157, + 12,11,235,11,10,10,11,110,91,126, + 178,110,11,11,110,152,98,10,159,207, + 62,11,178,229,11,45,87,126,239,239, + 118,167,11,35,11,213,11,11,11,168, + 11,45,211,213,213,45,93,209,209,110, + 110,11,139,11,110,11,11,11,144,11, + 137,11,11,11,168,238,238,202,11,238, + 213,213,11,110,239,91,178,110,178,213, + 77,11,209,173,110,110,144,235,11,239, + 209,106,209,204,213,110,11,209,118,173, + 55,35,106,213,68,178,173,173,235,75, + 47,209,209,110,168,11,168,213,204,106, + 170,168,137,68,209,110,68,68,75,213, + 11,93,93,104,35,11,204,213,213,209, + 64,213,187,168,209,204,213,68,168,209, + 64,168 }; }; public final static char nasb[] = Nasb.nasb; @@ -1954,30 +1944,30 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Nasr { public final static char nasr[] = {0, - 3,13,8,6,147,145,120,144,143,2, - 0,182,0,5,64,0,6,2,8,134, - 0,6,1,0,113,0,4,3,0,131, - 65,0,123,0,48,5,6,8,2,13, - 0,65,133,132,0,110,0,13,2,8, - 6,78,0,151,0,131,2,65,0,13, - 2,8,6,64,0,111,0,136,0,5, - 173,0,184,0,155,0,5,186,0,171, - 0,156,0,176,0,67,0,138,0,56, - 0,2,114,0,5,170,0,165,6,164, - 0,150,0,154,0,97,96,63,6,2, - 8,5,0,6,104,161,0,5,29,0, - 96,97,5,0,2,63,8,5,91,6, - 0,61,0,5,47,39,174,0,64,47, - 69,5,39,0,105,5,47,68,0,5, - 99,0,6,13,8,2,3,0,97,96, - 63,55,6,8,2,0,3,6,2,44, - 0,24,175,5,102,0,97,96,6,55, - 0,5,48,167,0,5,39,40,0,5, - 47,68,79,0,6,104,183,0,2,6, - 120,116,117,118,13,88,0,2,54,0, - 115,5,48,0,5,48,39,0,40,6, - 2,8,5,153,0,5,47,68,104,45, - 6,0,6,91,24,5,0,48,5,35, + 3,13,8,6,148,146,120,145,144,2, + 0,5,64,0,6,2,8,135,0,5, + 187,0,172,0,67,0,4,3,0,132, + 65,0,48,5,6,8,2,13,0,65, + 134,133,0,6,1,0,110,0,13,2, + 8,6,78,0,5,29,0,132,2,65, + 0,61,0,13,2,8,6,64,0,5, + 174,0,111,0,151,0,177,0,185,0, + 183,0,5,48,168,0,152,0,139,0, + 124,0,56,0,2,114,0,166,6,165, + 0,155,0,97,96,63,6,2,8,5, + 0,137,0,6,104,162,0,157,0,96, + 97,5,0,6,91,24,5,0,3,6, + 2,44,0,5,171,0,113,0,2,63, + 8,5,91,6,0,6,13,8,2,3, + 0,5,47,39,175,0,156,0,5,99, + 0,97,96,6,55,0,64,47,69,5, + 39,0,105,5,47,68,0,5,47,68, + 79,0,97,96,63,55,6,8,2,0, + 6,104,184,0,5,47,68,104,45,6, + 0,24,176,5,102,0,48,5,35,0, + 5,39,40,0,2,6,120,116,117,118, + 13,88,0,5,48,39,0,40,6,2, + 8,5,154,0,2,54,0,115,5,48, 0 }; }; @@ -2018,14 +2008,14 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 203,213,149,160,209,210,211,0,0,0, 0,0,208,221,181,0,0,0,212,0, 0,0,242,150,177,191,192,193,194,195, - 197,200,0,215,218,220,238,0,241,0, - 0,143,144,147,0,0,157,159,0,173, - 0,183,184,185,186,187,190,0,196,198, - 0,199,204,0,216,217,0,222,225,227, - 229,0,232,233,234,0,236,237,240,126, - 0,153,156,176,179,201,214,219,0,223, - 224,226,228,0,230,231,243,244,0,0, - 0,0,0,0 + 197,200,0,0,215,218,220,238,0,241, + 0,0,143,144,147,0,0,157,159,0, + 173,0,183,184,185,186,187,190,0,196, + 198,0,199,204,0,216,217,0,222,225, + 227,229,0,232,233,234,0,236,237,240, + 126,0,153,156,176,179,201,214,219,0, + 223,224,226,228,0,230,231,243,244,0, + 0,0,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -2073,16 +2063,16 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public final static char scopeLhs[] = { 45,18,18,73,18,18,18,18,73,82, 46,87,86,118,66,52,73,72,45,18, - 73,20,3,7,161,161,158,116,45,85, - 118,117,119,53,46,134,128,73,18,18, - 128,98,57,130,76,164,161,158,125,117, - 117,119,175,50,56,138,19,18,18,18, - 18,18,12,113,158,125,73,72,72,38, - 134,72,18,18,18,18,98,73,20,165, - 161,176,96,103,59,67,58,153,77,119, - 74,70,139,138,171,134,17,158,119,115, - 126,126,55,134,134,73,45,158,71,132, - 44,132,44,164,115,116,45,45,57 + 73,20,3,7,162,162,159,116,45,85, + 118,117,119,53,46,135,129,73,18,18, + 129,98,57,131,76,165,162,159,126,117, + 117,119,176,50,56,139,19,18,18,18, + 18,18,12,113,159,126,73,72,72,38, + 135,72,18,18,18,18,98,73,20,166, + 162,177,96,103,59,67,58,154,77,119, + 74,70,140,139,172,135,17,159,119,115, + 127,127,55,135,135,73,45,159,71,133, + 44,133,44,165,115,116,45,45,57 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -2128,25 +2118,25 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface ScopeRhs { public final static char scopeRhs[] = {0, - 312,3,47,0,128,0,311,3,119,0, - 128,175,0,129,180,74,0,217,0,290, - 129,44,128,0,21,0,292,129,44,29, + 313,3,47,0,128,0,312,3,119,0, + 128,175,0,129,180,74,0,217,0,291, + 129,44,128,0,21,0,293,129,44,29, 0,21,55,0,34,134,0,21,55,0, - 0,292,129,44,29,192,0,21,131,0, - 290,129,44,132,0,178,130,0,140,0, - 223,3,289,0,289,0,2,0,128,0, + 0,293,129,44,29,192,0,21,131,0, + 291,129,44,132,0,178,130,0,140,0, + 223,3,290,0,290,0,2,0,128,0, 178,130,228,0,178,130,45,228,0,178, - 130,308,45,0,133,189,168,130,0,130, + 130,309,45,0,133,189,168,130,0,130, 0,189,168,130,0,136,130,0,171,0, - 304,129,171,0,129,171,0,223,130,0, + 305,129,171,0,129,171,0,223,130,0, 168,244,0,139,0,0,0,137,0,0, - 0,303,129,50,250,0,129,0,250,0, - 3,0,0,129,0,302,129,50,0,45, - 129,0,153,3,0,129,279,278,129,74, - 277,171,0,278,129,74,277,171,0,216, - 0,217,0,277,171,0,98,0,0,216, + 0,304,129,50,251,0,129,0,251,0, + 3,0,0,129,0,303,129,50,0,45, + 129,0,153,3,0,129,280,279,129,74, + 278,171,0,279,129,74,278,171,0,216, + 0,217,0,278,171,0,98,0,0,216, 0,217,0,204,98,0,0,216,0,217, - 0,278,129,277,171,0,216,0,204,0, + 0,279,129,278,171,0,216,0,204,0, 0,216,0,231,129,3,0,128,0,0, 0,0,0,231,129,3,220,0,227,3, 0,215,129,0,209,0,149,0,168,130, @@ -2154,17 +2144,17 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 231,129,3,182,0,182,0,2,0,0, 128,0,0,0,0,0,201,3,0,202, 0,230,129,50,28,27,0,178,130,56, - 48,0,198,130,0,133,178,130,275,48, - 0,178,130,275,48,0,178,130,67,125, + 48,0,198,130,0,133,178,130,276,48, + 0,178,130,276,48,0,178,130,67,125, 56,0,230,129,50,56,0,230,129,50, - 123,56,0,230,129,50,126,56,0,272, - 129,50,125,68,0,272,129,50,68,0, + 123,56,0,230,129,50,126,56,0,273, + 129,50,125,68,0,273,129,50,68,0, 178,130,68,0,137,0,189,178,130,244, 0,139,0,178,130,244,0,189,168,130, - 10,0,168,130,10,0,95,139,0,265, - 129,148,0,265,129,171,0,163,85,0, - 226,164,226,299,3,82,0,128,174,0, - 226,299,3,82,0,130,0,128,174,0, + 10,0,168,130,10,0,95,139,0,266, + 129,148,0,266,129,171,0,163,85,0, + 226,164,226,300,3,82,0,128,174,0, + 226,300,3,82,0,130,0,128,174,0, 226,164,226,164,226,3,82,0,226,164, 226,3,82,0,226,3,82,0,130,0, 130,0,128,174,0,163,3,75,193,80, @@ -2173,11 +2163,11 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 34,172,0,172,0,178,34,172,0,239, 3,86,0,193,159,239,3,84,0,64, 174,0,239,3,84,0,128,174,64,174, - 0,298,129,50,0,163,0,218,77,0, + 0,299,129,50,0,163,0,218,77,0, 31,0,163,117,161,0,31,172,0,223, - 3,0,218,60,262,0,163,60,0,184, - 3,295,64,130,0,128,0,0,0,0, - 295,64,130,0,2,148,128,0,0,0, + 3,0,218,60,263,0,163,60,0,184, + 3,296,64,130,0,128,0,0,0,0, + 296,64,130,0,2,148,128,0,0,0, 0,184,3,35,0,150,0,127,29,168, 130,0,32,150,0,95,139,32,150,0, 217,178,130,0,149,32,150,0,184,3, @@ -2188,10 +2178,10 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 184,44,36,0,163,3,65,184,44,32, 0,184,44,32,0,223,3,127,189,168, 130,10,0,127,189,168,130,10,0,139, - 2,0,128,0,223,3,126,255,168,130, - 10,0,255,168,130,10,0,137,2,0, + 2,0,128,0,223,3,126,256,168,130, + 10,0,256,168,130,10,0,137,2,0, 128,0,223,3,137,0,223,3,142,0, - 163,60,142,0,257,0,32,0,32,143, + 163,60,142,0,258,0,32,0,32,143, 0,167,0,136,0,163,3,0 }; }; @@ -2200,37 +2190,37 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface ScopeState { public final static char scopeState[] = {0, - 1450,0,3517,0,4889,4872,4369,0,2579,1541, - 618,1332,0,2693,2574,667,0,2689,2545,0, - 3736,3698,3644,3425,3076,3606,3552,3514,3460,2379, - 3422,2972,2934,2894,1123,0,4803,990,4083,0, - 3081,1053,0,2694,4092,0,4618,4526,0,4618, - 4605,4541,3390,4526,2800,4324,4424,4512,3059,4337, - 4448,2878,2722,2644,0,2310,2009,0,2947,4586, - 0,2947,4586,3186,3177,4236,3088,3078,4182,4139, - 4075,4066,3736,3698,3644,3606,3552,3514,3460,3422, - 2972,2934,0,2947,4586,3186,3177,4236,3088,3078, - 4182,4139,4075,4066,0,894,709,0,3059,4605, - 4297,4541,3390,4645,2878,3097,3470,3029,4641,3545, - 827,3020,2942,0,2320,1936,1764,1740,3390,3545, - 2800,2722,2644,3477,2864,0,647,569,0,1326, - 0,4354,526,2440,0,4861,4854,4849,4794,4789, - 4777,4772,4757,4712,4680,4270,4212,4165,4093,4655, - 4362,3204,4200,3436,3052,3411,2534,2235,0,4861, - 4854,3286,3195,2870,4849,4794,4789,2792,2715,4777, - 4772,4757,2684,4712,2052,4680,1131,1077,4270,1072, - 1015,2057,1008,4212,2459,4165,3212,1143,4093,4655, - 4362,1003,3204,660,4200,3436,2539,3052,4354,3411, - 2440,2534,2235,948,877,784,895,717,2800,4324, - 4424,4512,3059,4618,4605,4337,4541,3390,4448,2878, - 2722,4526,2644,859,844,647,569,4043,2241,2280, - 2349,2315,2411,2382,582,2748,2657,2616,2588,2496, - 2465,3366,3342,3318,2904,2826,4020,3997,3974,3951, - 3928,3905,3882,3859,3836,3293,3813,620,1931,2191, - 2152,2102,2063,1238,1193,2013,1974,1149,905,1888, - 798,735,674,526,1845,1802,1759,1716,1673,1630, - 1587,1544,1501,1458,1415,1372,1327,1088,1029,960, - 1282,0 + 1284,0,3603,0,4844,4824,4817,0,3394,3216, + 2913,2745,0,3101,2569,2025,0,2556,2532,0, + 3922,3884,3830,3556,3247,3751,3638,3600,3546,2386, + 3508,3082,3044,3092,3047,0,3781,993,3759,0, + 3078,2692,0,2702,3497,0,4612,4539,0,4612, + 4599,4583,3476,4539,2838,3715,4397,4505,2808,4333, + 4426,3008,2730,2652,0,2316,2016,0,4628,3521, + 0,4628,3521,3297,3233,4302,3190,3125,4238,4229, + 3763,3306,3922,3884,3830,3751,3638,3600,3546,3508, + 3082,3044,0,4628,3521,3297,3233,4302,3190,3125, + 4238,4229,3763,3306,0,1184,711,0,2808,4599, + 4480,4583,3476,3052,3008,4361,2799,2099,2831,3069, + 2005,3054,1183,0,2327,1771,830,648,3476,3069, + 2838,2730,2652,2851,2795,0,649,570,0,619, + 0,4411,527,2447,0,4808,4796,4788,4776,4771, + 4751,4739,4716,4704,4684,4328,4256,3324,3220,4679, + 4647,3183,4522,4419,3498,2877,2541,2242,0,4808, + 4796,3489,3331,3251,4788,4776,4771,2925,2723,4751, + 4739,4716,3198,4704,1143,4684,1135,1076,4328,1028, + 1018,2064,1011,4256,2466,3324,2546,1148,3220,4679, + 4647,1006,3183,662,4522,4419,2551,3498,4411,2877, + 2447,2541,2242,951,880,786,898,719,2838,3715, + 4397,4505,2808,4612,4599,4333,4583,3476,4426,3008, + 2730,4539,2652,862,847,649,570,4206,2248,2287, + 2356,2322,2418,2389,583,2756,2665,2624,2596,2503, + 2472,3452,3428,3404,2982,2956,4183,4160,4137,4114, + 4091,4068,4045,4022,3999,3021,3728,621,1938,2198, + 2159,2109,2070,1244,1198,2020,1981,1154,908,1895, + 801,737,676,527,1852,1809,1766,1723,1680,1637, + 1594,1551,1508,1465,1422,1379,1334,1092,1033,963, + 1288,0 }; }; public final static char scopeState[] = ScopeState.scopeState; @@ -2238,7 +2228,7 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface InSymb { public final static char inSymb[] = {0, - 0,294,129,264,39,31,34,36,32,10, + 0,295,129,265,39,31,34,36,32,10, 137,126,128,7,132,4,3,130,35,30, 5,12,11,6,8,25,24,142,147,150, 149,152,151,156,155,158,157,160,47,161, @@ -2249,47 +2239,47 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 65,44,88,89,8,98,97,100,99,101, 113,112,111,110,109,108,107,106,105,104, 67,117,102,184,163,172,129,184,184,184, - 184,168,223,129,129,266,267,250,268,244, - 269,68,270,271,10,130,60,60,129,60, - 295,3,189,4,184,29,5,130,29,223, + 184,168,223,129,129,267,268,251,269,244, + 270,68,271,272,10,130,60,60,129,60, + 296,3,189,4,184,29,5,130,29,223, 163,149,149,147,147,147,151,151,151,151, 150,150,155,152,152,157,156,158,163,160, 129,60,3,221,220,137,10,130,65,65, - 65,65,189,255,290,135,293,215,130,6, + 65,65,189,256,291,135,294,215,130,6, 50,168,234,130,127,126,125,50,130,130, - 178,168,290,202,3,296,172,153,257,189, + 178,168,291,202,3,297,172,153,258,189, 130,178,168,72,215,218,161,227,129,3, 130,168,3,3,3,3,127,126,66,168, 129,129,127,126,129,178,129,50,129,178, 168,29,184,129,129,4,217,5,29,231, 232,148,233,129,168,29,163,163,163,163, - 3,3,6,185,303,130,169,228,192,48, - 171,305,129,129,72,189,129,272,125,273, - 189,159,259,262,60,179,4,127,159,67, + 3,3,6,185,304,130,169,228,192,48, + 171,306,129,129,72,189,129,273,125,274, + 189,159,260,263,60,179,4,127,159,67, 227,201,187,182,130,3,129,66,231,189, - 223,223,129,168,29,275,277,129,3,182, - 307,228,45,130,272,67,66,129,3,60, + 223,223,129,168,29,276,278,129,3,182, + 308,228,45,130,273,67,66,129,3,60, 163,4,129,67,67,3,178,168,201,129, - 215,159,127,189,44,130,74,129,215,304, - 129,130,126,72,284,201,66,130,45,308, - 178,259,223,218,224,129,129,133,129,178, - 129,278,72,66,215,168,72,67,178,130, - 130,129,231,224,292,29,10,62,133,278, - 50,288,130,289,178,178,47,159,129,66, - 65,44,234,234,279,129,66,178,3,3, + 215,159,127,189,44,130,74,129,215,305, + 129,130,126,72,285,201,66,130,45,309, + 178,260,223,218,224,129,129,133,129,178, + 129,279,72,66,215,168,72,67,178,130, + 130,129,231,224,293,29,10,62,133,279, + 50,289,130,290,178,178,47,159,129,66, + 65,44,234,234,280,129,66,178,3,3, 129,27,29,171,61,56,48,129,67,67, - 129,298,79,77,1,163,86,84,82,80, - 75,83,85,78,76,56,74,223,312,224, - 28,44,129,3,50,123,126,125,56,292, - 280,119,9,218,72,3,3,3,193,3, - 125,163,125,180,66,129,129,50,65,265, - 201,276,28,129,50,50,67,130,65,3, - 239,172,239,299,226,148,75,239,129,129, + 129,299,79,77,1,163,86,84,82,80, + 75,83,85,78,76,56,74,223,313,224, + 28,44,129,3,50,123,126,125,56,293, + 281,119,9,218,72,3,3,3,193,3, + 125,163,125,180,66,129,129,50,65,266, + 201,277,28,129,50,50,67,130,65,3, + 239,172,239,300,226,148,75,239,129,129, 3,67,66,159,230,229,129,129,130,178, - 62,95,311,172,159,201,159,226,164,129, - 3,159,280,230,153,50,230,230,178,274, - 234,159,159,129,67,193,164,226,265,163, - 129,274,67,122,226,164,159,302,159,226, + 62,95,312,172,159,201,159,226,164,129, + 3,159,281,230,153,50,230,230,178,275, + 234,159,159,129,67,193,164,226,266,163, + 129,275,67,122,226,164,159,303,159,226, 66,159 }; }; @@ -2503,7 +2493,7 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab "enumerator_definition", "namespace_name", "init_declarator_list", - "init_declarator", + "init_declarator_complete", "initializer", "direct_declarator", "ptr_operator_seq", @@ -2569,18 +2559,18 @@ public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public final static int NUM_STATES = 522, NT_OFFSET = 124, - LA_STATE_OFFSET = 5884, + LA_STATE_OFFSET = 5834, MAX_LA = 2147483647, - NUM_RULES = 525, - NUM_NONTERMINALS = 194, - NUM_SYMBOLS = 318, + NUM_RULES = 526, + NUM_NONTERMINALS = 195, + NUM_SYMBOLS = 319, SEGMENT_SIZE = 8192, - START_STATE = 2526, + START_STATE = 2903, IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 121, EOLT_SYMBOL = 121, - ACCEPT_ACTION = 5006, - ERROR_ACTION = 5359; + ACCEPT_ACTION = 4961, + ERROR_ACTION = 5308; public final static boolean BACKTRACK = true; diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java new file mode 100644 index 00000000000..f8c7da1a927 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java @@ -0,0 +1,2116 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 IBM Corporation and others. +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl_v10.html +* +* Contributors: +* IBM Corporation - initial API and implementation +*********************************************************************************/ + +// This file was generated by LPG + +package org.eclipse.cdt.internal.core.dom.lrparser.cpp; + +import lpg.lpgjavaruntime.*; + +import java.util.*; + +import org.eclipse.cdt.core.dom.ast.*; +import org.eclipse.cdt.core.dom.ast.cpp.*; +import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPASTNodeFactory; +import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction; +import org.eclipse.cdt.core.dom.lrparser.IParser; +import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; + +import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; +import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; + +public class CPPNoFunctionDeclaratorParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser +{ + private static ParseTable prs = new CPPNoFunctionDeclaratorParserprs(); + private BacktrackingParser btParser; + + public BacktrackingParser getParser() { return btParser; } + private void setResult(Object object) { btParser.setSym1(object); } + public Object getRhsSym(int i) { return btParser.getSym(i); } + + public int getRhsTokenIndex(int i) { return btParser.getToken(i); } + public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); } + + public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); } + public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); } + + public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); } + public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); } + + public int getLeftSpan() { return btParser.getFirstToken(); } + public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); } + + public int getRightSpan() { return btParser.getLastToken(); } + public IToken getRightIToken() { return super.getIToken(getRightSpan()); } + + public int getRhsErrorTokenIndex(int i) + { + int index = btParser.getToken(i); + IToken err = super.getIToken(index); + return (err instanceof ErrorToken ? index : 0); + } + public ErrorToken getRhsErrorIToken(int i) + { + int index = btParser.getToken(i); + IToken err = super.getIToken(index); + return (ErrorToken) (err instanceof ErrorToken ? err : null); + } + + public CPPNoFunctionDeclaratorParser(LexStream lexStream) + { + super(lexStream); + + try + { + super.remapTerminalSymbols(orderedTerminalSymbols(), CPPNoFunctionDeclaratorParserprs.EOFT_SYMBOL); + } + catch(NullExportedSymbolsException e) { + } + catch(NullTerminalSymbolsException e) { + } + catch(UnimplementedTerminalsException e) + { + java.util.ArrayList unimplemented_symbols = e.getSymbols(); + System.out.println("The Lexer will not scan the following token(s):"); + for (int i = 0; i < unimplemented_symbols.size(); i++) + { + Integer id = (Integer) unimplemented_symbols.get(i); + System.out.println(" " + CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols[id.intValue()]); + } + System.out.println(); + } + catch(UndefinedEofSymbolException e) + { + throw new Error(new UndefinedEofSymbolException + ("The Lexer does not implement the Eof symbol " + + CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols[CPPNoFunctionDeclaratorParserprs.EOFT_SYMBOL])); + } + } + + public String[] orderedTerminalSymbols() { return CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols; } + public String getTokenKindName(int kind) { return CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols[kind]; } + public int getEOFTokenKind() { return CPPNoFunctionDeclaratorParserprs.EOFT_SYMBOL; } + public PrsStream getParseStream() { return (PrsStream) this; } + + // + // Report error message for given error_token. + // + public final void reportErrorTokenMessage(int error_token, String msg) + { + int firsttok = super.getFirstErrorToken(error_token), + lasttok = super.getLastErrorToken(error_token); + String location = super.getFileName() + ':' + + (firsttok > lasttok + ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) + : (super.getLine(error_token) + ":" + + super.getColumn(error_token) + ":" + + super.getEndLine(error_token) + ":" + + super.getEndColumn(error_token))) + + ": "; + super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg); + } + + public Object parser() + { + return parser(null, 0); + } + + public Object parser(Monitor monitor) + { + return parser(monitor, 0); + } + + public Object parser(int error_repair_count) + { + return parser(null, error_repair_count); + } + + public Object parser(Monitor monitor, int error_repair_count) + { + try + { + btParser = new BacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this); + } + catch (NotBacktrackParseTableException e) + { + throw new Error(new NotBacktrackParseTableException + ("Regenerate CPPNoFunctionDeclaratorParserprs.java with -BACKTRACK option")); + } + catch (BadParseSymFileException e) + { + throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- CPPNoFunctionDeclaratorParsersym.java")); + } + + try + { + return (Object) btParser.parse(error_repair_count); + } + catch (BadParseException e) + { + reset(e.error_token); // point to error token + DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs); + diagnoseParser.diagnose(e.error_token); + } + + return null; + } + + +private CPPParserAction action; + +// uncomment to use with backtracking parser +public CPPNoFunctionDeclaratorParser() { // constructor +} + +private void initActions(IASTTranslationUnit tu) { + // binding resolution actions need access to IASTName nodes, temporary + action = new CPPParserAction (); + //action.resolver = new C99TypedefTrackerParserAction (this); + action.builder = new CPPBuildASTParserAction ( CPPASTNodeFactory.DEFAULT_INSTANCE , this, tu); + //action.builder.setTokenMap(CPPParsersym.orderedTerminalSymbols); + + // comment this line to use with backtracking parser + //setParserAction(action); +} + + +public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); + super.addToken(token); +} + + +public IASTCompletionNode parse(IASTTranslationUnit tu) { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + initActions(tu); + + final int errorRepairCount = -1; // _1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + // the completion node may be null + IASTCompletionNode compNode = action.builder.getASTCompletionNode(); + + //action = null; // causes getSecondaryParseResult() to fail + + // Comment this line to use with backtracking parser + //parserAction = null; + + return compNode; +} + + +public int getKind(int i) { + int kind = super.getKind(i); + + // There used to be a special token kind for zero used to parser pure virtual function declarations. + // But it turned out to be easier to just parse them as an init_ declarator and programaticaly check + // for pure virtual, see consumeMemberDeclaratorWithInitializer(). + + //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$ + // kind = CPPParsersym.TK_zero; + //} + + // lexer feedback hack! + //else if(kind == C99Parsersym.TK_identifier && action.resolver.isTypedef(getTokenText(i))) { + // kind = C99Parsersym.TK_TypedefName; + //} + + return kind; +} + + +// uncomment this method to use with backtracking parser +public List getRuleTokens() { + return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +} + + +public IASTNode getSecondaryParseResult() { + return action.builder.getSecondaryParseResult(); +} + +public String[] getOrderedTerminalSymbols() { + return CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols; +} + +public String getName() { + return "CPPNoFunctionDeclaratorParser"; //$NON-NLS-1$ +} + + + +private ITokenMap tokenMap = null; + +public void setTokens(List tokens) { + resetTokenStream(); + addToken(new Token(null, 0, 0, 0)); // dummy token + for(IToken token : tokens) { + token.setKind(tokenMap.mapKind(token.getKind())); + addToken(token); + } + addToken(new Token(null, 0, 0, CPPNoFunctionDeclaratorParsersym.TK_EOF_TOKEN)); +} + +public CPPNoFunctionDeclaratorParser(String[] mapFrom) { // constructor + tokenMap = new TokenMap(CPPNoFunctionDeclaratorParsersym.orderedTerminalSymbols, mapFrom); +} + + + + public void ruleAction(int ruleNumber) + { + switch (ruleNumber) + { + + // + // Rule 1: ::= $Empty + // + case 1: { action.builder. + openASTScope(); break; + } + + // + // Rule 2: ::= $Empty + // + case 2: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 11: translation_unit ::= external_declaration_list + // + case 11: { action.builder. + consumeTranslationUnit(); break; + } + + // + // Rule 12: translation_unit ::= $Empty + // + case 12: { action.builder. + consumeTranslationUnit(); break; + } + + // + // Rule 16: external_declaration ::= ERROR_TOKEN + // + case 16: { action.builder. + consumeDeclarationProblem(); break; + } + + // + // Rule 19: literal ::= integer + // + case 19: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break; + } + + // + // Rule 20: literal ::= 0 + // + case 20: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break; + } + + // + // Rule 21: literal ::= floating + // + case 21: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); break; + } + + // + // Rule 22: literal ::= charconst + // + case 22: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); break; + } + + // + // Rule 23: literal ::= stringlit + // + case 23: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); break; + } + + // + // Rule 24: literal ::= true + // + case 24: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); break; + } + + // + // Rule 25: literal ::= false + // + case 25: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); break; + } + + // + // Rule 26: literal ::= this + // + case 26: { action.builder. + consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); break; + } + + // + // Rule 28: primary_expression ::= ( expression ) + // + case 28: { action.builder. + consumeExpressionBracketed(); break; + } + + // + // Rule 30: id_expression ::= qualified_or_unqualified_name + // + case 30: { action.builder. + consumeExpressionName(); break; + } + + // + // Rule 37: unqualified_id_name ::= ~ class_name + // + case 37: { action.builder. + consumeDestructorName(); break; + } + + // + // Rule 38: identifier_name ::= identifier_token + // + case 38: { action.builder. + consumeIdentifierName(); break; + } + + // + // Rule 39: template_opt ::= template + // + case 39: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 40: template_opt ::= $Empty + // + case 40: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 41: dcolon_opt ::= :: + // + case 41: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 42: dcolon_opt ::= $Empty + // + case 42: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 43: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name + // + case 43: { action.builder. + consumeQualifiedId(true); break; + } + + // + // Rule 44: qualified_id_name ::= :: identifier_name + // + case 44: { action.builder. + consumeGlobalQualifiedId(); break; + } + + // + // Rule 45: qualified_id_name ::= :: operator_function_id_name + // + case 45: { action.builder. + consumeGlobalQualifiedId(); break; + } + + // + // Rule 46: qualified_id_name ::= :: template_id_name + // + case 46: { action.builder. + consumeGlobalQualifiedId(); break; + } + + // + // Rule 47: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template + // + case 47: { action.builder. + consumeNestedNameSpecifier(true); break; + } + + // + // Rule 48: nested_name_specifier ::= class_or_namespace_name :: + // + case 48: { action.builder. + consumeNestedNameSpecifier(false); break; + } + + // + // Rule 49: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template + // + case 49: { action.builder. + consumeNestedNameSpecifier(true); break; + } + + // + // Rule 50: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: + // + case 50: { action.builder. + consumeNestedNameSpecifier(false); break; + } + + // + // Rule 51: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name + // + case 51: { action.builder. + consumeNameWithTemplateKeyword(); break; + } + + // + // Rule 53: nested_name_specifier_opt ::= $Empty + // + case 53: { action.builder. + consumeNestedNameSpecifierEmpty(); break; + } + + // + // Rule 56: postfix_expression ::= postfix_expression [ expression ] + // + case 56: { action.builder. + consumeExpressionArraySubscript(); break; + } + + // + // Rule 57: postfix_expression ::= postfix_expression ( expression_list_opt ) + // + case 57: { action.builder. + consumeExpressionFunctionCall(); break; + } + + // + // Rule 58: postfix_expression ::= simple_type_specifier ( expression_list_opt ) + // + case 58: { action.builder. + consumeExpressionSimpleTypeConstructor(); break; + } + + // + // Rule 59: postfix_expression ::= typename dcolon_opt nested_name_specifier identifier_name ( expression_list_opt ) + // + case 59: { action.builder. + consumeExpressionTypeName(); break; + } + + // + // Rule 60: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt ) + // + case 60: { action.builder. + consumeExpressionTypeName(); break; + } + + // + // Rule 61: postfix_expression ::= postfix_expression . qualified_or_unqualified_name + // + case 61: { action.builder. + consumeExpressionFieldReference(false, false); break; + } + + // + // Rule 62: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name + // + case 62: { action.builder. + consumeExpressionFieldReference(true, false); break; + } + + // + // Rule 63: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name + // + case 63: { action.builder. + consumeExpressionFieldReference(false, true); break; + } + + // + // Rule 64: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name + // + case 64: { action.builder. + consumeExpressionFieldReference(true, true); break; + } + + // + // Rule 65: postfix_expression ::= postfix_expression . pseudo_destructor_name + // + case 65: { action.builder. + consumeExpressionFieldReference(false, false); break; + } + + // + // Rule 66: postfix_expression ::= postfix_expression -> pseudo_destructor_name + // + case 66: { action.builder. + consumeExpressionFieldReference(true, false); break; + } + + // + // Rule 67: postfix_expression ::= postfix_expression ++ + // + case 67: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; + } + + // + // Rule 68: postfix_expression ::= postfix_expression -- + // + case 68: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; + } + + // + // Rule 69: postfix_expression ::= dynamic_cast < type_id > ( expression ) + // + case 69: { action.builder. + consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); break; + } + + // + // Rule 70: postfix_expression ::= static_cast < type_id > ( expression ) + // + case 70: { action.builder. + consumeExpressionCast(ICPPASTCastExpression.op_static_cast); break; + } + + // + // Rule 71: postfix_expression ::= reinterpret_cast < type_id > ( expression ) + // + case 71: { action.builder. + consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); break; + } + + // + // Rule 72: postfix_expression ::= const_cast < type_id > ( expression ) + // + case 72: { action.builder. + consumeExpressionCast(ICPPASTCastExpression.op_const_cast); break; + } + + // + // Rule 73: postfix_expression ::= typeid ( expression ) + // + case 73: { action.builder. + consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); break; + } + + // + // Rule 74: postfix_expression ::= typeid ( type_id ) + // + case 74: { action.builder. + consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); break; + } + + // + // Rule 75: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name + // + case 75: { action.builder. + consumePsudoDestructorName(true); break; + } + + // + // Rule 76: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name + // + case 76: { action.builder. + consumePsudoDestructorName(true); break; + } + + // + // Rule 77: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name + // + case 77: { action.builder. + consumePsudoDestructorName(false); break; + } + + // + // Rule 78: destructor_type_name ::= ~ type_name + // + case 78: { action.builder. + consumeDestructorName(); break; + } + + // + // Rule 82: unary_expression ::= ++ cast_expression + // + case 82: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; + } + + // + // Rule 83: unary_expression ::= -- cast_expression + // + case 83: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; + } + + // + // Rule 84: unary_expression ::= & cast_expression + // + case 84: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; + } + + // + // Rule 85: unary_expression ::= * cast_expression + // + case 85: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; + } + + // + // Rule 86: unary_expression ::= + cast_expression + // + case 86: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; + } + + // + // Rule 87: unary_expression ::= - cast_expression + // + case 87: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; + } + + // + // Rule 88: unary_expression ::= ~ cast_expression + // + case 88: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; + } + + // + // Rule 89: unary_expression ::= ! cast_expression + // + case 89: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; + } + + // + // Rule 90: unary_expression ::= sizeof unary_expression + // + case 90: { action.builder. + consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; + } + + // + // Rule 91: unary_expression ::= sizeof ( type_id ) + // + case 91: { action.builder. + consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); break; + } + + // + // Rule 92: new_expression ::= dcolon_opt new new_placement_opt new_type_id new_array_expressions_opt new_initializer_opt + // + case 92: { action.builder. + consumeExpressionNew(true); break; + } + + // + // Rule 93: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) new_array_expressions_opt new_initializer_opt + // + case 93: { action.builder. + consumeExpressionNew(false); break; + } + + // + // Rule 95: new_placement_opt ::= $Empty + // + case 95: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 96: new_type_id ::= type_specifier_seq + // + case 96: { action.builder. + consumeTypeId(false); break; + } + + // + // Rule 97: new_type_id ::= type_specifier_seq new_declarator + // + case 97: { action.builder. + consumeTypeId(true); break; + } + + // + // Rule 98: new_declarator ::= new_pointer_operators + // + case 98: { action.builder. + consumeNewDeclarator(); break; + } + + // + // Rule 107: new_initializer_opt ::= $Empty + // + case 107: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 108: delete_expression ::= dcolon_opt delete cast_expression + // + case 108: { action.builder. + consumeExpressionDelete(false); break; + } + + // + // Rule 109: delete_expression ::= dcolon_opt delete [ ] cast_expression + // + case 109: { action.builder. + consumeExpressionDelete(true); break; + } + + // + // Rule 111: cast_expression ::= ( type_id ) cast_expression + // + case 111: { action.builder. + consumeExpressionCast(ICPPASTCastExpression.op_cast); break; + } + + // + // Rule 113: pm_expression ::= pm_expression .* cast_expression + // + case 113: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); break; + } + + // + // Rule 114: pm_expression ::= pm_expression ->* cast_expression + // + case 114: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); break; + } + + // + // Rule 116: multiplicative_expression ::= multiplicative_expression * pm_expression + // + case 116: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); break; + } + + // + // Rule 117: multiplicative_expression ::= multiplicative_expression / pm_expression + // + case 117: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); break; + } + + // + // Rule 118: multiplicative_expression ::= multiplicative_expression % pm_expression + // + case 118: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); break; + } + + // + // Rule 120: additive_expression ::= additive_expression + multiplicative_expression + // + case 120: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); break; + } + + // + // Rule 121: additive_expression ::= additive_expression - multiplicative_expression + // + case 121: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); break; + } + + // + // Rule 123: shift_expression ::= shift_expression << additive_expression + // + case 123: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); break; + } + + // + // Rule 124: shift_expression ::= shift_expression >> additive_expression + // + case 124: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); break; + } + + // + // Rule 126: relational_expression ::= relational_expression < shift_expression + // + case 126: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break; + } + + // + // Rule 127: relational_expression ::= relational_expression > shift_expression + // + case 127: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break; + } + + // + // Rule 128: relational_expression ::= relational_expression <= shift_expression + // + case 128: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break; + } + + // + // Rule 129: relational_expression ::= relational_expression >= shift_expression + // + case 129: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break; + } + + // + // Rule 131: equality_expression ::= equality_expression == relational_expression + // + case 131: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break; + } + + // + // Rule 132: equality_expression ::= equality_expression != relational_expression + // + case 132: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break; + } + + // + // Rule 134: and_expression ::= and_expression & equality_expression + // + case 134: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break; + } + + // + // Rule 136: exclusive_or_expression ::= exclusive_or_expression ^ and_expression + // + case 136: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break; + } + + // + // Rule 138: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression + // + case 138: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break; + } + + // + // Rule 140: logical_and_expression ::= logical_and_expression && inclusive_or_expression + // + case 140: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break; + } + + // + // Rule 142: logical_or_expression ::= logical_or_expression || logical_and_expression + // + case 142: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break; + } + + // + // Rule 144: conditional_expression ::= logical_or_expression ? expression : assignment_expression + // + case 144: { action.builder. + consumeExpressionConditional(); break; + } + + // + // Rule 145: throw_expression ::= throw + // + case 145: { action.builder. + consumeExpressionThrow(false); break; + } + + // + // Rule 146: throw_expression ::= throw assignment_expression + // + case 146: { action.builder. + consumeExpressionThrow(true); break; + } + + // + // Rule 149: assignment_expression ::= logical_or_expression = assignment_expression + // + case 149: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break; + } + + // + // Rule 150: assignment_expression ::= logical_or_expression *= assignment_expression + // + case 150: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break; + } + + // + // Rule 151: assignment_expression ::= logical_or_expression /= assignment_expression + // + case 151: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break; + } + + // + // Rule 152: assignment_expression ::= logical_or_expression %= assignment_expression + // + case 152: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break; + } + + // + // Rule 153: assignment_expression ::= logical_or_expression += assignment_expression + // + case 153: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break; + } + + // + // Rule 154: assignment_expression ::= logical_or_expression -= assignment_expression + // + case 154: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break; + } + + // + // Rule 155: assignment_expression ::= logical_or_expression >>= assignment_expression + // + case 155: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break; + } + + // + // Rule 156: assignment_expression ::= logical_or_expression <<= assignment_expression + // + case 156: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break; + } + + // + // Rule 157: assignment_expression ::= logical_or_expression &= assignment_expression + // + case 157: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break; + } + + // + // Rule 158: assignment_expression ::= logical_or_expression ^= assignment_expression + // + case 158: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break; + } + + // + // Rule 159: assignment_expression ::= logical_or_expression |= assignment_expression + // + case 159: { action.builder. + consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break; + } + + // + // Rule 161: expression_list ::= expression_list_actual + // + case 161: { action.builder. + consumeExpressionList(); break; + } + + // + // Rule 165: expression_list_opt ::= $Empty + // + case 165: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 167: expression_opt ::= $Empty + // + case 167: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 170: constant_expression_opt ::= $Empty + // + case 170: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 179: statement ::= ERROR_TOKEN + // + case 179: { action.builder. + consumeStatementProblem(); break; + } + + // + // Rule 180: labeled_statement ::= identifier : statement + // + case 180: { action.builder. + consumeStatementLabeled(); break; + } + + // + // Rule 181: labeled_statement ::= case constant_expression : + // + case 181: { action.builder. + consumeStatementCase(); break; + } + + // + // Rule 182: labeled_statement ::= default : + // + case 182: { action.builder. + consumeStatementDefault(); break; + } + + // + // Rule 183: expression_statement ::= expression ; + // + case 183: { action.builder. + consumeStatementExpression(); break; + } + + // + // Rule 184: expression_statement ::= ; + // + case 184: { action.builder. + consumeStatementNull(); break; + } + + // + // Rule 185: compound_statement ::= { statement_seq } + // + case 185: { action.builder. + consumeStatementCompoundStatement(true); break; + } + + // + // Rule 186: compound_statement ::= { } + // + case 186: { action.builder. + consumeStatementCompoundStatement(false); break; + } + + // + // Rule 189: selection_statement ::= if ( condition ) statement + // + case 189: { action.builder. + consumeStatementIf(false); break; + } + + // + // Rule 190: selection_statement ::= if ( condition ) statement else statement + // + case 190: { action.builder. + consumeStatementIf(true); break; + } + + // + // Rule 191: selection_statement ::= switch ( condition ) statement + // + case 191: { action.builder. + consumeStatementSwitch(); break; + } + + // + // Rule 193: condition ::= type_specifier_seq declarator = assignment_expression + // + case 193: { action.builder. + consumeConditionDeclaration(); break; + } + + // + // Rule 194: iteration_statement ::= while ( condition ) statement + // + case 194: { action.builder. + consumeStatementWhileLoop(); break; + } + + // + // Rule 195: iteration_statement ::= do statement while ( expression ) ; + // + case 195: { action.builder. + consumeStatementDoLoop(); break; + } + + // + // Rule 196: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement + // + case 196: { action.builder. + consumeStatementForLoop(); break; + } + + // + // Rule 197: iteration_statement ::= for ( simple_declaration_with_declspec expression_opt ; expression_opt ) statement + // + case 197: { action.builder. + consumeStatementForLoop(); break; + } + + // + // Rule 198: jump_statement ::= break ; + // + case 198: { action.builder. + consumeStatementBreak(); break; + } + + // + // Rule 199: jump_statement ::= continue ; + // + case 199: { action.builder. + consumeStatementContinue(); break; + } + + // + // Rule 200: jump_statement ::= return expression ; + // + case 200: { action.builder. + consumeStatementReturn(true); break; + } + + // + // Rule 201: jump_statement ::= return ; + // + case 201: { action.builder. + consumeStatementReturn(false); break; + } + + // + // Rule 202: jump_statement ::= goto identifier_token ; + // + case 202: { action.builder. + consumeStatementGoto(); break; + } + + // + // Rule 203: declaration_statement ::= block_declaration + // + case 203: { action.builder. + consumeStatementDeclaration(); break; + } + + // + // Rule 204: declaration_statement ::= function_definition + // + case 204: { action.builder. + consumeStatementDeclaration(); break; + } + + // + // Rule 221: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; + // + case 221: { action.builder. + consumeDeclarationSimple(true, true); break; + } + + // + // Rule 222: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; + // + case 222: { action.builder. + consumeDeclarationSimple(true, false); break; + } + + // + // Rule 223: declaration_specifiers ::= simple_declaration_specifiers + // + case 223: { action.builder. + consumeDeclarationSpecifiersSimple(); break; + } + + // + // Rule 224: declaration_specifiers ::= class_declaration_specifiers + // + case 224: { action.builder. + consumeDeclarationSpecifiersComposite(); break; + } + + // + // Rule 225: declaration_specifiers ::= elaborated_declaration_specifiers + // + case 225: { action.builder. + consumeDeclarationSpecifiersComposite(); break; + } + + // + // Rule 226: declaration_specifiers ::= enum_declaration_specifiers + // + case 226: { action.builder. + consumeDeclarationSpecifiersComposite(); break; + } + + // + // Rule 227: declaration_specifiers ::= type_name_declaration_specifiers + // + case 227: { action.builder. + consumeDeclarationSpecifiersTypeName(); break; + } + + // + // Rule 228: declaration_specifiers_opt ::= $Empty + // + case 228: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 233: no_type_declaration_specifier ::= friend + // + case 233: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 234: no_type_declaration_specifier ::= typedef + // + case 234: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 262: simple_type_specifier ::= simple_type_specifier_token + // + case 262: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 276: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name + // + case 276: { action.builder. + consumeQualifiedId(false); break; + } + + // + // Rule 277: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name + // + case 277: { action.builder. + consumeQualifiedId(false); break; + } + + // + // Rule 278: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name + // + case 278: { action.builder. + consumeQualifiedId(false); break; + } + + // + // Rule 279: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name + // + case 279: { action.builder. + consumeQualifiedId(true); break; + } + + // + // Rule 280: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name + // + case 280: { action.builder. + consumeTypeSpecifierElaborated(false); break; + } + + // + // Rule 281: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name + // + case 281: { action.builder. + consumeTypeSpecifierElaborated(true); break; + } + + // + // Rule 282: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name + // + case 282: { action.builder. + consumeTypeSpecifierElaborated(false); break; + } + + // + // Rule 283: enum_specifier ::= enum { enumerator_list_opt } + // + case 283: { action.builder. + consumeTypeSpecifierEnumeration(false); break; + } + + // + // Rule 284: enum_specifier ::= enum identifier_token { enumerator_list_opt } + // + case 284: { action.builder. + consumeTypeSpecifierEnumeration(true); break; + } + + // + // Rule 289: enumerator_definition ::= identifier_token + // + case 289: { action.builder. + consumeEnumerator(false); break; + } + + // + // Rule 290: enumerator_definition ::= identifier_token = constant_expression + // + case 290: { action.builder. + consumeEnumerator(true); break; + } + + // + // Rule 296: original_namespace_definition ::= namespace identifier_name { declaration_seq_opt } + // + case 296: { action.builder. + consumeNamespaceDefinition(true); break; + } + + // + // Rule 297: extension_namespace_definition ::= namespace original_namespace_name { declaration_seq_opt } + // + case 297: { action.builder. + consumeNamespaceDefinition(true); break; + } + + // + // Rule 298: unnamed_namespace_definition ::= namespace { declaration_seq_opt } + // + case 298: { action.builder. + consumeNamespaceDefinition(false); break; + } + + // + // Rule 299: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; + // + case 299: { action.builder. + consumeNamespaceAliasDefinition(); break; + } + + // + // Rule 300: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; + // + case 300: { action.builder. + consumeUsingDeclaration(); break; + } + + // + // Rule 301: typename_opt ::= typename + // + case 301: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 302: typename_opt ::= $Empty + // + case 302: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 303: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; + // + case 303: { action.builder. + consumeUsingDirective(); break; + } + + // + // Rule 304: asm_definition ::= asm ( stringlit ) ; + // + case 304: { action.builder. + consumeDeclarationASM(); break; + } + + // + // Rule 305: linkage_specification ::= extern stringlit { declaration_seq_opt } + // + case 305: { action.builder. + consumeLinkageSpecification(); break; + } + + // + // Rule 306: linkage_specification ::= extern stringlit declaration + // + case 306: { action.builder. + consumeLinkageSpecification(); break; + } + + // + // Rule 312: init_declarator ::= declarator initializer + // + case 312: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 314: declarator ::= ptr_operator_seq direct_declarator + // + case 314: { action.builder. + consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 316: function_declarator ::= ptr_operator_seq direct_declarator + // + case 316: { action.builder. + consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 319: basic_direct_declarator ::= declarator_id_name + // + case 319: { action.builder. + consumeDirectDeclaratorIdentifier(); break; + } + + // + // Rule 320: basic_direct_declarator ::= ( declarator ) + // + case 320: { action.builder. + consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 321: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 321: { action.builder. + consumeDirectDeclaratorFunctionDeclarator(true); break; + } + + // + // Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier + // + case 322: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier + // + case 323: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 324: array_modifier ::= [ constant_expression ] + // + case 324: { action.builder. + consumeDirectDeclaratorArrayModifier(true); break; + } + + // + // Rule 325: array_modifier ::= [ ] + // + case 325: { action.builder. + consumeDirectDeclaratorArrayModifier(false); break; + } + + // + // Rule 326: ptr_operator ::= * cv_qualifier_seq_opt + // + case 326: { action.builder. + consumePointer(); break; + } + + // + // Rule 327: ptr_operator ::= & + // + case 327: { action.builder. + consumeReferenceOperator(); break; + } + + // + // Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt + // + case 328: { action.builder. + consumePointerToMember(); break; + } + + // + // Rule 334: cv_qualifier ::= const + // + case 334: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 335: cv_qualifier ::= volatile + // + case 335: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 337: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // + case 337: { action.builder. + consumeQualifiedId(false); break; + } + + // + // Rule 338: type_id ::= type_specifier_seq + // + case 338: { action.builder. + consumeTypeId(false); break; + } + + // + // Rule 339: type_id ::= type_specifier_seq abstract_declarator + // + case 339: { action.builder. + consumeTypeId(true); break; + } + + // + // Rule 342: abstract_declarator ::= ptr_operator_seq + // + case 342: { action.builder. + consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 343: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // + case 343: { action.builder. + consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 347: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // + case 347: { action.builder. + consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 348: array_direct_abstract_declarator ::= array_modifier + // + case 348: { action.builder. + consumeDirectDeclaratorArrayDeclarator(false); break; + } + + // + // Rule 349: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // + case 349: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 350: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // + case 350: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 351: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 351: { action.builder. + consumeDirectDeclaratorFunctionDeclarator(true); break; + } + + // + // Rule 352: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 352: { action.builder. + consumeDirectDeclaratorFunctionDeclarator(false); break; + } + + // + // Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt ... + // + case 353: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt + // + case 354: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 355: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 355: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 361: abstract_declarator_opt ::= $Empty + // + case 361: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 362: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 362: { action.builder. + consumeParameterDeclaration(); break; + } + + // + // Rule 363: parameter_declaration ::= declaration_specifiers + // + case 363: { action.builder. + consumeParameterDeclarationWithoutDeclarator(); break; + } + + // + // Rule 365: parameter_init_declarator ::= declarator = parameter_initializer + // + case 365: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 367: parameter_init_declarator ::= abstract_declarator = parameter_initializer + // + case 367: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 368: parameter_init_declarator ::= = parameter_initializer + // + case 368: { action.builder. + consumeDeclaratorWithInitializer(false); break; + } + + // + // Rule 369: parameter_initializer ::= assignment_expression + // + case 369: { action.builder. + consumeInitializer(); break; + } + + // + // Rule 370: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // + case 370: { action.builder. + consumeFunctionDefinition(false); break; + } + + // + // Rule 371: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // + case 371: { action.builder. + consumeFunctionDefinition(true); break; + } + + // + // Rule 374: initializer ::= ( expression_list ) + // + case 374: { action.builder. + consumeInitializerConstructor(); break; + } + + // + // Rule 375: initializer_clause ::= assignment_expression + // + case 375: { action.builder. + consumeInitializer(); break; + } + + // + // Rule 376: initializer_clause ::= { initializer_list , } + // + case 376: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 377: initializer_clause ::= { initializer_list } + // + case 377: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 378: initializer_clause ::= { } + // + case 378: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 383: class_specifier ::= class_head { member_declaration_list_opt } + // + case 383: { action.builder. + consumeClassSpecifier(); break; + } + + // + // Rule 384: class_head ::= class_keyword identifier_name_opt base_clause_opt + // + case 384: { action.builder. + consumeClassHead(false); break; + } + + // + // Rule 385: class_head ::= class_keyword template_id_name base_clause_opt + // + case 385: { action.builder. + consumeClassHead(false); break; + } + + // + // Rule 386: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt + // + case 386: { action.builder. + consumeClassHead(true); break; + } + + // + // Rule 387: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt + // + case 387: { action.builder. + consumeClassHead(true); break; + } + + // + // Rule 389: identifier_name_opt ::= $Empty + // + case 389: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 393: visibility_label ::= access_specifier_keyword : + // + case 393: { action.builder. + consumeVisibilityLabel(); break; + } + + // + // Rule 394: member_declaration ::= declaration_specifiers_opt member_declarator_list ; + // + case 394: { action.builder. + consumeDeclarationSimple(true, true); break; + } + + // + // Rule 395: member_declaration ::= declaration_specifiers_opt ; + // + case 395: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 398: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 398: { action.builder. + consumeMemberDeclarationQualifiedId(); break; + } + + // + // Rule 402: member_declaration ::= ERROR_TOKEN + // + case 402: { action.builder. + consumeDeclarationProblem(); break; + } + + // + // Rule 410: member_declarator ::= declarator constant_initializer + // + case 410: { action.builder. + consumeMemberDeclaratorWithInitializer(); break; + } + + // + // Rule 411: member_declarator ::= bit_field_declarator : constant_expression + // + case 411: { action.builder. + consumeBitField(true); break; + } + + // + // Rule 412: member_declarator ::= : constant_expression + // + case 412: { action.builder. + consumeBitField(false); break; + } + + // + // Rule 413: bit_field_declarator ::= identifier_name + // + case 413: { action.builder. + consumeDirectDeclaratorIdentifier(); break; + } + + // + // Rule 414: constant_initializer ::= = constant_expression + // + case 414: { action.builder. + consumeInitializer(); break; + } + + // + // Rule 420: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // + case 420: { action.builder. + consumeBaseSpecifier(false, false); break; + } + + // + // Rule 421: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // + case 421: { action.builder. + consumeBaseSpecifier(true, true); break; + } + + // + // Rule 422: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // + case 422: { action.builder. + consumeBaseSpecifier(true, true); break; + } + + // + // Rule 423: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 423: { action.builder. + consumeBaseSpecifier(true, false); break; + } + + // + // Rule 424: access_specifier_keyword ::= private + // + case 424: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 425: access_specifier_keyword ::= protected + // + case 425: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 426: access_specifier_keyword ::= public + // + case 426: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 428: access_specifier_keyword_opt ::= $Empty + // + case 428: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 429: conversion_function_id_name ::= operator conversion_type_id + // + case 429: { action.builder. + consumeConversionName(); break; + } + + // + // Rule 430: conversion_type_id ::= type_specifier_seq conversion_declarator + // + case 430: { action.builder. + consumeTypeId(true); break; + } + + // + // Rule 431: conversion_type_id ::= type_specifier_seq + // + case 431: { action.builder. + consumeTypeId(false); break; + } + + // + // Rule 432: conversion_declarator ::= ptr_operator_seq + // + case 432: { action.builder. + consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 438: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // + case 438: { action.builder. + consumeConstructorChainInitializer(); break; + } + + // + // Rule 439: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // + case 439: { action.builder. + consumeQualifiedId(false); break; + } + + // + // Rule 442: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // + case 442: { action.builder. + consumeTemplateId(); break; + } + + // + // Rule 443: operator_id_name ::= operator overloadable_operator + // + case 443: { action.builder. + consumeOperatorName(); break; + } + + // + // Rule 486: template_declaration ::= export_opt template < template_parameter_list > declaration + // + case 486: { action.builder. + consumeTemplateDeclaration(); break; + } + + // + // Rule 487: export_opt ::= export + // + case 487: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 488: export_opt ::= $Empty + // + case 488: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 493: type_parameter ::= class identifier_name_opt + // + case 493: { action.builder. + consumeSimpleTypeTemplateParameter(false); break; + } + + // + // Rule 494: type_parameter ::= class identifier_name_opt = type_id + // + case 494: { action.builder. + consumeSimpleTypeTemplateParameter(true); break; + } + + // + // Rule 495: type_parameter ::= typename identifier_name_opt + // + case 495: { action.builder. + consumeSimpleTypeTemplateParameter(false); break; + } + + // + // Rule 496: type_parameter ::= typename identifier_name_opt = type_id + // + case 496: { action.builder. + consumeSimpleTypeTemplateParameter(true); break; + } + + // + // Rule 497: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // + case 497: { action.builder. + consumeTemplatedTypeTemplateParameter(false); break; + } + + // + // Rule 498: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // + case 498: { action.builder. + consumeTemplatedTypeTemplateParameter(true); break; + } + + // + // Rule 499: template_id_name ::= template_identifier < template_argument_list_opt > + // + case 499: { action.builder. + consumeTemplateId(); break; + } + + // + // Rule 508: explicit_instantiation ::= template declaration + // + case 508: { action.builder. + consumeTemplateExplicitInstantiation(); break; + } + + // + // Rule 509: explicit_specialization ::= template < > declaration + // + case 509: { action.builder. + consumeTemplateExplicitSpecialization(); break; + } + + // + // Rule 510: try_block ::= try compound_statement handler_seq + // + case 510: { action.builder. + consumeStatementTryBlock(); break; + } + + // + // Rule 513: handler ::= catch ( exception_declaration ) compound_statement + // + case 513: { action.builder. + consumeStatementCatchHandler(false); break; + } + + // + // Rule 514: handler ::= catch ( ... ) compound_statement + // + case 514: { action.builder. + consumeStatementCatchHandler(true); break; + } + + // + // Rule 515: exception_declaration ::= type_specifier_seq declarator + // + case 515: { action.builder. + consumeDeclarationSimple(true, false); break; + } + + // + // Rule 516: exception_declaration ::= type_specifier_seq abstract_declarator + // + case 516: { action.builder. + consumeDeclarationSimple(true, false); break; + } + + // + // Rule 517: exception_declaration ::= type_specifier_seq + // + case 517: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 525: no_function_declarator_start ::= ERROR_TOKEN + // + case 525: { action.builder. + consumeDeclarationProblem(); break; + } + + + default: + break; + } + return; + } +} + diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java new file mode 100644 index 00000000000..bfc7e344d72 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParserprs.java @@ -0,0 +1,2639 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 IBM Corporation and others. +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl_v10.html +* +* Contributors: +* IBM Corporation - initial API and implementation +*********************************************************************************/ + +// This file was generated by LPG + +package org.eclipse.cdt.internal.core.dom.lrparser.cpp; + +public class CPPNoFunctionDeclaratorParserprs implements lpg.lpgjavaruntime.ParseTable, CPPNoFunctionDeclaratorParsersym { + + public interface IsKeyword { + public final static byte isKeyword[] = {0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0 + }; + }; + public final static byte isKeyword[] = IsKeyword.isKeyword; + public final boolean isKeyword(int index) { return isKeyword[index] != 0; } + + public interface BaseCheck { + public final static short baseCheck[] = {0, + 0,0,1,1,1,1,1,1,1,1, + 1,0,1,2,1,1,1,1,1,1, + 1,1,1,1,1,1,1,3,1,1, + 1,1,1,1,1,1,2,1,1,0, + 1,0,4,2,2,2,3,2,3,2, + 2,1,0,1,1,4,4,4,8,8, + 3,3,4,4,3,3,2,2,7,7, + 7,7,4,4,5,6,3,2,1,1, + 1,2,2,2,2,2,2,2,2,2, + 4,7,9,3,0,1,2,2,1,2, + 3,4,1,0,3,1,0,3,5,1, + 4,1,3,3,1,3,3,3,1,3, + 3,1,3,3,1,3,3,3,3,1, + 3,3,1,3,1,3,1,3,1,3, + 1,3,1,5,1,2,1,1,3,3, + 3,3,3,3,3,3,3,3,3,1, + 2,1,3,1,0,1,0,1,1,0, + 1,1,1,1,1,1,1,1,1,3, + 3,2,2,1,4,2,1,2,5,7, + 5,1,4,5,7,9,8,2,2,3, + 2,3,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,2,1,0, + 4,4,2,2,2,2,2,0,1,1, + 1,1,1,1,1,2,1,2,2,2, + 1,1,2,2,1,2,2,1,2,2, + 1,2,2,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,3,4,4,5,4, + 5,4,5,6,1,3,1,0,1,3, + 1,1,1,1,1,6,6,5,7,6, + 1,0,6,5,6,4,1,3,1,0, + 1,2,1,3,1,3,1,1,1,3, + 9,2,2,3,2,3,1,5,1,2, + 2,1,0,1,1,1,3,1,2,1, + 1,2,3,1,1,1,3,1,2,2, + 9,8,2,1,3,1,3,1,0,1, + 0,2,1,1,3,1,3,2,1,5, + 8,1,2,3,1,5,4,3,1,3, + 1,1,5,4,4,5,5,1,0,1, + 1,1,2,4,2,2,1,5,1,1, + 1,1,1,2,1,0,1,3,1,2, + 3,2,1,2,2,1,0,1,3,3, + 5,5,4,1,1,1,1,0,2,2, + 1,2,2,1,0,1,3,4,3,1, + 1,5,2,1,1,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,2,2,7,1,0,1,3, + 1,1,2,4,2,4,7,9,5,1, + 1,3,1,0,1,1,1,2,4,4, + 1,2,5,5,3,3,1,4,3,1, + 0,1,3,1,1,1,-105,0,0,0, + 0,-107,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -92,0,0,0,0,0,-2,0,0,0, + -19,0,0,0,0,0,-257,0,0,-89, + 0,0,0,0,-7,-15,0,0,0,0, + 0,-129,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-26,0,0,0,0,0,-8,0,-50, + 0,0,0,0,-10,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-18,0,0,0,0,0,0,0, + 0,-3,0,-192,0,0,0,0,-4,0, + 0,0,0,0,0,0,0,-425,0,0, + 0,0,0,0,-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,0,0,-317,0,0,0,-151,0, + 0,0,0,-20,0,0,0,0,0,0, + -323,0,0,0,0,0,0,0,0,0, + 0,0,-87,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-220,-24,0,0,0,0,0,0,0, + 0,-35,-25,0,0,-30,0,0,-153,0, + 0,0,0,-5,-346,0,0,0,0,0, + 0,0,0,0,0,0,0,-28,-17,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-190,0,0,0,0,0,0,0, + 0,0,-409,0,0,0,0,-29,0,0, + 0,0,0,0,0,0,0,-359,0,0, + 0,0,0,0,-420,0,-517,0,0,0, + 0,0,0,0,0,0,0,0,0,-108, + -31,0,-222,0,0,0,-80,0,0,0, + 0,0,0,-280,0,0,-112,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-216,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-378,0,0,0,0,0,0,0, + 0,0,-321,0,0,0,0,0,0,-39, + -6,0,0,0,0,-94,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-22,0,0,0,-113,0, + 0,0,0,-88,0,0,0,0,0,0, + 0,0,0,0,0,-221,0,0,0,-476, + 0,-333,-249,0,0,0,0,-230,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-38,0,0,0, + 0,0,0,0,0,0,-284,0,0,0, + -40,0,0,-439,-356,0,0,0,0,0, + 0,0,0,0,0,-16,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-23, + 0,0,0,0,0,-41,0,0,0,-44, + 0,0,0,0,0,0,0,0,-374,0, + 0,-500,0,0,0,0,0,0,-12,0, + 0,0,0,0,-42,0,0,-37,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-83,0,0,0,0,0,0,0,0, + 0,-152,0,0,0,0,0,0,0,0, + -194,0,0,0,0,-32,0,0,0,0, + 0,0,0,0,0,-308,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-424,0,0,0,0,0, + 0,0,0,0,-36,0,0,0,-343,0, + 0,0,0,-353,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-154,0,0,0,0,0,0,0, + 0,0,-186,0,0,0,0,0,0,0, + 0,-225,0,0,-43,-344,0,0,0,0, + -102,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-14, + 0,0,0,0,-45,0,0,0,0,0, + 0,0,0,0,0,-57,0,0,-68,0, + 0,0,0,-58,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-156,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-290,0, + 0,-236,0,0,0,-135,0,0,0,0, + -70,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-59,-60,0,0,0,0, + 0,0,0,0,-85,-61,0,0,-136,0, + 0,0,0,-86,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-313,0,0,0,0,0,-62,0, + 0,0,-295,0,0,0,0,0,0,0, + 0,-137,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-159,0,0,0,0, + 0,0,0,0,0,-254,0,0,0,0, + 0,-63,0,0,-138,0,0,0,0,-103, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-64,0, + 0,0,0,0,0,0,0,0,-329,0, + 0,0,0,0,-65,0,0,-139,0,0, + 0,0,-172,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-168,0,0,0,0,0,0,0,0, + 0,-337,0,0,0,0,0,0,0,0, + -140,0,0,0,0,-173,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-183,0,0,0,0,-218, + -66,0,0,0,0,0,0,0,0,0, + -67,0,0,-141,0,0,0,0,-179,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-184,0,0, + 0,0,-219,-69,0,0,0,0,0,0, + 0,0,0,-71,0,0,-142,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -223,0,0,0,0,0,-76,0,0,0, + -338,0,0,0,0,-188,0,0,0,-143, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-240,0,0,0,0,0,-91, + 0,0,0,-437,0,0,0,0,-196,0, + 0,0,-144,0,0,0,0,-191,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-245,0,0,0, + 0,0,0,0,0,0,-464,0,0,0, + 0,0,0,0,0,-145,0,0,0,0, + -195,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-291, + 0,0,0,0,0,0,0,0,0,-354, + 0,0,0,0,0,-93,0,0,-170,0, + 0,0,0,-238,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-246,0,0,0,0,0,0,0, + 0,0,-376,0,0,0,0,0,-110,0, + 0,-251,0,0,0,0,-247,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-307,0,0,0,0, + 0,0,0,0,0,-414,0,0,0,0, + 0,-111,0,0,-510,0,0,0,0,-275, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-316,0, + 0,0,0,0,0,0,0,0,-148,0, + 0,0,0,0,-149,0,0,-299,0,0, + 0,0,-260,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-422,0,0,0,0,-300,0,0,0, + 0,-282,0,0,0,0,-331,0,0,0, + 0,-261,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -150,0,0,0,0,-227,0,0,0,0, + -27,0,0,0,0,-351,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-423, + 0,0,0,0,-361,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,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,-385,-404, + 0,0,0,-362,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-157,0,0, + 0,0,-301,-449,0,0,0,-302,0,0, + 0,0,-412,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-158,0,0,0, + 0,-263,0,0,0,0,-166,0,0,0, + 0,-147,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -303,0,0,0,0,-304,0,0,0,0, + -134,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -167,0,0,0,-163,0,-132,0,0,0, + 0,-314,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -324,0,0,0,0,0,-340,0,0,0, + -133,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-164, + 0,0,0,-130,0,0,0,0,-369,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-450,0,0, + 0,0,-131,0,0,0,0,-352,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-507,0,0,0, + 0,-21,0,0,0,0,0,0,-268,0, + 0,0,0,-165,0,0,-226,0,0,-341, + -339,0,0,0,0,-123,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-124,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-458,-472,0,0,0, + 0,-171,-370,0,-120,0,0,0,0,-174, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-508,0,0,0,0,-281,0, + 0,0,0,-326,-394,0,0,-242,0,-175, + 0,-176,-177,0,0,0,0,0,0,-125, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-250,0,0,0,-126,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-127,0,0,0,0, + -185,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-197, + 0,0,-128,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-296,0,0,-277, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-118,0,0,0,0,-481,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-288,0,0,0, + 0,-198,-199,-364,0,0,0,0,-287,0, + 0,0,0,0,0,-75,0,-375,0,0, + 0,0,-200,-371,0,-283,0,-119,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-252,0,0,0,0,0,-201,-265,0, + 0,0,-311,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-258,0,0,0, + 0,0,0,0,0,0,0,0,0,-78, + 0,0,0,0,-104,0,-393,-202,-203,0, + 0,0,0,0,0,-488,0,0,-204,-34, + 0,0,0,0,0,0,0,0,0,-205, + 0,0,-206,0,0,-405,0,0,0,0, + 0,0,0,0,-228,0,0,0,0,-298, + -207,0,0,0,0,0,0,0,0,0, + -178,-77,0,0,-208,0,0,0,0,0, + 0,0,-209,0,0,0,0,0,0,0, + 0,0,0,-410,-334,-169,-210,-211,0,0, + -212,-82,0,0,0,0,-213,0,0,0, + 0,0,-214,-382,0,0,0,0,0,-215, + 0,-349,0,0,-74,-162,0,0,0,0, + 0,0,0,0,0,-482,0,0,0,0, + 0,0,0,0,0,0,0,0,-347,0, + 0,-426,0,0,0,0,0,-231,0,0, + 0,0,0,0,0,0,0,0,0,0, + -431,0,0,0,0,0,0,0,0,0, + 0,0,0,-232,0,0,0,0,0,0, + 0,0,-189,0,0,0,0,0,0,-259, + -262,0,-461,-73,0,0,0,0,-233,0, + -387,0,0,0,-234,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-229, + -454,0,0,-239,0,0,-495,0,0,0, + -383,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-460,0, + 0,0,-255,-399,0,0,-479,0,0,0, + 0,0,-256,-327,-101,0,0,0,-266,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-358,-267,-47,0,0,0, + 0,0,0,0,0,-367,0,0,-273,-377, + 0,0,0,0,0,0,0,0,0,0, + -274,-386,0,0,0,0,0,-276,0,0, + -484,-389,0,-278,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-392,-285,0,0,-182, + 0,-345,0,-468,0,0,0,0,0,-181, + 0,0,0,-470,-501,0,0,0,0,0, + 0,0,0,0,0,0,0,-289,-100,0, + 0,0,0,0,-485,-475,0,0,0,0, + -237,-384,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -161,0,0,0,0,-293,0,0,0,0, + 0,0,0,-397,0,0,0,0,0,-294, + 0,0,0,0,0,0,0,0,-309,0, + 0,0,0,0,0,0,0,-310,0,0, + 0,0,0,0,0,0,-505,0,-318,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-509,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -121,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-322,-286,0,0,0,0, + -315,0,0,0,0,0,0,-330,-332,-320, + -348,-513,0,0,-372,0,0,-373,0,-122, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-379,-355,0,0,0,0,0, + 0,-224,0,0,-292,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-489, + -11,0,0,0,0,-395,0,0,0,0, + -114,-418,-502,-429,-312,0,0,0,0,-381, + 0,-390,-391,-398,-241,0,0,0,0,0, + -514,-217,-342,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-357,-400,0, + 0,0,-403,0,-411,0,0,0,0,0, + 0,0,0,0,0,0,-443,0,0,0, + 0,0,0,-490,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-368,-433, + 0,-79,0,-452,0,-453,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-413, + -516,-477,0,0,0,0,0,0,0,0, + -415,-456,-492,-279,-521,0,0,0,0,0, + 0,0,0,-515,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -416,0,0,-417,-264,0,-84,0,0,0, + 0,0,0,0,-419,0,-430,0,0,0, + 0,0,0,0,0,0,-432,-494,0,0, + 0,0,0,-427,-81,0,-434,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-335,-519,-435,-436,0,-438,0, + 0,0,0,0,0,-499,0,0,-503,-440, + 0,-441,-523,0,0,0,0,0,0,0, + 0,0,0,0,0,-428,0,-462,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-442,-447,0, + -451,0,0,0,0,0,0,0,0,0, + -518,0,0,0,0,0,0,-487,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-463,0,-459,-421,-466,0,-473, + 0,0,0,0,0,-474,0,-96,-522,0, + 0,-493,0,0,-506,-511,0,0,0,0, + 0,0,0,0,0,-491,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-524,0,0,-115,0,0,0, + -305,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-146, + -471,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -49,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-51,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-52,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-53, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-54,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-55,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-56,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-106,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-116,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-117,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -180,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-243,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-388,0,-496,0, + 0,0,-363,0,-306,-401,-350,0,0,0, + 0,0,-504,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -512,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-90,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-455,0,0,0,0,0,0,0, + 0,-457,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-483,0, + 0,0,0,0,0,0,-497,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-248,0,0,0, + 0,-1,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-269,-396,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-360,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-48,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-480,0,0,0,0,0, + 0,0,0,0,0,0,0,-13,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-253,0,0,0,0,0,0,0,0, + -446,0,0,0,-406,0,0,0,0,0, + 0,0,-9,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-469,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -270,0,-444,-271,0,0,0,0,0,0, + 0,0,-33,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-328, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-402,0,0,0,0, + 0,0,0,0,0,0,0,0,-155,0, + 0,0,0,-160,0,0,0,0,-187,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-193,0,0,0,0, + -297,0,0,0,0,-325,0,0,0,0, + 0,-336,0,0,0,0,-365,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-97,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-366,0,0,0,0,0,0,0, + 0,0,0,-380,0,0,0,0,-465,0, + 0,0,0,-486,0,0,0,0,0,0, + -46,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-95,0, + 0,0,0,0,0,0,0,0,0,-109, + 0,0,0,0,0,0,0,0,-445,0, + 0,0,0,0,0,0,-98,-448,0,0, + 0,0,0,0,0,-99,-244,0,0,0, + 0,0,0,0,0,0,0,-520,0,0, + 0,0,0,0,0,0,-272,0,0,0, + 0,0,0,0,-407,-408,0,0,0,0, + 0,0,0,-467,-478,0,0,0,0,0, + 0,0,0,0,0,-319,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-498, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0 + }; + }; + public final static short baseCheck[] = BaseCheck.baseCheck; + public final int baseCheck(int index) { return baseCheck[index]; } + public final static short rhs[] = baseCheck; + public final int rhs(int index) { return rhs[index]; }; + + public interface BaseAction { + public final static char baseAction[] = { + 171,5,131,77,77,34,34,63,63,39, + 39,191,191,192,192,193,193,1,1,16, + 16,16,16,16,16,16,16,17,17,17, + 15,11,11,9,9,9,9,9,2,64, + 64,6,6,12,12,12,12,44,44,132, + 132,133,56,56,43,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,134,134,134,115,19, + 19,19,19,19,19,19,19,19,19,19, + 19,19,20,20,172,172,173,173,174,137, + 137,138,138,135,135,139,136,136,21,21, + 22,22,23,23,23,25,25,25,25,26, + 26,26,27,27,27,28,28,28,28,28, + 31,31,31,32,32,33,33,35,35,36, + 36,37,37,38,38,42,42,41,41,41, + 41,41,41,41,41,41,41,41,41,41, + 40,30,140,140,98,98,101,101,93,194, + 194,69,69,69,69,69,69,69,69,69, + 70,70,70,71,71,59,59,175,175,72, + 72,72,116,116,73,73,73,73,74,74, + 74,74,74,75,75,78,78,78,78,78, + 78,78,49,49,49,49,49,104,104,105, + 105,50,176,24,24,24,24,24,48,48, + 87,87,87,87,87,147,147,142,142,142, + 142,142,143,143,143,144,144,144,145,145, + 145,146,146,146,88,88,88,88,88,89, + 89,89,13,14,14,14,14,14,14,14, + 14,14,14,14,92,120,120,120,120,120, + 118,118,118,119,119,149,149,148,148,122, + 122,150,82,82,83,83,85,86,84,52, + 47,151,151,53,51,81,81,152,152,141, + 141,107,107,65,65,153,153,61,61,54, + 54,154,62,62,67,67,58,58,58,90, + 90,100,99,99,60,60,55,55,57,57, + 45,102,102,102,94,94,94,95,96,96, + 96,97,97,108,108,108,110,110,109,109, + 195,195,91,91,178,178,178,178,178,124, + 46,46,156,177,177,125,125,125,125,179, + 179,29,29,117,126,126,126,126,111,111, + 121,121,121,158,159,159,159,159,159,159, + 159,159,159,182,182,180,180,181,181,160, + 160,160,160,161,183,113,112,112,184,184, + 162,162,162,162,103,103,103,185,185,10, + 186,186,187,163,155,155,164,164,165,166, + 166,7,7,8,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,66,68,68,169, + 169,127,127,128,128,128,128,128,128,3, + 4,170,170,167,167,129,129,129,79,80, + 76,157,157,114,114,188,188,188,130,130, + 123,123,189,189,171,171,106,958,38,1942, + 1899,618,1018,4699,34,625,31,35,30,32, + 2661,262,29,27,55,1336,110,80,81,112, + 1344,1296,1416,1415,1459,1426,274,82,1539,1512, + 1631,29,1555,1641,1674,147,675,1087,162,148, + 2049,38,575,36,618,73,29,34,625,43, + 35,1148,2310,38,575,36,618,232,3127,34, + 625,31,35,30,32,1325,262,29,27,55, + 1336,110,80,81,112,1344,1245,1416,1415,1459, + 1426,2926,29,2905,235,230,231,733,290,275, + 2310,38,1942,1899,618,377,3127,34,625,31, + 35,30,32,1325,262,29,27,55,1336,110, + 80,81,88,551,242,245,248,251,2840,37, + 326,332,64,1717,1199,38,575,36,618,1115, + 4367,34,625,31,35,64,32,1856,589,2955, + 2766,2902,3522,3615,2932,1466,38,575,36,618, + 2452,3127,34,625,31,35,1985,32,1325,262, + 29,27,55,1336,110,80,81,112,1344,340, + 1416,1415,1459,1426,3023,2628,1539,1512,1631,1787, + 1555,1641,1674,147,1777,2860,505,148,1379,3034, + 2845,2049,38,575,36,618,323,3524,34,625, + 1850,35,506,1466,38,575,36,618,2452,3127, + 34,625,31,35,1985,32,1325,262,29,27, + 55,1336,110,80,81,112,1344,340,1416,1415, + 1459,1426,691,1434,1539,1512,1631,330,1555,1641, + 1674,147,29,1849,505,148,2014,551,2845,1112, + 38,1673,1630,618,1155,1300,38,575,36,618, + 506,4216,34,625,31,35,336,32,412,1857, + 38,575,36,618,501,3127,34,625,31,35, + 30,32,1325,262,29,27,55,1336,110,80, + 81,112,1344,29,1416,1415,1459,1426,1148,312, + 1539,1512,1631,1392,1555,1641,1684,168,1052,659, + 319,92,1979,330,106,2061,314,784,2436,38, + 440,322,348,1907,4834,1112,2194,1933,38,575, + 36,618,501,4367,34,625,31,35,30,32, + 1683,812,498,691,384,416,325,2027,2237,343, + 1668,1625,346,4694,2430,38,278,1713,38,575, + 36,618,1391,4756,34,625,31,35,62,32, + 2390,430,570,2061,1732,38,575,36,618,2452, + 3127,34,625,31,35,1985,32,1325,262,29, + 27,55,1336,110,80,81,112,1344,340,1416, + 1415,1459,1426,2584,570,1539,1512,1631,2847,1555, + 1641,1674,147,1597,443,505,148,511,3361,2845, + 499,1112,38,643,382,618,1532,38,575,36, + 618,506,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 37,1416,1415,1459,1426,385,416,1539,1512,1631, + 1074,1555,1641,1674,147,1209,186,375,148,1721, + 38,575,36,618,1414,4756,34,625,31,35, + 61,32,433,3404,3450,1382,2406,38,280,378, + 1392,66,2594,1076,38,643,382,618,1604,38, + 575,36,618,502,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 112,1344,274,1416,1415,1459,1426,29,75,1539, + 1512,1631,956,1555,1641,1674,147,2086,2247,375, + 148,1031,485,2860,2687,2049,38,575,36,618, + 2242,379,34,625,1893,35,1798,38,575,36, + 618,376,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 247,1416,1415,1459,1426,3187,1279,1539,1512,1631, + 760,1555,1641,1674,147,3370,3219,375,148,2606, + 38,388,2690,65,511,2542,47,2464,77,1023, + 38,871,46,618,484,2042,45,625,2128,38, + 575,36,618,380,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 112,1344,760,1416,1415,1459,1426,1132,3251,1539, + 1512,1631,29,1555,1641,1674,147,3462,512,162, + 148,1199,38,575,36,618,247,4367,34,625, + 31,35,63,32,98,410,2128,38,575,36, + 618,373,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 320,1416,1415,1459,1426,1112,3691,1539,1512,1631, + 3452,1555,1641,1674,147,247,512,369,148,2128, + 38,575,36,618,1597,3127,34,625,31,35, + 30,32,1325,262,29,27,55,1336,110,80, + 81,112,1344,29,1416,1415,1459,1426,762,374, + 1539,1512,1631,760,1555,1641,1674,147,1856,3455, + 369,148,1112,38,282,2052,2128,38,575,36, + 618,247,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 2086,1416,1415,1459,1426,931,2860,1539,1512,1631, + 368,1555,1641,1674,147,4101,2502,369,148,1666, + 38,575,36,618,325,3127,34,625,31,35, + 30,32,1325,262,29,27,55,1336,110,80, + 81,112,1344,1475,1416,1415,1459,1426,873,76, + 1539,1512,1631,367,1555,1641,1674,147,329,760, + 146,148,1112,38,3151,4766,2128,38,575,36, + 618,1209,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 4613,1416,1415,1459,1426,496,1007,1539,1512,1631, + 365,1555,1641,1674,147,1209,1995,159,148,2128, + 38,575,36,618,1209,3127,34,625,31,35, + 30,32,1325,262,29,27,55,1336,110,80, + 81,112,1344,2405,1416,1415,1459,1426,2452,1005, + 1539,1512,1631,2137,1555,1641,1674,147,324,4772, + 158,148,2128,38,575,36,618,2710,3127,34, + 625,31,35,30,32,1325,262,29,27,55, + 1336,110,80,81,112,1344,29,1416,1415,1459, + 1426,3412,447,1539,1512,1631,1380,1555,1641,1674, + 147,446,1333,157,148,2128,38,575,36,618, + 247,3127,34,625,31,35,30,32,1325,262, + 29,27,55,1336,110,80,81,112,1344,1278, + 1416,1415,1459,1426,357,396,1539,1512,1631,1512, + 1555,1641,1674,147,28,1261,156,148,2128,38, + 575,36,618,247,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 112,1344,29,1416,1415,1459,1426,3060,394,1539, + 1512,1631,760,1555,1641,1674,147,74,4777,155, + 148,2128,38,575,36,618,247,3127,34,625, + 31,35,30,32,1325,262,29,27,55,1336, + 110,80,81,112,1344,2156,1416,1415,1459,1426, + 29,1461,1539,1512,1631,1993,1555,1641,1674,147, + 73,68,154,148,2128,38,575,36,618,247, + 3127,34,625,31,35,30,32,1325,262,29, + 27,55,1336,110,80,81,112,1344,1649,1416, + 1415,1459,1426,2447,1085,1539,1512,1631,2032,1555, + 1641,1674,147,58,850,153,148,2128,38,575, + 36,618,349,3127,34,625,31,35,30,32, + 1325,262,29,27,55,1336,110,80,81,112, + 1344,29,1416,1415,1459,1426,3585,343,1539,1512, + 1631,760,1555,1641,1674,147,1209,4823,152,148, + 2128,38,575,36,618,350,3127,34,625,31, + 35,30,32,1325,262,29,27,55,1336,110, + 80,81,112,1344,29,1416,1415,1459,1426,3554, + 148,1539,1512,1631,760,1555,1641,1674,147,1209, + 4839,151,148,2128,38,575,36,618,247,3127, + 34,625,31,35,30,32,1325,262,29,27, + 55,1336,110,80,81,112,1344,29,1416,1415, + 1459,1426,2776,4124,1539,1512,1631,760,1555,1641, + 1674,147,91,4844,150,148,2128,38,575,36, + 618,247,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 2071,1416,1415,1459,1426,3104,56,1539,1512,1631, + 1904,1555,1641,1674,147,57,517,149,148,2128, + 38,575,36,618,247,3127,34,625,31,35, + 30,32,1325,262,29,27,55,1336,110,80, + 81,112,1344,1844,1416,1415,1459,1426,1067,398, + 1539,1512,1631,1904,1555,1641,1674,147,347,1029, + 163,148,2128,38,575,36,618,247,3127,34, + 625,31,35,30,32,1325,262,29,27,55, + 1336,110,80,81,112,1344,29,1416,1415,1459, + 1426,3463,300,1539,1512,1631,1904,1555,1641,1674, + 147,94,1145,144,148,2220,38,575,36,618, + 247,3127,34,625,31,35,30,32,1325,262, + 29,27,55,1336,110,80,81,112,1344,29, + 1416,1415,1459,1426,2952,183,1539,1512,1631,155, + 1555,1641,1674,147,1926,1514,193,148,2310,38, + 575,36,618,691,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 112,1344,1904,1416,1415,1459,1426,1112,3109,1539, + 1512,1631,247,1555,1641,1684,168,2310,38,575, + 36,618,691,3127,34,625,31,35,30,32, + 1325,262,29,27,55,1336,110,80,81,112, + 1344,199,1416,1415,1459,1426,1969,97,1539,1512, + 1631,778,1555,1641,1684,168,1112,38,500,277, + 618,1112,38,643,382,618,2310,38,575,36, + 618,290,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 274,1416,1415,1459,1426,387,416,1539,1512,1631, + 1904,1555,1641,1684,168,2310,38,575,36,618, + 412,3127,34,625,31,35,30,32,1325,262, + 29,27,55,1336,110,80,81,112,1344,286, + 1416,1415,1459,1426,386,416,1539,1512,1631,198, + 1555,1641,1684,168,1112,38,500,3139,618,2368, + 1330,3637,3636,337,2310,38,575,36,618,2774, + 3127,34,625,31,35,30,32,1325,262,29, + 27,55,1336,110,80,81,112,1344,1545,1416, + 1415,1459,1426,247,1904,1539,1512,1631,247,1555, + 1641,1684,168,2355,38,575,36,618,411,3127, + 34,625,31,35,30,32,1325,262,29,27, + 55,1336,110,80,81,112,1344,72,1416,1415, + 1459,1426,71,202,1539,1512,1631,430,1555,1641, + 1684,168,1112,38,500,281,618,1112,38,643, + 382,618,2310,38,575,36,618,414,3127,34, + 625,31,35,30,32,1325,262,29,27,55, + 1336,110,80,81,112,1344,54,1416,1415,1459, + 1426,247,352,1539,1512,1631,247,1555,2950,520, + 51,2310,38,575,36,618,3688,3127,34,625, + 31,35,30,32,1325,262,29,27,55,1336, + 110,80,81,112,1344,70,1416,1415,1459,1426, + 69,1923,1539,1512,1631,1815,2937,2310,38,575, + 36,618,247,3127,34,625,31,35,30,32, + 1325,262,29,27,55,1336,110,80,81,112, + 1344,29,1416,1415,1459,1426,3405,247,1539,1512, + 2928,2310,38,575,36,618,2979,3127,34,625, + 31,35,30,32,1325,262,29,27,55,1336, + 110,80,81,112,1344,570,1416,1415,1459,1426, + 242,60,1539,2931,2310,38,575,36,618,2628, + 3127,34,625,31,35,30,32,1325,262,29, + 27,55,1336,110,80,81,112,1344,1904,1416, + 1415,1459,2913,2310,38,575,36,618,1209,3127, + 34,625,31,35,30,32,1325,262,29,27, + 55,1336,110,80,81,112,1344,589,1416,1415, + 1459,2927,2400,38,643,382,618,200,3587,1112, + 38,500,279,618,1509,237,262,2406,38,278, + 247,1112,38,643,382,618,2310,38,575,36, + 618,274,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 420,1416,1415,2848,59,101,514,2310,38,575, + 36,618,232,3127,34,625,31,35,30,32, + 1325,262,29,27,55,1336,110,80,81,112, + 1344,2459,1416,1415,2849,93,1904,1904,106,235, + 230,231,2030,247,275,2310,38,575,36,618, + 503,3127,34,625,31,35,30,32,1325,262, + 29,27,55,1336,110,80,81,112,2753,242, + 245,248,251,2840,589,221,4149,105,1717,2598, + 38,500,277,618,29,2493,38,440,2427,3478, + 590,4834,677,851,2955,2766,2902,3522,3615,2932, + 2310,38,575,36,618,377,3127,34,625,31, + 35,30,32,1325,262,29,27,55,1336,110, + 80,81,112,1344,2082,1416,1415,2859,2310,38, + 575,36,618,513,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 112,1344,570,1416,1415,2870,2310,38,575,36, + 618,1019,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,112,1344, + 1168,1416,2873,2310,38,575,36,618,570,3127, + 34,625,31,35,30,32,1325,262,29,27, + 55,1336,110,80,81,112,1344,1343,1416,2891, + 1043,38,575,36,618,3445,3431,34,625,31, + 35,336,32,2310,38,575,36,618,1904,3127, + 34,625,31,35,30,32,1325,262,29,27, + 55,1336,110,80,81,112,1344,1683,2680,437, + 3404,3450,1207,847,1112,38,643,382,618,2598, + 38,500,3355,618,659,319,1387,304,2606,38, + 388,313,784,1294,1209,3288,2248,348,2310,38, + 575,36,618,423,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 112,1344,2100,2752,341,1668,1625,346,2353,2100, + 427,721,3279,1515,38,575,36,618,3192,3431, + 34,625,31,35,336,32,232,1066,38,575, + 36,618,3415,3431,34,625,31,35,336,32, + 1968,38,2188,1363,618,1325,4689,175,1971,2383, + 3200,102,527,244,230,231,2606,38,388,2435, + 1112,38,643,382,618,383,395,659,319,54, + 2501,229,283,670,313,784,2219,160,1196,3453, + 348,3256,319,798,779,2411,184,1936,362,54, + 2100,757,1721,204,215,4676,203,212,213,214, + 216,2035,1902,798,1760,2499,173,341,1668,1625, + 346,705,348,2398,3299,1864,187,171,172,174, + 175,176,177,178,1,29,1296,2433,1712,527, + 4153,1378,2463,38,643,382,618,1579,3587,341, + 1668,1625,346,604,247,238,262,339,229,2247, + 938,1273,2248,284,160,2521,1112,38,643,382, + 618,274,232,184,1936,2154,2100,3745,239,262, + 204,215,4676,203,212,213,214,216,3264,29, + 1840,315,247,173,3519,274,2926,185,1647,247, + 230,231,232,188,171,172,174,175,176,177, + 178,1178,38,575,36,618,1320,4216,34,625, + 31,35,336,32,1716,232,438,49,2464,236, + 230,231,2924,1033,275,331,332,1379,2452,298, + 1349,1932,1382,2610,2086,2452,4532,4761,2452,1907, + 2860,1921,240,230,231,1939,2452,340,276,243, + 246,249,252,2840,229,659,319,229,1717,329, + 1296,2498,313,784,1082,2710,652,1904,1883,2452, + 2860,1112,38,643,382,618,1506,399,2827,206, + 215,4676,205,212,213,214,216,2399,2710,247, + 3299,4650,329,1874,2368,518,400,2639,3103,207, + 422,3103,2452,2015,1962,586,4181,307,526,1727, + 1148,217,208,209,210,211,292,293,294,295, + 2926,229,329,2728,709,589,1694,1345,38,643, + 382,618,492,3093,1463,164,29,4339,2966,1941, + 589,2159,2536,206,215,4676,205,212,213,214, + 216,2018,29,3726,3231,356,54,3094,1775,328, + 332,2739,29,207,1957,3103,2452,4545,490,491, + 798,870,1950,3158,3164,217,208,209,210,211, + 292,293,294,295,372,229,29,1780,401,404, + 1170,833,1082,418,247,3064,1797,2452,2860,372, + 2086,4339,3205,1649,247,2100,2860,206,215,4676, + 205,212,213,214,216,3270,2710,351,2460,1112, + 38,643,382,618,520,2757,247,207,3553,3103, + 2452,1423,1112,38,643,382,618,2860,3608,217, + 208,209,210,211,292,293,294,295,54,229, + 329,1112,38,643,382,618,2601,348,329,3125, + 3646,421,798,2901,29,4339,3443,434,305,3614, + 2409,206,215,4676,205,212,213,214,216,1986, + 54,370,785,356,341,1668,1625,346,2024,330, + 3231,207,1864,3103,798,2467,3186,1904,348,2263, + 1950,3158,3164,217,208,209,210,211,292,293, + 294,295,1591,38,575,36,618,3445,3431,34, + 625,31,35,336,32,343,1668,1625,346,4339, + 3649,2310,38,575,36,618,303,3127,34,625, + 31,35,30,32,1325,262,29,27,55,1336, + 110,80,81,112,2773,1782,1112,38,643,382, + 618,1112,38,500,3371,618,659,319,899,2372, + 1914,2632,1904,313,784,2570,2860,515,2504,348, + 2310,38,575,36,618,274,3127,34,625,31, + 35,30,32,1325,262,29,27,55,1336,110, + 80,81,112,2808,2637,1921,341,1668,1625,346, + 2452,4918,2581,3109,516,1159,38,3368,36,618, + 1320,4216,34,625,31,35,336,32,3370,2710, + 247,1309,38,643,382,618,1112,38,643,382, + 618,586,262,2100,1413,2086,1148,527,78,4243, + 2651,2860,2649,2664,2669,1112,38,643,382,618, + 54,1904,1267,1296,2447,439,229,2452,4532,659, + 319,164,160,329,798,838,313,784,1962,827, + 1022,184,1936,2670,54,2663,229,2071,204,215, + 4676,203,212,213,214,216,492,349,798,884, + 222,173,527,329,247,4650,297,100,1506,399, + 2827,3689,171,172,174,175,176,177,178,1296, + 29,229,1928,2926,29,3033,29,160,400,1020, + 3103,3542,489,491,285,785,184,1936,2574,1821, + 2678,1904,2368,204,215,4676,203,212,213,214, + 216,2674,29,436,151,1904,173,3097,527,2452, + 2809,3126,3136,332,247,3093,180,171,172,174, + 175,176,177,178,3375,407,3369,229,2710,2926, + 299,2676,232,160,2680,2581,3109,1526,38,643, + 382,618,184,1936,195,2682,1549,1729,3555,204, + 215,4676,203,212,213,214,216,2489,523,250, + 230,231,173,527,1296,2016,54,2662,3152,332, + 401,403,191,171,172,174,175,176,177,178, + 798,2325,229,3140,1932,247,2668,2684,160,2587, + 4761,434,2802,2956,3030,356,610,184,1936,2100, + 2689,527,88,247,204,215,4676,203,212,213, + 214,216,2332,3158,3164,321,1210,173,29,3739, + 229,2452,520,3161,2926,232,160,3746,171,172, + 174,175,176,177,178,184,1936,3794,2697,2218, + 340,2688,204,215,4676,203,212,213,214,216, + 519,697,253,230,231,173,527,285,1112,38, + 291,2845,296,3526,332,194,171,172,174,175, + 176,177,178,522,29,229,2705,2621,1745,3225, + 29,160,1148,2890,3126,4347,2695,1463,29,784, + 184,1936,2706,2452,527,2708,2675,204,215,4676, + 203,212,213,214,216,5478,1436,160,5478,5478, + 173,3312,340,229,5478,5478,201,2418,5478,160, + 190,171,172,174,175,176,177,178,184,1936, + 5478,5478,5478,2845,5478,204,215,4676,203,212, + 213,214,216,5478,871,2550,419,29,173,527, + 5478,586,1148,5478,5478,5478,1148,5478,197,171, + 172,174,175,176,177,178,5478,5478,229,5478, + 29,2579,5478,5478,160,1148,1148,160,5478,5478, + 5478,164,5478,184,1936,5478,5478,1769,5478,5478, + 204,215,4676,203,212,213,214,216,5478,5478, + 160,160,5478,173,5478,3061,5478,5478,3297,5478, + 2943,166,5478,196,171,172,174,175,176,177, + 178,2310,38,575,36,618,5478,3127,34,625, + 31,35,30,32,1325,262,29,27,55,1336, + 110,80,81,89,2310,38,575,36,618,2357, + 3127,34,625,31,35,30,32,1325,262,29, + 27,55,1336,110,80,81,87,2310,38,575, + 36,618,3067,3127,34,625,31,35,30,32, + 1325,262,29,27,55,1336,110,80,81,86, + 2310,38,575,36,618,5478,3127,34,625,31, + 35,30,32,1325,262,29,27,55,1336,110, + 80,81,85,2310,38,575,36,618,5478,3127, + 34,625,31,35,30,32,1325,262,29,27, + 55,1336,110,80,81,84,2310,38,575,36, + 618,5478,3127,34,625,31,35,30,32,1325, + 262,29,27,55,1336,110,80,81,83,2310, + 38,575,36,618,5478,3127,34,625,31,35, + 30,32,1325,262,29,27,55,1336,110,80, + 81,82,2173,38,575,36,618,5478,3127,34, + 625,31,35,30,32,1325,262,29,27,55, + 1336,110,80,81,108,2310,38,575,36,618, + 5478,3127,34,625,31,35,30,32,1325,262, + 29,27,55,1336,110,80,81,114,2310,38, + 575,36,618,5478,3127,34,625,31,35,30, + 32,1325,262,29,27,55,1336,110,80,81, + 113,2310,38,575,36,618,5478,3127,34,625, + 31,35,30,32,1325,262,29,27,55,1336, + 110,80,81,111,2310,38,575,36,618,5478, + 3127,34,625,31,35,30,32,1325,262,29, + 27,55,1336,110,80,81,109,2839,5478,2579, + 5478,5478,2452,151,1148,586,2548,586,2452,5478, + 1148,2452,1148,1112,38,291,5478,5478,5478,5478, + 5478,229,5478,5478,5478,5478,5478,2710,5478,160, + 229,2579,5478,5478,5478,164,1148,164,5478,166, + 5478,5478,5478,206,215,4676,205,212,213,214, + 216,5478,206,215,4676,205,212,213,214,216, + 5478,160,5478,207,5478,3103,1309,38,643,382, + 618,166,207,5478,3103,486,208,209,210,211, + 292,293,294,295,508,208,209,210,211,292, + 293,294,295,2857,356,54,5478,5478,2452,5478, + 3372,5478,2875,2470,5478,2543,5478,2452,5478,798, + 2321,2944,3158,3164,5478,5478,5478,229,5478,5478, + 5478,5478,2071,5478,5478,5478,229,5478,5478,5478, + 5478,5478,3635,5478,5478,5478,5478,5478,5478,206, + 215,4676,205,212,213,214,216,5478,206,215, + 4676,205,212,213,214,216,5478,5478,5478,207, + 5478,3103,5478,3541,5478,5478,5478,5478,207,5478, + 3103,306,208,209,210,211,292,293,294,295, + 509,208,209,210,211,292,293,294,295,2721, + 5478,5478,5478,5478,2452,5478,5478,1447,38,575, + 36,618,1320,3431,34,625,31,35,336,32, + 5478,5478,5478,229,5478,5478,5478,1112,38,643, + 382,618,1220,38,575,36,618,1320,3431,34, + 625,31,35,336,32,206,215,4676,205,212, + 213,214,216,5478,5478,5478,54,5478,29,586, + 5478,659,319,1148,1148,207,5478,3103,313,784, + 798,870,652,5478,5478,5478,5478,218,208,209, + 210,211,292,293,294,295,659,319,160,164, + 5478,5478,5478,313,784,5478,5478,652,2193,1104, + 38,3368,36,618,1320,3431,34,625,31,35, + 336,32,5478,307,526,2265,38,575,36,618, + 5478,3127,34,625,31,35,30,32,1325,262, + 29,27,55,1336,90,80,81,5478,524,526, + 5478,5478,5478,5478,5478,5478,5478,5478,3461,5478, + 5478,5478,5478,659,319,5478,5478,2982,5478,3726, + 313,784,5478,5478,1022,1582,38,575,36,618, + 1320,3431,34,625,31,35,336,32,1582,38, + 575,36,618,1320,3431,34,625,31,35,336, + 32,5478,1112,38,643,382,618,5478,5478,5478, + 5478,2579,5478,557,5478,2558,527,5478,5478,5478, + 2452,5478,5478,1900,5478,5478,5478,5478,2452,659, + 319,54,5478,5478,5478,3730,313,784,5478,2710, + 652,160,659,319,5478,798,2747,340,5478,313, + 784,166,5478,1196,1582,38,575,36,618,1320, + 3431,34,625,31,35,336,32,5478,714,408, + 3369,29,5478,29,29,5478,1148,5478,527,1148, + 5478,308,526,1057,38,575,36,618,5478,4216, + 34,625,31,35,336,32,5478,340,5478,5478, + 5478,160,5478,160,160,5478,492,5478,659,319, + 5478,2198,2537,192,2281,313,784,5478,4584,3742, + 1057,38,575,36,618,5478,4216,34,625,31, + 35,336,32,5478,5478,5478,5478,659,319,5478, + 5478,330,489,491,314,784,1654,38,575,36, + 618,3001,3431,34,625,31,35,336,32,1853, + 38,643,382,618,1526,38,643,382,618,1599, + 38,643,382,618,659,319,5478,5478,330,5478, + 5478,316,784,5478,3639,5478,5478,3821,54,3194, + 5478,443,5478,54,5478,5478,5478,5478,54,5478, + 3256,319,798,52,5478,5478,5478,798,52,429, + 5478,5478,798,2588,5478,1016,5478,5478,5478,5478, + 1292,5478,5478,5478,5478,2956,2097,38,643,382, + 618,1309,38,643,382,618,2097,38,643,382, + 618,5478,1309,38,643,382,618,1309,38,643, + 382,618,5478,5478,5478,54,5478,5478,5478,5478, + 54,5478,5478,5478,5478,54,5478,5478,5478,798, + 2624,54,5478,5478,798,52,54,5478,29,798, + 52,5478,1023,2452,5478,798,52,2471,5478,5478, + 798,52,1075,1309,38,643,382,618,2754,1840, + 315,5478,340,3071,1309,38,643,382,618,2624, + 38,643,382,618,2658,38,643,382,618,5478, + 5478,29,54,2845,5478,5478,527,5478,5478,5478, + 5478,5478,5478,54,5478,2590,798,52,54,29, + 5478,5478,5478,54,527,340,5478,798,52,3232, + 29,160,798,52,5478,527,5478,798,52,29, + 3436,1520,5478,340,527,3708,2845,29,29,160, + 4163,5478,2452,527,340,5478,29,29,1301,1606, + 160,2452,2452,340,2845,5478,5478,5478,2579,160, + 1520,340,340,1148,5478,2845,1563,29,160,192, + 340,340,1148,5478,4584,29,29,1778,192,5478, + 2452,2452,2845,4584,2693,29,5478,5478,160,2452, + 2452,2845,2845,5478,2592,5478,29,160,166,340, + 340,1148,5478,2593,2022,5478,5478,2286,340,340, + 29,5478,5478,5478,5478,1148,5478,5478,5478,5478, + 2845,2845,5478,5478,5478,5478,160,5478,5478,3756, + 2845,5478,496,494,5478,5478,2428,5478,5478,5478, + 160,5478,523,5478,5478,3204,5478,5478,5478,5478, + 3564,5478,5478,5478,3226,5478,5478,5478,5478,3653, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,3504,5478,0,42,5496,1,0,42, + 5495,1,0,1139,1,0,500,33,0,441, + 612,0,5496,53,0,5495,53,0,41,5496, + 0,41,5495,0,42,5496,0,42,5495,0, + 500,381,0,1,431,0,445,1425,0,444, + 1434,0,52,40,0,500,44,0,130,2600, + 0,1,1120,0,1,5751,0,1,5750,0, + 1,5749,0,1,5748,0,1,5747,0,1, + 5746,0,1,5745,0,1,5744,0,1,5743, + 0,1,5742,0,1,5741,0,5712,241,0, + 5711,241,0,5813,241,0,5812,241,0,5739, + 241,0,5738,241,0,5737,241,0,5736,241, + 0,5735,241,0,5734,241,0,5733,241,0, + 5732,241,0,5751,241,0,5750,241,0,5749, + 241,0,5748,241,0,5747,241,0,5746,241, + 0,5745,241,0,5744,241,0,5743,241,0, + 5742,241,0,5741,241,0,42,241,5496,0, + 42,241,5495,0,5519,241,0,53,5496,0, + 53,5495,0,48,5517,0,48,40,0,823, + 95,0,36,382,0,382,36,0,33,381, + 0,381,33,0,500,33,381,0,42,951, + 0,30,507,0,5805,432,0,772,432,0, + 237,3105,0,132,2600,0,131,2600,0,5519, + 228,1,0,42,228,1,0,228,406,0, + 40,5496,0,40,5495,0,5517,50,0,50, + 40,0,5519,1,0,42,1,0,1,96, + 0,5488,397,0,5487,397,0,4518,1,0, + 4553,1,0,951,1,0,228,405,0,40, + 5496,2,0,40,5495,2,0,5496,39,0, + 5495,39,0,1,5805,0,1,772,0,5805, + 99,0,772,99,0,279,3801,0,1,1129, + 0,1,2768,0,5486,1,0,488,4156,0, + 228,1,0,228,1,3540,0,5488,228,0, + 5487,228,0,3652,228,0,8,10,0,228, + 220,0,228,219,0,189,3701,0 + }; + }; + public final static char baseAction[] = BaseAction.baseAction; + public final int baseAction(int index) { return baseAction[index]; } + public final static char lhs[] = baseAction; + public final int lhs(int index) { return lhs[index]; }; + + public interface TermCheck { + public final static byte termCheck[] = {0, + 0,1,2,3,4,5,6,7,8,9, + 10,11,12,13,14,15,16,17,18,19, + 20,21,22,23,24,25,26,27,0,29, + 30,31,32,33,34,35,36,37,38,39, + 40,41,42,0,44,45,46,47,48,49, + 50,51,52,53,54,55,56,57,58,59, + 0,61,62,0,64,65,3,0,68,69, + 70,71,0,73,74,75,76,77,78,79, + 80,0,82,83,84,85,86,0,1,2, + 3,4,5,6,7,8,9,10,11,12, + 13,14,15,16,17,18,19,20,21,22, + 23,24,25,26,27,43,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42, + 67,44,45,46,47,48,49,50,51,52, + 53,54,55,56,57,58,59,0,61,62, + 0,64,65,6,0,68,69,70,71,9, + 73,74,75,76,77,78,79,80,101,82, + 83,84,85,86,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,121,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,63,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,0,61,62,87,64,65, + 0,0,68,69,70,95,0,73,74,75, + 76,77,78,79,80,9,82,83,84,85, + 86,0,1,2,3,4,5,6,7,8, + 9,10,11,12,13,14,15,16,17,18, + 19,20,21,22,23,24,25,26,27,0, + 29,30,31,32,33,34,35,36,37,38, + 39,40,41,42,63,44,45,46,47,48, + 49,50,51,52,53,54,55,56,57,58, + 59,0,61,62,0,64,65,0,0,68, + 69,70,43,87,73,74,75,76,77,78, + 79,80,0,82,83,84,85,86,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,0,29,30,31, + 32,33,34,35,36,37,38,39,40,41, + 42,49,44,45,46,47,48,49,50,51, + 52,53,54,55,56,57,58,59,0,61, + 62,0,64,65,90,4,68,69,70,43, + 96,73,74,75,76,77,78,79,80,0, + 82,83,84,85,86,0,1,2,3,4, + 5,6,7,8,9,10,11,12,13,14, + 15,16,17,18,19,20,21,22,23,24, + 25,26,27,0,29,30,31,32,33,34, + 35,36,37,38,39,40,41,42,49,44, + 45,46,47,48,49,50,51,52,53,54, + 55,56,57,58,59,0,61,62,0,64, + 65,3,0,68,69,70,11,12,73,74, + 75,76,77,78,79,80,0,82,83,84, + 85,86,0,1,2,3,4,5,6,7, + 8,9,10,11,12,13,14,15,16,17, + 18,19,20,21,22,23,24,25,26,27, + 0,29,30,31,32,33,34,35,36,37, + 38,39,40,41,42,63,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57, + 58,59,66,61,62,0,64,65,0,0, + 68,69,70,43,9,73,74,75,76,77, + 78,79,80,0,82,83,84,85,86,0, + 1,2,3,4,5,6,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,49,29,30, + 31,32,33,34,35,36,37,38,39,40, + 41,42,63,44,45,46,47,48,49,50, + 51,52,53,54,55,56,57,58,59,0, + 61,62,87,64,65,72,0,68,69,70, + 11,12,73,74,75,76,77,78,79,80, + 0,82,83,84,85,86,0,1,2,3, + 4,5,6,7,8,9,10,11,12,13, + 14,15,16,17,18,19,20,21,22,23, + 24,25,26,27,0,29,30,31,32,33, + 34,35,36,37,38,39,40,41,42,63, + 44,45,46,47,48,49,50,51,52,53, + 54,55,56,57,58,59,0,61,62,0, + 64,65,72,4,68,69,70,11,12,73, + 74,75,76,77,78,79,80,0,82,83, + 84,85,86,0,1,2,3,4,5,6, + 7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,25,26, + 27,0,29,30,31,32,33,34,35,36, + 37,38,39,40,41,42,0,44,45,46, + 47,48,49,50,51,52,53,54,55,56, + 57,58,59,66,61,62,0,64,65,0, + 0,68,69,70,43,29,73,74,75,76, + 77,78,79,80,0,82,83,84,85,86, + 0,1,2,3,4,5,6,7,8,9, + 10,11,12,13,14,15,16,17,18,19, + 20,21,22,23,24,25,26,27,0,29, + 30,31,32,33,34,35,36,37,38,39, + 40,41,42,63,44,45,46,47,48,49, + 50,51,52,53,54,55,56,57,58,59, + 0,61,62,3,64,65,90,0,68,69, + 70,43,96,73,74,75,76,77,78,79, + 80,102,82,83,84,85,86,0,1,2, + 3,4,5,6,7,8,117,10,11,12, + 72,14,15,16,17,18,19,20,21,22, + 23,24,25,26,27,0,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42, + 0,44,45,46,0,48,0,50,51,52, + 53,54,6,56,57,58,59,0,0,62, + 3,3,0,1,2,68,69,70,0,7, + 0,3,0,0,6,3,8,9,101,11, + 12,13,0,1,2,3,4,5,6,7, + 8,0,1,2,26,27,0,1,2,3, + 4,5,6,7,8,0,1,2,3,4, + 5,43,7,43,9,0,1,2,13,28, + 5,0,1,2,0,4,0,6,60,8, + 9,63,88,89,66,67,10,91,92,71, + 72,0,60,0,1,2,3,4,5,67, + 7,0,1,2,0,87,88,89,90,91, + 92,93,94,95,96,97,98,99,100,101, + 102,103,104,105,106,107,108,109,110,111, + 112,113,0,0,0,117,118,3,120,121, + 6,67,8,9,0,11,12,13,0,1, + 2,3,4,5,6,7,8,0,87,0, + 26,27,3,6,60,72,95,0,1,2, + 3,4,5,6,7,8,102,43,104,105, + 106,107,108,109,110,111,112,113,0,1, + 2,117,4,5,60,7,0,63,0,0, + 66,67,6,0,60,71,72,9,9,0, + 1,2,3,4,5,6,7,8,0,60, + 72,87,88,89,90,91,92,93,94,95, + 96,97,98,99,100,101,102,103,104,105, + 106,107,108,109,110,111,112,113,91,92, + 0,117,118,0,120,121,0,1,2,3, + 4,5,6,7,8,9,10,0,0,13, + 14,15,16,17,18,19,20,21,22,23, + 24,25,73,0,28,0,87,91,92,0, + 1,2,3,4,5,6,7,8,0,1, + 2,45,46,47,48,0,50,51,52,53, + 54,43,56,57,0,59,118,3,62,0, + 1,2,0,9,68,69,70,71,72,73, + 8,46,0,48,0,1,2,81,0,1, + 2,3,4,5,6,7,8,9,10,60, + 100,13,14,15,16,17,18,19,20,21, + 22,23,24,25,97,98,28,0,49,0, + 114,115,116,90,60,8,0,63,9,96, + 66,0,13,45,46,47,48,0,50,51, + 52,53,54,17,56,57,0,59,64,65, + 62,87,0,0,1,2,68,69,70,71, + 72,73,0,1,2,3,4,0,6,81, + 8,45,46,0,48,0,50,51,52,53, + 54,28,56,57,9,59,0,1,2,3, + 4,5,123,7,0,9,114,115,116,13, + 0,49,114,115,116,0,1,2,3,4, + 5,6,7,8,0,10,11,12,4,14, + 15,16,60,18,19,20,21,22,23,24, + 25,26,27,60,29,30,31,32,33,34, + 35,36,37,38,39,40,41,42,0,44, + 119,0,4,0,0,1,2,3,4,5, + 9,7,87,58,13,0,1,2,63,64, + 65,0,1,2,3,4,5,6,7,8, + 9,10,11,12,0,14,15,16,4,18, + 19,20,21,22,23,24,25,26,27,99, + 29,30,31,32,33,34,35,36,37,38, + 39,40,41,42,60,44,63,66,0,66, + 49,0,1,2,3,4,5,43,7,58, + 0,1,2,3,4,5,0,7,0,1, + 2,5,71,0,1,2,3,4,5,6, + 7,8,9,10,11,12,0,14,15,16, + 4,18,19,20,21,22,23,24,25,26, + 27,0,29,30,31,32,33,34,35,36, + 37,38,39,40,41,42,0,44,0,3, + 60,3,49,0,1,2,3,4,5,43, + 7,58,64,65,0,0,1,2,3,4, + 5,6,7,8,71,10,11,12,100,14, + 15,16,0,18,19,20,21,22,23,24, + 25,26,27,0,29,30,31,32,33,34, + 35,36,37,38,39,40,41,42,60,44, + 28,0,0,1,2,0,4,5,3,7, + 0,1,2,58,4,5,0,7,0,64, + 65,0,1,2,3,4,5,6,7,8, + 28,10,11,12,0,14,15,16,28,18, + 19,20,21,22,23,24,25,26,27,66, + 29,30,31,32,33,34,35,36,37,38, + 39,40,41,42,0,44,0,1,2,0, + 4,0,6,4,8,4,0,1,2,58, + 4,63,6,67,8,64,65,0,1,2, + 3,4,5,6,7,8,62,10,11,12, + 99,14,15,16,0,18,19,20,21,22, + 23,24,25,26,27,0,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42, + 0,44,28,0,1,2,49,4,0,6, + 0,8,0,1,2,58,0,1,2,3, + 4,5,6,7,8,9,10,11,12,95, + 14,15,16,0,18,19,20,21,22,23, + 24,25,26,27,0,29,30,31,32,33, + 34,35,36,37,38,39,40,41,42,0, + 44,0,3,0,5,6,0,8,60,3, + 11,12,9,0,1,2,13,4,17,6, + 0,8,0,1,2,26,27,0,6,30, + 10,0,0,1,2,4,4,5,0,7, + 0,3,43,3,17,72,45,46,28,48, + 28,50,51,52,53,54,0,56,57,60, + 59,0,63,64,65,66,67,0,1,2, + 0,4,45,46,118,48,45,50,51,52, + 53,54,62,56,57,0,59,88,89,90, + 91,92,93,94,0,28,97,98,99,100, + 101,102,103,104,105,106,107,108,109,110, + 111,112,113,0,0,0,3,0,5,6, + 3,8,66,0,11,12,0,1,2,0, + 4,0,17,72,0,1,2,43,9,26, + 27,0,28,30,0,114,115,116,0,1, + 2,0,67,5,0,7,43,63,88,89, + 45,46,28,48,0,50,51,52,53,54, + 0,56,57,60,59,49,63,64,65,66, + 67,0,1,2,43,0,5,93,94,4, + 67,6,0,8,43,66,0,1,2,0, + 71,88,89,90,91,92,93,94,9,28, + 97,98,99,100,101,102,103,104,105,106, + 107,108,109,110,111,112,113,0,1,2, + 3,4,5,6,7,8,0,10,11,12, + 4,14,15,16,74,18,19,20,21,22, + 23,24,25,26,27,0,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42, + 71,44,0,1,2,3,4,5,6,7, + 8,45,10,11,12,58,14,15,16,0, + 18,19,20,21,22,23,24,25,26,27, + 0,29,30,31,32,33,34,35,36,37, + 38,39,40,41,42,60,44,0,0,0, + 1,2,3,4,5,6,7,8,10,10, + 11,12,60,14,15,16,0,18,19,20, + 21,22,23,24,25,26,27,0,29,30, + 31,32,33,34,35,36,37,38,39,40, + 41,42,0,44,0,1,2,3,4,5, + 6,7,8,55,10,11,12,58,14,15, + 16,0,18,19,20,21,22,23,24,25, + 26,27,75,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,60,44,0, + 1,2,3,4,5,6,7,8,0,10, + 11,12,60,14,15,16,0,18,19,20, + 21,22,23,24,25,26,27,0,29,30, + 31,32,33,34,35,36,37,38,39,40, + 41,42,0,44,0,1,2,3,4,5, + 6,7,8,0,10,11,12,0,14,15, + 16,0,18,19,20,21,22,23,24,25, + 26,27,0,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,0,44,0, + 1,2,0,4,0,0,1,2,0,10, + 0,1,2,14,15,16,17,18,19,20, + 21,22,23,24,25,58,0,1,2,0, + 1,2,0,28,0,0,1,2,28,4, + 43,0,90,72,45,46,0,48,96,50, + 51,52,53,54,28,56,57,28,59,0, + 63,62,0,1,2,0,4,68,69,70, + 88,89,10,0,66,43,14,15,16,17, + 18,19,20,21,22,23,24,25,0,43, + 93,94,0,1,2,63,4,0,0,95, + 0,0,43,0,3,0,9,45,46,0, + 48,0,50,51,52,53,54,29,56,57, + 0,59,88,89,62,93,94,26,27,0, + 68,69,70,0,14,15,16,17,18,19, + 20,21,22,23,24,25,43,0,1,2, + 3,4,5,6,7,8,9,0,0,0, + 13,60,4,66,17,45,46,10,48,0, + 50,51,52,53,54,28,56,57,0,59, + 0,1,2,0,87,28,0,9,88,89, + 43,13,9,0,47,97,98,0,1,2, + 0,43,55,3,103,0,1,2,61,0, + 1,2,3,4,5,6,7,8,9,62, + 0,120,13,0,1,2,17,0,81,9, + 3,0,63,13,3,66,0,28,0,1, + 2,3,4,5,6,7,8,9,0,63, + 0,13,66,3,71,17,47,0,1,2, + 67,0,0,0,55,87,28,0,0,0, + 61,3,3,0,0,0,3,0,3,0, + 71,0,3,0,3,47,0,0,0,0, + 81,3,0,55,0,0,0,3,0,61, + 0,0,66,0,0,0,0,0,0,71, + 49,0,0,0,0,67,49,0,0,81, + 0,1,2,3,4,5,6,7,8,9, + 67,0,29,13,72,0,0,17,0,1, + 2,3,4,5,6,7,8,9,28,72, + 67,13,0,0,67,17,0,1,2,3, + 4,5,6,7,8,9,28,47,72,13, + 66,0,67,17,67,55,0,0,43,0, + 0,61,0,0,28,47,0,95,0,0, + 0,71,0,55,0,0,122,0,0,61, + 0,81,0,47,0,119,0,0,119,71, + 0,55,0,0,0,0,0,61,0,81, + 0,0,0,0,0,0,0,71,0,0, + 0,0,0,0,0,0,0,81,0,1, + 2,3,4,5,6,7,8,9,0,0, + 0,13,0,0,0,17,0,1,2,3, + 4,5,6,7,8,9,28,0,0,13, + 0,0,0,17,0,1,2,3,4,5, + 6,7,8,9,28,47,0,13,0,0, + 0,17,0,55,0,0,0,0,0,61, + 0,0,28,47,0,0,0,0,0,0, + 0,55,0,0,0,0,0,61,0,81, + 0,47,0,0,0,0,0,0,0,55, + 0,0,0,0,0,61,0,81,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,81,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0 + }; + }; + public final static byte termCheck[] = TermCheck.termCheck; + public final int termCheck(int index) { return termCheck[index]; } + + public interface TermAction { + public final static char termAction[] = {0, + 5478,5453,5450,5450,5450,5450,5450,5450,5450,5463, + 1,1,1,5460,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,5478,1,1,1,2876,1,933, + 1,1,1,1,1,1235,1,1,1,1, + 5478,3483,1,311,1,1,576,141,1,1, + 1,5485,33,5657,668,3595,2110,2203,2012,3485, + 3442,5478,3584,855,3581,3727,3551,8,5466,5466, + 5466,5466,5466,5466,5466,5466,5466,5466,5466,5466, + 5466,5466,5466,5466,5466,5466,5466,5466,5466,5466, + 5466,5466,5466,5466,5466,5146,5466,5466,5466,5466, + 5466,5466,5466,5466,5466,5466,5466,5466,5466,5466, + 1086,5466,5466,5466,5466,5466,5466,5466,5466,5466, + 5466,5466,5466,5466,5466,5466,5466,5478,5466,5466, + 1,5466,5466,1582,5478,5466,5466,5466,5466,359, + 5466,5466,5466,5466,5466,5466,5466,5466,2291,5466, + 5466,5466,5466,5466,5478,5453,5450,5450,5450,5450, + 5450,5450,5450,5457,1,1,1,5460,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,5134,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,5977,1,1, + 1,2876,1,933,1,1,1,1,1,1235, + 1,1,1,1,5478,3483,1,359,1,1, + 5478,5478,1,1,1,359,5478,5657,668,3595, + 2110,2203,2012,3485,3442,5484,3584,855,3581,3727, + 3551,5478,5453,5450,5450,5450,5450,5450,5450,5450, + 5457,1,1,1,5460,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5478, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,5920,1,1,1,2876,1, + 933,1,1,1,1,1,1235,1,1,1, + 1,5478,3483,1,115,1,1,5478,5478,1, + 1,1,561,5483,5657,668,3595,2110,2203,2012, + 3485,3442,5478,3584,855,3581,3727,3551,5478,5453, + 5450,5450,5450,5450,5450,5450,5450,5457,1,1, + 1,5460,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,441,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1182,1,1,1,2876,1,933,1,1, + 1,1,1,1235,1,1,1,1,5478,3483, + 1,5478,1,1,4055,1004,1,1,1,5149, + 4078,5657,668,3595,2110,2203,2012,3485,3442,5478, + 3584,855,3581,3727,3551,5478,5453,5450,5450,5450, + 5450,5450,5450,5450,5457,1,1,1,5460,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,5478,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1711,1, + 1,1,2876,1,933,1,1,1,1,1, + 1235,1,1,1,1,122,3483,1,5478,1, + 1,4869,5478,1,1,1,2778,2723,5657,668, + 3595,2110,2203,2012,3485,3442,161,3584,855,3581, + 3727,3551,5478,5453,5450,5450,5450,5450,5450,5450, + 5450,5457,1,1,1,5460,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 381,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,2988,1,1,1,2876, + 1,933,1,1,1,1,1,1235,1,1, + 1,1,1859,3483,1,1,1,1,5478,5478, + 1,1,1,5170,165,5657,668,3595,2110,2203, + 2012,3485,3442,5478,3584,855,3581,3727,3551,5478, + 5453,5450,5450,5450,5450,5450,5450,5450,5457,1, + 1,1,5460,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,933,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,3014,1,1,1,2876,1,933,1, + 1,1,1,1,1235,1,1,1,1,124, + 3483,1,165,1,1,1902,5478,1,1,1, + 2778,2723,5657,668,3595,2110,2203,2012,3485,3442, + 417,3584,855,3581,3727,3551,5478,5453,5450,5450, + 5450,5450,5450,5450,5450,5457,1,1,1,5460, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,5478,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,3039, + 1,1,1,2876,1,933,1,1,1,1, + 1,1235,1,1,1,1,123,3483,1,42, + 1,1,3031,5519,1,1,1,2778,2723,5657, + 668,3595,2110,2203,2012,3485,3442,503,3584,855, + 3581,3727,3551,5478,5453,5450,5450,5450,5450,5450, + 5450,5450,5457,1,1,1,5460,1,1,1, + 1,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,5478,1,1,1, + 2876,1,933,1,1,1,1,1,1235,1, + 1,1,1,904,3483,1,118,1,1,143, + 5478,1,1,1,5185,3444,5657,668,3595,2110, + 2203,2012,3485,3442,5478,3584,855,3581,3727,3551, + 5478,3540,1,1,1,1,1,1,1,5488, + 1,1,1,5487,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,33,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,3045,1,1,1,2876,1,933, + 1,1,1,1,1,1235,1,1,1,1, + 5478,3483,1,3105,1,1,4055,142,1,1, + 1,500,4078,5657,668,3595,2110,2203,2012,3485, + 3442,2252,3584,855,3581,3727,3551,42,5167,5164, + 4851,1139,620,3940,4553,3963,3820,1283,3917,3894, + 413,5743,5741,5750,5735,5749,5745,5746,5744,5747, + 5748,5751,5742,4009,3986,5478,5501,3871,1071,1295, + 5503,1116,4455,1145,5504,5502,950,5497,5499,5500, + 5478,5498,5738,5812,125,5813,119,5732,5739,5711, + 5737,5736,3380,5733,5734,1339,5712,95,237,5868, + 5319,5350,41,5161,5158,877,5869,5870,382,776, + 5478,5325,1,5478,5325,4907,5325,5322,2291,5322, + 5322,5325,363,5139,5135,2813,5143,951,1,4553, + 1,40,5182,5182,5322,5322,5478,5167,5164,4518, + 1139,951,772,4553,5805,1,5139,5135,5397,5143, + 5403,5322,5400,3738,5488,5478,5495,5496,5487,5517, + 3356,1,5385,5385,143,5382,302,772,5322,5805, + 359,5322,2656,2683,5322,5322,5779,3331,2545,5322, + 5322,5478,799,1,5139,5135,4518,5143,951,1206, + 4553,5478,5495,5496,317,5322,5322,5322,5322,5322, + 5322,5322,5322,5322,5322,5322,5322,5322,5322,5322, + 5322,5322,5322,5322,5322,5322,5322,5322,5322,5322, + 5322,5322,5478,5478,381,5322,5322,5331,5322,5322, + 5331,1816,5331,5328,318,5328,5328,5331,5478,5139, + 5135,4518,5143,951,5426,4553,5423,121,359,1, + 5328,5328,3190,3380,799,2027,359,310,5139,5135, + 4518,5143,951,5426,4553,5423,2252,5334,1773,1730, + 1687,1644,1601,1558,1515,1472,1429,1386,5478,5167, + 5164,3820,1139,951,5328,4553,120,5328,5478,1, + 5328,5328,3380,5478,799,5328,5328,5482,5484,5478, + 5139,5135,4518,5143,951,1,4553,1,5478,799, + 2027,5328,5328,5328,5328,5328,5328,5328,5328,5328, + 5328,5328,5328,5328,5328,5328,5328,5328,5328,5328, + 5328,5328,5328,5328,5328,5328,5328,5328,3331,2545, + 139,5328,5328,5478,5328,5328,5478,5363,5363,228, + 5359,228,228,228,228,5367,1,133,5478,228, + 1,1,1,1,1,1,1,1,1,1, + 1,1,6003,117,488,333,5483,3331,2545,342, + 5167,5164,2813,1139,951,772,4553,5805,5478,5155, + 5152,1,1,567,1,5478,1,1,1,1, + 1,4808,1,1,1,1,5481,3190,1,5478, + 5495,5496,135,338,1,1,1,406,228,5880, + 582,5812,428,5813,5478,5495,5496,5965,5478,5363, + 5363,228,5359,228,228,228,228,5406,1,799, + 2327,228,1,1,1,1,1,1,1,1, + 1,1,1,1,2423,2394,488,136,3520,397, + 5902,5903,5904,4055,799,582,224,338,5391,4078, + 338,5478,5394,1,1,567,1,5478,1,1, + 1,1,1,5735,1,1,5478,1,4032,532, + 1,338,1,48,5316,5316,1,1,1,405, + 228,5880,342,42,42,3190,5519,5478,772,5965, + 5805,5738,5812,445,5813,1,5732,5739,5711,5737, + 5736,5313,5733,5734,517,5712,1,5139,5135,4518, + 5143,951,3617,4553,5478,310,5902,5903,5904,310, + 137,3552,5902,5903,5904,1,5139,5135,4851,5143, + 620,3940,4553,3963,1,5191,3917,3894,382,5218, + 5224,5197,799,5200,5212,5209,5215,5206,5203,5194, + 5221,4009,3986,5176,5501,3871,1071,1295,5503,1116, + 4455,1145,5504,5502,950,5497,5499,5500,5478,5498, + 3650,5478,2885,30,1,5139,5135,2813,5143,951, + 5488,4553,517,1339,5487,5478,5310,5307,504,42, + 42,42,5167,5164,4851,1139,620,3940,4553,3963, + 5486,1120,3917,3894,388,5743,5741,5750,381,5749, + 5745,5746,5744,5747,5748,5751,5742,4009,3986,2361, + 5501,3871,1071,1295,5503,1116,4455,1145,5504,5502, + 950,5497,5499,5500,799,5498,5341,4439,140,5341, + 1057,1,5139,5135,4518,5143,951,500,4553,1339, + 1,5139,5135,2813,5143,951,5478,4553,5478,5310, + 5307,3356,5485,42,5167,5164,4851,1139,620,3940, + 4553,3963,5486,1120,3917,3894,53,5743,5741,5750, + 5496,5749,5745,5746,5744,5747,5748,5751,5742,4009, + 3986,5478,5501,3871,1071,1295,5503,1116,4455,1145, + 5504,5502,950,5497,5499,5500,5478,5498,344,4398, + 799,1754,1057,1,5139,5135,5397,5143,5403,5496, + 5400,1339,4032,532,5478,145,5167,5164,4851,1139, + 620,3940,4553,3963,5485,1120,3917,3894,2327,5743, + 5741,5750,40,5749,5745,5746,5744,5747,5748,5751, + 5742,4009,3986,287,5501,3871,1071,1295,5503,1116, + 4455,1145,5504,5502,950,5497,5499,5500,799,5498, + 5517,138,5478,5167,5164,5478,1139,5338,4601,4553, + 5478,5167,5164,1339,1139,5338,289,4553,5478,42, + 42,1,5139,5135,4851,5143,620,3940,4553,3963, + 654,5191,3917,3894,5478,5218,5224,5197,1191,5200, + 5212,5209,5215,5206,5203,5194,5221,4009,3986,2017, + 5501,3871,1071,1295,5503,1116,4455,1145,5504,5502, + 950,5497,5499,5500,354,5498,431,1,1,5478, + 1,5478,5173,943,5173,1254,432,42,42,1339, + 5519,4252,5347,1988,5344,42,42,42,5167,5164, + 4851,1139,620,3940,4553,3963,2856,1120,3917,3894, + 2361,5743,5741,5750,52,5749,5745,5746,5744,5747, + 5748,5751,5742,4009,3986,5478,5501,3871,1071,1295, + 5503,1116,4455,1145,5504,5502,950,5497,5499,5500, + 5478,5498,2066,96,1,1,1057,1,444,5388, + 5478,5388,53,5310,5307,1339,42,5167,5164,4851, + 1139,620,3940,4553,3963,5482,1120,3917,3894,5831, + 5743,5741,5750,5478,5749,5745,5746,5744,5747,5748, + 5751,5742,4009,3986,5478,5501,3871,1071,1295,5503, + 1116,4455,1145,5504,5502,950,5497,5499,5500,1, + 5498,225,1110,5478,5934,5928,5478,5932,5179,4604, + 5926,5927,5488,99,42,42,5487,5519,5735,5432, + 1,5429,40,5182,5182,5957,5958,226,1582,5935, + 5438,42,5478,5167,5164,5519,1139,951,5478,4553, + 5478,4927,5937,3801,5735,5871,5738,5812,3378,5813, + 5517,5732,5739,5711,5737,5736,358,5733,5734,995, + 5712,435,5938,763,773,5959,5936,389,5167,5164, + 129,5519,5738,5812,5481,5813,2707,5732,5739,5711, + 5737,5736,5441,5733,5734,366,5712,5948,5947,5960, + 5929,5930,5953,5954,130,42,5951,5952,5931,5933, + 5955,5956,5961,5941,5942,5943,5939,5940,5949,5950, + 5945,5944,5946,5478,5478,227,1110,5478,5934,5928, + 4155,5932,1453,364,5926,5927,5478,5167,5164,5478, + 5519,5478,5735,848,5478,8740,8740,2628,5486,5957, + 5958,5478,3218,5935,5478,5902,5903,5904,5478,5495, + 5496,5478,1249,951,5478,4553,5937,5188,2656,2683, + 5738,5812,5517,5813,5478,5732,5739,5711,5737,5736, + 1,5733,5734,995,5712,1496,5938,763,773,5959, + 5936,40,5182,5182,4897,42,5182,2507,2476,5519, + 1296,772,5478,5805,4906,1028,53,5155,5152,5478, + 5485,5948,5947,5960,5929,5930,5953,5954,5486,2759, + 5951,5952,5931,5933,5955,5956,5961,5941,5942,5943, + 5939,5940,5949,5950,5945,5944,5946,42,5167,5164, + 4851,1139,620,3940,4553,3963,42,1120,3917,3894, + 5519,5743,5741,5750,2584,5749,5745,5746,5744,5747, + 5748,5751,5742,4009,3986,345,5501,3871,1071,1295, + 5503,1116,4455,1145,5504,5502,950,5497,5499,5500, + 5485,5498,42,5167,5164,4851,1139,620,3940,4553, + 3963,1592,1120,3917,3894,1339,5743,5741,5750,5478, + 5749,5745,5746,5744,5747,5748,5751,5742,4009,3986, + 5478,5501,3871,1071,1295,5503,1116,4455,1145,5504, + 5502,950,5497,5499,5500,799,5498,5478,302,42, + 5167,5164,4851,1139,620,3940,4553,3963,5779,1120, + 3917,3894,1726,5743,5741,5750,5478,5749,5745,5746, + 5744,5747,5748,5751,5742,4009,3986,104,5501,3871, + 1071,1295,5503,1116,4455,1145,5504,5502,950,5497, + 5499,5500,103,5498,42,5167,5164,4880,1139,620, + 3940,4553,3963,1764,1120,3917,3894,1339,5743,5741, + 5750,5478,5749,5745,5746,5744,5747,5748,5751,5742, + 4009,3986,3736,5501,3871,1071,1295,5503,1116,4455, + 1145,5504,5502,950,5497,5499,5500,4956,5498,42, + 5167,5164,4851,1139,620,3940,4553,3963,5478,1120, + 3917,3894,2076,5743,5741,5750,5478,5749,5745,5746, + 5744,5747,5748,5751,5742,4009,3986,5478,5501,3871, + 1071,1295,5503,1116,4455,1145,5504,5502,950,5497, + 5499,5500,116,5498,42,5167,5164,4851,1139,620, + 3940,4553,3963,5478,1120,3917,3894,521,5743,5741, + 5750,5478,5749,5745,5746,5744,5747,5748,5751,5742, + 4009,3986,128,5501,3871,1071,1295,5503,1116,4455, + 1145,5504,5502,950,5497,5499,5500,132,5498,5478, + 5167,5164,5478,5519,1,5478,5373,5370,415,1172, + 50,5379,5379,5743,5741,5750,5735,5749,5745,5746, + 5744,5747,5748,5751,5742,3454,40,5182,5182,5478, + 5413,5409,131,5517,127,5478,5167,5164,5376,5519, + 2628,5478,4055,2115,5738,5812,1,5813,4078,5732, + 5739,5711,5737,5736,2579,5733,5734,5517,5712,5478, + 5353,5868,241,5300,5296,5478,5304,877,5869,5870, + 2656,2683,1172,5478,3634,2628,5287,5293,5266,5251, + 5269,5281,5278,5284,5275,5272,5263,5290,5478,500, + 2507,2476,5478,5167,5164,5356,5519,5478,134,5833, + 126,79,2351,5478,3441,5478,5484,5242,5236,5478, + 5233,5478,5260,5239,5230,5245,5248,3089,5257,5254, + 223,5227,2656,2683,5868,2507,2476,5545,5546,5478, + 877,5869,5870,5478,5743,5741,5750,5735,5749,5745, + 5746,5744,5747,5748,5751,5742,3162,1,5450,5450, + 228,5450,228,228,228,228,228,1,53,5478, + 228,3797,5495,4945,8708,5738,5812,5438,5813,5478, + 5732,5739,5711,5737,5736,5447,5733,5734,1,5712, + 288,5495,5496,1,5483,3378,5478,167,2656,2683, + 3597,167,5444,409,2876,2423,2394,39,5420,5417, + 5478,5495,2160,2925,887,389,5495,5496,3483,1, + 5450,5450,228,5450,228,228,228,228,5469,5441, + 1,999,228,5478,8563,7621,8708,107,5965,5488, + 4157,279,4147,5487,5435,3041,436,5447,1,5450, + 5450,228,5450,228,228,228,228,5469,495,3728, + 5478,228,3041,4399,5485,8708,2876,5478,8563,7621, + 2164,5478,5478,493,2160,167,5447,5478,5478,5478, + 3483,3666,3607,5478,189,5478,4603,5478,4889,5478, + 220,5478,4541,38,4898,2876,371,5478,5478,510, + 5965,4944,1,2160,5478,5478,5478,4970,5478,3483, + 5478,5478,2585,1,309,5478,5478,497,5478,220, + 3668,5478,5478,5478,5478,4935,3724,5478,5478,5965, + 1,5450,5450,228,5450,228,228,228,228,5472, + 4936,5478,3479,228,5660,2,5478,8708,1,5450, + 5450,228,5450,228,228,228,228,5469,5447,3497, + 1807,228,5478,5478,1807,8708,1,5450,5450,228, + 5450,228,228,228,228,5469,5447,2876,5659,228, + 4505,5478,1945,8708,857,2160,5478,5478,40,5478, + 5478,3483,5478,5478,5447,2876,5478,3430,5478,5478, + 5478,219,5478,2160,5478,5478,5475,5478,5478,3483, + 5478,5965,5478,2876,5478,3650,5478,5478,3650,220, + 5478,2160,5478,5478,5478,5478,5478,3483,5478,5965, + 5478,5478,5478,5478,5478,5478,5478,220,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5965,1,5450, + 5450,228,5450,228,228,228,228,228,5478,5478, + 5478,228,5478,5478,5478,8708,1,5450,5450,228, + 5450,228,228,228,228,228,5447,5478,5478,228, + 5478,5478,5478,8708,1,5450,5450,228,5450,228, + 228,228,228,228,5447,2876,5478,228,5478,5478, + 5478,8708,5478,2160,5478,5478,5478,5478,5478,3483, + 5478,5478,5447,2876,5478,5478,5478,5478,5478,5478, + 5478,2160,5478,5478,5478,5478,5478,3483,5478,5965, + 5478,2876,5478,5478,5478,5478,5478,5478,5478,2160, + 5478,5478,5478,5478,5478,3483,5478,5965,5478,5478, + 5478,5478,5478,5478,5478,5478,5478,5478,5478,5478, + 5478,5478,5478,5478,5478,5965 + }; + }; + public final static char termAction[] = TermAction.termAction; + public final int termAction(int index) { return termAction[index]; } + + public interface Asb { + public final static char asb[] = {0, + 993,1,70,63,63,251,597,806,1003,597, + 251,776,245,355,211,123,77,663,3,594, + 31,118,454,597,597,3,251,61,847,1034, + 597,454,245,251,590,454,211,121,946,806, + 806,806,806,59,946,195,778,212,212,212, + 212,212,212,212,212,212,682,688,693,690, + 697,695,702,700,704,703,705,308,706,118, + 721,3,355,652,663,795,663,582,663,584, + 663,647,59,251,118,118,3,986,249,251, + 359,590,403,121,195,31,31,31,31,251, + 738,454,454,445,195,905,30,847,195,665, + 665,846,846,738,211,212,212,212,212,212, + 212,212,212,212,212,212,212,212,212,212, + 212,212,212,212,211,211,211,211,211,211, + 211,211,211,211,211,211,212,1073,607,1072, + 594,260,251,794,304,361,472,795,398,251, + 251,251,304,1073,61,251,986,590,589,211, + 784,454,454,1073,1073,1073,1073,304,454,212, + 355,531,521,520,477,59,778,118,30,211, + 454,248,250,248,454,118,690,690,688,688, + 688,695,695,695,695,693,693,700,697,697, + 703,702,704,580,705,195,260,794,473,794, + 304,794,398,398,251,304,251,986,590,121, + 946,946,946,946,251,251,445,454,533,535, + 251,847,212,31,686,410,454,251,250,847, + 211,785,251,260,580,306,160,570,260,794, + 794,730,251,398,785,783,784,251,211,211, + 211,211,946,946,454,525,513,524,535,304, + 249,454,686,355,61,251,249,847,806,248, + 793,572,946,797,58,731,251,785,212,251, + 454,454,454,454,738,738,457,211,522,522, + 529,355,365,454,251,686,687,686,211,410, + 165,61,249,275,249,794,794,245,726,800, + 212,580,72,535,730,251,59,59,251,454, + 454,457,211,211,533,513,457,488,686,738, + 212,118,165,727,275,249,794,795,59,572, + 212,212,535,251,251,251,459,457,687,454, + 118,1072,806,254,254,727,795,175,797,251, + 946,454,251,251,459,459,275,856,275,1071, + 1071,788,176,59,251,738,790,946,459,853, + 948,350,946,467,892,275,31,31,788,175, + 580,212,580,727,946,946,946,176,946,251, + 316,727,727,251,795,454,790,536,808,1073, + 350,853,855,795,795,900,59,1072,167,946, + 167,580,176,195,195,193,903,195,727,727, + 645,788,792,453,856,855,856,727,726,454, + 855,855,855,59,251,568,365,454,245,454, + 316,727,350,946,454,788,792,31,855,245, + 727,785,855,855,855,251,251,254,454,454, + 501,176,645,176,727,316,350,211,176,173, + 785,785,785,251,727,1071,795,795,938,211, + 174,738,727,727,454,727,248,176,454,738, + 727,176,454,176 + }; + }; + public final static char asb[] = Asb.asb; + public final int asb(int index) { return asb[index]; } + + public interface Asr { + public final static byte asr[] = {0, + 121,0,31,64,32,33,65,7,34,35, + 36,37,58,38,39,40,41,42,29,26, + 27,8,6,11,12,5,30,63,44,3, + 10,68,62,69,70,15,25,14,21,19, + 20,22,23,18,16,24,50,56,57,17, + 54,53,51,46,48,52,59,45,1,2, + 4,0,74,49,63,72,95,87,60,121, + 3,9,66,13,67,0,64,65,3,10, + 32,36,34,31,39,15,25,14,21,19, + 20,22,23,18,16,24,40,44,41,42, + 29,38,33,37,5,7,4,26,27,8, + 6,11,12,30,35,1,2,118,9,0, + 9,71,64,65,58,26,27,8,6,11, + 12,30,35,3,40,44,41,42,29,38, + 33,37,15,25,14,21,19,20,22,23, + 18,16,24,32,36,34,31,39,49,7, + 1,2,4,10,5,0,81,114,115,116, + 28,72,119,122,71,73,74,47,55,61, + 76,78,85,83,75,80,82,84,86,49, + 77,79,9,13,50,62,46,68,51,17, + 52,53,54,56,57,69,59,70,45,48, + 58,64,65,10,32,36,34,31,39,15, + 25,14,21,19,20,22,23,18,16,24, + 40,44,41,42,29,38,33,37,26,27, + 11,12,30,35,8,6,3,4,7,5, + 1,2,0,63,67,66,1,2,0,81, + 7,114,115,116,47,9,3,8,6,5, + 72,71,13,73,50,14,15,62,46,16, + 68,51,17,18,52,53,19,20,54,56, + 21,22,57,69,59,10,70,23,45,24, + 48,25,4,1,2,28,0,63,72,95, + 66,118,87,71,121,14,15,31,64,16, + 32,33,18,19,20,65,34,21,22,35, + 36,37,58,38,39,10,23,24,25,40, + 41,42,29,26,27,11,12,30,44,9, + 13,5,7,3,1,2,8,4,6,0, + 4,49,72,0,50,14,15,62,46,16, + 68,51,17,18,52,53,19,20,54,56, + 21,22,57,69,59,10,70,23,45,24, + 48,25,1,2,4,95,0,1,2,9, + 71,0,9,72,118,87,13,66,0,96, + 90,11,12,91,92,88,89,43,93,94, + 97,98,99,100,101,102,117,72,95,67, + 104,105,106,107,108,109,110,111,112,113, + 118,71,13,121,63,1,2,8,6,4, + 3,60,66,87,9,0,46,48,58,9, + 63,95,67,66,87,0,1,2,123,49, + 0,4,43,49,72,0,14,15,16,18, + 19,20,21,22,23,24,25,50,46,51, + 17,52,53,54,56,57,59,45,48,13, + 9,87,7,1,2,60,3,8,6,5, + 4,0,8,6,7,5,4,1,2,3, + 60,63,67,66,9,87,95,0,5,7, + 3,60,6,8,95,50,14,15,46,16, + 68,51,17,18,52,53,19,20,54,56, + 21,22,57,69,59,10,70,23,45,24, + 48,25,1,2,4,87,9,62,0,13, + 9,5,7,3,1,2,4,6,8,72, + 0,28,72,4,49,1,2,0,58,46, + 7,48,5,1,2,4,74,9,49,72, + 95,118,87,71,13,121,60,3,120,96, + 103,90,26,27,8,6,11,12,91,92, + 88,89,43,93,94,97,98,99,100,101, + 102,117,104,105,106,107,108,109,110,111, + 112,113,63,66,67,0,10,68,62,69, + 70,15,25,14,21,19,20,22,23,18, + 16,24,74,49,4,5,2,1,48,45, + 59,57,56,7,54,53,52,17,51,46, + 50,120,103,26,27,60,3,96,90,6, + 91,92,11,12,89,88,43,93,94,97, + 98,8,99,100,101,63,95,87,121,67, + 104,105,106,107,108,109,110,111,112,113, + 72,118,71,102,117,66,13,9,0,45, + 1,2,4,114,115,116,0,9,87,14, + 15,31,16,32,33,18,19,20,34,21, + 22,35,36,37,58,38,39,10,23,24, + 25,40,41,42,29,3,26,27,8,6, + 11,12,30,4,44,5,7,1,2,65, + 64,0,67,66,71,9,0,119,0,46, + 48,58,74,72,49,0,49,66,0,72, + 9,60,67,66,13,43,0,61,50,14, + 15,62,46,16,68,51,81,17,18,52, + 53,19,20,54,55,56,21,22,57,69, + 59,10,70,23,47,45,24,48,25,9, + 3,8,6,13,49,4,7,5,28,1, + 2,0,29,0,71,62,46,16,68,51, + 18,52,53,19,20,54,56,21,22,57, + 69,59,70,23,45,24,48,25,15,14, + 50,9,3,8,6,13,47,61,81,17, + 28,7,1,2,5,4,10,55,0,49, + 67,0,75,0,64,65,26,27,11,12, + 30,35,40,44,41,42,29,38,33,37, + 15,25,14,21,19,20,22,23,18,16, + 24,10,32,36,34,31,39,8,6,60, + 5,7,1,2,4,3,0,62,46,16, + 68,51,18,52,53,19,20,54,56,21, + 22,57,69,59,10,70,23,45,24,48, + 25,15,14,50,9,3,8,13,47,55, + 61,81,17,43,4,7,6,5,1,2, + 28,0,8,6,3,7,5,73,4,1, + 2,0,50,14,15,62,46,16,68,51, + 17,18,52,53,19,20,54,56,21,22, + 57,69,59,10,70,23,45,24,48,25, + 1,2,4,65,64,11,12,6,91,92, + 99,8,100,5,30,43,107,108,104,105, + 106,112,111,113,89,88,109,110,97,98, + 93,94,101,102,26,27,90,103,3,60, + 67,66,63,0 + }; + }; + public final static byte asr[] = Asr.asr; + public final int asr(int index) { return asr[index]; } + + public interface Nasb { + public final static char nasb[] = {0, + 113,11,27,29,29,53,11,11,224,11, + 130,23,113,190,18,35,55,11,117,42, + 4,59,206,11,11,117,53,11,72,226, + 11,206,49,130,117,206,35,117,11,11, + 11,11,11,10,11,235,130,35,35,21, + 35,35,35,35,35,35,11,11,11,11, + 11,11,11,11,11,11,11,35,11,59, + 11,33,190,157,158,11,158,128,158,67, + 158,151,10,130,59,59,33,88,52,130, + 11,14,11,82,235,229,229,229,229,130, + 176,206,206,133,1,35,12,72,235,11, + 11,74,74,176,148,35,35,35,35,35, + 35,35,35,35,35,35,35,35,35,35, + 35,35,35,35,35,35,35,35,35,35, + 35,35,35,35,35,148,35,11,11,11, + 183,117,24,117,232,117,11,11,117,232, + 130,53,11,11,11,53,72,117,14,35, + 86,206,206,11,11,11,11,142,206,35, + 190,133,29,29,11,10,130,59,229,18, + 206,51,130,51,206,59,11,11,11,11, + 11,11,11,11,11,11,11,11,11,11, + 11,11,11,11,11,33,193,117,117,45, + 71,45,117,68,53,71,104,88,14,82, + 11,11,11,11,104,53,181,206,169,117, + 130,72,35,229,117,101,206,130,94,72, + 35,86,130,212,11,11,16,121,193,45, + 45,160,104,68,86,11,11,104,148,148, + 148,148,11,11,206,11,111,11,171,70, + 104,206,119,183,11,53,104,72,11,10, + 117,186,11,11,10,109,232,86,35,68, + 206,206,206,206,176,176,117,35,11,11, + 111,190,171,206,104,117,40,11,148,183, + 95,11,52,117,232,117,174,49,212,11, + 35,11,92,117,200,232,10,10,53,206, + 206,14,35,35,169,47,117,11,119,176, + 35,59,95,212,171,52,174,179,63,113, + 35,35,171,53,232,232,117,14,40,206, + 59,11,11,99,99,212,179,79,11,232, + 11,206,53,53,107,117,171,214,117,11, + 11,117,137,63,53,176,117,11,107,11, + 214,122,11,68,16,171,229,229,61,145, + 11,35,11,212,11,11,11,146,11,68, + 210,212,212,68,31,206,14,204,117,11, + 186,11,117,11,11,11,10,11,97,11, + 11,11,146,228,228,219,11,228,212,212, + 11,117,117,206,214,117,214,212,11,206, + 164,117,117,10,232,11,229,206,113,206, + 221,212,117,11,206,61,107,229,164,113, + 212,86,214,164,164,232,208,99,206,206, + 117,146,11,146,212,221,113,148,146,97, + 86,86,86,208,212,11,31,31,111,35, + 11,221,212,212,206,212,51,146,206,221, + 212,146,206,146 + }; + }; + public final static char nasb[] = Nasb.nasb; + public final int nasb(int index) { return nasb[index]; } + + public interface Nasr { + public final static char nasr[] = {0, + 3,13,8,2,147,145,121,144,143,6, + 0,172,0,60,0,151,0,5,30,0, + 6,13,8,2,3,0,177,0,67,0, + 59,0,45,5,6,8,2,13,0,136, + 0,5,187,0,112,0,96,95,62,58, + 6,8,2,0,13,2,8,6,77,0, + 157,0,166,6,165,0,6,1,0,131, + 2,64,0,6,2,8,134,0,5,63, + 0,13,2,8,6,63,0,64,133,132, + 0,183,0,2,115,0,114,0,111,0, + 5,174,0,4,3,0,123,0,185,0, + 96,95,6,8,2,62,5,0,138,0, + 39,6,2,8,5,153,0,3,6,44, + 2,0,95,96,5,0,5,48,40,175, + 0,131,64,0,63,48,69,5,40,0, + 2,6,121,117,118,119,13,87,0,6, + 103,184,0,104,5,48,68,0,6,90, + 24,5,0,155,0,5,98,0,156,0, + 96,95,6,58,0,2,62,8,5,6, + 90,0,5,48,68,103,46,6,0,6, + 103,162,0,45,5,34,0,150,0,5, + 40,39,0,5,48,68,78,0,24,176, + 5,101,0,5,45,168,0,116,5,45, + 0,2,56,0,5,45,40,0 + }; + }; + public final static char nasr[] = Nasr.nasr; + public final int nasr(int index) { return nasr[index]; } + + public interface TerminalIndex { + public final static char terminalIndex[] = {0, + 115,116,2,32,14,11,81,10,117,102, + 12,13,122,50,54,62,68,70,76,77, + 88,89,104,107,109,8,9,95,114,15, + 57,63,69,86,90,92,96,99,101,111, + 112,113,20,46,106,56,105,108,3,49, + 66,72,75,78,79,85,91,97,100,1, + 48,55,21,60,80,45,34,65,93,103, + 121,31,123,98,110,51,52,58,59,61, + 67,71,73,74,87,94,120,18,19,7, + 16,17,22,23,33,5,24,25,26,27, + 28,29,6,35,36,37,38,39,40,41, + 42,43,44,82,83,84,30,119,53,4, + 125,64,124,118 + }; + }; + public final static char terminalIndex[] = TerminalIndex.terminalIndex; + public final int terminalIndex(int index) { return terminalIndex[index]; } + + public interface NonterminalIndex { + public final static char nonterminalIndex[] = {0, + 132,137,139,239,0,0,138,235,136,0, + 135,0,146,0,134,0,0,145,151,0, + 0,152,161,182,162,163,164,165,140,154, + 166,167,168,128,169,170,171,0,130,133, + 172,0,142,141,155,180,0,0,0,0, + 0,0,0,205,0,0,148,158,175,189, + 202,206,129,0,178,0,207,0,174,0, + 0,0,0,0,0,0,127,131,0,0, + 0,0,0,0,0,0,188,0,0,203, + 213,149,160,209,210,211,0,0,0,0, + 0,208,221,181,0,200,0,0,0,212, + 0,0,0,242,150,177,191,192,193,194, + 195,197,0,215,218,220,238,0,241,0, + 0,143,144,147,0,0,157,159,0,173, + 0,183,184,185,186,187,190,0,196,198, + 0,199,204,0,0,216,217,0,222,225, + 227,229,0,232,233,234,0,236,237,240, + 126,0,153,156,176,179,201,214,219,0, + 223,224,226,228,0,230,231,243,244,0, + 0,0,0,0,0 + }; + }; + public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; + public final int nonterminalIndex(int index) { return nonterminalIndex[index]; } + + public interface ScopePrefix { + public final static char scopePrefix[] = { + 146,592,611,371,543,559,570,581,351,252, + 266,288,294,300,42,277,396,434,154,600, + 379,486,20,51,75,80,85,122,182,283, + 306,317,328,258,272,514,27,361,328,619, + 27,204,231,1,14,61,71,101,136,311, + 324,333,340,344,452,479,508,535,539,629, + 633,637,92,7,92,136,414,430,443,463, + 527,443,550,566,577,588,194,385,497,56, + 56,143,209,212,56,226,247,212,212,56, + 348,458,476,483,143,56,652,105,219,418, + 470,111,111,219,56,219,405,164,99,456, + 641,648,641,648,65,424,129,99,99,236 + }; + }; + public final static char scopePrefix[] = ScopePrefix.scopePrefix; + public final int scopePrefix(int index) { return scopePrefix[index]; } + + public interface ScopeSuffix { + public final static char scopeSuffix[] = { + 18,5,5,358,5,5,5,5,358,127, + 90,127,127,127,48,263,402,440,160,67, + 366,492,25,25,59,59,90,127,187,127, + 127,322,322,263,96,519,38,366,606,624, + 32,198,198,5,18,5,59,90,127,315, + 315,315,90,90,127,229,5,5,5,5, + 5,229,650,11,96,140,358,358,358,467, + 519,447,554,554,554,554,198,389,501,59, + 59,5,5,215,217,229,5,250,250,217, + 90,461,5,229,5,512,5,108,337,421, + 473,114,118,222,531,522,408,167,90,90, + 643,643,645,645,67,426,131,189,174,238 + }; + }; + public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix; + public final int scopeSuffix(int index) { return scopeSuffix[index]; } + + public interface ScopeLhs { + public final static char scopeLhs[] = { + 46,18,18,73,18,18,18,18,73,81, + 47,86,85,119,66,52,73,72,46,18, + 73,20,3,7,162,162,159,117,46,84, + 119,118,120,53,47,134,128,73,18,18, + 128,97,154,130,76,165,162,159,125,118, + 118,120,176,50,59,138,19,18,18,18, + 18,18,12,114,159,125,73,72,72,38, + 134,72,18,18,18,18,97,73,20,166, + 162,177,95,102,55,67,54,153,65,120, + 74,70,139,138,172,134,17,159,120,116, + 22,126,126,58,134,134,73,46,159,71, + 132,44,132,44,165,116,117,46,46,154 + }; + }; + public final static char scopeLhs[] = ScopeLhs.scopeLhs; + public final int scopeLhs(int index) { return scopeLhs[index]; } + + public interface ScopeLa { + public final static byte scopeLa[] = { + 119,87,87,87,87,87,87,87,87,71, + 13,71,71,71,63,1,87,122,49,3, + 13,87,63,63,1,1,13,71,49,71, + 71,1,1,1,1,4,63,13,1,1, + 63,87,87,87,119,87,1,13,71,1, + 1,1,13,13,71,118,87,87,87,87, + 87,118,1,87,1,66,87,87,87,72, + 4,87,63,63,63,63,87,13,3,1, + 1,87,87,3,1,118,87,1,1,1, + 13,72,87,118,87,5,87,1,28,67, + 87,1,1,6,1,28,75,74,13,13, + 4,4,4,4,3,1,49,1,1,3 + }; + }; + public final static byte scopeLa[] = ScopeLa.scopeLa; + public final int scopeLa(int index) { return scopeLa[index]; } + + public interface ScopeStateSet { + public final static char scopeStateSet[] = { + 54,240,240,65,240,240,240,240,65,78, + 54,78,78,96,76,56,65,65,54,240, + 65,240,171,215,45,45,51,96,54,78, + 96,96,96,56,54,88,35,65,240,240, + 35,144,48,12,65,16,45,51,302,96, + 96,96,1,56,19,42,240,240,240,240, + 240,240,219,7,51,302,65,65,65,272, + 88,65,240,240,240,240,144,65,240,16, + 45,152,144,146,154,140,154,48,159,96, + 65,65,39,42,91,88,240,51,96,3, + 241,96,96,100,88,88,65,54,51,65, + 93,116,93,116,16,3,96,54,54,48 + }; + }; + public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet; + public final int scopeStateSet(int index) { return scopeStateSet[index]; } + + public interface ScopeRhs { + public final static char scopeRhs[] = {0, + 313,3,58,0,128,0,312,3,119,0, + 128,175,0,129,183,74,0,217,0,291, + 129,43,128,0,21,0,293,129,43,28, + 0,21,55,0,34,134,0,21,55,0, + 0,293,129,43,28,192,0,21,131,0, + 291,129,43,132,0,180,130,0,140,0, + 222,3,290,0,290,0,2,0,128,0, + 180,130,227,0,180,130,45,227,0,180, + 130,309,45,0,133,188,168,130,0,130, + 0,188,168,130,0,136,130,0,172,0, + 305,129,172,0,129,172,0,223,130,0, + 168,245,0,139,0,0,0,137,0,0, + 0,304,129,49,250,0,129,0,250,0, + 3,0,0,129,0,303,129,49,0,45, + 129,0,154,3,0,129,280,279,129,74, + 277,172,0,279,129,74,277,172,0,216, + 0,217,0,277,172,0,98,0,0,216, + 0,217,0,204,98,0,0,216,0,217, + 0,279,129,277,172,0,216,0,204,0, + 0,216,0,232,129,3,0,128,0,0, + 0,0,0,232,129,3,219,0,226,3, + 0,214,129,0,209,0,149,0,168,130, + 0,11,0,0,0,217,60,0,127,0, + 232,129,3,178,0,178,0,2,0,0, + 128,0,0,0,0,0,189,3,0,202, + 0,229,129,49,29,17,0,180,130,55, + 47,0,198,130,0,133,180,130,275,47, + 0,180,130,275,47,0,180,130,67,125, + 55,0,229,129,49,55,0,229,129,49, + 123,55,0,229,129,49,126,55,0,272, + 129,49,125,68,0,272,129,49,68,0, + 180,130,68,0,137,0,188,180,130,245, + 0,139,0,180,130,245,0,188,168,130, + 10,0,168,130,10,0,95,139,0,265, + 129,148,0,265,129,172,0,164,85,0, + 225,163,225,300,3,82,0,128,174,0, + 225,300,3,82,0,130,0,128,174,0, + 225,163,225,163,225,3,82,0,225,163, + 225,3,82,0,225,3,82,0,130,0, + 130,0,128,174,0,164,3,75,193,80, + 0,128,130,0,193,80,0,110,2,133, + 128,130,0,240,3,75,0,189,169,0, + 34,172,0,169,0,178,34,172,0,240, + 3,86,0,193,158,240,3,84,0,64, + 174,0,240,3,84,0,128,174,64,174, + 0,299,129,49,0,164,0,217,77,0, + 31,0,164,117,161,0,31,172,0,181, + 3,0,128,152,0,222,3,0,217,60, + 262,0,164,60,0,181,3,296,65,130, + 0,128,0,0,0,0,296,65,130,0, + 2,148,128,0,0,0,0,181,3,35, + 0,150,0,127,28,168,130,0,32,150, + 0,95,139,32,150,0,216,180,130,0, + 149,32,150,0,181,3,39,0,164,3, + 39,0,164,3,63,181,43,31,0,181, + 43,31,0,21,2,133,128,0,164,3, + 63,181,43,34,0,181,43,34,0,164, + 3,63,181,43,36,0,181,43,36,0, + 164,3,63,181,43,32,0,181,43,32, + 0,222,3,127,188,168,130,10,0,127, + 188,168,130,10,0,139,2,0,128,0, + 222,3,126,255,168,130,10,0,255,168, + 130,10,0,137,2,0,128,0,222,3, + 137,0,222,3,142,0,164,60,142,0, + 257,0,32,0,32,143,0,167,0,136, + 0,164,3,0 + }; + }; + public final static char scopeRhs[] = ScopeRhs.scopeRhs; + public final int scopeRhs(int index) { return scopeRhs[index]; } + + public interface ScopeState { + public final static char scopeState[] = {0, + 4541,0,4898,4889,4603,0,1132,1020,1074,833, + 0,3542,3094,2159,0,2585,848,0,3794,3739, + 3701,2574,2447,3646,3608,3553,3497,668,3442,2924, + 2847,3140,3125,0,4545,3041,3405,0,2399,705, + 0,2952,2776,0,3634,3031,0,4676,2827,0, + 3030,3462,0,3030,3462,3225,3161,4339,3097,3033, + 4252,4243,4156,4147,3794,3739,3701,3646,3608,3553, + 3497,3442,2924,2847,0,3030,3462,3225,3161,4339, + 3097,3033,4252,4243,4156,4147,0,999,887,0, + 532,0,2885,1004,0,527,2932,2452,0,3001, + 785,3192,4650,3370,3445,3415,1067,3064,3231,3200, + 709,3034,4613,1320,0,4844,4839,4834,4823,4777, + 4772,4766,4761,4532,4367,3455,4756,4699,3251,4694, + 4689,3219,4216,3587,2840,3127,2860,3431,0,1668, + 1625,784,659,785,3231,3312,2813,2710,3190,2845, + 0,652,0,4676,785,4650,2827,4613,3312,4347, + 4505,4584,3001,4439,2813,3415,2710,4518,4372,0, + 4844,4839,3436,3232,3071,4834,4823,4777,2754,2471, + 4772,4766,3361,4761,2759,3356,2579,2459,2242,4532, + 1023,4367,3455,2154,2066,4756,4699,2247,2956,3251, + 4694,4689,779,3219,4216,3587,2932,2840,3127,2860, + 2071,2452,3431,951,1075,721,570,1139,857,3312, + 4347,4505,4584,3001,4676,4439,785,4650,2813,3415, + 2710,2827,1191,654,999,887,4613,4518,4372,4455, + 4124,4101,2252,2291,2361,2327,2423,2394,582,2683, + 2656,2628,2600,2507,2476,3380,3331,2545,2778,2723, + 4078,4055,4032,4009,3986,3963,3940,3917,3894,620, + 3871,1945,2203,2164,2115,2076,1296,1249,2027,1206, + 1988,1902,904,1859,1816,1773,1730,1687,1644,1601, + 1558,1515,1472,1429,1386,527,733,675,1339,1148, + 799,1028,956,1086,0 + }; + }; + public final static char scopeState[] = ScopeState.scopeState; + public final int scopeState(int index) { return scopeState[index]; } + + public interface InSymb { + public final static char inSymb[] = {0, + 0,295,189,178,186,5,126,128,7,132, + 130,4,3,129,3,67,60,126,43,169, + 129,60,3,64,65,43,180,167,168,7, + 126,189,214,130,6,154,129,49,39,31, + 34,36,32,10,137,3,130,35,30,5, + 12,11,6,8,27,26,142,147,150,149, + 152,151,156,155,159,157,160,58,161,217, + 161,129,129,266,267,250,268,245,269,68, + 270,271,10,130,60,60,129,4,188,130, + 168,129,264,129,3,43,43,43,43,130, + 3,181,164,169,129,64,65,168,3,127, + 126,103,120,3,60,90,96,12,11,92, + 91,6,94,93,63,43,88,89,8,98, + 97,100,99,101,113,112,111,110,109,108, + 107,106,105,104,67,117,102,291,135,294, + 214,49,168,235,130,127,126,125,49,130, + 130,180,168,291,257,188,168,6,184,66, + 303,181,164,181,181,181,181,168,222,158, + 129,3,220,219,137,10,130,60,296,3, + 181,28,130,28,222,164,149,149,147,147, + 147,151,151,151,151,150,150,155,152,152, + 157,156,159,164,160,66,129,127,126,129, + 180,129,49,129,180,168,28,4,129,66, + 63,63,63,63,188,255,214,226,129,3, + 130,168,201,3,297,169,154,130,180,168, + 72,304,130,170,227,192,47,172,306,129, + 129,72,188,129,272,125,273,188,3,3, + 3,3,127,126,232,233,148,234,129,168, + 28,181,129,129,216,5,28,168,28,275, + 277,129,178,308,227,45,130,272,67,66, + 164,164,164,164,3,3,158,67,226,189, + 3,129,66,232,188,158,259,262,60,182, + 4,127,188,43,130,74,129,214,305,126, + 72,285,189,3,66,130,45,309,180,222, + 222,129,67,67,129,214,158,127,129,3, + 60,164,4,133,129,180,129,279,72,66, + 72,67,129,180,130,130,223,129,259,222, + 217,293,28,10,62,133,279,49,289,130, + 290,232,180,180,129,223,66,63,43,235, + 235,280,129,66,180,3,158,58,129,17, + 28,172,61,55,47,129,67,67,129,299, + 79,77,1,164,86,84,82,80,75,83, + 85,78,76,55,74,222,129,3,29,43, + 129,3,49,123,126,125,55,293,281,119, + 9,217,72,3,3,3,193,3,125,164, + 125,183,223,313,129,49,63,265,276,29, + 129,49,49,67,130,63,3,240,169,240, + 300,225,148,75,240,129,129,66,129,66, + 158,229,228,129,129,130,180,62,95,312, + 169,158,189,158,225,163,129,3,158,281, + 229,229,229,180,274,235,158,158,129,67, + 193,163,225,265,164,274,67,122,225,163, + 158,158,225,158 + }; + }; + public final static char inSymb[] = InSymb.inSymb; + public final int inSymb(int index) { return inSymb[index]; } + + public interface Name { + public final static String name[] = { + "", + "[", + "(", + "{", + ".", + ".*", + "->", + "->*", + "++", + "--", + "&", + "*", + "+", + "-", + "~", + "!", + "/", + "%", + ">>", + "<<", + "<", + ">", + "<=", + ">=", + "==", + "!=", + "^", + "|", + "&&", + "||", + "?", + ":", + "::", + "...", + "=", + "*=", + "/=", + "%=", + "+=", + "-=", + ">>=", + "<<=", + "&=", + "^=", + "|=", + ",", + "0", + "$empty", + "asm", + "auto", + "bool", + "break", + "case", + "catch", + "char", + "class", + "const", + "const_cast", + "continue", + "default", + "delete", + "do", + "double", + "dynamic_cast", + "else", + "enum", + "explicit", + "export", + "extern", + "false", + "float", + "for", + "friend", + "goto", + "if", + "inline", + "int", + "long", + "mutable", + "namespace", + "new", + "operator", + "private", + "protected", + "public", + "register", + "reinterpret_cast", + "return", + "short", + "signed", + "sizeof", + "static", + "static_cast", + "struct", + "switch", + "template", + "this", + "throw", + "try", + "true", + "typedef", + "typeid", + "typename", + "union", + "unsigned", + "using", + "virtual", + "void", + "volatile", + "wchar_t", + "while", + "integer", + "floating", + "charconst", + "stringlit", + "identifier", + "Completion", + "EndOfCompletion", + "Invalid", + "RightBracket", + "RightParen", + "RightBrace", + "SemiColon", + "ERROR_TOKEN", + "original_namespace_name", + "EOF_TOKEN", + "no_function_declarator_start", + "]", + ")", + "}", + ";", + "declaration", + "identifier_token", + "expression", + "id_expression", + "qualified_or_unqualified_name", + "unqualified_id_name", + "identifier_name", + "operator_function_id_name", + "template_id_name", + "class_name", + "nested_name_specifier", + "class_or_namespace_name", + "nested_name_specifier_with_tem" + + "plate", + "class_or_namespace_name_with_t" + + "emplate", + "postfix_expression", + "simple_type_specifier", + "pseudo_destructor_name", + "type_id", + "type_name", + "destructor_type_name", + "unary_expression", + "cast_expression", + "new_type_id", + "expression_list", + "type_specifier_seq", + "new_declarator", + "new_pointer_operators", + "ptr_operator", + "new_array_expressions", + "constant_expression", + "pm_expression", + "multiplicative_expression", + "additive_expression", + "shift_expression", + "relational_expression", + "equality_expression", + "and_expression", + "exclusive_or_expression", + "inclusive_or_expression", + "logical_and_expression", + "logical_or_expression", + "assignment_expression", + "expression_list_actual", + "statement", + "compound_statement", + "statement_seq", + "condition", + "declarator", + "simple_declaration_with_declsp" + + "ec", + "function_definition", + "declaration_seq", + "declaration_specifiers", + "simple_declaration_specifiers", + "class_declaration_specifiers", + "elaborated_declaration_specifi" + + "ers", + "enum_declaration_specifiers", + "type_name_declaration_specifie" + + "rs", + "no_type_declaration_specifier", + "cv_qualifier", + "no_type_declaration_specifiers", + "class_specifier", + "elaborated_type_specifier", + "enum_specifier", + "type_name_specifier", + "class_keyword", + "enumerator_list", + "enumerator_definition", + "namespace_name", + "init_declarator_list", + "init_declarator_complete", + "initializer", + "direct_declarator", + "ptr_operator_seq", + "function_declarator", + "basic_direct_declarator", + "array_direct_declarator", + "array_modifier", + "abstract_declarator", + "direct_abstract_declarator", + "basic_direct_abstract_declarat" + + "or", + "array_direct_abstract_declarat" + + "or", + "parameter_declaration_list", + "parameter_declaration", + "parameter_init_declarator", + "parameter_initializer", + "function_body", + "handler_seq", + "initializer_clause", + "initializer_list", + "class_head", + "access_specifier_keyword", + "member_declaration", + "member_declarator_list", + "member_declaration_list", + "member_declarator", + "constant_initializer", + "bit_field_declarator", + "base_specifier_list", + "base_specifier", + "conversion_type_id", + "conversion_declarator", + "mem_initializer_list", + "mem_initializer", + "mem_initializer_name", + "operator_id_name", + "overloadable_operator", + "template_parameter_list", + "template_parameter", + "template_identifier", + "template_argument_list", + "template_argument", + "handler", + "exception_declaration", + "type_id_list" + }; + }; + public final static String name[] = Name.name; + public final String name(int index) { return name[index]; } + + public final static int + ERROR_SYMBOL = 73, + SCOPE_UBOUND = 119, + SCOPE_SIZE = 120, + MAX_NAME_LENGTH = 37; + + public final int getErrorSymbol() { return ERROR_SYMBOL; } + public final int getScopeUbound() { return SCOPE_UBOUND; } + public final int getScopeSize() { return SCOPE_SIZE; } + public final int getMaxNameLength() { return MAX_NAME_LENGTH; } + + public final static int + NUM_STATES = 524, + NT_OFFSET = 124, + LA_STATE_OFFSET = 6004, + MAX_LA = 2147483647, + NUM_RULES = 526, + NUM_NONTERMINALS = 195, + NUM_SYMBOLS = 319, + SEGMENT_SIZE = 8192, + START_STATE = 4372, + IDENTIFIER_SYMBOL = 0, + EOFT_SYMBOL = 121, + EOLT_SYMBOL = 121, + ACCEPT_ACTION = 5134, + ERROR_ACTION = 5478; + + public final static boolean BACKTRACK = true; + + public final int getNumStates() { return NUM_STATES; } + public final int getNtOffset() { return NT_OFFSET; } + public final int getLaStateOffset() { return LA_STATE_OFFSET; } + public final int getMaxLa() { return MAX_LA; } + public final int getNumRules() { return NUM_RULES; } + public final int getNumNonterminals() { return NUM_NONTERMINALS; } + public final int getNumSymbols() { return NUM_SYMBOLS; } + public final int getSegmentSize() { return SEGMENT_SIZE; } + public final int getStartState() { return START_STATE; } + public final int getStartSymbol() { return lhs[0]; } + public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; } + public final int getEoftSymbol() { return EOFT_SYMBOL; } + public final int getEoltSymbol() { return EOLT_SYMBOL; } + public final int getAcceptAction() { return ACCEPT_ACTION; } + public final int getErrorAction() { return ERROR_ACTION; } + public final boolean isValidForParser() { return isValidForParser; } + public final boolean getBacktrack() { return BACKTRACK; } + + public final int originalState(int state) { + return -baseCheck[state]; + } + public final int asi(int state) { + return asb[originalState(state)]; + } + public final int nasi(int state) { + return nasb[originalState(state)]; + } + public final int inSymbol(int state) { + return inSymb[originalState(state)]; + } + + public final int ntAction(int state, int sym) { + return baseAction[state + sym]; + } + + public final int tAction(int state, int sym) { + int i = baseAction[state], + k = i + sym; + return termAction[termCheck[k] == sym ? k : i]; + } + public final int lookAhead(int la_state, int sym) { + int k = la_state + sym; + return termAction[termCheck[k] == sym ? k : la_state]; + } +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java new file mode 100644 index 00000000000..2f5e05c0895 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParsersym.java @@ -0,0 +1,272 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 IBM Corporation and others. +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl_v10.html +* +* Contributors: +* IBM Corporation - initial API and implementation +*********************************************************************************/ + +// This file was generated by LPG + +package org.eclipse.cdt.internal.core.dom.lrparser.cpp; + +public interface CPPNoFunctionDeclaratorParsersym { + public final static int + TK_asm = 61, + TK_auto = 50, + TK_bool = 14, + TK_break = 76, + TK_case = 77, + TK_catch = 119, + TK_char = 15, + TK_class = 62, + TK_const = 46, + TK_const_cast = 31, + TK_continue = 78, + TK_default = 79, + TK_delete = 64, + TK_do = 80, + TK_double = 16, + TK_dynamic_cast = 32, + TK_else = 122, + TK_enum = 68, + TK_explicit = 51, + TK_export = 81, + TK_extern = 17, + TK_false = 33, + TK_float = 18, + TK_for = 82, + TK_friend = 52, + TK_goto = 83, + TK_if = 84, + TK_inline = 53, + TK_int = 19, + TK_long = 20, + TK_mutable = 54, + TK_namespace = 55, + TK_new = 65, + TK_operator = 7, + TK_private = 114, + TK_protected = 115, + TK_public = 116, + TK_register = 56, + TK_reinterpret_cast = 34, + TK_return = 85, + TK_short = 21, + TK_signed = 22, + TK_sizeof = 35, + TK_static = 57, + TK_static_cast = 36, + TK_struct = 69, + TK_switch = 86, + TK_template = 28, + TK_this = 37, + TK_throw = 58, + TK_try = 74, + TK_true = 38, + TK_typedef = 59, + TK_typeid = 39, + TK_typename = 10, + TK_union = 70, + TK_unsigned = 23, + TK_using = 47, + TK_virtual = 45, + TK_void = 24, + TK_volatile = 48, + TK_wchar_t = 25, + TK_while = 75, + TK_integer = 40, + TK_floating = 41, + TK_charconst = 42, + TK_stringlit = 29, + TK_identifier = 1, + TK_Completion = 2, + TK_EndOfCompletion = 9, + TK_Invalid = 124, + TK_LeftBracket = 60, + TK_LeftParen = 3, + TK_LeftBrace = 49, + TK_Dot = 120, + TK_DotStar = 96, + TK_Arrow = 103, + TK_ArrowStar = 90, + TK_PlusPlus = 26, + TK_MinusMinus = 27, + TK_And = 8, + TK_Star = 6, + TK_Plus = 11, + TK_Minus = 12, + TK_Tilde = 5, + TK_Bang = 30, + TK_Slash = 91, + TK_Percent = 92, + TK_RightShift = 88, + TK_LeftShift = 89, + TK_LT = 43, + TK_GT = 63, + TK_LE = 93, + TK_GE = 94, + TK_EQ = 97, + TK_NE = 98, + TK_Caret = 99, + TK_Or = 100, + TK_AndAnd = 101, + TK_OrOr = 102, + TK_Question = 117, + TK_Colon = 72, + TK_ColonColon = 4, + TK_DotDotDot = 95, + TK_Assign = 67, + TK_StarAssign = 104, + TK_SlashAssign = 105, + TK_PercentAssign = 106, + TK_PlusAssign = 107, + TK_MinusAssign = 108, + TK_RightShiftAssign = 109, + TK_LeftShiftAssign = 110, + TK_AndAssign = 111, + TK_CaretAssign = 112, + TK_OrAssign = 113, + TK_Comma = 66, + TK_zero = 44, + TK_RightBracket = 118, + TK_RightParen = 87, + TK_RightBrace = 71, + TK_SemiColon = 13, + TK_ERROR_TOKEN = 73, + TK_original_namespace_name = 123, + TK_EOF_TOKEN = 121; + + public final static String orderedTerminalSymbols[] = { + "", + "identifier", + "Completion", + "LeftParen", + "ColonColon", + "Tilde", + "Star", + "operator", + "And", + "EndOfCompletion", + "typename", + "Plus", + "Minus", + "SemiColon", + "bool", + "char", + "double", + "extern", + "float", + "int", + "long", + "short", + "signed", + "unsigned", + "void", + "wchar_t", + "PlusPlus", + "MinusMinus", + "template", + "stringlit", + "Bang", + "const_cast", + "dynamic_cast", + "false", + "reinterpret_cast", + "sizeof", + "static_cast", + "this", + "true", + "typeid", + "integer", + "floating", + "charconst", + "LT", + "zero", + "virtual", + "const", + "using", + "volatile", + "LeftBrace", + "auto", + "explicit", + "friend", + "inline", + "mutable", + "namespace", + "register", + "static", + "throw", + "typedef", + "LeftBracket", + "asm", + "class", + "GT", + "delete", + "new", + "Comma", + "Assign", + "enum", + "struct", + "union", + "RightBrace", + "Colon", + "ERROR_TOKEN", + "try", + "while", + "break", + "case", + "continue", + "default", + "do", + "export", + "for", + "goto", + "if", + "return", + "switch", + "RightParen", + "RightShift", + "LeftShift", + "ArrowStar", + "Slash", + "Percent", + "LE", + "GE", + "DotDotDot", + "DotStar", + "EQ", + "NE", + "Caret", + "Or", + "AndAnd", + "OrOr", + "Arrow", + "StarAssign", + "SlashAssign", + "PercentAssign", + "PlusAssign", + "MinusAssign", + "RightShiftAssign", + "LeftShiftAssign", + "AndAssign", + "CaretAssign", + "OrAssign", + "private", + "protected", + "public", + "Question", + "RightBracket", + "catch", + "Dot", + "EOF_TOKEN", + "else", + "original_namespace_name", + "Invalid" + }; + + public final static boolean isValidForParser = true; +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java index 5c839d7952e..4377a7597b5 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java @@ -213,7 +213,7 @@ public int getKind(int i) { int kind = super.getKind(i); // There used to be a special token kind for zero used to parser pure virtual function declarations. - // But it turned out to be easier to just parse them as an init_declarator and programaticaly check + // But it turned out to be easier to just parse them as an init_ declarator and programaticaly check // for pure virtual, see consumeMemberDeclaratorWithInitializer(). //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$ @@ -1221,14 +1221,14 @@ public CPPParser(String[] mapFrom) { // constructor // Rule 221: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; // case 221: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, true); break; } // // Rule 222: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; // case 222: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // @@ -1449,654 +1449,661 @@ public CPPParser(String[] mapFrom) { // constructor } // - // Rule 312: init_declarator ::= declarator initializer + // Rule 311: init_declarator_complete ::= init_declarator // - case 312: { action.builder. + case 311: { action.builder. + consumeInitDeclaratorComplete(); break; + } + + // + // Rule 313: init_declarator ::= declarator initializer + // + case 313: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 314: declarator ::= ptr_operator_seq direct_declarator + // Rule 315: declarator ::= ptr_operator_seq direct_declarator // - case 314: { action.builder. + case 315: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 316: function_declarator ::= ptr_operator_seq direct_declarator + // Rule 317: function_declarator ::= ptr_operator_seq direct_declarator // - case 316: { action.builder. + case 317: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 320: basic_direct_declarator ::= declarator_id_name + // Rule 321: basic_direct_declarator ::= declarator_id_name // - case 320: { action.builder. + case 321: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 321: basic_direct_declarator ::= ( declarator ) + // Rule 322: basic_direct_declarator ::= ( declarator ) // - case 321: { action.builder. + case 322: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 322: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 323: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 322: { action.builder. + case 323: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 323: array_direct_declarator ::= array_direct_declarator array_modifier - // - case 323: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 324: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 324: array_direct_declarator ::= array_direct_declarator array_modifier // case 324: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 325: array_modifier ::= [ constant_expression ] + // Rule 325: array_direct_declarator ::= basic_direct_declarator array_modifier // case 325: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 326: array_modifier ::= [ constant_expression ] + // + case 326: { action.builder. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 326: array_modifier ::= [ ] + // Rule 327: array_modifier ::= [ ] // - case 326: { action.builder. + case 327: { action.builder. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 327: ptr_operator ::= * cv_qualifier_seq_opt + // Rule 328: ptr_operator ::= * cv_qualifier_seq_opt // - case 327: { action.builder. + case 328: { action.builder. consumePointer(); break; } // - // Rule 328: ptr_operator ::= & + // Rule 329: ptr_operator ::= & // - case 328: { action.builder. + case 329: { action.builder. consumeReferenceOperator(); break; } // - // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt + // Rule 330: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt // - case 329: { action.builder. + case 330: { action.builder. consumePointerToMember(); break; } // - // Rule 335: cv_qualifier ::= const - // - case 335: { action.builder. - consumeDeclSpecToken(); break; - } - - // - // Rule 336: cv_qualifier ::= volatile + // Rule 336: cv_qualifier ::= const // case 336: { action.builder. consumeDeclSpecToken(); break; } // - // Rule 338: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 337: cv_qualifier ::= volatile // - case 338: { action.builder. + case 337: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 339: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // + case 339: { action.builder. consumeQualifiedId(false); break; } // - // Rule 339: type_id ::= type_specifier_seq + // Rule 340: type_id ::= type_specifier_seq // - case 339: { action.builder. + case 340: { action.builder. consumeTypeId(false); break; } // - // Rule 340: type_id ::= type_specifier_seq abstract_declarator + // Rule 341: type_id ::= type_specifier_seq abstract_declarator // - case 340: { action.builder. + case 341: { action.builder. consumeTypeId(true); break; } // - // Rule 343: abstract_declarator ::= ptr_operator_seq + // Rule 344: abstract_declarator ::= ptr_operator_seq // - case 343: { action.builder. + case 344: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 344: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // Rule 345: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator // - case 344: { action.builder. + case 345: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 348: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 349: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 348: { action.builder. + case 349: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 349: array_direct_abstract_declarator ::= array_modifier + // Rule 350: array_direct_abstract_declarator ::= array_modifier // - case 349: { action.builder. + case 350: { action.builder. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 350: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier - // - case 350: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 351: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 351: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // case 351: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 352: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 352: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // case 352: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 353: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 353: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 353: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 354: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 353: { action.builder. + case 354: { action.builder. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt ... - // - case 354: { action.builder. - consumePlaceHolder(); break; - } - - // - // Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt ... // case 355: { action.builder. - consumeEmpty(); break; - } - - // - // Rule 356: parameter_declaration_clause ::= parameter_declaration_list , ... - // - case 356: { action.builder. consumePlaceHolder(); break; } // - // Rule 362: abstract_declarator_opt ::= $Empty + // Rule 356: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 362: { action.builder. + case 356: { action.builder. consumeEmpty(); break; } // - // Rule 363: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 357: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 357: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 363: abstract_declarator_opt ::= $Empty // case 363: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 364: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 364: { action.builder. consumeParameterDeclaration(); break; } // - // Rule 364: parameter_declaration ::= declaration_specifiers + // Rule 365: parameter_declaration ::= declaration_specifiers // - case 364: { action.builder. + case 365: { action.builder. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 366: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 367: parameter_init_declarator ::= declarator = parameter_initializer // - case 366: { action.builder. + case 367: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 368: parameter_init_declarator ::= abstract_declarator = parameter_initializer - // - case 368: { action.builder. - consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 369: parameter_init_declarator ::= = parameter_initializer + // Rule 369: parameter_init_declarator ::= abstract_declarator = parameter_initializer // case 369: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 370: parameter_init_declarator ::= = parameter_initializer + // + case 370: { action.builder. consumeDeclaratorWithInitializer(false); break; } // - // Rule 370: parameter_initializer ::= assignment_expression + // Rule 371: parameter_initializer ::= assignment_expression // - case 370: { action.builder. + case 371: { action.builder. consumeInitializer(); break; } // - // Rule 371: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // Rule 372: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body // - case 371: { action.builder. + case 372: { action.builder. consumeFunctionDefinition(false); break; } // - // Rule 372: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // Rule 373: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq // - case 372: { action.builder. + case 373: { action.builder. consumeFunctionDefinition(true); break; } // - // Rule 375: initializer ::= ( expression_list ) + // Rule 376: initializer ::= ( expression_list ) // - case 375: { action.builder. + case 376: { action.builder. consumeInitializerConstructor(); break; } // - // Rule 376: initializer_clause ::= assignment_expression + // Rule 377: initializer_clause ::= assignment_expression // - case 376: { action.builder. + case 377: { action.builder. consumeInitializer(); break; } // - // Rule 377: initializer_clause ::= { initializer_list , } - // - case 377: { action.builder. - consumeInitializerList(); break; - } - - // - // Rule 378: initializer_clause ::= { initializer_list } + // Rule 378: initializer_clause ::= { initializer_list , } // case 378: { action.builder. consumeInitializerList(); break; } // - // Rule 379: initializer_clause ::= { } + // Rule 379: initializer_clause ::= { initializer_list } // case 379: { action.builder. consumeInitializerList(); break; } // - // Rule 384: class_specifier ::= class_head { member_declaration_list_opt } + // Rule 380: initializer_clause ::= { } // - case 384: { action.builder. + case 380: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 385: class_specifier ::= class_head { member_declaration_list_opt } + // + case 385: { action.builder. consumeClassSpecifier(); break; } // - // Rule 385: class_head ::= class_keyword identifier_name_opt base_clause_opt - // - case 385: { action.builder. - consumeClassHead(false); break; - } - - // - // Rule 386: class_head ::= class_keyword template_id_name base_clause_opt + // Rule 386: class_head ::= class_keyword identifier_name_opt base_clause_opt // case 386: { action.builder. consumeClassHead(false); break; } // - // Rule 387: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt + // Rule 387: class_head ::= class_keyword template_id_name base_clause_opt // case 387: { action.builder. - consumeClassHead(true); break; + consumeClassHead(false); break; } // - // Rule 388: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt + // Rule 388: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt // case 388: { action.builder. consumeClassHead(true); break; } // - // Rule 390: identifier_name_opt ::= $Empty + // Rule 389: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt // - case 390: { action.builder. + case 389: { action.builder. + consumeClassHead(true); break; + } + + // + // Rule 391: identifier_name_opt ::= $Empty + // + case 391: { action.builder. consumeEmpty(); break; } // - // Rule 394: visibility_label ::= access_specifier_keyword : + // Rule 395: visibility_label ::= access_specifier_keyword : // - case 394: { action.builder. + case 395: { action.builder. consumeVisibilityLabel(); break; } // - // Rule 395: member_declaration ::= declaration_specifiers_opt member_declarator_list ; - // - case 395: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 396: member_declaration ::= declaration_specifiers_opt ; + // Rule 396: member_declaration ::= declaration_specifiers_opt member_declarator_list ; // case 396: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, true); break; } // - // Rule 399: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 397: member_declaration ::= declaration_specifiers_opt ; // - case 399: { action.builder. + case 397: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 400: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 400: { action.builder. consumeMemberDeclarationQualifiedId(); break; } // - // Rule 403: member_declaration ::= ERROR_TOKEN + // Rule 404: member_declaration ::= ERROR_TOKEN // - case 403: { action.builder. + case 404: { action.builder. consumeDeclarationProblem(); break; } // - // Rule 411: member_declarator ::= declarator constant_initializer + // Rule 412: member_declarator ::= declarator constant_initializer // - case 411: { action.builder. + case 412: { action.builder. consumeMemberDeclaratorWithInitializer(); break; } // - // Rule 412: member_declarator ::= bit_field_declarator : constant_expression + // Rule 413: member_declarator ::= bit_field_declarator : constant_expression // - case 412: { action.builder. + case 413: { action.builder. consumeBitField(true); break; } // - // Rule 413: member_declarator ::= : constant_expression + // Rule 414: member_declarator ::= : constant_expression // - case 413: { action.builder. + case 414: { action.builder. consumeBitField(false); break; } // - // Rule 414: bit_field_declarator ::= identifier_name + // Rule 415: bit_field_declarator ::= identifier_name // - case 414: { action.builder. + case 415: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 415: constant_initializer ::= = constant_expression + // Rule 416: constant_initializer ::= = constant_expression // - case 415: { action.builder. + case 416: { action.builder. consumeInitializer(); break; } // - // Rule 421: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 422: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // - case 421: { action.builder. + case 422: { action.builder. consumeBaseSpecifier(false, false); break; } // - // Rule 422: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name - // - case 422: { action.builder. - consumeBaseSpecifier(true, true); break; - } - - // - // Rule 423: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 423: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // case 423: { action.builder. consumeBaseSpecifier(true, true); break; } // - // Rule 424: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 424: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // case 424: { action.builder. + consumeBaseSpecifier(true, true); break; + } + + // + // Rule 425: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 425: { action.builder. consumeBaseSpecifier(true, false); break; } // - // Rule 425: access_specifier_keyword ::= private - // - case 425: { action.builder. - consumeAccessKeywordToken(); break; - } - - // - // Rule 426: access_specifier_keyword ::= protected + // Rule 426: access_specifier_keyword ::= private // case 426: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 427: access_specifier_keyword ::= public + // Rule 427: access_specifier_keyword ::= protected // case 427: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 429: access_specifier_keyword_opt ::= $Empty + // Rule 428: access_specifier_keyword ::= public // - case 429: { action.builder. + case 428: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 430: access_specifier_keyword_opt ::= $Empty + // + case 430: { action.builder. consumeEmpty(); break; } // - // Rule 430: conversion_function_id_name ::= operator conversion_type_id + // Rule 431: conversion_function_id_name ::= operator conversion_type_id // - case 430: { action.builder. + case 431: { action.builder. consumeConversionName(); break; } // - // Rule 431: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 432: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 431: { action.builder. + case 432: { action.builder. consumeTypeId(true); break; } // - // Rule 432: conversion_type_id ::= type_specifier_seq + // Rule 433: conversion_type_id ::= type_specifier_seq // - case 432: { action.builder. + case 433: { action.builder. consumeTypeId(false); break; } // - // Rule 433: conversion_declarator ::= ptr_operator_seq + // Rule 434: conversion_declarator ::= ptr_operator_seq // - case 433: { action.builder. + case 434: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 439: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 440: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 439: { action.builder. + case 440: { action.builder. consumeConstructorChainInitializer(); break; } // - // Rule 440: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 441: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 440: { action.builder. + case 441: { action.builder. consumeQualifiedId(false); break; } // - // Rule 443: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // Rule 444: operator_function_id_name ::= operator_id_name < template_argument_list_opt > // - case 443: { action.builder. + case 444: { action.builder. consumeTemplateId(); break; } // - // Rule 444: operator_id_name ::= operator overloadable_operator + // Rule 445: operator_id_name ::= operator overloadable_operator // - case 444: { action.builder. + case 445: { action.builder. consumeOperatorName(); break; } // - // Rule 487: template_declaration ::= export_opt template < template_parameter_list > declaration + // Rule 488: template_declaration ::= export_opt template < template_parameter_list > declaration // - case 487: { action.builder. + case 488: { action.builder. consumeTemplateDeclaration(); break; } // - // Rule 488: export_opt ::= export + // Rule 489: export_opt ::= export // - case 488: { action.builder. + case 489: { action.builder. consumePlaceHolder(); break; } // - // Rule 489: export_opt ::= $Empty + // Rule 490: export_opt ::= $Empty // - case 489: { action.builder. + case 490: { action.builder. consumeEmpty(); break; } // - // Rule 494: type_parameter ::= class identifier_name_opt - // - case 494: { action.builder. - consumeSimpleTypeTemplateParameter(false); break; - } - - // - // Rule 495: type_parameter ::= class identifier_name_opt = type_id + // Rule 495: type_parameter ::= class identifier_name_opt // case 495: { action.builder. - consumeSimpleTypeTemplateParameter(true); break; - } - - // - // Rule 496: type_parameter ::= typename identifier_name_opt - // - case 496: { action.builder. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 497: type_parameter ::= typename identifier_name_opt = type_id + // Rule 496: type_parameter ::= class identifier_name_opt = type_id // - case 497: { action.builder. + case 496: { action.builder. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 498: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // Rule 497: type_parameter ::= typename identifier_name_opt + // + case 497: { action.builder. + consumeSimpleTypeTemplateParameter(false); break; + } + + // + // Rule 498: type_parameter ::= typename identifier_name_opt = type_id // case 498: { action.builder. + consumeSimpleTypeTemplateParameter(true); break; + } + + // + // Rule 499: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // + case 499: { action.builder. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 499: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // Rule 500: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression // - case 499: { action.builder. + case 500: { action.builder. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 500: template_id_name ::= template_identifier < template_argument_list_opt > + // Rule 501: template_id_name ::= template_identifier < template_argument_list_opt > // - case 500: { action.builder. + case 501: { action.builder. consumeTemplateId(); break; } // - // Rule 509: explicit_instantiation ::= template declaration + // Rule 510: explicit_instantiation ::= template declaration // - case 509: { action.builder. + case 510: { action.builder. consumeTemplateExplicitInstantiation(); break; } // - // Rule 510: explicit_specialization ::= template < > declaration + // Rule 511: explicit_specialization ::= template < > declaration // - case 510: { action.builder. + case 511: { action.builder. consumeTemplateExplicitSpecialization(); break; } // - // Rule 511: try_block ::= try compound_statement handler_seq + // Rule 512: try_block ::= try compound_statement handler_seq // - case 511: { action.builder. + case 512: { action.builder. consumeStatementTryBlock(); break; } // - // Rule 514: handler ::= catch ( exception_declaration ) compound_statement + // Rule 515: handler ::= catch ( exception_declaration ) compound_statement // - case 514: { action.builder. + case 515: { action.builder. consumeStatementCatchHandler(false); break; } // - // Rule 515: handler ::= catch ( ... ) compound_statement + // Rule 516: handler ::= catch ( ... ) compound_statement // - case 515: { action.builder. + case 516: { action.builder. consumeStatementCatchHandler(true); break; } // - // Rule 516: exception_declaration ::= type_specifier_seq declarator - // - case 516: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 517: exception_declaration ::= type_specifier_seq abstract_declarator + // Rule 517: exception_declaration ::= type_specifier_seq declarator // case 517: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 518: exception_declaration ::= type_specifier_seq + // Rule 518: exception_declaration ::= type_specifier_seq abstract_declarator // case 518: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, false); break; + } + + // + // Rule 519: exception_declaration ::= type_specifier_seq + // + case 519: { action.builder. + consumeDeclarationSimple(false, false); break; } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java index 7ae9e1e234c..24796a52c7c 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParserprs.java @@ -68,386 +68,392 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 5,4,5,6,1,3,1,0,1,3, 1,1,1,1,1,6,6,5,7,6, 1,0,6,5,6,4,1,3,1,0, - 1,2,1,3,1,3,1,1,1,1, - 3,9,2,2,3,2,3,1,5,1, - 2,2,1,0,1,1,1,3,1,2, - 1,1,2,3,1,1,1,3,1,2, - 2,9,8,2,1,3,1,3,1,0, - 1,0,2,1,1,3,1,3,2,1, - 5,8,1,2,3,1,5,4,3,1, - 3,1,1,5,4,4,5,5,1,0, - 1,1,1,2,4,2,2,1,5,1, - 1,1,1,1,2,1,0,1,3,1, - 2,3,2,1,2,2,1,0,1,3, - 3,5,5,4,1,1,1,1,0,2, - 2,1,2,2,1,0,1,3,4,3, - 1,1,5,2,1,1,3,3,1,1, + 1,1,2,1,3,1,3,1,1,1, + 1,3,9,2,2,3,2,3,1,5, + 1,2,2,1,0,1,1,1,3,1, + 2,1,1,2,3,1,1,1,3,1, + 2,2,9,8,2,1,3,1,3,1, + 0,1,0,2,1,1,3,1,3,2, + 1,5,8,1,2,3,1,5,4,3, + 1,3,1,1,5,4,4,5,5,1, + 0,1,1,1,2,4,2,2,1,5, + 1,1,1,1,1,2,1,0,1,3, + 1,2,3,2,1,2,2,1,0,1, + 3,3,5,5,4,1,1,1,1,0, + 2,2,1,2,2,1,0,1,3,4, + 3,1,1,5,2,1,1,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,2,2,7,1,0,1, - 3,1,1,2,4,2,4,7,9,5, - 1,1,3,1,0,1,1,1,2,4, - 4,1,2,5,5,3,3,1,4,3, - 1,0,1,3,-238,0,0,0,0,-47, + 1,1,1,1,1,2,2,7,1,0, + 1,3,1,1,2,4,2,4,7,9, + 5,1,1,3,1,0,1,1,1,2, + 4,4,1,2,5,5,3,3,1,4, + 3,1,0,1,3,-238,0,0,0,0, + -47,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-2,0, + 0,0,0,0,0,-4,0,0,0,-12, + 0,0,0,0,0,0,0,0,-245,0, + 0,0,0,-7,0,0,0,0,0,0, + 0,-262,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-99,0,0, - 0,0,0,0,-74,0,0,0,-12,0, - 0,0,0,0,0,0,0,-245,0,0, - 0,0,-2,0,0,0,0,0,0,0, - -262,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-9,0,0,0,0,0, + -21,0,0,0,0,0,0,-3,0,-164, + 0,0,0,0,-14,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-4,0,0,0,0,0,-21, - 0,0,0,0,0,0,-3,0,-164,0, + 0,0,0,0,0,0,-17,-246,0,0, + 0,0,0,0,0,0,0,0,0,0, + -49,0,0,0,0,-24,-64,0,-68,0, + 0,0,0,0,0,-106,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-443, + 0,0,0,0,-374,0,0,0,-94,0, + 0,0,0,0,-28,0,0,0,0,0, + 0,-120,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -369,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-31,0,0,0,0,0, + -40,0,0,0,-99,0,0,-334,0,0, + 0,0,-25,0,0,0,0,0,0,0, + -197,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-13,0,0,0,0,0,0, + -139,0,0,0,-189,0,0,0,0,0, + -41,0,0,0,-110,0,0,0,0,-26, + -60,0,0,0,0,0,-116,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-48,-128,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-281,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-50,-32,0,0,0,0,0,0, + 0,0,0,0,0,0,-108,0,0,0, + 0,0,0,-288,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-102,0,0,0, + 0,0,0,0,0,0,0,-53,0,0, + 0,0,0,-35,0,0,-263,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-209,0,0,-426,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-92,0,0,0,0,0,0,-37,0, + 0,0,-472,0,0,0,0,-38,0,0, + 0,-10,0,0,-336,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-291, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-66,0,0,0,0,0,0,-39, + 0,0,0,-202,0,0,0,0,-56,0, + 0,0,-42,0,0,0,-70,0,0,0, + 0,-43,0,0,0,0,0,0,0,-379, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-74,0,0,0,0,0,-115,0, + 0,0,0,0,0,0,0,0,-58,0, + 0,0,0,0,0,0,0,-62,-142,0, + 0,0,0,-34,0,0,0,0,0,-380, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-332,-143, + 0,0,0,0,0,0,0,0,-44,-324, + 0,0,-520,0,0,0,0,-52,0,0, + 0,0,0,0,0,-73,-54,0,0,-114, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-159,0,0,0,0,0,0,0, + 0,0,0,-77,0,0,0,0,0,0, + 0,-184,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -406,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-67,-55,0,-83,-268,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-72,-61,0, + 0,0,0,0,0,0,0,-78,-69,0, + 0,-269,0,0,0,0,-79,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -76,0,0,0,0,0,0,0,0,0, + 0,-75,0,0,-270,0,0,0,0,-80, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-81,0,0, + 0,0,0,-84,-138,0,0,0,0,0, + 0,0,0,-122,0,0,0,-271,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -146,0,0,0,0,0,0,-150,0,0, + 0,-85,0,0,0,0,0,-151,0,0, + -272,0,0,0,0,-152,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-154,0,0,0,0,0,-88, + -155,0,0,0,0,0,0,0,0,-123, + 0,0,0,-273,0,0,0,0,-156,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-157,0,0,0, + 0,0,-90,-158,0,0,0,0,0,0, + 0,0,-194,-160,0,0,-274,0,0,0, + 0,-118,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-161, + 0,0,0,0,0,-91,-173,0,0,0, + 0,0,0,0,0,-196,0,0,0,-275, + 0,0,0,0,-203,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-174,0,0,0,0,0,0,0, + 0,0,0,-95,0,0,0,0,0,0, + 0,0,-276,0,0,0,0,-227,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-175,0,0,0,0, + 0,-97,0,0,0,0,0,0,0,0, + 0,-228,-176,0,0,-277,0,0,0,0, + -177,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-178,0, + 0,0,0,0,-98,-179,0,0,0,0, + 0,0,0,0,0,-180,0,0,-278,0, + 0,0,0,-215,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-181,0,0,0,0,0,-103,0,0, + 0,0,0,0,0,0,0,-236,-182,0, + 0,-376,0,0,0,0,-183,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-185,0,0,0,0,0, + 0,0,0,0,0,-188,0,0,0,0, + -358,-186,0,0,-411,0,0,0,0,-237, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-218,0,0, + 0,0,0,0,-190,0,0,0,-133,0, + 0,0,0,0,-192,0,0,-502,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -311,0,0,0,0,0,0,0,0,0, + 0,-134,0,0,0,0,-330,-193,0,0, + -223,0,0,0,0,-137,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-198, + 0,0,0,0,0,0,0,0,0,-306, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-195, + 0,0,0,-240,0,0,0,0,-124,0, + 0,0,0,0,-241,0,0,0,0,-361, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-308,0,0,0,0,0,-199,-302, + 0,0,0,0,0,0,0,0,-388,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-282,0,0, + 0,0,0,0,0,0,0,-303,0,0, + 0,0,-373,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,-304,0,0,0,0,0,-290,-201,0, + 0,0,0,0,0,0,0,-496,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-299,0,0,0, + 0,0,0,0,0,0,-145,0,0,0, + 0,-59,0,0,0,0,-204,-280,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-317,0,0,0, + 0,0,0,0,0,0,-267,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-312, + 0,0,0,0,0,0,-206,0,0,0, + -135,0,-265,0,0,0,0,-315,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-207,0,0,0,0, + 0,-119,-208,0,0,0,-266,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-442, + 0,0,0,0,0,-217,0,0,0,-264, + 0,0,0,0,-243,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-5,0, + 0,0,0,-328,0,-153,-105,0,0,0, + 0,0,0,-456,-224,0,-15,-244,-287,-409, + 0,0,0,0,-210,0,0,0,-405,0, + 0,0,0,0,-205,0,0,0,0,0, + 0,0,0,0,0,0,0,-292,0,-187, + 0,0,0,0,-256,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-400,0,0,0,0,0,-363, + -447,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-318,0,-293, + -300,0,0,0,0,0,0,0,0,-301, + 0,-305,-93,0,0,0,0,-307,0,0, + 0,0,0,0,0,0,-320,0,0,-321, + -473,0,0,0,0,0,0,0,-257,0, + 0,0,0,-494,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-258,0,0,0, + 0,-16,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-322, + 0,0,0,0,-399,0,0,0,0,-259, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-1,0,0,0,0,0,-214,0, + 0,-319,0,-65,-27,0,0,0,0,0, + -439,0,0,-371,0,0,-29,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-323,0,0,0,-457,0,0,0, + 0,0,0,0,0,0,-89,0,0,-314, + 0,0,0,0,0,0,-327,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -325,-149,0,-18,0,0,0,0,-333,0, + 0,-100,0,0,-19,0,0,0,0,-211, + 0,0,0,0,0,0,0,0,0,0, + -212,-230,0,-213,0,0,0,0,0,-337, + -222,0,0,0,0,0,0,0,0,0, + 0,0,0,-375,0,0,0,0,0,-372, + -111,0,0,-339,0,-425,0,0,0,0, + 0,-340,0,0,0,0,0,0,0,0, + 0,0,0,-427,-63,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-260,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-261,0, 0,0,0,-219,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-520,0,0,0,0, + 0,-338,0,0,0,-294,0,0,0,0, + 0,0,0,0,0,0,0,0,-341,-377, + -501,0,0,0,0,0,0,0,0,0, + 0,0,0,-251,0,0,0,0,-342,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-144,0,0,-488, + 0,0,0,0,0,0,-386,-343,0,0, + -36,0,0,0,0,0,0,0,0,0, + 0,-127,0,0,0,0,0,0,0,-412, + 0,0,-113,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-499,0,-422, + -107,0,0,0,0,0,0,0,0,-109, + -344,0,-345,0,0,-393,0,0,0,-346, + 0,0,0,0,0,0,0,-147,0,0, + 0,0,-431,0,-423,-407,0,0,0,0, + 0,0,0,0,0,0,0,0,-130,0, + 0,-200,-316,0,0,-510,0,0,0,0, + 0,-347,-82,0,0,0,0,0,-402,0, + 0,0,-410,0,-348,0,0,0,-216,0, 0,0,0,0,0,0,0,0,0,0, - 0,-77,-93,0,0,0,0,0,0,0, - 0,0,0,-106,0,0,0,0,0,0, + 0,0,0,0,0,0,-349,0,0,0, + 0,0,-45,0,0,0,0,-350,0,0, + 0,-452,0,0,-104,0,0,0,0,0, + 0,0,0,0,0,-131,-521,-481,-370,-432, 0,0,0,0,0,0,0,0,0,0, + -351,0,0,0,0,0,0,-352,0,-441, + 0,0,0,0,0,0,0,-226,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-7,0,0,0,-102,0,0, - 0,0,-128,-308,0,0,-94,0,0,0, - 0,0,0,0,0,0,0,0,0,-120, 0,0,0,0,0,0,0,0,0,0, + -353,-20,-486,0,-148,0,0,0,-289,-354, + 0,-448,-355,0,0,0,0,0,0,0, + 0,0,-252,0,0,0,0,-497,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-369,0, - 0,0,0,-13,0,0,0,0,0,0, - 0,0,-49,0,0,0,0,0,0,-184, + 0,0,0,0,0,0,0,0,-283,-22, + 0,0,-453,0,0,0,-417,0,-356,0, + 0,0,0,-46,0,0,0,0,-450,0, + 0,0,0,0,0,0,-357,0,0,0, + 0,0,-360,-362,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-364,0,0,0,0,0,0, + 0,-359,-498,-381,0,0,0,0,0,0, + -445,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-365,0,0,0,0, + -455,0,-461,-51,0,0,0,0,-235,0, + 0,0,-366,0,0,0,0,0,0,-368, + 0,0,0,0,0,-11,-395,-396,0,0, + 0,0,0,-462,0,-397,0,0,0,-398, + -136,0,0,0,0,-463,0,0,0,0, + 0,0,0,0,0,0,0,0,-460,-413, + -284,0,0,0,0,0,0,0,-500,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-73,0, + 0,0,0,0,0,0,0,0,-414,-514, + 0,-469,-512,0,0,0,0,0,0,0, + 0,0,-166,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-334,0,0,0,0,-9,0,0, - 0,0,0,0,0,-108,0,0,0,0, - 0,-14,0,0,-31,0,0,0,0,0, - -457,0,0,-194,0,0,0,0,0,0, + 0,0,0,0,0,0,-253,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-26,0,0,0, - 0,0,0,-135,0,0,0,-28,0,0, - 0,0,0,-40,0,0,0,0,0,0, - -281,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-464, + 0,-415,-420,-254,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-17, - -65,0,0,0,-101,0,0,0,0,-373, - 0,0,0,-145,0,0,0,0,0,0, - -288,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-255,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-112, - 0,0,0,0,0,0,0,0,0,-442, - -41,0,0,-16,0,0,-246,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -24,-336,0,0,0,0,0,0,0,0, - 0,0,0,0,-426,0,0,0,0,0, + 0,-367,0,-378,-505,-424,0,-428,-101,-309, + -382,0,0,0,0,0,0,0,0,0, + 0,0,0,-468,0,0,0,0,0,0, + 0,0,0,0,-57,0,0,0,0,-125, + 0,0,-437,0,0,-438,0,0,0,-444, + 0,0,0,0,0,-477,-454,-458,0,-470, + 0,-475,0,0,0,-474,0,-489,0,0, + 0,-416,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-440, + 0,0,0,0,0,0,-285,0,0,0, + 0,0,-479,0,0,0,0,0,0,-511, + 0,0,-487,0,0,-493,0,0,0,-503, + 0,0,0,0,0,0,-509,0,0,0, + 0,0,0,0,-478,0,-451,0,-121,0, + -126,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-446,0, + 0,0,0,0,0,-476,0,-71,0,0, + 0,0,0,0,0,-491,0,0,0,0, + 0,0,0,0,0,0,0,0,-492,-506, + -507,0,-513,0,0,-518,0,-480,0,0, + -297,-248,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-324,0,0, - 0,0,0,-25,0,0,0,0,-189,0, - 0,0,0,0,-32,0,0,0,0,-124, - 0,0,0,0,-35,0,0,0,0,0, - -78,0,0,0,-37,-113,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-66,0,0,0,-142, - 0,0,0,0,0,0,0,0,0,-38, - 0,0,-303,0,0,0,0,-39,-48,0, - 0,0,0,0,-291,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-516,0,0,0,-483,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-42,-43,0,0,0,0,0, - 0,0,0,-79,-44,0,0,-379,0,0, + -467,0,0,0,0,0,0,0,0,0, + 0,0,0,-296,-394,0,-485,-221,0,0, + 0,0,0,-117,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-519,-523,0,0,0,0,0,0,0, + -313,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-447,0,0,0, - 0,0,0,0,0,0,-68,-52,0,0, - 0,0,0,-83,-380,0,0,0,0,0, + 0,0,-482,0,0,0,0,0,0,0, + -515,0,0,0,0,0,0,0,0,-390, 0,0,0,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,-193,-118,0,0,-114,0,0, + 0,0,0,-132,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-54,0,0,0, - 0,0,0,0,0,0,-55,0,-268,0, - 0,0,0,-67,0,0,0,0,0,0, + 0,0,0,-522,0,0,0,-225,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-215,-139,0, - 0,0,-510,0,0,0,0,-64,0,0, - 0,-10,0,0,0,-241,-269,0,0,0, + 0,0,0,0,0,0,0,0,-429,0, + 0,0,0,0,0,0,-191,0,0,0, + 0,-383,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-61, - 0,0,0,0,0,-521,0,0,0,0, - 0,0,0,0,0,0,-69,0,0,-270, + 0,0,0,0,0,0,-525,-279,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-50,-75, - 0,0,0,0,0,0,0,0,-122,-80, - 0,0,-271,0,0,0,0,-81,0,0, + 0,-163,0,0,0,0,0,0,0,-220, + 0,0,0,0,0,0,0,0,0,-8, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-53,0,0,0,0,0,0,0,0, - 0,-123,-138,0,0,-272,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-56,0,0,0,0,0, - 0,0,0,0,-196,0,0,0,-273,0, - 0,0,0,-203,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-146,0,0,0,0,0,-58,-150,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-274,0,0,0,0,-227,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-151,0,0,0,0,0, - -62,-152,0,0,0,0,0,0,0,0, - -228,0,0,0,-275,0,0,0,0,-154, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-155,0,0, - 0,0,0,-72,-156,0,0,0,0,0, - 0,0,0,0,-157,0,0,-276,0,0, - 0,0,-236,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -158,0,0,0,0,0,-76,0,0,0, - 0,0,0,0,0,0,0,-160,0,0, - -277,0,0,0,0,-237,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-161,0,0,0,0,0,-84, - -173,0,0,0,0,0,0,0,0,0, - -174,0,0,-278,0,0,0,0,-315,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-175,0,0,0, - 0,0,-85,-176,0,0,0,0,0,0, - 0,0,0,-177,0,0,-376,0,0,0, - 0,-318,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-178, - 0,0,0,0,0,-88,-179,0,0,0, - 0,0,0,0,0,0,-180,0,0,-411, - 0,0,0,0,-181,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-159,0,0,0,0,0,0,-182, - 0,0,0,-406,0,0,0,0,0,-183, - 0,0,-502,0,0,0,0,-319,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-185,0,0,0,0, - 0,-90,-186,0,0,0,0,0,0,0, - 0,0,-190,0,0,-223,0,0,0,0, - -192,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-197,0, - 0,0,0,0,-91,-95,0,0,0,0, - 0,0,0,0,-306,0,0,0,0,-358, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-202,0,0, - 0,0,0,0,0,0,0,0,-240,0, - 0,0,0,-187,0,0,0,0,-60,0, - 0,0,0,-198,-361,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-133,0,0,0,0,0, - 0,0,0,-388,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-201,0,0,0, - 0,0,0,0,0,0,0,-204,0,0, - 0,0,-399,0,0,0,0,-97,-100,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,-98,-134,0,0,0,0,0,0, - 0,0,-496,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-63,0,0,0, - 0,-440,0,0,0,0,-59,0,0,0, - 0,-206,-280,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-103,-137,0,0,0,0,0,0,0, - 0,-267,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-207,0,0,0,0,0, - -332,0,0,0,0,0,0,-265,0,0, - 0,0,-325,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-208,-473,0,0, - 0,-266,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-218,0,0,0,0,0, - 0,0,0,0,-263,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-18,0,0, - 0,0,0,-264,0,0,0,0,-494,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-374,0,0,0, - 0,0,-5,0,0,0,0,-296,0,-153, - -224,0,0,-217,0,0,0,-209,0,0, - -15,0,-243,-409,0,0,0,0,0,-244, - 0,0,-287,0,0,-105,0,0,-205,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-292,0,0,-302,0,0,0,-256,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-400,0,0, - 0,0,0,0,-311,0,0,0,0,0, - 0,0,0,-293,0,0,0,0,0,0, - 0,-300,0,-301,0,0,0,0,0,0, - 0,0,0,-312,0,-195,-328,0,0,0, - 0,0,0,0,0,0,0,0,-214,0, - 0,0,-210,0,0,0,0,0,0,0, - 0,-257,0,0,0,0,-305,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-307,0,0,0,0,-258, - 0,0,0,0,-320,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-321,0,0,0,0,-446,0,0, - 0,0,-259,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-1,0,0,0,0, - 0,-467,0,0,0,0,-322,-27,0,0, - 0,0,0,-260,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-143,0,0,0,0,0,0, - 0,0,-469,-323,-488,0,0,0,-104,0, - 0,0,-327,0,0,0,0,0,0,0, - 0,0,-261,0,0,0,0,-339,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-340,0,0,0,-294, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-304,-341,-501,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-251,0, - 0,0,0,-149,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-226,0,0,0, - -342,0,0,0,0,-297,0,0,-512,-330, - 0,-343,0,0,0,-370,0,0,0,0, - 0,-316,-107,0,0,0,0,0,0,0, - -110,0,0,-89,0,0,0,0,0,0, - 0,-451,0,-344,0,0,0,0,0,0, - 0,0,0,-498,0,0,0,0,-29,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-412,0,-439,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-221,0, - -499,0,0,0,0,0,0,0,0,0, - -109,0,0,0,0,0,0,0,0,0, - -199,-338,0,0,0,0,0,0,0,-127, - -282,0,0,-345,0,0,-486,-346,0,0, - 0,-456,0,0,-111,0,0,-211,0,0, - 0,0,0,0,0,0,-212,0,0,0, - -70,0,0,0,0,0,0,0,0,0, - 0,0,0,-333,0,0,0,0,0,0, - 0,0,0,-19,0,0,0,0,-347,0, - 0,0,-148,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-130,0,0,-188, - 0,0,0,0,-348,0,0,-349,0,0, - 0,0,0,0,0,-119,0,0,-290,0, - -363,0,0,0,0,0,-216,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -350,0,0,0,0,0,0,0,0,0, - -36,0,0,0,0,0,0,-337,0,0, - -351,0,-213,0,0,0,0,0,0,0, - 0,0,0,-131,-222,-299,0,-375,0,0, - 0,-144,0,0,0,0,0,0,0,0, - 0,0,-317,0,0,-393,0,0,0,0, - 0,0,0,0,0,-82,0,0,0,0, - -352,0,0,-353,-354,0,0,0,0,0, - 0,-355,0,0,0,0,0,-377,0,0, - -356,0,0,-497,0,0,-200,-500,0,-407, - 0,0,0,0,0,0,0,0,0,0, - -252,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-283,-235,0,0, - -371,0,0,-402,-357,0,0,0,-45,0, - 0,0,0,0,0,-125,-360,0,0,0, - 0,-445,0,0,0,0,0,0,0,-46, - 0,0,0,0,-410,0,0,0,0,0, - 0,0,0,0,-362,0,0,0,0,0, - 0,0,0,0,-364,-247,0,0,0,-359, - 0,-381,0,0,0,-121,0,0,-514,-432, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-372,-386,0, - -365,-51,0,0,0,0,0,-405,0,0, - -366,0,0,0,0,0,0,0,0,0, - 0,0,0,-11,0,-368,0,0,0,-395, - 0,0,0,0,0,0,0,0,-147,0, - 0,0,0,-441,0,0,0,0,0,0, - 0,0,0,0,0,0,-448,-34,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-450,0,0,0,0,0,0,0,0, - 0,0,0,-396,-422,0,0,-397,0,-398, - 0,0,0,0,0,0,0,0,0,0, - -166,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-253,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-413,0,-414, - -254,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-423,0,-255,0,0,0,0, - -415,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-367,0, - -126,-425,-420,0,-424,0,0,-382,0,0, - 0,0,0,0,0,0,0,0,0,0, - -427,0,-482,0,-504,0,-428,0,0,0, - -309,-57,0,0,0,0,0,0,0,-289, - -284,0,0,0,0,0,0,0,0,0, - 0,0,0,-225,0,0,-286,-437,-438,0, - 0,0,0,0,0,0,0,0,-416,-20, - 0,0,-444,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-454,-458,-455, - -452,0,0,-285,0,0,0,0,0,-470, - 0,-22,0,0,0,0,-431,0,0,0, - -474,0,-479,0,0,0,-487,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-478,-493,-517,0,-503,0,-33,0,0, - 0,-461,0,-509,0,0,0,0,0,0, - 0,0,0,0,0,0,-481,0,0,0, - 0,0,0,0,-71,0,0,0,0,0, - 0,0,0,0,-453,0,0,0,0,0, - 0,0,0,0,0,0,-505,0,0,0, - 0,0,0,0,-480,0,-248,-460,-462,0, - -378,0,0,-463,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-313, - 0,0,0,0,0,0,0,-132,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-468, - -477,0,0,0,0,0,0,-485,-279,-433, - -295,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-390,0,0,0,0,0,0,0, - -191,0,0,0,0,-464,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-443,0,0,0,0,0,0,0, - -515,0,-434,-489,0,0,-459,0,0,0, - -475,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-429,0,0,0,0, - 0,0,0,-220,0,0,0,0,-476,0, - 0,-491,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-472,0,0,0,0, - 0,0,0,-522,-435,-436,-511,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-430,0, - 0,0,0,0,0,0,-310,0,0,0, - 0,-492,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-525,-471,-484,-490, - 0,0,0,0,0,0,-507,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-116,0,0,0,0,0,0,0,-329, - 0,0,0,0,-513,0,0,0,0,-8, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-506,0,0,0,0,0, - 0,0,0,0,0,0,0,-518,0,-516, - 0,0,0,0,0,0,0,0,0,0, 0,0,-86,0,0,0,0,0,0,0, - 0,0,0,0,-335,0,0,0,0,0, - 0,0,-519,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-87,0,0,-465, - 0,0,0,0,0,0,-523,0,0,0, + 0,0,0,0,-310,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-87,0,0,-247, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -433,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,-129, 0,0,0,0,0,0,0,0,0,0, - 0,-391,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, + 0,-329,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-430,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, @@ -475,7 +481,7 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 0,0,0,-250,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,-298,0,0,0, - 0,0,0,0,0,0,0,0,-392,0, + 0,0,0,0,0,0,0,0,-335,0, 0,0,0,0,-326,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, @@ -484,56 +490,52 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 0,0,0,0,0,0,0,0,0,0, 0,0,0,-403,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-483,0,0,0, - 0,0,0,0,0,0,0,0,0,-387, + 0,0,0,0,0,0,-387,0,0,0, + 0,0,0,0,0,0,0,0,0,-23, + 0,0,0,0,0,0,0,0,-295,0, + 0,0,0,0,0,-30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-162, + 0,-434,0,0,0,0,0,-391,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-23,0,0,0,0,0, - 0,0,-136,0,0,0,0,0,0,-117, + 0,0,0,-234,0,0,0,0,0,0, + 0,0,0,0,0,-286,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-163,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-230,0, - 0,0,0,0,0,0,-234,0,0,0, + -459,0,0,0,0,0,0,0,0,0, + 0,0,-449,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-466,0,0,0,0,0, - 0,0,0,0,0,0,-394,0,0,0, + 0,-112,0,0,0,0,0,0,0,0, + 0,0,0,0,-140,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-465,-466,0,0,0,0,0,0, + 0,0,0,-96,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-6,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-141,0,0,0,0,0,0,-392,0, + 0,0,0,0,0,0,-33,0,0,0, + 0,0,0,0,0,-401,0,0,0,0, + -408,0,0,0,0,-229,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,-418,0,0,0,0,0,-419,0,0, + 0,0,0,0,-435,0,-421,0,0,0, + 0,0,0,0,0,0,0,-508,0,-231, + 0,0,0,0,0,0,0,0,-490,0, + 0,0,0,0,0,0,0,0,-232,0, + 0,0,0,0,0,-504,0,-233,-331,0, + 0,0,0,0,0,0,0,0,-517,-384, + 0,0,0,0,0,0,0,0,-385,0, + 0,0,0,0,0,0,0,0,-404,-436, + 0,0,0,0,0,0,0,-524,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-471,0, + 0,0,0,0,0,-484,0,0,0,0, 0,0,-495,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-115,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-30,0,0,0,0,0,0,0,0, - 0,0,0,0,-449,0,0,0,0,0, - 0,0,0,0,0,0,0,-401,0,0, - 0,0,0,0,-96,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-314,0,0,0,0,0,0,0, - 0,-140,0,0,0,0,0,0,0,0, - 0,0,0,0,-6,0,0,0,0,0, - 0,0,0,0,0,0,0,-408,0,0, - 0,0,0,0,0,0,0,0,0,-141, - 0,0,-383,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-162,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-229,-242,0, - -417,0,0,0,0,0,0,0,0,-418, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-419,0,0,0, - 0,0,-421,0,0,0,0,0,0,0, - 0,-508,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-231,0,0,0,0,0,-232, - 0,-233,0,0,0,0,0,-331,0,-384, - 0,0,0,0,0,-385,0,0,0,0, - 0,0,0,-404,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-524,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, @@ -541,14 +543,7 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0 + 0,0,0,0,0 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -558,553 +553,548 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface BaseAction { public final static char baseAction[] = { - 171,5,131,87,87,34,34,66,66,39, - 39,171,171,172,172,132,132,1,1,16, + 172,5,132,87,87,34,34,66,66,39, + 39,172,172,173,173,133,133,1,1,16, 16,16,16,16,16,16,16,17,17,17, 15,11,11,9,9,9,9,9,2,67, - 67,6,6,12,12,12,12,44,44,133, - 133,134,54,54,43,18,18,18,18,18, + 67,6,6,12,12,12,12,44,44,134, + 134,135,54,54,43,18,18,18,18,18, 18,18,18,18,18,18,18,18,18,18, - 18,18,18,18,18,135,135,135,114,19, + 18,18,18,18,18,136,136,136,114,19, 19,19,19,19,19,19,19,19,19,19, - 19,19,20,20,173,173,174,174,175,138, - 138,139,139,136,136,140,137,137,21,21, + 19,19,20,20,174,174,175,175,176,139, + 139,140,140,137,137,141,138,138,21,21, 22,22,24,24,24,25,25,25,25,26, 26,26,27,27,27,28,28,28,28,28, 31,31,31,32,32,33,33,35,35,36, 36,37,37,38,38,42,42,41,41,41, 41,41,41,41,41,41,41,41,41,41, - 40,30,141,141,99,99,102,102,94,192, - 192,78,78,78,78,78,78,78,78,78, - 79,79,79,80,80,57,57,176,176,81, + 40,30,142,142,99,99,102,102,94,193, + 193,78,78,78,78,78,78,78,78,78, + 79,79,79,80,80,57,57,177,177,81, 81,81,115,115,82,82,82,82,83,83, 83,83,83,84,84,68,68,68,68,68, 68,68,49,49,49,49,49,105,105,106, - 106,50,177,23,23,23,23,23,47,47, - 88,88,88,88,88,148,148,143,143,143, - 143,143,144,144,144,145,145,145,146,146, - 146,147,147,147,89,89,89,89,89,90, + 106,50,178,23,23,23,23,23,47,47, + 88,88,88,88,88,149,149,144,144,144, + 144,144,145,145,145,146,146,146,147,147, + 147,148,148,148,89,89,89,89,89,90, 90,90,13,14,14,14,14,14,14,14, 14,14,14,14,93,119,119,119,119,119, - 117,117,117,118,118,150,150,149,149,121, - 121,151,72,72,73,73,75,76,74,52, - 46,152,152,53,51,71,71,153,153,142, - 142,122,122,86,86,154,154,63,63,63, - 59,59,58,64,64,77,77,56,56,56, - 91,91,101,100,100,61,61,60,60,55, - 55,48,103,103,103,95,95,95,96,97, - 97,97,98,98,107,107,107,109,109,108, - 108,193,193,92,92,179,179,179,179,179, - 124,45,45,156,178,178,125,125,125,125, - 180,180,29,29,116,126,126,126,126,110, - 110,120,120,120,158,159,159,159,159,159, - 159,159,159,159,183,183,181,181,182,182, - 160,160,160,160,161,184,112,111,111,185, - 185,162,162,162,162,104,104,104,186,186, - 10,187,187,188,163,155,155,164,164,165, - 166,166,7,7,8,168,168,168,168,168, - 168,168,168,168,168,168,168,168,168,168, - 168,168,168,168,168,168,168,168,168,168, - 168,168,168,168,168,168,168,168,168,168, - 168,168,168,168,168,168,168,62,65,65, - 169,169,127,127,128,128,128,128,128,128, - 3,4,170,170,167,167,129,129,129,69, - 70,85,157,157,113,113,189,189,189,130, - 130,123,123,190,190,958,38,2420,2413,1011, - 325,3940,34,1065,31,35,30,32,2693,262, - 29,27,55,1741,110,80,81,112,1377,1751, - 1784,1777,1820,1794,274,2060,1837,1827,1870,158, - 1845,1880,1906,147,1956,3179,162,148,1885,38, - 1075,36,1011,933,4005,34,1065,31,35,62, - 32,2359,38,1075,36,1011,232,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,112,1065,1751,1784,1777,1820,1794, - 1243,1317,3031,235,230,231,3492,1174,275,2313, - 38,1075,36,1011,1440,4543,34,1065,31,35, - 30,32,1708,262,29,27,55,1741,90,80, - 81,242,245,248,251,2964,2057,38,1075,36, - 1011,930,4778,34,1065,31,35,30,32,385, - 417,499,1952,853,38,291,2423,3236,2411,994, - 2358,3530,3562,4505,1567,38,1075,36,1011,2393, - 4543,34,1065,31,35,1734,32,1708,262,29, - 27,55,1741,110,80,81,112,341,1751,1784, - 1777,1820,1794,66,45,1837,1827,1870,1377,1845, - 1880,1906,147,1812,2579,506,148,1893,38,1075, - 36,1011,2400,444,34,1065,2134,35,428,507, - 1567,38,1075,36,1011,2393,4543,34,1065,31, - 35,1734,32,1708,262,29,27,55,1741,110, - 80,81,112,341,1751,1784,1777,1820,1794,853, - 3345,1837,1827,1870,158,1845,1880,1906,147,764, - 3200,506,148,853,38,2133,2098,1011,2400,298, - 1768,38,1075,36,1011,507,4543,34,1065,31, - 35,30,32,1708,262,29,27,55,1741,110, - 80,81,112,502,1751,1784,1777,1820,1794,325, - 2514,1837,1827,1870,2045,1845,1880,1906,147,386, - 417,146,148,2049,38,1075,36,1011,1052,4778, - 34,1065,31,35,64,32,853,38,501,277, - 1011,1612,1217,321,1913,1478,38,1440,46,1011, - 431,2478,45,1065,2174,38,1075,36,1011,502, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,112,158,1751,1784, - 1777,1820,1794,2187,1812,1837,1827,1870,1378,1845, - 1880,1906,147,2177,1086,162,148,2077,411,4027, - 1913,1835,38,1075,36,1011,2393,4543,34,1065, - 31,35,1734,32,1708,262,29,27,55,1741, - 110,80,81,112,341,1751,1784,1777,1820,1794, - 595,1192,1837,1827,1870,2484,1845,1880,1906,147, - 853,3465,506,148,853,38,501,281,1011,2400, - 384,1634,38,1075,36,1011,507,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,112,322,1751,1784,1777,1820,1794, - 27,521,1837,1827,1870,854,1845,1880,1906,147, - 2231,27,376,148,1181,2423,2824,2017,38,1075, - 36,1011,3299,4005,34,1065,31,35,61,32, - 1274,70,2049,38,1075,36,1011,379,4778,34, - 1065,31,35,63,32,1706,38,1075,36,1011, - 503,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,2548,1751, - 1784,1777,1820,1794,244,232,1837,1827,1870,1875, - 1845,1880,1906,147,3167,418,376,148,47,1562, - 1893,38,1075,36,1011,505,380,34,1065,43, - 35,1527,244,230,231,1066,1902,38,1075,36, - 1011,377,4543,34,1065,31,35,30,32,1708, - 262,29,27,55,1741,110,80,81,112,312, - 1751,1784,1777,1820,1794,2093,331,1837,1827,1870, - 1377,1845,1880,1906,147,186,2683,376,148,3560, - 636,3118,65,1893,38,1075,36,1011,1163,27, - 34,1065,3259,35,4685,2174,38,1075,36,1011, - 381,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,486,1751, - 1784,1777,1820,1794,1146,1180,1837,1827,1870,2478, - 1845,1880,1906,147,325,1235,370,148,2174,38, - 1075,36,1011,323,4543,34,1065,31,35,30, - 32,1708,262,29,27,55,1741,110,80,81, - 112,374,1751,1784,1777,1820,1794,2702,485,1837, - 1827,1870,2393,1845,1880,1906,147,1016,332,370, - 148,388,417,3932,1070,2174,38,1075,36,1011, - 341,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,158,1751, - 1784,1777,1820,1794,3688,3711,1837,1827,1870,369, - 1845,1880,1906,147,325,2456,370,148,1964,38, - 1075,36,1011,330,4543,34,1065,31,35,30, - 32,1708,262,29,27,55,1741,110,80,81, - 112,1070,1751,1784,1777,1820,1794,1158,375,1837, - 1827,1870,368,1845,1880,1949,168,1458,4637,2174, - 38,1075,36,1011,157,4543,34,1065,31,35, - 30,32,1708,262,29,27,55,1741,110,80, - 81,112,1070,1751,1784,1777,1820,1794,2454,1551, - 1837,1827,1870,2478,1845,1880,1906,147,673,366, - 159,148,1352,1185,1175,326,2454,2174,38,1075, - 36,1011,1535,4543,34,1065,31,35,30,32, - 1708,262,29,27,55,1741,110,80,81,112, - 1168,1751,1784,1777,1820,1794,2478,221,1837,1827, - 1870,324,1845,1880,1906,147,3819,63,158,148, - 2174,38,1075,36,1011,1133,4543,34,1065,31, - 35,30,32,1708,262,29,27,55,1741,110, - 80,81,112,1070,1751,1784,1777,1820,1794,27, - 679,1837,1827,1870,548,1845,1880,1906,147,1527, - 1129,157,148,2174,38,1075,36,1011,1457,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,112,353,1751,1784,1777, - 1820,1794,1017,521,1837,1827,1870,708,1845,1880, - 1906,147,1527,1649,156,148,2174,38,1075,36, - 1011,764,4543,34,1065,31,35,30,32,1708, - 262,29,27,55,1741,110,80,81,112,352, - 1751,1784,1777,1820,1794,27,521,1837,1827,1870, - 2689,1845,1880,1906,147,1527,448,155,148,2174, - 38,1075,36,1011,325,4543,34,1065,31,35, - 30,32,1708,262,29,27,55,1741,110,80, - 81,112,1355,1751,1784,1777,1820,1794,27,1690, - 1837,1827,1870,674,1845,1880,1906,147,3009,447, - 154,148,2174,38,1075,36,1011,1717,4543,34, - 1065,31,35,30,32,1708,262,29,27,55, - 1741,110,80,81,112,237,1751,1784,1777,1820, - 1794,27,1530,1837,1827,1870,2891,1845,1880,1906, - 147,2138,325,153,148,2174,38,1075,36,1011, - 1222,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,1750,1751, - 1784,1777,1820,1794,27,1764,1837,1827,1870,3006, - 1845,1880,1906,147,350,2047,152,148,2174,38, - 1075,36,1011,325,4543,34,1065,31,35,30, - 32,1708,262,29,27,55,1741,110,80,81, - 112,2103,1751,1784,1777,1820,1794,27,351,1837, - 1827,1870,730,1845,1880,1906,147,4395,1611,151, - 148,2174,38,1075,36,1011,325,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,112,1563,1751,1784,1777,1820,1794, - 27,2493,1837,1827,1870,3186,1845,1880,1906,147, - 28,1093,150,148,2174,38,1075,36,1011,325, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,112,1240,1751,1784, - 1777,1820,1794,27,2368,1837,1827,1870,3461,1845, - 1880,1906,147,348,1316,149,148,2174,38,1075, - 36,1011,325,4543,34,1065,31,35,30,32, - 1708,262,29,27,55,1741,110,80,81,112, - 2004,1751,1784,1777,1820,1794,27,2012,1837,1827, - 1870,2910,1845,1880,1906,147,74,1005,163,148, - 2174,38,1075,36,1011,1482,4543,34,1065,31, - 35,30,32,1708,262,29,27,55,1741,110, - 80,81,112,158,1751,1784,1777,1820,1794,4567, - 1477,1837,1827,1870,2131,1845,1880,1906,147,3773, - 1085,144,148,2267,38,1075,36,1011,325,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,112,1224,1751,1784,1777, - 1820,1794,27,498,1837,1827,1870,2987,1845,1880, - 1906,147,73,846,193,148,2359,38,1075,36, - 1011,1959,4543,34,1065,31,35,30,32,1708, - 262,29,27,55,1741,110,80,81,112,1414, - 1751,1784,1777,1820,1794,27,673,1837,1827,1870, - 3064,1845,1880,1949,168,2359,38,1075,36,1011, - 2095,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,2040,1751, - 1784,1777,1820,1794,3932,304,1837,1827,1870,2073, - 1845,1880,1949,168,853,38,501,279,1011,853, - 38,1054,383,1011,1321,2359,38,1075,36,1011, - 290,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,274,1751, - 1784,1777,1820,1794,331,673,1837,1827,1870,97, - 1845,1880,1949,168,2359,38,1075,36,1011,413, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,112,1703,1751,1784, - 1777,1820,1794,512,303,1837,1827,1870,1002,1845, - 1880,1949,168,853,38,501,3518,1011,27,1147, - 38,280,276,1120,2359,38,1075,36,1011,3441, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,112,2863,1751,1784, - 1777,1820,1794,1307,673,1837,1827,1870,2674,1845, - 1880,1949,168,2405,38,1075,36,1011,412,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,112,944,1751,1784,1777, - 1820,1794,4938,300,1837,1827,1870,897,1845,1880, - 1949,168,2142,38,501,277,1011,853,38,1054, - 383,1011,1762,2359,38,1075,36,1011,415,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,112,54,1751,1784,1777, - 1820,1794,27,760,1837,1827,1870,2973,1845,3175, - 1228,2813,2359,38,1075,36,1011,3239,4543,34, - 1065,31,35,30,32,1708,262,29,27,55, - 1741,110,80,81,112,1879,1751,1784,1777,1820, - 1794,27,397,1837,1827,1870,854,3112,2359,38, - 1075,36,1011,325,4543,34,1065,31,35,30, - 32,1708,262,29,27,55,1741,110,80,81, - 112,3130,1751,1784,1777,1820,1794,2278,2681,1837, - 1827,3104,2359,38,1075,36,1011,58,4543,34, - 1065,31,35,30,32,1708,262,29,27,55, - 1741,110,80,81,112,1451,1751,1784,1777,1820, - 1794,3877,2821,1837,3105,2359,38,1075,36,1011, - 435,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,2854,1751, - 1784,1777,1820,3051,2359,38,1075,36,1011,2231, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,112,1624,1751,1784, - 1777,1820,3101,2451,38,1054,383,1011,1833,2638, - 1888,853,1569,2393,1844,3514,237,262,2079,38, - 389,2571,75,1179,592,38,1054,383,1011,232, - 1295,2429,274,2540,239,262,853,38,282,1131, - 38,1075,36,1011,3721,3041,34,1065,31,35, - 337,32,2490,274,3462,673,247,230,231,2359, - 38,1075,36,1011,232,4543,34,1065,31,35, - 30,32,1708,262,29,27,55,1741,110,80, - 81,112,232,1751,1784,1777,2834,349,853,38, - 3519,235,230,231,299,158,275,318,1324,320, - 358,4082,313,1116,2505,342,1621,1587,347,240, - 230,231,2545,340,2577,2799,349,3533,3560,242, - 245,248,251,2964,158,2494,27,158,2502,930, - 4389,951,286,4678,342,1621,1587,347,77,853, - 38,291,2442,2079,38,389,2411,994,2358,3530, - 3562,4505,2359,38,1075,36,1011,940,4543,34, - 1065,31,35,30,32,1708,262,29,27,55, - 1741,110,80,81,112,1660,1751,1784,1777,2914, - 2359,38,1075,36,1011,1783,4543,34,1065,31, - 35,30,32,1708,262,29,27,55,1741,110, - 80,81,112,2183,1751,1784,1777,2918,2142,38, - 501,3571,1011,2359,38,1075,36,1011,363,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,112,1416,1751,1784,1777, - 2969,2393,853,38,501,3593,1011,2276,766,38, - 1054,383,1011,2504,2359,38,1075,36,1011,229, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,112,54,1751,1784, - 2995,206,215,4765,1377,205,212,213,214,216, - 2445,1228,1390,2837,2307,2079,38,389,207,1680, - 1569,704,2009,2492,15,208,209,210,211,292, - 293,294,295,2359,38,1075,36,1011,2648,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,112,2650,1751,1784,2998, - 1684,38,1075,36,1011,3232,3041,34,1065,31, - 35,337,32,1553,1949,1752,38,1075,36,1011, - 3721,3041,34,1065,31,35,337,32,13,2359, - 38,1075,36,1011,1812,4543,34,1065,31,35, - 30,32,1708,262,29,27,55,1741,110,80, - 81,112,395,1751,2708,387,417,2083,318,1324, - 320,1979,2812,313,1116,3604,2512,573,3284,2837, - 1527,2393,2324,318,1324,320,2125,349,313,1116, - 285,854,1520,1147,38,278,809,2393,3932,2429, - 92,1624,349,106,2629,342,1621,1587,347,2393, - 283,516,64,1759,2067,2429,160,854,2764,1605, - 342,1621,1587,347,2681,201,3434,229,517,1208, - 38,1075,36,1011,1227,3625,34,1065,31,35, - 337,32,160,2266,349,2678,38,278,330,206, - 215,4765,166,205,212,213,214,216,373,2541, - 2004,1624,342,1621,1587,347,207,4454,493,704, - 1759,897,217,208,209,210,211,292,293,294, - 295,27,1527,4743,357,330,3500,318,1324,320, - 2659,27,313,1116,2399,2393,1970,2734,2509,3086, - 2088,2192,2095,491,492,245,38,441,1812,4070, - 713,3751,2632,229,3617,931,93,1812,515,106, - 2941,1342,38,1075,36,1011,3299,3625,34,1065, - 31,35,337,32,325,206,215,4765,76,205, - 212,213,214,216,941,38,1307,1482,1011,2682, - 3262,307,207,1680,1569,704,513,371,217,208, - 209,210,211,292,293,294,295,2720,91,56, - 1624,1358,2393,54,305,1293,2478,331,1300,318, - 1324,320,1407,297,316,1116,375,1228,773,27, - 229,673,49,1562,3661,4070,2928,1056,38,2547, - 36,1011,1227,3625,34,1065,31,35,337,32, - 513,2449,206,215,4765,512,205,212,213,214, - 216,1088,38,1054,383,1011,2990,373,325,207, - 183,2595,704,1812,435,217,208,209,210,211, - 292,293,294,295,2751,1812,27,3127,325,2393, - 54,4793,1051,330,1439,318,1324,320,3814,2917, - 313,1116,57,27,1228,1234,325,229,4597,434, - 1923,1931,4070,2937,285,3096,853,38,1054,383, - 1011,2675,439,714,1990,2015,327,333,2941,206, - 215,4765,1578,205,212,213,214,216,1692,296, - 3567,2146,3065,1605,1527,274,207,375,1624,704, - 325,284,217,208,209,210,211,292,293,294, - 295,2359,38,1075,36,1011,2911,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,112,94,1751,2726,175,847,4070, - 3053,673,525,854,2556,1340,2325,408,2565,1361, - 38,1054,383,1011,378,514,324,2544,3127,338, - 229,2393,853,38,1054,383,1011,160,164,2743, - 1486,38,1054,383,1011,2029,184,3011,54,2429, - 199,101,204,215,4765,2612,203,212,213,214, - 216,274,1228,52,173,2669,847,332,333,54, - 1,854,1520,663,419,525,1016,2393,3932,1527, - 325,1070,3932,1228,52,187,171,172,174,175, - 176,177,178,229,717,2429,164,2404,673,673, - 160,2707,1533,38,1054,383,1011,2273,27,184, - 3011,2709,1070,990,3658,204,215,4765,357,203, - 212,213,214,216,1492,78,2715,173,330,2393, - 2747,54,330,1544,2088,2192,185,198,399,853, - 38,1054,383,1011,325,1228,52,229,188,171, - 172,174,175,176,177,178,2099,325,853,38, - 1054,383,1011,3468,357,3048,102,1988,54,206, - 215,4765,325,205,212,213,214,216,3710,3086, - 2088,2192,51,3230,2772,673,207,37,2801,704, - 2803,3592,15,208,209,210,211,292,293,294, - 295,2359,38,2420,2413,1011,3655,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,88,202,2359,38,1075,36,1011, - 37,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,112,2808,2744, - 88,2359,38,1075,36,1011,14,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,112,673,2791,2359,38,1075,36, - 1011,2671,4543,34,1065,31,35,30,32,1708, - 262,29,27,55,1741,110,80,81,112,262, - 2802,2512,27,2795,525,2641,2393,2922,1252,38, - 1075,36,1011,200,3625,34,1065,31,35,337, - 32,27,229,64,2429,64,851,2645,854,160, - 854,1051,766,38,1054,383,1011,3814,184,3011, - 375,506,38,441,204,215,4765,3751,203,212, - 213,214,216,160,1016,160,173,847,2829,2830, - 3932,54,854,166,331,166,318,1324,320,349, - 2868,314,1116,2260,525,1228,52,3463,171,172, - 174,175,176,177,178,349,2426,164,2831,420, - 325,673,229,493,853,38,1054,383,1011,160, - 2799,3127,2882,344,1621,1587,347,27,184,3011, - 330,2353,3787,2857,204,215,4765,2862,203,212, - 213,214,216,440,3718,3647,173,3980,490,492, - 3483,232,436,2872,64,2325,2651,525,2008,854, - 329,333,325,2393,2873,4743,5467,180,171,172, - 174,175,176,177,178,229,3068,673,250,230, - 231,341,160,232,160,1088,38,1054,383,1011, - 2255,184,3011,5467,166,27,72,204,215,4765, - 4477,203,212,213,214,216,662,673,5467,173, - 253,230,231,420,54,523,3485,27,27,325, - 525,375,854,3910,325,438,1923,1931,1228,1275, - 191,171,172,174,175,176,177,178,229,3096, - 853,38,1054,383,1011,160,3594,160,2025,38, - 1054,383,1011,71,184,3011,4037,2902,70,5467, - 204,215,4765,5467,203,212,213,214,216,421, - 27,2489,173,5467,5467,2369,2745,54,610,27, - 27,1016,3127,525,854,854,5467,3932,5467,5467, - 5467,1228,52,3596,171,172,174,175,176,177, - 178,229,2529,853,38,1054,383,1011,160,160, - 160,1088,38,1054,383,1011,325,184,3011,3121, - 3602,3481,333,204,215,4765,444,203,212,213, - 214,216,424,1016,5467,173,5467,330,5467,3932, - 54,697,5467,27,27,430,525,375,854,1353, - 69,325,5467,5467,1228,52,194,171,172,174, - 175,176,177,178,229,3554,853,38,1054,383, - 1011,160,3468,160,1088,38,1054,383,1011,325, - 184,3011,325,3659,5467,2881,204,215,4765,3836, - 203,212,213,214,216,423,2475,5467,173,5467, - 5467,5467,3932,54,784,27,27,27,3127,525, - 854,854,1396,3128,5467,5467,60,1228,52,190, - 171,172,174,175,176,177,178,229,3680,853, - 38,1054,383,1011,160,160,160,1088,38,1054, - 383,1011,325,184,3011,3664,3756,3784,333,204, - 215,4765,3836,203,212,213,214,216,422,5467, - 5467,173,5467,5467,5467,5467,54,871,27,27, - 375,98,525,854,854,5467,59,325,5467,5467, - 1228,52,197,171,172,174,175,176,177,178, - 229,3743,853,38,1054,383,1011,160,160,160, - 1459,38,1054,383,1011,325,184,3011,3124,3917, - 2599,3978,204,215,4765,2393,203,212,213,214, - 216,54,5467,5467,173,673,5467,5467,5467,54, - 5467,3127,5467,229,100,1228,2014,5467,673,105, - 325,5467,5467,1228,3174,196,171,172,174,175, - 176,177,178,2781,2009,206,215,4765,2393,205, - 212,213,214,216,222,1486,38,1054,383,1011, - 3847,333,207,672,3844,704,229,195,509,208, - 209,210,211,292,293,294,295,2812,5467,5467, - 847,5467,2393,5467,54,854,5467,325,206,215, - 4765,5467,205,212,213,214,216,519,1228,3205, - 229,5467,5467,5467,5467,207,5467,5467,704,2414, - 164,510,208,209,210,211,292,293,294,295, - 2690,3907,206,215,4765,2393,205,212,213,214, - 216,5467,1088,38,1054,383,1011,5467,5467,207, - 5467,5467,704,229,5467,306,208,209,210,211, - 292,293,294,295,5467,5467,5467,5467,5467,5467, - 5467,54,5467,5467,5467,206,215,4765,5467,205, - 212,213,214,216,5467,1228,52,5467,5467,3822, - 5467,5467,207,5467,5467,704,3806,5467,218,208, - 209,210,211,292,293,294,295,2359,38,1075, - 36,1011,5467,4543,34,1065,31,35,30,32, - 1708,262,29,27,55,1741,110,80,81,89, - 2359,38,1075,36,1011,5467,4543,34,1065,31, - 35,30,32,1708,262,29,27,55,1741,110, - 80,81,87,2359,38,1075,36,1011,5467,4543, - 34,1065,31,35,30,32,1708,262,29,27, - 55,1741,110,80,81,86,2359,38,1075,36, - 1011,5467,4543,34,1065,31,35,30,32,1708, - 262,29,27,55,1741,110,80,81,85,2359, - 38,1075,36,1011,5467,4543,34,1065,31,35, - 30,32,1708,262,29,27,55,1741,110,80, - 81,84,2359,38,1075,36,1011,5467,4543,34, - 1065,31,35,30,32,1708,262,29,27,55, - 1741,110,80,81,83,2359,38,1075,36,1011, - 5467,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,82,2220,38, - 1075,36,1011,5467,4543,34,1065,31,35,30, - 32,1708,262,29,27,55,1741,110,80,81, - 108,2359,38,1075,36,1011,5467,4543,34,1065, - 31,35,30,32,1708,262,29,27,55,1741, - 110,80,81,114,2359,38,1075,36,1011,5467, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,113,2841,5467,5467, - 5467,5467,2393,5467,5467,5467,5467,5467,5467,1088, - 38,1054,383,1011,5467,2359,38,1075,36,1011, - 229,4543,34,1065,31,35,30,32,1708,262, - 29,27,55,1741,110,80,81,111,54,5467, - 5467,5467,206,215,4765,5467,205,212,213,214, - 216,5467,1228,52,5467,5467,5467,5467,5467,207, - 5467,5467,704,3869,5467,487,208,209,210,211, - 292,293,294,295,2359,38,1075,36,1011,5467, - 4543,34,1065,31,35,30,32,1708,262,29, - 27,55,1741,110,80,81,109,1616,38,1075, - 36,1011,1227,3041,34,1065,31,35,337,32, - 1308,38,2547,36,1011,1227,3041,34,1065,31, - 35,337,32,5467,5467,2513,38,1054,383,1011, - 5467,2638,5467,853,38,1054,383,1011,238,262, - 1823,38,1075,36,1011,1227,3041,34,1065,31, - 35,337,32,5467,274,318,1324,320,5467,5467, - 313,1116,54,1197,38,1054,383,1011,318,1324, - 320,5467,5467,313,1116,5467,1228,1348,5467,27, - 5467,5467,5467,931,2393,5467,232,853,38,1054, - 383,1011,54,5467,5467,5467,714,5467,318,1324, - 320,5467,341,313,1116,847,1228,1366,5467,5467, - 854,5467,5467,236,230,231,54,324,275,307, - 5467,5467,2393,847,5467,5467,931,2400,854,5467, - 1228,1048,5467,5467,2575,164,5467,5467,5467,3965, - 2429,243,246,249,252,2964,5467,5467,5467,5467, - 1407,930,5467,164,5467,5467,5467,1368,38,1075, - 36,1011,308,3625,34,1065,31,35,337,32, - 409,2565,1823,38,1075,36,1011,1227,3041,34, - 1065,31,35,337,32,1823,38,1075,36,1011, - 1227,3041,34,1065,31,35,337,32,853,38, - 1054,383,1011,5467,3882,1027,5467,5467,5467,357, - 2393,4513,5467,331,5467,318,1324,320,5467,5467, - 314,1116,3945,5467,3240,2088,2192,54,229,5467, - 318,1324,320,5467,5467,313,1116,5467,5467,5467, - 5467,1228,2865,318,1324,320,5467,5467,313,1116, - 2223,400,4752,5467,5467,5467,5467,5467,809,5467, - 5467,5467,5467,1696,5467,5467,5467,401,5467,3932, - 704,3573,1443,38,1075,36,1011,3017,3041,34, - 1065,31,35,337,32,1815,38,1075,36,1011, - 2849,3041,34,1065,31,35,337,32,853,38, - 1054,383,1011,5467,5467,5467,5467,5467,5467,1493, - 1104,396,5467,2800,5467,2393,4513,5467,2393,331, - 5467,5467,5467,5467,5467,5467,5467,54,5467,5467, - 315,1085,320,229,5467,5467,2429,5467,5467,5467, - 349,1228,1366,315,1085,320,5467,27,5467,5467, - 5467,5467,525,5467,5467,2223,400,4752,344,1621, - 1587,347,5467,402,404,5467,5467,5467,27,27, - 341,27,401,525,525,704,525,160,5467,5467, - 27,5467,5467,5467,5467,525,884,1716,4790,5467, - 5467,341,341,5467,341,2400,5467,5467,160,160, - 5467,160,1673,341,5467,493,5467,64,1888,1716, - 160,192,525,27,1493,5467,2400,2400,525,4665, - 192,5467,2793,1802,2954,5467,888,2393,4665,5467, - 3635,5467,5467,5467,5467,5467,341,160,5467,888, - 490,492,5467,160,27,341,5467,166,5467,2393, - 27,5467,27,192,5467,2393,520,2393,2551,5467, - 27,4665,5467,2393,5467,2393,27,341,402,405, - 2400,2393,5467,341,27,341,5467,523,5467,2393, - 5467,341,3487,341,5467,5467,3317,5467,27,341, - 5467,5467,2400,2393,5467,3332,5467,341,2400,2593, - 2400,5467,5467,5467,5467,2637,1874,2684,2400,3551, - 5467,341,5467,5467,2400,497,5467,5467,5467,5467, - 5467,495,2400,5467,5467,5467,5467,5467,3550,3304, - 5467,5467,5467,5467,5467,5467,2400,5467,5467,5467, - 5467,5467,5467,524,5467,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,2832,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,4013,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,5467,5467,5467,5467,5467,5467,5467,5467, - 5467,5467,3268,5467,0,489,3950,0,228,1, - 0,42,5485,0,42,5484,0,1,4652,0, - 1,845,0,1,5485,42,0,1,5484,42, - 0,1,3598,0,1,3318,0,5701,241,0, - 5700,241,0,5803,241,0,5802,241,0,5728, - 241,0,5727,241,0,5726,241,0,5725,241, - 0,5724,241,0,5723,241,0,5722,241,0, - 5721,241,0,5740,241,0,5739,241,0,5738, - 241,0,5737,241,0,5736,241,0,5735,241, - 0,5734,241,0,5733,241,0,5732,241,0, - 5731,241,0,5730,241,0,42,241,5485,0, - 42,241,5484,0,241,5508,0,501,382,0, - 53,5485,0,53,5484,0,1,5795,0,1, - 1654,0,41,5485,0,41,5484,0,442,1697, - 0,501,33,0,5485,53,0,5484,53,0, - 1740,317,0,5485,42,0,5484,42,0,501, - 44,0,1,432,0,446,1449,0,445,1492, - 0,52,40,0,228,220,0,228,1,5508, - 0,228,1,42,0,228,407,0,40,5485, - 0,40,5484,0,48,5506,0,48,40,0, - 1,1863,0,1,5740,0,1,5739,0,1, - 5738,0,1,5737,0,1,5736,0,1,5735, - 0,1,5734,0,1,5733,0,1,5732,0, - 1,5731,0,1,5730,0,1,2408,0,1, - 2533,0,228,219,0,5477,398,0,5476,398, - 0,228,406,0,30,508,0,130,2570,0, - 5475,1,0,5795,433,0,1654,433,0,5506, - 50,0,50,40,0,2261,95,0,383,36, - 0,36,383,0,382,33,0,33,382,0, - 501,33,382,0,3318,42,0,228,1,3215, - 0,5477,228,0,5476,228,0,1,5508,0, - 1,42,0,237,3168,0,132,2570,0,131, - 2570,0,3410,228,0,1,96,0,8,10, - 0,40,5485,2,0,40,5484,2,0,5485, - 39,0,5484,39,0,5795,99,0,1654,99, - 0,279,4030,0,189,3781,0 + 117,117,117,118,118,151,151,150,150,121, + 121,152,72,72,73,73,75,76,74,52, + 46,153,153,53,51,71,71,154,154,143, + 143,122,123,123,86,86,155,155,63,63, + 63,59,59,58,64,64,77,77,56,56, + 56,91,91,101,100,100,61,61,60,60, + 55,55,48,103,103,103,95,95,95,96, + 97,97,97,98,98,107,107,107,109,109, + 108,108,194,194,92,92,180,180,180,180, + 180,125,45,45,157,179,179,126,126,126, + 126,181,181,29,29,116,127,127,127,127, + 110,110,120,120,120,159,160,160,160,160, + 160,160,160,160,160,184,184,182,182,183, + 183,161,161,161,161,162,185,112,111,111, + 186,186,163,163,163,163,104,104,104,187, + 187,10,188,188,189,164,156,156,165,165, + 166,167,167,7,7,8,169,169,169,169, + 169,169,169,169,169,169,169,169,169,169, + 169,169,169,169,169,169,169,169,169,169, + 169,169,169,169,169,169,169,169,169,169, + 169,169,169,169,169,169,169,169,62,65, + 65,170,170,128,128,129,129,129,129,129, + 129,3,4,171,171,168,168,130,130,130, + 69,70,85,158,158,113,113,190,190,190, + 131,131,124,124,191,191,958,38,2418,2375, + 666,325,4142,34,934,31,35,30,32,2697, + 262,29,27,55,1647,110,80,81,112,933, + 1683,1743,1726,1769,1751,274,1065,1786,1776,1829, + 158,1812,1837,1855,147,1694,3073,162,148,1887, + 38,994,36,666,45,4449,34,934,31,35, + 62,32,2345,38,994,36,666,232,3992,34, + 934,31,35,30,32,1614,262,29,27,55, + 1647,110,80,81,112,1052,1683,1743,1726,1769, + 1751,1243,1356,3078,235,230,231,3525,1174,275, + 2299,38,994,36,666,1217,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,90, + 80,81,242,245,248,251,2725,595,2010,38, + 994,36,666,647,4449,34,934,31,35,61, + 32,853,38,1775,1732,666,70,673,2419,1192, + 2417,2582,2714,3152,3200,4550,1567,38,994,36, + 666,2399,3992,34,934,31,35,1640,32,1614, + 262,29,27,55,1647,110,80,81,112,342, + 1683,1743,1726,1769,1751,66,221,1786,1776,1829, + 1016,1812,1837,1855,147,1624,2953,507,148,2525, + 38,994,36,666,2406,1378,34,934,1952,35, + 2795,508,1567,38,994,36,666,2399,3992,34, + 934,31,35,1640,32,1614,262,29,27,55, + 1647,110,80,81,112,342,1683,1743,1726,1769, + 1751,853,2970,1786,1776,1829,1063,1812,1837,1855, + 147,824,2776,507,148,1478,38,1442,46,666, + 2406,1086,45,934,65,1377,4087,508,2117,38, + 994,36,666,244,4791,34,934,31,35,64, + 32,2160,38,994,36,666,503,3992,34,934, + 31,35,30,32,1614,262,29,27,55,1647, + 110,80,81,112,158,1683,1743,1726,1769,1751, + 3214,1551,1786,1776,1829,2059,1812,1837,1855,147, + 3199,27,162,148,1536,1624,2687,1872,313,98, + 158,853,38,793,384,666,2222,1948,38,994, + 36,666,503,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 274,1683,1743,1726,1769,1751,27,1812,1786,1776, + 1829,4714,1812,1837,1855,147,386,418,377,148, + 2169,186,374,1872,1835,38,994,36,666,2399, + 3992,34,934,31,35,1640,32,1614,262,29, + 27,55,1647,110,80,81,112,342,1683,1743, + 1726,1769,1751,27,418,1786,1776,1829,785,1812, + 1837,1855,147,2419,276,507,148,853,38,502, + 277,666,2406,298,1634,38,994,36,666,508, + 3992,34,934,31,35,30,32,1614,262,29, + 27,55,1647,110,80,81,112,1377,1683,1743, + 1726,1769,1751,375,824,1786,1776,1829,1017,1812, + 1837,1855,147,977,505,377,148,2345,38,994, + 36,666,372,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 380,1683,1743,1726,1769,3111,2065,38,390,1706, + 38,994,36,666,504,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,158,1683,1743,1726,1769,1751,3874,1066, + 1786,1776,1829,2470,1812,1837,1855,147,636,2953, + 377,148,1352,1249,1142,2117,38,994,36,666, + 381,4791,34,934,31,35,63,32,387,418, + 2160,38,994,36,666,378,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,331,1683,1743,1726,1769,1751,1063, + 1163,1786,1776,1829,2039,1812,1837,1855,147,27, + 2953,371,148,1146,3085,2880,2511,1342,38,994, + 36,666,1180,3658,34,934,31,35,338,32, + 2160,38,994,36,666,382,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,2046,1683,1743,1726,1769,1751,27, + 332,1786,1776,1829,801,1812,1837,1855,147,27, + 324,371,148,332,676,319,1355,321,27,1377, + 317,1113,100,2980,853,38,793,384,666,1656, + 2160,38,994,36,666,370,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,37,1683,1743,1726,1769,1751,27, + 1377,1786,1776,1829,801,1812,1837,1855,147,1235, + 2725,371,148,2633,38,994,36,666,332,4791, + 34,934,31,35,30,32,325,1158,500,3006, + 1902,38,994,36,666,369,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,158,1683,1743,1726,1769,1751,4604, + 322,1786,1776,1829,2025,1812,1837,2030,168,3629, + 389,418,1768,38,994,36,666,2605,3992,34, + 934,31,35,30,32,1614,262,29,27,55, + 1647,110,80,81,112,367,1683,1743,1726,1769, + 1751,2125,445,1786,1776,1829,710,1812,1837,1855, + 147,388,418,146,148,157,1458,327,1070,2160, + 38,994,36,666,1613,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,2484,1683,1743,1726,1769,1751,27,1168, + 1786,1776,1829,2332,1812,1837,1855,147,1527,63, + 159,148,2160,38,994,36,666,325,3992,34, + 934,31,35,30,32,1614,262,29,27,55, + 1647,110,80,81,112,2039,1683,1743,1726,1769, + 1751,27,325,1786,1776,1829,732,1812,1837,1855, + 147,486,679,158,148,2160,38,994,36,666, + 1129,3992,34,934,31,35,30,32,1614,262, + 29,27,55,1647,110,80,81,112,1457,1683, + 1743,1726,1769,1751,27,1649,1786,1776,1829,3530, + 1812,1837,1855,147,1527,487,157,148,2160,38, + 994,36,666,432,3992,34,934,31,35,30, + 32,1614,262,29,27,55,1647,110,80,81, + 112,1355,1683,1743,1726,1769,1751,97,1690,1786, + 1776,1829,27,1812,1837,1855,147,3631,237,156, + 148,2160,38,994,36,666,1530,3992,34,934, + 31,35,30,32,1614,262,29,27,55,1647, + 110,80,81,112,1222,1683,1743,1726,1769,1751, + 27,1750,1786,1776,1829,2942,1812,1837,1855,147, + 1527,449,155,148,2160,38,994,36,666,1764, + 3992,34,934,31,35,30,32,1614,262,29, + 27,55,1647,110,80,81,112,1831,1683,1743, + 1726,1769,1751,27,1998,1786,1776,1829,3019,1812, + 1837,1855,147,1527,1611,154,148,2160,38,994, + 36,666,2442,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 1563,1683,1743,1726,1769,1751,27,2479,1786,1776, + 1829,3096,1812,1837,1855,147,325,448,153,148, + 2160,38,994,36,666,325,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,1093,1683,1743,1726,1769,1751,2039, + 376,1786,1776,1829,673,1812,1837,1855,147,2168, + 326,152,148,2160,38,994,36,666,1717,3992, + 34,934,31,35,30,32,1614,262,29,27, + 55,1647,110,80,81,112,1240,1683,1743,1726, + 1769,1751,27,304,1786,1776,1829,1199,1812,1837, + 1855,147,1897,2536,151,148,2160,38,994,36, + 666,1316,3992,34,934,31,35,30,32,1614, + 262,29,27,55,1647,110,80,81,112,1946, + 1683,1743,1726,1769,1751,1307,1988,1786,1776,1829, + 1240,1812,1837,1855,147,351,1005,150,148,2160, + 38,994,36,666,2484,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,1482,1683,1743,1726,1769,1751,27,352, + 1786,1776,1829,3155,1812,1837,1855,147,325,1477, + 149,148,2160,38,994,36,666,1085,3992,34, + 934,31,35,30,32,1614,262,29,27,55, + 1647,110,80,81,112,1224,1683,1743,1726,1769, + 1751,2128,4455,1786,1776,1829,1624,1812,1837,1855, + 147,2464,498,163,148,2160,38,994,36,666, + 325,3992,34,934,31,35,30,32,1614,262, + 29,27,55,1647,110,80,81,112,1451,1683, + 1743,1726,1769,1751,4065,846,1786,1776,1829,673, + 1812,1837,1855,147,28,1879,144,148,2253,38, + 994,36,666,374,3992,34,934,31,35,30, + 32,1614,262,29,27,55,1647,110,80,81, + 112,158,1683,1743,1726,1769,1751,4588,303,1786, + 1776,1829,673,1812,1837,1855,147,1527,1321,193, + 148,2345,38,994,36,666,760,3992,34,934, + 31,35,30,32,1614,262,29,27,55,1647, + 110,80,81,112,513,1683,1743,1726,1769,1751, + 27,300,1786,1776,1829,954,1812,1837,2030,168, + 2345,38,994,36,666,398,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,2118,1683,1743,1726,1769,1751,2950, + 1414,1786,1776,1829,2120,1812,1837,2030,168,2525, + 38,994,36,666,4514,2484,34,934,43,35, + 2345,38,994,36,666,290,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,2531,1683,1743,1726,1769,1751,27, + 673,1786,1776,1829,3159,1812,1837,2030,168,2345, + 38,994,36,666,414,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,2039,1683,1743,1726,1769,1751,27,299, + 1786,1776,1829,1871,1812,1837,2030,168,2525,38, + 994,36,666,853,3496,34,934,2927,35,2345, + 38,994,36,666,3442,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,1553,1683,1743,1726,1769,1751,27,1703, + 1786,1776,1829,3494,1812,1837,2030,168,2391,38, + 994,36,666,413,3992,34,934,31,35,30, + 32,1614,262,29,27,55,1647,110,80,81, + 112,396,1683,1743,1726,1769,1751,27,4889,1786, + 1776,1829,3942,1812,1837,2030,168,853,38,502, + 281,666,853,38,793,384,666,1002,2345,38, + 994,36,666,416,3992,34,934,31,35,30, + 32,1614,262,29,27,55,1647,110,80,81, + 112,54,1683,1743,1726,1769,1751,27,412,1786, + 1776,1829,3775,1812,3227,1258,2971,2345,38,994, + 36,666,3380,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 158,1683,1743,1726,1769,1751,4769,2008,1786,1776, + 1829,1812,3163,2345,38,994,36,666,325,3992, + 34,934,31,35,30,32,1614,262,29,27, + 55,1647,110,80,81,112,1992,1683,1743,1726, + 1769,1751,375,2037,1786,1776,3151,2345,38,994, + 36,666,349,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 2217,1683,1743,1726,1769,1751,2371,385,1786,3160, + 2345,38,994,36,666,1179,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,3022,1683,1743,1726,1769,3118,2437, + 38,793,384,666,158,2645,2466,853,38,282, + 4786,3908,237,262,2464,853,1518,2557,1295,2491, + 592,38,793,384,666,2065,38,390,274,27, + 239,262,328,334,2360,1131,38,994,36,666, + 4559,2931,34,934,31,35,338,32,1893,274, + 853,38,502,279,666,2345,38,994,36,666, + 232,3992,34,934,31,35,30,32,1614,262, + 29,27,55,1647,110,80,81,112,232,1683, + 1743,1726,2981,350,853,38,3536,235,230,231, + 673,2749,275,319,1355,321,2399,3382,314,1113, + 3550,343,1742,1708,348,240,230,231,325,341, + 1974,2062,350,3540,342,242,245,248,251,2725, + 2467,2510,940,853,38,291,647,513,1660,183, + 343,1742,1708,348,77,2520,286,2048,2448,3546, + 2262,2631,74,2417,2582,2714,3152,3200,4550,2345, + 38,994,36,666,2217,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,3153,1683,1743,1726,2983,2345,38,994, + 36,666,1181,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 2293,1683,1743,1726,2990,853,38,502,3533,666, + 2345,38,994,36,666,364,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,112,1416,1683,1743,1726,3032,2399,853, + 38,291,325,232,1016,766,38,793,384,666, + 2953,2817,38,278,673,75,229,1208,38,994, + 36,666,2644,3658,34,934,31,35,338,32, + 244,230,231,2417,54,1909,73,1783,206,215, + 4746,3656,205,212,213,214,216,2615,1258,1389, + 1696,3383,2399,199,3550,207,2953,2540,574,851, + 331,15,208,209,210,211,292,293,294,295, + 229,325,1812,331,2840,319,1355,321,3761,325, + 314,1113,1147,38,280,941,38,1267,988,666, + 1812,3294,206,215,4746,4672,205,212,213,214, + 216,1812,27,669,1812,58,332,2399,1137,207, + 325,1812,574,91,54,217,208,209,210,211, + 292,293,294,295,325,342,13,350,1258,661, + 673,245,38,442,2694,232,27,3937,283,307, + 311,2414,2755,2484,57,345,1742,1708,348,2217, + 2406,2080,4130,887,27,897,305,2537,440,2677, + 667,323,247,230,231,549,3316,297,522,198, + 296,1399,2345,38,994,36,666,284,3992,34, + 934,31,35,30,32,1614,262,29,27,55, + 1647,110,80,81,112,933,1683,1743,3045,2345, + 38,994,36,666,1440,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,1527,1683,1743,3067,1684,38,994,36, + 666,3264,2931,34,934,31,35,338,32,2079, + 1692,1752,38,994,36,666,4559,2931,34,934, + 31,35,338,32,2345,38,994,36,666,2264, + 3992,34,934,31,35,30,32,1614,262,29, + 27,55,1647,110,80,81,112,1051,1683,2774, + 2065,38,390,4000,319,1355,321,673,2310,314, + 1113,1088,38,793,384,666,435,1905,1915,319, + 1355,321,2645,350,314,1113,379,2399,429,56, + 2544,845,1266,853,38,793,384,666,350,436, + 54,343,1742,1708,348,229,400,517,1624,2308, + 673,1147,38,278,1258,1358,343,1742,1708,348, + 897,2053,54,2445,518,3033,325,206,215,4746, + 2473,205,212,213,214,216,1258,1958,853,38, + 793,384,666,27,207,673,325,574,4641,202, + 217,208,209,210,211,292,293,294,295,2706, + 3003,1898,375,1520,2399,516,1783,54,2399,2953, + 3617,2290,2762,853,38,793,384,666,2450,2757, + 94,51,229,2696,200,1293,2435,4130,2730,1056, + 38,2522,36,666,2644,3658,34,934,31,35, + 338,32,274,514,206,215,4746,1300,205,212, + 213,214,216,1361,38,793,384,666,2016,331, + 420,207,673,3022,574,1680,1518,217,208,209, + 210,211,292,293,294,295,2737,1783,673,2069, + 325,2399,54,2366,801,331,2039,319,1355,321, + 2039,2402,314,1113,2690,358,1258,52,2581,229, + 325,3833,333,334,4130,2741,339,2523,1895,160, + 2986,2227,2297,3023,3349,2073,1866,4886,201,3005, + 1137,206,215,4746,436,205,212,213,214,216, + 354,1762,2854,2718,3514,1680,1518,522,207,375, + 1995,574,325,1578,217,208,209,210,211,292, + 293,294,295,2345,38,994,36,666,1527,3992, + 34,934,31,35,30,32,1614,262,29,27, + 55,1647,110,80,81,112,3625,1683,2782,175, + 2868,4130,2744,27,526,350,285,27,3746,2128, + 409,2528,526,232,1486,38,793,384,666,325, + 3022,353,229,343,1742,1708,348,1340,522,160, + 342,2308,2162,2523,2657,2712,1528,160,184,2490, + 250,230,231,54,204,215,4746,192,203,212, + 213,214,216,3688,2655,4653,173,1258,52,330, + 334,232,1,2631,1520,101,514,526,719,2399, + 2953,853,38,793,384,666,285,187,171,172, + 174,175,176,177,178,229,2728,2435,253,230, + 231,325,160,325,1533,38,793,384,666,847, + 274,184,2490,2733,801,2751,1528,204,215,4746, + 2787,203,212,213,214,216,1492,2789,2794,173, + 331,2399,3162,54,325,3777,2812,72,185,164, + 2820,853,38,793,384,666,325,1258,52,229, + 188,171,172,174,175,176,177,178,2722,27, + 2858,506,38,442,4869,3501,358,3937,71,1624, + 54,206,215,4746,78,205,212,213,214,216, + 70,2986,2227,2297,1258,1794,3262,76,207,88, + 1527,574,2870,2870,15,208,209,210,211,292, + 293,294,295,2345,38,2418,2375,666,2711,3992, + 34,934,31,35,30,32,1614,262,29,27, + 55,1647,110,80,81,88,515,2345,38,994, + 36,666,37,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,112, + 325,2879,2693,2013,2345,38,994,36,666,14, + 3992,34,934,31,35,30,32,1614,262,29, + 27,55,1647,110,80,81,112,102,2899,2345, + 38,994,36,666,69,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,112,262,2928,375,673,2602,526,2598,2004, + 1051,1252,38,994,36,666,4000,3658,34,934, + 31,35,338,32,27,229,439,1905,1915,2554, + 92,93,160,106,106,766,38,793,384,666, + 324,184,2490,2859,4899,2399,2860,204,215,4746, + 2246,203,212,213,214,216,2779,2864,420,173, + 2642,2881,325,2435,54,3022,2339,332,27,319, + 1355,321,349,3026,315,1113,2998,526,1258,52, + 3443,171,172,174,175,176,177,178,350,2407, + 2461,38,502,277,666,229,2968,853,38,793, + 384,666,160,2756,2794,334,345,1742,1708,348, + 27,184,2490,2875,1898,3097,2876,204,215,4746, + 2186,203,212,213,214,216,441,2871,5413,173, + 5413,5413,358,5413,5413,436,5413,64,5413,1016, + 526,2498,801,47,1511,2953,2399,1665,2227,2297, + 180,171,172,174,175,176,177,178,229,2461, + 38,502,3556,666,2435,160,325,160,1088,38, + 793,384,666,421,184,2490,325,166,5413,5413, + 204,215,4746,5413,203,212,213,214,216,325, + 673,325,173,325,5413,331,673,54,523,5413, + 3359,2498,27,526,5413,5413,2399,801,5413,5413, + 60,1258,1622,191,171,172,174,175,176,177, + 178,229,3033,59,2435,3686,5413,105,160,222, + 1124,5413,160,494,5413,195,5413,184,2490,3098, + 5413,5413,2862,204,215,4746,5413,203,212,213, + 214,216,325,5413,5413,173,1616,38,994,36, + 666,2644,2931,34,934,31,35,338,32,491, + 493,853,38,502,3606,666,3610,171,172,174, + 175,176,177,178,1833,324,3904,610,2664,2399, + 2399,5413,526,494,1823,38,994,36,666,2644, + 2931,34,934,31,35,338,32,2435,2435,5413, + 229,2326,672,325,319,1355,321,160,5413,314, + 1113,853,38,793,384,666,184,2490,5413,492, + 493,5413,204,215,4746,5413,203,212,213,214, + 216,5413,669,64,173,5413,520,3967,801,5413, + 422,697,319,1355,321,2998,526,314,1113,5413, + 853,38,793,384,666,194,171,172,174,175, + 176,177,178,160,229,5413,359,358,307,311, + 669,160,5413,166,1884,38,793,384,666,425, + 184,2490,3100,2227,2297,5413,204,215,4746,3680, + 203,212,213,214,216,5413,5413,5413,173,5413, + 1399,5413,5413,54,784,5413,308,311,1016,526, + 5413,5413,49,1511,2953,5413,5413,1258,52,190, + 171,172,174,175,176,177,178,229,2639,853, + 38,793,384,666,160,3495,5413,1088,38,793, + 384,666,2839,184,2490,5413,5413,2399,5413,204, + 215,4746,5413,203,212,213,214,216,424,5413, + 5413,173,5413,5413,331,2435,54,871,27,5413, + 5413,5413,526,801,5413,5413,5413,5413,5413,5413, + 1258,52,197,171,172,174,175,176,177,178, + 229,3587,1197,38,793,384,666,160,160,2690, + 1088,38,793,384,666,5413,184,2490,3209,5413, + 2585,5413,204,215,4746,2399,203,212,213,214, + 216,54,5413,5413,173,5413,5413,5413,5413,54, + 5413,5413,5413,229,494,1258,2045,5413,5413,5413, + 5413,5413,5413,1258,52,196,171,172,174,175, + 176,177,178,2767,3811,206,215,4746,2399,205, + 212,213,214,216,5413,1088,38,793,384,666, + 491,493,207,5413,5413,574,229,5413,510,208, + 209,210,211,292,293,294,295,2798,5413,5413, + 847,5413,2399,5413,54,801,5413,5413,206,215, + 4746,5413,205,212,213,214,216,5413,1258,52, + 229,27,3498,5413,5413,207,801,5413,574,3850, + 164,511,208,209,210,211,292,293,294,295, + 2676,5413,206,215,4746,2399,205,212,213,214, + 216,160,1459,38,793,384,666,5413,5413,207, + 5413,3293,574,229,5413,306,208,209,210,211, + 292,293,294,295,853,38,793,384,666,5413, + 5413,54,5413,5413,5413,206,215,4746,5413,205, + 212,213,214,216,5413,1258,3039,5413,5413,2750, + 5413,5413,207,423,5413,574,851,5413,218,208, + 209,210,211,292,293,294,295,2345,38,994, + 36,666,5413,3992,34,934,31,35,30,32, + 1614,262,29,27,55,1647,110,80,81,89, + 2345,38,994,36,666,5413,3992,34,934,31, + 35,30,32,1614,262,29,27,55,1647,110, + 80,81,87,2345,38,994,36,666,5413,3992, + 34,934,31,35,30,32,1614,262,29,27, + 55,1647,110,80,81,86,2345,38,994,36, + 666,5413,3992,34,934,31,35,30,32,1614, + 262,29,27,55,1647,110,80,81,85,2345, + 38,994,36,666,5413,3992,34,934,31,35, + 30,32,1614,262,29,27,55,1647,110,80, + 81,84,2345,38,994,36,666,5413,3992,34, + 934,31,35,30,32,1614,262,29,27,55, + 1647,110,80,81,83,2345,38,994,36,666, + 5413,3992,34,934,31,35,30,32,1614,262, + 29,27,55,1647,110,80,81,82,2206,38, + 994,36,666,5413,3992,34,934,31,35,30, + 32,1614,262,29,27,55,1647,110,80,81, + 108,2345,38,994,36,666,5413,3992,34,934, + 31,35,30,32,1614,262,29,27,55,1647, + 110,80,81,114,2345,38,994,36,666,5413, + 3992,34,934,31,35,30,32,1614,262,29, + 27,55,1647,110,80,81,113,2827,5413,5413, + 5413,5413,2399,5413,5413,5413,5413,5413,5413,1486, + 38,793,384,666,5413,2345,38,994,36,666, + 229,3992,34,934,31,35,30,32,1614,262, + 29,27,55,1647,110,80,81,111,54,5413, + 5413,5413,206,215,4746,5413,205,212,213,214, + 216,5413,1258,3043,5413,5413,5413,5413,5413,207, + 5413,5413,574,2420,5413,488,208,209,210,211, + 292,293,294,295,2345,38,994,36,666,5413, + 3992,34,934,31,35,30,32,1614,262,29, + 27,55,1647,110,80,81,109,1308,38,2522, + 36,666,2644,2931,34,934,31,35,338,32, + 2499,38,793,384,666,5413,2645,5413,5413,1016, + 5413,5413,5413,238,262,2953,1823,38,994,36, + 666,2644,2931,34,934,31,35,338,32,274, + 27,5413,27,5413,5413,526,5413,801,1088,38, + 793,384,666,5413,5413,319,1355,321,5413,5413, + 314,1113,5413,342,853,38,793,384,666,5413, + 160,232,160,5413,5413,331,847,54,5413,5413, + 1880,801,3324,2073,319,1355,321,5413,2406,314, + 1113,1258,52,54,5413,1828,5413,5413,236,230, + 231,375,3929,275,5413,5413,164,1258,1250,5413, + 3501,5413,1266,1823,38,994,36,666,2644,2931, + 34,934,31,35,338,32,243,246,249,252, + 2725,5413,1368,38,994,36,666,647,3658,34, + 934,31,35,338,32,1443,38,994,36,666, + 3049,2931,34,934,31,35,338,32,410,2528, + 5413,5413,3022,847,847,5413,5413,5413,801,801, + 5413,319,1355,321,1027,2764,314,1113,5413,2399, + 3331,5413,5413,5413,397,5413,5413,5413,332,5413, + 319,1355,321,164,164,315,1113,229,5413,3593, + 5413,3558,334,316,1059,321,1815,38,994,36, + 666,2657,2931,34,934,31,35,338,32,1966, + 401,4685,1104,5413,5413,5413,5413,2399,3331,1088, + 38,793,384,666,5413,5413,402,1994,5413,574, + 5413,5413,2399,5413,5413,229,853,38,793,384, + 666,853,38,793,384,666,27,5413,54,5413, + 342,526,3666,3679,316,1059,321,1966,401,4685, + 5413,5413,1258,52,5413,54,27,5413,1475,342, + 54,526,5413,4164,402,1304,160,574,5413,1258, + 2651,5413,27,5413,1258,2045,2642,526,64,342, + 725,5413,5413,526,2406,27,160,27,5413,5413, + 801,2508,526,5413,5413,342,1880,5413,2848,5413, + 27,3203,160,2399,2406,2399,1475,5413,160,375, + 342,2719,192,403,405,160,5413,160,166,27, + 4653,342,5413,342,2399,3336,64,192,27,2565, + 5413,801,521,2399,2399,4653,2301,5413,4762,64, + 27,725,342,5413,801,2399,2406,5413,2406,27, + 5413,342,342,524,2399,2540,160,5413,5413,27, + 27,403,406,342,2399,801,166,2406,27,160, + 3022,5413,342,2399,2600,5413,2406,1341,5413,166, + 3082,5413,342,2673,5413,5413,445,3219,2406,27, + 160,342,5413,5413,801,498,27,2406,5413,5413, + 3440,801,3291,847,496,431,5413,2406,801,3600, + 334,5413,5413,5413,3120,5413,2406,5413,5413,160, + 5413,5413,5413,525,5413,5413,160,5413,3742,3178, + 5413,5413,5413,164,5413,5413,3681,5413,5413,5413, + 5413,3803,5413,5413,5413,5413,5413,5413,5413,5413, + 5413,5413,5413,5413,5413,5413,3627,5413,5413,5413, + 5413,5413,5413,5413,5413,5413,5413,5413,5413,5413, + 5413,5413,5413,5413,5413,5413,5413,5413,5413,5413, + 5413,5413,5413,5413,5413,5413,5413,5413,5413,3802, + 5413,5413,5413,5413,5413,5413,5413,5413,5413,5413, + 5413,5413,3683,5413,2429,5413,0,490,4010,0, + 228,1,0,42,5431,0,42,5430,0,1, + 4566,0,775,1,0,42,1,5431,0,42, + 1,5430,0,1,4777,0,1,1204,0,5647, + 241,0,5646,241,0,5750,241,0,5749,241, + 0,5674,241,0,5673,241,0,5672,241,0, + 5671,241,0,5670,241,0,5669,241,0,5668, + 241,0,5667,241,0,5686,241,0,5685,241, + 0,5684,241,0,5683,241,0,5682,241,0, + 5681,241,0,5680,241,0,5679,241,0,5678, + 241,0,5677,241,0,5676,241,0,42,241, + 5431,0,42,241,5430,0,5454,241,0,502, + 383,0,53,5431,0,53,5430,0,1,5742, + 0,1,1388,0,41,5431,0,41,5430,0, + 443,1431,0,502,33,0,5431,53,0,5430, + 53,0,1474,318,0,502,44,0,1,433, + 0,447,1484,0,446,1570,0,52,40,0, + 228,220,0,5454,228,1,0,42,228,1, + 0,228,408,0,40,5431,0,40,5430,0, + 48,5452,0,48,40,0,1,1293,0,1, + 5686,0,1,5685,0,1,5684,0,1,5683, + 0,1,5682,0,1,5681,0,1,5680,0, + 1,5679,0,1,5678,0,1,5677,0,1, + 5676,0,1,1026,0,1,2425,0,228,219, + 0,5423,399,0,5422,399,0,228,407,0, + 30,509,0,130,2577,0,5421,1,0,5742, + 434,0,1388,434,0,5452,50,0,50,40, + 0,1239,95,0,384,36,0,36,384,0, + 383,33,0,33,383,0,502,33,383,0, + 42,1204,0,228,1,3234,0,5423,228,0, + 5422,228,0,5454,1,0,42,1,0,237, + 3299,0,132,2577,0,131,2577,0,3379,228, + 0,1,96,0,8,10,0,40,5431,2, + 0,40,5430,2,0,5431,39,0,5430,39, + 0,5742,99,0,1388,99,0,279,4703,0, + 189,3841,0 }; }; public final static char baseAction[] = BaseAction.baseAction; @@ -1297,124 +1287,123 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 33,34,35,36,37,38,39,44,41,42, 43,0,45,62,0,1,2,3,4,5, 9,7,0,1,2,3,4,5,61,7, - 69,64,0,66,0,1,2,3,4,5, - 6,7,8,0,10,63,12,13,14,0, + 0,64,0,66,0,1,2,3,4,5, + 6,7,8,61,10,0,12,13,14,4, + 16,17,18,19,20,21,22,23,24,25, + 99,27,28,29,30,31,32,33,34,35, + 36,37,38,39,44,41,42,43,0,45, + 0,3,71,0,1,2,0,1,2,44, + 4,5,0,7,0,61,0,3,64,3, + 66,0,1,2,3,4,5,6,7,8, + 9,10,26,12,13,14,0,16,17,18, + 19,20,21,22,23,24,25,95,27,28, + 29,30,31,32,33,34,35,36,37,38, + 39,0,41,42,43,0,45,0,1,2, + 3,4,5,6,7,8,62,10,62,12, + 13,14,70,16,17,18,19,20,21,22, + 23,24,25,0,27,28,29,30,31,32, + 33,34,35,36,37,38,39,0,41,42, + 43,0,45,0,0,8,3,0,5,6, + 0,8,8,0,1,2,59,0,61,0, + 1,2,0,4,5,0,7,24,25,118, + 27,28,0,30,0,1,2,0,4,26, + 6,4,8,88,89,26,0,44,0,1, + 2,44,4,70,6,0,8,0,3,0, + 5,6,0,8,63,62,63,64,0,66, + 69,0,69,70,0,1,2,9,0,24, + 25,44,27,28,0,30,69,9,0,11, + 44,88,89,90,91,92,93,94,76,44, + 97,98,99,100,101,102,103,104,105,106, + 107,108,109,110,111,112,113,62,63,64, + 63,66,97,98,69,70,0,1,2,0, + 4,5,3,7,0,1,2,0,4,71, + 6,70,8,88,89,90,91,92,93,94, + 88,89,97,98,99,100,101,102,103,104, + 105,106,107,108,109,110,111,112,113,0, + 1,2,3,4,5,6,7,8,90,10, + 0,12,13,14,96,16,17,18,19,20, + 21,22,23,24,25,0,27,28,29,30, + 31,32,33,34,35,36,37,38,39,72, + 41,42,43,0,45,0,1,2,3,4, + 5,6,7,8,44,10,0,12,13,14, + 61,16,17,18,19,20,21,22,23,24, + 25,0,27,28,29,30,31,32,33,34, + 35,36,37,38,39,0,41,42,43,4, + 45,0,0,1,2,3,4,5,6,7, + 8,0,10,0,12,13,14,62,16,17, + 18,19,20,21,22,23,24,25,62,27, + 28,29,30,31,32,33,34,35,36,37, + 38,39,0,41,42,43,0,45,0,1, + 2,3,4,5,6,7,8,122,10,0, + 12,13,14,61,16,17,18,19,20,21, + 22,23,24,25,63,27,28,29,30,31, + 32,33,34,35,36,37,38,39,0,41, + 42,43,4,45,0,1,2,3,4,5, + 6,7,8,90,10,63,12,13,14,96, 16,17,18,19,20,21,22,23,24,25, 0,27,28,29,30,31,32,33,34,35, 36,37,38,39,0,41,42,43,0,45, - 0,0,71,9,0,1,2,0,4,5, - 3,7,0,1,2,61,9,5,64,7, - 66,0,1,2,3,4,5,6,7,8, - 26,10,69,12,13,14,0,16,17,18, - 19,20,21,22,23,24,25,95,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,63,41,42,43,71,45,69,0,62, - 63,0,1,2,0,4,69,6,0,8, - 59,3,61,0,1,2,3,4,5,6, - 7,8,9,10,87,12,13,14,0,16, - 17,18,19,20,21,22,23,24,25,0, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,0,41,42,43,0,45,0, - 3,0,5,6,0,8,0,1,2,8, - 4,5,8,7,0,1,2,0,0,1, - 2,24,25,5,27,28,0,30,90,0, - 1,2,26,4,96,6,0,8,0,1, - 2,44,4,5,26,7,0,1,2,0, - 4,5,3,7,5,6,0,8,90,62, - 63,64,0,66,96,3,69,70,0,1, - 2,118,0,24,25,3,27,28,99,30, - 44,88,89,0,0,88,89,90,91,92, - 93,94,0,44,97,98,99,100,101,102, - 103,104,105,106,107,108,109,110,111,112, - 113,62,63,64,0,66,0,0,69,70, - 0,1,2,9,4,11,6,0,8,0, - 3,0,1,2,62,0,44,88,89,90, - 91,92,93,94,88,89,97,98,99,100, - 101,102,103,104,105,106,107,108,109,110, - 111,112,113,0,1,2,3,4,5,6, - 7,8,0,10,0,12,13,14,4,16, - 17,18,19,20,21,22,23,24,25,62, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,119,41,42,43,72,45,0, - 1,2,3,4,5,6,7,8,44,10, - 0,12,13,14,61,16,17,18,19,20, - 21,22,23,24,25,63,27,28,29,30, - 31,32,33,34,35,36,37,38,39,0, - 41,42,43,4,45,0,0,1,2,3, - 4,5,6,7,8,0,10,0,12,13, - 14,62,16,17,18,19,20,21,22,23, - 24,25,62,27,28,29,30,31,32,33, - 34,35,36,37,38,39,0,41,42,43, - 0,45,0,1,2,3,4,5,6,7, - 8,44,10,0,12,13,14,61,16,17, - 18,19,20,21,22,23,24,25,63,27, - 28,29,30,31,32,33,34,35,36,37, - 38,39,0,41,42,43,4,45,0,1, - 2,3,4,5,6,7,8,0,10,63, - 12,13,14,6,16,17,18,19,20,21, - 22,23,24,25,119,27,28,29,30,31, - 32,33,34,35,36,37,38,39,0,41, - 42,43,0,45,0,1,2,3,4,5, - 6,7,8,90,10,0,12,13,14,96, - 16,17,18,19,20,21,22,23,24,25, - 0,27,28,29,30,31,32,33,34,35, - 36,37,38,39,29,41,42,43,0,45, - 0,1,2,0,4,0,1,2,91,92, - 10,6,12,13,14,15,16,17,18,19, - 20,21,22,23,0,1,2,0,4,26, - 6,26,8,0,1,2,88,89,0,0, - 40,0,0,0,3,3,46,9,48,49, - 50,51,52,53,0,55,56,57,0,26, - 60,0,0,1,2,65,4,67,68,27, - 28,10,10,0,12,13,14,15,16,17, - 18,19,20,21,22,23,0,26,61,0, - 0,1,2,0,0,97,98,0,1,2, - 0,0,40,3,62,0,1,2,46,70, - 48,49,50,51,52,53,26,55,56,57, - 0,60,60,26,70,87,0,65,0,67, - 68,26,12,13,14,15,16,17,18,19, - 20,21,22,23,0,103,88,89,0,1, - 2,3,4,5,6,7,8,9,69,11, - 40,0,120,15,70,72,46,0,48,49, - 50,51,52,53,26,55,56,57,0,1, - 2,3,4,5,6,7,8,9,44,11, - 0,0,44,15,0,47,70,0,70,0, - 0,0,54,6,26,6,58,63,0,1, - 2,3,4,5,6,7,8,9,0,11, - 0,3,74,15,0,47,0,0,1,2, - 0,0,54,72,26,5,58,93,94,0, - 1,2,3,4,5,6,7,8,9,71, - 11,0,74,26,15,47,0,63,0,3, - 70,3,54,69,0,26,58,3,44,0, - 1,2,3,4,5,6,7,8,9,71, - 11,0,74,0,15,4,47,63,91,92, - 91,92,72,54,0,26,0,58,0,3, - 0,1,2,3,4,5,6,7,8,9, - 71,11,0,74,0,15,47,93,94,88, - 89,0,122,54,3,44,26,58,0,0, - 0,1,2,3,4,5,6,7,8,9, - 71,11,0,74,0,15,95,47,0,0, - 0,9,0,3,54,3,26,0,58,10, - 3,0,1,2,3,4,5,6,7,8, - 9,71,11,44,74,26,15,47,0,0, - 0,3,3,3,54,0,0,26,58,3, - 0,1,2,3,4,5,6,7,8,9, - 0,11,119,0,74,15,0,0,47,60, - 62,0,0,0,3,54,26,0,15,58, - 76,0,0,0,3,0,0,0,0,87, - 0,0,15,0,0,74,0,47,0,0, - 0,0,0,40,54,0,15,0,58,46, - 0,48,49,50,51,52,53,40,55,56, - 57,0,0,46,74,48,49,50,51,52, - 53,40,55,56,57,0,70,46,0,48, - 49,50,51,52,53,0,55,56,57,0, - 0,0,70,0,0,0,0,0,0,0, + 0,1,2,3,4,5,6,7,8,90, + 10,0,12,13,14,96,16,17,18,19, + 20,21,22,23,24,25,0,27,28,29, + 30,31,32,33,34,35,36,37,38,39, + 0,41,42,43,0,45,0,1,2,69, + 4,0,1,2,0,44,10,6,12,13, + 14,15,16,17,18,19,20,21,22,23, + 0,1,2,0,63,0,0,26,3,0, + 1,2,0,4,9,6,40,8,0,63, + 0,3,46,0,48,49,50,51,52,53, + 0,55,56,57,93,94,60,0,0,1, + 2,65,4,67,68,27,28,10,10,26, + 12,13,14,15,16,17,18,19,20,21, + 22,23,0,26,0,1,2,62,63,5, + 0,7,88,89,69,0,70,0,40,0, + 62,6,3,0,46,0,48,49,50,51, + 52,53,87,55,56,57,0,60,60,69, + 88,89,0,65,0,67,68,3,12,13, + 14,15,16,17,18,19,20,21,22,23, + 0,103,119,0,0,1,2,3,4,5, + 6,7,8,9,72,11,40,0,120,15, + 70,0,46,0,48,49,50,51,52,53, + 26,55,56,57,0,1,2,3,4,5, + 6,7,8,9,44,11,91,92,44,15, + 0,47,0,1,2,5,4,5,54,7, + 26,0,58,63,0,1,2,3,4,5, + 6,7,8,9,0,11,0,3,74,15, + 63,47,119,0,1,2,69,0,54,0, + 26,70,58,93,94,0,1,2,3,4, + 5,6,7,8,9,71,11,0,74,26, + 15,47,0,0,0,0,1,2,54,6, + 5,26,58,62,0,0,1,2,3,4, + 5,6,7,8,9,71,11,0,74,0, + 15,26,47,29,0,1,2,0,72,54, + 3,26,0,58,0,3,0,1,2,3, + 4,5,6,7,8,9,71,11,0,74, + 26,15,47,0,0,0,0,1,2,54, + 6,0,26,58,72,0,0,1,2,3, + 4,5,6,7,8,9,71,11,0,74, + 0,15,26,47,91,92,0,9,0,3, + 54,3,26,0,58,0,3,0,1,2, + 3,4,5,6,7,8,9,71,11,0, + 74,0,15,47,3,0,0,1,2,0, + 54,0,3,26,58,70,0,1,2,3, + 4,5,6,7,8,9,119,11,0,0, + 74,15,26,95,47,91,92,0,10,88, + 89,54,26,0,15,58,9,0,0,0, + 3,3,3,0,26,87,3,0,15,0, + 0,74,3,47,0,0,0,3,3,40, + 54,0,15,0,58,46,0,48,49,50, + 51,52,53,40,55,56,57,0,60,46, + 74,48,49,50,51,52,53,40,55,56, + 57,0,0,46,0,48,49,50,51,52, + 53,0,55,56,57,0,0,0,0,0, + 0,0,0,0,87,0,0,0,0,0, + 70,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 }; }; public final static byte termCheck[] = TermCheck.termCheck; @@ -1422,301 +1411,301 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface TermAction { public final static char termAction[] = {0, - 5467,5407,5118,5118,5118,5118,5118,5118,5118,5432, - 1,5414,1,1,1,1,1,1,1,1, + 5413,5353,5070,5070,5070,5070,5070,5070,5070,5378, + 1,5360,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5467,1,1,617,1,1, - 1,1,1,1,940,1,1,1,604,1059, - 1,1,309,1,1,1,1,1,1,5467, - 1130,5474,167,5646,167,2387,3286,3258,2015,3171, - 3187,3459,3271,759,3261,2806,3225,8,5438,5438, - 5438,5438,5438,5438,5438,5438,5438,5438,5438,5438, - 5438,5438,5438,5438,5438,5438,5438,5438,5438,5438, - 5438,5438,5438,1568,5438,5438,5438,5438,5438,5438, - 5438,5438,5438,5438,5438,5438,5438,5438,5438,5438, - 5438,4520,5438,5438,5438,5438,5438,5438,5438,5438, - 5438,5438,5438,5438,5438,5438,5438,5438,5438,5467, - 167,5438,5438,5438,5438,5438,317,42,5438,5260, - 5438,5508,5438,5438,5438,5438,5438,5438,5438,5438, - 5438,5438,5438,5438,5467,5407,5118,5118,5118,5118, - 5118,5118,5118,5411,1,5414,1,1,1,1, + 1,1,1,1,5413,1,1,618,1,1, + 1,1,1,1,2133,1,1,1,556,835, + 1,1,309,1,1,1,1,1,1,5413, + 1068,5420,167,5592,167,715,3310,2770,2050,2654, + 3233,3492,3303,761,3286,3099,3254,8,5384,5384, + 5384,5384,5384,5384,5384,5384,5384,5384,5384,5384, + 5384,5384,5384,5384,5384,5384,5384,5384,5384,5384, + 5384,5384,5384,1189,5384,5384,5384,5384,5384,5384, + 5384,5384,5384,5384,5384,5384,5384,5384,5384,5384, + 5384,3784,5384,5384,5384,5384,5384,5384,5384,5384, + 5384,5384,5384,5384,5384,5384,5384,5384,5384,5413, + 167,5384,5384,5384,5384,5384,318,42,5384,5212, + 5384,5454,5384,5384,5384,5384,5384,5384,5384,5384, + 5384,5384,5384,5384,5413,5353,5070,5070,5070,5070, + 5070,5070,5070,5357,1,5360,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 5467,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1278,1, - 1,617,1,1,1,1,1,1,940,1, - 1,1,604,1059,1,1,287,5467,1,1, - 1,1,1,382,5467,5266,5263,5646,5508,2387, - 3286,3258,2015,3171,3187,3459,3271,759,3261,2806, - 3225,5467,5407,5118,5118,5118,5118,5118,5118,5118, - 5411,1,5414,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,5227,1,1, + 5413,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1270,1, + 1,618,1,1,1,1,1,1,2133,1, + 1,1,556,835,1,1,287,5413,1,1, + 1,1,1,383,5413,5076,5073,5592,5454,715, + 3310,2770,2050,2654,3233,3492,3303,761,3286,3099, + 3254,5413,5353,5070,5070,5070,5070,5070,5070,5070, + 5357,1,5360,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,5179,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,2401,1,1,617,1, - 1,1,1,1,1,940,1,1,1,604, - 1059,1,1,1,5467,1,1,1,1,1, - 319,5467,360,5473,5646,935,2387,3286,3258,2015, - 3171,3187,3459,3271,759,3261,2806,3225,5467,5407, - 5118,5118,5118,5118,5118,5118,5118,5411,1,5414, + 1,1,1,1,1,2415,1,1,618,1, + 1,1,1,1,1,2133,1,1,1,556, + 835,1,1,1,5413,1,1,1,1,1, + 320,5413,361,5419,5592,3499,715,3310,2770,2050, + 2654,3233,3492,3303,761,3286,3099,3254,5413,5353, + 5070,5070,5070,5070,5070,5070,5070,5357,1,5360, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,334,1,1,1,1,1, + 1,1,1,1,335,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1278,1,1,617,1,1,1,1, - 1,1,940,1,1,1,604,1059,1,1, - 360,5472,1,1,1,1,1,442,360,5467, - 5802,5646,5803,2387,3286,3258,2015,3171,3187,3459, - 3271,759,3261,2806,3225,5467,5407,5118,5118,5118, - 5118,5118,5118,5118,5411,1,5414,1,1,1, + 1,1,1270,1,1,618,1,1,1,1, + 1,1,2133,1,1,1,556,835,1,1, + 361,5418,1,1,1,1,1,443,361,5413, + 5749,5592,5750,715,3310,2770,2050,2654,3233,3492, + 3303,761,3286,3099,3254,5413,5353,5070,5070,5070, + 5070,5070,5070,5070,5357,1,5360,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,5248,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,2685, - 1,1,617,1,1,1,1,1,1,940, - 1,1,1,604,1059,1,1,504,5467,1, - 1,1,1,1,33,5467,5266,5263,5646,5508, - 2387,3286,3258,2015,3171,3187,3459,3271,759,3261, - 2806,3225,5467,5407,5118,5118,5118,5118,5118,5118, - 5118,5411,1,5414,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,5251,1, + 1,5200,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,2920, + 1,1,618,1,1,1,1,1,1,2133, + 1,1,1,556,835,1,1,505,5413,1, + 1,1,1,1,33,5413,5076,5073,5592,5454, + 715,3310,2770,2050,2654,3233,3492,3303,761,3286, + 3099,3254,5413,5353,5070,5070,5070,5070,5070,5070, + 5070,5357,1,5360,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,5203,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,901,1,1,617, - 1,1,1,1,1,1,940,1,1,1, - 604,1059,1,1,5467,5467,1,1,1,1, - 1,5467,5484,5485,5467,5646,3192,2387,3286,3258, - 2015,3171,3187,3459,3271,759,3261,2806,3225,5467, - 5407,5118,5118,5118,5118,5118,5118,5118,5411,1, - 5414,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,5467,1,1,1,1, + 1,1,1,1,1,1,904,1,1,618, + 1,1,1,1,1,1,2133,1,1,1, + 556,835,1,1,5413,5413,1,1,1,1, + 1,5413,5430,5431,5413,5592,3271,715,3310,2770, + 2050,2654,3233,3492,3303,761,3286,3099,3254,5413, + 5353,5070,5070,5070,5070,5070,5070,5070,5357,1, + 5360,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,5413,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1139,1,1,617,1,1,1, - 1,1,1,940,1,1,1,604,1059,1, - 1,5467,5467,1,1,1,1,1,44,1783, - 5473,5477,5646,5476,2387,3286,3258,2015,3171,3187, - 3459,3271,759,3261,2806,3225,5467,5407,5118,5118, - 5118,5118,5118,5118,5118,5411,1,5414,1,1, + 1,1,1,886,1,1,618,1,1,1, + 1,1,1,2133,1,1,1,556,835,1, + 1,5413,5413,1,1,1,1,1,44,1522, + 5419,5423,5592,5422,715,3310,2770,2050,2654,3233, + 3492,3303,761,3286,3099,3254,5413,5353,5070,5070, + 5070,5070,5070,5070,5070,5357,1,5360,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,5269,1,1,1,1,1,1,1, + 1,1,5215,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 4968,1,1,617,1,1,1,1,1,1, - 940,1,1,1,604,1059,1,1,5472,398, - 1,1,1,1,1,5467,5233,5230,5355,5646, - 5358,2387,3286,3258,2015,3171,3187,3459,3271,759, - 3261,2806,3225,5467,5407,5118,5118,5118,5118,5118, - 5118,5118,5411,1,5414,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,5467, + 4928,1,1,618,1,1,1,1,1,1, + 2133,1,1,1,556,835,1,1,5418,399, + 1,1,1,1,1,5413,5185,5182,5301,5592, + 5304,715,3310,2770,2050,2654,3233,3492,3303,761, + 3286,3099,3254,5413,5353,5070,5070,5070,5070,5070, + 5070,5070,5357,1,5360,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5413, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,5467,1,1, - 617,1,1,1,1,1,1,940,1,1, - 1,604,1059,1,1,437,1,1,1,1, - 1,1,5467,5484,5485,165,5646,5467,2387,3286, - 3258,2015,3171,3187,3459,3271,759,3261,2806,3225, - 5467,3215,1,1,1,1,1,1,1,5477, - 1,5476,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,436,1,1,1, + 1,1,1,1,1,1,1,5413,1,1, + 618,1,1,1,1,1,1,2133,1,1, + 1,556,835,1,1,438,1,1,1,1, + 1,1,5413,5430,5431,165,5592,5413,715,3310, + 2770,2050,2654,3233,3492,3303,761,3286,3099,3254, + 5413,3234,1,1,1,1,1,1,1,5423, + 1,5422,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,437,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,3501,1,1,617,1,1, - 1,1,1,1,940,1,1,1,604,1059, - 1,1,5467,165,1,1,1,1,1,33, - 390,5124,5121,5646,5508,2387,3286,3258,2015,3171, - 3187,3459,3271,759,3261,2806,3225,42,5124,5121, - 4827,845,3361,4216,3598,4239,42,2517,2925,5732, - 5730,5739,5724,5738,5734,5735,5733,5736,5737,5740, - 5731,4193,4170,501,4285,4262,5490,4147,1648,1691, - 5492,1655,619,1665,5493,5491,1630,5727,5486,5488, - 5489,355,5487,5802,133,5803,5721,5728,5700,5726, - 5725,414,5722,5723,5701,42,1,5858,780,5508, - 383,1654,610,5795,5859,5860,5467,5291,5291,228, - 5287,228,228,228,228,5295,1,228,1,1, + 1,1,1,1,3351,1,1,618,1,1, + 1,1,1,1,2133,1,1,1,556,835, + 1,1,5413,165,1,1,1,1,1,33, + 391,5076,5073,5592,5454,715,3310,2770,2050,2654, + 3233,3492,3303,761,3286,3099,3254,42,5076,5073, + 4580,775,3393,4276,4777,4299,42,2404,2771,5678, + 5676,5685,5670,5684,5680,5681,5679,5682,5683,5686, + 5677,4253,4230,502,4345,4322,5436,4207,1561,1604, + 5438,1579,620,1597,5439,5437,1554,5673,5432,5434, + 5435,356,5433,5749,133,5750,5667,5674,5646,5672, + 5671,415,5668,5669,5647,42,1,5805,1312,5454, + 384,1388,611,5742,5806,5807,5413,5237,5237,228, + 5233,228,228,228,228,5241,1,228,1,1, 1,1,1,1,1,1,1,1,1,1, - 42,5467,489,5114,5508,5467,5137,5133,4652,5130, - 3318,5239,3598,5236,5467,5467,1,842,1740,40, - 5281,5281,1,1349,1,1,1,1,1,1, - 894,1,1,1,141,1,1,5467,5257,5254, - 624,1,115,1,1,5506,5821,407,228,5870, - 5955,2364,2335,5467,5291,5291,228,5287,228,228, - 228,228,5361,1,228,1,1,1,1,1, - 1,1,1,1,1,1,1,1965,446,489, - 364,5137,5133,2730,5130,3318,1,3598,1,5467, - 5892,5893,5894,1,1826,5467,5467,5301,5298,1, - 1349,1,1,1,1,1,1,389,1,1, - 1,382,5467,1,5892,5893,5894,52,1,5467, - 1,1,5506,302,406,228,5870,5955,383,5467, - 224,5388,4331,5768,5388,2232,5388,5391,4354,5388, - 5275,311,1278,836,980,5724,5467,5484,5485,5467, - 1145,501,5391,5391,1912,5391,5391,310,5137,5133, - 4652,5130,3318,5239,3598,5236,5467,5892,5893,5894, - 5727,5467,5391,143,4848,3993,5802,559,5803,5721, - 5728,5700,5726,5725,38,5722,5723,5701,1955,122, - 5391,5391,5467,5124,5121,530,5508,5391,5391,5391, - 5391,343,5266,5263,2730,845,3318,1654,3598,5795, - 4308,1086,1999,3141,2759,5391,5391,5391,5391,5391, - 5391,5391,5391,5391,5391,5391,5391,5391,5391,5391, - 5391,5391,5391,5391,5391,5391,5391,5391,5391,5391, - 5391,5391,124,1754,382,5391,5391,5394,5391,123, - 5394,1525,5394,5397,1258,5394,1,1,5137,5133, - 4652,5130,3318,1278,3598,130,3141,2759,5397,5397, - 5467,5397,5397,3141,2759,2193,2901,1711,1668,1625, - 1582,1539,1496,1453,1410,1367,1319,5467,5400,142, - 3719,5467,5266,5263,4652,845,3318,1654,3598,5795, - 501,5467,5484,5485,5467,5467,5397,5397,2879,2603, - 5467,8723,8176,5397,5397,5397,5397,5467,5266,5263, - 4652,845,3318,1654,3598,5795,418,1,5367,1965, - 5467,5397,5397,5397,5397,5397,5397,5397,5397,5397, - 5397,5397,5397,5397,5397,5397,5397,5397,5397,5397, - 5397,5397,5397,5397,5397,5397,5397,5397,2542,2449, - 991,5397,5397,143,5397,5467,5118,5118,228,5118, + 42,5413,490,5066,5454,5413,5089,5085,4566,5082, + 1204,5191,4777,5188,5413,5413,1,625,1474,40, + 5227,5227,1,831,1,1,1,1,1,1, + 781,1,1,1,141,1,1,5413,5209,5206, + 2844,1,115,1,1,5452,5768,408,228,5817, + 5902,2370,997,5413,5237,5237,228,5233,228,228, + 228,228,5307,1,228,1,1,1,1,1, + 1,1,1,1,1,1,1,2000,447,490, + 365,5089,5085,2866,5082,1204,1,4777,1,5413, + 5839,5840,5841,1,1560,5413,5413,5247,5244,1, + 831,1,1,1,1,1,1,390,1,1, + 1,383,5413,1,5839,5840,5841,52,1,5413, + 1,1,5452,302,407,228,5817,5902,384,5413, + 224,5334,4391,5714,5334,2267,5334,5337,4414,5334, + 5221,312,1270,947,1179,5670,5413,5430,5431,5413, + 1090,502,5337,5337,1603,5337,5337,310,5089,5085, + 4566,5082,1204,5191,4777,5188,5413,5839,5840,5841, + 5673,5413,5337,143,4796,4053,5749,560,5750,5667, + 5674,5646,5672,5671,38,5668,5669,5647,1646,122, + 5337,5337,5413,5076,5073,531,5454,5337,5337,5337, + 5337,344,5076,5073,2866,775,1204,1388,4777,5742, + 4368,857,2034,3173,2894,5337,5337,5337,5337,5337, + 5337,5337,5337,5337,5337,5337,5337,5337,5337,5337, + 5337,5337,5337,5337,5337,5337,5337,5337,5337,5337, + 5337,5337,124,1789,383,5337,5337,5340,5337,123, + 5340,1129,5340,5343,1052,5340,1,1,5089,5085, + 4566,5082,1204,1270,4777,130,3173,2894,5343,5343, + 5413,5343,5343,3173,2894,2228,2079,1746,1703,1660, + 1617,1574,1531,1488,1445,1402,1359,5413,5346,142, + 3968,5413,5076,5073,4566,775,1204,1388,4777,5742, + 502,5413,5430,5431,5413,5413,5343,5343,3778,2610, + 5413,7966,7784,5343,5343,5343,5343,5413,5076,5073, + 4566,775,1204,1388,4777,5742,419,1,5313,2000, + 5413,5343,5343,5343,5343,5343,5343,5343,5343,5343, + 5343,5343,5343,5343,5343,5343,5343,5343,5343,5343, + 5343,5343,5343,5343,5343,5343,5343,5343,2549,2455, + 841,5343,5343,143,5343,5413,5070,5070,228,5070, 228,228,228,228,228,1,228,1,1,1, - 8407,1,1,1,1,1,1,1,1,429, - 2232,5115,1,5137,5133,5127,5130,5144,3072,5141, - 42,5477,1611,5476,5508,1,445,5467,5467,5233, - 5230,1,617,1,1,1,1,1,1,1362, - 1,1,1,604,1174,1,137,41,5245,5242, - 1,139,1,1,555,53,5257,5254,5483,5955, - 2485,5467,5118,5118,228,5118,228,228,228,228, - 228,1,228,1,1,1,8407,1,1,1, - 1,1,1,1,1,2193,2222,5115,5278,1, - 5420,5420,4308,5417,1999,1654,5467,5795,360,5467, - 3719,1,53,5233,5230,5471,12,1,617,1, - 1,1,1,1,1,1362,1,1,1,604, - 302,1,5467,5892,5893,5894,1,5467,1,1, - 5768,5477,30,5476,5483,5955,1,5137,5133,4827, - 5130,3361,4216,3598,4239,2302,5310,140,5337,5343, - 5316,2268,5319,5331,5328,5334,5325,5322,5313,5340, - 4193,4170,5967,4285,4262,5490,4147,1648,1691,5492, - 1655,619,1665,5493,5491,1630,360,5486,5488,5489, - 5467,5487,11,3168,360,1,5137,5133,4652,5130, - 3318,4490,3598,5467,310,5364,310,780,5467,505, - 42,5364,42,42,5266,5263,4827,845,3361,4216, - 3598,4239,5475,1863,5470,5732,5730,5739,5467,5738, - 5734,5735,5733,5736,5737,5740,5731,4193,4170,5467, - 4285,4262,5490,4147,1648,1691,5492,1655,619,1665, - 5493,5491,1630,5467,5486,5488,5489,2268,5487,288, - 5484,5485,1059,1,5137,5133,2730,5130,3318,289, - 3598,5467,2516,5467,780,343,42,42,2787,5508, - 5475,1654,5467,5795,5474,42,5266,5263,4827,845, - 3361,4216,3598,4239,5475,1863,346,5732,5730,5739, - 5861,5738,5734,5735,5733,5736,5737,5740,5731,4193, - 4170,2054,4285,4262,5490,4147,1648,1691,5492,1655, - 619,1665,5493,5491,1630,1278,5486,5488,5489,5467, - 5487,1,5137,5133,2730,5130,3318,1278,3598,1926, - 1025,359,5474,5467,2516,5910,780,145,5266,5263, - 4827,845,3361,4216,3598,4239,5474,1863,1278,5732, - 5730,5739,5467,5738,5734,5735,5733,5736,5737,5740, - 5731,4193,4170,4559,4285,4262,5490,4147,1648,1691, - 5492,1655,619,1665,5493,5491,1630,4924,5486,5488, - 5489,5467,5487,1278,1,5137,5133,5127,5130,5144, - 5475,5141,1,5137,5133,4652,5130,3318,780,3598, - 2398,42,1,42,1,5137,5133,4827,5130,3361, - 4216,3598,4239,416,5310,3290,5337,5343,5316,5467, - 5319,5331,5328,5334,5325,5322,5313,5340,4193,4170, - 5467,4285,4262,5490,4147,1648,1691,5492,1655,619, - 1665,5493,5491,1630,1,5486,5488,5489,5467,5487, - 5467,5467,5474,5370,5467,5266,5263,1,845,5404, - 2787,3598,5467,5484,5485,780,339,3318,42,3598, - 42,42,5266,5263,4827,845,3361,4216,3598,4239, - 823,1863,3491,5732,5730,5739,5467,5738,5734,5735, - 5733,5736,5737,5740,5731,4193,4170,5823,4285,4262, - 5490,4147,1648,1691,5492,1655,619,1665,5493,5491, - 1630,4377,5486,5488,5489,5474,5487,2796,118,1278, - 339,432,1,1,5467,1,339,5272,5467,5272, - 2516,3517,780,42,5266,5263,4827,845,3361,4216, - 3598,4239,5471,1863,339,5732,5730,5739,117,5738, - 5734,5735,5733,5736,5737,5740,5731,4193,4170,138, - 4285,4262,5490,4147,1648,1691,5492,1655,619,1665, - 5493,5491,1630,125,5486,5488,5489,1,5487,5467, - 1184,135,5924,5918,136,5922,5467,5266,5263,581, - 845,5404,581,3598,5467,8723,8176,5467,40,5281, - 5281,5916,5917,5281,5947,5948,5467,5925,4331,433, - 42,42,1012,5508,4354,5376,5467,5373,5467,5266, - 5263,5927,845,3318,2598,3598,5467,5266,5263,5467, - 845,3318,1184,3598,5924,5918,129,5922,4331,1081, - 5928,1450,95,1458,4354,5385,5949,5926,390,5484, - 5485,5470,1,5916,5917,2787,5947,5948,2302,5925, - 4930,2644,2703,5467,5467,5938,5937,5950,5919,5920, - 5943,5944,5467,5927,5941,5942,5921,5923,5945,5946, - 5951,5931,5932,5933,5929,5930,5939,5940,5935,5934, - 5936,1081,5928,1450,1,1458,5467,5467,5949,5926, - 96,1,1,5477,1,5476,5435,345,5435,5467, - 3083,39,5452,5449,1278,5467,4932,5938,5937,5950, - 5919,5920,5943,5944,2644,2703,5941,5942,5921,5923, - 5945,5946,5951,5931,5932,5933,5929,5930,5939,5940, - 5935,5934,5936,42,5266,5263,4827,845,3361,4216, - 3598,4239,5467,1863,53,5732,5730,5739,5485,5738, - 5734,5735,5733,5736,5737,5740,5731,4193,4170,1278, - 4285,4262,5490,4147,1648,1691,5492,1655,619,1665, - 5493,5491,1630,3408,5486,5488,5489,1840,5487,42, - 5266,5263,4827,845,3361,4216,3598,4239,5485,1863, - 104,5732,5730,5739,780,5738,5734,5735,5733,5736, - 5737,5740,5731,4193,4170,3344,4285,4262,5490,4147, - 1648,1691,5492,1655,619,1665,5493,5491,1630,5467, - 5486,5488,5489,2298,5487,372,42,5266,5263,4827, - 845,3361,4216,3598,4239,5467,1863,5467,5732,5730, - 5739,2800,5738,5734,5735,5733,5736,5737,5740,5731, - 4193,4170,3908,4285,4262,5490,4147,1648,1691,5492, - 1655,619,1665,5493,5491,1630,5467,5486,5488,5489, - 5467,5487,42,5266,5263,4849,845,3361,4216,3598, - 4239,3066,1863,116,5732,5730,5739,780,5738,5734, - 5735,5733,5736,5737,5740,5731,4193,4170,3348,4285, - 4262,5490,4147,1648,1691,5492,1655,619,1665,5493, - 5491,1630,5467,5486,5488,5489,2844,5487,42,5266, - 5263,4827,845,3361,4216,3598,4239,119,1863,3350, - 5732,5730,5739,3436,5738,5734,5735,5733,5736,5737, - 5740,5731,4193,4170,3408,4285,4262,5490,4147,1648, - 1691,5492,1655,619,1665,5493,5491,1630,128,5486, - 5488,5489,5467,5487,42,5266,5263,4827,845,3361, - 4216,3598,4239,4331,1863,1,5732,5730,5739,4354, - 5738,5734,5735,5733,5736,5737,5740,5731,4193,4170, - 5467,4285,4262,5490,4147,1648,1691,5492,1655,619, - 1665,5493,5491,1630,828,5486,5488,5489,134,5487, - 5467,5124,5121,40,5508,40,5281,5281,3411,3385, - 877,2901,5732,5730,5739,5724,5738,5734,5735,5733, - 5736,5737,5740,5731,99,42,42,522,5508,5506, - 5458,5506,5455,48,5307,5307,2644,2703,1,367, - 5727,237,79,5467,5423,3226,5802,518,5803,5721, - 5728,5700,5726,5725,365,5722,5723,5701,127,5304, - 5858,1,241,5220,5216,610,5224,5859,5860,5534, - 5535,5346,877,5467,5207,5213,5186,5171,5189,5201, - 5198,5204,5195,5192,5183,5210,5467,2297,3577,161, - 50,5382,5382,5467,496,2364,2335,5467,8771,8771, - 1,5467,5162,4954,3657,40,5281,5281,5156,1188, - 5153,5180,5159,5150,5165,5168,5379,5177,5174,5147, - 223,5349,5858,5506,1235,518,494,610,410,5859, - 5860,2182,5732,5730,5739,5724,5738,5734,5735,5733, - 5736,5737,5740,5731,132,568,2644,2703,1,5118, - 5118,228,5118,228,228,228,228,228,1797,228, - 5727,5467,997,8407,4940,5649,5802,5467,5803,5721, - 5728,5700,5726,5725,5115,5722,5723,5701,1,5118, - 5118,228,5118,228,228,228,228,5284,2603,228, - 5467,5467,1138,8407,5467,617,4946,121,2104,120, - 189,5467,1362,3436,5115,3436,604,5426,1,5118, - 5118,228,5118,228,228,228,228,5284,5467,228, - 5467,4851,5955,8407,131,617,5467,5467,5445,5441, - 5467,126,1362,3529,5115,3192,604,2542,2449,1, - 5118,5118,228,5118,228,228,228,228,5352,220, - 228,1,5955,5506,8407,617,5467,3549,5467,4860, - 1258,4887,1362,2796,5467,5115,604,4893,2603,1, - 5118,5118,228,5118,228,228,228,228,5284,220, - 228,53,5955,511,8407,5484,617,5429,3411,3385, - 3411,3385,5648,1362,5467,5115,5467,604,5467,3720, - 1,5118,5118,228,5118,228,228,228,228,5284, - 219,228,5467,5955,5467,8407,617,2542,2449,2644, - 2703,5467,5464,1362,3783,5484,5115,604,5467,2, - 1,5118,5118,228,5118,228,228,228,228,228, - 220,228,1,5955,5467,8407,3791,617,103,1, - 5467,5473,5467,3845,1362,3846,5115,5467,604,5346, - 1217,1,5118,5118,228,5118,228,228,228,228, - 228,220,228,40,5955,2297,8407,617,5467,5467, - 5467,4030,4585,3909,1362,5467,107,5115,604,4603, - 1,5118,5118,228,5118,228,228,228,228,228, - 5467,228,3408,225,5955,8407,5467,5467,617,5349, - 2143,5467,5467,5467,4902,1362,5115,226,5724,604, - 3548,279,498,5467,5461,5467,5467,5467,5467,5472, - 5467,227,5724,5467,5467,5955,5467,617,5467,5467, - 5467,5467,5467,5727,1362,5467,5724,5467,604,5802, - 5467,5803,5721,5728,5700,5726,5725,5727,5722,5723, - 5701,5467,5467,5802,5955,5803,5721,5728,5700,5726, - 5725,5727,5722,5723,5701,5467,1883,5802,5467,5803, - 5721,5728,5700,5726,5725,5467,5722,5723,5701,5467, - 5467,5467,646 + 8633,1,1,1,1,1,1,1,1,430, + 2267,5067,1,5089,5085,5079,5082,5096,2917,5093, + 42,5423,1198,5422,5454,1,446,5413,5413,5185, + 5182,1,618,1,1,1,1,1,1,1072, + 1,1,1,556,1133,1,137,41,5197,5194, + 1,139,1,1,1173,53,5209,5206,5429,5902, + 1941,5413,5070,5070,228,5070,228,228,228,228, + 228,1,228,1,1,1,8633,1,1,1, + 1,1,1,1,1,2228,1818,5067,5224,1, + 5366,5366,4368,5363,2034,1388,5413,5742,361,5413, + 3968,1,53,5185,5182,5417,12,1,618,1, + 1,1,1,1,1,1072,1,1,1,556, + 302,1,5413,5839,5840,5841,1,5413,1,1, + 5714,5423,30,5422,5429,5902,1,5089,5085,4580, + 5082,3393,4276,4777,4299,2337,5256,140,5283,5289, + 5262,2303,5265,5277,5274,5280,5271,5268,5259,5286, + 4253,4230,5914,4345,4322,5436,4207,1561,1604,5438, + 1579,620,1597,5439,5437,1554,361,5432,5434,5435, + 5413,5433,11,3299,361,1,5089,5085,4566,5082, + 1204,4537,4777,5413,310,5310,310,1312,5413,506, + 42,5310,42,42,5076,5073,4580,775,3393,4276, + 4777,4299,5421,1293,5416,5678,5676,5685,5413,5684, + 5680,5681,5679,5682,5683,5686,5677,4253,4230,5413, + 4345,4322,5436,4207,1561,1604,5438,1579,620,1597, + 5439,5437,1554,5413,5432,5434,5435,2303,5433,288, + 5430,5431,835,1,5089,5085,2866,5082,1204,289, + 4777,5413,1990,5413,1312,344,42,42,3128,5454, + 5421,1388,5413,5742,5420,42,5076,5073,4580,775, + 3393,4276,4777,4299,5421,1293,347,5678,5676,5685, + 5808,5684,5680,5681,5679,5682,5683,5686,5677,4253, + 4230,2089,4345,4322,5436,4207,1561,1604,5438,1579, + 620,1597,5439,5437,1554,1270,5432,5434,5435,5413, + 5433,1,5089,5085,2866,5082,1204,1270,4777,1961, + 1029,138,5420,5413,1990,5857,1312,145,5076,5073, + 4580,775,3393,4276,4777,4299,5420,1293,1270,5678, + 5676,5685,523,5684,5680,5681,5679,5682,5683,5686, + 5677,4253,4230,2742,4345,4322,5436,4207,1561,1604, + 5438,1579,620,1597,5439,5437,1554,4860,5432,5434, + 5435,5413,5433,1270,1,5089,5085,5079,5082,5096, + 5421,5093,1,5089,5085,4566,5082,1204,1312,4777, + 5413,42,1,42,1,5089,5085,4580,5082,3393, + 4276,4777,4299,3603,5256,53,5283,5289,5262,5431, + 5265,5277,5274,5280,5271,5268,5259,5286,4253,4230, + 2337,4345,4322,5436,4207,1561,1604,5438,1579,620, + 1597,5439,5437,1554,4879,5432,5434,5435,5413,5433, + 5413,4616,5420,5413,7966,7784,5413,5076,5073,5431, + 775,5350,368,4777,1,1312,346,3128,42,2257, + 42,42,5076,5073,4580,775,3393,4276,4777,4299, + 5417,1293,788,5678,5676,5685,5413,5684,5680,5681, + 5679,5682,5683,5686,5677,4253,4230,5770,4345,4322, + 5436,4207,1561,1604,5438,1579,620,1597,5439,5437, + 1554,5413,5432,5434,5435,125,5433,42,5076,5073, + 4580,775,3393,4276,4777,4299,1270,1293,1270,5678, + 5676,5685,1150,5684,5680,5681,5679,5682,5683,5686, + 5677,4253,4230,366,4345,4322,5436,4207,1561,1604, + 5438,1579,620,1597,5439,5437,1554,135,5432,5434, + 5435,5413,5433,1,136,582,1407,5413,5871,5865, + 5413,5869,582,48,5253,5253,1990,360,1312,5413, + 5076,5073,5413,775,5350,134,4777,5863,5864,5416, + 5894,5895,5413,5872,433,1,1,53,1,5250, + 5218,5430,5218,2812,2839,1075,5413,5874,434,42, + 42,4888,5454,1210,5322,5413,5319,5413,1407,5413, + 5871,5865,129,5869,4437,1398,5875,1450,1,1468, + 3691,497,5896,5873,391,5430,5431,5316,1,5863, + 5864,5430,5894,5895,5413,5872,3774,5423,118,5422, + 2207,5885,5884,5897,5866,5867,5890,5891,3547,5874, + 5888,5889,5868,5870,5892,5893,5898,5878,5879,5880, + 5876,5877,5886,5887,5882,5881,5883,1398,5875,1450, + 3317,1468,2370,997,5896,5873,5413,5076,5073,95, + 775,1204,5331,4777,96,1,1,5413,1,5420, + 5381,4900,5381,5885,5884,5897,5866,5867,5890,5891, + 2812,2839,5888,5889,5868,5870,5892,5893,5898,5878, + 5879,5880,5876,5877,5886,5887,5882,5881,5883,42, + 5076,5073,4580,775,3393,4276,4777,4299,4391,1293, + 2,5678,5676,5685,4414,5684,5680,5681,5679,5682, + 5683,5686,5677,4253,4230,189,4345,4322,5436,4207, + 1561,1604,5438,1579,620,1597,5439,5437,1554,1875, + 5432,5434,5435,5413,5433,42,5076,5073,4580,775, + 3393,4276,4777,4299,40,1293,104,5678,5676,5685, + 1312,5684,5680,5681,5679,5682,5683,5686,5677,4253, + 4230,5413,4345,4322,5436,4207,1561,1604,5438,1579, + 620,1597,5439,5437,1554,5413,5432,5434,5435,2541, + 5433,5413,42,5076,5073,4580,775,3393,4276,4777, + 4299,5413,1293,117,5678,5676,5685,1957,5684,5680, + 5681,5679,5682,5683,5686,5677,4253,4230,4949,4345, + 4322,5436,4207,1561,1604,5438,1579,620,1597,5439, + 5437,1554,5413,5432,5434,5435,5413,5433,42,5076, + 5073,4816,775,3393,4276,4777,4299,5410,1293,116, + 5678,5676,5685,1312,5684,5680,5681,5679,5682,5683, + 5686,5677,4253,4230,3318,4345,4322,5436,4207,1561, + 1604,5438,1579,620,1597,5439,5437,1554,5413,5432, + 5434,5435,3263,5433,42,5076,5073,4580,775,3393, + 4276,4777,4299,4391,1293,3326,5678,5676,5685,4414, + 5684,5680,5681,5679,5682,5683,5686,5677,4253,4230, + 417,4345,4322,5436,4207,1561,1604,5438,1579,620, + 1597,5439,5437,1554,5413,5432,5434,5435,5413,5433, + 42,5076,5073,4580,775,3393,4276,4777,4299,4391, + 1293,132,5678,5676,5685,4414,5684,5680,5681,5679, + 5682,5683,5686,5677,4253,4230,5413,4345,4322,5436, + 4207,1561,1604,5438,1579,620,1597,5439,5437,1554, + 5413,5432,5434,5435,5413,5433,5413,5076,5073,3500, + 5454,40,5227,5227,128,2610,850,2079,5678,5676, + 5685,5670,5684,5680,5681,5679,5682,5683,5686,5677, + 39,5398,5395,5413,5372,1,495,5452,3128,99, + 42,42,127,5454,340,5404,5673,5401,79,3330, + 5413,4090,5749,40,5750,5667,5674,5646,5672,5671, + 161,5668,5669,5647,2549,2455,5805,1,241,5172, + 5168,611,5176,5806,5807,5480,5481,5292,850,5452, + 5159,5165,5138,5123,5141,5153,5150,5156,5147,5144, + 5135,5162,5413,2333,5413,5430,5431,1270,340,1204, + 411,4777,2812,2839,340,119,4909,5413,5114,237, + 3692,3469,5369,373,5108,5413,5105,5132,5111,5102, + 5117,5120,340,5129,5126,5099,223,5295,5805,1832, + 2812,2839,5413,611,1,5806,5807,4919,5678,5676, + 5685,5670,5684,5680,5681,5679,5682,5683,5686,5677, + 131,569,3350,5413,1,5070,5070,228,5070,228, + 228,228,228,228,5595,228,5673,5413,648,8633, + 2139,5413,5749,5413,5750,5667,5674,5646,5672,5671, + 5067,5668,5669,5647,1,5070,5070,228,5070,228, + 228,228,228,5230,2610,228,3444,3417,1120,8633, + 5413,618,5413,5076,5073,3271,775,1204,1072,4777, + 5067,103,556,5375,1,5070,5070,228,5070,228, + 228,228,228,5230,5413,228,5413,3207,5902,8633, + 3548,618,3350,50,5328,5328,3691,5413,1072,5413, + 5067,1052,556,2549,2455,1,5070,5070,228,5070, + 228,228,228,228,5298,220,228,5413,5902,5325, + 8633,618,5413,121,1,40,5227,5227,1072,3469, + 5227,5067,556,2178,5413,1,5070,5070,228,5070, + 228,228,228,228,5230,220,228,512,5902,5413, + 8633,3649,618,605,5413,8109,8109,5413,3562,1072, + 4832,5067,5413,556,5413,4838,1,5070,5070,228, + 5070,228,228,228,228,5230,219,228,1,5902, + 5452,8633,618,5413,120,5413,40,5227,5227,1072, + 3469,126,5067,556,5594,5413,1,5070,5070,228, + 5070,228,228,228,228,228,220,228,1,5902, + 5413,8633,3580,618,3444,3417,5413,519,5413,4847, + 1072,4111,5067,5413,556,5413,4582,1,5070,5070, + 228,5070,228,228,228,228,228,220,228,5413, + 5902,5413,8633,618,4845,5413,5413,5391,5387,5413, + 1072,5413,4920,5067,556,1918,1,5070,5070,228, + 5070,228,228,228,228,228,3350,228,1,225, + 5902,8633,5452,3552,618,3444,3417,1,5292,2812, + 2839,1072,5067,226,5670,556,5419,5413,5413,5413, + 2491,4703,4704,5413,2333,519,4956,227,5670,107, + 499,5902,4963,618,5413,279,5413,4858,5407,5673, + 1072,5413,5670,5413,556,5749,5413,5750,5667,5674, + 5646,5672,5671,5673,5668,5669,5647,5413,5295,5749, + 5902,5750,5667,5674,5646,5672,5671,5673,5668,5669, + 5647,5413,5413,5749,5413,5750,5667,5674,5646,5672, + 5671,5413,5668,5669,5647,5413,5413,5413,5413,5413, + 5413,5413,5413,5413,5418,5413,5413,5413,5413,5413, + 1253 }; }; public final static char termAction[] = TermAction.termAction; @@ -1724,59 +1713,59 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface Asb { public final static char asb[] = {0, - 509,1,547,1024,306,44,210,938,55,264, - 509,716,49,55,1031,1042,727,1042,722,1042, - 724,1042,1026,507,1042,716,717,57,44,711, - 847,760,866,717,760,717,1024,507,936,61, - 106,727,727,212,717,50,386,164,717,261, - 208,336,269,259,727,273,717,278,717,717, - 208,261,261,980,158,151,151,714,160,711, - 717,753,386,897,760,278,757,256,386,760, - 760,717,145,597,179,511,511,106,106,106, - 106,716,717,50,980,164,261,260,261,208, - 99,261,273,273,717,278,208,717,261,727, - 716,677,456,215,711,717,711,99,753,278, - 714,256,256,50,597,179,106,1105,106,106, - 106,717,980,980,1105,717,164,1118,493,1108, - 164,261,261,744,717,336,717,273,1105,338, - 1104,936,377,1024,507,507,507,507,716,1024, - 769,661,849,678,678,678,678,678,678,678, - 678,678,1061,1067,1072,1069,1076,1074,1081,1079, - 1083,1082,1084,3,1085,935,717,727,641,389, - 717,1024,386,677,454,256,1099,104,753,752, - 936,757,386,450,438,449,935,507,425,425, - 1105,1105,1105,717,145,1110,389,333,745,717, - 99,1105,678,717,714,593,446,445,661,306, - 306,306,306,717,809,386,386,661,983,305, - 145,661,1044,1044,144,144,809,677,678,678, - 678,678,678,678,678,678,678,678,678,678, - 678,678,678,678,678,678,678,677,677,677, - 677,677,677,677,677,677,677,677,677,678, - 661,720,642,716,717,809,431,454,753,729, - 677,447,447,591,714,392,179,511,179,934, - 934,980,50,160,500,678,1118,159,744,717, - 716,716,717,377,386,595,597,386,386,936, - 936,936,936,208,386,678,555,716,849,256, - 305,677,386,49,51,49,386,256,1069,1069, - 1067,1067,1067,1074,1074,1074,1074,1072,1072,1079, - 1076,1076,1082,1081,1083,1118,1084,720,641,1118, - 678,1118,980,1024,1024,1024,642,1024,717,10, - 980,980,717,727,386,677,1104,729,677,677, - 595,438,179,306,306,980,1110,678,678,717, - 717,717,386,597,1024,1024,1024,1024,717,717, - 717,145,678,306,1065,343,386,717,51,145, - 677,632,1024,632,1118,642,661,661,659,854, - 661,980,980,807,720,454,731,935,717,717, - 856,386,677,677,677,677,1024,1024,208,50, - 386,1065,714,336,717,50,392,386,711,386, - 10,980,44,1024,386,720,731,630,856,856, - 386,386,386,386,809,809,717,1065,1066,1065, - 677,343,53,336,386,386,579,642,807,642, - 980,10,44,677,642,639,1024,425,736,856, - 386,386,566,1065,809,678,256,53,727,727, - 1016,677,640,809,980,980,386,598,934,736, - 736,1066,386,256,642,386,809,980,385,49, - 736,642,386,306,642 + 493,1,531,952,208,333,145,866,3,157, + 493,715,338,3,959,970,580,970,575,970, + 577,970,954,491,970,715,716,5,333,710, + 824,737,1048,716,737,716,952,491,1118,9, + 54,580,580,240,716,339,387,99,716,245, + 143,238,147,243,580,175,716,180,716,716, + 143,245,245,908,713,162,162,169,171,710, + 716,730,387,1079,737,180,734,289,387,737, + 737,716,93,588,114,495,495,54,54,54, + 54,715,716,339,908,99,245,244,245,143, + 47,245,175,175,716,180,143,716,245,580, + 715,710,716,248,676,400,710,47,730,180, + 713,289,289,339,588,114,54,1033,54,54, + 54,716,908,908,1033,716,99,1046,437,1036, + 99,245,245,623,716,238,716,175,1033,390, + 1032,1118,378,952,491,491,491,491,715,952, + 746,660,826,677,677,677,677,677,677,677, + 677,677,989,995,1000,997,1004,1002,1009,1007, + 1011,1010,1012,292,1013,1117,716,580,640,395, + 716,952,52,289,1027,387,676,398,730,729, + 1118,734,387,480,468,479,1117,491,151,151, + 1033,1033,1033,716,93,1038,395,235,624,716, + 47,1033,677,716,713,584,476,475,660,208, + 208,208,208,716,786,387,387,660,911,207, + 93,660,972,972,92,92,786,676,677,677, + 677,677,677,677,677,677,677,677,677,677, + 677,677,677,677,677,677,677,676,676,676, + 676,676,676,676,676,676,676,676,676,677, + 660,444,641,715,716,786,461,398,730,446, + 676,477,477,582,713,833,114,495,114,1116, + 1116,908,339,171,484,677,1046,170,623,716, + 715,715,716,378,387,586,588,387,387,1118, + 1118,1118,1118,143,387,677,539,715,826,289, + 207,676,387,338,340,338,387,289,997,997, + 995,995,995,1002,1002,1002,1002,1000,1000,1007, + 1004,1004,1010,1009,1011,1046,1012,444,640,1046, + 677,1046,908,952,952,952,641,952,716,299, + 908,908,716,580,387,676,1032,446,676,676, + 586,468,114,208,208,908,1038,677,677,716, + 716,716,387,588,952,952,952,952,716,716, + 716,93,677,208,993,344,387,716,340,93, + 676,631,952,631,1046,641,660,660,658,831, + 660,908,908,784,444,398,448,1117,716,716, + 719,387,676,676,676,676,952,952,143,339, + 387,993,713,238,716,339,833,387,710,387, + 299,908,333,952,387,444,448,621,719,719, + 387,387,387,387,786,786,716,993,994,993, + 676,344,342,238,387,387,563,641,784,641, + 908,299,333,676,641,638,952,151,453,719, + 387,387,550,993,786,677,289,342,580,580, + 944,676,639,786,908,908,387,589,1116,453, + 453,994,387,289,641,387,786,908,386,338, + 453,641,387,208,641 }; }; public final static char asb[] = Asb.asb; @@ -1784,118 +1773,118 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface Asr { public final static byte asr[] = {0, - 121,0,63,72,95,69,118,87,71,12, - 13,31,64,14,32,33,16,17,18,66, - 34,19,20,35,36,37,61,38,39,10, - 21,22,23,41,42,43,29,27,28,24, - 25,30,45,9,8,6,11,3,4,7, - 1,2,5,0,29,0,59,72,75,0, - 58,49,12,13,60,46,14,65,50,74, - 15,16,51,52,17,18,53,54,55,19, - 20,56,67,57,10,68,21,47,40,22, - 48,23,9,3,8,4,11,59,7,5, - 1,2,26,6,0,58,49,12,13,60, - 46,14,65,50,74,15,16,51,52,17, - 18,53,54,55,19,20,56,67,57,10, - 68,21,47,40,22,48,23,9,3,8, - 6,71,11,4,7,5,26,1,2,0, - 75,59,63,72,95,87,62,3,70,9, - 11,69,0,74,7,114,115,116,47,9, - 3,8,6,5,72,71,11,73,49,12, - 13,60,46,14,65,50,15,16,51,52, - 17,18,53,55,19,20,56,67,57,10, - 68,21,40,22,48,23,4,1,2,26, - 0,59,70,0,64,66,3,10,32,36, - 34,31,39,13,23,12,19,17,18,20, - 21,16,14,22,41,45,42,43,29,38, - 33,37,5,7,4,27,28,8,6,24, - 25,30,35,1,2,118,9,0,4,44, - 59,72,0,1,2,123,59,0,4,59, - 72,0,1,2,9,71,0,31,64,32, - 33,66,7,34,35,36,37,61,38,39, - 41,42,43,29,27,28,8,6,24,25, - 5,30,63,45,3,10,65,60,67,68, - 13,23,12,19,17,18,20,21,16,14, - 22,49,55,56,15,53,52,50,46,48, - 51,57,1,2,40,4,0,9,69,71, - 70,0,96,90,24,25,91,92,88,89, - 44,93,94,97,98,99,100,101,102,117, - 72,95,70,104,105,106,107,108,109,110, - 111,112,113,118,71,11,63,1,2,8, - 6,4,3,62,69,87,9,0,59,69, - 0,49,12,13,60,46,14,65,50,15, - 16,51,52,17,18,53,55,19,20,56, - 67,57,10,68,21,40,22,48,23,1, - 2,4,95,0,63,70,69,1,2,0, + 121,0,29,0,59,72,75,0,58,49, + 12,13,60,46,14,65,50,74,15,16, + 51,52,17,18,53,54,55,19,20,56, + 67,57,10,68,21,47,40,22,48,23, + 9,3,8,4,11,59,7,5,1,2, + 26,6,0,58,49,12,13,60,46,14, + 65,50,74,15,16,51,52,17,18,53, + 54,55,19,20,56,67,57,10,68,21, + 47,40,22,48,23,9,3,8,6,71, + 11,4,7,5,26,1,2,0,74,7, + 114,115,116,47,9,3,8,6,5,72, + 71,11,73,49,12,13,60,46,14,65, + 50,15,16,51,52,17,18,53,55,19, + 20,56,67,57,10,68,21,40,22,48, + 23,4,1,2,26,0,4,59,72,0, + 63,70,69,1,2,0,1,2,123,59, + 0,75,59,63,72,95,87,62,3,70, + 9,11,69,0,1,2,9,71,0,31, + 64,32,33,66,7,34,35,36,37,61, + 38,39,41,42,43,29,27,28,8,6, + 24,25,5,30,63,45,3,10,65,60, + 67,68,13,23,12,19,17,18,20,21, + 16,14,22,49,55,56,15,53,52,50, + 46,48,51,57,1,2,40,4,0,59, + 70,0,4,44,59,72,0,64,66,3, + 10,32,36,34,31,39,13,23,12,19, + 17,18,20,21,16,14,22,41,45,42, + 43,29,38,33,37,5,7,4,27,28, + 8,6,24,25,30,35,1,2,118,9, + 0,63,72,95,69,118,87,71,12,13, + 31,64,14,32,33,16,17,18,66,34, + 19,20,35,36,37,61,38,39,10,21, + 22,23,41,42,43,29,27,28,24,25, + 30,45,9,8,6,11,3,4,7,1, + 2,5,0,96,90,24,25,91,92,88, + 89,44,93,94,97,98,99,100,101,102, + 117,72,95,70,104,105,106,107,108,109, + 110,111,112,113,118,71,11,63,1,2, + 8,6,4,3,62,69,87,9,0,9, + 69,71,70,0,59,69,0,9,71,64, + 66,61,27,28,8,6,24,25,30,35, + 3,41,45,42,43,29,38,33,37,13, + 23,12,19,17,18,20,21,16,14,22, + 32,36,34,31,39,59,7,1,2,5, + 4,10,0,119,0,46,48,75,3,59, + 72,11,61,9,63,95,70,69,87,0, 9,72,118,87,11,69,0,8,6,7, 5,4,1,2,3,62,63,70,69,9, - 87,95,0,9,71,64,66,61,27,28, - 8,6,24,25,30,35,3,41,45,42, - 43,29,38,33,37,13,23,12,19,17, - 18,20,21,16,14,22,32,36,34,31, - 39,59,7,1,2,5,4,10,0,72, - 9,62,3,70,69,11,44,0,121,73, - 60,46,14,65,50,16,51,52,17,18, - 53,55,19,20,56,67,57,68,21,40, - 22,48,23,13,12,49,9,3,8,6, - 11,47,58,74,15,26,7,1,2,5, - 4,10,54,0,12,13,14,16,17,18, - 19,20,21,22,23,49,46,50,15,51, - 52,53,55,56,57,40,48,11,9,87, - 7,1,2,62,3,8,6,5,4,0, - 5,7,3,62,6,8,95,49,12,13, - 46,14,65,50,15,16,51,52,17,18, - 53,55,19,20,56,67,57,10,68,21, - 40,22,48,23,1,2,4,87,9,60, - 0,74,114,115,116,26,72,121,119,122, - 71,73,75,47,54,58,77,79,85,83, - 76,81,82,84,86,59,78,80,9,11, - 49,60,46,65,50,15,51,52,53,55, - 56,67,57,68,40,48,61,64,66,10, - 32,36,34,31,39,13,23,12,19,17, - 18,20,21,16,14,22,41,45,42,43, - 29,38,33,37,27,28,24,25,30,35, - 5,7,3,6,8,4,1,2,0,119, - 0,26,72,4,1,2,59,0,46,48, - 75,3,59,72,11,61,9,63,95,70, - 69,87,0,40,1,2,4,114,115,116, - 0,61,46,7,48,5,1,2,4,75, - 9,59,72,95,118,87,71,11,62,3, - 120,96,103,90,27,28,8,6,24,25, - 91,92,88,89,44,93,94,97,98,99, - 100,101,102,117,104,105,106,107,108,109, - 110,111,112,113,63,69,70,0,9,87, - 12,13,31,14,32,33,16,17,18,34, - 19,20,35,36,37,61,38,39,10,21, - 22,23,41,42,43,29,3,27,28,8, - 6,24,25,30,4,45,5,7,1,2, - 66,64,0,76,0,46,61,48,9,63, - 95,70,69,87,0,49,12,13,60,46, - 14,65,50,15,16,51,52,17,18,53, - 55,19,20,56,67,57,10,68,21,40, - 22,48,23,1,2,4,66,64,24,25, - 6,91,92,99,8,100,5,30,44,107, - 108,104,105,106,112,111,113,89,88,109, - 110,97,98,93,94,101,102,27,28,90, - 103,3,62,70,69,63,0,60,46,14, - 65,50,16,51,52,17,18,53,55,19, - 20,56,67,57,10,68,21,40,22,48, - 23,13,12,49,7,3,8,6,5,47, - 54,58,74,15,44,1,2,4,26,11, - 9,0,64,66,27,28,24,25,30,35, - 41,45,42,43,29,38,33,37,13,23, - 12,19,17,18,20,21,16,14,22,10, - 32,36,34,31,39,8,6,62,5,7, - 1,2,4,3,0,10,65,60,67,68, - 13,23,12,19,17,18,20,21,16,14, - 22,75,59,5,4,2,1,48,40,57, - 56,55,7,53,52,51,15,50,46,49, - 120,103,27,28,62,3,96,90,6,91, - 92,24,25,89,88,44,93,94,97,98, - 8,99,100,101,63,95,87,70,104,105, - 106,107,108,109,110,111,112,113,72,118, - 11,102,117,69,71,9,0,11,9,5, - 7,3,1,2,4,6,8,72,0 + 87,95,0,72,9,62,3,70,69,11, + 44,0,121,73,60,46,14,65,50,16, + 51,52,17,18,53,55,19,20,56,67, + 57,68,21,40,22,48,23,13,12,49, + 9,3,8,6,11,47,58,74,15,26, + 7,1,2,5,4,10,54,0,12,13, + 14,16,17,18,19,20,21,22,23,49, + 46,50,15,51,52,53,55,56,57,40, + 48,11,9,87,7,1,2,62,3,8, + 6,5,4,0,26,72,4,1,2,59, + 0,5,7,3,62,6,8,95,49,12, + 13,46,14,65,50,15,16,51,52,17, + 18,53,55,19,20,56,67,57,10,68, + 21,40,22,48,23,1,2,4,87,9, + 60,0,40,1,2,4,114,115,116,0, + 74,114,115,116,26,72,121,119,122,71, + 73,75,47,54,58,77,79,85,83,76, + 81,82,84,86,59,78,80,9,11,49, + 60,46,65,50,15,51,52,53,55,56, + 67,57,68,40,48,61,64,66,10,32, + 36,34,31,39,13,23,12,19,17,18, + 20,21,16,14,22,41,45,42,43,29, + 38,33,37,27,28,24,25,30,35,5, + 7,3,6,8,4,1,2,0,46,61, + 48,9,63,95,70,69,87,0,61,46, + 7,48,5,1,2,4,75,9,59,72, + 95,118,87,71,11,62,3,120,96,103, + 90,27,28,8,6,24,25,91,92,88, + 89,44,93,94,97,98,99,100,101,102, + 117,104,105,106,107,108,109,110,111,112, + 113,63,69,70,0,9,87,12,13,31, + 14,32,33,16,17,18,34,19,20,35, + 36,37,61,38,39,10,21,22,23,41, + 42,43,29,3,27,28,8,6,24,25, + 30,4,45,5,7,1,2,66,64,0, + 76,0,49,12,13,60,46,14,65,50, + 15,16,51,52,17,18,53,55,19,20, + 56,67,57,10,68,21,40,22,48,23, + 1,2,4,95,0,60,46,14,65,50, + 16,51,52,17,18,53,55,19,20,56, + 67,57,10,68,21,40,22,48,23,13, + 12,49,7,3,8,6,5,47,54,58, + 74,15,44,1,2,4,26,11,9,0, + 64,66,27,28,24,25,30,35,41,45, + 42,43,29,38,33,37,13,23,12,19, + 17,18,20,21,16,14,22,10,32,36, + 34,31,39,8,6,62,5,7,1,2, + 4,3,0,10,65,60,67,68,13,23, + 12,19,17,18,20,21,16,14,22,75, + 59,5,4,2,1,48,40,57,56,55, + 7,53,52,51,15,50,46,49,120,103, + 27,28,62,3,96,90,6,91,92,24, + 25,89,88,44,93,94,97,98,8,99, + 100,101,63,95,87,70,104,105,106,107, + 108,109,110,111,112,113,72,118,11,102, + 117,69,71,9,0,11,9,5,7,3, + 1,2,4,6,8,72,0,49,12,13, + 60,46,14,65,50,15,16,51,52,17, + 18,53,55,19,20,56,67,57,10,68, + 21,40,22,48,23,1,2,4,66,64, + 24,25,6,91,92,99,8,100,5,30, + 44,107,108,104,105,106,112,111,113,89, + 88,109,110,97,98,93,94,101,102,27, + 28,90,103,3,62,70,69,63,0 }; }; public final static byte asr[] = Asr.asr; @@ -1903,59 +1892,59 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface Nasb { public final static char nasb[] = {0, - 106,11,24,11,4,228,11,201,11,22, - 174,232,232,11,212,213,11,213,146,213, - 21,213,206,11,11,232,148,104,129,100, - 181,11,197,10,11,148,11,11,11,104, - 104,11,11,11,165,165,12,104,182,104, - 165,11,104,11,11,104,165,104,148,10, - 11,104,85,115,47,67,67,133,11,187, - 148,104,12,199,11,104,28,73,12,11, - 11,10,140,104,104,201,201,104,124,104, - 104,232,31,190,115,215,104,104,14,82, - 49,14,104,22,10,33,82,42,85,122, - 142,59,35,69,187,148,100,140,151,33, - 133,73,73,190,119,119,124,57,201,124, - 124,165,115,115,57,148,115,11,24,227, - 215,14,14,153,42,11,10,22,57,11, - 11,11,89,11,11,11,11,11,232,11, - 11,234,148,35,35,179,35,35,35,35, - 35,35,11,11,11,11,11,11,11,11, - 11,11,11,35,11,11,42,122,64,11, - 165,11,12,35,104,73,11,11,104,151, - 11,224,12,11,98,11,11,11,93,93, - 57,57,57,31,140,129,11,232,26,165, - 49,57,35,22,133,89,67,67,234,248, - 248,248,248,148,162,12,12,1,35,80, - 140,234,11,11,16,16,162,171,35,35, - 35,35,35,35,35,35,35,35,35,35, - 35,35,35,35,35,35,35,35,35,35, - 35,35,35,35,35,35,35,35,171,35, - 33,104,157,142,10,162,11,53,151,104, - 35,11,11,98,133,119,119,201,104,11, - 11,115,190,115,11,35,11,40,193,165, - 232,232,10,222,12,117,104,12,12,11, - 11,11,11,139,12,35,11,232,148,73, - 248,59,12,189,148,189,12,73,11,11, + 97,11,22,11,4,225,11,206,11,20, + 177,229,229,11,217,218,11,218,128,218, + 19,218,211,11,11,229,130,93,106,89, + 186,11,238,10,11,130,11,11,11,93, + 93,11,11,11,152,152,12,93,187,93, + 152,11,93,11,11,93,152,93,130,10, + 11,93,137,157,110,53,53,24,11,200, + 130,93,12,240,11,93,64,62,12,11, + 11,10,104,93,93,206,206,93,115,93, + 93,229,95,203,157,231,93,93,35,125, + 190,35,93,20,10,26,125,42,137,40, + 133,200,130,58,55,28,89,104,76,26, + 110,62,62,203,149,149,115,49,206,115, + 115,152,157,157,49,130,157,11,22,224, + 231,35,35,141,42,11,10,20,49,11, + 11,11,80,11,11,11,11,11,229,11, + 11,220,130,28,28,184,28,28,28,28, + 28,28,11,11,11,11,11,11,11,11, + 11,11,11,28,11,11,42,40,37,11, + 152,11,11,62,11,12,28,93,93,76, + 11,122,12,11,87,11,11,11,51,51, + 49,49,49,95,104,106,11,229,139,152, + 190,49,28,20,110,80,53,53,220,248, + 248,248,248,130,174,12,12,1,28,72, + 104,220,11,11,14,14,174,171,28,28, + 28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,171,28, + 26,93,159,133,10,174,11,45,76,93, + 28,11,11,87,110,149,149,206,93,11, + 11,157,203,157,11,28,11,74,194,152, + 229,229,10,120,12,147,93,12,12,11, + 11,11,11,103,12,28,11,229,130,62, + 248,55,12,202,130,202,12,62,11,11, 11,11,11,11,11,11,11,11,11,11, - 11,11,11,11,11,11,11,78,168,11, - 35,11,115,11,11,11,169,11,22,113, - 115,115,22,87,12,35,57,151,35,35, - 117,185,119,248,248,115,100,35,35,10, - 165,165,12,119,11,11,11,11,42,10, - 148,140,35,248,104,75,12,148,95,140, - 35,136,11,11,11,169,238,238,242,11, - 238,115,115,11,104,53,104,11,10,10, - 104,12,171,171,171,171,11,11,138,42, - 12,62,224,11,10,42,248,12,100,12, - 244,115,104,11,12,78,45,11,151,104, - 12,12,12,12,162,162,42,104,111,11, - 171,224,96,11,12,12,104,169,11,169, - 115,244,100,171,169,136,11,93,104,151, - 12,12,11,62,162,35,73,96,87,87, - 98,35,11,244,115,115,12,247,11,45, - 104,111,12,73,169,12,244,115,12,189, - 45,169,12,248,169 + 11,11,11,11,11,11,11,70,168,11, + 28,11,157,11,11,11,169,11,20,155, + 157,157,20,33,12,28,49,76,28,28, + 147,198,149,248,248,157,89,28,28,10, + 152,152,12,149,11,11,11,11,42,10, + 130,104,28,248,93,67,12,130,84,104, + 28,145,11,11,11,169,164,164,242,11, + 164,157,157,11,93,45,93,11,10,10, + 93,12,171,171,171,171,11,11,102,42, + 12,78,122,11,10,42,248,12,89,12, + 244,157,93,11,12,70,113,11,76,93, + 12,12,12,12,174,174,42,93,182,11, + 171,122,85,11,12,12,93,169,11,169, + 157,244,89,171,169,145,11,51,93,76, + 12,12,11,78,174,28,62,85,33,33, + 87,28,11,244,157,157,12,247,11,113, + 93,182,12,62,169,12,244,157,12,202, + 113,169,12,248,169 }; }; public final static char nasb[] = Nasb.nasb; @@ -1963,31 +1952,31 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface Nasr { public final static char nasr[] = {0, - 3,13,8,6,148,146,120,145,144,2, - 0,34,0,111,0,6,2,8,135,0, - 6,1,0,152,0,186,0,5,188,0, - 151,0,48,5,6,8,2,13,0,184, - 0,4,3,0,123,0,178,0,67,134, - 133,0,13,2,8,6,66,0,5,30, - 0,139,0,5,66,0,77,0,13,2, - 8,6,87,0,5,175,0,157,0,173, - 0,2,67,0,155,0,57,0,96,97, - 5,0,110,0,2,114,0,97,96,64, - 6,2,8,5,0,172,65,47,5,0, - 137,0,5,40,39,0,6,91,23,5, - 0,156,0,105,5,47,65,0,5,8, - 2,64,6,91,0,113,0,2,131,67, - 0,166,6,165,0,3,6,2,44,0, - 61,0,6,104,185,0,5,47,40,176, - 0,5,99,0,2,54,0,66,47,78, - 5,40,0,65,47,5,132,0,6,13, - 8,2,3,0,97,96,64,56,6,8, - 2,0,6,104,162,0,5,48,168,0, - 5,47,65,68,0,2,6,120,116,117, - 118,13,88,0,5,47,65,104,45,6, - 0,97,96,6,56,0,39,2,8,5, - 154,6,0,5,48,40,0,5,48,115, - 0,23,177,5,102,0,34,5,48,0 + 3,13,8,6,149,147,120,146,145,2, + 0,34,0,6,2,8,136,0,6,1, + 0,153,0,179,0,48,5,6,8,2, + 13,0,57,0,111,0,5,66,0,157, + 0,4,3,0,13,2,8,6,66,0, + 110,0,77,0,5,30,0,13,2,8, + 6,87,0,5,189,0,5,176,0,158, + 0,174,0,185,0,61,0,140,0,96, + 97,5,0,2,114,0,97,96,64,6, + 2,8,5,0,152,0,173,65,47,5, + 0,2,132,67,0,64,2,8,5,6, + 91,0,124,0,105,5,47,65,0,97, + 96,6,56,0,2,67,0,3,6,2, + 44,0,167,6,166,0,156,0,187,0, + 6,104,186,0,113,0,6,91,23,5, + 0,2,54,0,5,40,39,0,5,47, + 40,177,0,5,48,115,0,66,47,78, + 5,40,0,5,99,0,65,47,5,133, + 0,138,0,6,13,8,2,3,0,67, + 135,134,0,6,104,163,0,97,96,64, + 56,6,8,2,0,5,47,65,68,0, + 2,6,120,116,117,118,13,88,0,5, + 48,40,0,39,2,8,5,155,6,0, + 5,47,65,104,45,6,0,5,48,169, + 0,23,178,5,102,0,34,5,48,0 }; }; public final static char nasr[] = Nasr.nasr; @@ -2027,14 +2016,14 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 204,214,150,161,210,211,212,0,0,0, 0,0,209,222,182,0,0,0,213,0, 0,0,243,151,178,192,193,194,195,196, - 198,201,0,216,219,221,239,0,242,0, - 0,131,144,145,148,0,0,158,160,0, - 174,0,184,185,186,187,188,191,0,197, - 199,0,200,205,0,217,218,0,223,226, - 228,230,0,233,234,235,0,237,238,241, - 0,130,0,154,157,177,180,202,215,220, - 0,224,225,227,229,0,231,232,244,245, - 0,0,0 + 198,201,0,0,216,219,221,239,0,242, + 0,0,131,144,145,148,0,0,158,160, + 0,174,0,184,185,186,187,188,191,0, + 197,199,0,200,205,0,217,218,0,223, + 226,228,230,0,233,234,235,0,237,238, + 241,0,130,0,154,157,177,180,202,215, + 220,0,224,225,227,229,0,231,232,244, + 245,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -2082,16 +2071,16 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public final static char scopeLhs[] = { 45,18,18,82,18,18,18,18,82,71, 46,76,75,118,62,52,82,81,45,18, - 82,20,3,7,162,162,159,116,45,74, - 118,117,119,53,46,135,128,82,18,18, - 128,98,58,130,85,165,162,159,125,117, - 117,119,177,50,57,139,19,18,18,18, - 18,18,12,113,159,125,82,81,81,38, - 135,81,18,18,18,18,98,82,20,166, - 162,178,96,103,60,77,59,154,86,119, - 83,79,140,139,173,135,17,159,119,115, - 22,126,126,56,135,135,82,45,159,80, - 133,44,133,44,165,115,116,45,45,58 + 82,20,3,7,163,163,160,116,45,74, + 118,117,119,53,46,136,129,82,18,18, + 129,98,58,131,85,166,163,160,126,117, + 117,119,178,50,57,140,19,18,18,18, + 18,18,12,113,160,126,82,81,81,38, + 136,81,18,18,18,18,98,82,20,167, + 163,179,96,103,60,77,59,155,86,119, + 83,79,141,140,174,136,17,160,119,115, + 22,127,127,56,136,136,82,45,160,80, + 134,44,134,44,166,115,116,45,45,58 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -2122,11 +2111,11 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 267,279,279,263,291,269,42,42,267,197, 42,197,129,173,27,27,302,263,267,279, 263,263,263,269,267,22,30,42,197,197, - 30,60,110,4,42,34,27,302,259,263, + 30,62,110,4,42,34,27,302,259,263, 263,263,11,269,37,8,197,197,197,197, 197,197,177,17,302,259,42,42,42,229, - 22,42,197,197,197,197,60,42,197,34, - 27,68,60,62,110,56,110,126,115,263, + 22,42,197,197,197,197,62,42,197,34, + 27,56,62,64,110,58,110,126,115,263, 42,42,1,8,25,22,197,302,263,13, 198,263,263,70,22,22,42,267,302,42, 53,86,53,86,34,13,263,267,267,110 @@ -2137,25 +2126,25 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface ScopeRhs { public final static char scopeRhs[] = {0, - 314,3,61,0,127,0,313,3,119,0, - 127,176,0,129,181,75,0,218,0,291, - 129,44,128,0,21,0,293,129,44,26, + 315,3,61,0,127,0,314,3,119,0, + 127,176,0,129,181,75,0,218,0,292, + 129,44,128,0,21,0,294,129,44,26, 0,21,55,0,34,135,0,21,55,0, - 0,293,129,44,26,189,0,21,132,0, - 291,129,44,132,0,178,130,0,141,0, - 223,3,290,0,290,0,2,0,127,0, + 0,294,129,44,26,189,0,21,132,0, + 292,129,44,132,0,178,130,0,141,0, + 223,3,291,0,291,0,2,0,127,0, 178,130,228,0,178,130,40,228,0,178, - 130,310,40,0,133,191,168,130,0,129, + 130,311,40,0,133,191,168,130,0,129, 0,191,168,130,0,137,129,0,171,0, - 306,129,171,0,129,171,0,224,129,0, + 307,129,171,0,129,171,0,224,129,0, 168,244,0,140,0,0,0,138,0,0, - 0,305,129,59,250,0,128,0,250,0, - 3,0,0,128,0,304,129,59,0,45, - 128,0,154,3,0,129,280,279,129,75, - 278,171,0,279,129,75,278,171,0,217, - 0,218,0,278,171,0,98,0,0,217, + 0,306,129,59,251,0,128,0,251,0, + 3,0,0,128,0,305,129,59,0,45, + 128,0,154,3,0,129,281,280,129,75, + 279,171,0,280,129,75,279,171,0,217, + 0,218,0,279,171,0,98,0,0,217, 0,218,0,205,98,0,0,217,0,218, - 0,279,129,278,171,0,217,0,205,0, + 0,280,129,279,171,0,217,0,205,0, 0,217,0,231,129,3,0,127,0,0, 0,0,0,231,129,3,220,0,227,3, 0,215,129,0,210,0,150,0,168,130, @@ -2163,17 +2152,17 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 231,129,3,183,0,183,0,2,0,0, 127,0,0,0,0,0,210,3,0,203, 0,230,129,59,29,15,0,178,130,54, - 47,0,199,129,0,133,178,130,276,47, - 0,178,130,276,47,0,178,130,70,125, + 47,0,199,129,0,133,178,130,277,47, + 0,178,130,277,47,0,178,130,70,125, 54,0,230,129,59,54,0,230,129,59, - 123,54,0,230,129,59,126,54,0,273, - 129,59,125,65,0,273,129,59,65,0, + 123,54,0,230,129,59,126,54,0,274, + 129,59,125,65,0,274,129,59,65,0, 178,130,65,0,138,0,191,178,130,244, 0,140,0,178,130,244,0,191,168,130, - 10,0,168,130,10,0,95,140,0,266, - 129,147,0,266,129,171,0,164,85,0, - 226,163,226,301,3,82,0,127,175,0, - 226,301,3,82,0,129,0,127,175,0, + 10,0,168,130,10,0,95,140,0,267, + 129,147,0,267,129,171,0,164,85,0, + 226,163,226,302,3,82,0,127,175,0, + 226,302,3,82,0,129,0,127,175,0, 226,163,226,163,226,3,82,0,226,163, 226,3,82,0,226,3,82,0,129,0, 129,0,127,175,0,164,3,76,202,81, @@ -2182,11 +2171,11 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 34,173,0,172,0,179,34,173,0,239, 3,86,0,202,158,239,3,84,0,64, 175,0,239,3,84,0,127,175,64,175, - 0,300,129,59,0,164,0,218,78,0, + 0,301,129,59,0,164,0,218,78,0, 31,0,164,117,161,0,31,173,0,179, 3,0,127,153,0,223,3,0,218,62, - 263,0,164,62,0,179,3,297,66,130, - 0,127,0,0,0,0,297,66,130,0, + 264,0,164,62,0,179,3,298,66,130, + 0,127,0,0,0,0,298,66,130,0, 2,149,127,0,0,0,0,179,3,35, 0,151,0,127,26,168,130,0,32,151, 0,95,140,32,151,0,217,178,130,0, @@ -2198,10 +2187,10 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym 164,3,63,179,44,32,0,179,44,32, 0,223,3,127,191,168,130,10,0,127, 191,168,130,10,0,140,2,0,127,0, - 223,3,126,255,168,130,10,0,255,168, + 223,3,126,256,168,130,10,0,256,168, 130,10,0,138,2,0,127,0,223,3, 137,0,223,3,142,0,164,62,142,0, - 258,0,32,0,32,144,0,167,0,137, + 259,0,32,0,32,144,0,167,0,137, 0,164,3,0 }; }; @@ -2210,37 +2199,37 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface ScopeState { public final static char scopeState[] = {0, - 2799,2683,0,1396,1353,851,0,2369,990,0, - 4887,0,4893,4860,4851,0,2917,2922,2863,1970, - 0,997,568,0,1999,0,3491,3072,0,4793, - 2796,3461,0,3501,2925,0,3128,2881,2387,2990, - 2821,3907,3844,3781,3718,3655,3592,3529,3459,3230, - 3167,0,2879,935,0,1621,1587,1324,1116,3468, - 4743,2745,2730,2787,2429,2400,0,931,0,3836, - 3773,3468,3232,2812,4743,3721,3514,3017,1988,3236, - 4637,2941,1227,2849,0,4778,4678,4389,4082,4005, - 3940,3877,4567,3814,3751,4543,4513,3688,3932,3625, - 2187,3492,3262,3200,3179,3041,2638,2964,0,3468, - 4752,4637,2941,4765,2745,4477,4665,4490,2730,3017, - 2429,4520,4652,2849,0,4752,4765,0,2632,2598, - 3192,2182,3869,3806,2414,4778,4678,2093,4389,4082, - 3743,4005,3940,3680,3877,3554,4567,3814,3751,2004, - 4543,3299,944,4513,3688,3932,836,3096,3625,2009, - 2187,3492,3262,773,3200,3179,3041,3318,2638,4505, - 2964,2393,1133,1070,717,845,646,2745,4477,4665, - 4490,3468,1012,823,2730,997,568,3017,2429,4752, - 4520,4637,2941,4652,2849,4765,619,4454,4395,2193, - 2232,2302,2268,2364,2335,581,2703,2644,2603,2570, - 2542,2449,3436,3411,3385,3141,2759,4354,4331,4308, - 4285,4262,4239,4216,4193,4170,3361,4147,1883,2143, - 1840,2104,2054,1235,1188,1797,2015,1965,1145,901, - 1754,1711,1668,1625,1582,1539,1496,1453,1410,1367, - 1319,525,1926,854,780,730,1278,674,1025,951, - 1086,0,525,4505,2393,0,4790,4685,3907,3844, - 3781,3718,3655,3592,3529,3459,3230,3167,4377,3064, - 2987,4070,2910,2824,4027,3993,3284,3950,2626,0, - 4377,3064,2987,4070,2910,2824,4027,3993,3284,3950, - 2626,4790,4685,0 + 3383,3382,0,3097,3026,2677,0,2554,2360,0, + 4838,0,4847,4832,3207,0,3153,2414,2950,1871, + 0,648,569,0,2034,0,3500,2917,0,3942, + 3691,3631,0,3351,2771,0,3359,2968,715,1866, + 845,3967,3904,3841,3777,3688,3625,3562,3492,3262, + 3199,0,3778,3499,0,669,0,1742,1708,1355, + 1113,3501,2690,2881,2866,3128,2435,2406,0,1063, + 710,3501,3264,3023,2690,4559,3908,3049,1124,3629, + 4672,1137,2644,2657,0,4791,4786,4769,4588,4449, + 4142,4065,4604,4000,3937,3992,3331,3874,2953,3658, + 2222,3525,3294,3214,3073,2931,2645,2725,0,3501, + 4685,4672,1137,4746,2881,3746,4653,4537,2866,3049, + 2435,3784,4566,2657,0,4685,4746,0,3761,3649, + 3271,3580,4164,3929,2420,4791,4786,2605,4769,4588, + 3850,4449,4142,3811,4065,3587,4604,4000,3937,2450, + 3992,2998,2217,3331,3874,2953,947,3033,3658,851, + 2222,3525,3294,661,3214,3073,2931,1204,2645,4550, + 2725,2399,2128,2039,719,775,1253,2881,3746,4653, + 4537,3501,1075,788,2866,648,569,3049,2435,4685, + 3784,4672,1137,4566,2657,4746,620,4514,4455,2228, + 2267,2337,2303,2370,997,582,2839,2812,2610,2577, + 2549,2455,3469,3444,3417,3173,2894,4414,4391,4368, + 4345,4322,4299,4276,4253,4230,3393,4207,1918,2178, + 1875,2139,2089,1210,1150,1832,2050,2000,1090,904, + 1789,1746,1703,1660,1617,1574,1531,1488,1445,1402, + 1359,526,1961,801,1312,732,1270,676,1029,954, + 857,0,526,4550,2399,0,4762,4714,3967,3904, + 3841,3777,3688,3625,3562,3492,3262,3199,4437,3096, + 3019,4130,2942,2687,4087,4053,3316,4010,2633,0, + 4437,3096,3019,4130,2942,2687,4087,4053,3316,4010, + 2633,4762,4714,0 }; }; public final static char scopeState[] = ScopeState.scopeState; @@ -2248,58 +2237,58 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public interface InSymb { public final static char inSymb[] = {0, - 0,295,47,58,129,171,189,26,15,54, - 296,54,276,3,267,268,250,269,244,270, - 65,271,272,128,126,10,130,278,129,3, + 0,296,47,58,129,171,189,26,15,54, + 297,54,277,3,268,269,251,270,244,271, + 65,272,273,128,126,10,130,279,129,3, 4,132,7,5,126,130,183,26,44,29, 59,123,126,125,130,130,29,59,168,234, 130,167,127,126,125,59,130,44,130,178, - 168,75,129,266,210,188,183,129,277,215, + 168,75,129,267,129,188,183,210,278,215, 130,6,210,7,126,44,172,62,3,64, 66,178,168,3,44,63,129,59,129,59, 59,70,178,178,158,129,127,126,129,178, - 4,129,59,129,178,129,168,26,129,279, - 72,3,70,62,215,130,69,168,129,129, + 4,129,59,129,178,129,168,26,129,280, + 72,215,130,62,3,70,69,168,129,129, 129,62,62,191,129,129,129,230,229,129, - 129,130,275,133,305,130,169,228,47,171, - 307,129,129,72,191,258,191,129,273,125, - 274,291,172,39,31,34,36,32,10,137, + 129,130,276,133,306,130,169,228,47,171, + 308,129,129,72,191,259,191,129,274,125, + 275,292,172,39,31,34,36,32,10,137, 135,3,130,35,30,5,25,24,6,8, 28,27,142,148,150,149,152,151,156,155, - 159,157,160,61,161,294,191,279,59,289, - 130,290,154,129,59,218,161,168,6,185, - 291,215,231,232,147,233,293,26,10,60, - 230,230,230,178,168,129,309,228,40,130, - 4,273,70,69,129,3,221,220,3,44, + 159,157,160,61,161,295,191,280,59,290, + 130,291,168,218,161,154,129,59,6,185, + 292,215,231,232,147,233,294,26,10,60, + 230,230,230,178,168,129,310,228,40,130, + 4,274,70,69,129,3,221,220,3,44, 44,44,44,130,3,179,164,129,64,66, 168,3,127,126,103,120,3,62,90,96, 25,24,92,91,6,94,93,63,44,88, 89,8,98,97,100,99,101,113,112,111, 110,109,108,107,106,105,104,70,117,102, - 69,280,129,69,178,3,265,129,129,158, + 69,281,129,69,178,3,266,129,129,158, 70,227,210,3,129,69,69,63,44,234, - 234,275,191,306,126,72,285,210,69,130, - 40,310,178,215,227,129,3,179,164,179, + 234,276,191,307,126,72,286,210,69,130, + 40,311,178,215,227,129,3,179,164,179, 179,179,179,168,223,158,137,10,130,62, - 297,3,179,26,130,26,223,164,149,149, + 298,3,179,26,130,26,223,164,149,149, 148,148,148,151,151,151,151,150,150,155, - 152,152,157,156,159,164,160,129,300,80, + 152,152,157,156,159,164,160,129,301,80, 78,1,164,86,84,82,81,76,83,85, - 79,77,54,75,223,69,304,129,70,70, + 79,77,54,75,223,69,305,129,70,70, 129,215,129,70,70,133,69,72,70,178, - 130,130,231,129,63,63,63,63,191,255, - 130,168,211,3,298,172,154,130,178,168, - 72,281,119,9,218,72,3,3,3,202, - 3,125,164,125,181,69,224,293,178,178, + 130,130,231,129,63,63,63,63,191,256, + 130,168,211,3,299,172,154,130,178,168, + 72,282,119,9,218,72,3,3,3,202, + 3,125,164,125,181,69,224,294,178,178, 158,231,3,3,3,3,127,126,168,26, 179,129,129,217,5,26,3,239,172,239, - 301,226,147,76,239,129,129,63,129,158, - 164,164,164,164,3,3,191,158,260,263, - 62,180,4,127,95,313,172,158,210,158, - 226,163,129,3,158,281,61,60,224,129, + 302,226,147,76,239,129,129,63,129,158, + 164,164,164,164,3,3,191,158,261,264, + 62,180,4,127,95,314,172,158,210,158, + 226,163,129,3,158,282,61,60,224,129, 223,223,127,129,3,62,164,4,158,158, - 129,70,202,163,226,266,164,3,234,129, - 224,260,223,218,122,226,163,158,314,70, + 129,70,202,163,226,267,164,3,234,129, + 224,261,223,218,122,226,163,158,315,70, 129,158,226,69,158 }; }; @@ -2514,7 +2503,7 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym "enumerator_definition", "namespace_name", "init_declarator_list", - "init_declarator", + "init_declarator_complete", "initializer", "direct_declarator", "ptr_operator_seq", @@ -2580,18 +2569,18 @@ public class CPPParserprs implements lpg.lpgjavaruntime.ParseTable, CPPParsersym public final static int NUM_STATES = 525, NT_OFFSET = 124, - LA_STATE_OFFSET = 5991, + LA_STATE_OFFSET = 5938, MAX_LA = 2147483647, - NUM_RULES = 524, - NUM_NONTERMINALS = 193, - NUM_SYMBOLS = 317, + NUM_RULES = 525, + NUM_NONTERMINALS = 194, + NUM_SYMBOLS = 318, SEGMENT_SIZE = 8192, - START_STATE = 2626, + START_STATE = 2633, IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 121, EOLT_SYMBOL = 121, - ACCEPT_ACTION = 5114, - ERROR_ACTION = 5467; + ACCEPT_ACTION = 5066, + ERROR_ACTION = 5413; public final static boolean BACKTRACK = true; diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java new file mode 100644 index 00000000000..611d6c75b3a --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPRules.java @@ -0,0 +1,544 @@ +package org.eclipse.cdt.internal.core.dom.lrparser.cpp; + + +import java.util.Map; +import java.util.HashMap; + +public class CPPRules { + static Map fRules = new HashMap(); + + static { + + fRules.put(Integer.valueOf(3), "] ::= RightBracket"); + fRules.put(Integer.valueOf(4), "] ::= EndOfCompletion"); + fRules.put(Integer.valueOf(5), ") ::= RightParen"); + fRules.put(Integer.valueOf(6), ") ::= EndOfCompletion"); + fRules.put(Integer.valueOf(7), "} ::= RightBrace"); + fRules.put(Integer.valueOf(8), "} ::= EndOfCompletion"); + fRules.put(Integer.valueOf(9), "; ::= SemiColon"); + fRules.put(Integer.valueOf(10), "; ::= EndOfCompletion"); + fRules.put(Integer.valueOf(228), "declaration_specifiers_opt ::="); + fRules.put(Integer.valueOf(229), "declaration_specifiers_opt ::= declaration_specifiers"); + fRules.put(Integer.valueOf(313), "declarator ::= direct_declarator"); + fRules.put(Integer.valueOf(314), "declarator ::= ptr_operator_seq direct_declarator"); + fRules.put(Integer.valueOf(337), "declarator_id_name ::= qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(338), "declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name"); + fRules.put(Integer.valueOf(492), "template_parameter ::= type_parameter"); + fRules.put(Integer.valueOf(1), " ::="); + fRules.put(Integer.valueOf(311), "init_declarator ::= declarator"); + fRules.put(Integer.valueOf(312), "init_declarator ::= declarator initializer"); + fRules.put(Integer.valueOf(307), "init_declarator_list ::= init_declarator"); + fRules.put(Integer.valueOf(308), "init_declarator_list ::= init_declarator_list Comma init_declarator"); + fRules.put(Integer.valueOf(309), "init_declarator_list_opt ::= init_declarator_list"); + fRules.put(Integer.valueOf(310), "init_declarator_list_opt ::="); + fRules.put(Integer.valueOf(221), "simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ;"); + fRules.put(Integer.valueOf(304), "asm_definition ::= asm LeftParen stringlit ) ;"); + fRules.put(Integer.valueOf(299), "namespace_alias_definition ::= namespace identifier_token Assign dcolon_opt nested_name_specifier_opt namespace_name ;"); + fRules.put(Integer.valueOf(300), "using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;"); + fRules.put(Integer.valueOf(303), "using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;"); + fRules.put(Integer.valueOf(212), "block_declaration ::= simple_declaration"); + fRules.put(Integer.valueOf(213), "block_declaration ::= asm_definition"); + fRules.put(Integer.valueOf(214), "block_declaration ::= namespace_alias_definition"); + fRules.put(Integer.valueOf(215), "block_declaration ::= using_declaration"); + fRules.put(Integer.valueOf(216), "block_declaration ::= using_directive"); + fRules.put(Integer.valueOf(320), "basic_direct_declarator ::= declarator_id_name"); + fRules.put(Integer.valueOf(321), "basic_direct_declarator ::= LeftParen declarator )"); + fRules.put(Integer.valueOf(322), "function_direct_declarator ::= basic_direct_declarator LeftParen parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt"); + fRules.put(Integer.valueOf(41), "dcolon_opt ::= ColonColon"); + fRules.put(Integer.valueOf(42), "dcolon_opt ::="); + fRules.put(Integer.valueOf(17), "identifier_token ::= identifier"); + fRules.put(Integer.valueOf(18), "identifier_token ::= Completion"); + fRules.put(Integer.valueOf(38), "identifier_name ::= identifier_token"); + fRules.put(Integer.valueOf(501), "template_identifier ::= identifier_name"); + fRules.put(Integer.valueOf(500), "template_id_name ::= template_identifier LT template_argument_list_opt GT"); + fRules.put(Integer.valueOf(382), "class_name ::= identifier_name"); + fRules.put(Integer.valueOf(383), "class_name ::= template_id_name"); + fRules.put(Integer.valueOf(54), "class_or_namespace_name ::= class_name"); + fRules.put(Integer.valueOf(47), "nested_name_specifier ::= class_or_namespace_name ColonColon nested_name_specifier_with_template"); + fRules.put(Integer.valueOf(48), "nested_name_specifier ::= class_or_namespace_name ColonColon"); + fRules.put(Integer.valueOf(327), "ptr_operator ::= Star cv_qualifier_seq_opt"); + fRules.put(Integer.valueOf(328), "ptr_operator ::= And"); + fRules.put(Integer.valueOf(329), "ptr_operator ::= dcolon_opt nested_name_specifier Star cv_qualifier_seq_opt"); + fRules.put(Integer.valueOf(330), "ptr_operator_seq ::= ptr_operator"); + fRules.put(Integer.valueOf(331), "ptr_operator_seq ::= ptr_operator_seq ptr_operator"); + fRules.put(Integer.valueOf(315), "function_declarator ::= function_direct_declarator"); + fRules.put(Integer.valueOf(316), "function_declarator ::= ptr_operator_seq direct_declarator"); + fRules.put(Integer.valueOf(371), "function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body"); + fRules.put(Integer.valueOf(372), "function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq"); + fRules.put(Integer.valueOf(488), "export_opt ::= export"); + fRules.put(Integer.valueOf(489), "export_opt ::="); + fRules.put(Integer.valueOf(487), "template_declaration ::= export_opt template LT template_parameter_list GT declaration"); + fRules.put(Integer.valueOf(509), "explicit_instantiation ::= template declaration"); + fRules.put(Integer.valueOf(510), "explicit_specialization ::= template LT GT declaration"); + fRules.put(Integer.valueOf(305), "linkage_specification ::= extern stringlit LeftBrace declaration_seq_opt }"); + fRules.put(Integer.valueOf(306), "linkage_specification ::= extern stringlit declaration"); + fRules.put(Integer.valueOf(296), "original_namespace_definition ::= namespace identifier_name LeftBrace declaration_seq_opt }"); + fRules.put(Integer.valueOf(297), "extension_namespace_definition ::= namespace original_namespace_name LeftBrace declaration_seq_opt }"); + fRules.put(Integer.valueOf(294), "named_namespace_definition ::= original_namespace_definition"); + fRules.put(Integer.valueOf(295), "named_namespace_definition ::= extension_namespace_definition"); + fRules.put(Integer.valueOf(298), "unnamed_namespace_definition ::= namespace LeftBrace declaration_seq_opt }"); + fRules.put(Integer.valueOf(292), "namespace_definition ::= named_namespace_definition"); + fRules.put(Integer.valueOf(293), "namespace_definition ::= unnamed_namespace_definition"); + fRules.put(Integer.valueOf(205), "declaration ::= block_declaration"); + fRules.put(Integer.valueOf(206), "declaration ::= function_definition"); + fRules.put(Integer.valueOf(207), "declaration ::= template_declaration"); + fRules.put(Integer.valueOf(208), "declaration ::= explicit_instantiation"); + fRules.put(Integer.valueOf(209), "declaration ::= explicit_specialization"); + fRules.put(Integer.valueOf(210), "declaration ::= linkage_specification"); + fRules.put(Integer.valueOf(211), "declaration ::= namespace_definition"); + fRules.put(Integer.valueOf(15), "external_declaration ::= declaration"); + fRules.put(Integer.valueOf(16), "external_declaration ::= ERROR_TOKEN"); + fRules.put(Integer.valueOf(13), "external_declaration_list ::= external_declaration"); + fRules.put(Integer.valueOf(14), "external_declaration_list ::= external_declaration_list external_declaration"); + fRules.put(Integer.valueOf(11), "translation_unit ::= external_declaration_list"); + fRules.put(Integer.valueOf(12), "translation_unit ::="); + fRules.put(Integer.valueOf(0), "$accept ::= translation_unit"); + fRules.put(Integer.valueOf(2), " ::="); + fRules.put(Integer.valueOf(19), "literal ::= integer"); + fRules.put(Integer.valueOf(20), "literal ::= zero"); + fRules.put(Integer.valueOf(21), "literal ::= floating"); + fRules.put(Integer.valueOf(22), "literal ::= charconst"); + fRules.put(Integer.valueOf(23), "literal ::= stringlit"); + fRules.put(Integer.valueOf(24), "literal ::= true"); + fRules.put(Integer.valueOf(25), "literal ::= false"); + fRules.put(Integer.valueOf(26), "literal ::= this"); + fRules.put(Integer.valueOf(444), "operator_id_name ::= operator overloadable_operator"); + fRules.put(Integer.valueOf(442), "operator_function_id_name ::= operator_id_name"); + fRules.put(Integer.valueOf(443), "operator_function_id_name ::= operator_id_name LT template_argument_list_opt GT"); + fRules.put(Integer.valueOf(430), "conversion_function_id_name ::= operator conversion_type_id"); + fRules.put(Integer.valueOf(33), "unqualified_id_name ::= identifier_name"); + fRules.put(Integer.valueOf(34), "unqualified_id_name ::= operator_function_id_name"); + fRules.put(Integer.valueOf(35), "unqualified_id_name ::= conversion_function_id_name"); + fRules.put(Integer.valueOf(36), "unqualified_id_name ::= template_id_name"); + fRules.put(Integer.valueOf(37), "unqualified_id_name ::= Tilde class_name"); + fRules.put(Integer.valueOf(43), "qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name"); + fRules.put(Integer.valueOf(44), "qualified_id_name ::= ColonColon identifier_name"); + fRules.put(Integer.valueOf(45), "qualified_id_name ::= ColonColon operator_function_id_name"); + fRules.put(Integer.valueOf(46), "qualified_id_name ::= ColonColon template_id_name"); + fRules.put(Integer.valueOf(31), "qualified_or_unqualified_name ::= unqualified_id_name"); + fRules.put(Integer.valueOf(32), "qualified_or_unqualified_name ::= qualified_id_name"); + fRules.put(Integer.valueOf(30), "id_expression ::= qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(27), "primary_expression ::= literal"); + fRules.put(Integer.valueOf(28), "primary_expression ::= LeftParen expression )"); + fRules.put(Integer.valueOf(29), "primary_expression ::= id_expression"); + fRules.put(Integer.valueOf(263), "simple_type_specifier_token ::= char"); + fRules.put(Integer.valueOf(264), "simple_type_specifier_token ::= wchar_t"); + fRules.put(Integer.valueOf(265), "simple_type_specifier_token ::= bool"); + fRules.put(Integer.valueOf(266), "simple_type_specifier_token ::= short"); + fRules.put(Integer.valueOf(267), "simple_type_specifier_token ::= int"); + fRules.put(Integer.valueOf(268), "simple_type_specifier_token ::= long"); + fRules.put(Integer.valueOf(269), "simple_type_specifier_token ::= signed"); + fRules.put(Integer.valueOf(270), "simple_type_specifier_token ::= unsigned"); + fRules.put(Integer.valueOf(271), "simple_type_specifier_token ::= float"); + fRules.put(Integer.valueOf(272), "simple_type_specifier_token ::= double"); + fRules.put(Integer.valueOf(273), "simple_type_specifier_token ::= void"); + fRules.put(Integer.valueOf(262), "simple_type_specifier ::= simple_type_specifier_token"); + fRules.put(Integer.valueOf(55), "postfix_expression ::= primary_expression"); + fRules.put(Integer.valueOf(56), "postfix_expression ::= postfix_expression LeftBracket expression ]"); + fRules.put(Integer.valueOf(57), "postfix_expression ::= postfix_expression LeftParen expression_list_opt )"); + fRules.put(Integer.valueOf(58), "postfix_expression ::= simple_type_specifier LeftParen expression_list_opt )"); + fRules.put(Integer.valueOf(59), "postfix_expression ::= typename dcolon_opt nested_name_specifier identifier_name LeftParen expression_list_opt )"); + fRules.put(Integer.valueOf(60), "postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name LeftParen expression_list_opt )"); + fRules.put(Integer.valueOf(61), "postfix_expression ::= postfix_expression Dot qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(62), "postfix_expression ::= postfix_expression Arrow qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(63), "postfix_expression ::= postfix_expression Dot template qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(64), "postfix_expression ::= postfix_expression Arrow template qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(65), "postfix_expression ::= postfix_expression Dot pseudo_destructor_name"); + fRules.put(Integer.valueOf(66), "postfix_expression ::= postfix_expression Arrow pseudo_destructor_name"); + fRules.put(Integer.valueOf(67), "postfix_expression ::= postfix_expression PlusPlus"); + fRules.put(Integer.valueOf(68), "postfix_expression ::= postfix_expression MinusMinus"); + fRules.put(Integer.valueOf(69), "postfix_expression ::= dynamic_cast LT type_id GT LeftParen expression )"); + fRules.put(Integer.valueOf(70), "postfix_expression ::= static_cast LT type_id GT LeftParen expression )"); + fRules.put(Integer.valueOf(71), "postfix_expression ::= reinterpret_cast LT type_id GT LeftParen expression )"); + fRules.put(Integer.valueOf(72), "postfix_expression ::= const_cast LT type_id GT LeftParen expression )"); + fRules.put(Integer.valueOf(73), "postfix_expression ::= typeid LeftParen expression )"); + fRules.put(Integer.valueOf(74), "postfix_expression ::= typeid LeftParen type_id )"); + fRules.put(Integer.valueOf(92), "new_expression ::= dcolon_opt new new_placement_opt new_type_id new_array_expressions_opt new_initializer_opt"); + fRules.put(Integer.valueOf(93), "new_expression ::= dcolon_opt new new_placement_opt LeftParen type_id ) new_array_expressions_opt new_initializer_opt"); + fRules.put(Integer.valueOf(108), "delete_expression ::= dcolon_opt delete cast_expression"); + fRules.put(Integer.valueOf(109), "delete_expression ::= dcolon_opt delete LeftBracket ] cast_expression"); + fRules.put(Integer.valueOf(79), "unary_expression ::= postfix_expression"); + fRules.put(Integer.valueOf(80), "unary_expression ::= new_expression"); + fRules.put(Integer.valueOf(81), "unary_expression ::= delete_expression"); + fRules.put(Integer.valueOf(82), "unary_expression ::= PlusPlus cast_expression"); + fRules.put(Integer.valueOf(83), "unary_expression ::= MinusMinus cast_expression"); + fRules.put(Integer.valueOf(84), "unary_expression ::= And cast_expression"); + fRules.put(Integer.valueOf(85), "unary_expression ::= Star cast_expression"); + fRules.put(Integer.valueOf(86), "unary_expression ::= Plus cast_expression"); + fRules.put(Integer.valueOf(87), "unary_expression ::= Minus cast_expression"); + fRules.put(Integer.valueOf(88), "unary_expression ::= Tilde cast_expression"); + fRules.put(Integer.valueOf(89), "unary_expression ::= Bang cast_expression"); + fRules.put(Integer.valueOf(90), "unary_expression ::= sizeof unary_expression"); + fRules.put(Integer.valueOf(91), "unary_expression ::= sizeof LeftParen type_id )"); + fRules.put(Integer.valueOf(110), "cast_expression ::= unary_expression"); + fRules.put(Integer.valueOf(111), "cast_expression ::= LeftParen type_id ) cast_expression"); + fRules.put(Integer.valueOf(112), "pm_expression ::= cast_expression"); + fRules.put(Integer.valueOf(113), "pm_expression ::= pm_expression DotStar cast_expression"); + fRules.put(Integer.valueOf(114), "pm_expression ::= pm_expression ArrowStar cast_expression"); + fRules.put(Integer.valueOf(115), "multiplicative_expression ::= pm_expression"); + fRules.put(Integer.valueOf(116), "multiplicative_expression ::= multiplicative_expression Star pm_expression"); + fRules.put(Integer.valueOf(117), "multiplicative_expression ::= multiplicative_expression Slash pm_expression"); + fRules.put(Integer.valueOf(118), "multiplicative_expression ::= multiplicative_expression Percent pm_expression"); + fRules.put(Integer.valueOf(119), "additive_expression ::= multiplicative_expression"); + fRules.put(Integer.valueOf(120), "additive_expression ::= additive_expression Plus multiplicative_expression"); + fRules.put(Integer.valueOf(121), "additive_expression ::= additive_expression Minus multiplicative_expression"); + fRules.put(Integer.valueOf(122), "shift_expression ::= additive_expression"); + fRules.put(Integer.valueOf(123), "shift_expression ::= shift_expression LeftShift additive_expression"); + fRules.put(Integer.valueOf(124), "shift_expression ::= shift_expression RightShift additive_expression"); + fRules.put(Integer.valueOf(125), "relational_expression ::= shift_expression"); + fRules.put(Integer.valueOf(126), "relational_expression ::= relational_expression LT shift_expression"); + fRules.put(Integer.valueOf(127), "relational_expression ::= relational_expression GT shift_expression"); + fRules.put(Integer.valueOf(128), "relational_expression ::= relational_expression LE shift_expression"); + fRules.put(Integer.valueOf(129), "relational_expression ::= relational_expression GE shift_expression"); + fRules.put(Integer.valueOf(130), "equality_expression ::= relational_expression"); + fRules.put(Integer.valueOf(131), "equality_expression ::= equality_expression EQ relational_expression"); + fRules.put(Integer.valueOf(132), "equality_expression ::= equality_expression NE relational_expression"); + fRules.put(Integer.valueOf(133), "and_expression ::= equality_expression"); + fRules.put(Integer.valueOf(134), "and_expression ::= and_expression And equality_expression"); + fRules.put(Integer.valueOf(135), "exclusive_or_expression ::= and_expression"); + fRules.put(Integer.valueOf(136), "exclusive_or_expression ::= exclusive_or_expression Caret and_expression"); + fRules.put(Integer.valueOf(137), "inclusive_or_expression ::= exclusive_or_expression"); + fRules.put(Integer.valueOf(138), "inclusive_or_expression ::= inclusive_or_expression Or exclusive_or_expression"); + fRules.put(Integer.valueOf(139), "logical_and_expression ::= inclusive_or_expression"); + fRules.put(Integer.valueOf(140), "logical_and_expression ::= logical_and_expression AndAnd inclusive_or_expression"); + fRules.put(Integer.valueOf(141), "logical_or_expression ::= logical_and_expression"); + fRules.put(Integer.valueOf(142), "logical_or_expression ::= logical_or_expression OrOr logical_and_expression"); + fRules.put(Integer.valueOf(143), "conditional_expression ::= logical_or_expression"); + fRules.put(Integer.valueOf(144), "conditional_expression ::= logical_or_expression Question expression Colon assignment_expression"); + fRules.put(Integer.valueOf(145), "throw_expression ::= throw"); + fRules.put(Integer.valueOf(146), "throw_expression ::= throw assignment_expression"); + fRules.put(Integer.valueOf(147), "assignment_expression ::= conditional_expression"); + fRules.put(Integer.valueOf(148), "assignment_expression ::= throw_expression"); + fRules.put(Integer.valueOf(149), "assignment_expression ::= logical_or_expression Assign assignment_expression"); + fRules.put(Integer.valueOf(150), "assignment_expression ::= logical_or_expression StarAssign assignment_expression"); + fRules.put(Integer.valueOf(151), "assignment_expression ::= logical_or_expression SlashAssign assignment_expression"); + fRules.put(Integer.valueOf(152), "assignment_expression ::= logical_or_expression PercentAssign assignment_expression"); + fRules.put(Integer.valueOf(153), "assignment_expression ::= logical_or_expression PlusAssign assignment_expression"); + fRules.put(Integer.valueOf(154), "assignment_expression ::= logical_or_expression MinusAssign assignment_expression"); + fRules.put(Integer.valueOf(155), "assignment_expression ::= logical_or_expression RightShiftAssign assignment_expression"); + fRules.put(Integer.valueOf(156), "assignment_expression ::= logical_or_expression LeftShiftAssign assignment_expression"); + fRules.put(Integer.valueOf(157), "assignment_expression ::= logical_or_expression AndAssign assignment_expression"); + fRules.put(Integer.valueOf(158), "assignment_expression ::= logical_or_expression CaretAssign assignment_expression"); + fRules.put(Integer.valueOf(159), "assignment_expression ::= logical_or_expression OrAssign assignment_expression"); + fRules.put(Integer.valueOf(162), "expression_list_actual ::= assignment_expression"); + fRules.put(Integer.valueOf(163), "expression_list_actual ::= expression_list_actual Comma assignment_expression"); + fRules.put(Integer.valueOf(161), "expression_list ::= expression_list_actual"); + fRules.put(Integer.valueOf(160), "expression ::= expression_list"); + fRules.put(Integer.valueOf(39), "template_opt ::= template"); + fRules.put(Integer.valueOf(40), "template_opt ::="); + fRules.put(Integer.valueOf(51), "class_or_namespace_name_with_template ::= template_opt class_or_namespace_name"); + fRules.put(Integer.valueOf(49), "nested_name_specifier_with_template ::= class_or_namespace_name_with_template ColonColon nested_name_specifier_with_template"); + fRules.put(Integer.valueOf(50), "nested_name_specifier_with_template ::= class_or_namespace_name_with_template ColonColon"); + fRules.put(Integer.valueOf(52), "nested_name_specifier_opt ::= nested_name_specifier"); + fRules.put(Integer.valueOf(53), "nested_name_specifier_opt ::="); + fRules.put(Integer.valueOf(164), "expression_list_opt ::= expression_list"); + fRules.put(Integer.valueOf(165), "expression_list_opt ::="); + fRules.put(Integer.valueOf(274), "type_name ::= class_name"); + fRules.put(Integer.valueOf(78), "destructor_type_name ::= Tilde type_name"); + fRules.put(Integer.valueOf(75), "pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name ColonColon destructor_type_name"); + fRules.put(Integer.valueOf(76), "pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name ColonColon destructor_type_name"); + fRules.put(Integer.valueOf(77), "pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name"); + fRules.put(Integer.valueOf(254), "storage_class_specifier ::= auto"); + fRules.put(Integer.valueOf(255), "storage_class_specifier ::= register"); + fRules.put(Integer.valueOf(256), "storage_class_specifier ::= static"); + fRules.put(Integer.valueOf(257), "storage_class_specifier ::= extern"); + fRules.put(Integer.valueOf(258), "storage_class_specifier ::= mutable"); + fRules.put(Integer.valueOf(259), "function_specifier ::= inline"); + fRules.put(Integer.valueOf(260), "function_specifier ::= virtual"); + fRules.put(Integer.valueOf(261), "function_specifier ::= explicit"); + fRules.put(Integer.valueOf(335), "cv_qualifier ::= const"); + fRules.put(Integer.valueOf(336), "cv_qualifier ::= volatile"); + fRules.put(Integer.valueOf(230), "no_type_declaration_specifier ::= storage_class_specifier"); + fRules.put(Integer.valueOf(231), "no_type_declaration_specifier ::= function_specifier"); + fRules.put(Integer.valueOf(232), "no_type_declaration_specifier ::= cv_qualifier"); + fRules.put(Integer.valueOf(233), "no_type_declaration_specifier ::= friend"); + fRules.put(Integer.valueOf(234), "no_type_declaration_specifier ::= typedef"); + fRules.put(Integer.valueOf(235), "no_type_declaration_specifiers ::= no_type_declaration_specifier"); + fRules.put(Integer.valueOf(236), "no_type_declaration_specifiers ::= no_type_declaration_specifiers no_type_declaration_specifier"); + fRules.put(Integer.valueOf(237), "simple_declaration_specifiers ::= simple_type_specifier"); + fRules.put(Integer.valueOf(238), "simple_declaration_specifiers ::= no_type_declaration_specifiers simple_type_specifier"); + fRules.put(Integer.valueOf(239), "simple_declaration_specifiers ::= simple_declaration_specifiers simple_type_specifier"); + fRules.put(Integer.valueOf(240), "simple_declaration_specifiers ::= simple_declaration_specifiers no_type_declaration_specifier"); + fRules.put(Integer.valueOf(241), "simple_declaration_specifiers ::= no_type_declaration_specifiers"); + fRules.put(Integer.valueOf(391), "class_keyword ::= class"); + fRules.put(Integer.valueOf(392), "class_keyword ::= struct"); + fRules.put(Integer.valueOf(393), "class_keyword ::= union"); + fRules.put(Integer.valueOf(385), "class_head ::= class_keyword identifier_name_opt base_clause_opt"); + fRules.put(Integer.valueOf(386), "class_head ::= class_keyword template_id_name base_clause_opt"); + fRules.put(Integer.valueOf(387), "class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt"); + fRules.put(Integer.valueOf(388), "class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt"); + fRules.put(Integer.valueOf(384), "class_specifier ::= class_head LeftBrace member_declaration_list_opt }"); + fRules.put(Integer.valueOf(242), "class_declaration_specifiers ::= class_specifier"); + fRules.put(Integer.valueOf(243), "class_declaration_specifiers ::= no_type_declaration_specifiers class_specifier"); + fRules.put(Integer.valueOf(244), "class_declaration_specifiers ::= class_declaration_specifiers no_type_declaration_specifier"); + fRules.put(Integer.valueOf(280), "elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name"); + fRules.put(Integer.valueOf(281), "elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name"); + fRules.put(Integer.valueOf(282), "elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name"); + fRules.put(Integer.valueOf(245), "elaborated_declaration_specifiers ::= elaborated_type_specifier"); + fRules.put(Integer.valueOf(246), "elaborated_declaration_specifiers ::= no_type_declaration_specifiers elaborated_type_specifier"); + fRules.put(Integer.valueOf(247), "elaborated_declaration_specifiers ::= elaborated_declaration_specifiers no_type_declaration_specifier"); + fRules.put(Integer.valueOf(283), "enum_specifier ::= enum LeftBrace enumerator_list_opt }"); + fRules.put(Integer.valueOf(284), "enum_specifier ::= enum identifier_token LeftBrace enumerator_list_opt }"); + fRules.put(Integer.valueOf(248), "enum_declaration_specifiers ::= enum_specifier"); + fRules.put(Integer.valueOf(249), "enum_declaration_specifiers ::= no_type_declaration_specifiers enum_specifier"); + fRules.put(Integer.valueOf(250), "enum_declaration_specifiers ::= enum_declaration_specifiers no_type_declaration_specifier"); + fRules.put(Integer.valueOf(275), "type_name_specifier ::= type_name"); + fRules.put(Integer.valueOf(276), "type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name"); + fRules.put(Integer.valueOf(277), "type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name"); + fRules.put(Integer.valueOf(278), "type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name"); + fRules.put(Integer.valueOf(279), "type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name"); + fRules.put(Integer.valueOf(251), "type_name_declaration_specifiers ::= type_name_specifier"); + fRules.put(Integer.valueOf(252), "type_name_declaration_specifiers ::= no_type_declaration_specifiers type_name_specifier"); + fRules.put(Integer.valueOf(253), "type_name_declaration_specifiers ::= type_name_declaration_specifiers no_type_declaration_specifier"); + fRules.put(Integer.valueOf(223), "declaration_specifiers ::= simple_declaration_specifiers"); + fRules.put(Integer.valueOf(224), "declaration_specifiers ::= class_declaration_specifiers"); + fRules.put(Integer.valueOf(225), "declaration_specifiers ::= elaborated_declaration_specifiers"); + fRules.put(Integer.valueOf(226), "declaration_specifiers ::= enum_declaration_specifiers"); + fRules.put(Integer.valueOf(227), "declaration_specifiers ::= type_name_declaration_specifiers"); + fRules.put(Integer.valueOf(341), "type_specifier_seq ::= declaration_specifiers"); + fRules.put(Integer.valueOf(339), "type_id ::= type_specifier_seq"); + fRules.put(Integer.valueOf(340), "type_id ::= type_specifier_seq abstract_declarator"); + fRules.put(Integer.valueOf(94), "new_placement_opt ::= LeftParen expression_list )"); + fRules.put(Integer.valueOf(95), "new_placement_opt ::="); + fRules.put(Integer.valueOf(96), "new_type_id ::= type_specifier_seq"); + fRules.put(Integer.valueOf(97), "new_type_id ::= type_specifier_seq new_declarator"); + fRules.put(Integer.valueOf(101), "new_array_expressions ::= LeftBracket expression ]"); + fRules.put(Integer.valueOf(102), "new_array_expressions ::= new_array_expressions LeftBracket constant_expression ]"); + fRules.put(Integer.valueOf(103), "new_array_expressions_opt ::= new_array_expressions"); + fRules.put(Integer.valueOf(104), "new_array_expressions_opt ::="); + fRules.put(Integer.valueOf(105), "new_initializer ::= LeftParen expression_list_opt )"); + fRules.put(Integer.valueOf(106), "new_initializer_opt ::= new_initializer"); + fRules.put(Integer.valueOf(107), "new_initializer_opt ::="); + fRules.put(Integer.valueOf(99), "new_pointer_operators ::= ptr_operator"); + fRules.put(Integer.valueOf(100), "new_pointer_operators ::= ptr_operator new_pointer_operators"); + fRules.put(Integer.valueOf(98), "new_declarator ::= new_pointer_operators"); + fRules.put(Integer.valueOf(168), "constant_expression ::= conditional_expression"); + fRules.put(Integer.valueOf(166), "expression_opt ::= expression"); + fRules.put(Integer.valueOf(167), "expression_opt ::="); + fRules.put(Integer.valueOf(169), "constant_expression_opt ::= constant_expression"); + fRules.put(Integer.valueOf(170), "constant_expression_opt ::="); + fRules.put(Integer.valueOf(180), "labeled_statement ::= identifier Colon statement"); + fRules.put(Integer.valueOf(181), "labeled_statement ::= case constant_expression Colon"); + fRules.put(Integer.valueOf(182), "labeled_statement ::= default Colon"); + fRules.put(Integer.valueOf(183), "expression_statement ::= expression ;"); + fRules.put(Integer.valueOf(184), "expression_statement ::= ;"); + fRules.put(Integer.valueOf(185), "compound_statement ::= LeftBrace statement_seq }"); + fRules.put(Integer.valueOf(186), "compound_statement ::= LeftBrace }"); + fRules.put(Integer.valueOf(189), "selection_statement ::= if LeftParen condition ) statement"); + fRules.put(Integer.valueOf(190), "selection_statement ::= if LeftParen condition ) statement else statement"); + fRules.put(Integer.valueOf(191), "selection_statement ::= switch LeftParen condition ) statement"); + fRules.put(Integer.valueOf(194), "iteration_statement ::= while LeftParen condition ) statement"); + fRules.put(Integer.valueOf(195), "iteration_statement ::= do statement while LeftParen expression ) ;"); + fRules.put(Integer.valueOf(196), "iteration_statement ::= for LeftParen expression_opt ; expression_opt ; expression_opt ) statement"); + fRules.put(Integer.valueOf(197), "iteration_statement ::= for LeftParen simple_declaration_with_declspec expression_opt ; expression_opt ) statement"); + fRules.put(Integer.valueOf(198), "jump_statement ::= break ;"); + fRules.put(Integer.valueOf(199), "jump_statement ::= continue ;"); + fRules.put(Integer.valueOf(200), "jump_statement ::= return expression ;"); + fRules.put(Integer.valueOf(201), "jump_statement ::= return ;"); + fRules.put(Integer.valueOf(202), "jump_statement ::= goto identifier_token ;"); + fRules.put(Integer.valueOf(203), "declaration_statement ::= block_declaration"); + fRules.put(Integer.valueOf(204), "declaration_statement ::= function_definition"); + fRules.put(Integer.valueOf(511), "try_block ::= try compound_statement handler_seq"); + fRules.put(Integer.valueOf(171), "statement ::= labeled_statement"); + fRules.put(Integer.valueOf(172), "statement ::= expression_statement"); + fRules.put(Integer.valueOf(173), "statement ::= compound_statement"); + fRules.put(Integer.valueOf(174), "statement ::= selection_statement"); + fRules.put(Integer.valueOf(175), "statement ::= iteration_statement"); + fRules.put(Integer.valueOf(176), "statement ::= jump_statement"); + fRules.put(Integer.valueOf(177), "statement ::= declaration_statement"); + fRules.put(Integer.valueOf(178), "statement ::= try_block"); + fRules.put(Integer.valueOf(179), "statement ::= ERROR_TOKEN"); + fRules.put(Integer.valueOf(187), "statement_seq ::= statement"); + fRules.put(Integer.valueOf(188), "statement_seq ::= statement_seq statement"); + fRules.put(Integer.valueOf(192), "condition ::= expression"); + fRules.put(Integer.valueOf(193), "condition ::= type_specifier_seq declarator Assign assignment_expression"); + fRules.put(Integer.valueOf(222), "simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ;"); + fRules.put(Integer.valueOf(217), "declaration_seq ::= declaration"); + fRules.put(Integer.valueOf(218), "declaration_seq ::= declaration_seq declaration"); + fRules.put(Integer.valueOf(219), "declaration_seq_opt ::= declaration_seq"); + fRules.put(Integer.valueOf(220), "declaration_seq_opt ::="); + fRules.put(Integer.valueOf(289), "enumerator_definition ::= identifier_token"); + fRules.put(Integer.valueOf(290), "enumerator_definition ::= identifier_token Assign constant_expression"); + fRules.put(Integer.valueOf(285), "enumerator_list ::= enumerator_definition"); + fRules.put(Integer.valueOf(286), "enumerator_list ::= enumerator_list Comma enumerator_definition"); + fRules.put(Integer.valueOf(287), "enumerator_list_opt ::= enumerator_list"); + fRules.put(Integer.valueOf(288), "enumerator_list_opt ::="); + fRules.put(Integer.valueOf(291), "namespace_name ::= identifier_name"); + fRules.put(Integer.valueOf(301), "typename_opt ::= typename"); + fRules.put(Integer.valueOf(302), "typename_opt ::="); + fRules.put(Integer.valueOf(374), "initializer ::= Assign initializer_clause"); + fRules.put(Integer.valueOf(375), "initializer ::= LeftParen expression_list )"); + fRules.put(Integer.valueOf(323), "array_direct_declarator ::= array_direct_declarator array_modifier"); + fRules.put(Integer.valueOf(324), "array_direct_declarator ::= basic_direct_declarator array_modifier"); + fRules.put(Integer.valueOf(317), "direct_declarator ::= basic_direct_declarator"); + fRules.put(Integer.valueOf(318), "direct_declarator ::= function_direct_declarator"); + fRules.put(Integer.valueOf(319), "direct_declarator ::= array_direct_declarator"); + fRules.put(Integer.valueOf(363), "parameter_declaration ::= declaration_specifiers parameter_init_declarator"); + fRules.put(Integer.valueOf(364), "parameter_declaration ::= declaration_specifiers"); + fRules.put(Integer.valueOf(357), "parameter_declaration_list ::= parameter_declaration"); + fRules.put(Integer.valueOf(358), "parameter_declaration_list ::= parameter_declaration_list Comma parameter_declaration"); + fRules.put(Integer.valueOf(359), "parameter_declaration_list_opt ::= parameter_declaration_list"); + fRules.put(Integer.valueOf(360), "parameter_declaration_list_opt ::="); + fRules.put(Integer.valueOf(354), "parameter_declaration_clause ::= parameter_declaration_list_opt DotDotDot"); + fRules.put(Integer.valueOf(356), "parameter_declaration_clause ::= parameter_declaration_list Comma DotDotDot"); + fRules.put(Integer.valueOf(355), "parameter_declaration_clause ::= parameter_declaration_list_opt"); + fRules.put(Integer.valueOf(332), "cv_qualifier_seq ::= cv_qualifier cv_qualifier_seq_opt"); + fRules.put(Integer.valueOf(333), "cv_qualifier_seq_opt ::= cv_qualifier_seq"); + fRules.put(Integer.valueOf(334), "cv_qualifier_seq_opt ::="); + fRules.put(Integer.valueOf(519), "exception_specification ::= throw LeftParen type_id_list )"); + fRules.put(Integer.valueOf(520), "exception_specification ::= throw LeftParen )"); + fRules.put(Integer.valueOf(521), "exception_specification_opt ::= exception_specification"); + fRules.put(Integer.valueOf(522), "exception_specification_opt ::="); + fRules.put(Integer.valueOf(325), "array_modifier ::= LeftBracket constant_expression ]"); + fRules.put(Integer.valueOf(326), "array_modifier ::= LeftBracket ]"); + fRules.put(Integer.valueOf(348), "basic_direct_abstract_declarator ::= LeftParen abstract_declarator )"); + fRules.put(Integer.valueOf(349), "array_direct_abstract_declarator ::= array_modifier"); + fRules.put(Integer.valueOf(350), "array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier"); + fRules.put(Integer.valueOf(351), "array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier"); + fRules.put(Integer.valueOf(352), "function_direct_abstract_declarator ::= basic_direct_abstract_declarator LeftParen parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt"); + fRules.put(Integer.valueOf(353), "function_direct_abstract_declarator ::= LeftParen parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt"); + fRules.put(Integer.valueOf(345), "direct_abstract_declarator ::= basic_direct_abstract_declarator"); + fRules.put(Integer.valueOf(346), "direct_abstract_declarator ::= array_direct_abstract_declarator"); + fRules.put(Integer.valueOf(347), "direct_abstract_declarator ::= function_direct_abstract_declarator"); + fRules.put(Integer.valueOf(342), "abstract_declarator ::= direct_abstract_declarator"); + fRules.put(Integer.valueOf(343), "abstract_declarator ::= ptr_operator_seq"); + fRules.put(Integer.valueOf(344), "abstract_declarator ::= ptr_operator_seq direct_abstract_declarator"); + fRules.put(Integer.valueOf(361), "abstract_declarator_opt ::= abstract_declarator"); + fRules.put(Integer.valueOf(362), "abstract_declarator_opt ::="); + fRules.put(Integer.valueOf(365), "parameter_init_declarator ::= declarator"); + fRules.put(Integer.valueOf(366), "parameter_init_declarator ::= declarator Assign parameter_initializer"); + fRules.put(Integer.valueOf(367), "parameter_init_declarator ::= abstract_declarator"); + fRules.put(Integer.valueOf(368), "parameter_init_declarator ::= abstract_declarator Assign parameter_initializer"); + fRules.put(Integer.valueOf(369), "parameter_init_declarator ::= Assign parameter_initializer"); + fRules.put(Integer.valueOf(370), "parameter_initializer ::= assignment_expression"); + fRules.put(Integer.valueOf(434), "ctor_initializer_list ::= Colon mem_initializer_list"); + fRules.put(Integer.valueOf(435), "ctor_initializer_list_opt ::= ctor_initializer_list"); + fRules.put(Integer.valueOf(436), "ctor_initializer_list_opt ::="); + fRules.put(Integer.valueOf(373), "function_body ::= compound_statement"); + fRules.put(Integer.valueOf(514), "handler ::= catch LeftParen exception_declaration ) compound_statement"); + fRules.put(Integer.valueOf(515), "handler ::= catch LeftParen DotDotDot ) compound_statement"); + fRules.put(Integer.valueOf(512), "handler_seq ::= handler"); + fRules.put(Integer.valueOf(513), "handler_seq ::= handler_seq handler"); + fRules.put(Integer.valueOf(376), "initializer_clause ::= assignment_expression"); + fRules.put(Integer.valueOf(377), "initializer_clause ::= LeftBrace initializer_list Comma }"); + fRules.put(Integer.valueOf(378), "initializer_clause ::= LeftBrace initializer_list }"); + fRules.put(Integer.valueOf(379), "initializer_clause ::= LeftBrace }"); + fRules.put(Integer.valueOf(380), "initializer_list ::= initializer_clause"); + fRules.put(Integer.valueOf(381), "initializer_list ::= initializer_list Comma initializer_clause"); + fRules.put(Integer.valueOf(414), "bit_field_declarator ::= identifier_name"); + fRules.put(Integer.valueOf(410), "member_declarator ::= declarator"); + fRules.put(Integer.valueOf(411), "member_declarator ::= declarator constant_initializer"); + fRules.put(Integer.valueOf(412), "member_declarator ::= bit_field_declarator Colon constant_expression"); + fRules.put(Integer.valueOf(413), "member_declarator ::= Colon constant_expression"); + fRules.put(Integer.valueOf(408), "member_declarator_list ::= member_declarator"); + fRules.put(Integer.valueOf(409), "member_declarator_list ::= member_declarator_list Comma member_declarator"); + fRules.put(Integer.valueOf(425), "access_specifier_keyword ::= private"); + fRules.put(Integer.valueOf(426), "access_specifier_keyword ::= protected"); + fRules.put(Integer.valueOf(427), "access_specifier_keyword ::= public"); + fRules.put(Integer.valueOf(394), "visibility_label ::= access_specifier_keyword Colon"); + fRules.put(Integer.valueOf(395), "member_declaration ::= declaration_specifiers_opt member_declarator_list ;"); + fRules.put(Integer.valueOf(396), "member_declaration ::= declaration_specifiers_opt ;"); + fRules.put(Integer.valueOf(397), "member_declaration ::= function_definition ;"); + fRules.put(Integer.valueOf(398), "member_declaration ::= function_definition"); + fRules.put(Integer.valueOf(399), "member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;"); + fRules.put(Integer.valueOf(400), "member_declaration ::= using_declaration"); + fRules.put(Integer.valueOf(401), "member_declaration ::= template_declaration"); + fRules.put(Integer.valueOf(402), "member_declaration ::= visibility_label"); + fRules.put(Integer.valueOf(403), "member_declaration ::= ERROR_TOKEN"); + fRules.put(Integer.valueOf(404), "member_declaration_list ::= member_declaration"); + fRules.put(Integer.valueOf(405), "member_declaration_list ::= member_declaration_list member_declaration"); + fRules.put(Integer.valueOf(406), "member_declaration_list_opt ::= member_declaration_list"); + fRules.put(Integer.valueOf(407), "member_declaration_list_opt ::="); + fRules.put(Integer.valueOf(389), "identifier_name_opt ::= identifier_name"); + fRules.put(Integer.valueOf(390), "identifier_name_opt ::="); + fRules.put(Integer.valueOf(416), "base_clause ::= Colon base_specifier_list"); + fRules.put(Integer.valueOf(417), "base_clause_opt ::= base_clause"); + fRules.put(Integer.valueOf(418), "base_clause_opt ::="); + fRules.put(Integer.valueOf(415), "constant_initializer ::= Assign constant_expression"); + fRules.put(Integer.valueOf(421), "base_specifier ::= dcolon_opt nested_name_specifier_opt class_name"); + fRules.put(Integer.valueOf(422), "base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name"); + fRules.put(Integer.valueOf(423), "base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name"); + fRules.put(Integer.valueOf(424), "base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name"); + fRules.put(Integer.valueOf(419), "base_specifier_list ::= base_specifier"); + fRules.put(Integer.valueOf(420), "base_specifier_list ::= base_specifier_list Comma base_specifier"); + fRules.put(Integer.valueOf(428), "access_specifier_keyword_opt ::= access_specifier_keyword"); + fRules.put(Integer.valueOf(429), "access_specifier_keyword_opt ::="); + fRules.put(Integer.valueOf(431), "conversion_type_id ::= type_specifier_seq conversion_declarator"); + fRules.put(Integer.valueOf(432), "conversion_type_id ::= type_specifier_seq"); + fRules.put(Integer.valueOf(433), "conversion_declarator ::= ptr_operator_seq"); + fRules.put(Integer.valueOf(440), "mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name"); + fRules.put(Integer.valueOf(441), "mem_initializer_name ::= identifier_name"); + fRules.put(Integer.valueOf(439), "mem_initializer ::= mem_initializer_name LeftParen expression_list_opt )"); + fRules.put(Integer.valueOf(437), "mem_initializer_list ::= mem_initializer"); + fRules.put(Integer.valueOf(438), "mem_initializer_list ::= mem_initializer Comma mem_initializer_list"); + fRules.put(Integer.valueOf(506), "template_argument ::= assignment_expression"); + fRules.put(Integer.valueOf(507), "template_argument ::= type_id"); + fRules.put(Integer.valueOf(508), "template_argument ::= qualified_or_unqualified_name"); + fRules.put(Integer.valueOf(502), "template_argument_list ::= template_argument"); + fRules.put(Integer.valueOf(503), "template_argument_list ::= template_argument_list Comma template_argument"); + fRules.put(Integer.valueOf(504), "template_argument_list_opt ::= template_argument_list"); + fRules.put(Integer.valueOf(505), "template_argument_list_opt ::="); + fRules.put(Integer.valueOf(445), "overloadable_operator ::= new"); + fRules.put(Integer.valueOf(446), "overloadable_operator ::= delete"); + fRules.put(Integer.valueOf(447), "overloadable_operator ::= new LeftBracket ]"); + fRules.put(Integer.valueOf(448), "overloadable_operator ::= delete LeftBracket ]"); + fRules.put(Integer.valueOf(449), "overloadable_operator ::= Plus"); + fRules.put(Integer.valueOf(450), "overloadable_operator ::= Minus"); + fRules.put(Integer.valueOf(451), "overloadable_operator ::= Star"); + fRules.put(Integer.valueOf(452), "overloadable_operator ::= Slash"); + fRules.put(Integer.valueOf(453), "overloadable_operator ::= Percent"); + fRules.put(Integer.valueOf(454), "overloadable_operator ::= Caret"); + fRules.put(Integer.valueOf(455), "overloadable_operator ::= And"); + fRules.put(Integer.valueOf(456), "overloadable_operator ::= Or"); + fRules.put(Integer.valueOf(457), "overloadable_operator ::= Tilde"); + fRules.put(Integer.valueOf(458), "overloadable_operator ::= Bang"); + fRules.put(Integer.valueOf(459), "overloadable_operator ::= Assign"); + fRules.put(Integer.valueOf(460), "overloadable_operator ::= LT"); + fRules.put(Integer.valueOf(461), "overloadable_operator ::= GT"); + fRules.put(Integer.valueOf(462), "overloadable_operator ::= PlusAssign"); + fRules.put(Integer.valueOf(463), "overloadable_operator ::= MinusAssign"); + fRules.put(Integer.valueOf(464), "overloadable_operator ::= StarAssign"); + fRules.put(Integer.valueOf(465), "overloadable_operator ::= SlashAssign"); + fRules.put(Integer.valueOf(466), "overloadable_operator ::= PercentAssign"); + fRules.put(Integer.valueOf(467), "overloadable_operator ::= CaretAssign"); + fRules.put(Integer.valueOf(468), "overloadable_operator ::= AndAssign"); + fRules.put(Integer.valueOf(469), "overloadable_operator ::= OrAssign"); + fRules.put(Integer.valueOf(470), "overloadable_operator ::= LeftShift"); + fRules.put(Integer.valueOf(471), "overloadable_operator ::= RightShift"); + fRules.put(Integer.valueOf(472), "overloadable_operator ::= RightShiftAssign"); + fRules.put(Integer.valueOf(473), "overloadable_operator ::= LeftShiftAssign"); + fRules.put(Integer.valueOf(474), "overloadable_operator ::= EQ"); + fRules.put(Integer.valueOf(475), "overloadable_operator ::= NE"); + fRules.put(Integer.valueOf(476), "overloadable_operator ::= LE"); + fRules.put(Integer.valueOf(477), "overloadable_operator ::= GE"); + fRules.put(Integer.valueOf(478), "overloadable_operator ::= AndAnd"); + fRules.put(Integer.valueOf(479), "overloadable_operator ::= OrOr"); + fRules.put(Integer.valueOf(480), "overloadable_operator ::= PlusPlus"); + fRules.put(Integer.valueOf(481), "overloadable_operator ::= MinusMinus"); + fRules.put(Integer.valueOf(482), "overloadable_operator ::= Comma"); + fRules.put(Integer.valueOf(483), "overloadable_operator ::= ArrowStar"); + fRules.put(Integer.valueOf(484), "overloadable_operator ::= Arrow"); + fRules.put(Integer.valueOf(485), "overloadable_operator ::= LeftParen )"); + fRules.put(Integer.valueOf(486), "overloadable_operator ::= LeftBracket ]"); + fRules.put(Integer.valueOf(493), "template_parameter ::= parameter_declaration"); + fRules.put(Integer.valueOf(490), "template_parameter_list ::= template_parameter"); + fRules.put(Integer.valueOf(491), "template_parameter_list ::= template_parameter_list Comma template_parameter"); + fRules.put(Integer.valueOf(494), "type_parameter ::= class identifier_name_opt"); + fRules.put(Integer.valueOf(495), "type_parameter ::= class identifier_name_opt Assign type_id"); + fRules.put(Integer.valueOf(496), "type_parameter ::= typename identifier_name_opt"); + fRules.put(Integer.valueOf(497), "type_parameter ::= typename identifier_name_opt Assign type_id"); + fRules.put(Integer.valueOf(498), "type_parameter ::= template LT template_parameter_list GT class identifier_name_opt"); + fRules.put(Integer.valueOf(499), "type_parameter ::= template LT template_parameter_list GT class identifier_name_opt Assign id_expression"); + fRules.put(Integer.valueOf(516), "exception_declaration ::= type_specifier_seq declarator"); + fRules.put(Integer.valueOf(517), "exception_declaration ::= type_specifier_seq abstract_declarator"); + fRules.put(Integer.valueOf(518), "exception_declaration ::= type_specifier_seq"); + fRules.put(Integer.valueOf(523), "type_id_list ::= type_id"); + fRules.put(Integer.valueOf(524), "type_id_list ::= type_id_list Comma type_id"); + + } + + public static String lookup(int ruleNumber) { + return (String) fRules.get(Integer.valueOf(ruleNumber)); + } +} + diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java index 8d262d8ccc5..d606944bdc9 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java @@ -213,7 +213,7 @@ public int getKind(int i) { int kind = super.getKind(i); // There used to be a special token kind for zero used to parser pure virtual function declarations. - // But it turned out to be easier to just parse them as an init_declarator and programaticaly check + // But it turned out to be easier to just parse them as an init_ declarator and programaticaly check // for pure virtual, see consumeMemberDeclaratorWithInitializer(). //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$ @@ -1207,14 +1207,14 @@ public CPPSizeofExpressionParser(String[] mapFrom) { // constructor // Rule 219: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; // case 219: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, true); break; } // // Rule 220: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; // case 220: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // @@ -1435,660 +1435,667 @@ public CPPSizeofExpressionParser(String[] mapFrom) { // constructor } // - // Rule 310: init_declarator ::= declarator initializer + // Rule 309: init_declarator_complete ::= init_declarator // - case 310: { action.builder. + case 309: { action.builder. + consumeInitDeclaratorComplete(); break; + } + + // + // Rule 311: init_declarator ::= declarator initializer + // + case 311: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 312: declarator ::= ptr_operator_seq direct_declarator + // Rule 313: declarator ::= ptr_operator_seq direct_declarator // - case 312: { action.builder. + case 313: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 314: function_declarator ::= ptr_operator_seq direct_declarator + // Rule 315: function_declarator ::= ptr_operator_seq direct_declarator // - case 314: { action.builder. + case 315: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 318: basic_direct_declarator ::= declarator_id_name + // Rule 319: basic_direct_declarator ::= declarator_id_name // - case 318: { action.builder. + case 319: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 319: basic_direct_declarator ::= ( declarator ) + // Rule 320: basic_direct_declarator ::= ( declarator ) // - case 319: { action.builder. + case 320: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 320: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 321: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 320: { action.builder. + case 321: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 321: array_direct_declarator ::= array_direct_declarator array_modifier - // - case 321: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 322: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier // case 322: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 323: array_modifier ::= [ constant_expression ] + // Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier // case 323: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 324: array_modifier ::= [ constant_expression ] + // + case 324: { action.builder. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 324: array_modifier ::= [ ] + // Rule 325: array_modifier ::= [ ] // - case 324: { action.builder. + case 325: { action.builder. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 325: ptr_operator ::= * cv_qualifier_seq_opt + // Rule 326: ptr_operator ::= * cv_qualifier_seq_opt // - case 325: { action.builder. + case 326: { action.builder. consumePointer(); break; } // - // Rule 326: ptr_operator ::= & + // Rule 327: ptr_operator ::= & // - case 326: { action.builder. + case 327: { action.builder. consumeReferenceOperator(); break; } // - // Rule 327: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt + // Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier * cv_qualifier_seq_opt // - case 327: { action.builder. + case 328: { action.builder. consumePointerToMember(); break; } // - // Rule 333: cv_qualifier ::= const - // - case 333: { action.builder. - consumeDeclSpecToken(); break; - } - - // - // Rule 334: cv_qualifier ::= volatile + // Rule 334: cv_qualifier ::= const // case 334: { action.builder. consumeDeclSpecToken(); break; } // - // Rule 336: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 335: cv_qualifier ::= volatile // - case 336: { action.builder. + case 335: { action.builder. + consumeDeclSpecToken(); break; + } + + // + // Rule 337: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // + case 337: { action.builder. consumeQualifiedId(false); break; } // - // Rule 337: type_id ::= type_specifier_seq + // Rule 338: type_id ::= type_specifier_seq // - case 337: { action.builder. + case 338: { action.builder. consumeTypeId(false); break; } // - // Rule 338: type_id ::= type_specifier_seq abstract_declarator + // Rule 339: type_id ::= type_specifier_seq abstract_declarator // - case 338: { action.builder. + case 339: { action.builder. consumeTypeId(true); break; } // - // Rule 341: abstract_declarator ::= ptr_operator_seq + // Rule 342: abstract_declarator ::= ptr_operator_seq // - case 341: { action.builder. + case 342: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 342: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // Rule 343: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator // - case 342: { action.builder. + case 343: { action.builder. consumeDeclaratorWithPointer(true); break; } // - // Rule 346: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 347: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 346: { action.builder. + case 347: { action.builder. consumeDirectDeclaratorBracketed(); break; } // - // Rule 347: array_direct_abstract_declarator ::= array_modifier + // Rule 348: array_direct_abstract_declarator ::= array_modifier // - case 347: { action.builder. + case 348: { action.builder. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 348: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier - // - case 348: { action.builder. - consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 349: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 349: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // case 349: { action.builder. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 350: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 350: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // case 350: { action.builder. + consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 351: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 351: { action.builder. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 351: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 352: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 351: { action.builder. + case 352: { action.builder. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 352: parameter_declaration_clause ::= parameter_declaration_list_opt ... - // - case 352: { action.builder. - consumePlaceHolder(); break; - } - - // - // Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt ... // case 353: { action.builder. - consumeEmpty(); break; - } - - // - // Rule 354: parameter_declaration_clause ::= parameter_declaration_list , ... - // - case 354: { action.builder. consumePlaceHolder(); break; } // - // Rule 360: abstract_declarator_opt ::= $Empty + // Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 360: { action.builder. + case 354: { action.builder. consumeEmpty(); break; } // - // Rule 361: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 355: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 355: { action.builder. + consumePlaceHolder(); break; + } + + // + // Rule 361: abstract_declarator_opt ::= $Empty // case 361: { action.builder. + consumeEmpty(); break; + } + + // + // Rule 362: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 362: { action.builder. consumeParameterDeclaration(); break; } // - // Rule 362: parameter_declaration ::= declaration_specifiers + // Rule 363: parameter_declaration ::= declaration_specifiers // - case 362: { action.builder. + case 363: { action.builder. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 364: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 365: parameter_init_declarator ::= declarator = parameter_initializer // - case 364: { action.builder. + case 365: { action.builder. consumeDeclaratorWithInitializer(true); break; } // - // Rule 366: parameter_init_declarator ::= abstract_declarator = parameter_initializer - // - case 366: { action.builder. - consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 367: parameter_init_declarator ::= = parameter_initializer + // Rule 367: parameter_init_declarator ::= abstract_declarator = parameter_initializer // case 367: { action.builder. + consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 368: parameter_init_declarator ::= = parameter_initializer + // + case 368: { action.builder. consumeDeclaratorWithInitializer(false); break; } // - // Rule 368: parameter_initializer ::= assignment_expression + // Rule 369: parameter_initializer ::= assignment_expression // - case 368: { action.builder. + case 369: { action.builder. consumeInitializer(); break; } // - // Rule 369: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // Rule 370: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body // - case 369: { action.builder. + case 370: { action.builder. consumeFunctionDefinition(false); break; } // - // Rule 370: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // Rule 371: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq // - case 370: { action.builder. + case 371: { action.builder. consumeFunctionDefinition(true); break; } // - // Rule 373: initializer ::= ( expression_list ) + // Rule 374: initializer ::= ( expression_list ) // - case 373: { action.builder. + case 374: { action.builder. consumeInitializerConstructor(); break; } // - // Rule 374: initializer_clause ::= assignment_expression + // Rule 375: initializer_clause ::= assignment_expression // - case 374: { action.builder. + case 375: { action.builder. consumeInitializer(); break; } // - // Rule 375: initializer_clause ::= { initializer_list , } - // - case 375: { action.builder. - consumeInitializerList(); break; - } - - // - // Rule 376: initializer_clause ::= { initializer_list } + // Rule 376: initializer_clause ::= { initializer_list , } // case 376: { action.builder. consumeInitializerList(); break; } // - // Rule 377: initializer_clause ::= { } + // Rule 377: initializer_clause ::= { initializer_list } // case 377: { action.builder. consumeInitializerList(); break; } // - // Rule 382: class_specifier ::= class_head { member_declaration_list_opt } + // Rule 378: initializer_clause ::= { } // - case 382: { action.builder. + case 378: { action.builder. + consumeInitializerList(); break; + } + + // + // Rule 383: class_specifier ::= class_head { member_declaration_list_opt } + // + case 383: { action.builder. consumeClassSpecifier(); break; } // - // Rule 383: class_head ::= class_keyword identifier_name_opt base_clause_opt - // - case 383: { action.builder. - consumeClassHead(false); break; - } - - // - // Rule 384: class_head ::= class_keyword template_id_name base_clause_opt + // Rule 384: class_head ::= class_keyword identifier_name_opt base_clause_opt // case 384: { action.builder. consumeClassHead(false); break; } // - // Rule 385: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt + // Rule 385: class_head ::= class_keyword template_id_name base_clause_opt // case 385: { action.builder. - consumeClassHead(true); break; + consumeClassHead(false); break; } // - // Rule 386: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt + // Rule 386: class_head ::= class_keyword nested_name_specifier identifier_name base_clause_opt // case 386: { action.builder. consumeClassHead(true); break; } // - // Rule 388: identifier_name_opt ::= $Empty + // Rule 387: class_head ::= class_keyword nested_name_specifier template_id_name base_clause_opt // - case 388: { action.builder. + case 387: { action.builder. + consumeClassHead(true); break; + } + + // + // Rule 389: identifier_name_opt ::= $Empty + // + case 389: { action.builder. consumeEmpty(); break; } // - // Rule 392: visibility_label ::= access_specifier_keyword : + // Rule 393: visibility_label ::= access_specifier_keyword : // - case 392: { action.builder. + case 393: { action.builder. consumeVisibilityLabel(); break; } // - // Rule 393: member_declaration ::= declaration_specifiers_opt member_declarator_list ; - // - case 393: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 394: member_declaration ::= declaration_specifiers_opt ; + // Rule 394: member_declaration ::= declaration_specifiers_opt member_declarator_list ; // case 394: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, true); break; } // - // Rule 397: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 395: member_declaration ::= declaration_specifiers_opt ; // - case 397: { action.builder. + case 395: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 398: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 398: { action.builder. consumeMemberDeclarationQualifiedId(); break; } // - // Rule 401: member_declaration ::= ERROR_TOKEN + // Rule 402: member_declaration ::= ERROR_TOKEN // - case 401: { action.builder. + case 402: { action.builder. consumeDeclarationProblem(); break; } // - // Rule 409: member_declarator ::= declarator constant_initializer + // Rule 410: member_declarator ::= declarator constant_initializer // - case 409: { action.builder. + case 410: { action.builder. consumeMemberDeclaratorWithInitializer(); break; } // - // Rule 410: member_declarator ::= bit_field_declarator : constant_expression + // Rule 411: member_declarator ::= bit_field_declarator : constant_expression // - case 410: { action.builder. + case 411: { action.builder. consumeBitField(true); break; } // - // Rule 411: member_declarator ::= : constant_expression + // Rule 412: member_declarator ::= : constant_expression // - case 411: { action.builder. + case 412: { action.builder. consumeBitField(false); break; } // - // Rule 412: bit_field_declarator ::= identifier_name + // Rule 413: bit_field_declarator ::= identifier_name // - case 412: { action.builder. + case 413: { action.builder. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 413: constant_initializer ::= = constant_expression + // Rule 414: constant_initializer ::= = constant_expression // - case 413: { action.builder. + case 414: { action.builder. consumeInitializer(); break; } // - // Rule 419: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 420: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // - case 419: { action.builder. + case 420: { action.builder. consumeBaseSpecifier(false, false); break; } // - // Rule 420: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name - // - case 420: { action.builder. - consumeBaseSpecifier(true, true); break; - } - - // - // Rule 421: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 421: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // case 421: { action.builder. consumeBaseSpecifier(true, true); break; } // - // Rule 422: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 422: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // case 422: { action.builder. + consumeBaseSpecifier(true, true); break; + } + + // + // Rule 423: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 423: { action.builder. consumeBaseSpecifier(true, false); break; } // - // Rule 423: access_specifier_keyword ::= private - // - case 423: { action.builder. - consumeAccessKeywordToken(); break; - } - - // - // Rule 424: access_specifier_keyword ::= protected + // Rule 424: access_specifier_keyword ::= private // case 424: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 425: access_specifier_keyword ::= public + // Rule 425: access_specifier_keyword ::= protected // case 425: { action.builder. consumeAccessKeywordToken(); break; } // - // Rule 427: access_specifier_keyword_opt ::= $Empty + // Rule 426: access_specifier_keyword ::= public // - case 427: { action.builder. + case 426: { action.builder. + consumeAccessKeywordToken(); break; + } + + // + // Rule 428: access_specifier_keyword_opt ::= $Empty + // + case 428: { action.builder. consumeEmpty(); break; } // - // Rule 428: conversion_function_id_name ::= operator conversion_type_id + // Rule 429: conversion_function_id_name ::= operator conversion_type_id // - case 428: { action.builder. + case 429: { action.builder. consumeConversionName(); break; } // - // Rule 429: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 430: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 429: { action.builder. + case 430: { action.builder. consumeTypeId(true); break; } // - // Rule 430: conversion_type_id ::= type_specifier_seq + // Rule 431: conversion_type_id ::= type_specifier_seq // - case 430: { action.builder. + case 431: { action.builder. consumeTypeId(false); break; } // - // Rule 431: conversion_declarator ::= ptr_operator_seq + // Rule 432: conversion_declarator ::= ptr_operator_seq // - case 431: { action.builder. + case 432: { action.builder. consumeDeclaratorWithPointer(false); break; } // - // Rule 437: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 438: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 437: { action.builder. + case 438: { action.builder. consumeConstructorChainInitializer(); break; } // - // Rule 438: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 439: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 438: { action.builder. + case 439: { action.builder. consumeQualifiedId(false); break; } // - // Rule 441: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // Rule 442: operator_function_id_name ::= operator_id_name < template_argument_list_opt > // - case 441: { action.builder. + case 442: { action.builder. consumeTemplateId(); break; } // - // Rule 442: operator_id_name ::= operator overloadable_operator + // Rule 443: operator_id_name ::= operator overloadable_operator // - case 442: { action.builder. + case 443: { action.builder. consumeOperatorName(); break; } // - // Rule 485: template_declaration ::= export_opt template < template_parameter_list > declaration + // Rule 486: template_declaration ::= export_opt template < template_parameter_list > declaration // - case 485: { action.builder. + case 486: { action.builder. consumeTemplateDeclaration(); break; } // - // Rule 486: export_opt ::= export + // Rule 487: export_opt ::= export // - case 486: { action.builder. + case 487: { action.builder. consumePlaceHolder(); break; } // - // Rule 487: export_opt ::= $Empty + // Rule 488: export_opt ::= $Empty // - case 487: { action.builder. + case 488: { action.builder. consumeEmpty(); break; } // - // Rule 492: type_parameter ::= class identifier_name_opt - // - case 492: { action.builder. - consumeSimpleTypeTemplateParameter(false); break; - } - - // - // Rule 493: type_parameter ::= class identifier_name_opt = type_id + // Rule 493: type_parameter ::= class identifier_name_opt // case 493: { action.builder. - consumeSimpleTypeTemplateParameter(true); break; - } - - // - // Rule 494: type_parameter ::= typename identifier_name_opt - // - case 494: { action.builder. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 495: type_parameter ::= typename identifier_name_opt = type_id + // Rule 494: type_parameter ::= class identifier_name_opt = type_id // - case 495: { action.builder. + case 494: { action.builder. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 496: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // Rule 495: type_parameter ::= typename identifier_name_opt + // + case 495: { action.builder. + consumeSimpleTypeTemplateParameter(false); break; + } + + // + // Rule 496: type_parameter ::= typename identifier_name_opt = type_id // case 496: { action.builder. + consumeSimpleTypeTemplateParameter(true); break; + } + + // + // Rule 497: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // + case 497: { action.builder. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 497: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // Rule 498: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression // - case 497: { action.builder. + case 498: { action.builder. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 498: template_id_name ::= template_identifier < template_argument_list_opt > + // Rule 499: template_id_name ::= template_identifier < template_argument_list_opt > // - case 498: { action.builder. + case 499: { action.builder. consumeTemplateId(); break; } // - // Rule 507: explicit_instantiation ::= template declaration + // Rule 508: explicit_instantiation ::= template declaration // - case 507: { action.builder. + case 508: { action.builder. consumeTemplateExplicitInstantiation(); break; } // - // Rule 508: explicit_specialization ::= template < > declaration + // Rule 509: explicit_specialization ::= template < > declaration // - case 508: { action.builder. + case 509: { action.builder. consumeTemplateExplicitSpecialization(); break; } // - // Rule 509: try_block ::= try compound_statement handler_seq + // Rule 510: try_block ::= try compound_statement handler_seq // - case 509: { action.builder. + case 510: { action.builder. consumeStatementTryBlock(); break; } // - // Rule 512: handler ::= catch ( exception_declaration ) compound_statement + // Rule 513: handler ::= catch ( exception_declaration ) compound_statement // - case 512: { action.builder. + case 513: { action.builder. consumeStatementCatchHandler(false); break; } // - // Rule 513: handler ::= catch ( ... ) compound_statement + // Rule 514: handler ::= catch ( ... ) compound_statement // - case 513: { action.builder. + case 514: { action.builder. consumeStatementCatchHandler(true); break; } // - // Rule 514: exception_declaration ::= type_specifier_seq declarator - // - case 514: { action.builder. - consumeDeclarationSimple(true); break; - } - - // - // Rule 515: exception_declaration ::= type_specifier_seq abstract_declarator + // Rule 515: exception_declaration ::= type_specifier_seq declarator // case 515: { action.builder. - consumeDeclarationSimple(true); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 516: exception_declaration ::= type_specifier_seq + // Rule 516: exception_declaration ::= type_specifier_seq abstract_declarator // case 516: { action.builder. - consumeDeclarationSimple(false); break; + consumeDeclarationSimple(true, false); break; } // - // Rule 524: no_sizeof_type_name_start ::= ERROR_TOKEN + // Rule 517: exception_declaration ::= type_specifier_seq // - case 524: { action.builder. + case 517: { action.builder. + consumeDeclarationSimple(false, false); break; + } + + // + // Rule 525: no_sizeof_type_name_start ::= ERROR_TOKEN + // + case 525: { action.builder. consumeExpressionProblem(); break; } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java index a98d298f5f7..fb086258531 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParserprs.java @@ -67,462 +67,462 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 1,1,1,3,4,4,5,4,5,4, 5,6,1,3,1,0,1,3,1,1, 1,1,1,6,6,5,7,6,1,0, - 6,5,6,4,1,3,1,0,1,2, - 1,3,1,3,1,1,1,1,3,9, - 2,2,3,2,3,1,5,1,2,2, - 1,0,1,1,1,3,1,2,1,1, - 2,3,1,1,1,3,1,2,2,9, - 8,2,1,3,1,3,1,0,1,0, - 2,1,1,3,1,3,2,1,5,8, - 1,2,3,1,5,4,3,1,3,1, - 1,5,4,4,5,5,1,0,1,1, - 1,2,4,2,2,1,5,1,1,1, - 1,1,2,1,0,1,3,1,2,3, - 2,1,2,2,1,0,1,3,3,5, - 5,4,1,1,1,1,0,2,2,1, - 2,2,1,0,1,3,4,3,1,1, - 5,2,1,1,3,3,1,1,1,1, + 6,5,6,4,1,3,1,0,1,1, + 2,1,3,1,3,1,1,1,1,3, + 9,2,2,3,2,3,1,5,1,2, + 2,1,0,1,1,1,3,1,2,1, + 1,2,3,1,1,1,3,1,2,2, + 9,8,2,1,3,1,3,1,0,1, + 0,2,1,1,3,1,3,2,1,5, + 8,1,2,3,1,5,4,3,1,3, + 1,1,5,4,4,5,5,1,0,1, + 1,1,2,4,2,2,1,5,1,1, + 1,1,1,2,1,0,1,3,1,2, + 3,2,1,2,2,1,0,1,3,3, + 5,5,4,1,1,1,1,0,2,2, + 1,2,2,1,0,1,3,4,3,1, + 1,5,2,1,1,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,2,2,7,1,0,1,3,1, - 1,2,4,2,4,7,9,5,1,1, - 3,1,0,1,1,1,2,4,4,1, - 2,5,5,3,3,1,4,3,1,0, - 1,3,1,1,-62,0,0,0,0,-2, + 1,1,1,2,2,7,1,0,1,3, + 1,1,2,4,2,4,7,9,5,1, + 1,3,1,0,1,1,1,2,4,4, + 1,2,5,5,3,3,1,4,3,1, + 0,1,3,1,1,-62,0,0,0,0, + -2,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-49, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-134,0, - 0,0,0,-352,0,0,0,0,0,0, - -4,0,0,-412,0,0,0,-142,0,0, - 0,0,-122,0,0,0,0,0,0,-92, + 0,-417,0,0,-412,0,0,0,-142,0, + 0,0,0,-122,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,-50,0,0,0,0,0, + -337,0,0,0,0,0,0,0,0,-19, + 0,0,0,0,-4,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-134,-71,0,0, + 0,0,0,0,0,0,0,0,0,0, + -173,0,0,0,0,-5,0,-53,0,0, + 0,0,0,0,-114,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-50,0,0,0,0,0,0, - 0,0,0,0,0,0,-328,0,-19,0, - 0,0,0,-52,0,0,0,0,0,0, + 0,0,0,0,-10,0,0,0,0,0, + 0,0,0,0,0,0,0,-72,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-71,0,0,0,0, - 0,0,0,0,0,0,0,0,-173,0, - 0,0,0,-5,0,-6,0,0,0,0, - 0,0,-114,0,0,0,0,0,0,0, + -182,0,0,0,0,0,-129,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-7,0,0,0,0,0,0,0, - 0,-307,0,0,0,-72,0,0,0,0, - 0,0,0,0,0,0,0,0,-182,0, - 0,0,0,0,-129,0,0,0,0,0, + 0,0,0,0,0,-416,0,0,0,0, + 0,0,0,0,0,-307,0,0,0,-174, + 0,0,0,-6,0,-324,0,0,0,0, + -178,0,0,0,0,0,0,0,-7,-145, + 0,0,0,0,0,-39,0,0,0,0, + -260,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-401,-8,0,0,0,0, + 0,0,0,0,0,0,0,0,-57,-367, + 0,0,0,-144,0,0,0,0,-9,0, + 0,0,0,0,0,0,0,-219,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-8,-135,0,0,0,0,0, - 0,0,0,-9,-10,0,0,-65,0,0, - 0,-11,0,-324,0,0,0,0,-64,0, - 0,0,0,0,-12,0,-145,0,0,0, - 0,0,-39,0,0,0,0,-13,0,0, + 0,0,0,0,0,0,0,-362,0,0, + 0,0,0,0,0,0,0,-255,0,0, + -147,0,0,0,0,0,0,0,0,0, + 0,0,0,-511,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-57,-367,0,0,0, - -144,0,0,0,0,-15,0,0,0,0, - 0,0,0,0,-219,0,0,0,0,0, + 0,0,-11,-12,0,0,0,0,0,0, + 0,0,0,-13,0,0,-513,0,0,0, + 0,0,0,0,0,0,0,0,0,-225, + -221,0,-16,0,0,0,0,0,-227,0, + 0,0,-521,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-276,-362,0,0,0,0,0, - 0,0,0,0,-336,0,0,-147,0,0, + 0,0,-65,0,0,0,0,0,0,0, + 0,-263,-64,0,0,-350,0,0,0,0, + 0,-264,0,0,0,0,-230,0,0,0, + -15,-3,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -511,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-28,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-49,0,0,0,0,0, - -127,0,0,0,0,0,0,0,0,0, - 0,0,0,-513,0,0,0,0,-128,0, - 0,0,0,0,0,0,-221,-28,0,-16, - 0,0,0,0,0,-29,0,0,-521,0, + 0,0,0,0,-232,0,0,0,0,0, + 0,-56,0,-396,0,0,0,-341,0,0, + 0,0,-29,-273,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-139,0, - 0,0,0,0,0,0,0,-30,0,0, - 0,-350,0,0,0,0,0,-254,0,0, - 0,0,-226,0,0,0,0,-3,0,0, + 0,0,0,0,0,0,0,0,0,-59, + 0,0,0,0,0,0,-309,0,0,0, + 0,-52,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -125,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-30,-31,0,0,-310, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-379,0,0,0,0,0,0,0,0, - 0,0,0,-201,0,0,0,-31,0,0, - -232,0,0,0,0,-32,0,0,0,-174, - 0,0,-191,0,0,0,0,0,-273,0, + 0,0,0,-460,0,0,0,0,0,-137, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-472,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-115,0,0,0, + 0,0,0,0,0,0,0,0,-32,0, + 0,0,-33,0,0,-41,0,0,0,0, + -34,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-131, + 0,0,0,0,-241,0,0,0,0,0, + 0,0,0,0,0,-35,0,0,-94,0, + 0,0,0,-36,0,0,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,0,0,0,0,0,0,-37,0,0, + 0,-95,0,0,0,0,-127,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-135,0,0,0,0, + 0,-38,0,0,0,0,0,0,0,0, + -289,0,0,0,-96,0,0,0,0,-128, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-331,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-97,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-241,0,0,-33,0,0, - 0,-309,0,0,0,0,-34,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-56,0,0,0,0, - 0,-35,0,0,0,0,0,0,0,0, - -53,-36,0,0,0,0,-310,0,0,0, + 0,-281,0,0,0,0,0,-40,0,0, + 0,0,0,0,0,0,-257,0,0,0, + -98,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -460,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-149,-37,0,0,-472, + -54,0,0,0,0,0,0,0,0,-55, + -58,0,0,-99,0,0,0,0,-139,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-66,0,0, + 0,0,-319,0,0,0,0,0,0,-60, + 0,0,-67,-69,0,0,-100,0,0,0, + 0,-149,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-125,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-59,0, - 0,0,0,-137,-41,0,0,0,0,0, + -276,0,0,0,0,0,-70,0,0,0, + 0,0,-107,0,0,-330,0,0,0,-101, + 0,0,0,0,-195,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-38,0, + 0,0,0,-296,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-451,0, + 0,0,-102,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-416,0,0,0,-257,-94,0, - 0,0,0,-195,0,0,0,0,0,0, + 0,0,0,0,0,0,-140,0,0,0, + 0,0,-108,0,0,0,0,0,0,0, + 0,0,0,0,0,-103,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-140,0,0,0,0,0,-40,0, - 0,0,0,0,0,0,0,0,-54,0, - 0,-95,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-302, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-115,0,0,0,0, + 0,-113,0,0,-109,-110,0,0,-104,0, + 0,0,0,-111,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -55,0,0,0,-96,0,0,0,0,-322, + 0,0,-242,0,0,0,0,0,0,0, + 0,0,0,0,-148,0,0,-118,-322,0, + 0,-132,0,0,0,0,-268,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-131,0, - 0,0,0,-285,0,0,0,0,0,0, - 0,0,0,-58,-66,0,0,-97,0,0, - 0,0,-347,0,0,0,0,0,0,0, + 0,0,0,0,0,-288,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-280,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-67,0,0,0, - -98,0,0,0,0,-69,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -319,0,0,0,0,0,0,0,0,-70, - 0,0,0,-99,0,0,0,0,-108,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-331,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-109,0,0,-100,0,0,0, - 0,-110,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -281,0,0,0,0,0,-111,0,0,0, - 0,0,0,0,0,-118,-136,0,0,-101, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-178,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-451, - 0,0,-102,0,0,0,0,-150,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-205,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-151,-152,0,0,-103,0,0,0,0, - -153,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-242, - 0,0,0,0,-345,0,0,0,0,0, - 0,-60,0,0,-154,-155,0,0,-104,0, - 0,0,0,-156,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-288,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-157,-158,0, - 0,-132,0,0,0,0,-255,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-371,0,0,0,0, - 0,-159,0,0,0,0,0,0,0,0, -212,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-211,0,0,0,0,0, + 0,0,0,0,-112,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-245,0,0,0,0,0, + 0,0,0,-197,-191,0,0,0,0,-136, -505,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -160,0,0,0,0,0,-107,0,0,0, - -161,0,0,-306,0,0,0,0,-289,0, + 0,0,0,0,0,0,-150,0,0,0, + -347,0,0,-306,0,0,0,0,-305,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-268,0,0, - 0,0,0,-296,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-371,0,0, + 0,0,0,0,0,0,0,0,0,-151, 0,0,-321,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-225,0,0,0, - 0,-162,-303,0,0,0,0,0,-163,0, - 0,-239,0,0,0,0,-312,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-152,0,0,0,0,0,0,0,0, + 0,-239,0,0,0,0,-245,0,0,0, 0,0,-334,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-164,0,0,0,0,0,0,-165,0, + 0,-153,-339,0,0,0,0,0,0,0, 0,-357,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,-180,0,0,0,0, - 0,-302,0,0,0,0,0,0,0,0, - -246,0,0,0,0,-113,0,0,0,0, - -166,-358,0,0,0,0,0,0,0,0, + 0,-340,0,0,0,0,0,0,0,0, + -246,0,0,0,0,-205,-154,-348,-155,0, + 0,-358,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,-181,0,0,0,0, - 0,0,0,0,0,0,0,-167,0,0, + 0,-156,0,0,0,0,0,0,0,0, -404,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,-183,0,0,0,0,0, - -168,0,0,0,0,0,0,0,0,-266, - 0,0,0,0,-18,0,0,0,0,-305, + -429,0,0,0,0,0,0,0,0,-266, + 0,0,0,0,-18,0,0,0,0,-323, -106,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-330, - -339,0,0,0,0,0,0,0,0,-93, + 0,0,0,0,0,0,0,0,0,-369, + -336,0,0,0,0,0,-157,0,0,-93, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-148,0, - 0,0,0,0,-91,0,0,0,0,-323, + 0,0,0,-185,0,0,0,0,0,0, + 0,0,0,0,-91,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-185,0, - 0,0,0,0,0,0,0,0,-88,0, - 0,0,0,-169,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-188,0, + 0,0,0,0,-158,0,0,0,-88,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-188,0,0,0,0,0,-197,0, - -89,0,0,0,0,-170,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-171,0,0,0,0,-90, + 0,0,-199,0,0,0,0,0,-201,0, + -89,0,0,0,0,-159,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-160,0,0,0,0,-90, + 0,0,0,0,-406,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-51,0, - 0,0,0,-172,0,-271,0,0,0,0, - -61,0,0,-175,-227,0,-206,-210,0,0, - 0,0,-176,-82,0,0,0,0,0,0, + 0,0,0,-285,0,0,0,0,-51,0, + 0,0,0,0,0,-271,0,0,0,0, + -61,0,0,0,0,0,-206,-210,0,0, + 0,0,-277,-82,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-177,0,-83,0,0,0,0,0,0, + 0,-161,0,-83,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-230,0,0,-199,-14,0,0,0,0, - 0,0,-47,0,0,0,0,-341,0,0, - 0,0,-396,0,0,0,0,0,0,0, - 0,-348,-260,0,0,0,0,0,0,-186, - -187,-192,0,-193,0,0,0,0,-480,0, - 0,0,-204,0,-263,0,0,0,-196,-264, - 0,0,0,0,0,0,-84,0,0,0, + 0,-208,0,0,0,0,0,0,0,0, + -162,0,-47,0,0,0,0,-359,0,0, + 0,0,-480,0,0,0,0,0,0,-163, + 0,0,-164,0,0,0,0,0,0,-165, + -379,-204,0,-166,0,0,0,0,-229,0, + 0,0,-223,0,-143,0,0,0,-167,-168, + -446,0,0,0,0,0,0,-84,0,0, + 0,0,-397,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-169,0,0,0,-85,0,0,0,0, + -170,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -207,0,0,0,-85,0,0,0,0,-351, + 0,0,0,-235,0,0,0,0,0,0, + 0,0,0,0,0,0,-86,0,0,0, + 0,-171,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-217,0, - 0,0,-235,0,0,0,0,0,0,0, - 0,0,0,0,0,-86,0,0,0,0, - -233,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-417, - 0,0,-237,-223,-349,0,0,0,0,0, - 0,0,0,-380,-369,-370,0,-224,0,0, - 0,0,0,0,0,0,0,-397,0,0, - 0,-359,0,0,0,0,-431,0,0,0, - -279,0,0,0,0,0,0,0,0,0, - 0,0,0,-218,0,0,-446,0,0,0, - 0,0,-229,0,-240,0,-87,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -228,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-277,0,-220,0,-234,0, - 0,0,-375,0,0,0,0,0,-504,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-236,-244,0,0,0,0,0, - 0,0,0,0,-77,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-340,0, - 0,0,0,-247,0,0,0,0,0,0, - 0,0,-133,0,-248,0,0,0,-353,0, - 0,-231,0,0,0,0,-298,0,0,0, + -172,0,0,-431,0,-237,-353,0,0,0, + 0,0,0,0,-267,0,-499,0,0,-493, + 0,0,0,-414,0,0,0,0,0,0, + 0,0,-375,0,0,0,0,0,0,-303, + 0,-279,0,0,0,0,0,0,0,0, + 0,0,0,0,-415,-368,0,0,0,0, + 0,0,0,0,0,-328,0,-87,0,0, + 0,0,-175,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-249,0,0,0,0,-499,0,0, - 0,0,-78,0,0,0,0,-250,0,0, + 0,-343,0,0,0,-457,0,0,0,0, + 0,0,-224,0,0,-141,-133,0,0,-176, + 0,0,0,0,0,0,0,-177,0,-423, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-282,0,0,0, - -291,0,-386,0,0,0,0,0,0,0, - -117,-253,-429,0,-141,-262,0,-1,0,0, - 0,0,0,0,-258,-259,0,0,0,0, - 0,0,0,-343,-269,0,0,0,0,0, - -402,0,0,0,-401,0,0,0,0,0, - -270,0,0,0,0,0,0,0,0,-292, - 0,0,0,-274,0,-469,-275,-267,0,0, + 0,0,0,-117,0,0,0,0,0,0, + -413,0,-198,0,0,0,-441,0,0,-504, 0,0,0,0,0,0,0,0,0,0, - 0,0,-112,0,-286,0,0,0,-457,0, - 0,0,0,0,0,0,0,-294,0,0, - 0,0,0,0,0,0,0,-314,-290,0, - 0,0,0,0,0,0,0,0,-313,0, - -126,0,0,0,0,0,0,-423,0,0, + 0,0,-194,0,0,0,0,0,0,0, + 0,0,0,0,0,-211,0,0,0,0, + 0,0,0,0,-475,-186,0,-187,-120,0, + 0,0,0,0,0,-192,0,0,0,0, + 0,0,0,0,0,-193,0,0,0,0, + 0,0,0,-196,-1,-207,0,0,0,0, + 0,0,0,0,0,-42,0,-345,0,0, + 0,0,0,0,0,-376,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-272,-346,-454,0,-48,0, - 0,0,-356,0,-406,-295,-470,0,-238,0, - 0,0,0,0,0,-283,0,0,0,0, - 0,-300,0,0,0,-363,0,0,0,-414, + 0,0,0,0,0,-233,-217,0,0,0, + 0,0,-218,-220,0,0,-234,-77,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-78,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -301,0,0,0,0,0,0,0,0,0, - -418,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-318,0,0,0,0,0, - 0,0,0,0,-333,-477,-415,0,-413,0, - 0,0,0,0,-478,-284,0,-116,-335,0, - 0,0,0,-376,0,0,0,0,0,0, - 0,0,-179,0,0,0,0,0,0,0, - -208,0,0,0,0,-419,0,0,0,0, + 0,0,0,0,0,0,0,-236,0,-298, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-441,-365, - 0,0,-442,0,-42,0,0,0,-366,0, + 0,0,-21,0,0,0,0,-244,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-386,-226,0,0,-258, + 0,-228,0,-315,0,-259,0,0,0,0, + -68,-494,-294,-351,0,0,0,0,0,0, + -240,0,0,-442,0,0,-469,0,-283,0, + 0,0,0,-402,0,0,0,-497,0,0, + 0,0,0,-352,0,0,0,0,0,0, + 0,0,-247,-387,0,0,0,0,0,0, + -248,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-269,0,-454,0,0,0, + 0,0,0,0,0,0,0,-498,0,0, + -481,0,0,-370,0,0,0,0,-270,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-372,0,-297,0,0,0,0,0, - 0,0,0,0,-388,0,0,0,0,0, - 0,-21,0,0,0,0,-374,0,0,0, + 0,0,0,-312,0,0,0,0,-249,0, + 0,0,0,0,-274,0,0,0,0,0, + -231,0,0,-250,-179,0,0,0,0,0, + 0,-470,0,0,0,-275,0,-253,-502,0, + -119,0,0,-116,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-377,-79,0,0,0, + 0,-190,0,0,0,0,0,0,0,-313, + -272,0,0,0,-477,0,0,0,0,0, + 0,0,0,0,0,0,-356,-284,-297,0, + 0,0,0,0,0,-450,0,0,0,0, + 0,-311,-286,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-121,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-478,0, + 0,-48,0,0,-317,-282,0,-381,-290,0, + -291,0,0,0,0,0,0,0,0,0, + 0,0,0,-295,-300,-200,0,0,0,0, + 0,0,-388,0,0,0,0,-301,-292,0, 0,0,0,0,0,0,0,0,0,0, - -80,0,0,0,0,-383,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-81,0,0,0,0,-453, + 0,-314,0,-346,0,-318,0,-333,0,0, + 0,0,0,0,0,0,-335,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-316,0, - 0,0,0,-450,0,0,0,0,0,0, - 0,-68,-74,-105,-384,0,0,0,0,-120, - 0,0,0,0,-465,0,-368,0,0,-73, - -410,-311,-392,-502,0,0,0,-481,0,0, - 0,0,0,0,-138,0,0,0,0,0, + 0,0,0,0,0,-365,-325,0,-363,0, + 0,0,-503,0,0,-79,0,0,0,0, + -366,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-80, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-317,-325,-435,0, - 0,0,0,0,0,0,0,0,-337,0, - 0,0,0,0,0,-327,0,0,0,0, - 0,-143,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-395, - -387,0,0,0,0,0,0,0,0,0, - 0,0,-485,-403,0,-438,-251,0,0,0, - 0,0,-405,-407,-461,-408,0,0,0,0, - 0,0,0,0,0,-342,0,0,-409,0, - 0,0,-398,-194,0,0,0,0,-471,0, - -487,0,0,0,0,0,-463,0,0,0, - 0,0,0,0,0,0,0,-411,0,-468, - -43,-364,0,-378,0,0,0,0,0,0, - -422,0,0,0,0,0,0,0,0,0, - 0,-482,0,-493,0,0,0,0,0,0, - 0,0,0,0,-492,0,0,-464,-474,0, - 0,-44,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -503,0,-252,0,0,0,0,0,0,0, - 0,0,-514,0,0,-488,0,0,0,0, - 0,0,-424,0,0,0,0,0,-475,0, - 0,0,-426,0,0,0,0,-243,-427,0, + 0,0,0,-81,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-500,-428,0,0,0,0,0, - 0,0,0,0,0,0,-519,-293,0,-489, - -382,0,-385,-45,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-420, - 0,-213,0,0,0,0,0,0,0,-430, - -432,0,0,-433,-522,0,0,-434,0,0, - -483,0,0,0,-439,0,0,0,0,0, - 0,0,0,-443,-421,-508,-425,0,0,0, - 0,0,-509,0,0,0,0,0,0,0, - 0,0,0,0,0,-494,0,-444,-452,0, - 0,0,0,0,0,0,0,0,-448,-455, - 0,-456,-459,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-316,0,0, + 0,0,-372,0,0,0,0,0,0,0, + -73,-74,-238,0,0,0,0,-374,-265,-126, + 0,0,0,0,0,-377,-327,-383,-251,-410, + -254,0,-464,0,0,-384,-252,0,-342,0, + 0,0,-222,0,-392,-395,-364,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-20,0,0,0,0,-467,0,0,0, + 0,0,0,0,0,0,0,-435,0,0, + -403,0,0,0,0,0,0,0,0,0, + 0,0,0,-405,-243,0,-407,0,0,0, + 0,0,0,0,0,0,0,-123,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-22,0,0,0,0,0, + 0,-418,0,0,0,-465,0,0,0,0, + 0,-485,0,0,-438,-474,0,0,-43,0, + 0,0,-408,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-23,0,0, - 0,0,-486,0,0,0,0,0,0,0, + 0,-378,0,0,-409,0,0,0,-411,-487, + 0,0,-422,0,0,0,0,0,0,-424, + 0,0,0,0,0,-426,0,0,-427,-382, + 0,-428,-430,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -24,0,0,0,0,-501,0,0,0,0, + 0,0,0,-432,0,0,0,-433,0,0, + 0,0,0,-434,-293,0,-385,0,0,-439, + -420,0,0,-443,0,0,0,-452,0,0, + 0,0,0,0,0,0,-490,0,0,0, + 0,0,0,0,0,0,0,0,0,-20, + 0,0,0,0,-419,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-25,0,0,0,0,-506,0, + 0,0,-492,-421,0,-459,-467,0,0,-486, + -349,-489,-425,-444,-393,0,0,0,0,0, + 0,-453,-44,0,0,0,0,0,0,0, + 0,0,-398,-501,0,-506,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-26,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-27, + 0,0,-308,0,0,0,0,0,0,-344, + 0,0,0,0,0,0,0,0,0,-448, + 0,-514,0,0,0,-471,0,-455,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-488,-456,0,-466,-105,0,0, + 0,0,0,0,0,0,-391,0,-484,0, + 0,0,0,0,0,-500,0,0,0,0, + 0,0,0,0,0,-519,0,0,0,0, + 0,-461,-45,0,-496,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-463,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-63,0,0,0,0,0,0,0, + 0,-518,0,-522,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-75,0,0,0,0, + 0,0,-468,-508,0,-482,-483,0,-495,-509, + -510,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-512,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-76,0, + 0,0,0,0,0,0,0,0,-517,0, 0,0,0,0,0,0,0,0,0,0, + -22,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-130,0,0,0,0,-497,0,0,0, + 0,0,0,-23,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-202,0,0,0,0,-512, + 0,0,0,0,0,0,-24,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-381,-466,-495, - -507,0,0,0,-308,0,-393,-265,0,-320, - -484,0,-46,0,0,0,0,0,-496,0, - 0,0,-517,0,-190,0,0,0,0,0, - 0,-498,-214,0,0,0,0,0,0,0, - 0,-344,0,0,0,-518,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-25, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-391, - -447,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-200,0,0,0, + 0,0,-26,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-449,0,0,0,0,0,0, + 0,0,0,0,0,-27,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-146,0,0,0,0,0,0,0,0, - 0,0,0,-209,0,0,0,0,-119,0, + 0,0,0,0,0,0,0,0,-63,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-476,0,0, - 0,-510,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-515,-520, 0,0,0,0,0,0,0,0,0,0, - 0,-256,0,0,0,0,0,0,0,0, + 0,-75,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-121,0,0,0,0,0,0,0,0, + 0,0,0,0,-76,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-130,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-490,0,0,0,0, - 0,0,0,0,0,0,0,0,-354,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-123,0,0,0,-124,0,0,0, - 0,0,0,-184,0,0,0,0,0,0, + -202,0,0,0,0,-515,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-389, + 0,0,0,-447,-520,0,-213,0,0,0, + 0,0,-449,0,0,0,0,0,-46,0, 0,0,0,0,0,0,0,0,0,0, + -209,0,0,0,0,0,0,0,-507,-320, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-473,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-203,0,0,0,0,0,0, + 0,0,0,0,0,0,-476,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-256,0,0,0,0,-354,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-473,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-124,0,0,0,0, + 0,0,-138,0,0,0,0,0,0,0, -299,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-198,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-462,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-261,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-329,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-215, - -516,0,0,0,0,0,0,0,0,-315, + 0,0,0,0,0,0,0,-146,0,0, + 0,0,0,0,0,0,-516,-214,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-355, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-394,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-462, 0,0,0,0,0,0,0,0,0,0, - 0,-222,0,0,0,0,0,0,0,-189, + 0,0,0,0,0,0,-184,0,0,0, + 0,0,0,0,0,0,-215,0,0,0, + 0,0,0,-261,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-399,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-278,0,0,0,0,0, + 0,0,0,0,0,0,0,-329,0,0, 0,0,0,0,0,0,0,0,0,0, - -304,0,0,0,0,0,-326,0,0,0, - 0,0,0,0,0,-332,0,0,0,0, - 0,-338,0,0,0,0,0,0,0,0, + 0,0,0,-355,0,0,0,0,0,0, + 0,0,0,0,0,0,-394,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -216,0,-262,0,-389,0,0,0,0,0, + 0,0,0,-380,0,0,0,0,0,0, + 0,-189,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-17,0,0, - 0,-390,0,0,0,0,0,0,0,0, - -360,0,0,0,0,0,-361,0,0,0, + 0,0,0,-278,0,0,0,0,-304,0, 0,0,0,0,0,0,0,0,0,0, - 0,-373,0,0,0,0,0,0,0,0, - 0,0,0,-216,0,0,0,0,0,0, + 0,-436,0,0,0,0,0,0,-326,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-458,0,0,0,0, - 0,0,0,0,0,0,0,-479,0,0, - 0,0,0,0,0,0,-436,-437,-440,-400, - 0,0,0,0,0,0,0,0,-445,-287, - -491,0,0,0,0,0,0,0,0,0, + -332,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-338,0,0,0,0,0,0, + 0,0,0,0,0,-360,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-361,0,0,0,0, + -373,0,0,0,0,0,0,0,0,0, + 0,0,-458,0,0,0,0,0,0,0, + -479,0,0,0,0,0,0,0,-17,0, + 0,0,0,0,0,-390,0,0,0,0, + 0,0,0,0,0,0,-437,0,0,0, + 0,0,0,-440,0,0,0,0,0,0, + -14,0,0,0,0,0,0,0,0,0, + 0,0,0,-203,0,0,0,0,0,0, + 0,-399,0,0,0,0,0,0,-400,0, + -445,0,0,0,0,0,0,0,-287,0, + 0,0,-491,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, @@ -532,7 +532,11 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -542,537 +546,541 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface BaseAction { public final static char baseAction[] = { - 170,5,131,78,78,36,36,64,64,40, - 40,190,190,191,191,192,192,1,1,16, + 171,5,132,78,78,36,36,64,64,40, + 40,191,191,192,192,193,193,1,1,16, 16,16,16,16,16,16,16,17,17,17, 15,11,11,9,9,9,9,9,2,65, - 65,6,6,12,12,12,12,44,44,132, - 132,133,54,54,43,18,18,18,18,18, + 65,6,6,12,12,12,12,44,44,133, + 133,134,54,54,43,18,18,18,18,18, 18,18,18,18,18,18,18,18,18,18, - 18,18,18,18,134,134,134,114,19,19, + 18,18,18,18,135,135,135,114,19,19, 19,19,19,19,19,19,19,19,19,19, - 20,20,171,171,172,172,173,137,137,138, - 138,135,135,139,136,136,21,21,22,22, + 20,20,172,172,173,173,174,138,138,139, + 139,136,136,140,137,137,21,21,22,22, 23,23,23,25,25,25,25,26,26,26, 27,27,27,28,28,28,28,28,31,31, 31,32,32,33,33,34,34,35,35,37, 37,38,38,42,42,41,41,41,41,41, 41,41,41,41,41,41,41,41,39,29, - 140,140,99,99,102,102,94,193,193,69, + 141,141,99,99,102,102,94,194,194,69, 69,69,69,69,69,69,69,69,70,70, - 70,71,71,56,56,174,174,72,72,72, + 70,71,71,56,56,175,175,72,72,72, 115,115,73,73,73,73,74,74,74,74, 74,75,75,79,79,79,79,79,79,79, 49,49,49,49,49,105,105,106,106,50, - 175,24,24,24,24,24,47,47,88,88, - 88,88,88,147,147,142,142,142,142,142, - 143,143,143,144,144,144,145,145,145,146, - 146,146,89,89,89,89,89,90,90,90, + 176,24,24,24,24,24,47,47,88,88, + 88,88,88,148,148,143,143,143,143,143, + 144,144,144,145,145,145,146,146,146,147, + 147,147,89,89,89,89,89,90,90,90, 13,14,14,14,14,14,14,14,14,14, 14,14,93,119,119,119,119,119,117,117, - 117,118,118,149,149,148,148,121,121,150, - 83,83,84,84,86,87,85,52,46,151, - 151,53,51,82,82,152,152,141,141,122, - 122,77,77,153,153,62,62,62,58,58, - 57,63,63,67,67,55,55,55,91,91, - 101,100,100,60,60,59,59,61,61,48, - 103,103,103,95,95,95,96,97,97,97, - 98,98,107,107,107,109,109,108,108,194, - 194,92,92,177,177,177,177,177,124,45, - 45,155,176,176,125,125,125,125,178,178, - 30,30,116,126,126,126,126,110,110,120, - 120,120,157,158,158,158,158,158,158,158, - 158,158,181,181,179,179,180,180,159,159, - 159,159,160,182,112,111,111,183,183,161, - 161,161,161,104,104,104,184,184,10,185, - 185,186,162,154,154,163,163,164,165,165, - 7,7,8,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,167,167,167,167,167, - 167,167,167,167,167,66,68,68,168,168, - 127,127,128,128,128,128,128,128,3,4, - 169,169,166,166,129,129,129,80,81,76, - 156,156,113,113,187,187,187,130,130,123, - 123,188,188,170,170,958,38,1540,1506,808, - 915,3395,34,856,31,35,30,32,1627,260, - 29,27,55,978,108,79,80,110,986,507, - 1088,1028,1148,1096,1278,272,1182,1157,1237,1192, - 1309,82,1359,145,327,3199,160,146,1097,38, - 795,36,808,1330,2521,34,856,43,35,4630, - 2395,38,795,36,808,230,2195,34,856,31, - 35,30,32,782,260,29,27,55,978,108, - 79,80,110,986,1182,1088,1028,1148,1096,1396, - 371,1182,2059,233,228,229,348,2120,273,2351, - 38,795,36,808,1209,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,89,79, - 80,240,243,246,249,3370,2056,38,795,36, - 808,1626,4182,34,856,31,35,62,32,327, - 38,499,2599,808,984,561,160,3148,2901,4199, - 4272,4333,4337,1540,38,795,36,808,2399,2195, - 34,856,31,35,2423,32,782,260,29,27, - 55,978,108,79,80,110,986,339,1088,1028, - 1148,1096,484,856,1182,1157,1237,1192,1309,369, - 1359,145,327,2925,504,146,2165,38,795,36, - 808,2411,4182,34,856,31,35,61,32,327, - 38,2658,2644,808,505,1540,38,795,36,808, - 2399,2195,34,856,31,35,2423,32,782,260, - 29,27,55,978,108,79,80,110,986,339, - 1088,1028,1148,1096,1008,1314,1182,1157,1237,1192, - 1309,554,1359,145,1071,590,504,146,1385,433, - 66,2493,1031,2411,1097,38,795,36,808,1412, - 429,34,856,2512,35,1279,505,327,38,1497, - 381,808,500,1740,38,795,36,808,1493,2195, - 34,856,31,35,30,32,782,260,29,27, - 55,978,108,79,80,110,986,37,1088,1028, - 1148,1096,349,284,1182,1157,1237,1192,1309,2414, - 1359,145,2452,568,144,146,2138,2173,38,387, - 65,1650,38,795,36,808,1853,4194,34,856, - 31,35,64,32,500,1805,38,795,36,808, - 2399,2195,34,856,31,35,2423,32,782,260, - 29,27,55,978,108,79,80,110,986,339, - 1088,1028,1148,1096,1963,2466,1182,1157,1237,1192, - 1309,2524,1359,145,2452,2587,504,146,1650,38, - 795,36,808,2411,4194,34,856,31,35,63, - 32,1606,38,795,36,808,505,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,30,1088,1028,1148,1096, - 673,1209,1182,1157,1237,1192,1309,3306,1359,145, - 1353,321,374,146,1856,38,795,36,808,1209, - 4194,34,856,31,35,30,32,1021,2610,497, - 66,38,1454,46,808,377,943,45,856,1678, - 38,795,36,808,501,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,108,79, - 80,110,986,442,1088,1028,1148,1096,351,1209, - 1182,1157,1237,1192,1309,519,1359,145,235,446, - 374,146,1097,38,795,36,808,1038,1021,34, - 856,2655,35,2520,38,278,378,445,1979,38, - 795,36,808,375,2195,34,856,31,35,30, - 32,782,260,29,27,55,978,108,79,80, - 110,986,2466,1088,1028,1148,1096,325,331,1182, - 1157,1237,1192,1309,2490,1359,145,409,1207,160, - 146,327,38,499,275,808,2421,4025,1038,4096, - 327,38,2694,327,38,1497,381,808,2190,1979, - 38,795,36,808,379,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,108,79, - 80,110,986,272,1088,1028,1148,1096,330,331, - 1182,1157,1237,1192,1309,1155,1359,145,153,568, - 368,146,1979,38,795,36,808,1006,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,110,986,30,1088,1028,1148, - 1096,735,1295,1182,1157,1237,1192,1309,561,1359, - 145,508,1092,368,146,350,274,1979,38,795, - 36,808,519,2195,34,856,31,35,30,32, - 782,260,29,27,55,978,108,79,80,110, - 986,2523,1088,1028,1148,1096,2399,483,1182,1157, - 1237,1192,1309,367,1359,145,1209,931,368,146, - 1914,38,795,36,808,339,2195,34,856,31, - 35,30,32,782,260,29,27,55,978,108, - 79,80,110,986,590,1088,1028,1148,1096,4061, - 4075,1182,1157,1237,1192,1309,366,1359,145,508, - 1444,374,146,2975,590,1979,38,795,36,808, - 4147,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,110,986,155, - 1088,1028,1148,1096,56,4002,1182,1157,1237,1192, - 1309,364,1359,145,327,3714,161,146,2171,1979, - 38,795,36,808,1209,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,108,79, - 80,110,986,1786,1088,1028,1148,1096,2399,1091, - 1182,1157,1237,1192,1309,372,1359,145,395,333, - 157,146,1979,38,795,36,808,339,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,110,986,1056,1088,1028,1148, - 1096,1697,3163,1182,1157,1237,1192,1309,3701,1359, - 145,420,323,156,146,1979,38,795,36,808, - 1209,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,110,986,1056, - 1088,1028,1148,1096,2296,3163,1182,1157,1237,1192, - 1309,328,1359,145,1899,1584,155,146,1979,38, - 795,36,808,1209,2195,34,856,31,35,30, - 32,782,260,29,27,55,978,108,79,80, - 110,986,1056,1088,1028,1148,1096,1654,3163,1182, - 1157,1237,1192,1309,328,1359,145,2008,99,154, - 146,1979,38,795,36,808,1029,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,2533,1088,1028,1148,1096, - 3504,1155,1182,1157,1237,1192,1309,328,1359,145, - 1145,100,153,146,1979,38,795,36,808,154, - 2195,34,856,31,35,30,32,782,260,29, - 27,55,978,108,79,80,110,986,1056,1088, - 1028,1148,1096,3349,3163,1182,1157,1237,1192,1309, - 90,1359,145,104,589,152,146,1979,38,795, - 36,808,1377,2195,34,856,31,35,30,32, - 782,260,29,27,55,978,108,79,80,110, - 986,2448,1088,1028,1148,1096,2399,1410,1182,1157, - 1237,1192,1309,328,1359,145,691,1525,151,146, - 1979,38,795,36,808,2603,2195,34,856,31, - 35,30,32,782,260,29,27,55,978,108, - 79,80,110,986,1658,1088,1028,1148,1096,4590, - 3163,1182,1157,1237,1192,1309,1745,1359,145,2975, - 1566,150,146,1979,38,795,36,808,2095,2195, - 34,856,31,35,30,32,782,260,29,27, - 55,978,108,79,80,110,986,1667,1088,1028, - 1148,1096,1740,356,1182,1157,1237,1192,1309,329, - 1359,145,2488,952,149,146,1979,38,795,36, - 808,1333,2195,34,856,31,35,30,32,782, - 260,29,27,55,978,108,79,80,110,986, - 1056,1088,1028,1148,1096,2296,3163,1182,1157,1237, - 1192,1309,508,1359,145,1769,588,148,146,1979, - 38,795,36,808,675,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,108,79, - 80,110,986,1729,1088,1028,1148,1096,28,3163, - 1182,1157,1237,1192,1309,1783,1359,145,762,849, - 147,146,1870,38,795,36,808,1424,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,110,986,1663,1088,1028,1148, - 1096,2893,670,1182,1157,1237,1192,1309,1783,2539, - 166,1979,38,795,36,808,310,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,2183,1088,1028,1148,1096, - 95,382,1182,1157,1237,1192,1309,96,1359,145, - 324,91,142,146,104,327,38,1497,381,808, - 184,2303,38,795,36,808,1334,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,272,1088,1028,1148,1096, - 98,757,1182,1157,1237,1192,1309,508,1359,145, - 568,1492,191,146,2395,38,795,36,808,1379, - 2195,34,856,31,35,30,32,782,260,29, - 27,55,978,108,79,80,110,986,1424,1088, - 1028,1148,1096,73,590,1182,1157,1237,1192,1309, - 4697,2539,166,2395,38,795,36,808,77,2195, - 34,856,31,35,30,32,782,260,29,27, - 55,978,108,79,80,110,986,1526,1088,1028, - 1148,1096,2424,1114,1182,1157,1237,1192,1309,2544, - 2539,166,1600,38,499,275,808,327,38,1497, - 381,808,281,2395,38,795,36,808,288,2195, - 34,856,31,35,30,32,782,260,29,27, - 55,978,108,79,80,110,986,272,1088,1028, - 1148,1096,1297,74,1182,1157,1237,1192,1309,1206, - 2539,166,2395,38,795,36,808,1463,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,110,986,30,1088,1028,1148, - 1096,977,2066,1182,1157,1237,1192,1309,4712,2539, - 166,1600,38,499,2999,808,508,426,383,415, - 336,1767,2395,38,795,36,808,411,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,110,986,30,1088,1028,1148, - 1096,4622,58,1182,1157,1237,1192,1309,45,2539, - 166,2439,38,795,36,808,410,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,30,1088,1028,1148,1096, - 1997,1093,1182,1157,1237,1192,1309,2809,2539,166, - 327,38,499,279,808,1522,38,1497,381,808, - 1424,2395,38,795,36,808,413,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,54,1088,1028,1148,1096, - 2708,590,1182,1157,1237,1192,2181,4761,1455,778, - 2395,38,795,36,808,3698,2195,34,856,31, - 35,30,32,782,260,29,27,55,978,108, - 79,80,110,986,282,1088,1028,1148,1096,508, - 393,1182,1157,1237,2111,2395,38,795,36,808, - 1379,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,110,986,1862, - 1088,1028,1148,1096,2415,57,1182,1157,2052,2395, - 38,795,36,808,1831,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,108,79, - 80,110,986,30,1088,1028,1148,1096,2703,508, - 1931,2395,38,795,36,808,1975,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,986,2050,1088,1028,1148,2002, - 2395,38,795,36,808,346,2195,34,856,31, - 35,30,32,782,260,29,27,55,978,108, - 79,80,110,986,75,1088,1028,1148,2009,2483, - 38,1497,381,808,2059,3011,327,38,499,277, - 808,1968,235,260,1799,1526,1439,508,1259,38, - 1497,381,808,1361,2395,38,795,36,808,272, - 2195,34,856,31,35,30,32,782,260,29, - 27,55,978,108,79,80,110,986,272,1088, - 1028,1756,240,92,2395,38,795,36,808,230, - 2195,34,856,31,35,30,32,782,260,29, - 27,55,978,108,79,80,110,986,347,1088, - 1028,1764,327,38,280,30,2024,233,228,229, - 2643,2399,273,327,38,1497,381,808,327,38, - 1497,381,808,1800,3645,3629,340,765,549,345, - 339,2775,2576,855,338,240,243,246,249,3370, - 1187,778,1707,54,2142,1626,384,415,419,327, - 38,289,76,30,604,1526,1455,2973,1145,2107, - 1526,3148,2901,4199,4272,4333,4337,2395,38,795, - 36,808,397,2195,34,856,31,35,30,32, - 782,260,29,27,55,978,108,79,80,110, - 986,2147,1088,1028,1798,2395,38,795,36,808, - 2120,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,110,986,2145, - 1088,1028,1799,1105,38,795,36,808,1482,4675, - 34,856,31,35,335,32,2395,38,795,36, - 808,508,2195,34,856,31,35,30,32,782, - 260,29,27,55,978,108,79,80,110,986, - 1278,1088,1832,1425,30,1399,386,415,2399,2535, - 2399,385,415,442,1399,2576,1278,3035,2025,2399, - 316,2745,318,2540,1964,311,894,2603,2684,2603, - 347,428,327,38,1497,381,808,2631,2603,3644, - 2957,1083,38,795,36,808,4550,4675,34,856, - 31,35,335,32,2193,298,3738,2466,340,765, - 549,345,422,1341,2925,508,2954,2395,38,795, - 36,808,371,2195,34,856,31,35,30,32, - 782,260,29,27,55,978,108,79,80,110, - 986,30,1088,1921,2656,355,2958,491,316,2745, - 318,3146,433,311,894,2080,491,936,347,1976, - 2887,2749,2774,327,38,1497,381,808,2998,1531, - 38,795,36,808,1482,4675,34,856,31,35, - 335,32,488,490,430,2508,340,765,549,345, - 361,489,490,421,2339,2395,38,795,36,808, - 511,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,110,986,590, - 1678,3663,322,3200,508,4767,316,2745,318,1964, - 320,311,894,1019,283,508,347,519,4468,1722, - 38,439,2520,38,276,4782,514,1219,38,3135, - 36,808,1568,4706,34,856,31,35,335,32, - 72,1958,2941,508,340,765,549,345,327,38, - 289,71,515,2395,38,795,36,808,508,2195, - 34,856,31,35,30,32,782,260,29,27, - 55,978,108,79,80,110,986,508,1712,70, - 347,508,328,175,316,2745,318,2406,525,311, - 894,1023,30,590,69,30,1349,3658,1466,4816, - 1048,2399,4252,1048,905,2092,1941,227,340,765, - 549,345,158,3417,1425,2139,2339,60,4526,2399, - 227,1,3045,182,2417,2211,525,158,202,213, - 4606,2511,201,210,211,212,214,523,2603,171, - 508,1328,398,4509,2214,227,2211,2572,1341,2925, - 158,230,185,169,170,172,173,174,175,176, - 3045,182,399,1344,2916,2495,202,213,4606,590, - 201,210,211,212,214,4828,59,171,1385,242, - 228,229,432,3233,3257,183,406,3149,508,2589, - 186,169,170,172,173,174,175,176,4030,2681, - 2915,414,38,1497,381,808,355,2230,1446,38, - 795,36,808,1568,4706,34,856,31,35,335, - 32,3066,2749,2774,319,30,508,2152,659,334, - 4055,54,2399,2189,1048,2576,2360,2640,510,2525, - 38,276,2399,784,1455,2522,327,38,499,3125, - 808,227,2377,400,403,1103,508,2931,162,510, - 2576,227,103,328,568,316,2745,318,530,283, - 311,894,204,213,4606,181,203,210,211,212, - 214,2677,204,213,4606,1670,203,210,211,212, - 214,2570,3534,205,1100,2916,2200,2941,568,4526, - 197,508,3554,205,3056,2916,215,206,207,208, - 209,290,291,292,293,2650,215,206,207,208, - 209,290,291,292,293,1632,2753,2576,2106,2581, - 305,2399,4218,3619,1048,2764,30,437,2606,2558, - 2399,1531,4218,3736,327,38,1497,381,808,3354, - 227,237,260,327,38,1497,381,808,158,227, - 3739,327,38,1497,381,808,2530,196,3203,199, - 1100,204,213,4606,420,203,210,211,212,214, - 204,213,4606,54,203,210,211,212,214,2576, - 1940,54,205,2576,2916,30,1455,2747,230,2378, - 1048,205,517,2916,51,215,206,207,208,209, - 290,291,292,293,215,206,207,208,209,290, - 291,292,293,2656,158,1436,238,228,229,200, - 617,4218,4007,198,1927,327,38,1497,381,808, - 4218,4082,2395,38,1540,1506,808,2702,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,87,438,2703,2395,38,795, - 36,808,37,2195,34,856,31,35,30,32, - 782,260,29,27,55,978,108,79,80,110, - 1713,2395,38,795,36,808,2662,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,110,1721,2395,38,795,36,808, - 508,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,110,1755,1300, - 38,795,36,808,2576,4706,34,856,31,35, - 335,32,30,30,30,2668,3569,1048,1048,1048, - 1387,38,2520,2299,808,2576,4344,2173,38,387, - 334,262,30,2692,1278,1048,525,2924,2173,38, - 387,158,158,158,219,2215,38,1497,381,808, - 54,1752,1236,2148,329,227,316,2745,318,162, - 158,312,894,1455,729,3660,347,30,30,349, - 3045,182,4092,2645,525,54,202,213,4606,1851, - 201,210,211,212,214,4691,30,171,1455,1084, - 513,2580,2300,227,342,765,549,345,158,1103, - 3705,169,170,172,173,174,175,176,3045,182, - 2704,1958,38,439,202,213,4606,4782,201,210, - 211,212,214,436,2709,171,2507,334,525,2269, - 2175,525,1048,2712,2715,508,2723,3365,178,169, - 170,172,173,174,175,176,30,227,3846,2725, - 4049,895,158,2685,1043,158,162,3171,2399,30, - 3163,523,3045,182,1048,164,525,508,202,213, - 4606,3473,201,210,211,212,214,2603,2736,171, - 508,30,30,2092,30,227,2399,1072,4050,4120, - 158,2686,189,169,170,172,173,174,175,176, - 3045,182,508,3511,2776,339,202,213,4606,329, - 201,210,211,212,214,610,3565,171,2507,2576, - 525,347,30,1048,47,2571,2891,2399,3375,2411, - 3869,169,170,172,173,174,175,176,3384,227, - 418,1278,1549,334,158,491,339,158,1048,342, - 765,549,345,697,3045,182,2576,164,525,302, - 202,213,4606,2716,201,210,211,212,214,1424, - 2411,171,162,2738,436,3233,3257,227,2582,2745, - 488,490,158,1584,192,169,170,172,173,174, - 175,176,3045,182,2576,2741,4051,512,202,213, - 4606,3568,201,210,211,212,214,784,1021,171, - 2507,30,525,30,30,1048,3503,511,2935,2399, - 3606,3690,188,169,170,172,173,174,175,176, - 30,227,30,296,301,2697,158,1048,339,158, - 2509,2743,2950,3171,88,871,3045,182,2724,164, - 525,508,202,213,4606,2557,201,210,211,212, - 214,158,2411,171,2748,2737,2576,30,1038,227, - 4121,2814,3037,2576,158,1592,195,169,170,172, - 173,174,175,176,3045,182,1424,3591,30,2763, - 202,213,4606,2956,201,210,211,212,214,30, - 30,171,30,1969,3047,3136,4541,3145,327,331, - 49,2571,3716,220,194,169,170,172,173,174, - 175,176,2395,38,795,36,808,2775,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,88,2395,38,795,36,808, - 303,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,86,2395,38, - 795,36,808,2749,2195,34,856,31,35,30, - 32,782,260,29,27,55,978,108,79,80, - 85,2395,38,795,36,808,2799,2195,34,856, - 31,35,30,32,782,260,29,27,55,978, - 108,79,80,84,2395,38,795,36,808,169, - 2195,34,856,31,35,30,32,782,260,29, - 27,55,978,108,79,80,83,2395,38,795, - 36,808,5309,2195,34,856,31,35,30,32, - 782,260,29,27,55,978,108,79,80,82, - 2395,38,795,36,808,5309,2195,34,856,31, - 35,30,32,782,260,29,27,55,978,108, - 79,80,81,2252,38,795,36,808,5309,2195, - 34,856,31,35,30,32,782,260,29,27, - 55,978,108,79,80,106,2395,38,795,36, - 808,5309,2195,34,856,31,35,30,32,782, - 260,29,27,55,978,108,79,80,112,2395, - 38,795,36,808,5309,2195,34,856,31,35, - 30,32,782,260,29,27,55,978,108,79, - 80,111,2395,38,795,36,808,1424,2195,34, - 856,31,35,30,32,782,260,29,27,55, - 978,108,79,80,109,2395,38,795,36,808, - 2576,2195,34,856,31,35,30,32,782,260, - 29,27,55,978,108,79,80,107,2846,30, - 508,2507,5309,2399,4306,1021,1048,2038,1851,5309, - 334,2690,2399,30,4691,1048,2759,5309,2399,30, - 297,295,227,2576,921,327,38,1497,381,808, - 158,227,1424,30,5309,5309,373,339,1048,162, - 164,5309,1021,204,213,4606,1661,203,210,211, - 212,214,204,213,4606,54,203,210,211,212, - 214,2411,158,193,205,1038,2916,5309,1455,2832, - 1021,2856,2825,205,1617,2916,2399,485,206,207, - 208,209,290,291,292,293,507,206,207,208, - 209,290,291,292,293,227,294,327,38,1497, - 381,808,1038,4239,5309,3496,331,5309,5309,3036, - 376,5309,2092,5309,2938,5309,204,213,4606,2399, - 203,210,211,212,214,5309,5309,54,5309,5309, - 1038,5309,501,38,1497,381,808,205,227,2916, - 1455,3049,3532,331,327,38,1497,381,808,1386, - 304,206,207,208,209,290,291,292,293,204, - 213,4606,54,203,210,211,212,214,2671,417, - 3680,331,508,2399,54,1455,1865,5309,5309,5309, - 205,5309,2916,5309,5309,5309,2418,1455,778,508, - 508,3101,227,508,206,207,208,209,290,291, - 292,293,327,38,1497,381,808,5309,4073,230, - 5309,5309,5309,204,213,4606,5309,203,210,211, - 212,214,1739,5309,5309,3657,3695,5309,5309,5309, - 5309,5309,54,5309,205,5309,2916,245,228,229, - 5309,5309,5309,5309,5309,1455,2988,216,206,207, - 208,209,290,291,292,293,2072,38,795,36, - 808,1568,4675,34,856,31,35,335,32,1455, - 38,3135,36,808,1568,4675,34,856,31,35, - 335,32,230,2051,5309,5309,5309,2546,38,1497, - 381,808,5309,3011,1309,38,1497,381,808,5309, - 236,260,5309,5309,5309,5309,5309,5309,5309,5309, - 248,228,229,316,2745,318,5309,272,311,894, - 334,5309,5309,5309,54,1048,316,2745,318,5309, - 5309,311,894,1670,5309,5309,5309,1455,52,5309, - 5309,5309,5309,230,5309,5309,905,230,1043,162, - 5309,5309,5309,1514,38,795,36,808,1568,4675, - 34,856,31,35,335,32,5309,5309,5309,5309, - 5309,251,228,229,30,234,228,229,305,2399, - 273,1514,38,795,36,808,1568,4675,34,856, - 31,35,335,32,5309,5309,5309,3723,339,5309, - 5309,5309,5309,241,244,247,250,3370,3739,5309, - 316,2745,318,1626,5309,311,894,5309,1057,3111, - 5309,5309,2411,2399,3163,5309,5309,5309,407,3149, - 1670,5309,5309,5309,5309,2705,5309,5309,316,2745, - 318,5309,2603,311,894,1514,38,795,36,808, - 1568,4675,34,856,31,35,335,32,2998,1159, - 38,795,36,808,2837,4675,34,856,31,35, - 335,32,5309,328,5309,306,1173,38,795,36, - 808,5309,4706,34,856,31,35,335,32,5309, - 30,2507,5309,5309,5309,1048,1048,5309,5309,394, - 1057,5309,316,2745,318,2399,3163,311,894,3504, - 355,5309,5309,5309,5309,5309,313,3062,318,158, - 158,5309,3823,5309,2603,2621,2749,2774,5309,2853, - 164,329,5309,316,2745,318,5309,5309,314,894, - 1173,38,795,36,808,5309,4706,34,856,31, - 35,335,32,5309,5309,328,1592,38,795,36, - 808,3018,4675,34,856,31,35,335,32,5309, - 5309,5309,1267,5309,5309,5309,5309,2399,4252,5309, - 414,38,1497,381,808,5309,5309,5309,5309,5309, - 5309,3349,355,4240,5309,329,227,316,2745,318, - 5309,5309,312,894,5309,5309,30,2621,2749,2774, - 54,2399,3235,313,3062,318,5309,1328,398,4509, - 5309,5309,5309,1455,52,1972,38,1497,381,808, - 339,5309,5309,5309,2482,5309,5309,5309,399,5309, - 2916,1972,38,1497,381,808,5309,501,38,1497, - 381,808,5309,5309,2411,54,1972,38,1497,381, - 808,5309,1972,38,1497,381,808,495,1455,3009, - 5309,54,5309,5309,5309,5309,2915,54,5309,2017, - 5309,5309,5309,5309,1455,52,54,5309,5309,5309, - 1455,52,54,5309,5309,2498,5309,5309,30,1455, - 3043,1032,2210,525,5309,1455,52,2399,5309,3235, - 2017,1972,38,1497,381,808,2672,1972,38,1497, - 381,808,339,5309,5309,5309,339,158,5309,400, - 402,5309,1972,38,1497,381,808,1752,518,5309, - 5309,54,5309,5309,30,5309,2411,54,5309,1048, - 2411,1807,5309,2906,1455,52,5309,5309,5309,1279, - 1455,52,54,521,5309,2753,2220,38,1497,381, - 808,3154,5309,158,5309,1455,52,5309,2347,38, - 1497,381,808,2868,5309,5309,3245,30,30,30, - 30,5309,525,525,525,2399,54,5309,5309,30, - 30,30,5309,5309,2399,1048,1048,5309,54,1455, - 52,339,339,339,339,5309,158,158,158,5309, - 2529,1455,52,339,5309,5309,190,190,190,158, - 158,5309,2858,5309,5309,4495,4495,4495,2411,1420, - 4222,5309,5309,5309,5309,5309,5309,2411,5309,5309, - 5309,493,5309,5309,5309,5309,5309,5309,5309,5309, - 522,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 3176,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 5309,5309,3485,3517,3530,5309,0,5327,42,0, - 5326,42,0,499,33,0,440,1176,0,41, - 5327,0,41,5326,0,128,2547,0,1,430, - 0,42,5327,0,42,5326,0,444,951,0, - 443,969,0,499,44,0,2905,93,0,499, - 380,0,36,381,0,381,36,0,33,380, - 0,380,33,0,499,33,380,0,797,42, - 0,1,775,0,1,5580,0,1,5579,0, - 1,5578,0,1,5577,0,1,5576,0,1, - 5575,0,1,5574,0,1,5573,0,1,5572, - 0,1,5571,0,1,5570,0,1,5327,42, - 0,1,5326,42,0,1,980,0,5541,239, - 0,5540,239,0,5643,239,0,5642,239,0, - 5568,239,0,5567,239,0,5566,239,0,5565, - 239,0,5564,239,0,5563,239,0,5562,239, - 0,5561,239,0,5580,239,0,5579,239,0, - 5578,239,0,5577,239,0,5576,239,0,5575, - 239,0,5574,239,0,5573,239,0,5572,239, - 0,5571,239,0,5570,239,0,42,239,5327, - 0,42,239,5326,0,239,5350,0,53,5327, - 0,53,5326,0,235,3039,0,48,5348,0, - 48,40,0,5327,53,0,5326,53,0,130, - 2547,0,129,2547,0,30,506,0,5635,431, - 0,2086,431,0,1,5350,0,1,42,0, - 52,40,0,1,94,0,226,1,5350,0, - 226,1,42,0,226,405,0,40,5327,0, - 40,5326,0,40,5327,2,0,40,5326,2, - 0,5327,39,0,5326,39,0,5348,50,0, - 50,40,0,5319,396,0,5318,396,0,1, - 4431,0,1,2486,0,1,797,0,226,404, - 0,3382,315,0,5635,97,0,2086,97,0, - 1,5635,0,1,2086,0,277,3477,0,1, - 847,0,1,3377,0,5317,1,0,487,4057, - 0,226,1,0,226,1,3483,0,5319,226, - 0,5318,226,0,3694,226,0,8,10,0, - 226,218,0,226,217,0,187,3603,0 + 117,118,118,150,150,149,149,121,121,151, + 83,83,84,84,86,87,85,52,46,152, + 152,53,51,82,82,153,153,142,142,122, + 123,123,77,77,154,154,62,62,62,58, + 58,57,63,63,67,67,55,55,55,91, + 91,101,100,100,60,60,59,59,61,61, + 48,103,103,103,95,95,95,96,97,97, + 97,98,98,107,107,107,109,109,108,108, + 195,195,92,92,178,178,178,178,178,125, + 45,45,156,177,177,126,126,126,126,179, + 179,30,30,116,127,127,127,127,110,110, + 120,120,120,158,159,159,159,159,159,159, + 159,159,159,182,182,180,180,181,181,160, + 160,160,160,161,183,112,111,111,184,184, + 162,162,162,162,104,104,104,185,185,10, + 186,186,187,163,155,155,164,164,165,166, + 166,7,7,8,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,168,168,168,168, + 168,168,168,168,168,168,66,68,68,169, + 169,128,128,129,129,129,129,129,129,3, + 4,170,170,167,167,130,130,130,80,81, + 76,157,157,113,113,188,188,188,131,131, + 124,124,189,189,171,171,958,38,1617,1584, + 964,915,4393,34,1051,31,35,30,32,1890, + 260,29,27,55,1076,108,79,80,110,1113, + 30,1197,1196,1283,1279,675,272,1326,1291,1368, + 1334,1402,1278,1488,145,327,2787,160,146,1097, + 38,954,36,964,1330,2828,34,1051,43,35, + 4622,2395,38,954,36,964,230,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,1182,1197,1196,1283,1279, + 1267,1851,1326,2520,233,228,229,4659,3714,273, + 2351,38,954,36,964,82,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,89, + 79,80,240,243,246,249,2829,507,2056,38, + 954,36,964,1798,4418,34,1051,31,35,62, + 32,327,38,500,2897,964,984,625,508,3154, + 2774,3151,3233,3528,4386,1540,38,954,36,964, + 2399,2195,34,1051,31,35,2750,32,953,260, + 29,27,55,1076,108,79,80,110,1113,340, + 1197,1196,1283,1279,484,590,1326,1291,1368,1334, + 1402,2493,1488,145,349,1740,505,146,2165,38, + 954,36,964,2411,4418,34,1051,31,35,61, + 32,327,38,2743,2533,964,506,1540,38,954, + 36,964,2399,2195,34,1051,31,35,2750,32, + 953,260,29,27,55,1076,108,79,80,110, + 1113,340,1197,1196,1283,1279,327,3654,1326,1291, + 1368,1334,1402,419,1488,145,327,3075,505,146, + 327,38,2903,66,160,2411,1097,38,954,36, + 964,1658,430,34,1051,2108,35,3135,506,856, + 327,38,1583,382,964,501,1740,38,954,36, + 964,855,2195,34,1051,31,35,30,32,953, + 260,29,27,55,1076,108,79,80,110,1113, + 37,1197,1196,1283,1279,2211,1008,1326,1291,1368, + 1334,1402,2713,1488,145,2758,330,144,146,2138, + 2173,38,388,65,1650,38,954,36,964,1071, + 4231,34,1051,31,35,64,32,501,1805,38, + 954,36,964,2399,2195,34,1051,31,35,2750, + 32,953,260,29,27,55,1076,108,79,80, + 110,1113,340,1197,1196,1283,1279,284,2466,1326, + 1291,1368,1334,1402,2846,1488,145,2758,1424,505, + 146,1650,38,954,36,964,2411,4231,34,1051, + 31,35,63,32,1606,38,954,36,964,506, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,511,1197, + 1196,1283,1279,1031,1279,1326,1291,1368,1334,1402, + 3458,1488,145,1654,1493,375,146,1856,38,954, + 36,964,383,4231,34,1051,31,35,30,32, + 1526,1021,498,66,38,1541,46,964,378,1526, + 45,1051,2644,1678,38,954,36,964,502,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,110,1113,443,1197,1196, + 1283,1279,352,1385,1326,1291,1368,1334,1402,520, + 1488,145,1526,1412,375,146,1097,38,954,36, + 964,3461,1526,34,1051,2230,35,327,38,280, + 379,1853,1979,38,954,36,964,376,2195,34, + 1051,31,35,30,32,953,260,29,27,55, + 1076,108,79,80,110,1113,2610,1197,1196,1283, + 1279,326,332,1326,1291,1368,1334,1402,569,1488, + 145,384,416,160,146,327,38,500,275,964, + 385,416,30,3872,1800,3612,3609,737,327,38, + 1583,382,964,943,1979,38,954,36,964,380, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,420,1197, + 1196,1283,1279,387,416,1326,1291,1368,1334,1402, + 508,1488,145,386,416,369,146,1979,38,954, + 36,964,1209,2195,34,1051,31,35,30,32, + 953,260,29,27,55,1076,108,79,80,110, + 1113,590,1197,1196,1283,1279,4158,3172,1326,1291, + 1368,1334,1402,625,1488,145,235,1207,369,146, + 1979,38,954,36,964,1697,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,110,1113,2523,1197,1196,1283,1279,2399, + 590,1326,1291,1368,1334,1402,3276,1488,145,368, + 485,369,146,1914,38,954,36,964,340,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,110,1113,1056,1197,1196, + 1283,1279,3819,3135,1326,1291,1368,1334,1402,2421, + 1488,145,367,153,375,146,1979,38,954,36, + 964,1006,2195,34,1051,31,35,30,32,953, + 260,29,27,55,1076,108,79,80,110,1113, + 1056,1197,1196,1283,1279,1155,3135,1326,1291,1368, + 1334,1402,329,1488,145,365,1295,161,146,1979, + 38,954,36,964,1092,2195,34,1051,31,35, + 30,32,953,260,29,27,55,1076,108,79, + 80,110,1113,1056,1197,1196,1283,1279,791,3135, + 1326,1291,1368,1334,1402,329,1488,145,931,373, + 157,146,1979,38,954,36,964,1209,2195,34, + 1051,31,35,30,32,953,260,29,27,55, + 1076,108,79,80,110,1113,1314,1197,1196,1283, + 1279,2803,155,1326,1291,1368,1334,1402,329,1488, + 145,1379,3897,156,146,1979,38,954,36,964, + 1209,2195,34,1051,31,35,30,32,953,260, + 29,27,55,1076,108,79,80,110,1113,1056, + 1197,1196,1283,1279,3428,3135,1326,1291,1368,1334, + 1402,2394,1488,145,3213,447,155,146,1979,38, + 954,36,964,350,2195,34,1051,31,35,30, + 32,953,260,29,27,55,1076,108,79,80, + 110,1113,2448,1197,1196,1283,1279,2399,1091,1326, + 1291,1368,1334,1402,329,1488,145,2171,446,154, + 146,1979,38,954,36,964,2604,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,74,1197,1196,1283,1279, + 4574,333,1326,1291,1368,1334,1402,396,1488,145, + 420,1899,153,146,1979,38,954,36,964,1209, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,1584,1197, + 1196,1283,1279,1155,357,1326,1291,1368,1334,1402, + 508,1488,145,2008,1029,152,146,1979,38,954, + 36,964,1209,2195,34,1051,31,35,30,32, + 953,260,29,27,55,1076,108,79,80,110, + 1113,1963,1197,1196,1283,1279,28,1145,1326,1291, + 1368,1334,1402,508,1488,145,2708,4181,151,146, + 1979,38,954,36,964,1209,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,110,1113,590,1197,1196,1283,1279,73, + 4679,1326,1291,1368,1334,1402,394,1488,145,1566, + 56,150,146,1979,38,954,36,964,322,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,110,1113,1786,1197,1196, + 1283,1279,2399,154,1326,1291,1368,1334,1402,2868, + 1488,145,3213,324,149,146,1979,38,954,36, + 964,340,2195,34,1051,31,35,30,32,953, + 260,29,27,55,1076,108,79,80,110,1113, + 2066,1197,1196,1283,1279,2106,4714,1326,1291,1368, + 1334,1402,508,1488,145,589,1377,148,146,1979, + 38,954,36,964,1410,2195,34,1051,31,35, + 30,32,953,260,29,27,55,1076,108,79, + 80,110,1113,1056,1197,1196,1283,1279,58,3135, + 1326,1291,1368,1334,1402,508,1488,145,691,1209, + 147,146,1870,38,954,36,964,1424,2195,34, + 1051,31,35,30,32,953,260,29,27,55, + 1076,108,79,80,110,1113,1729,1197,1196,1283, + 1279,57,3135,1326,1291,1368,1334,1402,1826,2854, + 166,1979,38,954,36,964,311,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,1344,1197,1196,1283,1279, + 2522,281,1326,1291,1368,1334,1402,99,1488,145, + 325,1826,142,146,508,327,38,1583,382,964, + 1525,2303,38,954,36,964,1635,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,272,1197,1196,1283,1279, + 347,96,1326,1291,1368,1334,1402,2095,1488,145, + 661,1209,191,146,2395,38,954,36,964,1424, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,1663,1197, + 1196,1283,1279,2996,98,1326,1291,1368,1334,1402, + 2488,2854,166,2395,38,954,36,964,274,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,110,1113,780,1197,1196, + 1283,1279,952,282,1326,1291,1368,1334,1402,100, + 2854,166,1600,38,500,275,964,327,38,1583, + 382,964,184,2395,38,954,36,964,288,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,110,1113,272,1197,1196, + 1283,1279,1333,590,1326,1291,1368,1334,1402,4726, + 2854,166,2395,38,954,36,964,1931,2195,34, + 1051,31,35,30,32,953,260,29,27,55, + 1076,108,79,80,110,1113,30,1197,1196,1283, + 1279,981,590,1326,1291,1368,1334,1402,4746,2854, + 166,1600,38,500,3259,964,1667,1769,2576,588, + 77,1783,2395,38,954,36,964,412,2195,34, + 1051,31,35,30,32,953,260,29,27,55, + 1076,108,79,80,110,1113,30,1197,1196,1283, + 1279,3473,675,1326,1291,1368,1334,1402,398,2854, + 166,2439,38,954,36,964,411,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,30,1197,1196,1283,1279, + 980,590,1326,1291,1368,1334,1402,4763,2854,166, + 327,38,500,279,964,1522,38,1583,382,964, + 1379,2395,38,954,36,964,414,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,54,1197,1196,1283,1279, + 2576,2587,1326,1291,1368,1334,2540,762,1568,1023, + 2395,38,954,36,964,3644,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,110,1113,1862,1197,1196,1283,1279,989, + 298,1326,1291,1368,2524,2395,38,954,36,964, + 95,2195,34,1051,31,35,30,32,953,260, + 29,27,55,1076,108,79,80,110,1113,30, + 1197,1196,1283,1279,2529,849,1326,1291,2513,2395, + 38,954,36,964,75,2195,34,1051,31,35, + 30,32,953,260,29,27,55,1076,108,79, + 80,110,1113,30,1197,1196,1283,1279,2646,2490, + 2452,2395,38,954,36,964,670,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,110,1113,757,1197,1196,1283,2491, + 2395,38,954,36,964,2576,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,110,1113,2296,1197,1196,1283,2510,2483, + 38,1583,382,964,569,3450,327,38,500,277, + 964,1968,235,260,410,181,1310,508,1259,38, + 1583,382,964,2080,2395,38,954,36,964,272, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,272,1197, + 1196,2109,1492,92,2395,38,954,36,964,230, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,348,1197, + 1196,2142,327,38,1583,382,964,233,228,229, + 323,2424,273,327,38,1583,382,964,327,38, + 1583,382,964,327,38,289,341,1396,647,346, + 2544,2978,54,1297,339,240,243,246,249,2829, + 1206,2466,30,54,1767,51,1798,1315,423,1341, + 3075,90,76,30,104,2300,1568,1865,1032,45, + 1093,2466,3154,2774,3151,3233,3528,4386,2395,38, + 954,36,964,2684,2195,34,1051,31,35,30, + 32,953,260,29,27,55,1076,108,79,80, + 110,1113,1831,1197,1196,2237,2395,38,954,36, + 964,1975,2195,34,1051,31,35,30,32,953, + 260,29,27,55,1076,108,79,80,110,1113, + 2482,1197,1196,2305,1105,38,954,36,964,1353, + 4654,34,1051,31,35,336,32,2395,38,954, + 36,964,2050,2195,34,1051,31,35,30,32, + 953,260,29,27,55,1076,108,79,80,110, + 1113,2059,1197,2346,2631,351,1425,1722,38,440, + 283,2399,520,4751,3826,1341,3075,327,38,289, + 2776,317,2423,319,2576,321,312,1611,47,2856, + 2604,348,520,327,38,1583,382,964,1807,3099, + 1114,3146,1083,38,954,36,964,3004,4654,34, + 1051,31,35,336,32,2576,2173,38,388,341, + 1396,647,346,422,197,1654,2120,3125,2395,38, + 954,36,964,1799,2195,34,1051,31,35,30, + 32,953,260,29,27,55,1076,108,79,80, + 110,1113,1425,1197,2365,196,590,2399,356,317, + 2423,319,4771,2025,312,1611,30,1019,1042,348, + 1361,1052,2783,3256,2907,2958,2604,512,240,3312, + 1446,38,954,36,964,1439,4691,34,1051,31, + 35,336,32,512,1023,2417,283,341,1396,647, + 346,2581,362,1057,427,1884,1052,2576,2399,3135, + 1531,38,954,36,964,1353,4654,34,1051,31, + 35,336,32,1043,1939,3099,3466,2604,3916,3135, + 158,433,3433,3448,348,329,2183,317,2423,319, + 3024,199,312,1611,356,1424,1187,200,778,1387, + 38,2826,2264,964,230,4497,1707,1669,329,3349, + 2907,2958,341,1396,647,346,2142,317,2423,319, + 1884,4558,312,1611,2107,1466,2147,348,330,54, + 1052,3044,242,228,229,2092,30,515,2296,434, + 348,1052,1568,731,2803,356,327,38,1583,382, + 964,569,305,309,158,341,1396,647,346,296, + 2896,2907,2958,516,524,158,508,2145,343,1396, + 647,346,3206,2193,936,1623,421,1976,2395,38, + 954,36,964,3658,2195,34,1051,31,35,30, + 32,953,260,29,27,55,1076,108,79,80, + 110,1113,3181,1927,2395,38,954,36,964,2175, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,1113,430,1970, + 1219,38,3318,36,964,1439,4691,34,1051,31, + 35,336,32,2395,38,1617,1584,964,2508,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,87,175,2520,38,278, + 2092,526,30,37,1057,91,1941,2655,104,2399, + 3135,30,1424,1385,2120,329,1052,317,2423,319, + 227,508,312,1611,2576,158,531,2211,2604,327, + 38,500,3316,964,1,2375,182,2231,1424,526, + 158,202,213,4587,1278,201,210,211,212,214, + 1580,4558,171,508,1958,38,440,3198,227,329, + 4751,508,2190,158,198,185,169,170,172,173, + 174,175,176,2375,182,2139,303,2152,786,202, + 213,4587,2399,201,210,211,212,214,1424,72, + 171,2173,38,388,1278,3428,356,71,183,2511, + 372,227,295,186,169,170,172,173,174,175, + 176,2896,2907,2958,327,38,1583,382,964,508, + 407,3327,204,213,4587,2214,203,210,211,212, + 214,2520,38,276,508,327,38,1583,382,964, + 511,1626,2640,205,272,3006,2572,2399,30,1278, + 372,1386,294,3645,2606,70,215,206,207,208, + 209,290,291,292,293,54,227,237,260,3094, + 69,3034,327,38,1583,382,964,434,1568,2904, + 2681,30,4277,2825,2660,2753,3763,204,213,4587, + 2399,203,210,211,212,214,2406,2189,30,1436, + 370,3734,54,1573,2706,514,2576,337,205,227, + 3006,230,30,2495,230,1568,3131,2732,437,3433, + 3448,215,206,207,208,209,290,291,292,293, + 204,213,4587,1739,203,210,211,212,214,245, + 228,229,238,228,229,569,219,4277,3012,2764, + 3647,205,334,3006,2399,30,508,1052,2846,2589, + 3770,508,569,2399,215,206,207,208,209,290, + 291,292,293,227,2360,2377,327,38,1583,382, + 964,162,227,327,38,1583,382,964,2570,508, + 4277,3038,3255,230,204,213,4587,60,203,210, + 211,212,214,204,213,4587,54,203,210,211, + 212,214,508,439,508,205,2650,3006,1632,1568, + 3443,248,228,229,205,59,3006,2558,215,206, + 207,208,209,290,291,292,293,486,206,207, + 208,209,290,291,292,293,1940,30,320,508, + 103,1752,3711,1278,4277,3088,2395,38,954,36, + 964,2378,2195,34,1051,31,35,30,32,953, + 260,29,27,55,1076,108,79,80,110,2002, + 2395,38,954,36,964,3582,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,110,2052,2395,38,954,36,964,513, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,110,2107,1300,38, + 954,36,964,2656,4691,34,1051,31,35,336, + 32,334,30,2525,38,276,1052,1052,2702,1851, + 414,38,1583,382,964,4659,2703,30,2662,334, + 262,1021,3014,2507,1052,526,2668,334,1052,30, + 162,158,1052,1267,898,2692,2704,30,2399,4303, + 54,1592,2521,330,227,317,2423,319,162,158, + 313,1611,158,1568,2836,348,162,227,349,2375, + 182,2709,164,526,1885,202,213,4587,3029,201, + 210,211,212,214,2712,2582,171,2715,1497,399, + 4514,3461,227,343,1396,647,346,158,2051,3650, + 169,170,172,173,174,175,176,2375,182,400, + 1795,3006,508,202,213,4587,2576,201,210,211, + 212,214,436,1740,171,2507,2576,526,3261,30, + 526,331,332,2723,2399,3804,3289,178,169,170, + 172,173,174,175,176,780,227,3000,438,3807, + 2482,158,30,340,158,2725,3712,3817,230,2736, + 523,2375,182,2686,164,526,302,202,213,4587, + 2716,201,210,211,212,214,2738,2411,171,2745, + 30,418,2741,2509,227,3733,251,228,229,158, + 1703,189,169,170,172,173,174,175,176,2375, + 182,401,403,3288,2743,202,213,4587,88,201, + 210,211,212,214,2724,1021,171,30,49,2856, + 2557,30,835,908,2748,4603,2541,3546,2763,3736, + 169,170,172,173,174,175,176,2072,38,954, + 36,964,1439,4654,34,1051,31,35,336,32, + 2395,38,954,36,964,2530,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,88,610,2737,3461,1969,2775,526,4204, + 2749,1399,2507,30,30,2038,2399,1052,3077,3027, + 2399,518,508,30,317,2423,319,227,2399,312, + 1611,3463,158,2685,2799,2604,169,5346,2399,227, + 5346,158,2375,182,1669,328,332,340,202,213, + 4587,164,201,210,211,212,214,2604,3556,171, + 204,213,4587,1021,203,210,211,212,214,5346, + 1021,2411,192,169,170,172,173,174,175,176, + 30,205,697,3006,1755,3142,30,526,30,305, + 309,1052,5346,3185,508,206,207,208,209,290, + 291,292,293,492,2576,30,227,30,30,3900, + 3249,158,3667,1052,3894,3899,5346,1021,5346,2690, + 3658,2375,182,3461,2790,492,2576,202,213,4587, + 3461,201,210,211,212,214,784,158,171,489, + 491,526,508,30,4239,30,5346,2539,2399,5346, + 924,188,169,170,172,173,174,175,176,508, + 227,489,491,3469,332,158,301,340,5346,5346, + 3477,332,1661,5346,871,2375,182,3461,3552,526, + 3346,202,213,4587,5346,201,210,211,212,214, + 5346,2411,171,508,2576,3590,508,508,227,508, + 2576,508,3613,158,1756,195,169,170,172,173, + 174,175,176,2375,182,5346,2576,3651,332,202, + 213,4587,5346,201,210,211,212,214,5346,3703, + 171,5346,3149,3353,4427,374,377,3939,5346,2576, + 220,5346,5346,194,169,170,172,173,174,175, + 176,2395,38,954,36,964,297,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,86,2395,38,954,36,964,193, + 2195,34,1051,31,35,30,32,953,260,29, + 27,55,1076,108,79,80,85,2395,38,954, + 36,964,5346,2195,34,1051,31,35,30,32, + 953,260,29,27,55,1076,108,79,80,84, + 2395,38,954,36,964,5346,2195,34,1051,31, + 35,30,32,953,260,29,27,55,1076,108, + 79,80,83,2395,38,954,36,964,5346,2195, + 34,1051,31,35,30,32,953,260,29,27, + 55,1076,108,79,80,82,2395,38,954,36, + 964,5346,2195,34,1051,31,35,30,32,953, + 260,29,27,55,1076,108,79,80,81,2252, + 38,954,36,964,5346,2195,34,1051,31,35, + 30,32,953,260,29,27,55,1076,108,79, + 80,106,2395,38,954,36,964,5346,2195,34, + 1051,31,35,30,32,953,260,29,27,55, + 1076,108,79,80,112,2395,38,954,36,964, + 5346,2195,34,1051,31,35,30,32,953,260, + 29,27,55,1076,108,79,80,111,2395,38, + 954,36,964,5346,2195,34,1051,31,35,30, + 32,953,260,29,27,55,1076,108,79,80, + 109,2395,38,954,36,964,508,2195,34,1051, + 31,35,30,32,953,260,29,27,55,1076, + 108,79,80,107,2856,508,5346,30,5346,2399, + 5346,5346,1052,2938,5346,5346,5346,5346,2399,30, + 5346,5346,3836,5346,2399,5346,5346,5346,227,5346, + 5346,327,38,1583,382,964,158,227,5346,2507, + 334,3874,5346,340,1052,1052,3053,5346,5346,204, + 213,4587,5346,203,210,211,212,214,204,213, + 4587,54,203,210,211,212,214,2411,158,162, + 205,5346,3006,5346,1568,1023,5346,2671,164,205, + 1764,3006,2399,304,206,207,208,209,290,291, + 292,293,509,206,207,208,209,290,291,292, + 293,227,5346,327,38,1583,382,964,1455,38, + 3318,36,964,1439,4654,34,1051,31,35,336, + 32,5346,204,213,4587,5346,203,210,211,212, + 214,5346,5346,54,5346,5346,5346,5346,5346,3314, + 5346,4186,5346,205,5346,3006,1568,3013,5346,5346, + 5346,5346,5346,5346,5346,5346,216,206,207,208, + 209,290,291,292,293,317,2423,319,5346,5346, + 312,1611,1514,38,954,36,964,1439,4654,34, + 1051,31,35,336,32,2231,2546,38,1583,382, + 964,5346,3450,2215,38,1583,382,964,5346,236, + 260,1514,38,954,36,964,1439,4654,34,1051, + 31,35,336,32,5346,5346,272,5346,501,38, + 1583,382,964,54,5346,5346,5346,2507,30,317, + 2423,319,1052,1052,312,1611,1568,2339,5346,5346, + 5346,5346,5346,5346,5346,5346,230,1885,54,1669, + 5346,5346,5346,5346,5346,5346,158,158,317,2423, + 319,1568,2816,312,1611,5346,164,3061,408,3327, + 5346,5346,2418,5346,234,228,229,5346,3312,273, + 1514,38,954,36,964,1439,4654,34,1051,31, + 35,336,32,5346,306,309,5346,1309,38,1583, + 382,964,241,244,247,250,2829,30,5346,5346, + 5346,5346,1052,1798,1159,38,954,36,964,2960, + 4654,34,1051,31,35,336,32,54,5346,4205, + 5346,5346,5346,5346,5346,5346,158,317,2423,319, + 1568,52,312,1611,5346,5346,3119,5346,5346,5346, + 5346,2997,5346,5346,395,5346,5346,3710,1173,38, + 954,36,964,5346,4691,34,1051,31,35,336, + 32,314,3275,319,1173,38,954,36,964,5346, + 4691,34,1051,31,35,336,32,1592,38,954, + 36,964,2760,4654,34,1051,31,35,336,32, + 5346,30,5346,1349,5346,334,1052,5346,2399,4303, + 1052,5346,5346,330,1399,317,2423,319,5346,2399, + 315,1611,414,38,1583,382,964,227,5346,330, + 158,317,2423,319,162,5346,313,1611,2604,5346, + 3134,5346,5346,5346,314,3275,319,5346,1497,399, + 4514,5346,54,5346,1972,38,1583,382,964,1972, + 38,1583,382,964,5346,1568,52,5346,3199,400, + 5346,3006,30,5346,5346,5346,1047,526,5346,501, + 38,1583,382,964,54,5346,5346,5346,5346,54, + 5346,1972,38,1583,382,964,340,1568,3180,5346, + 5346,158,1568,52,3542,5346,492,3000,3114,54, + 5346,190,5346,1108,1972,38,1583,382,964,5346, + 4480,54,1568,52,5346,5346,1972,38,1583,382, + 964,5346,5346,1036,1568,3197,5346,5346,5346,5346, + 5346,3199,490,491,54,3114,1972,38,1583,382, + 964,1972,38,1583,382,964,54,1568,52,5346, + 5346,401,404,2220,38,1583,382,964,2498,1568, + 52,2347,38,1583,382,964,54,5346,5346,30, + 2673,54,5346,5346,526,5346,2210,3842,5346,1568, + 52,2399,5346,54,1568,52,5346,30,5346,5346, + 2876,54,526,340,30,3283,1568,52,158,526, + 340,2024,5346,5346,1568,52,2399,2503,1580,5346, + 5346,340,519,5346,30,2657,158,2411,340,2399, + 5346,5346,30,158,2411,340,190,2399,5346,30, + 1150,30,5346,190,2399,4480,2399,522,340,30, + 5346,5346,4480,30,1052,5346,340,5346,1052,605, + 5346,5346,5346,340,5346,340,5346,5346,5346,5346, + 5346,5346,2411,5346,5346,5346,5346,5346,158,5346, + 2411,5346,158,5346,5346,3021,5346,2411,1799,2411, + 5346,5346,3901,496,5346,5346,5346,5346,5346,5346, + 494,5346,523,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,3859,5346,5346,5346,5346,5346,5346,3893, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,3685,5346,5346,5346,443, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,429,5346,0, + 42,5364,0,42,5363,0,500,33,0,441, + 1102,0,41,5364,0,41,5363,0,128,2548, + 0,1,431,0,445,1377,0,444,1420,0, + 500,44,0,2746,93,0,500,381,0,36, + 382,0,382,36,0,33,381,0,381,33, + 0,500,33,381,0,42,800,0,1,705, + 0,1,5617,0,1,5616,0,1,5615,0, + 1,5614,0,1,5613,0,1,5612,0,1, + 5611,0,1,5610,0,1,5609,0,1,5608, + 0,1,5607,0,42,1,5364,0,42,1, + 5363,0,983,1,0,5578,239,0,5577,239, + 0,5681,239,0,5680,239,0,5605,239,0, + 5604,239,0,5603,239,0,5602,239,0,5601, + 239,0,5600,239,0,5599,239,0,5598,239, + 0,5617,239,0,5616,239,0,5615,239,0, + 5614,239,0,5613,239,0,5612,239,0,5611, + 239,0,5610,239,0,5609,239,0,5608,239, + 0,5607,239,0,42,239,5364,0,42,239, + 5363,0,5387,239,0,53,5364,0,53,5363, + 0,235,3252,0,48,5385,0,48,40,0, + 5364,53,0,5363,53,0,130,2548,0,129, + 2548,0,30,507,0,5673,432,0,2086,432, + 0,5387,1,0,42,1,0,52,40,0, + 1,94,0,5387,226,1,0,42,226,1, + 0,226,406,0,40,5364,0,40,5363,0, + 40,5364,2,0,40,5363,2,0,5364,39, + 0,5363,39,0,5385,50,0,50,40,0, + 5356,397,0,5355,397,0,1,4401,0,1, + 4811,0,1,800,0,226,405,0,3212,316, + 0,5673,97,0,2086,97,0,1,5673,0, + 1,2086,0,277,3459,0,1,850,0,1, + 2696,0,5354,1,0,488,3715,0,226,1, + 0,226,1,3514,0,5356,226,0,5355,226, + 0,3638,226,0,8,10,0,226,218,0, + 226,217,0,187,3782,0 }; }; public final static char baseAction[] = BaseAction.baseAction; @@ -1396,308 +1404,308 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface TermAction { public final static char termAction[] = {0, - 5309,5284,5281,5281,5281,5281,5281,5281,5281,5294, + 5346,5321,5318,5318,5318,5318,5318,5318,5318,5331, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,5291,1,1,1, + 1,1,1,1,1,1,5328,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5309,1,1,1,2668,1, - 1826,1,1,1,1,1,1324,1,1,1, - 5309,3460,1,1,1,41,4972,4969,1,1, - 1,5316,846,5486,2640,3528,3137,2151,3070,3474, - 3381,159,3499,564,3486,3139,3484,8,5297,5297, - 5297,5297,5297,5297,5297,5297,5297,5297,5297,5297, - 5297,5297,5297,5297,5297,5297,5297,5297,5297,5297, - 5297,5297,5297,5297,5297,5297,1841,5297,5297,5297, - 5297,5297,5297,5297,5297,5297,5297,5297,5297,5297, - 5297,5309,5297,5297,5297,5297,5297,5297,5297,5297, - 5297,5297,5297,5297,5297,5297,5297,1285,5297,5297, - 5297,5297,123,5309,139,5297,5297,5297,5297,5309, - 5297,5297,5297,5297,5297,5297,5297,5297,187,5297, - 5297,5297,5297,5297,5309,5284,5281,5281,5281,5281, - 5281,5281,5281,5288,1,1,1,1,1,1, + 1,1,1,1,5346,1,1,1,2553,1, + 1958,1,1,1,1,1,766,1,1,1, + 5346,3476,1,1,1,41,5015,5012,1,1, + 1,5353,849,5523,562,3589,2695,2151,2664,3501, + 3460,159,3585,565,3563,2781,3517,8,5334,5334, + 5334,5334,5334,5334,5334,5334,5334,5334,5334,5334, + 5334,5334,5334,5334,5334,5334,5334,5334,5334,5334, + 5334,5334,5334,5334,5334,5334,1841,5334,5334,5334, + 5334,5334,5334,5334,5334,5334,5334,5334,5334,5334, + 5334,5346,5334,5334,5334,5334,5334,5334,5334,5334, + 5334,5334,5334,5334,5334,5334,5334,1286,5334,5334, + 5334,5334,123,5346,139,5334,5334,5334,5334,5346, + 5334,5334,5334,5334,5334,5334,5334,5334,187,5334, + 5334,5334,5334,5334,5346,5321,5318,5318,5318,5318, + 5318,5318,5318,5325,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 5291,1,1,3531,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,2314,1, - 1,1,2668,1,1826,1,1,1,1,1, - 1324,1,1,1,120,3460,1,1,1,502, - 2616,2707,1,1,1,2863,2785,5486,2640,3528, - 3137,2151,3070,3474,3381,2240,3499,564,3486,3139, - 3484,5309,5284,5281,5281,5281,5281,5281,5281,5281, - 5288,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,5291,1,1, - 5306,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,865,1,1,1,2668, - 1,1826,1,1,1,1,1,1324,1,1, - 1,5309,3460,1,1,1,5309,5326,5327,1, - 1,1,444,1,5486,2640,3528,3137,2151,3070, - 3474,3381,163,3499,564,3486,3139,3484,5309,5284, - 5281,5281,5281,5281,5281,5281,5281,5288,1,1, + 5328,1,1,3559,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2572,1, + 1,1,2553,1,1958,1,1,1,1,1, + 766,1,1,1,120,3476,1,1,1,503, + 2617,2708,1,1,1,2934,2908,5523,562,3589, + 2695,2151,2664,3501,3460,2240,3585,565,3563,2781, + 3517,5346,5321,5318,5318,5318,5318,5318,5318,5318, + 5325,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,5328,1,1, + 5343,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,868,1,1,1,2553, + 1,1958,1,1,1,1,1,766,1,1, + 1,5346,3476,1,1,1,5346,5363,5364,1, + 1,1,445,1,5523,562,3589,2695,2151,2664, + 3501,3460,163,3585,565,3563,2781,3517,5346,5321, + 5318,5318,5318,5318,5318,5318,5318,5325,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5291,1,1,5309,1,1, + 1,1,1,1,5328,1,1,5346,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,4987,1,1,1,2668,1,1826,1, - 1,1,1,1,1324,1,1,1,5309,3460, - 1,1,1,5309,5151,5148,1,1,1,443, - 163,5486,2640,3528,3137,2151,3070,3474,3381,357, - 3499,564,3486,3139,3484,5309,5284,5281,5281,5281, - 5281,5281,5281,5281,5288,1,1,1,1,1, + 1,1,5024,1,1,1,2553,1,1958,1, + 1,1,1,1,766,1,1,1,5346,3476, + 1,1,1,5346,5188,5185,1,1,1,444, + 163,5523,562,3589,2695,2151,2664,3501,3460,358, + 3585,565,3563,2781,3517,5346,5321,5318,5318,5318, + 5318,5318,5318,5318,5325,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,5291,1,1,5309,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,4990, - 1,1,1,2668,1,1826,1,1,1,1, - 1,1324,1,1,1,1611,3460,1,1,1, - 53,5166,5163,1,1,1,344,5309,5486,2640, - 3528,3137,2151,3070,3474,3381,5315,3499,564,3486, - 3139,3484,5309,5284,5281,5281,5281,5281,5281,5281, - 5281,5288,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,5291,1, - 1,5309,1,1,1,1,1,1,1,1, + 1,5328,1,1,5346,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5027, + 1,1,1,2553,1,1958,1,1,1,1, + 1,766,1,1,1,1482,3476,1,1,1, + 53,5203,5200,1,1,1,345,5346,5523,562, + 3589,2695,2151,2664,3501,3460,5352,3585,565,3563, + 2781,3517,5346,5321,5318,5318,5318,5318,5318,5318, + 5318,5325,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,5328,1, + 1,5346,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1802,1,1,1, - 2668,1,1826,1,1,1,1,1,1324,1, - 1,1,5309,3460,1,1,1,127,5309,42, - 1,1,1,5350,5314,5486,2640,3528,3137,2151, - 3070,3474,3381,5309,3499,564,3486,3139,3484,5309, - 5284,5281,5281,5281,5281,5281,5281,5281,5288,1, + 2553,1,1958,1,1,1,1,1,766,1, + 1,1,5346,3476,1,1,1,127,5346,42, + 1,1,1,5387,5351,5523,562,3589,2695,2151, + 2664,3501,3460,5346,3585,565,3563,2781,3517,5346, + 5321,5318,5318,5318,5318,5318,5318,5318,5325,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,5291,1,1,5309,1, + 1,1,1,1,1,5328,1,1,5346,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,2346,1,1,1,2668,1,1826, - 1,1,1,1,1,1324,1,1,1,122, - 3460,1,1,1,126,2616,2707,1,1,1, - 2863,2785,5486,2640,3528,3137,2151,3070,3474,3381, - 5309,3499,564,3486,3139,3484,5309,5284,5281,5281, - 5281,5281,5281,5281,5281,5288,1,1,1,1, + 1,1,1,2581,1,1,1,2553,1,1958, + 1,1,1,1,1,766,1,1,1,122, + 3476,1,1,1,126,2617,2708,1,1,1, + 2934,2908,5523,562,3589,2695,2151,2664,3501,3460, + 5346,3585,565,3563,2781,3517,5346,5321,5318,5318, + 5318,5318,5318,5318,5318,5325,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,5291,1,1,5309,1,1,1,1, + 1,1,5328,1,1,5346,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 2136,1,1,1,2668,1,1826,1,1,1, - 1,1,1324,1,1,1,121,3460,1,1, - 1,125,2616,2707,1,1,1,2863,2785,5486, - 2640,3528,3137,2151,3070,3474,3381,5309,3499,564, - 3486,3139,3484,5309,5284,5281,5281,5281,5281,5281, - 5281,5281,5288,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,5291, - 1,1,5309,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,2731,1,1, - 1,2668,1,1826,1,1,1,1,1,1324, - 1,1,1,5309,3460,1,1,1,124,2616, - 2707,1,1,1,300,5309,5486,2640,3528,3137, - 2151,3070,3474,3381,5608,3499,564,3486,3139,3484, - 5309,3483,1,1,1,1,1,1,1,5319, + 2136,1,1,1,2553,1,1958,1,1,1, + 1,1,766,1,1,1,121,3476,1,1, + 1,125,2617,2708,1,1,1,2934,2908,5523, + 562,3589,2695,2151,2664,3501,3460,5346,3585,565, + 3563,2781,3517,5346,5321,5318,5318,5318,5318,5318, + 5318,5318,5325,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5328, + 1,1,5346,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,3002,1,1, + 1,2553,1,1958,1,1,1,1,1,766, + 1,1,1,5346,3476,1,1,1,124,2617, + 2708,1,1,1,300,5346,5523,562,3589,2695, + 2151,2664,3501,3460,5645,3585,565,3563,2781,3517, + 5346,3514,1,1,1,1,1,1,1,5356, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,5318,1,1,3572, + 1,1,1,1,1,1,5355,1,1,3723, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5309,1,1,1,2668,1, - 1826,1,1,1,1,1,1324,1,1,1, - 135,3460,1,1,1,5309,2616,2707,1,1, - 1,2902,113,5486,2640,3528,3137,2151,3070,3474, - 3381,116,3499,564,3486,3139,3484,42,4984,4981, - 4748,980,3252,3841,2486,3864,5309,1284,3818,3795, - 5572,5570,5579,5578,5574,5575,5573,5576,5577,5580, - 5571,3910,3887,5309,5564,5332,3205,3772,666,774, - 5334,703,619,764,5335,5333,664,5328,5330,5331, - 5329,5309,5567,5642,803,133,5643,5309,5561,5568, - 5540,5566,5565,2309,5562,5563,5541,5309,1,5698, - 332,2823,222,5309,5309,573,5699,5700,381,580, - 5309,5005,3956,3039,5005,4956,5005,5002,3979,5002, - 5002,3956,341,42,42,2823,5350,3979,2086,5564, - 5635,3664,5002,5002,5005,42,1,5187,5187,5350, - 5184,2086,2086,5635,5635,358,5642,5567,5642,5643, - 5309,5643,5002,5561,5568,5540,5566,5565,1802,5562, - 5563,5541,1,5061,5057,2681,5065,797,5002,2486, - 141,137,140,5002,5002,5002,5309,5326,5327,5002, - 5002,797,1802,2486,362,5061,5057,2681,5065,797, - 1,2486,1,427,4063,5002,5002,5002,5002,5002, - 5002,5002,5002,5002,5002,5002,5002,5002,5002,5002, - 5002,5002,5002,5002,5002,5002,5002,5002,5002,5002, - 5002,5002,1802,358,380,5002,5002,5011,5002,5002, - 5011,358,5011,5008,102,5008,5008,1759,1,5061, - 5057,5239,5065,5245,1802,5242,5309,5319,5008,5008, - 5011,1109,5309,4960,4957,4431,980,797,2086,2486, - 5635,430,1,1,5318,1,387,4978,5014,4978, - 380,2275,2201,2240,1716,1673,1630,1587,1544,1501, - 1458,1415,1372,1329,5008,134,117,3364,5309,5008, - 5008,5008,3325,2309,4850,5008,5008,5313,5309,5061, - 5057,4431,5065,797,5263,2486,5260,5732,5733,5734, - 499,5008,5008,5008,5008,5008,5008,5008,5008,5008, - 5008,5008,5008,5008,5008,5008,5008,5008,5008,5008, - 5008,5008,5008,5008,5008,5008,5008,5008,5309,5326, - 5327,5008,5008,1885,5008,5008,5309,5200,5200,226, - 5196,226,226,226,226,5204,1,5309,33,1, + 1,1,1,1,5346,1,1,1,2553,1, + 1958,1,1,1,1,1,766,1,1,1, + 135,3476,1,1,1,5346,2617,2708,1,1, + 1,3148,113,5523,562,3589,2695,2151,2664,3501, + 3460,116,3585,565,3563,2781,3517,42,5003,5000, + 4779,983,2973,3997,4811,4020,5346,1230,3974,3951, + 5609,5607,5616,5615,5611,5612,5610,5613,5614,5617, + 5608,4066,4043,5346,5601,5369,2866,3680,784,859, + 5371,799,620,836,5372,5370,666,5365,5367,5368, + 5366,5346,5604,5680,806,133,5681,5346,5598,5605, + 5577,5603,5602,2309,5599,5600,5578,5346,1,5736, + 333,2747,222,5346,5346,574,5737,5738,382,581, + 5346,5042,4112,3252,5042,4999,5042,5039,4135,5039, + 5039,4112,342,42,42,2747,5387,4135,2086,5601, + 5673,3843,5039,5039,5042,42,1,5224,5224,5387, + 5221,2086,2086,5673,5673,359,5680,5604,5680,5681, + 5346,5681,5039,5598,5605,5577,5603,5602,1802,5599, + 5600,5578,1,5098,5094,2682,5102,800,5039,4811, + 141,137,140,5039,5039,5039,5346,5363,5364,5039, + 5039,800,1802,4811,363,5098,5094,2682,5102,800, + 1,4811,1,428,4219,5039,5039,5039,5039,5039, + 5039,5039,5039,5039,5039,5039,5039,5039,5039,5039, + 5039,5039,5039,5039,5039,5039,5039,5039,5039,5039, + 5039,5039,1802,359,381,5039,5039,5048,5039,5039, + 5048,359,5048,5045,102,5045,5045,1759,1,5098, + 5094,5276,5102,5282,1802,5279,5346,5356,5045,5045, + 5048,1114,5346,5003,5000,4401,983,800,2086,4811, + 5673,431,1,1,5355,1,388,5021,5051,5021, + 381,2275,2201,2240,1716,1673,1630,1587,1544,1501, + 1458,1415,1372,1329,5045,134,117,3808,5346,5045, + 5045,5045,3404,2309,4849,5045,5045,5350,5346,5098, + 5094,4401,5102,800,5300,4811,5297,5770,5771,5772, + 500,5045,5045,5045,5045,5045,5045,5045,5045,5045, + 5045,5045,5045,5045,5045,5045,5045,5045,5045,5045, + 5045,5045,5045,5045,5045,5045,5045,5045,5346,5363, + 5364,5045,5045,2017,5045,5045,5346,5237,5237,226, + 5233,226,226,226,226,5241,1,5346,33,1, 1,1,1,1,1,1,1,1,1,1, - 2023,5309,226,1,131,487,136,3301,3277,341, - 4960,4957,2681,980,797,2086,2486,5635,53,5151, - 5148,1,1,343,2513,1,2485,1,1,1, - 1,1,4963,1,1,1,5312,1826,1,5309, - 4984,4981,115,5350,1,1,1,405,226,5710, - 286,5326,5327,5309,8616,8616,5309,5795,5309,5200, - 5200,226,5196,226,226,226,226,5248,1,1802, + 2023,5346,226,1,131,488,136,3380,3356,342, + 5003,5000,2682,983,800,2086,4811,5673,53,5188, + 5185,1,1,344,811,1,2333,1,1,1, + 1,1,5006,1,1,1,5349,1958,1,5346, + 5003,5000,115,5387,1,1,1,406,226,5748, + 286,5363,5364,5346,8654,8654,5346,5833,5346,5237, + 5237,226,5233,226,226,226,226,5285,1,1802, 30,1,1,1,1,1,1,1,1,1, - 1,1,5348,1802,226,1,5309,487,5309,2333, - 5732,5733,5734,1885,40,223,388,4984,4981,5309, - 5350,2370,2341,1,1,580,2513,1,1,1, - 1,1,1,1,5309,1,1,1,5269,5309, - 1,93,5564,5348,4996,42,1,1,1,404, - 226,5710,3956,5309,1,5175,5175,3209,3979,5795, - 5567,5642,5317,358,5643,1,5561,5568,5540,5566, - 5565,2365,5562,5563,5541,308,5061,5057,4431,5065, - 797,5263,2486,5260,1,5061,5057,4431,5065,797, - 5272,2486,5732,5733,5734,5309,1,1,1,1, - 1,1,1,1,2404,1,1,1,1,1, + 1,1,5385,1802,226,1,5346,488,5346,2299, + 5770,5771,5772,2017,40,223,389,5003,5000,5346, + 5387,2370,2341,1,1,581,811,1,1,1, + 1,1,1,1,5346,1,1,1,5306,5346, + 1,93,5601,5385,5033,42,1,1,1,405, + 226,5748,4112,5346,1,5212,5212,3361,4135,5833, + 5604,5680,5354,359,5681,1,5598,5605,5577,5603, + 5602,2622,5599,5600,5578,308,5098,5094,4401,5102, + 800,5300,4811,5297,1,5098,5094,4401,5102,800, + 5309,4811,5770,5771,5772,5346,1,1,1,1, + 1,1,1,1,2641,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,132,5309,1,5316,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,3436, - 5309,358,1,1,5061,5057,4431,5065,797,358, - 2486,5309,5326,5327,235,416,2023,5154,1,1, - 1,5061,5057,2681,5065,797,945,2486,5833,1, - 5061,5057,4748,5065,3252,3841,2486,3864,5309,5021, - 3818,3795,5048,5054,5027,5030,5042,5039,5045,5036, - 5033,5024,5051,3910,3887,309,5309,5332,3509,3772, - 666,774,5334,703,619,764,5335,5333,664,5328, - 5330,5331,5329,5309,3933,789,803,3442,2370,2341, - 1802,1,5061,5057,5239,5065,5245,4058,5242,39, - 5224,5221,42,42,503,42,4960,4957,4748,980, - 3252,3841,2486,3864,5317,775,3818,3795,5572,5570, - 5579,5578,5574,5575,5573,5576,5577,5580,5571,3910, - 3887,33,1240,5332,5309,3772,666,774,5334,703, - 619,764,5335,5333,664,5328,5330,5331,5329,5309, - 4960,4957,803,980,797,4069,2486,431,42,42, - 5309,5350,1,5181,5309,5178,94,1,1,5317, - 1,5275,5193,5309,5193,499,5316,42,4960,4957, - 4748,980,3252,3841,2486,3864,5317,775,3818,3795, - 5572,5570,5579,5578,5574,5575,5573,5576,5577,5580, - 5571,3910,3887,412,5309,5332,52,3772,666,774, - 5334,703,619,764,5335,5333,664,5328,5330,5331, - 5329,5309,4960,4957,803,5350,989,4069,97,42, - 42,5316,5350,5316,5257,1091,5254,5309,224,143, - 4960,4957,4748,980,3252,3841,2486,3864,5316,775, - 3818,3795,5572,5570,5579,5578,5574,5575,5573,5576, - 5577,5580,5571,3910,3887,5564,138,5332,114,3772, - 666,774,5334,703,619,764,5335,5333,664,5328, - 5330,5331,5329,5567,5642,1,803,5643,4424,5561, - 5568,5540,5566,5565,5309,5562,5563,5541,5309,5309, - 5326,5327,42,42,1,5061,5057,4748,5065,3252, - 3841,2486,3864,5309,5021,3818,3795,5048,5054,5027, - 5030,5042,5039,5045,5036,5033,5024,5051,3910,3887, - 5309,5309,5332,3682,3772,666,774,5334,703,619, - 764,5335,5333,664,5328,5330,5331,5329,5309,3717, - 42,803,440,5309,5350,5309,4960,4957,3956,980, - 797,1,2486,5807,3979,381,2275,42,42,42, - 4960,4957,4748,980,3252,3841,2486,3864,5313,775, - 3818,3795,5572,5570,5579,5578,5574,5575,5573,5576, - 5577,5580,5571,3910,3887,2003,4966,5332,44,3772, - 666,774,5334,703,619,764,5335,5333,664,5328, - 5330,5331,5329,42,4960,4957,4748,980,3252,3841, - 2486,3864,3623,775,3818,3795,5572,5570,5579,5578, - 5574,5575,5573,5576,5577,5580,5571,3910,3887,5309, - 5309,5332,4993,3772,666,774,5334,703,619,764, - 5335,5333,664,5328,5330,5331,5329,5309,4960,4957, - 803,5350,317,4069,5732,5733,5734,1,5309,3046, - 2823,5309,5166,5163,5309,353,337,4083,42,4960, - 4957,4748,980,3252,3841,2486,3864,5312,775,3818, - 3795,5572,5570,5579,5578,5574,5575,5573,5576,5577, - 5580,5571,3910,3887,4048,2654,5332,380,3772,666, - 774,5334,703,619,764,5335,5333,664,5328,5330, - 5331,5329,1802,1,1,803,1191,1802,5764,5758, - 3388,5762,337,337,5756,5757,5309,1,5281,5281, - 226,5281,226,226,226,226,226,5787,5788,5309, - 225,4999,4540,5765,337,5309,4960,4957,5309,980, - 5018,4794,2486,226,8618,42,5278,5767,499,5350, - 5661,1,5061,5057,4431,5065,797,5564,2486,315, - 308,3541,5251,624,851,2668,1369,1411,5768,5789, - 5766,5309,5309,2503,119,5567,5642,308,3460,5643, - 3325,5561,5568,5540,5566,5565,141,5562,5563,5541, - 2231,5778,5777,5790,5759,5760,5783,5784,5795,434, - 5781,5782,5761,5763,5785,5786,5791,5771,5772,5773, - 5769,5770,5779,5780,5775,5774,5776,5309,287,1802, - 1191,5309,5764,5758,5309,5762,5309,3477,5756,5757, - 3628,1,5281,5281,226,5281,226,226,226,226, - 5300,5787,5788,5701,5309,4960,4957,5765,980,5018, - 396,2486,388,5326,5327,5309,5309,226,8618,5233, - 5278,5767,40,5190,5190,3301,3277,5190,40,5190, - 5190,2829,5309,908,2902,3593,5236,624,5309,2668, - 1369,1411,5768,5789,5766,1934,5750,2503,2201,1, - 5309,2101,3460,365,5309,5151,5148,5348,5315,5309, - 8522,8520,218,3364,5309,5778,5777,5790,5759,5760, - 5783,5784,5795,5309,5781,5782,5761,5763,5785,5786, - 5791,5771,5772,5773,5769,5770,5779,5780,5775,5774, - 5776,42,4960,4957,4748,980,3252,3841,2486,3864, - 5309,775,3818,3795,5572,5570,5579,5578,5574,5575, - 5573,5576,5577,5580,5571,3910,3887,3933,789,5332, - 1152,3772,666,774,5334,703,619,764,5335,5333, - 664,5328,5330,5331,5329,105,5314,5309,4060,48, - 5160,5160,42,4960,4957,4748,980,3252,3841,2486, - 3864,1019,775,3818,3795,5572,5570,5579,5578,5574, - 5575,5573,5576,5577,5580,5571,3910,3887,5157,3691, - 5332,5309,3772,666,774,5334,703,619,764,5335, - 5333,664,5328,5330,5331,5329,5309,8522,8520,803, - 42,4960,4957,3362,980,3252,3841,2486,3864,5309, - 775,3818,3795,5572,5570,5579,5578,5574,5575,5573, - 5576,5577,5580,5571,3910,3887,5309,5309,5332,3382, - 3772,666,774,5334,703,619,764,5335,5333,664, - 5328,5330,5331,5329,42,4960,4957,4748,980,3252, - 3841,2486,3864,3418,775,3818,3795,5572,5570,5579, - 5578,5574,5575,5573,5576,5577,5580,5571,3910,3887, - 128,3661,5332,130,3772,666,774,5334,703,619, - 764,5335,5333,664,5328,5330,5331,5329,42,4960, - 4957,4748,980,3252,3841,2486,3864,1,775,3818, - 3795,5572,5570,5579,5578,5574,5575,5573,5576,5577, - 5580,5571,3910,3887,2575,520,5332,2575,3772,666, - 774,5334,703,619,764,5335,5333,664,5328,5330, - 5331,5329,5309,4984,4981,4975,5350,118,5169,40, - 5190,5190,1264,3325,101,5572,5570,5579,5578,5574, - 5575,5573,5576,5577,5580,5571,1,5309,5309,5564, - 285,1939,3276,2454,2424,165,2454,2424,2012,5309, - 5210,5207,1,5309,5309,5217,5213,5567,5642,5309, - 5309,5643,165,5561,5568,5540,5566,5565,5315,5562, - 5563,5541,5663,129,5698,239,5141,5137,5348,5145, - 573,5699,5700,5348,1973,1264,5309,5309,5128,5134, - 5107,5110,5122,5119,5125,5116,5113,5104,5131,414, - 5309,363,5092,3753,2654,5309,712,5309,3301,3277, - 1,50,5230,5230,5319,5309,408,2575,5309,5319, - 5083,5077,2280,165,5074,4849,5101,5080,5071,5086, - 5089,5318,5098,5095,5068,221,5318,5698,5172,78, - 5227,5309,3380,573,5699,5700,5314,3552,5572,5570, - 5579,5578,5574,5575,5573,5576,5577,5580,5571,2062, - 370,3777,5564,5376,5377,3429,2454,2424,1197,1, - 5281,5281,226,5281,226,226,226,226,5300,277, - 5567,5642,5266,2112,5643,435,5561,5568,5540,5566, - 5565,494,5562,5563,5541,226,8618,492,5278,3363, - 1,5281,5281,226,5281,226,226,226,226,5303, - 40,5190,5190,300,1,5309,53,2668,53,1, - 5327,5309,5326,5608,5269,2503,226,8618,516,5278, - 3460,5309,5309,5309,4370,4752,3613,5309,5309,5348, - 218,5309,646,3209,5309,5309,5319,4837,2668,3715, - 5795,3461,5309,5309,5309,4838,2503,3476,4656,716, - 5327,3460,5326,5318,4840,5309,1,5309,4839,2903, - 38,217,5309,3330,5309,1221,5272,5309,5309,3691, - 4164,5795,1,5281,5281,226,5281,226,226,226, - 226,5300,307,1,5281,5281,226,5281,226,226, - 226,226,5300,4319,5309,509,516,4851,226,8618, - 5489,5278,2,3419,1,5309,3749,3750,5309,226, - 8618,5309,5278,5309,3752,5488,5309,5309,496,5309, - 2668,5309,5309,5309,5309,5309,5309,2979,2503,5309, - 5309,2668,3383,3460,2979,1891,5309,5309,5309,2503, - 5309,5309,5309,218,3460,5309,40,5309,4403,5309, - 5309,5309,5309,5795,218,5309,5309,5309,5309,5309, - 5309,5309,5309,5309,5795,1,5281,5281,226,5281, - 226,226,226,226,226,1,5281,5281,226,5281, - 226,226,226,226,226,964,5309,5309,5309,5309, - 5309,226,8618,5309,5278,5309,5309,5309,5309,5309, - 5309,226,8618,5309,5278,5309,5309,5309,5309,5309, - 5309,5309,5309,2668,3691,5309,5309,5309,5309,5309, - 5309,2503,5309,2668,5309,5309,3460,5309,5309,5309, - 5309,2503,5309,5309,5309,5309,3460,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5795,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5795,1,5281,5281, - 226,5281,226,226,226,226,226,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 5309,5309,5309,226,8618,5309,5278,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 5309,5309,5309,5309,5309,2668,5309,5309,5309,5309, - 5309,5309,5309,2503,5309,5309,5309,5309,3460,5309, - 5309,5309,5309,5309,5309,5309,5309,5309,5309,5309, - 5309,5309,5309,5309,5309,5309,5309,5309,5795 + 1,132,5346,1,5353,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,3457, + 5346,359,1,1,5098,5094,4401,5102,800,359, + 4811,5346,5363,5364,235,417,2023,5191,1,1, + 1,5098,5094,2682,5102,800,550,4811,5871,1, + 5098,5094,4779,5102,2973,3997,4811,4020,5346,5058, + 3974,3951,5085,5091,5064,5067,5079,5076,5082,5073, + 5070,5061,5088,4066,4043,310,5346,5369,3786,3680, + 784,859,5371,799,620,836,5372,5370,666,5365, + 5367,5368,5366,5346,4089,1033,806,2535,2370,2341, + 1802,1,5098,5094,5276,5102,5282,3449,5279,39, + 5261,5258,42,42,504,42,5003,5000,4779,983, + 2973,3997,4811,4020,5354,705,3974,3951,5609,5607, + 5616,5615,5611,5612,5610,5613,5614,5617,5608,4066, + 4043,33,1243,5369,5346,3680,784,859,5371,799, + 620,836,5372,5370,666,5365,5367,5368,5366,5346, + 5003,5000,806,983,800,3845,4811,432,42,42, + 5346,5387,1,5218,5346,5215,94,1,1,5354, + 1,5312,5230,5346,5230,500,5353,42,5003,5000, + 4779,983,2973,3997,4811,4020,5354,705,3974,3951, + 5609,5607,5616,5615,5611,5612,5610,5613,5614,5617, + 5608,4066,4043,413,5346,5369,52,3680,784,859, + 5371,799,620,836,5372,5370,666,5365,5367,5368, + 5366,5346,5003,5000,806,5387,993,3845,97,42, + 42,5353,5387,5353,5294,1095,5291,5346,224,143, + 5003,5000,4779,983,2973,3997,4811,4020,5353,705, + 3974,3951,5609,5607,5616,5615,5611,5612,5610,5613, + 5614,5617,5608,4066,4043,5601,138,5369,114,3680, + 784,859,5371,799,620,836,5372,5370,666,5365, + 5367,5368,5366,5604,5680,1,806,5681,4824,5598, + 5605,5577,5603,5602,5346,5599,5600,5578,5346,5346, + 5363,5364,42,42,1,5098,5094,4779,5102,2973, + 3997,4811,4020,5346,5058,3974,3951,5085,5091,5064, + 5067,5079,5076,5082,5073,5070,5061,5088,4066,4043, + 5346,5346,5369,4207,3680,784,859,5371,799,620, + 836,5372,5370,666,5365,5367,5368,5366,5346,3713, + 42,806,441,5346,5387,5346,5003,5000,4112,983, + 800,1,4811,5845,4135,382,2275,42,42,42, + 5003,5000,4779,983,2973,3997,4811,4020,5350,705, + 3974,3951,5609,5607,5616,5615,5611,5612,5610,5613, + 5614,5617,5608,4066,4043,2680,5009,5369,44,3680, + 784,859,5371,799,620,836,5372,5370,666,5365, + 5367,5368,5366,42,5003,5000,4779,983,2973,3997, + 4811,4020,3606,705,3974,3951,5609,5607,5616,5615, + 5611,5612,5610,5613,5614,5617,5608,4066,4043,5346, + 5346,5369,5030,3680,784,859,5371,799,620,836, + 5372,5370,666,5365,5367,5368,5366,5346,5003,5000, + 806,5387,318,3845,5770,5771,5772,1,5346,3274, + 2747,5346,5203,5200,5346,354,338,4428,42,5003, + 5000,4779,983,2973,3997,4811,4020,5349,705,3974, + 3951,5609,5607,5616,5615,5611,5612,5610,5613,5614, + 5617,5608,4066,4043,3258,4614,5369,381,3680,784, + 859,5371,799,620,836,5372,5370,666,5365,5367, + 5368,5366,1802,1,1,806,668,1802,5802,5796, + 3091,5800,338,338,5794,5795,5346,1,5318,5318, + 226,5318,226,226,226,226,226,5825,5826,5346, + 225,5036,4507,5803,338,5346,5003,5000,5346,983, + 5055,4601,4811,226,8656,42,5315,5805,500,5387, + 5699,1,5098,5094,4401,5102,800,5601,4811,316, + 308,3593,5288,1162,854,2553,1531,1540,5806,5827, + 5804,5346,5346,1104,119,5604,5680,308,3476,5681, + 3404,5598,5605,5577,5603,5602,141,5599,5600,5578, + 2053,5816,5815,5828,5797,5798,5821,5822,5833,435, + 5819,5820,5799,5801,5823,5824,5829,5809,5810,5811, + 5807,5808,5817,5818,5813,5812,5814,5346,287,1802, + 668,5346,5802,5796,5346,5800,5346,3459,5794,5795, + 3515,1,5318,5318,226,5318,226,226,226,226, + 5337,5825,5826,5739,5346,5003,5000,5803,983,5055, + 397,4811,389,5363,5364,5346,5346,226,8656,5270, + 5315,5805,40,5227,5227,3380,3356,5227,40,5227, + 5227,2647,5346,911,3148,3467,5273,1162,5346,2553, + 1531,1540,5806,5827,5804,1934,5788,1104,2201,1, + 5346,2101,3476,366,5346,5188,5185,5385,5352,5346, + 8560,8558,218,3808,5346,5816,5815,5828,5797,5798, + 5821,5822,5833,5346,5819,5820,5799,5801,5823,5824, + 5829,5809,5810,5811,5807,5808,5817,5818,5813,5812, + 5814,42,5003,5000,4779,983,2973,3997,4811,4020, + 5346,705,3974,3951,5609,5607,5616,5615,5611,5612, + 5610,5613,5614,5617,5608,4066,4043,4089,1033,5369, + 1157,3680,784,859,5371,799,620,836,5372,5370, + 666,5365,5367,5368,5366,105,5351,5346,4240,48, + 5197,5197,42,5003,5000,4779,983,2973,3997,4811, + 4020,1549,705,3974,3951,5609,5607,5616,5615,5611, + 5612,5610,5613,5614,5617,5608,4066,4043,5194,3634, + 5369,5346,3680,784,859,5371,799,620,836,5372, + 5370,666,5365,5367,5368,5366,5346,8560,8558,806, + 42,5003,5000,3011,983,2973,3997,4811,4020,5346, + 705,3974,3951,5609,5607,5616,5615,5611,5612,5610, + 5613,5614,5617,5608,4066,4043,5346,5346,5369,3212, + 3680,784,859,5371,799,620,836,5372,5370,666, + 5365,5367,5368,5366,42,5003,5000,4779,983,2973, + 3997,4811,4020,3347,705,3974,3951,5609,5607,5616, + 5615,5611,5612,5610,5613,5614,5617,5608,4066,4043, + 128,3610,5369,130,3680,784,859,5371,799,620, + 836,5372,5370,666,5365,5367,5368,5366,42,5003, + 5000,4779,983,2973,3997,4811,4020,1,705,3974, + 3951,5609,5607,5616,5615,5611,5612,5610,5613,5614, + 5617,5608,4066,4043,2576,521,5369,2576,3680,784, + 859,5371,799,620,836,5372,5370,666,5365,5367, + 5368,5366,5346,5003,5000,5018,5387,118,5206,40, + 5227,5227,1181,3404,101,5609,5607,5616,5615,5611, + 5612,5610,5613,5614,5617,5608,1,5346,5346,5601, + 285,1411,3456,2454,2424,165,2454,2424,2012,5346, + 5247,5244,1,5346,5346,5254,5250,5604,5680,5346, + 5346,5681,165,5598,5605,5577,5603,5602,5352,5599, + 5600,5578,5701,129,5736,239,5178,5174,5385,5182, + 574,5737,5738,5385,1973,1181,5346,5346,5165,5171, + 5144,5147,5159,5156,5162,5153,5150,5141,5168,415, + 5346,364,5129,3706,4614,5346,776,5346,3380,3356, + 1,50,5267,5267,5356,5346,409,2576,5346,5356, + 5120,5114,2200,165,5111,4841,5138,5117,5108,5123, + 5126,5355,5135,5132,5105,221,5355,5736,5209,78, + 5264,5346,3441,574,5737,5738,5351,3896,5609,5607, + 5616,5615,5611,5612,5610,5613,5614,5617,5608,2062, + 371,3707,5601,5413,5414,611,2454,2424,1200,1, + 5318,5318,226,5318,226,226,226,226,5337,277, + 5604,5680,5303,2112,5681,436,5598,5605,5577,5603, + 5602,495,5599,5600,5578,226,8656,493,5315,3442, + 1,5318,5318,226,5318,226,226,226,226,5340, + 40,5227,5227,300,1,5346,53,2553,53,1, + 5364,5346,5363,5645,5306,1104,226,8656,517,5315, + 3476,5346,5346,5346,4605,4786,3600,5346,5346,5385, + 218,5346,648,3361,5346,5346,5356,4672,2553,3704, + 5833,3054,5346,5346,5346,4797,1104,3555,4832,718, + 5364,3476,5363,5355,4839,5346,1,5346,4804,2181, + 38,217,5346,3722,5346,1224,5309,5346,5346,3634, + 4213,5833,1,5318,5318,226,5318,226,226,226, + 226,5337,307,1,5318,5318,226,5318,226,226, + 226,226,5337,4308,5346,510,517,4853,226,8656, + 5526,5315,2,3498,1,5346,3780,3788,5346,226, + 8656,5346,5315,5346,3805,5525,5346,5346,497,5346, + 2553,5346,5346,5346,5346,5346,5346,2736,1104,5346, + 5346,2553,3475,3476,2736,1891,5346,5346,5346,1104, + 5346,5346,5346,218,3476,5346,40,5346,4372,5346, + 5346,5346,5346,5833,218,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5833,1,5318,5318,226,5318, + 226,226,226,226,226,1,5318,5318,226,5318, + 226,226,226,226,226,967,5346,5346,5346,5346, + 5346,226,8656,5346,5315,5346,5346,5346,5346,5346, + 5346,226,8656,5346,5315,5346,5346,5346,5346,5346, + 5346,5346,5346,2553,3634,5346,5346,5346,5346,5346, + 5346,1104,5346,2553,5346,5346,3476,5346,5346,5346, + 5346,1104,5346,5346,5346,5346,3476,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5833,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5833,1,5318,5318, + 226,5318,226,226,226,226,226,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,226,8656,5346,5315,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,2553,5346,5346,5346,5346, + 5346,5346,5346,1104,5346,5346,5346,5346,3476,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5346,5346, + 5346,5346,5346,5346,5346,5346,5346,5346,5833 }; }; public final static char termAction[] = TermAction.termAction; @@ -1705,59 +1713,59 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Asb { public final static char asb[] = {0, - 642,7,558,1,922,756,756,756,756,137, - 922,149,756,416,149,739,542,741,559,559, - 559,559,559,559,559,559,559,1058,1064,1069, - 1066,1073,1071,1078,1076,1080,1079,1081,9,1082, - 558,558,109,109,109,109,598,701,81,146, - 109,356,312,149,149,81,447,149,312,312, - 303,542,881,108,830,139,1039,558,1041,1041, - 962,962,701,558,559,559,559,559,559,559, - 559,559,559,559,559,559,559,559,559,559, - 559,559,559,558,558,558,558,558,558,558, - 558,558,558,558,558,559,312,486,486,486, - 486,403,312,81,56,1028,1039,767,1039,762, - 1039,764,1039,1023,137,598,356,356,81,559, - 56,315,603,506,505,232,137,741,356,108, - 558,596,829,595,598,597,595,312,356,1066, - 1066,1064,1064,1064,1071,1071,1071,1071,1069,1069, - 1076,1073,1073,1079,1078,1080,1116,1081,922,922, - 922,922,598,598,486,159,485,146,598,142, - 359,598,495,403,407,493,767,411,598,598, - 598,403,486,303,356,1097,312,605,607,598, - 830,559,109,1062,268,312,139,598,598,597, - 830,558,558,558,558,558,922,922,542,60, - 142,359,495,494,495,403,495,411,411,598, - 403,598,312,510,498,509,607,403,596,312, - 1062,56,829,139,598,596,312,312,312,312, - 701,701,142,141,688,598,359,1116,405,1016, - 1106,359,495,495,969,598,411,688,686,687, - 598,691,558,507,507,68,68,598,601,56, - 199,312,598,1062,1063,1062,558,268,1021,139, - 312,312,142,830,756,595,758,1108,592,922, - 746,136,970,598,688,559,598,691,558,558, - 607,598,830,312,605,498,691,243,1062,701, - 559,356,1021,596,374,596,495,495,592,1102, - 56,598,749,559,1116,76,969,598,137,137, - 598,776,607,691,1063,312,356,1103,374,596, - 495,767,137,1108,592,829,559,559,598,598, - 598,776,312,776,485,756,62,62,1103,767, - 522,746,598,922,598,598,922,769,776,374, - 837,374,484,484,787,523,137,598,701,608, - 769,684,924,51,922,488,873,374,109,109, - 787,522,1116,559,1116,1103,922,922,922,523, - 922,598,17,1103,1103,598,767,312,311,771, - 791,486,51,684,836,767,767,784,137,485, - 514,922,514,1116,523,542,542,540,789,542, - 1103,1103,197,787,109,771,837,836,837,1103, - 75,1102,312,836,836,836,137,598,640,199, - 312,592,312,17,1103,51,922,312,787,836, - 558,979,592,1103,688,836,836,836,598,598, - 62,312,312,256,523,197,523,1103,17,51, - 558,523,520,688,312,977,688,688,598,1103, - 484,767,767,914,558,521,701,1103,1103,312, - 977,1103,595,523,312,701,1103,687,523,312, - 977,523 + 519,67,423,61,949,637,637,637,637,57, + 949,655,637,1046,655,620,407,622,424,424, + 424,424,424,424,424,424,424,986,992,997, + 994,1001,999,1006,1004,1008,1007,1009,69,1010, + 423,423,29,29,29,29,463,582,1,652, + 29,220,303,655,655,1,1077,655,303,303, + 294,407,908,28,766,59,967,423,969,969, + 855,855,582,423,424,424,424,424,424,424, + 424,424,424,424,424,424,424,424,424,424, + 424,424,424,423,423,423,423,423,423,423, + 423,423,423,423,423,424,303,1116,1116,1116, + 1116,350,303,1,116,956,967,517,967,512, + 967,514,967,951,57,463,220,220,1,424, + 116,179,468,371,370,223,57,622,220,28, + 423,461,765,460,463,462,460,303,220,994, + 994,992,992,992,999,999,999,999,997,997, + 1004,1001,1001,1007,1006,1008,1044,1009,949,949, + 949,949,463,463,1116,665,1115,652,463,648, + 306,463,509,350,354,507,517,358,463,463, + 463,350,1116,294,220,1025,303,470,472,463, + 766,424,29,990,259,303,59,463,463,462, + 766,423,423,423,423,423,949,949,407,120, + 648,306,509,508,509,350,509,358,358,463, + 350,463,303,375,363,374,472,350,461,303, + 990,116,765,59,463,461,303,303,303,303, + 582,582,648,647,565,463,306,1044,352,901, + 1034,306,509,509,639,463,358,565,563,564, + 463,568,423,372,372,166,166,463,466,116, + 133,303,463,990,991,990,423,259,906,59, + 303,303,648,766,637,460,578,1036,457,949, + 627,56,640,463,565,424,463,568,423,423, + 472,463,766,303,470,363,568,234,990,582, + 424,220,906,461,321,461,509,509,457,1030, + 116,463,630,424,1044,174,639,463,57,57, + 463,712,472,568,991,303,220,1031,321,461, + 509,517,57,1036,457,765,424,424,463,463, + 463,712,303,712,1115,637,122,122,1031,517, + 387,627,463,949,463,463,949,705,712,321, + 773,321,1114,1114,723,388,57,463,582,473, + 705,561,817,111,949,128,809,321,29,29, + 723,387,1044,424,1044,1031,949,949,949,388, + 949,463,77,1031,1031,463,517,303,302,707, + 727,1116,111,561,772,517,517,720,57,1115, + 379,949,379,1044,388,407,407,405,725,407, + 1031,1031,703,723,29,707,773,772,773,1031, + 173,1030,303,772,772,772,57,463,505,133, + 303,457,303,77,1031,111,949,303,723,772, + 423,864,457,1031,565,772,772,772,463,463, + 122,303,303,247,388,703,388,1031,77,111, + 423,388,385,565,303,862,565,565,463,1031, + 1114,517,517,941,423,386,582,1031,1031,303, + 862,1031,460,388,303,582,1031,564,388,303, + 862,388 }; }; public final static char asb[] = Asb.asb; @@ -1765,118 +1773,118 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Asr { public final static byte asr[] = {0, - 9,72,118,87,26,66,121,0,65,72, - 95,66,118,87,71,121,13,14,31,63, - 15,32,33,16,17,18,64,34,19,20, - 35,36,37,47,38,39,10,21,22,23, - 40,41,42,28,24,25,11,12,30,43, - 9,26,5,7,3,1,2,8,4,6, - 0,65,67,66,1,2,0,74,50,65, - 72,95,87,60,3,9,66,26,67,0, 31,63,32,33,64,7,34,35,36,37, 47,38,39,40,41,42,28,24,25,8, 6,11,12,5,30,65,43,3,51,13, 14,62,46,15,68,52,27,16,53,54, 17,18,55,57,19,20,58,69,59,10, 70,21,22,49,23,45,1,2,4,0, - 47,46,7,49,5,1,2,4,74,9, - 50,72,95,118,87,71,26,121,60,3, - 120,96,103,90,24,25,8,6,11,12, - 91,92,88,89,44,93,94,97,98,99, - 100,101,102,117,104,105,106,107,108,109, - 110,111,112,113,65,66,67,0,51,13, - 14,62,46,15,68,52,27,16,53,54, - 17,18,55,57,19,20,58,69,59,10, - 70,21,45,22,49,23,1,2,4,95, - 0,13,14,15,16,17,18,19,20,21, - 22,23,51,46,52,27,53,54,55,57, - 58,59,45,49,26,9,87,7,1,2, - 60,3,8,6,5,4,0,96,90,11, - 12,91,92,88,89,44,93,94,97,98, - 99,100,101,102,117,72,95,67,104,105, - 106,107,108,109,110,111,112,113,118,71, - 26,121,65,1,2,8,6,4,3,60, - 66,87,9,0,63,64,3,10,32,36, - 34,31,39,14,23,13,19,17,18,20, - 21,16,15,22,40,43,41,42,28,38, - 33,37,5,7,4,24,25,8,6,11, - 12,30,35,1,2,118,9,0,81,7, - 114,115,116,48,9,3,8,6,5,72, - 71,26,73,51,13,14,62,46,15,68, - 52,27,16,53,54,17,18,55,57,19, - 20,58,69,59,10,70,21,45,22,49, - 23,4,1,2,29,0,4,50,72,0, - 1,2,9,71,0,51,13,14,62,46, + 9,72,118,87,26,66,121,0,65,72, + 95,66,118,87,71,121,13,14,31,63, + 15,32,33,16,17,18,64,34,19,20, + 35,36,37,47,38,39,10,21,22,23, + 40,41,42,28,24,25,11,12,30,43, + 9,26,5,7,3,1,2,8,4,6, + 0,65,67,66,1,2,0,1,2,123, + 50,0,51,13,14,62,46,15,68,52, + 27,16,53,54,17,18,55,57,19,20, + 58,69,59,10,70,21,45,22,49,23, + 1,2,4,95,0,74,50,65,72,95, + 87,60,3,9,66,26,67,0,63,64, + 3,10,32,36,34,31,39,14,23,13, + 19,17,18,20,21,16,15,22,40,43, + 41,42,28,38,33,37,5,7,4,24, + 25,8,6,11,12,30,35,1,2,118, + 9,0,13,14,15,16,17,18,19,20, + 21,22,23,51,46,52,27,53,54,55, + 57,58,59,45,49,26,9,87,7,1, + 2,60,3,8,6,5,4,0,96,90, + 11,12,91,92,88,89,44,93,94,97, + 98,99,100,101,102,117,72,95,67,104, + 105,106,107,108,109,110,111,112,113,118, + 71,26,121,65,1,2,8,6,4,3, + 60,66,87,9,0,81,7,114,115,116, + 48,9,3,8,6,5,72,71,26,73, + 51,13,14,62,46,15,68,52,27,16, + 53,54,17,18,55,57,19,20,58,69, + 59,10,70,21,45,22,49,23,4,1, + 2,29,0,4,50,72,0,1,2,9, + 71,0,8,6,7,5,4,1,2,3, + 60,65,67,66,9,87,95,0,81,114, + 115,116,29,72,119,122,71,73,74,48, + 56,61,76,78,85,83,75,80,82,84, + 86,50,77,79,9,26,51,62,46,68, + 52,27,53,54,55,57,58,69,59,70, + 45,49,47,63,64,10,32,36,34,31, + 39,14,23,13,19,17,18,20,21,16, + 15,22,40,43,41,42,28,38,33,37, + 24,25,11,12,30,35,8,6,3,4, + 7,5,1,2,0,5,7,3,60,6, + 8,95,51,13,14,46,15,68,52,27, + 16,53,54,17,18,55,57,19,20,58, + 69,59,10,70,21,45,22,49,23,1, + 2,4,87,9,62,0,4,44,50,72, + 0,29,72,4,1,2,50,0,13,14, + 31,63,15,32,33,16,17,18,64,7, + 34,19,20,35,36,37,47,38,39,10, + 21,22,23,40,41,42,1,2,3,24, + 25,8,6,11,12,5,30,4,43,73, + 28,0,67,66,71,9,0,46,47,49, + 9,65,95,67,66,87,0,50,72,74, + 0,9,87,13,14,31,15,32,33,16, + 17,18,34,19,20,35,36,37,47,38, + 39,10,21,22,23,40,41,42,28,3, + 24,25,8,6,11,12,30,4,43,5, + 7,1,2,64,63,0,50,66,0,72, + 9,60,3,67,66,26,44,0,45,1, + 2,4,114,115,116,0,47,46,7,49, + 5,1,2,4,74,9,50,72,95,118, + 87,71,26,121,60,3,120,96,103,90, + 24,25,8,6,11,12,91,92,88,89, + 44,93,94,97,98,99,100,101,102,117, + 104,105,106,107,108,109,110,111,112,113, + 65,66,67,0,46,49,74,3,50,72, + 26,47,9,65,95,67,66,87,0,50, + 67,0,119,0,75,0,61,51,13,14, + 62,46,15,68,52,81,27,16,53,54, + 17,18,55,56,57,19,20,58,69,59, + 10,70,21,48,45,22,49,23,9,3, + 8,4,26,50,6,7,1,2,5,29, + 0,71,62,46,15,68,52,16,53,54, + 17,18,55,57,19,20,58,69,59,70, + 21,45,22,49,23,14,13,51,9,3, + 8,6,26,48,61,81,27,29,7,1, + 2,5,4,10,56,0,62,46,15,68, + 52,16,53,54,17,18,55,57,19,20, + 58,69,59,10,70,21,45,22,49,23, + 14,13,51,9,3,8,6,26,48,56, + 61,81,27,44,7,4,29,5,1,2, + 0,9,71,63,64,47,24,25,8,6, + 11,12,30,35,3,40,43,41,42,28, + 38,33,37,14,23,13,19,17,18,20, + 21,16,15,22,32,36,34,31,39,50, + 7,1,2,4,10,5,0,63,64,24, + 25,11,12,30,35,40,43,41,42,28, + 38,33,37,14,23,13,19,17,18,20, + 21,16,15,22,10,32,36,34,31,39, + 8,6,60,5,7,1,2,4,3,0, + 10,68,62,69,70,14,23,13,19,17, + 18,20,21,16,15,22,74,50,4,5, + 2,1,49,45,59,58,57,7,55,54, + 53,27,52,46,51,120,103,24,25,60, + 3,96,90,6,91,92,11,12,89,88, + 44,93,94,97,98,8,99,100,101,65, + 95,87,121,67,104,105,106,107,108,109, + 110,111,112,113,72,118,71,102,117,66, + 26,9,0,26,9,5,7,3,1,2, + 4,6,8,72,0,51,13,14,62,46, 15,68,52,27,16,53,54,17,18,55, 57,19,20,58,69,59,10,70,21,45, 22,49,23,1,2,4,64,63,11,12, 6,91,92,99,8,100,5,30,44,107, 108,104,105,106,112,111,113,89,88,109, 110,97,98,93,94,101,102,24,25,90, - 103,3,60,67,66,65,0,1,2,123, - 50,0,4,44,50,72,0,8,6,7, - 5,4,1,2,3,60,65,67,66,9, - 87,95,0,81,114,115,116,29,72,119, - 122,71,73,74,48,56,61,76,78,85, - 83,75,80,82,84,86,50,77,79,9, - 26,51,62,46,68,52,27,53,54,55, - 57,58,69,59,70,45,49,47,63,64, - 10,32,36,34,31,39,14,23,13,19, - 17,18,20,21,16,15,22,40,43,41, - 42,28,38,33,37,24,25,11,12,30, - 35,8,6,3,4,7,5,1,2,0, - 5,7,3,60,6,8,95,51,13,14, - 46,15,68,52,27,16,53,54,17,18, - 55,57,19,20,58,69,59,10,70,21, - 45,22,49,23,1,2,4,87,9,62, - 0,13,14,31,63,15,32,33,16,17, - 18,64,7,34,19,20,35,36,37,47, - 38,39,10,21,22,23,40,41,42,1, - 2,3,24,25,8,6,11,12,5,30, - 4,43,73,28,0,67,66,71,9,0, - 46,47,49,9,65,95,67,66,87,0, - 9,87,13,14,31,15,32,33,16,17, - 18,34,19,20,35,36,37,47,38,39, - 10,21,22,23,40,41,42,28,3,24, - 25,8,6,11,12,30,4,43,5,7, - 1,2,64,63,0,50,66,0,72,9, - 60,3,67,66,26,44,0,50,72,74, - 0,29,72,4,1,2,50,0,46,49, - 74,3,50,72,26,47,9,65,95,67, - 66,87,0,50,67,0,119,0,75,0, - 61,51,13,14,62,46,15,68,52,81, - 27,16,53,54,17,18,55,56,57,19, - 20,58,69,59,10,70,21,48,45,22, - 49,23,9,3,8,4,26,50,6,7, - 1,2,5,29,0,71,62,46,15,68, - 52,16,53,54,17,18,55,57,19,20, - 58,69,59,70,21,45,22,49,23,14, - 13,51,9,3,8,6,26,48,61,81, - 27,29,7,1,2,5,4,10,56,0, - 63,64,24,25,11,12,30,35,40,43, - 41,42,28,38,33,37,14,23,13,19, - 17,18,20,21,16,15,22,10,32,36, - 34,31,39,8,6,60,5,7,1,2, - 4,3,0,62,46,15,68,52,16,53, - 54,17,18,55,57,19,20,58,69,59, - 10,70,21,45,22,49,23,14,13,51, - 9,3,8,6,26,48,56,61,81,27, - 44,7,4,29,5,1,2,0,45,1, - 2,4,114,115,116,0,9,71,63,64, - 47,24,25,8,6,11,12,30,35,3, - 40,43,41,42,28,38,33,37,14,23, - 13,19,17,18,20,21,16,15,22,32, - 36,34,31,39,50,7,1,2,4,10, - 5,0,10,68,62,69,70,14,23,13, - 19,17,18,20,21,16,15,22,74,50, - 4,5,2,1,49,45,59,58,57,7, - 55,54,53,27,52,46,51,120,103,24, - 25,60,3,96,90,6,91,92,11,12, - 89,88,44,93,94,97,98,8,99,100, - 101,65,95,87,121,67,104,105,106,107, - 108,109,110,111,112,113,72,118,71,102, - 117,66,26,9,0,26,9,5,7,3, - 1,2,4,6,8,72,0 + 103,3,60,67,66,65,0 }; }; public final static byte asr[] = Asr.asr; @@ -1884,59 +1892,59 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Nasb { public final static char nasb[] = {0, - 123,11,34,11,11,11,11,11,11,113, - 11,11,11,84,11,155,230,169,34,34, - 153,34,34,34,34,34,34,11,11,11, - 11,11,11,11,11,11,11,11,34,11, - 34,129,239,239,239,239,169,142,98,19, - 4,68,236,11,11,98,86,11,236,236, - 77,1,34,39,147,11,11,129,11,11, - 24,24,142,129,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,129,34,236,11,11,11, - 11,134,236,32,112,205,206,11,206,167, - 206,16,206,199,113,169,68,68,32,34, - 112,64,77,12,12,11,113,169,68,239, - 120,164,176,163,10,169,163,236,68,11, + 137,11,36,11,11,11,11,11,11,145, + 11,11,11,238,11,149,230,134,36,36, + 147,36,36,36,36,36,36,11,11,11, + 11,11,11,11,11,11,11,11,36,11, + 36,161,227,227,227,227,134,171,103,17, + 4,69,236,11,11,103,240,11,236,236, + 84,1,36,59,189,11,11,161,11,11, + 26,26,171,161,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,161,36,236,11,11,11, + 11,71,236,34,144,213,214,11,214,132, + 214,14,214,207,145,134,69,69,34,36, + 144,65,84,24,24,11,145,134,69,227, + 115,184,93,183,10,134,183,236,69,11, 11,11,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11, - 11,11,29,10,11,11,11,187,169,98, - 98,156,98,208,98,11,11,98,208,169, - 10,11,11,185,68,11,236,211,98,169, - 147,34,239,98,61,236,11,10,169,81, - 147,34,129,129,129,129,11,11,32,11, - 53,223,98,98,73,146,73,98,17,10, - 146,29,236,11,92,11,213,145,29,236, - 55,187,176,11,10,29,236,236,236,236, - 142,142,98,53,51,169,151,11,11,88, - 216,223,73,73,195,29,17,51,11,11, - 29,98,34,11,11,12,12,169,92,112, - 213,236,29,98,57,11,129,187,82,11, - 236,236,53,147,11,113,98,108,94,11, - 11,113,75,208,51,34,17,53,34,34, - 98,10,147,236,211,159,98,11,55,142, - 34,68,82,164,98,208,98,22,161,151, - 112,169,11,34,11,45,172,208,113,113, - 10,98,213,53,57,236,68,151,213,164, - 22,14,104,94,161,147,34,34,10,208, - 208,43,236,98,11,11,41,41,151,14, - 70,11,208,11,10,10,11,98,43,213, - 190,98,11,11,98,115,104,10,142,234, - 53,11,190,217,11,17,88,213,239,239, - 132,126,11,34,11,151,11,11,11,127, - 11,17,149,151,151,17,100,236,236,98, - 98,11,108,11,98,11,11,11,113,11, - 102,11,11,11,127,238,238,180,11,238, - 151,151,11,98,239,43,190,98,190,151, - 59,11,236,137,98,98,113,208,11,239, - 236,94,236,182,151,98,11,236,132,137, - 120,34,94,151,51,190,137,137,208,90, - 41,236,236,98,127,11,127,151,182,94, - 129,127,102,51,236,98,51,51,90,151, - 11,100,100,92,34,11,182,151,151,236, - 47,151,163,127,236,182,151,51,127,236, - 47,127 + 11,11,31,10,11,11,11,129,134,103, + 103,150,103,216,103,11,11,103,216,134, + 10,11,11,127,69,11,236,122,103,134, + 189,36,227,103,77,236,11,10,134,88, + 189,36,161,161,161,161,11,11,34,11, + 57,195,103,103,55,188,55,103,15,10, + 188,31,236,11,97,11,124,187,31,236, + 61,129,93,11,10,31,236,236,236,236, + 171,171,103,57,53,134,120,11,11,41, + 219,195,55,55,191,31,15,53,11,11, + 31,103,36,11,11,24,24,134,97,144, + 124,236,31,103,82,11,161,129,89,11, + 236,236,57,189,11,145,103,140,99,11, + 11,145,111,216,53,36,15,57,36,36, + 103,10,189,236,122,179,103,11,61,171, + 36,69,89,184,103,216,103,113,181,120, + 144,134,11,36,11,80,20,216,145,145, + 10,103,124,57,82,236,69,120,124,184, + 113,164,107,99,181,189,36,36,10,216, + 216,47,236,103,11,11,45,45,120,164, + 74,11,216,11,10,10,11,103,47,124, + 174,103,11,11,103,153,107,10,171,234, + 57,11,174,220,11,15,41,124,227,227, + 43,158,11,36,11,120,11,11,11,159, + 11,15,118,120,120,15,12,236,236,103, + 103,11,140,11,103,11,11,11,145,11, + 105,11,11,11,159,226,226,202,11,226, + 120,120,11,103,227,47,174,103,174,120, + 63,11,236,166,103,103,145,216,11,227, + 236,99,236,204,120,103,11,236,43,166, + 115,36,99,120,53,174,166,166,216,91, + 45,236,236,103,159,11,159,120,204,99, + 161,159,105,53,236,103,53,53,91,120, + 11,12,12,97,36,11,204,120,120,236, + 49,120,183,159,236,204,120,53,159,236, + 49,159 }; }; public final static char nasb[] = Nasb.nasb; @@ -1944,30 +1952,30 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface Nasr { public final static char nasr[] = {0, - 3,13,8,6,147,145,120,144,143,2, - 0,67,0,155,0,6,1,0,5,186, - 0,154,0,6,2,8,134,0,4,3, - 0,48,5,6,8,2,13,0,171,0, - 110,0,123,0,182,0,13,2,8,6, - 64,0,60,0,138,0,136,0,176,0, - 5,173,0,13,2,8,6,78,0,5, - 64,0,111,0,184,0,96,97,5,0, - 2,114,0,5,48,167,0,151,0,150, - 0,97,96,63,6,2,8,5,0,56, - 0,113,0,165,6,164,0,2,63,8, - 5,91,6,0,5,47,39,174,0,5, - 29,0,5,170,0,64,47,69,5,39, - 0,156,0,131,65,0,105,5,47,68, - 0,5,99,0,131,2,65,0,5,39, - 40,0,6,13,8,2,3,0,97,96, - 63,55,6,8,2,0,3,6,2,44, - 0,6,104,161,0,65,133,132,0,24, - 175,5,102,0,97,96,6,55,0,5, - 47,68,79,0,6,104,183,0,2,6, - 120,116,117,118,13,88,0,2,54,0, - 6,91,24,5,0,40,6,2,8,5, - 153,0,5,47,68,104,45,6,0,5, - 48,39,0,48,5,36,0,115,5,48, + 3,13,8,6,148,146,120,145,144,2, + 0,56,0,6,1,0,5,187,0,6, + 104,162,0,67,0,6,2,8,135,0, + 4,3,0,48,5,6,8,2,13,0, + 152,0,157,0,110,0,124,0,13,2, + 8,6,64,0,111,0,60,0,172,0, + 139,0,177,0,13,2,8,6,78,0, + 132,65,0,5,64,0,5,174,0,183, + 0,137,0,96,97,5,0,2,114,0, + 151,0,65,134,133,0,97,96,63,6, + 2,8,5,0,113,0,166,6,165,0, + 185,0,155,0,5,29,0,5,39,40, + 0,6,91,24,5,0,97,96,6,55, + 0,3,6,2,44,0,5,171,0,2, + 63,8,5,91,6,0,6,13,8,2, + 3,0,5,47,39,175,0,64,47,69, + 5,39,0,156,0,105,5,47,68,0, + 5,99,0,5,47,68,79,0,97,96, + 63,55,6,8,2,0,132,2,65,0, + 6,104,184,0,5,47,68,104,45,6, + 0,24,176,5,102,0,2,6,120,116, + 117,118,13,88,0,2,54,0,40,6, + 2,8,5,154,0,115,5,48,0,5, + 48,39,0,48,5,36,0,5,48,168, 0 }; }; @@ -2008,14 +2016,14 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 203,213,149,160,209,210,211,0,0,0, 0,0,208,221,181,0,0,0,212,0, 0,0,242,150,177,191,192,193,194,195, - 197,200,0,215,218,220,238,0,241,0, - 0,143,144,147,0,0,157,159,0,173, - 0,183,184,185,186,187,190,0,196,198, - 0,199,204,0,216,217,0,222,225,227, - 229,0,232,233,234,0,236,237,240,126, - 0,153,156,176,179,201,214,219,0,223, - 224,226,228,0,230,231,243,244,0,0, - 0,0,0,0 + 197,200,0,0,215,218,220,238,0,241, + 0,0,143,144,147,0,0,157,159,0, + 173,0,183,184,185,186,187,190,0,196, + 198,0,199,204,0,216,217,0,222,225, + 227,229,0,232,233,234,0,236,237,240, + 126,0,153,156,176,179,201,214,219,0, + 223,224,226,228,0,230,231,243,244,0, + 0,0,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -2063,16 +2071,16 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public final static char scopeLhs[] = { 45,18,18,73,18,18,18,18,73,82, 46,87,86,118,66,52,73,72,45,18, - 73,20,3,7,161,161,158,116,45,85, - 118,117,119,53,46,134,128,73,18,18, - 128,98,57,130,76,164,161,158,125,117, - 117,119,175,50,56,138,18,18,18,18, - 12,113,158,125,73,72,72,38,134,72, - 18,18,18,18,98,73,20,165,161,176, - 96,103,59,67,58,153,77,119,74,70, - 139,138,171,134,17,158,119,115,22,126, - 126,55,134,134,73,45,158,71,132,44, - 132,44,164,115,116,45,45,57 + 73,20,3,7,162,162,159,116,45,85, + 118,117,119,53,46,135,129,73,18,18, + 129,98,57,131,76,165,162,159,126,117, + 117,119,176,50,56,139,18,18,18,18, + 12,113,159,126,73,72,72,38,135,72, + 18,18,18,18,98,73,20,166,162,177, + 96,103,59,67,58,154,77,119,74,70, + 140,139,172,135,17,159,119,115,22,127, + 127,55,135,135,73,45,159,71,133,44, + 133,44,165,115,116,45,45,57 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -2118,25 +2126,25 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface ScopeRhs { public final static char scopeRhs[] = {0, - 312,3,47,0,128,0,311,3,119,0, - 128,175,0,129,180,74,0,217,0,290, - 129,44,128,0,21,0,292,129,44,29, + 313,3,47,0,128,0,312,3,119,0, + 128,175,0,129,180,74,0,217,0,291, + 129,44,128,0,21,0,293,129,44,29, 0,21,55,0,34,134,0,21,55,0, - 0,292,129,44,29,192,0,21,131,0, - 290,129,44,132,0,178,130,0,140,0, - 223,3,289,0,289,0,2,0,128,0, + 0,293,129,44,29,192,0,21,131,0, + 291,129,44,132,0,178,130,0,140,0, + 223,3,290,0,290,0,2,0,128,0, 178,130,228,0,178,130,45,228,0,178, - 130,308,45,0,133,189,168,130,0,130, + 130,309,45,0,133,189,168,130,0,130, 0,189,168,130,0,136,130,0,171,0, - 304,129,171,0,129,171,0,223,130,0, + 305,129,171,0,129,171,0,223,130,0, 168,244,0,139,0,0,0,137,0,0, - 0,303,129,50,250,0,129,0,250,0, - 3,0,0,129,0,302,129,50,0,45, - 129,0,153,3,0,129,279,278,129,74, - 277,171,0,278,129,74,277,171,0,216, - 0,217,0,277,171,0,98,0,0,216, + 0,304,129,50,251,0,129,0,251,0, + 3,0,0,129,0,303,129,50,0,45, + 129,0,153,3,0,129,280,279,129,74, + 278,171,0,279,129,74,278,171,0,216, + 0,217,0,278,171,0,98,0,0,216, 0,217,0,204,98,0,0,216,0,217, - 0,278,129,277,171,0,216,0,204,0, + 0,279,129,278,171,0,216,0,204,0, 0,216,0,231,129,3,0,128,0,0, 0,0,0,231,129,3,220,0,227,3, 0,215,129,0,209,0,149,0,168,130, @@ -2144,17 +2152,17 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 231,129,3,182,0,182,0,2,0,0, 128,0,0,0,0,0,201,3,0,202, 0,230,129,50,28,27,0,178,130,56, - 48,0,198,130,0,133,178,130,275,48, - 0,178,130,275,48,0,178,130,67,125, + 48,0,198,130,0,133,178,130,276,48, + 0,178,130,276,48,0,178,130,67,125, 56,0,230,129,50,56,0,230,129,50, - 123,56,0,230,129,50,126,56,0,272, - 129,50,125,68,0,272,129,50,68,0, + 123,56,0,230,129,50,126,56,0,273, + 129,50,125,68,0,273,129,50,68,0, 178,130,68,0,137,0,189,178,130,244, 0,139,0,178,130,244,0,189,168,130, - 10,0,168,130,10,0,95,139,0,265, - 129,148,0,265,129,171,0,163,85,0, - 226,164,226,299,3,82,0,128,174,0, - 226,299,3,82,0,130,0,128,174,0, + 10,0,168,130,10,0,95,139,0,266, + 129,148,0,266,129,171,0,163,85,0, + 226,164,226,300,3,82,0,128,174,0, + 226,300,3,82,0,130,0,128,174,0, 226,164,226,164,226,3,82,0,226,164, 226,3,82,0,226,3,82,0,130,0, 130,0,128,174,0,163,3,75,193,80, @@ -2163,11 +2171,11 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 34,172,0,172,0,178,34,172,0,239, 3,86,0,193,160,239,3,84,0,64, 174,0,239,3,84,0,128,174,64,174, - 0,298,129,50,0,163,0,218,77,0, + 0,299,129,50,0,163,0,218,77,0, 31,0,163,117,161,0,31,172,0,185, 3,0,128,152,0,223,3,0,218,60, - 262,0,163,60,0,185,3,295,64,130, - 0,128,0,0,0,0,295,64,130,0, + 263,0,163,60,0,185,3,296,64,130, + 0,128,0,0,0,0,296,64,130,0, 2,148,128,0,0,0,0,150,0,127, 29,168,130,0,32,150,0,95,139,32, 150,0,217,178,130,0,149,32,150,0, @@ -2178,10 +2186,10 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 36,0,163,3,65,185,44,32,0,185, 44,32,0,223,3,127,189,168,130,10, 0,127,189,168,130,10,0,139,2,0, - 128,0,223,3,126,255,168,130,10,0, - 255,168,130,10,0,137,2,0,128,0, + 128,0,223,3,126,256,168,130,10,0, + 256,168,130,10,0,137,2,0,128,0, 223,3,137,0,223,3,142,0,163,60, - 142,0,257,0,32,0,32,143,0,167, + 142,0,258,0,32,0,32,143,0,167, 0,136,0,163,3,0 }; }; @@ -2190,37 +2198,37 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface ScopeState { public final static char scopeState[] = {0, - 1670,0,3476,0,4839,4838,4837,0,3554,2956, - 2677,2935,0,2697,1072,895,0,3461,2829,0, - 3695,3657,3603,3591,3384,3565,3511,3473,3419,2640, - 3381,2931,2893,2656,554,0,3503,2654,2645,0, - 1745,1444,0,3429,4058,0,4606,4509,0,1531, - 1145,0,4606,4590,4526,3349,4509,2759,4306,4403, - 4495,3018,4319,4431,2837,2681,2603,0,2906,4622, - 0,2906,4622,3145,3136,4218,3047,3037,4164,4121, - 4057,4048,3695,3657,3603,3565,3511,3473,3419,3381, - 2931,2893,0,2906,4622,3145,3136,4218,3047,3037, - 4164,4121,4057,4048,0,3628,3442,0,3018,4590, - 1568,4526,3349,4550,2837,1783,1482,1740,4468,3504, - 1654,1439,1396,0,716,646,0,789,0,2745, - 894,765,549,3349,3504,2759,2681,2603,2823,2411, - 0,4337,525,2399,0,4828,4816,4782,4767,4761, - 4712,4706,4697,4691,4675,4252,4194,4147,4075,4630, - 4344,3163,4182,3395,3011,3370,2493,2195,0,4828, - 4816,3245,3154,2753,4782,4767,4761,2672,2498,4712, - 4706,4697,2017,4691,3056,4675,2406,2190,4252,2101, - 1885,2012,1091,2418,4194,3171,4147,1103,4075,4630, - 4344,729,3163,659,4182,797,3395,3011,4337,3370, - 2399,2493,2195,1032,784,568,980,964,2759,4306, - 4403,4495,3018,4606,4590,4319,4526,3349,4431,2837, - 2681,4509,2603,908,851,716,646,619,4025,4002, - 2201,2240,580,2275,2370,2341,2309,2707,2616,2575, - 2547,2454,2424,3325,3301,3277,2863,2785,3979,3956, - 3933,3910,3887,3864,3841,3818,3795,3252,3772,1891, - 2151,2112,2062,2023,1973,1197,1152,1934,1109,865, - 1841,1802,735,673,1759,1716,1673,1630,1587,1544, - 1501,1458,1415,1372,1329,525,1285,803,1048,989, - 921,1240,0 + 1669,0,3555,0,4804,4797,4672,0,2660,3027, + 2644,835,0,2541,2521,898,0,3054,2647,0, + 3874,3836,3782,3353,3149,3703,3590,3552,3498,562, + 3460,3034,2996,3094,3044,0,3733,4614,3711,0, + 2868,2394,0,611,3449,0,4587,4514,0,1573, + 1315,0,4587,4574,4558,3428,4514,2790,3667,4372, + 4480,2760,4308,4401,2960,2682,2604,0,4603,3473, + 0,4603,3473,3249,3185,4277,3142,3077,4213,4204, + 3715,3258,3874,3836,3782,3703,3590,3552,3498,3460, + 3034,2996,0,4603,3473,3249,3185,4277,3142,3077, + 4213,4204,3715,3258,0,3515,2535,0,2760,4574, + 1439,4558,3428,3004,2960,1826,1353,1783,2783,2803, + 791,1310,1267,0,718,648,0,1033,0,2423, + 1611,1396,647,3428,2803,2790,2682,2604,2747,2411, + 0,4386,526,2399,0,4771,4763,4751,4746,4726, + 4714,4691,4679,4659,4654,4303,4231,3276,3172,4622, + 4497,3135,4418,4393,3450,2829,2493,2195,0,4771, + 4763,3283,2876,2673,4751,4746,4726,2498,1108,4714, + 4691,4679,3114,4659,3029,4654,2406,2190,4303,2101, + 2017,2012,1095,2418,4231,2482,3276,1885,3172,4622, + 4497,731,3135,661,4418,800,4393,3450,4386,2829, + 2399,2493,2195,1036,786,569,983,967,2790,3667, + 4372,4480,2760,4587,4574,4308,4558,3428,4401,2960, + 2682,4514,2604,911,854,718,648,620,4181,4158, + 2201,2240,581,2275,2370,2341,2309,2708,2617,2576, + 2548,2454,2424,3404,3380,3356,2934,2908,4135,4112, + 4089,4066,4043,4020,3997,3974,3951,2973,3680,1891, + 2151,2112,2062,2023,1973,1200,1157,1934,1114,868, + 1841,1802,737,675,1759,1716,1673,1630,1587,1544, + 1501,1458,1415,1372,1329,526,1286,806,1052,993, + 924,1243,0 }; }; public final static char scopeState[] = ScopeState.scopeState; @@ -2228,7 +2236,7 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public interface InSymb { public final static char inSymb[] = {0, - 0,294,129,264,39,31,34,36,32,10, + 0,295,129,265,39,31,34,36,32,10, 137,126,128,7,132,4,3,130,35,30, 5,12,11,6,8,25,24,142,147,150, 149,152,151,156,155,158,157,159,47,161, @@ -2239,47 +2247,47 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab 6,94,93,65,44,88,89,8,98,97, 100,99,101,113,112,111,110,109,108,107, 106,105,104,67,117,102,163,185,185,185, - 185,168,223,129,129,266,267,250,268,244, - 269,68,270,271,10,130,60,60,129,160, - 129,60,3,221,220,137,10,130,60,295, + 185,168,223,129,129,267,268,251,269,244, + 270,68,271,272,10,130,60,60,129,160, + 129,60,3,221,220,137,10,130,60,296, 3,189,4,29,5,130,29,223,163,149, 149,147,147,147,151,151,151,151,150,150, 155,152,152,157,156,158,163,159,65,65, - 65,65,189,255,290,135,293,215,130,6, + 65,65,189,256,291,135,294,215,130,6, 50,168,234,130,127,126,125,50,130,130, - 178,168,290,215,218,161,227,129,3,130, - 168,202,3,296,172,153,257,189,130,178, + 178,168,291,215,218,161,227,129,3,130, + 168,202,3,297,172,153,258,189,130,178, 168,72,3,3,3,3,127,126,66,168, 129,129,127,126,129,178,129,50,129,178, 168,29,231,232,148,233,129,168,29,185, 129,129,4,217,5,29,163,163,163,163, - 3,3,6,184,303,130,169,228,192,48, - 171,305,129,129,72,189,129,272,125,273, + 3,3,6,184,304,130,169,228,192,48, + 171,306,129,129,72,189,129,273,125,274, 189,160,67,227,201,187,182,130,3,129, - 66,231,189,160,259,262,60,179,4,127, - 223,223,129,168,29,275,277,129,3,182, - 307,228,45,130,272,67,66,129,67,67, + 66,231,189,160,260,263,60,179,4,127, + 223,223,129,168,29,276,278,129,3,182, + 308,228,45,130,273,67,66,129,67,67, 3,178,168,201,129,215,160,127,129,3, - 60,163,4,189,44,130,74,129,215,304, - 129,130,126,72,284,201,66,130,45,308, - 178,224,129,129,259,223,218,133,129,178, - 129,278,72,66,215,168,72,67,178,130, - 130,129,231,224,292,29,10,62,133,278, - 50,288,130,289,178,178,47,160,129,66, - 65,44,234,234,279,129,66,178,3,3, + 60,163,4,189,44,130,74,129,215,305, + 129,130,126,72,285,201,66,130,45,309, + 178,224,129,129,260,223,218,133,129,178, + 129,279,72,66,215,168,72,67,178,130, + 130,129,231,224,293,29,10,62,133,279, + 50,289,130,290,178,178,47,160,129,66, + 65,44,234,234,280,129,66,178,3,3, 129,27,29,171,61,56,48,129,67,67, - 129,298,79,77,1,163,86,84,82,80, - 75,83,85,78,76,56,74,223,312,224, - 28,44,129,3,50,123,126,125,56,292, - 280,119,9,218,72,3,3,3,193,3, - 125,163,125,180,66,129,129,50,65,265, - 201,276,28,129,50,50,67,130,65,3, - 239,172,239,299,226,148,75,239,129,129, + 129,299,79,77,1,163,86,84,82,80, + 75,83,85,78,76,56,74,223,313,224, + 28,44,129,3,50,123,126,125,56,293, + 281,119,9,218,72,3,3,3,193,3, + 125,163,125,180,66,129,129,50,65,266, + 201,277,28,129,50,50,67,130,65,3, + 239,172,239,300,226,148,75,239,129,129, 3,67,66,160,230,229,129,129,130,178, - 62,95,311,172,160,201,160,226,164,129, - 3,160,280,230,153,50,230,230,178,274, - 234,160,160,129,67,193,164,226,265,163, - 129,274,67,122,226,164,160,302,160,226, + 62,95,312,172,160,201,160,226,164,129, + 3,160,281,230,153,50,230,230,178,275, + 234,160,160,129,67,193,164,226,266,163, + 129,275,67,122,226,164,160,303,160,226, 66,160 }; }; @@ -2493,7 +2501,7 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab "enumerator_definition", "namespace_name", "init_declarator_list", - "init_declarator", + "init_declarator_complete", "initializer", "direct_declarator", "ptr_operator_seq", @@ -2559,18 +2567,18 @@ public class CPPSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab public final static int NUM_STATES = 522, NT_OFFSET = 124, - LA_STATE_OFFSET = 5833, + LA_STATE_OFFSET = 5871, MAX_LA = 2147483647, - NUM_RULES = 524, - NUM_NONTERMINALS = 194, - NUM_SYMBOLS = 318, + NUM_RULES = 525, + NUM_NONTERMINALS = 195, + NUM_SYMBOLS = 319, SEGMENT_SIZE = 8192, - START_STATE = 2908, + START_STATE = 2855, IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 121, EOLT_SYMBOL = 121, - ACCEPT_ACTION = 4956, - ERROR_ACTION = 5309; + ACCEPT_ACTION = 4999, + ERROR_ACTION = 5346; public final static boolean BACKTRACK = true;