Changeset 7756647


Ignore:
Timestamp:
Oct 13, 2016, 2:45:17 PM (9 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
848ce71
Parents:
ac9ca96 (diff), d58a39a0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into tuples

Conflicts:

src/Parser/TypeData.cc
src/Parser/parser.cc
src/Parser/parser.yy

Files:
11 added
20 edited

Legend:

Unmodified
Added
Removed
  • doc/aaron_comp_II/comp_II.tex

    rac9ca96 r7756647  
    400400
    401401\section{Expression Resolution}
     402\subsection{Analysis}
    402403The expression resolution problem is determining an optimal match between some combination of argument interpretations and the parameter list of some overloaded instance of a function; the argument interpretations are produced by recursive invocations of expression resolution, where the base case is zero-argument functions (which are, for purposes of this discussion, semantically equivalent to named variables or constant literal expressions).
    403404Assuming that the matching between a function's parameter list and a combination of argument interpretations can be done in $\bigO{p^k}$ time, where $p$ is the number of parameters and $k$ is some positive number, if there are $\bigO{i}$ valid interpretations for each subexpression, there will be $\bigO{i}$ candidate functions and $\bigO{i^p}$ possible argument combinations for each expression, so for a single recursive call expression resolution takes $\bigO{i^{p+1} \cdot p^k}$ time if it must compare all combinations, or $\bigO{i(p+1) \cdot p^k}$ time if argument-parameter matches can be chosen independently of each other.
     
    409410The number of valid interpretations of any subexpression, $i$, is bounded by the number of types in the system, which is possibly infinite, though practical resolution algorithms for \CFA must be able to place some finite bound on $i$, possibly at the expense of type-system completeness.
    410411
     412\subsection{Expression Costs}
     413The expression resolution problem involves minimization of a cost function; loosely defined, this cost function is the number of implicit conversions in the top-level expression interpretation.
     414With more specificity, the \emph{cost} of a particular expression interpretation is a lexicographically-ordered tuple, where each element of the tuple corresponds to a particular kind of conversion.
     415In \CFA today, cost is a three-tuple including the number of unsafe conversions, the number of polymorphic parameter bindings, and the number of safe conversions.
     416These counts include conversions used in subexpression interpretations, as well as those necessary to satisfy the type assertions of any polymorphic functions included in the interpretation.
     417
     418\begin{lstlisting}
     419void f(char, long);  // $f_1$ - cost (2, 0, 1)
     420forall(otype T) void f(T, long); // $f_2$ - cost (0, 1, 1)
     421void f(long, long); // $f_{3a}$ - cost (0, 0, 2)
     422void f(int, float); // $f_{3b}$ - cost (0, 0, 2)
     423void f(int, long);  // $f_4$ - cost (0, 0, 1)
     424
     425f(7, 11);
     426\end{lstlisting}
     427
     428In the example above, the expression resolves to $f_4$.
     429$f_1$ has an unsafe conversion (from ©int© to ©char©), and is thus the highest cost, followed by $f_2$, which has a polymorphic binding (from ©int© to ©T©).
     430Neither $f_{3a}$, $f_{3b}$, or $f_4$ match exactly with the type of the call expression (©void (*)(int, int)©), each involving safe conversions, but in this case $f_4$ is cheaper than $f_{3a}$, because it converts fewer arguments, and is also cheaper than $f_{3b}$, because ©long© is a closer match for ©int© than ©float© is.
     431If the declaration of $f_4$ was missing, the expression would be ambiguous, because the two single-step ©int©-to-©long© conversions in $f_{3a}$ cost the same as the one double-step ©int©-to-©float© conversion in $f_{3b}$.
     432
     433In the course of this project I may modify the cost tuple,\footnote{I have considered adding an element to distinguish between cast expressions used as conversions and those used as type ascriptions, and another element to differentiate interpretations based on closer qualifier matches. The existing costing of polymorphic functions could also be made more precice than a bare count of parameter bindings.} but the essential nature of the cost calculation should remain the same.
     434
     435\subsection{Objectives}
    411436The research goal of this project is to develop a performant expression resolver for \CFA; this analysis suggests three primary areas of investigation to accomplish that end.
    412437The first area of investigation is efficient argument-parameter matching; Bilson~\cite{Bilson03} mentions significant optimization opportunities available in the current literature to improve on the existing CFA compiler.
  • src/Common/SemanticError.h

    rac9ca96 r7756647  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 14:38:53 2015
    13 // Update Count     : 4
     12// Last Modified On : Sat Sep 24 15:13:42 2016
     13// Update Count     : 5
    1414//
    1515
     
    4646}
    4747
    48 
    4948#endif // SEMANTICERROR_H
    5049
  • src/Common/module.mk

    rac9ca96 r7756647  
    1111## Created On       : Mon Jun  1 17:49:17 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Aug 18 13:29:04 2016
    14 ## Update Count     : 2
     13## Last Modified On : Tue Sep 27 11:06:38 2016
     14## Update Count     : 4
    1515###############################################################################
    1616
    1717SRC += Common/SemanticError.cc \
    1818       Common/UniqueName.cc \
     19       Common/DebugMalloc.cc \
    1920       Common/Assert.cc
  • src/Common/utility.h

    rac9ca96 r7756647  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  8 17:33:59 2016
    13 // Update Count     : 22
     12// Last Modified On : Fri Sep 23 11:46:47 2016
     13// Update Count     : 28
    1414//
    1515
     
    2525#include <sstream>
    2626#include <string>
     27#include <cassert>
    2728
    2829template< typename T >
     
    101102                } // if
    102103        } // for
    103 }
    104 
    105 static inline std::string assign_strptr( const std::string *str ) {
    106         if ( str == 0 ) {
    107                 return "";
    108         } else {
    109                 std::string tmp;
    110                 tmp = *str;
    111                 delete str;
    112                 return tmp;
    113         } // if
    114104}
    115105
     
    141131
    142132template < typename T >
    143 void toString_single ( std::ostream & os, const T & value ) {
     133void toString_single( std::ostream & os, const T & value ) {
    144134        os << value;
    145135}
    146136
    147137template < typename T, typename... Params >
    148 void toString_single ( std::ostream & os, const T & value, const Params & ... params ) {
     138void toString_single( std::ostream & os, const T & value, const Params & ... params ) {
    149139        os << value;
    150140        toString_single( os, params ... );
     
    152142
    153143template < typename ... Params >
    154 std::string toString ( const Params & ... params ) {
     144std::string toString( const Params & ... params ) {
    155145        std::ostringstream os;
    156146        toString_single( os, params... );
  • src/Makefile.am

    rac9ca96 r7756647  
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Aug 20 11:13:12 2016
    14 ## Update Count     : 71
     13## Last Modified On : Sat Sep 24 15:03:52 2016
     14## Update Count     : 73
    1515###############################################################################
    1616
     
    4040cfa_cpplib_PROGRAMS = driver/cfa-cpp
    4141driver_cfa_cpp_SOURCES = ${SRC}
    42 driver_cfa_cpp_LDADD = ${LEXLIB}                        # yywrap
     42driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    4343driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
    4444
  • src/Makefile.in

    rac9ca96 r7756647  
    9898        Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
    9999        Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
     100        Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT) \
    100101        Common/driver_cfa_cpp-Assert.$(OBJEXT) \
    101102        ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \
     
    358359        CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
    359360        CodeGen/FixNames.cc CodeGen/OperatorTable.cc \
    360         Common/SemanticError.cc Common/UniqueName.cc Common/Assert.cc \
     361        Common/SemanticError.cc Common/UniqueName.cc \
     362        Common/DebugMalloc.cc Common/Assert.cc \
    361363        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    362364        ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
     
    412414cfa_cpplibdir = ${libdir}
    413415driver_cfa_cpp_SOURCES = ${SRC}
    414 driver_cfa_cpp_LDADD = ${LEXLIB}                        # yywrap
     416driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
    415417driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
    416418all: $(BUILT_SOURCES)
     
    512514        Common/$(DEPDIR)/$(am__dirstamp)
    513515Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
     516        Common/$(DEPDIR)/$(am__dirstamp)
     517Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \
    514518        Common/$(DEPDIR)/$(am__dirstamp)
    515519Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \
     
    784788        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
    785789        -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
     790        -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT)
    786791        -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
    787792        -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
     
    889894@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
    890895@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
     896@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po@am__quote@
    891897@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
    892898@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
     
    11251131@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    11261132
     1133Common/driver_cfa_cpp-DebugMalloc.o: Common/DebugMalloc.cc
     1134@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-DebugMalloc.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo -c -o Common/driver_cfa_cpp-DebugMalloc.o `test -f 'Common/DebugMalloc.cc' || echo '$(srcdir)/'`Common/DebugMalloc.cc
     1135@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po
     1136@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/DebugMalloc.cc' object='Common/driver_cfa_cpp-DebugMalloc.o' libtool=no @AMDEPBACKSLASH@
     1137@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1138@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-DebugMalloc.o `test -f 'Common/DebugMalloc.cc' || echo '$(srcdir)/'`Common/DebugMalloc.cc
     1139
     1140Common/driver_cfa_cpp-DebugMalloc.obj: Common/DebugMalloc.cc
     1141@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-DebugMalloc.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo -c -o Common/driver_cfa_cpp-DebugMalloc.obj `if test -f 'Common/DebugMalloc.cc'; then $(CYGPATH_W) 'Common/DebugMalloc.cc'; else $(CYGPATH_W) '$(srcdir)/Common/DebugMalloc.cc'; fi`
     1142@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po
     1143@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/DebugMalloc.cc' object='Common/driver_cfa_cpp-DebugMalloc.obj' libtool=no @AMDEPBACKSLASH@
     1144@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1145@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-DebugMalloc.obj `if test -f 'Common/DebugMalloc.cc'; then $(CYGPATH_W) 'Common/DebugMalloc.cc'; else $(CYGPATH_W) '$(srcdir)/Common/DebugMalloc.cc'; fi`
     1146
    11271147Common/driver_cfa_cpp-Assert.o: Common/Assert.cc
    11281148@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
  • src/Parser/DeclarationNode.cc

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Sep 14 23:13:28 2016
    13 // Update Count     : 502
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 651
    1414//
    1515
     
    3131
    3232// These must remain in the same order as the corresponding DeclarationNode enumerations.
    33 const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "NoStorageClass" };
    34 const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic", "NoQualifier" };
    35 const char *DeclarationNode::basicTypeName[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicType" };
    36 const char *DeclarationNode::complexTypeName[] = { "_Complex", "_Imaginary", "NoComplexType" };
    37 const char *DeclarationNode::signednessName[] = { "signed", "unsigned", "NoSignedness" };
    38 const char *DeclarationNode::lengthName[] = { "short", "long", "long long", "NoLength" };
    39 const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
    40 const char *DeclarationNode::typeClassName[] = { "otype", "dtype", "ftype" };
    41 const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
     33const char * DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "NoStorageClass" };
     34const char * DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic", "NoQualifier" };
     35const char * DeclarationNode::basicTypeName[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicType" };
     36const char * DeclarationNode::complexTypeName[] = { "_Complex", "_Imaginary", "NoComplexType" };
     37const char * DeclarationNode::signednessName[] = { "signed", "unsigned", "NoSignedness" };
     38const char * DeclarationNode::lengthName[] = { "short", "long", "long long", "NoLength" };
     39const char * DeclarationNode::aggregateName[] = { "struct", "union", "context" };
     40const char * DeclarationNode::typeClassName[] = { "otype", "dtype", "ftype" };
     41const char * DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
    4242
    4343UniqueName DeclarationNode::anonymous( "__anonymous" );
     
    4646
    4747DeclarationNode::DeclarationNode() :
    48                 type( 0 ),
     48                type( nullptr ),
    4949                storageClass( NoStorageClass ),
    5050                isInline( false ),
    5151                isNoreturn( false ),
    52                 bitfieldWidth( 0 ),
    53                 initializer( 0 ),
     52                bitfieldWidth( nullptr ),
     53                initializer( nullptr ),
    5454                hasEllipsis( false ),
    5555                linkage( ::linkage ),
    5656                extension( false ) {
    57         variable.tyClass = DeclarationNode::Otype;
     57
     58//      variable.name = nullptr;
     59        variable.tyClass = NoTypeClass;
    5860        variable.assertions = nullptr;
    5961
     62//      attr.name = nullptr;
    6063        attr.expr = nullptr;
    6164        attr.type = nullptr;
     
    6366
    6467DeclarationNode::~DeclarationNode() {
     68//      delete attr.name;
    6569        delete attr.expr;
    6670        delete attr.type;
     71
     72//      delete variable.name;
     73        delete variable.assertions;
     74
    6775        delete type;
    6876        delete bitfieldWidth;
     
    7078}
    7179
    72 DeclarationNode *DeclarationNode::clone() const {
    73         DeclarationNode *newnode = new DeclarationNode;
     80DeclarationNode * DeclarationNode::clone() const {
     81        DeclarationNode * newnode = new DeclarationNode;
    7482        newnode->type = maybeClone( type );
    75         newnode->name = name;
     83        newnode->name = name ? new string( *name ) : nullptr;
    7684        newnode->storageClass = storageClass;
    7785        newnode->isInline = isInline;
     
    8391        newnode->linkage = linkage;
    8492
     93//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     94        newnode->variable.tyClass = variable.tyClass;
    8595        newnode->variable.assertions = maybeClone( variable.assertions );
    86         newnode->variable.name = variable.name;
    87         newnode->variable.tyClass = variable.tyClass;
    88 
     96
     97//      newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
    8998        newnode->attr.expr = maybeClone( attr.expr );
    9099        newnode->attr.type = maybeClone( attr.type );
     
    98107void DeclarationNode::print( std::ostream &os, int indent ) const {
    99108        os << string( indent, ' ' );
    100         if ( name == "" ) {
     109        if ( name ) {
     110                os << *name << ": ";
     111        } else {
    101112                os << "unnamed: ";
    102         } else {
    103                 os << name << ": ";
    104113        } // if
    105114
    106115        if ( linkage != LinkageSpec::Cforall ) {
    107                 os << LinkageSpec::toString( linkage ) << " ";
     116                os << LinkageSpec::linkageName( linkage ) << " ";
    108117        } // if
    109118
     
    122131        } // if
    123132
    124         if ( initializer != 0 ) {
     133        if ( initializer ) {
    125134                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    126135                initializer->printOneLine( os );
     
    139148}
    140149
    141 DeclarationNode *DeclarationNode::newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle ) {
    142         DeclarationNode *newnode = new DeclarationNode;
    143         newnode->name = assign_strptr( name );
    144 
     150DeclarationNode * DeclarationNode::newFunction( string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body, bool newStyle ) {
     151        DeclarationNode * newnode = new DeclarationNode;
     152        newnode->name = name;
    145153        newnode->type = new TypeData( TypeData::Function );
    146154        newnode->type->function.params = param;
    147155        newnode->type->function.newStyle = newStyle;
    148156        newnode->type->function.body = body;
    149         typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
     157        // ignore unnamed routine declarations: void p( int (*)(int) );
     158        if ( newnode->name ) {
     159                typedefTable.addToEnclosingScope( *newnode->name, TypedefTable::ID );
     160        } // if
    150161
    151162        if ( body ) {
     
    155166        if ( ret ) {
    156167                newnode->type->base = ret->type;
    157                 ret->type = 0;
     168                ret->type = nullptr;
    158169                delete ret;
    159170        } // if
     
    163174
    164175DeclarationNode * DeclarationNode::newQualifier( Qualifier q ) {
    165         DeclarationNode *newnode = new DeclarationNode;
     176        DeclarationNode * newnode = new DeclarationNode;
    166177        newnode->type = new TypeData();
    167178        newnode->type->qualifiers[ q ] = 1;
     
    169180} // DeclarationNode::newQualifier
    170181
    171 DeclarationNode * DeclarationNode::newForall( DeclarationNode *forall ) {
    172         DeclarationNode *newnode = new DeclarationNode;
     182DeclarationNode * DeclarationNode::newForall( DeclarationNode * forall ) {
     183        DeclarationNode * newnode = new DeclarationNode;
    173184        newnode->type = new TypeData( TypeData::Unknown );
    174185        newnode->type->forall = forall;
     
    177188
    178189DeclarationNode * DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    179         DeclarationNode *newnode = new DeclarationNode;
    180         //switch (sc) {
    181         //      case Inline: newnode->isInline = true; break;
    182         //      case Noreturn: newnode->isNoreturn = true; break;
    183         //      default: newnode->storageClass = sc; break;
    184         //}
     190        DeclarationNode * newnode = new DeclarationNode;
    185191        newnode->storageClass = sc;
    186192        return newnode;
     
    188194
    189195DeclarationNode * DeclarationNode::newBasicType( BasicType bt ) {
    190         DeclarationNode *newnode = new DeclarationNode;
     196        DeclarationNode * newnode = new DeclarationNode;
    191197        newnode->type = new TypeData( TypeData::Basic );
    192198        newnode->type->basictype = bt;
     
    195201
    196202DeclarationNode * DeclarationNode::newComplexType( ComplexType ct ) {
    197         DeclarationNode *newnode = new DeclarationNode;
     203        DeclarationNode * newnode = new DeclarationNode;
    198204        newnode->type = new TypeData( TypeData::Basic );
    199205        newnode->type->complextype = ct;
     
    202208
    203209DeclarationNode * DeclarationNode::newSignedNess( Signedness sn ) {
    204         DeclarationNode *newnode = new DeclarationNode;
     210        DeclarationNode * newnode = new DeclarationNode;
    205211        newnode->type = new TypeData( TypeData::Basic );
    206212        newnode->type->signedness = sn;
     
    209215
    210216DeclarationNode * DeclarationNode::newLength( Length lnth ) {
    211         DeclarationNode *newnode = new DeclarationNode;
     217        DeclarationNode * newnode = new DeclarationNode;
    212218        newnode->type = new TypeData( TypeData::Basic );
    213219        newnode->type->length = lnth;
     
    215221} // DeclarationNode::newLength
    216222
    217 DeclarationNode * DeclarationNode::newFromTypedef( std::string *name ) {
    218         DeclarationNode *newnode = new DeclarationNode;
     223DeclarationNode * DeclarationNode::newFromTypedef( string * name ) {
     224        DeclarationNode * newnode = new DeclarationNode;
    219225        newnode->type = new TypeData( TypeData::SymbolicInst );
    220         newnode->type->symbolic.name = assign_strptr( name );
     226        newnode->type->symbolic.name = name;
    221227        newnode->type->symbolic.isTypedef = true;
    222         newnode->type->symbolic.params = 0;
     228        newnode->type->symbolic.params = nullptr;
    223229        return newnode;
    224230} // DeclarationNode::newFromTypedef
    225231
    226 DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {
    227         DeclarationNode *newnode = new DeclarationNode;
     232DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
     233        DeclarationNode * newnode = new DeclarationNode;
    228234        newnode->type = new TypeData( TypeData::Aggregate );
    229235        newnode->type->aggregate.kind = kind;
    230         newnode->type->aggregate.name = assign_strptr( name );
    231         if ( newnode->type->aggregate.name == "" ) {            // anonymous aggregate ?
    232                 newnode->type->aggregate.name = anonymous.newName();
     236        if ( name ) {
     237                newnode->type->aggregate.name = name;
     238        } else {                                                                                        // anonymous aggregate ?
     239                newnode->type->aggregate.name = new string( anonymous.newName() );
    233240        } // if
    234241        newnode->type->aggregate.actuals = actuals;
     
    238245} // DeclarationNode::newAggregate
    239246
    240 DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) {
    241         DeclarationNode *newnode = new DeclarationNode;
    242         newnode->name = assign_strptr( name );
     247DeclarationNode * DeclarationNode::newEnum( string * name, DeclarationNode * constants ) {
     248        DeclarationNode * newnode = new DeclarationNode;
    243249        newnode->type = new TypeData( TypeData::Enum );
    244         newnode->type->enumeration.name = newnode->name;
    245         if ( newnode->type->enumeration.name == "" ) {          // anonymous enumeration ?
    246                 newnode->type->enumeration.name = DeclarationNode::anonymous.newName();
     250        if ( name ) {
     251                newnode->type->enumeration.name = name;
     252        } else {                                                                                        // anonymous aggregate ?
     253                newnode->type->enumeration.name = new string( anonymous.newName() );
    247254        } // if
    248255        newnode->type->enumeration.constants = constants;
     
    250257} // DeclarationNode::newEnum
    251258
    252 DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
    253         DeclarationNode *newnode = new DeclarationNode;
    254         newnode->name = assign_strptr( name );
     259DeclarationNode * DeclarationNode::newEnumConstant( string * name, ExpressionNode * constant ) {
     260        DeclarationNode * newnode = new DeclarationNode;
     261        newnode->name = name;
    255262        newnode->enumeratorValue.reset( constant );
    256         typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
     263        typedefTable.addToEnclosingScope( *newnode->name, TypedefTable::ID );
    257264        return newnode;
    258265} // DeclarationNode::newEnumConstant
    259266
    260 DeclarationNode *DeclarationNode::newName( std::string *name ) {
    261         DeclarationNode *newnode = new DeclarationNode;
    262         newnode->name = assign_strptr( name );
     267DeclarationNode * DeclarationNode::newName( string * name ) {
     268        DeclarationNode * newnode = new DeclarationNode;
     269        newnode->name = name;
    263270        return newnode;
    264271} // DeclarationNode::newName
    265272
    266 DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
    267         DeclarationNode *newnode = new DeclarationNode;
     273DeclarationNode * DeclarationNode::newFromTypeGen( string * name, ExpressionNode * params ) {
     274        DeclarationNode * newnode = new DeclarationNode;
    268275        newnode->type = new TypeData( TypeData::SymbolicInst );
    269         newnode->type->symbolic.name = assign_strptr( name );
     276        newnode->type->symbolic.name = name;
    270277        newnode->type->symbolic.isTypedef = false;
    271278        newnode->type->symbolic.actuals = params;
     
    273280} // DeclarationNode::newFromTypeGen
    274281
    275 DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
    276         DeclarationNode *newnode = new DeclarationNode;
    277         newnode->name = assign_strptr( name );
    278         newnode->type = new TypeData( TypeData::Variable );
     282DeclarationNode * DeclarationNode::newTypeParam( TypeClass tc, string * name ) {
     283        DeclarationNode * newnode = new DeclarationNode;
     284        newnode->type = nullptr;
     285        assert( ! newnode->name );
     286//      newnode->variable.name = name;
     287        newnode->name = name;
    279288        newnode->variable.tyClass = tc;
    280         newnode->variable.name = newnode->name;
     289        newnode->variable.assertions = nullptr;
    281290        return newnode;
    282291} // DeclarationNode::newTypeParam
    283292
    284 DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
    285         DeclarationNode *newnode = new DeclarationNode;
     293DeclarationNode * DeclarationNode::newTrait( const string * name, DeclarationNode * params, DeclarationNode * asserts ) {
     294        DeclarationNode * newnode = new DeclarationNode;
    286295        newnode->type = new TypeData( TypeData::Aggregate );
     296        newnode->type->aggregate.name = name;
    287297        newnode->type->aggregate.kind = Trait;
    288298        newnode->type->aggregate.params = params;
    289299        newnode->type->aggregate.fields = asserts;
    290         newnode->type->aggregate.name = assign_strptr( name );
    291300        return newnode;
    292301} // DeclarationNode::newTrait
    293302
    294 DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
    295         DeclarationNode *newnode = new DeclarationNode;
     303DeclarationNode * DeclarationNode::newTraitUse( const string * name, ExpressionNode * params ) {
     304        DeclarationNode * newnode = new DeclarationNode;
    296305        newnode->type = new TypeData( TypeData::AggregateInst );
    297306        newnode->type->aggInst.aggregate = new TypeData( TypeData::Aggregate );
    298307        newnode->type->aggInst.aggregate->aggregate.kind = Trait;
    299         newnode->type->aggInst.aggregate->aggregate.name = assign_strptr( name );
     308        newnode->type->aggInst.aggregate->aggregate.name = name;
    300309        newnode->type->aggInst.params = params;
    301310        return newnode;
    302311} // DeclarationNode::newTraitUse
    303312
    304 DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) {
    305         DeclarationNode *newnode = new DeclarationNode;
    306         newnode->name = assign_strptr( name );
     313DeclarationNode * DeclarationNode::newTypeDecl( string * name, DeclarationNode * typeParams ) {
     314        DeclarationNode * newnode = new DeclarationNode;
    307315        newnode->type = new TypeData( TypeData::Symbolic );
    308316        newnode->type->symbolic.isTypedef = false;
    309317        newnode->type->symbolic.params = typeParams;
    310         newnode->type->symbolic.name = newnode->name;
     318        newnode->type->symbolic.name = name;
    311319        return newnode;
    312320} // DeclarationNode::newTypeDecl
    313321
    314 DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) {
    315         DeclarationNode *newnode = new DeclarationNode;
     322DeclarationNode * DeclarationNode::newPointer( DeclarationNode * qualifiers ) {
     323        DeclarationNode * newnode = new DeclarationNode;
    316324        newnode->type = new TypeData( TypeData::Pointer );
    317325        return newnode->addQualifiers( qualifiers );
    318326} // DeclarationNode::newPointer
    319327
    320 DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) {
    321         DeclarationNode *newnode = new DeclarationNode;
     328DeclarationNode * DeclarationNode::newArray( ExpressionNode * size, DeclarationNode * qualifiers, bool isStatic ) {
     329        DeclarationNode * newnode = new DeclarationNode;
    322330        newnode->type = new TypeData( TypeData::Array );
    323331        newnode->type->array.dimension = size;
    324332        newnode->type->array.isStatic = isStatic;
    325         if ( newnode->type->array.dimension == 0 || newnode->type->array.dimension->isExpressionType<ConstantExpr *>() ) {
     333        if ( newnode->type->array.dimension == nullptr || newnode->type->array.dimension->isExpressionType<ConstantExpr * >() ) {
    326334                newnode->type->array.isVarLen = false;
    327335        } else {
     
    331339} // DeclarationNode::newArray
    332340
    333 DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) {
    334         DeclarationNode *newnode = new DeclarationNode;
     341DeclarationNode * DeclarationNode::newVarArray( DeclarationNode * qualifiers ) {
     342        DeclarationNode * newnode = new DeclarationNode;
    335343        newnode->type = new TypeData( TypeData::Array );
    336         newnode->type->array.dimension = 0;
     344        newnode->type->array.dimension = nullptr;
    337345        newnode->type->array.isStatic = false;
    338346        newnode->type->array.isVarLen = true;
     
    340348}
    341349
    342 DeclarationNode *DeclarationNode::newBitfield( ExpressionNode *size ) {
    343         DeclarationNode *newnode = new DeclarationNode;
     350DeclarationNode * DeclarationNode::newBitfield( ExpressionNode * size ) {
     351        DeclarationNode * newnode = new DeclarationNode;
    344352        newnode->bitfieldWidth = size;
    345353        return newnode;
    346354}
    347355
    348 DeclarationNode *DeclarationNode::newTuple( DeclarationNode *members ) {
    349         DeclarationNode *newnode = new DeclarationNode;
     356DeclarationNode * DeclarationNode::newTuple( DeclarationNode * members ) {
     357        DeclarationNode * newnode = new DeclarationNode;
    350358        newnode->type = new TypeData( TypeData::Tuple );
    351359        newnode->type->tuple = members;
     
    353361}
    354362
    355 DeclarationNode *DeclarationNode::newTypeof( ExpressionNode *expr ) {
    356         DeclarationNode *newnode = new DeclarationNode;
     363DeclarationNode * DeclarationNode::newTypeof( ExpressionNode * expr ) {
     364        DeclarationNode * newnode = new DeclarationNode;
    357365        newnode->type = new TypeData( TypeData::Typeof );
    358366        newnode->type->typeexpr = expr;
     
    361369
    362370DeclarationNode * DeclarationNode::newBuiltinType( BuiltinType bt ) {
    363         DeclarationNode *newnode = new DeclarationNode;
     371        DeclarationNode * newnode = new DeclarationNode;
    364372        newnode->type = new TypeData( TypeData::Builtin );
    365373        newnode->builtin = bt;
     
    367375} // DeclarationNode::newBuiltinType
    368376
    369 DeclarationNode *DeclarationNode::newAttr( std::string *name, ExpressionNode *expr ) {
    370         DeclarationNode *newnode = new DeclarationNode;
    371         newnode->type = new TypeData( TypeData::Attr );
    372         newnode->attr.name = assign_strptr( name );
     377DeclarationNode * DeclarationNode::newAttr( string * name, ExpressionNode * expr ) {
     378        DeclarationNode * newnode = new DeclarationNode;
     379        newnode->type = nullptr;
     380//      newnode->attr.name = name;
     381        newnode->name = name;
    373382        newnode->attr.expr = expr;
    374383        return newnode;
    375384}
    376385
    377 DeclarationNode *DeclarationNode::newAttr( std::string *name, DeclarationNode *type ) {
    378         DeclarationNode *newnode = new DeclarationNode;
    379         newnode->type = new TypeData( TypeData::Attr );
    380         newnode->attr.name = assign_strptr( name );
     386DeclarationNode * DeclarationNode::newAttr( string * name, DeclarationNode * type ) {
     387        DeclarationNode * newnode = new DeclarationNode;
     388        newnode->type = nullptr;
     389//      newnode->attr.name = name;
     390        newnode->name = name;
    381391        newnode->attr.type = type;
    382392        return newnode;
     
    389399} // appendError
    390400
    391 void DeclarationNode::checkQualifiers( const TypeData *src, const TypeData *dst ) {
     401void DeclarationNode::checkQualifiers( const TypeData * src, const TypeData * dst ) {
    392402        TypeData::Qualifiers qsrc = src->qualifiers, qdst = dst->qualifiers; // optimization
    393403
     
    401411} // DeclarationNode::checkQualifiers
    402412
    403 void DeclarationNode::checkStorageClasses( DeclarationNode *q ) {
     413void DeclarationNode::checkStorageClasses( DeclarationNode * q ) {
    404414        if ( storageClass != NoStorageClass && q->storageClass != NoStorageClass ) {
    405415                if ( storageClass == q->storageClass ) {                // duplicate qualifier
     
    413423} // DeclarationNode::copyStorageClasses
    414424
    415 DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
     425DeclarationNode * DeclarationNode::copyStorageClasses( DeclarationNode * q ) {
    416426        isInline = isInline || q->isInline;
    417427        isNoreturn = isNoreturn || q->isNoreturn;
     
    424434} // DeclarationNode::copyStorageClasses
    425435
    426 static void addQualifiersToType( TypeData *&src, TypeData *dst ) {
     436static void addQualifiersToType( TypeData *&src, TypeData * dst ) {
    427437        if ( src->forall && dst->kind == TypeData::Function ) {
    428438                if ( dst->forall ) {
     
    431441                        dst->forall = src->forall;
    432442                } // if
    433                 src->forall = 0;
     443                src->forall = nullptr;
    434444        } // if
    435445        if ( dst->base ) {
     
    437447        } else if ( dst->kind == TypeData::Function ) {
    438448                dst->base = src;
    439                 src = 0;
     449                src = nullptr;
    440450        } else {
    441451                dst->qualifiers |= src->qualifiers;
     
    443453} // addQualifiersToType
    444454
    445 DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    446         if ( ! q ) return this;
     455DeclarationNode * DeclarationNode::addQualifiers( DeclarationNode * q ) {
     456        if ( ! q ) { delete q; return this; }
    447457
    448458        checkStorageClasses( q );
    449459        copyStorageClasses( q );
    450460
    451         if ( ! q->type ) { delete q; return this; }
     461        if ( ! q->type ) {
     462                delete q;
     463                return this;
     464        } // if
    452465
    453466        if ( ! type ) {
    454 //              type = new TypeData;
    455                 type = q->type;
     467                type = q->type;                                                                 // reuse this structure
     468                q->type = nullptr;
     469                delete q;
    456470                return this;
    457471        } // if
     
    467481                                type->aggregate.params = q->type->forall;
    468482                                // change implicit typedef from TYPEDEFname to TYPEGENname
    469                                 typedefTable.changeKind( type->aggregate.name, TypedefTable::TG );
     483                                typedefTable.changeKind( *type->aggregate.name, TypedefTable::TG );
    470484                        } else {
    471485                                type->forall = q->type->forall;
    472486                        } // if
    473487                } // if
    474                 q->type->forall = 0;
     488                q->type->forall = nullptr;
    475489        } // if
    476490        delete q;
     
    485499                        dst->forall = src->forall;
    486500                } // if
    487                 src->forall = 0;
     501                src->forall = nullptr;
    488502        } // if
    489503        if ( dst->base ) {
     
    494508                        src->qualifiers |= dst->qualifiers;
    495509                        dst = src;
    496                         src = 0;
     510                        src = nullptr;
    497511                        break;
    498512                  case TypeData::Basic:
     
    504518                                        dst->basictype = src->basictype;
    505519                                } else if ( src->basictype != DeclarationNode::NoBasicType )
    506                                         throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::basicTypeName[ src->basictype ] + " in type: ", src );
     520                                        throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::basicTypeName[ src->basictype ] + " in type: ", src );
    507521
    508522                                if ( dst->complextype == DeclarationNode::NoComplexType ) {
    509523                                        dst->complextype = src->complextype;
    510524                                } else if ( src->complextype != DeclarationNode::NoComplexType )
    511                                         throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::complexTypeName[ src->complextype ] + " in type: ", src );
     525                                        throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::complexTypeName[ src->complextype ] + " in type: ", src );
    512526
    513527                                if ( dst->signedness == DeclarationNode::NoSignedness ) {
    514528                                        dst->signedness = src->signedness;
    515529                                } else if ( src->signedness != DeclarationNode::NoSignedness )
    516                                         throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::signednessName[ src->signedness ] + " in type: ", src );
     530                                        throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::signednessName[ src->signedness ] + " in type: ", src );
    517531
    518532                                if ( dst->length == DeclarationNode::NoLength ) {
     
    521535                                        dst->length = DeclarationNode::LongLong;
    522536                                } else if ( src->length != DeclarationNode::NoLength )
    523                                         throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::lengthName[ src->length ] + " in type: ", src );
     537                                        throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::lengthName[ src->length ] + " in type: ", src );
    524538                        } // if
    525539                        break;
     
    534548                                } // if
    535549                                dst->base->qualifiers |= src->qualifiers;
    536                                 src = 0;
     550                                src = nullptr;
    537551                                break;
    538552                          default:
     
    542556                                        dst->forall = src->forall;
    543557                                } // if
    544                                 src->forall = 0;
     558                                src->forall = nullptr;
    545559                                dst->base = src;
    546                                 src = 0;
     560                                src = nullptr;
    547561                        } // switch
    548562                } // switch
     
    550564}
    551565
    552 DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
     566DeclarationNode * DeclarationNode::addType( DeclarationNode * o ) {
    553567        if ( o ) {
    554568                checkStorageClasses( o );
     
    566580                                        type = o->type;
    567581                                } // if
    568                                 o->type = 0;
     582                                o->type = nullptr;
    569583                        } else {
    570584                                addTypeToType( o->type, type );
     
    584598}
    585599
    586 DeclarationNode *DeclarationNode::addTypedef() {
    587         TypeData *newtype = new TypeData( TypeData::Symbolic );
    588         newtype->symbolic.params = 0;
     600DeclarationNode * DeclarationNode::addTypedef() {
     601        TypeData * newtype = new TypeData( TypeData::Symbolic );
     602        newtype->symbolic.params = nullptr;
    589603        newtype->symbolic.isTypedef = true;
    590         newtype->symbolic.name = name;
     604        newtype->symbolic.name = name ? new string( *name ) : nullptr;
    591605        newtype->base = type;
    592606        type = newtype;
     
    594608}
    595609
    596 DeclarationNode *DeclarationNode::addAssertions( DeclarationNode *assertions ) {
     610DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
     611        if ( variable.tyClass != NoTypeClass ) {
     612                if ( variable.assertions ) {
     613                        variable.assertions->appendList( assertions );
     614                } else {
     615                        variable.assertions = assertions;
     616                } // if
     617                return this;
     618        } // if
     619
    597620        assert( type );
    598621        switch ( type->kind ) {
     
    604627                } // if
    605628                break;
    606           case TypeData::Variable:
    607                 if ( variable.assertions ) {
    608                         variable.assertions->appendList( assertions );
    609                 } else {
    610                         variable.assertions = assertions;
    611                 } // if
    612                 break;
    613629          default:
    614630                assert( false );
     
    618634}
    619635
    620 DeclarationNode *DeclarationNode::addName( std::string *newname ) {
    621         name = assign_strptr( newname );
    622         return this;
    623 }
    624 
    625 DeclarationNode *DeclarationNode::addBitfield( ExpressionNode *size ) {
     636DeclarationNode * DeclarationNode::addName( string * newname ) {
     637        assert( ! name );
     638        name = newname;
     639        return this;
     640}
     641
     642DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
    626643        bitfieldWidth = size;
    627644        return this;
    628645}
    629646
    630 DeclarationNode *DeclarationNode::addVarArgs() {
     647DeclarationNode * DeclarationNode::addVarArgs() {
    631648        assert( type );
    632649        hasEllipsis = true;
     
    634651}
    635652
    636 DeclarationNode *DeclarationNode::addFunctionBody( StatementNode *body ) {
     653DeclarationNode * DeclarationNode::addFunctionBody( StatementNode * body ) {
    637654        assert( type );
    638655        assert( type->kind == TypeData::Function );
    639         assert( type->function.body == 0 );
     656        assert( ! type->function.body );
    640657        type->function.body = body;
    641658        type->function.hasBody = true;
     
    643660}
    644661
    645 DeclarationNode *DeclarationNode::addOldDeclList( DeclarationNode *list ) {
     662DeclarationNode * DeclarationNode::addOldDeclList( DeclarationNode * list ) {
    646663        assert( type );
    647664        assert( type->kind == TypeData::Function );
    648         assert( type->function.oldDeclList == 0 );
     665        assert( ! type->function.oldDeclList );
    649666        type->function.oldDeclList = list;
    650667        return this;
    651668}
    652669
    653 static void setBase( TypeData *&type, TypeData *newType ) {
     670static void setBase( TypeData *&type, TypeData * newType ) {
    654671        if ( type ) {
    655                 TypeData *prevBase = type;
    656                 TypeData *curBase = type->base;
    657                 while ( curBase != 0 ) {
     672                TypeData * prevBase = type;
     673                TypeData * curBase = type->base;
     674                while ( curBase != nullptr ) {
    658675                        prevBase = curBase;
    659676                        curBase = curBase->base;
     
    665682}
    666683
    667 DeclarationNode *DeclarationNode::addPointer( DeclarationNode *p ) {
     684DeclarationNode * DeclarationNode::addPointer( DeclarationNode * p ) {
    668685        if ( p ) {
    669686                assert( p->type->kind == TypeData::Pointer );
    670687                setBase( type, p->type );
    671                 p->type = 0;
     688                p->type = nullptr;
    672689                delete p;
    673690        } // if
     
    675692}
    676693
    677 DeclarationNode *DeclarationNode::addArray( DeclarationNode *a ) {
     694DeclarationNode * DeclarationNode::addArray( DeclarationNode * a ) {
    678695        if ( a ) {
    679696                assert( a->type->kind == TypeData::Array );
    680697                setBase( type, a->type );
    681                 a->type = 0;
     698                a->type = nullptr;
    682699                delete a;
    683700        } // if
     
    685702}
    686703
    687 DeclarationNode *DeclarationNode::addNewPointer( DeclarationNode *p ) {
     704DeclarationNode * DeclarationNode::addNewPointer( DeclarationNode * p ) {
    688705        if ( p ) {
    689706                assert( p->type->kind == TypeData::Pointer );
     
    703720                                p->type->base = type;
    704721                        } // switch
    705                         type = 0;
     722                        type = nullptr;
    706723                } // if
    707724                delete this;
     
    712729}
    713730
    714 static TypeData *findLast( TypeData *a ) {
     731static TypeData * findLast( TypeData * a ) {
    715732        assert( a );
    716         TypeData *cur = a;
     733        TypeData * cur = a;
    717734        while ( cur->base ) {
    718735                cur = cur->base;
     
    721738}
    722739
    723 DeclarationNode *DeclarationNode::addNewArray( DeclarationNode *a ) {
     740DeclarationNode * DeclarationNode::addNewArray( DeclarationNode * a ) {
    724741        if ( a ) {
    725742                assert( a->type->kind == TypeData::Array );
    726                 TypeData *lastArray = findLast( a->type );
     743                TypeData * lastArray = findLast( a->type );
    727744                if ( type ) {
    728745                        switch ( type->kind ) {
     
    739756                                lastArray->base = type;
    740757                        } // switch
    741                         type = 0;
     758                        type = nullptr;
    742759                } // if
    743760                delete this;
     
    748765}
    749766
    750 DeclarationNode *DeclarationNode::addParamList( DeclarationNode *params ) {
    751         TypeData *ftype = new TypeData( TypeData::Function );
     767DeclarationNode * DeclarationNode::addParamList( DeclarationNode * params ) {
     768        TypeData * ftype = new TypeData( TypeData::Function );
    752769        ftype->function.params = params;
    753770        setBase( type, ftype );
     
    755772}
    756773
    757 static TypeData *addIdListToType( TypeData *type, DeclarationNode *ids ) {
     774static TypeData * addIdListToType( TypeData * type, DeclarationNode * ids ) {
    758775        if ( type ) {
    759776                if ( type->kind != TypeData::Function ) {
     
    764781                return type;
    765782        } else {
    766                 TypeData *newtype = new TypeData( TypeData::Function );
     783                TypeData * newtype = new TypeData( TypeData::Function );
    767784                newtype->function.idList = ids;
    768785                return newtype;
    769786        } // if
    770 }
    771 
    772 DeclarationNode *DeclarationNode::addIdList( DeclarationNode *ids ) {
     787} // addIdListToType
     788
     789DeclarationNode * DeclarationNode::addIdList( DeclarationNode * ids ) {
    773790        type = addIdListToType( type, ids );
    774791        return this;
    775792}
    776793
    777 DeclarationNode *DeclarationNode::addInitializer( InitializerNode *init ) {
    778         //assert
     794DeclarationNode * DeclarationNode::addInitializer( InitializerNode * init ) {
    779795        initializer = init;
    780796        return this;
    781797}
    782798
    783 DeclarationNode *DeclarationNode::cloneBaseType( string *newName ) {
    784         DeclarationNode *newnode = new DeclarationNode;
    785         TypeData *srcType = type;
    786         while ( srcType->base ) {
    787                 srcType = srcType->base;
    788         } // while
    789         newnode->type = maybeClone( srcType );
    790         if ( newnode->type->kind == TypeData::AggregateInst ) {
    791                 // don't duplicate members
    792                 if ( newnode->type->aggInst.aggregate->kind == TypeData::Enum ) {
    793                         delete newnode->type->aggInst.aggregate->enumeration.constants;
    794                         newnode->type->aggInst.aggregate->enumeration.constants = 0;
    795                 } else {
    796                         assert( newnode->type->aggInst.aggregate->kind == TypeData::Aggregate );
    797                         delete newnode->type->aggInst.aggregate->aggregate.fields;
    798                         newnode->type->aggInst.aggregate->aggregate.fields = 0;
    799                 } // if
    800         } // if
    801         newnode->type->forall = maybeClone( type->forall );
    802         assert( storageClass == NoStorageClass );
    803         newnode->copyStorageClasses( this );
    804         newnode->name = assign_strptr( newName );
    805         return newnode;
    806 }
    807 
    808 DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
    809         if ( o ) {
    810                 o->copyStorageClasses( this );
    811                 if ( type ) {
    812                         TypeData *srcType = type;
    813                         while ( srcType->base ) {
    814                                 srcType = srcType->base;
    815                         } // while
    816                         TypeData *newType = srcType->clone();
    817                         if ( newType->kind == TypeData::AggregateInst ) {
    818                                 // don't duplicate members
    819                                 if ( newType->aggInst.aggregate->kind == TypeData::Enum ) {
    820                                         delete newType->aggInst.aggregate->enumeration.constants;
    821                                         newType->aggInst.aggregate->enumeration.constants = 0;
    822                                 } else {
    823                                         assert( newType->aggInst.aggregate->kind == TypeData::Aggregate );
    824                                         delete newType->aggInst.aggregate->aggregate.fields;
    825                                         newType->aggInst.aggregate->aggregate.fields = 0;
    826                                 } // if
    827                         } // if
    828                         newType->forall = maybeClone( type->forall );
    829                         if ( ! o->type ) {
    830                                 o->type = newType;
    831                         } else {
    832                                 addTypeToType( newType, o->type );
    833                                 delete newType;
    834                         } // if
    835                 } // if
    836         } // if
    837         return o;
    838 }
    839 
    840 DeclarationNode *DeclarationNode::cloneType( string *newName ) {
    841         DeclarationNode *newnode = new DeclarationNode;
     799DeclarationNode * DeclarationNode::cloneType( string * newName ) {
     800        DeclarationNode * newnode = new DeclarationNode;
    842801        newnode->type = maybeClone( type );
    843802        assert( storageClass == NoStorageClass );
    844803        newnode->copyStorageClasses( this );
    845         newnode->name = assign_strptr( newName );
    846         return newnode;
    847 }
    848 
    849 DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
    850         if ( o ) {
    851                 assert( storageClass == NoStorageClass );
    852                 o->copyStorageClasses( this );
    853                 if ( type ) {
    854                         TypeData *newType = type->clone();
    855                         if ( ! o->type ) {
    856                                 o->type = newType;
     804        assert( newName );
     805        newnode->name = newName;
     806        return newnode;
     807}
     808
     809DeclarationNode * DeclarationNode::cloneBaseType( DeclarationNode * o ) {
     810        if ( ! o ) return nullptr;
     811
     812        o->copyStorageClasses( this );
     813        if ( type ) {
     814                TypeData * srcType = type;
     815
     816                while ( srcType->base ) {
     817                        srcType = srcType->base;
     818                } // while
     819
     820                TypeData * newType = srcType->clone();
     821                if ( newType->kind == TypeData::AggregateInst ) {
     822                        // don't duplicate members
     823                        if ( newType->aggInst.aggregate->kind == TypeData::Enum ) {
     824                                delete newType->aggInst.aggregate->enumeration.constants;
     825                                newType->aggInst.aggregate->enumeration.constants = nullptr;
    857826                        } else {
    858                                 addTypeToType( newType, o->type );
    859                                 delete newType;
     827                                assert( newType->aggInst.aggregate->kind == TypeData::Aggregate );
     828                                delete newType->aggInst.aggregate->aggregate.fields;
     829                                newType->aggInst.aggregate->aggregate.fields = nullptr;
    860830                        } // if
    861831                } // if
    862         } // if
    863         delete o;
     832
     833                newType->forall = maybeClone( type->forall );
     834                if ( ! o->type ) {
     835                        o->type = newType;
     836                } else {
     837                        addTypeToType( newType, o->type );
     838                        delete newType;
     839                } // if
     840        } // if
    864841        return o;
    865842}
    866843
    867 DeclarationNode *DeclarationNode::extractAggregate() const {
     844DeclarationNode * DeclarationNode::extractAggregate() const {
    868845        if ( type ) {
    869                 TypeData *ret = typeextractAggregate( type );
     846                TypeData * ret = typeextractAggregate( type );
    870847                if ( ret ) {
    871                         DeclarationNode *newnode = new DeclarationNode;
     848                        DeclarationNode * newnode = new DeclarationNode;
    872849                        newnode->type = ret;
    873850                        return newnode;
    874851                } // if
    875852        } // if
    876         return 0;
    877 }
    878 
    879 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
     853        return nullptr;
     854}
     855
     856void buildList( const DeclarationNode * firstNode, std::list< Declaration * > &outputList ) {
    880857        SemanticError errors;
    881858        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
    882         const DeclarationNode *cur = firstNode;
     859        const DeclarationNode * cur = firstNode;
     860
    883861        while ( cur ) {
    884862                try {
    885                         if ( DeclarationNode *extr = cur->extractAggregate() ) {
     863                        if ( DeclarationNode * extr = cur->extractAggregate() ) {
    886864                                // handle the case where a structure declaration is contained within an object or type declaration
    887                                 Declaration *decl = extr->build();
     865                                Declaration * decl = extr->build();
    888866                                if ( decl ) {
    889                                         *out++ = decl;
     867                                        * out++ = decl;
    890868                                } // if
    891869                                delete extr;
    892870                        } // if
    893                         Declaration *decl = cur->build();
     871
     872                        Declaration * decl = cur->build();
    894873                        if ( decl ) {
    895                                 *out++ = decl;
     874                                * out++ = decl;
    896875                        } // if
    897876                } catch( SemanticError &e ) {
     
    900879                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    901880        } // while
     881
    902882        if ( ! errors.isEmpty() ) {
    903883                throw errors;
    904884        } // if
    905 }
    906 
    907 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
     885} // buildList
     886
     887void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > &outputList ) {
    908888        SemanticError errors;
    909889        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
    910         const DeclarationNode *cur = firstNode;
     890        const DeclarationNode * cur = firstNode;
    911891        while ( cur ) {
    912892                try {
    913                         Declaration *decl = cur->build();
     893                        Declaration * decl = cur->build();
    914894                        if ( decl ) {
    915                                 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    916                                         *out++ = dwt;
    917                                 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
    918                                         StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    919                                         *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
     895                                if ( DeclarationWithType * dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
     896                                        * out++ = dwt;
     897                                } else if ( StructDecl * agg = dynamic_cast< StructDecl * >( decl ) ) {
     898                                        StructInstType * inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
     899                                        * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
    920900                                        delete agg;
    921                                 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
    922                                         UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    923                                         *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
     901                                } else if ( UnionDecl * agg = dynamic_cast< UnionDecl * >( decl ) ) {
     902                                        UnionInstType * inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
     903                                        * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
    924904                                } // if
    925905                        } // if
     
    932912                throw errors;
    933913        } // if
    934 }
    935 
    936 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
     914} // buildList
     915
     916void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > &outputList ) {
    937917        SemanticError errors;
    938918        std::back_insert_iterator< std::list< Type * > > out( outputList );
    939         const DeclarationNode *cur = firstNode;
     919        const DeclarationNode * cur = firstNode;
     920
    940921        while ( cur ) {
    941922                try {
    942                         *out++ = cur->buildType();
     923                        * out++ = cur->buildType();
    943924                } catch( SemanticError &e ) {
    944925                        errors.append( e );
     
    946927                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    947928        } // while
     929
    948930        if ( ! errors.isEmpty() ) {
    949931                throw errors;
    950932        } // if
    951 }
    952 
    953 Declaration *DeclarationNode::build() const {
     933} // buildTypeList
     934
     935Declaration * DeclarationNode::build() const {
    954936        if ( ! error.empty() ) throw SemanticError( error + " in declaration of ", this );
     937
     938//      if ( variable.name ) {
     939        if ( variable.tyClass != NoTypeClass ) {
     940                static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
     941//              TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     942                TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     943                buildList( variable.assertions, ret->get_assertions() );
     944                return ret;
     945        } // if
     946
    955947        if ( type ) {
    956                 if ( type->kind == TypeData::Variable ) {
    957                         static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    958                         TypeDecl * ret = new TypeDecl( variable.name, DeclarationNode::NoStorageClass, 0, kindMap[ variable.tyClass ] );
    959                         buildList( variable.assertions, ret->get_assertions() );
    960                         return ret;
    961                 } else {
    962                         return buildDecl( type, name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    963                 } // if
    964         } // if
     948                return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     949        } // if
     950
    965951        if ( ! isInline && ! isNoreturn ) {
    966                 return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    967         } // if
     952                assertf( name, "ObjectDecl are assumed to have names\n" );
     953                return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     954        } // if
     955
    968956        throw SemanticError( "invalid function specifier ", this );
    969957}
    970958
    971 Type *DeclarationNode::buildType() const {
     959Type * DeclarationNode::buildType() const {
    972960        assert( type );
     961
     962        if ( attr.expr ) {
     963//              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
     964                return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
     965        } else if ( attr.type ) {
     966//              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
     967                return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
     968        } // if
    973969
    974970        switch ( type->kind ) {
    975971          case TypeData::Enum:
    976                 return new EnumInstType( buildQualifiers( type ), type->enumeration.name );
     972                return new EnumInstType( buildQualifiers( type ), *type->enumeration.name );
    977973          case TypeData::Aggregate: {
    978                   ReferenceToType *ret;
     974                  ReferenceToType * ret;
    979975                  switch ( type->aggregate.kind ) {
    980976                        case DeclarationNode::Struct:
    981                           ret = new StructInstType( buildQualifiers( type ), type->aggregate.name );
     977                          ret = new StructInstType( buildQualifiers( type ), *type->aggregate.name );
    982978                          break;
    983979                        case DeclarationNode::Union:
    984                           ret = new UnionInstType( buildQualifiers( type ), type->aggregate.name );
     980                          ret = new UnionInstType( buildQualifiers( type ), *type->aggregate.name );
    985981                          break;
    986982                        case DeclarationNode::Trait:
    987                           ret = new TraitInstType( buildQualifiers( type ), type->aggregate.name );
     983                          ret = new TraitInstType( buildQualifiers( type ), *type->aggregate.name );
    988984                          break;
    989985                        default:
     
    994990          }
    995991          case TypeData::Symbolic: {
    996                   TypeInstType *ret = new TypeInstType( buildQualifiers( type ), type->symbolic.name, false );
     992                  TypeInstType * ret = new TypeInstType( buildQualifiers( type ), *type->symbolic.name, false );
    997993                  buildList( type->symbolic.actuals, ret->get_parameters() );
    998                   return ret;
    999           }
    1000           case TypeData::Attr: {
    1001                   assert( type->kind == TypeData::Attr );
    1002                   // assert( type->attr );
    1003                   AttrType * ret;
    1004                   if ( attr.expr ) {
    1005                           ret = new AttrType( buildQualifiers( type ), attr.name, attr.expr->build() );
    1006                   } else {
    1007                           assert( attr.type );
    1008                           ret = new AttrType( buildQualifiers( type ), attr.name, attr.type->buildType() );
    1009                   } // if
    1010994                  return ret;
    1011995          }
  • src/Parser/ExpressionNode.cc

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 25 21:39:40 2016
    13 // Update Count     : 503
     12// Last Modified On : Fri Sep 16 16:27:44 2016
     13// Update Count     : 508
    1414//
    1515
     
    3131
    3232using namespace std;
    33 
    34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    3533
    3634//##############################################################################
  • src/Parser/InitializerNode.cc

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 18:27:02 2016
    13 // Update Count     : 20
     12// Last Modified On : Sat Oct  1 23:09:51 2016
     13// Update Count     : 21
    1414//
    1515
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25         : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     25                : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    2727                kids = dynamic_cast< InitializerNode * >( get_next() );
     
    3232
    3333InitializerNode::InitializerNode( InitializerNode *init, bool aggrp, ExpressionNode *des )
    34         : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     34                : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    3636                set_last( init );
     
    7979
    8080Initializer *InitializerNode::build() const {
    81         // if ( get_expression() == 0 ) return 0;  // XXX (?)
    82 
    8381        if ( aggregate ) {
    84                 //assert( next_init() != 0 );
    85 
    8682                std::list< Initializer * > initlist;
    8783                buildList< Initializer, InitializerNode >( next_init(), initlist );
  • src/Parser/LinkageSpec.cc

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 13:22:09 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 21 12:32:53 2016
    13 // Update Count     : 17
     12// Last Modified On : Sun Oct  2 23:16:21 2016
     13// Update Count     : 23
    1414//
    1515
     
    1717#include <string>
    1818#include <cassert>
     19using namespace std;
    1920
    2021#include "LinkageSpec.h"
    2122#include "Common/SemanticError.h"
    2223
    23 LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) {
    24         std::unique_ptr<const std::string> guard(&spec);                // allocated by lexer
    25         if ( spec == "\"Cforall\"" ) {
     24LinkageSpec::Spec LinkageSpec::linkageCheck( const string * spec ) {
     25        unique_ptr<const string> guard( spec ); // allocated by lexer
     26        if ( *spec == "\"Cforall\"" ) {
    2627                return Cforall;
    27         } else if ( spec == "\"C\"" ) {
     28        } else if ( *spec == "\"C\"" ) {
    2829                return C;
    2930        } else {
    30                 throw SemanticError( "Invalid linkage specifier " + spec );
     31                throw SemanticError( "Invalid linkage specifier " + *spec );
    3132        } // if
    3233}
    3334
    34 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
    35         assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs );
     35string LinkageSpec::linkageName( LinkageSpec::Spec linkage ) {
     36        assert( 0 <= linkage && linkage < LinkageSpec::NoOfSpecs );
    3637        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
    3738                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     
    4142
    4243bool LinkageSpec::isDecoratable( Spec spec ) {
    43         assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     44        assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
    4445        static bool decoratable[LinkageSpec::NoOfSpecs] = {
    4546                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     
    5051
    5152bool LinkageSpec::isGeneratable( Spec spec ) {
    52         assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     53        assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
    5354        static bool generatable[LinkageSpec::NoOfSpecs] = {
    5455                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
  • src/Parser/LinkageSpec.h

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 13:24:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 20 19:22:23 2016
    13 // Update Count     : 8
     12// Last Modified On : Sat Oct  1 23:03:17 2016
     13// Update Count     : 11
    1414//
    1515
     
    2929        };
    3030 
    31         static Spec fromString( const std::string & );
    32         static std::string toString( Spec );
     31        static Spec linkageCheck( const std::string * );
     32        static std::string linkageName( Spec );
    3333 
    3434        static bool isDecoratable( Spec );
  • src/Parser/ParseNode.cc

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 17 23:14:16 2016
    13 // Update Count     : 126
     12// Last Modified On : Sat Oct  1 23:10:43 2016
     13// Update Count     : 127
    1414//
    1515
     
    2020
    2121std::ostream & operator<<( std::ostream & out, const ParseNode * node ) {
    22   node->print( out );
    23   return out;
     22        node->print( out );
     23        return out;
    2424}
    2525
  • src/Parser/ParseNode.h

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 12 08:00:05 2016
    13 // Update Count     : 603
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 636
    1414//
    1515
     
    4141  public:
    4242        ParseNode() {};
    43         ParseNode( const std::string * name ) : name( * name ) { assert( false ); delete name; }
    44         ParseNode( const std::string &name ) : name( name ) { assert( false ); }
    45         virtual ~ParseNode() { delete next; };
     43        virtual ~ParseNode() { delete next; delete name; };
    4644        virtual ParseNode * clone() const = 0;
    4745
    4846        ParseNode * get_next() const { return next; }
    4947        ParseNode * set_next( ParseNode * newlink ) { next = newlink; return this; }
     48
    5049        ParseNode * get_last() {
    5150                ParseNode * current;
    52                 for ( current = this; current->get_next() != 0; current = current->get_next() );
     51                for ( current = this; current->get_next() != nullptr; current = current->get_next() );
    5352                return current;
    5453        }
    5554        ParseNode * set_last( ParseNode * newlast ) {
    56                 if ( newlast != 0 ) get_last()->set_next( newlast );
     55                if ( newlast != nullptr ) get_last()->set_next( newlast );
    5756                return this;
    5857        }
    59 
    60         const std::string &get_name() const { return name; }
    61         void set_name( const std::string &newValue ) { name = newValue; }
    6258
    6359        virtual void print( std::ostream &os, int indent = 0 ) const {}
    6460        virtual void printList( std::ostream &os, int indent = 0 ) const {}
    65   private:
     61
    6662        static int indent_by;
    6763
    6864        ParseNode * next = nullptr;
    69         std::string name;
     65        std::string * name = nullptr;
    7066}; // ParseNode
    7167
     
    7470class InitializerNode : public ParseNode {
    7571  public:
    76         InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode * des = 0 );
    77         InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = 0 );
     72        InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode * des = nullptr );
     73        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = nullptr );
    7874        ~InitializerNode();
    7975        virtual InitializerNode * clone() const { assert( false ); return nullptr; }
     
    106102  public:
    107103        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
    108         ExpressionNode( Expression * expr, const std::string * name ) : ParseNode( name ), expr( expr ) {}
    109104        ExpressionNode( const ExpressionNode &other );
    110105        virtual ~ExpressionNode() {}
     
    183178Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node );
    184179Expression * build_attrtype( NameExpr * var, DeclarationNode * decl_node );
    185 Expression * build_tuple( ExpressionNode * expr_node = 0 );
     180Expression * build_tuple( ExpressionNode * expr_node = nullptr );
    186181Expression * build_func( ExpressionNode * function, ExpressionNode * expr_node );
    187182Expression * build_range( ExpressionNode * low, ExpressionNode * high );
     
    203198        enum Signedness { Signed, Unsigned, NoSignedness };
    204199        enum Length { Short, Long, LongLong, NoLength };
    205         enum Aggregate { Struct, Union, Trait };
    206         enum TypeClass { Otype, Dtype, Ftype };
     200        enum Aggregate { Struct, Union, Trait, NoAggregate };
     201        enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
    207202        enum BuiltinType { Valist };
    208203
     
    219214        static DeclarationNode * newFunction( std::string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body, bool newStyle = false );
    220215        static DeclarationNode * newQualifier( Qualifier );
    221         static DeclarationNode * newForall( DeclarationNode *);
     216        static DeclarationNode * newForall( DeclarationNode * );
    222217        static DeclarationNode * newStorageClass( StorageClass );
    223218        static DeclarationNode * newBasicType( BasicType );
     
    226221        static DeclarationNode * newLength( Length lnth );
    227222        static DeclarationNode * newBuiltinType( BuiltinType );
    228         static DeclarationNode * newFromTypedef( std::string *);
     223        static DeclarationNode * newFromTypedef( std::string * );
    229224        static DeclarationNode * newAggregate( Aggregate kind, const std::string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body );
    230225        static DeclarationNode * newEnum( std::string * name, DeclarationNode * constants );
    231226        static DeclarationNode * newEnumConstant( std::string * name, ExpressionNode * constant );
    232         static DeclarationNode * newName( std::string *);
     227        static DeclarationNode * newName( std::string * );
    233228        static DeclarationNode * newFromTypeGen( std::string *, ExpressionNode * params );
    234         static DeclarationNode * newTypeParam( TypeClass, std::string *);
    235         static DeclarationNode * newTrait( std::string * name, DeclarationNode * params, DeclarationNode * asserts );
    236         static DeclarationNode * newTraitUse( std::string * name, ExpressionNode * params );
     229        static DeclarationNode * newTypeParam( TypeClass, std::string * );
     230        static DeclarationNode * newTrait( const std::string * name, DeclarationNode * params, DeclarationNode * asserts );
     231        static DeclarationNode * newTraitUse( const std::string * name, ExpressionNode * params );
    237232        static DeclarationNode * newTypeDecl( std::string * name, DeclarationNode * typeParams );
    238233        static DeclarationNode * newPointer( DeclarationNode * qualifiers );
     
    249244        DeclarationNode * clone() const;
    250245
    251         DeclarationNode * addQualifiers( DeclarationNode *);
     246        DeclarationNode * addQualifiers( DeclarationNode * );
    252247        void checkQualifiers( const TypeData *, const TypeData * );
    253         void checkStorageClasses( DeclarationNode *q );
    254         DeclarationNode * copyStorageClasses( DeclarationNode *);
    255         DeclarationNode * addType( DeclarationNode *);
     248        void checkStorageClasses( DeclarationNode * );
     249        DeclarationNode * copyStorageClasses( DeclarationNode * );
     250        DeclarationNode * addType( DeclarationNode * );
    256251        DeclarationNode * addTypedef();
    257         DeclarationNode * addAssertions( DeclarationNode *);
    258         DeclarationNode * addName( std::string *);
     252        DeclarationNode * addAssertions( DeclarationNode * );
     253        DeclarationNode * addName( std::string * );
    259254        DeclarationNode * addBitfield( ExpressionNode * size );
    260255        DeclarationNode * addVarArgs();
     
    270265
    271266        DeclarationNode * cloneType( std::string * newName );
    272         DeclarationNode * cloneType( DeclarationNode * existing );
    273         DeclarationNode * cloneType( int ) { return cloneType( ( std::string *)0 ); }
    274         DeclarationNode * cloneBaseType( std::string * newName );
    275267        DeclarationNode * cloneBaseType( DeclarationNode * newdecl );
    276268
     
    286278
    287279        bool get_hasEllipsis() const;
    288         const std::string &get_name() const { return name; }
    289280        LinkageSpec::Spec get_linkage() const { return linkage; }
    290281        DeclarationNode * extractAggregate() const;
     
    295286        DeclarationNode * set_extension( bool exten ) { extension = exten; return this; }
    296287  public:
    297         // StorageClass buildStorageClass() const;
    298         // bool buildFuncSpecifier( StorageClass key ) const;
    299 
    300288        struct Variable_t {
     289//              const std::string * name;
    301290                DeclarationNode::TypeClass tyClass;
    302                 std::string name;
    303291                DeclarationNode * assertions;
    304292        };
     
    306294
    307295        struct Attr_t {
    308                 std::string name;
     296//              const std::string * name;
    309297                ExpressionNode * expr;
    310298                DeclarationNode * type;
     
    315303
    316304        TypeData * type;
    317         std::string name;
    318305        StorageClass storageClass;
    319306        bool isInline, isNoreturn;
     
    331318
    332319Type * buildType( TypeData * type );
    333 //Type::Qualifiers buildQualifiers( const TypeData::Qualifiers & qualifiers );
    334320
    335321static inline Type * maybeMoveBuildType( const DeclarationNode * orig ) {
     
    393379Statement * build_finally( StatementNode * stmt );
    394380Statement * build_compound( StatementNode * first );
    395 Statement * build_asmstmt( bool voltile, ConstantExpr * instruction, ExpressionNode * output = 0, ExpressionNode * input = 0, ExpressionNode * clobber = 0, LabelNode * gotolabels = 0 );
     381Statement * build_asmstmt( bool voltile, ConstantExpr * instruction, ExpressionNode * output = nullptr, ExpressionNode * input = nullptr, ExpressionNode * clobber = nullptr, LabelNode * gotolabels = nullptr );
    396382
    397383//##############################################################################
  • src/Parser/TypeData.cc

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 12 21:11:22 2016
    13 // Update Count     : 377
     12// Last Modified On : Sat Sep 24 11:14:26 2016
     13// Update Count     : 415
    1414//
    1515
     
    2424#include "SynTree/Statement.h"
    2525#include "SynTree/Initializer.h"
    26 
    27 TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) {
     26using namespace std;
     27
     28TypeData::TypeData( Kind k ) : kind( k ), base( nullptr ), forall( nullptr ) {
    2829        switch ( kind ) {
    2930          case Unknown:
     
    3738          case Array:
    3839                // array = new Array_t;
    39                 array.dimension = 0;
     40                array.dimension = nullptr;
    4041                array.isVarLen = false;
    4142                array.isStatic = false;
     
    4344          case Function:
    4445                // function = new Function_t;
    45                 function.params = 0;
    46                 function.idList = 0;
    47                 function.oldDeclList = 0;
    48                 function.body = 0;
     46                function.params = nullptr;
     47                function.idList = nullptr;
     48                function.oldDeclList = nullptr;
     49                function.body = nullptr;
    4950                function.hasBody = false;
    5051                function.newStyle = false;
     
    5253          case Aggregate:
    5354                // aggregate = new Aggregate_t;
    54                 aggregate.params = 0;
    55                 aggregate.actuals = 0;
    56                 aggregate.fields = 0;
     55                aggregate.name = nullptr;
     56                aggregate.params = nullptr;
     57                aggregate.actuals = nullptr;
     58                aggregate.fields = nullptr;
    5759                break;
    5860          case AggregateInst:
    5961                // aggInst = new AggInst_t;
    60                 aggInst.aggregate = 0;
    61                 aggInst.params = 0;
     62                aggInst.aggregate = nullptr;
     63                aggInst.params = nullptr;
    6264                break;
    6365          case Enum:
    6466                // enumeration = new Enumeration_t;
    65                 enumeration.constants = 0;
     67                enumeration.name = nullptr;
     68                enumeration.constants = nullptr;
    6669                break;
    6770          case Symbolic:
    6871          case SymbolicInst:
    6972                // symbolic = new Symbolic_t;
    70                 symbolic.params = 0;
    71                 symbolic.actuals = 0;
    72                 symbolic.assertions = 0;
    73                 break;
    74           case Variable:
    75                 // variable = new Variable_t;
    76                 // variable.tyClass = DeclarationNode::Type;
    77                 // variable.assertions = 0;
     73                symbolic.name = nullptr;
     74                symbolic.params = nullptr;
     75                symbolic.actuals = nullptr;
     76                symbolic.assertions = nullptr;
    7877                break;
    7978          case Tuple:
     
    8483                // typeexpr = new Typeof_t;
    8584                typeexpr = nullptr;
    86                 break;
    87           case Attr:
    88                 // attr = new Attr_t;
    89                 // attr.expr = nullptr;
    90                 // attr.type = nullptr;
    9185                break;
    9286          case Builtin:
     
    121115                break;
    122116          case Aggregate:
     117                delete aggregate.name;
    123118                delete aggregate.params;
    124119                delete aggregate.actuals;
     
    132127                break;
    133128          case Enum:
     129                delete enumeration.name;
    134130                delete enumeration.constants;
    135131                // delete enumeration;
     
    137133          case Symbolic:
    138134          case SymbolicInst:
     135                delete symbolic.name;
    139136                delete symbolic.params;
    140137                delete symbolic.actuals;
     
    142139                // delete symbolic;
    143140                break;
    144           case Variable:
    145                 // delete variable.assertions;
    146                 // delete variable;
    147                 break;
    148141          case Tuple:
    149142                // delete tuple->members;
     
    153146                // delete typeexpr->expr;
    154147                delete typeexpr;
    155                 break;
    156           case Attr:
    157                 // delete attr.expr;
    158                 // delete attr.type;
    159                 // delete attr;
    160148                break;
    161149          case Builtin:
     
    197185                break;
    198186          case Aggregate:
     187                newtype->aggregate.name = aggregate.name ? new string( *aggregate.name ) : nullptr;
    199188                newtype->aggregate.params = maybeClone( aggregate.params );
    200189                newtype->aggregate.actuals = maybeClone( aggregate.actuals );
    201190                newtype->aggregate.fields = maybeClone( aggregate.fields );
    202                 newtype->aggregate.name = aggregate.name;
    203191                newtype->aggregate.kind = aggregate.kind;
    204192                newtype->aggregate.body = aggregate.body;
     
    209197                break;
    210198          case Enum:
    211                 newtype->enumeration.name = enumeration.name;
     199                newtype->enumeration.name = enumeration.name ? new string( *enumeration.name ) : nullptr;
    212200                newtype->enumeration.constants = maybeClone( enumeration.constants );
    213201                break;
    214202          case Symbolic:
    215203          case SymbolicInst:
     204                newtype->symbolic.name = symbolic.name ? new string( *symbolic.name ) : nullptr;
    216205                newtype->symbolic.params = maybeClone( symbolic.params );
    217206                newtype->symbolic.actuals = maybeClone( symbolic.actuals );
    218207                newtype->symbolic.assertions = maybeClone( symbolic.assertions );
    219208                newtype->symbolic.isTypedef = symbolic.isTypedef;
    220                 newtype->symbolic.name = symbolic.name;
    221                 break;
    222           case Variable:
    223                 assert( false );
    224                 // newtype->variable.assertions = maybeClone( variable.assertions );
    225                 // newtype->variable.name = variable.name;
    226                 // newtype->variable.tyClass = variable.tyClass;
    227209                break;
    228210          case Tuple:
     
    231213          case Typeof:
    232214                newtype->typeexpr = maybeClone( typeexpr );
    233                 break;
    234           case Attr:
    235                 assert( false );
    236                 // newtype->attr.expr = maybeClone( attr.expr );
    237                 // newtype->attr.type = maybeClone( attr.type );
    238215                break;
    239216          case Builtin:
     
    245222} // TypeData::clone
    246223
    247 void TypeData::print( std::ostream &os, int indent ) const {
    248         using std::endl;
    249         using std::string;
    250 
     224void TypeData::print( ostream &os, int indent ) const {
    251225        for ( int i = 0; i < DeclarationNode::NoQualifier; i += 1 ) {
    252226                if ( qualifiers[i] ) os << DeclarationNode::qualifierName[ i ] << ' ';
     
    326300                break;
    327301          case Aggregate:
    328                 os << DeclarationNode::aggregateName[ aggregate.kind ] << ' ' << aggregate.name << endl;
     302                os << DeclarationNode::aggregateName[ aggregate.kind ] << ' ' << *aggregate.name << endl;
    329303                if ( aggregate.params ) {
    330304                        os << string( indent + 2, ' ' ) << "with type parameters " << endl;
     
    363337                break;
    364338          case SymbolicInst:
    365                 os << "instance of type " << symbolic.name;
     339                os << "instance of type " << *symbolic.name;
    366340                if ( symbolic.actuals ) {
    367341                        os << " with parameters" << endl;
     
    389363                } // if
    390364                break;
    391           case Variable:
    392                 // os << DeclarationNode::typeClassName[ variable.tyClass ] << " variable ";
    393                 // if ( variable.assertions ) {
    394                 //      os << endl << string( indent + 2, ' ' ) << "with assertions" << endl;
    395                 //      variable.assertions->printList( os, indent + 4 );
    396                 //      os << string( indent + 2, ' ' );
    397                 // } // if
    398                 break;
    399365          case Tuple:
    400366                os << "tuple ";
     
    409375                        typeexpr->print( os, indent + 2 );
    410376                } // if
    411                 break;
    412           case Attr:
    413                 // os << "attribute type decl " << attr.name << " applied to ";
    414                 // if ( attr.expr ) {
    415                 //      attr.expr->print( os, indent + 2 );
    416                 // } // if
    417                 // if ( attr.type ) {
    418                 //      attr.type->print( os, indent + 2 );
    419                 // } // if
    420377                break;
    421378          case Builtin:
     
    437394                        // add dtor:  void ^?{}(T *)
    438395                        FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false );
    439                         dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
    440                         td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, 0, false, false ) );
     396                        dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     397                        td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, nullptr, false, false ) );
    441398
    442399                        // add copy ctor:  void ?{}(T *, T)
    443400                        FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false );
    444                         copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
    445                         copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), td->get_name(), td ), 0 ) );
    446                         td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, 0, false, false ) );
     401                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     402                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
     403                        td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, nullptr, false, false ) );
    447404
    448405                        // add default ctor:  void ?{}(T *)
    449406                        FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false );
    450                         ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
    451                         td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, 0, false, false ) );
     407                        ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     408                        td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, nullptr, false, false ) );
    452409
    453410                        // add assignment operator:  T * ?=?(T *, T)
    454411                        FunctionType * assignType = new FunctionType( Type::Qualifiers(), false );
    455                         assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
    456                         assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), td->get_name(), td ), 0 ) );
    457                         assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), td->get_name(), td ), 0 ) );
    458                         td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false, false ) );
     412                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     413                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
     414                        assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
     415                        td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, nullptr, false, false ) );
    459416                } // if
    460417        } // for
     
    488445          case TypeData::Builtin:
    489446                return new VarArgsType( buildQualifiers( td ) );
    490           case TypeData::Attr:
    491                 assert( false );
    492                 return buildAttr( td );
    493447          case TypeData::Symbolic:
    494448          case TypeData::Enum:
    495449          case TypeData::Aggregate:
    496           case TypeData::Variable:
    497450                assert( false );
    498451        } // switch
    499         return 0;
     452        return nullptr;
    500453} // typebuild
    501454
    502455TypeData * typeextractAggregate( const TypeData * td, bool toplevel ) {
    503         TypeData * ret = 0;
     456        TypeData * ret = nullptr;
    504457
    505458        switch ( td->kind ) {
     
    551504          case DeclarationNode::Bool:
    552505                if ( td->signedness != DeclarationNode::NoSignedness ) {
    553                         throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
     506                        throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
    554507                } // if
    555508                if ( td->length != DeclarationNode::NoLength ) {
    556                         throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
     509                        throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
    557510                } // if
    558511
     
    567520
    568521                if ( td->length != DeclarationNode::NoLength ) {
    569                         throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
     522                        throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
    570523                } // if
    571524
     
    597550          FloatingPoint: ;
    598551                if ( td->signedness != DeclarationNode::NoSignedness ) {
    599                         throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
     552                        throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
    600553                } // if
    601554                if ( td->length == DeclarationNode::Short || td->length == DeclarationNode::LongLong ) {
    602                         throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
     555                        throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
    603556                } // if
    604557                if ( td->basictype == DeclarationNode::Float && td->length == DeclarationNode::Long ) {
     
    657610        switch ( td->aggregate.kind ) {
    658611          case DeclarationNode::Struct:
    659                 at = new StructDecl( td->aggregate.name );
     612                at = new StructDecl( *td->aggregate.name );
    660613                buildForall( td->aggregate.params, at->get_parameters() );
    661614                break;
    662615          case DeclarationNode::Union:
    663                 at = new UnionDecl( td->aggregate.name );
     616                at = new UnionDecl( *td->aggregate.name );
    664617                buildForall( td->aggregate.params, at->get_parameters() );
    665618                break;
    666619          case DeclarationNode::Trait:
    667                 at = new TraitDecl( td->aggregate.name );
     620                at = new TraitDecl( *td->aggregate.name );
    668621                buildList( td->aggregate.params, at->get_parameters() );
    669622                break;
     
    683636        ReferenceToType * ret;
    684637        if ( td->aggInst.aggregate->kind == TypeData::Enum ) {
    685                 ret = new EnumInstType( buildQualifiers( td ), td->aggInst.aggregate->enumeration.name );
     638                ret = new EnumInstType( buildQualifiers( td ), *td->aggInst.aggregate->enumeration.name );
    686639        } else {
    687640                assert( td->aggInst.aggregate->kind == TypeData::Aggregate );
    688641                switch ( td->aggInst.aggregate->aggregate.kind ) {
    689642                  case DeclarationNode::Struct:
    690                         ret = new StructInstType( buildQualifiers( td ), td->aggInst.aggregate->aggregate.name );
     643                        assert( td->aggInst.aggregate->aggregate.name );
     644                        ret = new StructInstType( buildQualifiers( td ), *td->aggInst.aggregate->aggregate.name );
    691645                        break;
    692646                  case DeclarationNode::Union:
    693                         ret = new UnionInstType( buildQualifiers( td ), td->aggInst.aggregate->aggregate.name );
     647                        ret = new UnionInstType( buildQualifiers( td ), *td->aggInst.aggregate->aggregate.name );
    694648                        break;
    695649                  case DeclarationNode::Trait:
    696                         ret = new TraitInstType( buildQualifiers( td ), td->aggInst.aggregate->aggregate.name );
     650                        ret = new TraitInstType( buildQualifiers( td ), *td->aggInst.aggregate->aggregate.name );
    697651                        break;
    698652                  default:
     
    705659} // buildAggInst
    706660
    707 NamedTypeDecl * buildSymbolic( const TypeData * td, const std::string & name, DeclarationNode::StorageClass sc ) {
     661NamedTypeDecl * buildSymbolic( const TypeData * td, const string & name, DeclarationNode::StorageClass sc ) {
    708662        assert( td->kind == TypeData::Symbolic );
    709663        NamedTypeDecl * ret;
     
    719673} // buildSymbolic
    720674
    721 TypeDecl * buildVariable( const TypeData * td ) {
    722         assert( false );
    723         return nullptr;
    724         // assert( td->kind == TypeData::Variable );
    725         // static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    726 
    727         // TypeDecl * ret = new TypeDecl( td->variable.name, DeclarationNode::NoStorageClass, 0, kindMap[ td->variable.tyClass ] );
    728         // buildList( td->variable.assertions, ret->get_assertions() );
    729         // return ret;
    730 } // buildSymbolic
    731 
    732675EnumDecl * buildEnum( const TypeData * td ) {
    733676        assert( td->kind == TypeData::Enum );
    734         EnumDecl * ret = new EnumDecl( td->enumeration.name );
     677        EnumDecl * ret = new EnumDecl( *td->enumeration.name );
    735678        buildList( td->enumeration.constants, ret->get_members() );
    736         std::list< Declaration * >::iterator members = ret->get_members().begin();
     679        list< Declaration * >::iterator members = ret->get_members().begin();
    737680        for ( const DeclarationNode * cur = td->enumeration. constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
    738681                if ( cur->has_enumeratorValue() ) {
    739682                        ObjectDecl * member = dynamic_cast< ObjectDecl * >(* members);
    740                         member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ), std::list< Expression * >() ) );
     683                        member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ), list< Expression * >() ) );
    741684                } // if
    742685        } // for
     
    746689TypeInstType * buildSymbolicInst( const TypeData * td ) {
    747690        assert( td->kind == TypeData::SymbolicInst );
    748         TypeInstType * ret = new TypeInstType( buildQualifiers( td ), td->symbolic.name, false );
     691        TypeInstType * ret = new TypeInstType( buildQualifiers( td ), *td->symbolic.name, false );
    749692        buildList( td->symbolic.actuals, ret->get_parameters() );
    750693        buildForall( td->forall, ret->get_forall() );
     
    767710} // buildTypeof
    768711
    769 AttrType * buildAttr( const TypeData * td ) {
    770         assert( false );
    771         return nullptr;
    772         // assert( td->kind == TypeData::Attr );
    773         // // assert( td->attr );
    774         // AttrType * ret;
    775         // if ( td->attr.expr ) {
    776         //      ret = new AttrType( buildQualifiers( td ), td->attr.name, td->attr.expr->build() );
    777         // } else {
    778         //      assert( td->attr.type );
    779         //      ret = new AttrType( buildQualifiers( td ), td->attr.name, td->attr.type->buildType() );
    780         // } // if
    781         // return ret;
    782 } // buildAttr
    783 
    784 Declaration * buildDecl( const TypeData * td, std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
     712Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
    785713        if ( td->kind == TypeData::Function ) {
    786714                FunctionDecl * decl;
     
    792720                                decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), body, isInline, isNoreturn );
    793721                        } else {
    794                                 // std::list< Label > ls;
    795                                 decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
     722                                // list< Label > ls;
     723                                decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), new CompoundStmt( list< Label >() ), isInline, isNoreturn );
    796724                        } // if
    797725                } else {
    798                         decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), 0, isInline, isNoreturn );
    799                 } // if
    800                 for ( DeclarationNode * cur = td->function.idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) {
    801                         if ( cur->get_name() != "" ) {
    802                                 decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
     726                        decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), nullptr, isInline, isNoreturn );
     727                } // if
     728                for ( DeclarationNode * cur = td->function.idList; cur != nullptr; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) {
     729                        if ( cur->name ) {
     730                                decl->get_oldIdents().insert( decl->get_oldIdents().end(), *cur->name );
    803731                        } // if
    804732                } // for
     
    811739        } else if ( td->kind == TypeData::Symbolic ) {
    812740                return buildSymbolic( td, name, sc );
    813         } else if ( td->kind == TypeData::Variable ) {
    814                 assert( false );
    815                 return buildVariable( td );
    816741        } else {
    817                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, std::list< Attribute * >(), isInline, isNoreturn );
     742                return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
    818743        } // if
    819         return 0;
     744        return nullptr;
    820745} // buildDecl
    821746
     
    833758                        break;
    834759                  default:
    835                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
     760                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
    836761                } // switch
    837762        } else {
    838                 ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 ) );
     763                ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
    839764        } // if
    840765        return ft;
  • src/Parser/TypeData.h

    rac9ca96 r7756647  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 12 17:15:49 2016
    13 // Update Count     : 129
     12// Last Modified On : Mon Oct  3 12:34:08 2016
     13// Update Count     : 142
    1414//
    1515
     
    2323
    2424struct TypeData {
    25         enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    26                                 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr };
     25        enum Kind { Basic, Pointer, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
     26                                SymbolicInst, Tuple, Typeof, Builtin, Unknown };
    2727
    2828        struct Aggregate_t {
    2929                DeclarationNode::Aggregate kind;
    30                 std::string name;
     30                const std::string * name;
    3131                DeclarationNode * params;
    32                 ExpressionNode  * actuals;                                              // holds actual parameters later applied to AggInst
     32                ExpressionNode * actuals;                                               // holds actual parameters later applied to AggInst
    3333                DeclarationNode * fields;
    3434                bool body;
     
    4747
    4848        struct Enumeration_t {
    49                 std::string name;
     49                const std::string * name;
    5050                DeclarationNode * constants;
    5151        };
     
    6161
    6262        struct Symbolic_t {
    63                 std::string name;
     63                const std::string * name;
    6464                bool isTypedef;                                                                 // false => TYPEGENname, true => TYPEDEFname
    6565                DeclarationNode * params;
     
    8888                DeclarationNode * tuple;
    8989                ExpressionNode * typeexpr;
    90                 // Attr_t attr;
    9190                // DeclarationNode::BuiltinType builtin;
    9291
     
    111110TupleType * buildTuple( const TypeData * );
    112111TypeofType * buildTypeof( const TypeData * );
    113 AttrType * buildAttr( const TypeData * );
    114 Declaration * buildDecl( const TypeData *, std::string, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = 0 );
     112Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
    115113FunctionType * buildFunction( const TypeData * );
    116114
  • src/Parser/parser.cc

    rac9ca96 r7756647  
    8282#include "TypeData.h"
    8383#include "LinkageSpec.h"
     84using namespace std;
    8485
    8586extern DeclarationNode * parseTree;
     
    8788extern TypedefTable typedefTable;
    8889
    89 std::stack< LinkageSpec::Spec > linkageStack;
    90 
    91 void appendStr( std::string *to, std::string *from ) {
     90stack< LinkageSpec::Spec > linkageStack;
     91
     92void appendStr( string *to, string *from ) {
    9293        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    9394        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
     
    9697
    9798/* Line 268 of yacc.c  */
    98 #line 99 "Parser/parser.cc"
     99#line 100 "Parser/parser.cc"
    99100
    100101/* Enabling traces.  */
     
    347348
    348349/* Line 293 of yacc.c  */
    349 #line 115 "parser.yy"
     350#line 116 "parser.yy"
    350351
    351352        Token tok;
     
    367368
    368369/* Line 293 of yacc.c  */
    369 #line 370 "Parser/parser.cc"
     370#line 371 "Parser/parser.cc"
    370371} YYSTYPE;
    371372# define YYSTYPE_IS_TRIVIAL 1
     
    379380
    380381/* Line 343 of yacc.c  */
    381 #line 382 "Parser/parser.cc"
     382#line 383 "Parser/parser.cc"
    382383
    383384#ifdef short
     
    598599#define YYFINAL  250
    599600/* YYLAST -- Last index in YYTABLE.  */
    600 #define YYLAST   10863
     601#define YYLAST   10888
    601602
    602603/* YYNTOKENS -- Number of terminals.  */
    603604#define YYNTOKENS  133
    604605/* YYNNTS -- Number of nonterminals.  */
    605 #define YYNNTS  241
     606#define YYNNTS  242
    606607/* YYNRULES -- Number of rules.  */
    607 #define YYNRULES  751
     608#define YYNRULES  754
    608609/* YYNRULES -- Number of states.  */
    609 #define YYNSTATES  1555
     610#define YYNSTATES  1558
    610611
    611612/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    666667      17,    19,    21,    23,    25,    27,    29,    31,    33,    36,
    667668      38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
    668       86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
    669      120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
    670      158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
    671      197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
    672      226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
    673      260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
    674      294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
    675      326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
    676      355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
    677      375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
    678      414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
    679      442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
    680      474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
    681      531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
    682      558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
    683      586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
    684      638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
    685      678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
    686      751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
    687      818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
    688      849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
    689      875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
    690      905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
    691      946,   949,   952,   956,   962,   971,   979,   987,   993,  1003,
    692     1006,  1009,  1015,  1019,  1025,  1030,  1034,  1039,  1044,  1052,
    693     1056,  1060,  1064,  1068,  1073,  1080,  1082,  1084,  1086,  1088,
    694     1090,  1092,  1094,  1096,  1097,  1099,  1101,  1104,  1106,  1108,
    695     1110,  1112,  1114,  1116,  1118,  1119,  1125,  1127,  1130,  1134,
    696     1136,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
    697     1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    698     1177,  1179,  1181,  1183,  1186,  1189,  1193,  1197,  1199,  1203,
    699     1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
    700     1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
    701     1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
    702     1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
    703     1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
    704     1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
    705     1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
    706     1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
    707     1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
    708     1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
    709     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
    710     1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
    711     1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
    712     1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
    713     1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
    714     1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
    715     1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
    716     1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
    717     1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
    718     1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
    719     1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
    720     1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
    721     1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
    722     1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
    723     2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
    724     2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
    725     2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
    726     2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
    727     2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
    728     2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
    729     2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
    730     2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
    731     2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
    732     2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
    733     2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
    734     2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
    735     2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
    736     2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
    737     2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
    738     2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
    739     2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
    740     2714,  2715
     669      82,    90,    93,    96,   104,   109,   111,   115,   116,   118,
     670     120,   124,   126,   130,   138,   142,   150,   152,   154,   156,
     671     158,   160,   163,   166,   169,   172,   175,   178,   183,   186,
     672     191,   198,   200,   205,   210,   212,   214,   216,   218,   220,
     673     222,   224,   229,   234,   236,   240,   244,   248,   250,   254,
     674     258,   260,   264,   268,   270,   274,   278,   282,   286,   288,
     675     292,   296,   298,   302,   304,   308,   310,   314,   316,   320,
     676     322,   326,   328,   334,   339,   345,   347,   349,   353,   356,
     677     357,   359,   361,   363,   365,   367,   369,   371,   373,   375,
     678     377,   379,   381,   383,   386,   392,   399,   407,   409,   413,
     679     415,   419,   420,   422,   424,   426,   428,   430,   432,   434,
     680     436,   438,   445,   450,   453,   461,   463,   467,   469,   472,
     681     474,   477,   479,   482,   485,   491,   499,   505,   515,   521,
     682     531,   533,   537,   539,   541,   545,   549,   552,   554,   557,
     683     560,   561,   563,   566,   570,   571,   573,   576,   580,   584,
     684     589,   590,   592,   594,   597,   603,   611,   618,   625,   630,
     685     634,   639,   642,   646,   649,   653,   657,   661,   665,   671,
     686     675,   679,   684,   686,   692,   699,   705,   712,   722,   733,
     687     743,   754,   757,   759,   762,   765,   768,   770,   777,   786,
     688     797,   810,   825,   826,   828,   829,   831,   833,   837,   842,
     689     850,   851,   853,   857,   859,   863,   865,   867,   869,   873,
     690     875,   877,   879,   883,   884,   886,   890,   895,   897,   901,
     691     903,   905,   909,   913,   917,   921,   925,   928,   932,   939,
     692     943,   947,   952,   954,   957,   960,   964,   970,   979,   987,
     693     995,  1001,  1011,  1014,  1017,  1023,  1027,  1033,  1038,  1042,
     694    1047,  1052,  1060,  1064,  1068,  1072,  1076,  1081,  1088,  1090,
     695    1092,  1094,  1096,  1098,  1100,  1102,  1104,  1105,  1107,  1109,
     696    1112,  1114,  1116,  1118,  1120,  1122,  1124,  1126,  1127,  1133,
     697    1135,  1138,  1142,  1144,  1147,  1149,  1151,  1153,  1155,  1157,
     698    1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,  1177,
     699    1179,  1181,  1183,  1185,  1187,  1189,  1191,  1194,  1197,  1201,
     700    1205,  1207,  1211,  1213,  1216,  1219,  1222,  1227,  1232,  1237,
     701    1242,  1244,  1247,  1250,  1254,  1256,  1259,  1262,  1264,  1267,
     702    1270,  1274,  1276,  1279,  1282,  1284,  1286,  1291,  1294,  1295,
     703    1302,  1310,  1313,  1316,  1319,  1320,  1323,  1326,  1330,  1333,
     704    1337,  1339,  1342,  1346,  1349,  1352,  1357,  1358,  1360,  1363,
     705    1366,  1368,  1369,  1371,  1374,  1377,  1383,  1386,  1387,  1395,
     706    1398,  1403,  1404,  1407,  1408,  1410,  1412,  1414,  1420,  1426,
     707    1432,  1434,  1440,  1446,  1456,  1458,  1464,  1465,  1467,  1469,
     708    1475,  1477,  1479,  1485,  1491,  1493,  1497,  1501,  1506,  1508,
     709    1510,  1512,  1514,  1517,  1519,  1523,  1527,  1529,  1532,  1534,
     710    1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1554,  1556,
     711    1558,  1560,  1563,  1565,  1567,  1569,  1572,  1573,  1576,  1579,
     712    1581,  1586,  1587,  1589,  1592,  1596,  1601,  1604,  1607,  1609,
     713    1612,  1615,  1621,  1627,  1635,  1642,  1644,  1647,  1650,  1654,
     714    1656,  1659,  1662,  1667,  1670,  1675,  1676,  1681,  1684,  1686,
     715    1688,  1690,  1691,  1694,  1700,  1706,  1720,  1722,  1724,  1728,
     716    1732,  1735,  1739,  1743,  1746,  1751,  1753,  1760,  1770,  1771,
     717    1783,  1785,  1789,  1793,  1797,  1799,  1801,  1807,  1810,  1816,
     718    1817,  1819,  1821,  1825,  1826,  1828,  1830,  1832,  1834,  1835,
     719    1842,  1845,  1847,  1850,  1855,  1858,  1862,  1866,  1870,  1875,
     720    1881,  1887,  1893,  1900,  1902,  1904,  1906,  1910,  1911,  1917,
     721    1918,  1920,  1922,  1925,  1932,  1934,  1938,  1939,  1941,  1946,
     722    1948,  1950,  1952,  1954,  1957,  1959,  1962,  1965,  1967,  1971,
     723    1974,  1978,  1982,  1985,  1990,  1995,  1999,  2008,  2012,  2015,
     724    2017,  2020,  2027,  2036,  2040,  2043,  2047,  2051,  2056,  2061,
     725    2065,  2067,  2069,  2071,  2076,  2083,  2087,  2090,  2094,  2098,
     726    2103,  2108,  2112,  2115,  2117,  2120,  2123,  2125,  2129,  2132,
     727    2136,  2140,  2143,  2148,  2153,  2157,  2164,  2173,  2177,  2180,
     728    2182,  2185,  2188,  2191,  2195,  2199,  2202,  2207,  2212,  2216,
     729    2223,  2232,  2236,  2239,  2241,  2244,  2247,  2249,  2251,  2254,
     730    2258,  2262,  2265,  2270,  2277,  2286,  2288,  2291,  2294,  2296,
     731    2299,  2302,  2306,  2310,  2312,  2317,  2322,  2326,  2332,  2341,
     732    2345,  2348,  2352,  2354,  2360,  2366,  2373,  2380,  2382,  2385,
     733    2388,  2390,  2393,  2396,  2400,  2404,  2406,  2411,  2416,  2420,
     734    2426,  2435,  2439,  2441,  2444,  2446,  2449,  2456,  2462,  2469,
     735    2477,  2485,  2487,  2490,  2493,  2495,  2498,  2501,  2505,  2509,
     736    2511,  2516,  2521,  2525,  2534,  2538,  2540,  2542,  2545,  2547,
     737    2549,  2552,  2556,  2559,  2563,  2566,  2570,  2574,  2577,  2582,
     738    2586,  2589,  2593,  2596,  2601,  2605,  2608,  2615,  2622,  2629,
     739    2637,  2639,  2642,  2644,  2646,  2648,  2651,  2655,  2658,  2662,
     740    2665,  2669,  2673,  2678,  2681,  2685,  2690,  2693,  2699,  2705,
     741    2712,  2719,  2720,  2722,  2723
    741742};
    742743
     
    744745static const yytype_int16 yyrhs[] =
    745746{
    746      302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     747     303,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    747748      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    748749      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
    749750      -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
    750      109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
    751      144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
     751     109,   171,   110,    -1,   109,   175,   110,    -1,   143,    -1,
     752     144,   111,   134,   166,   135,   112,    -1,   144,   109,   145,
    752753     110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
    753      147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
    754      111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
    755       87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
    756      144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
    757       -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
    758      139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
    759      147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
    760      111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
    761      141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
    762       -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
    763       37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
    764      275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
    765       76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
    766      110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
    767      121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
    768       -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
    769      152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
    770      153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
    771      154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
    772      155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
    773      156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
    774      157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
    775      158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
    776      159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
    777      160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
    778      162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
    779       -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
    780       -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
    781       -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
    782       -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
    783       -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
    784      165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
    785       -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
    786       -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
    787       -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
    788      179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
    789      127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
    790      172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
    791      135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
    792       -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
    793       -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
    794      110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
    795       -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
    796      110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
    797      110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
    798      187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
    799       -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
    800       -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
    801      172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
    802      177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
    803      189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
    804       -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
    805      109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
    806      110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
    807      171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
    808      171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
    809       -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
    810       -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
    811      166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
    812      165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
    813       -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
    814       96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
    815       -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
    816       96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
    817      110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
    818      135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
    819      135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
    820      198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
    821       -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
    822      366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
    823      200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
    824      109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
    825      200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
    826      132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
    827      130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
    828       -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
    829      109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
    830      110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
    831       -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
    832       -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
    833       -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
    834      132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
    835      116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
    836       -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
    837      135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
    838      232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
    839       -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
    840      370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
    841      218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
    842      272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
    843       -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
    844      272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
    845      135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
    846      135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
    847      135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
    848      135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
    849      226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
    850      139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
    851      165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
    852      222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
    853      311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
    854      236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
    855      241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
    856       -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
    857       12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
    858      109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
    859      232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
    860       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    861       -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
    862       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    863       -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
    864       -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
    865      234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
    866      239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
    867       -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
    868      109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
    869      109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
    870      234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
    871       -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
    872      234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
    873       -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
    874      248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
    875      114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
    876      115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
    877       -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
    878      132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
    879       -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
    880       -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
    881      254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
    882       -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
    883      114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
    884      274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
    885      258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
    886      261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
    887      263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
    888      116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
    889      267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
    890      116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
    891      263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
    892       -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
    893       -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
    894      134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
    895      272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
    896      270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
    897       -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
    898       -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
    899      137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
    900       75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
    901      226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
    902       -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
    903       -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
    904       -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
    905      280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
    906       -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
    907      135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
    908      134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
    909      147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
    910      234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
    911       -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
    912      373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
    913      288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
    914       34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
    915      110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
    916      134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
    917      110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
    918      292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
    919       -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
    920      131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
    921      110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
    922      115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
    923      114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
    924       -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
    925       -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
    926      309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
    927       -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
    928      213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
    929      114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
    930      174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
    931      225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
    932      174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
    933      208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
    934      327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
    935      174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
    936      164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
    937      313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
    938      315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
    939       -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
    940      234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
    941       -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
    942      319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
    943      109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
    944      349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
    945       -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
    946      109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
    947      312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
    948      325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
    949      110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
    950      325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
    951      110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
    952       -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
    953      110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
    954      327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
    955      109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
    956      109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
    957      312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
    958       -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
    959      110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
    960      109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
    961      109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
    962      134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
    963      312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
    964      150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
    965       -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
    966      338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
    967      134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
    968      264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
    969       -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
    970       -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
    971      109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
    972      355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
    973      342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
    974      347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
    975       -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
    976      110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
    977      347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
    978      264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
    979      135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
    980      111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
    981      112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
    982      134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
    983      112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
    984      150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
    985      351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
    986      110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
    987      110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
    988      110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
    989       -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
    990       -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
    991      228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
    992       -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
    993      134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
    994      312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
    995      150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
    996       -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
    997      110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
    998      109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
    999      362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
    1000       -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
    1001       -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
    1002      361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
    1003      112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
    1004       -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
    1005      350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
    1006      111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
    1007      165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
    1008       -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
    1009       -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
    1010      150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
    1011      228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
    1012       -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
    1013      350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
    1014      368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
    1015       -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
    1016      260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
    1017       -1,    -1,   116,    -1,    -1,   131,   165,    -1
     754     147,   135,   112,    -1,   144,   113,    79,    -1,   144,    85,
     755     139,    -1,   144,    85,   111,   134,   147,   135,   112,    -1,
     756     144,    86,    -1,   144,    87,    -1,   109,   276,   110,   114,
     757     280,   373,   115,    -1,   144,   114,   145,   115,    -1,   146,
     758      -1,   145,   116,   146,    -1,    -1,   166,    -1,   148,    -1,
     759     147,   116,   148,    -1,   149,    -1,   149,   113,   148,    -1,
     760     149,   113,   111,   134,   147,   135,   112,    -1,   149,    85,
     761     148,    -1,   149,    85,   111,   134,   147,   135,   112,    -1,
     762     139,    -1,    79,    -1,   144,    -1,   136,    -1,   141,    -1,
     763      40,   153,    -1,   151,   153,    -1,   152,   153,    -1,    86,
     764     150,    -1,    87,   150,    -1,    37,   150,    -1,    37,   109,
     765     276,   110,    -1,    66,   150,    -1,    66,   109,   276,   110,
     766      -1,    38,   109,   276,   116,   139,   110,    -1,    76,    -1,
     767      76,   109,   146,   110,    -1,    76,   109,   277,   110,    -1,
     768     117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
     769     122,    -1,   150,    -1,   109,   276,   110,   153,    -1,   109,
     770     276,   110,   169,    -1,   153,    -1,   154,   117,   153,    -1,
     771     154,   123,   153,    -1,   154,   124,   153,    -1,   154,    -1,
     772     155,   119,   154,    -1,   155,   120,   154,    -1,   155,    -1,
     773     156,    88,   155,    -1,   156,    89,   155,    -1,   156,    -1,
     774     157,   125,   156,    -1,   157,   126,   156,    -1,   157,    90,
     775     156,    -1,   157,    91,   156,    -1,   157,    -1,   158,    92,
     776     157,    -1,   158,    93,   157,    -1,   158,    -1,   159,   118,
     777     158,    -1,   159,    -1,   160,   127,   159,    -1,   160,    -1,
     778     161,   128,   160,    -1,   161,    -1,   162,    94,   161,    -1,
     779     162,    -1,   163,    95,   162,    -1,   163,    -1,   163,   129,
     780     171,   130,   164,    -1,   163,   129,   130,   164,    -1,   163,
     781     129,   171,   130,   169,    -1,   164,    -1,   164,    -1,   150,
     782     168,   166,    -1,   169,   374,    -1,    -1,   166,    -1,   131,
     783      -1,   107,    -1,    97,    -1,    98,    -1,    99,    -1,   100,
     784      -1,   101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
     785      -1,   106,    -1,   111,   112,    -1,   111,   134,   166,   135,
     786     112,    -1,   111,   134,   116,   170,   135,   112,    -1,   111,
     787     134,   166,   116,   170,   135,   112,    -1,   167,    -1,   170,
     788     116,   167,    -1,   166,    -1,   171,   116,   166,    -1,    -1,
     789     171,    -1,   174,    -1,   175,    -1,   179,    -1,   180,    -1,
     790     192,    -1,   194,    -1,   195,    -1,   200,    -1,   127,   144,
     791     114,   145,   115,   132,    -1,    72,   130,   313,   173,    -1,
     792     114,   115,    -1,   114,   134,   134,   211,   176,   135,   115,
     793      -1,   177,    -1,   176,   134,   177,    -1,   214,    -1,    40,
     794     214,    -1,   309,    -1,   173,   135,    -1,   173,    -1,   178,
     795     173,    -1,   172,   132,    -1,    41,   109,   171,   110,   173,
     796      -1,    41,   109,   171,   110,   173,    42,   173,    -1,    43,
     797     109,   171,   110,   185,    -1,    43,   109,   171,   110,   114,
     798     134,   207,   186,   115,    -1,    53,   109,   171,   110,   185,
     799      -1,    53,   109,   171,   110,   114,   134,   207,   188,   115,
     800      -1,   165,    -1,   165,    96,   165,    -1,   311,    -1,   181,
     801      -1,   182,   116,   181,    -1,    44,   182,   130,    -1,    45,
     802     130,    -1,   183,    -1,   184,   183,    -1,   184,   173,    -1,
     803      -1,   187,    -1,   184,   178,    -1,   187,   184,   178,    -1,
     804      -1,   189,    -1,   184,   191,    -1,   184,   178,   190,    -1,
     805     189,   184,   191,    -1,   189,   184,   178,   190,    -1,    -1,
     806     191,    -1,    56,    -1,    56,   132,    -1,    47,   109,   171,
     807     110,   173,    -1,    46,   173,    47,   109,   171,   110,   132,
     808      -1,    48,   109,   134,   193,   110,   173,    -1,   172,   135,
     809     132,   172,   132,   172,    -1,   214,   172,   132,   172,    -1,
     810      51,    72,   132,    -1,    51,   117,   171,   132,    -1,    50,
     811     132,    -1,    50,    72,   132,    -1,    49,   132,    -1,    49,
     812      72,   132,    -1,    52,   172,   132,    -1,    61,   167,   132,
     813      -1,    62,   167,   132,    -1,    62,   167,    63,   166,   132,
     814      -1,    57,   175,   196,    -1,    57,   175,   198,    -1,    57,
     815     175,   196,   198,    -1,   197,    -1,    58,   109,    96,   110,
     816     175,    -1,   197,    58,   109,    96,   110,   175,    -1,    59,
     817     109,    96,   110,   175,    -1,   197,    59,   109,    96,   110,
     818     175,    -1,    58,   109,   134,   134,   199,   135,   110,   175,
     819     135,    -1,   197,    58,   109,   134,   134,   199,   135,   110,
     820     175,   135,    -1,    59,   109,   134,   134,   199,   135,   110,
     821     175,   135,    -1,   197,    59,   109,   134,   134,   199,   135,
     822     110,   175,   135,    -1,    60,   175,    -1,   227,    -1,   227,
     823     310,    -1,   227,   358,    -1,   367,   139,    -1,   367,    -1,
     824      64,   201,   109,   141,   110,   132,    -1,    64,   201,   109,
     825     141,   130,   202,   110,   132,    -1,    64,   201,   109,   141,
     826     130,   202,   130,   202,   110,   132,    -1,    64,   201,   109,
     827     141,   130,   202,   130,   202,   130,   205,   110,   132,    -1,
     828      64,   201,    51,   109,   141,   130,   130,   202,   130,   205,
     829     130,   206,   110,   132,    -1,    -1,    11,    -1,    -1,   203,
     830      -1,   204,    -1,   203,   116,   204,    -1,   141,   109,   165,
     831     110,    -1,   111,   165,   112,   141,   109,   165,   110,    -1,
     832      -1,   141,    -1,   205,   116,   141,    -1,   139,    -1,   206,
     833     116,   139,    -1,   135,    -1,   208,    -1,   214,    -1,   208,
     834     134,   214,    -1,   135,    -1,   210,    -1,   224,    -1,   210,
     835     134,   224,    -1,    -1,   212,    -1,    29,   213,   132,    -1,
     836     212,    29,   213,   132,    -1,   275,    -1,   213,   116,   275,
     837      -1,   215,    -1,   224,    -1,   216,   135,   132,    -1,   221,
     838     135,   132,    -1,   218,   135,   132,    -1,   294,   135,   132,
     839      -1,   297,   135,   132,    -1,   217,   278,    -1,   233,   217,
     840     278,    -1,   216,   135,   116,   134,   273,   278,    -1,   368,
     841     273,   312,    -1,   371,   273,   312,    -1,   229,   371,   273,
     842     312,    -1,   219,    -1,   229,   219,    -1,   233,   219,    -1,
     843     233,   229,   219,    -1,   218,   135,   116,   134,   273,    -1,
     844     111,   112,   273,   109,   134,   261,   135,   110,    -1,   371,
     845     273,   109,   134,   261,   135,   110,    -1,   220,   273,   109,
     846     134,   261,   135,   110,    -1,   111,   134,   263,   135,   112,
     847      -1,   111,   134,   263,   135,   116,   134,   264,   135,   112,
     848      -1,     3,   217,    -1,     3,   219,    -1,   221,   135,   116,
     849     134,   139,    -1,     3,   227,   310,    -1,   222,   135,   116,
     850     134,   310,    -1,   229,     3,   227,   310,    -1,   227,     3,
     851     310,    -1,   227,     3,   229,   310,    -1,     3,   139,   131,
     852     166,    -1,   223,   135,   116,   134,   139,   131,   166,    -1,
     853     225,   135,   132,    -1,   222,   135,   132,    -1,   223,   135,
     854     132,    -1,   241,   135,   132,    -1,   226,   310,   312,   278,
     855      -1,   225,   116,   313,   310,   312,   278,    -1,   237,    -1,
     856     241,    -1,   243,    -1,   284,    -1,   238,    -1,   242,    -1,
     857     244,    -1,   285,    -1,    -1,   229,    -1,   230,    -1,   229,
     858     230,    -1,   231,    -1,   315,    -1,    10,    -1,    12,    -1,
     859      11,    -1,    14,    -1,    67,    -1,    -1,    13,   109,   232,
     860     287,   110,    -1,   234,    -1,   229,   234,    -1,   233,   229,
     861     234,    -1,   235,    -1,   234,   235,    -1,     5,    -1,     7,
     862      -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
     863      -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
     864      -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
     865      -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   238,
     866      -1,   233,   238,    -1,   237,   235,    -1,   237,   235,   229,
     867      -1,   237,   235,   238,    -1,   239,    -1,   228,   240,   228,
     868      -1,   236,    -1,   229,   236,    -1,   239,   230,    -1,   239,
     869     236,    -1,    28,   109,   277,   110,    -1,    28,   109,   171,
     870     110,    -1,    78,   109,   277,   110,    -1,    78,   109,   171,
     871     110,    -1,   242,    -1,   233,   242,    -1,   241,   235,    -1,
     872     241,   235,   229,    -1,   245,    -1,   229,   245,    -1,   242,
     873     230,    -1,   244,    -1,   233,   244,    -1,   243,   235,    -1,
     874     243,   235,   229,    -1,    74,    -1,   229,    74,    -1,   244,
     875     230,    -1,   246,    -1,   257,    -1,   248,   114,   249,   115,
     876      -1,   248,   275,    -1,    -1,   248,   275,   247,   114,   249,
     877     115,    -1,   248,   109,   293,   110,   114,   249,   115,    -1,
     878     248,   286,    -1,    31,   313,    -1,    32,   313,    -1,    -1,
     879     249,   250,    -1,   251,   132,    -1,    40,   251,   132,    -1,
     880     252,   132,    -1,    40,   252,   132,    -1,   367,    -1,   367,
     881     275,    -1,   251,   116,   275,    -1,   251,   116,    -1,   227,
     882     253,    -1,   252,   116,   313,   253,    -1,    -1,   255,    -1,
     883     319,   254,    -1,   332,   254,    -1,   358,    -1,    -1,   255,
     884      -1,   130,   165,    -1,    30,   313,    -1,   256,   114,   259,
     885     373,   115,    -1,   256,   275,    -1,    -1,   256,   275,   258,
     886     114,   259,   373,   115,    -1,   275,   260,    -1,   259,   116,
     887     275,   260,    -1,    -1,   131,   165,    -1,    -1,   262,    -1,
     888     264,    -1,   263,    -1,   263,   135,   116,   134,   264,    -1,
     889     264,   135,   116,   134,    96,    -1,   263,   135,   116,   134,
     890      96,    -1,   268,    -1,   264,   135,   116,   134,   268,    -1,
     891     263,   135,   116,   134,   268,    -1,   263,   135,   116,   134,
     892     264,   135,   116,   134,   268,    -1,   269,    -1,   264,   135,
     893     116,   134,   269,    -1,    -1,   266,    -1,   267,    -1,   267,
     894     135,   116,   134,    96,    -1,   271,    -1,   270,    -1,   267,
     895     135,   116,   134,   271,    -1,   267,   135,   116,   134,   270,
     896      -1,   270,    -1,   363,   273,   374,    -1,   371,   273,   374,
     897      -1,   229,   371,   273,   374,    -1,   219,    -1,   271,    -1,
     898     363,    -1,   371,    -1,   229,   371,    -1,   372,    -1,   226,
     899     337,   374,    -1,   226,   341,   374,    -1,   226,    -1,   226,
     900     352,    -1,   139,    -1,   272,   116,   139,    -1,   137,    -1,
     901      74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
     902     139,    -1,    74,    -1,    75,    -1,   367,    -1,   227,    -1,
     903     227,   358,    -1,   367,    -1,   372,    -1,   227,    -1,   227,
     904     346,    -1,    -1,   131,   279,    -1,   107,   279,    -1,   166,
     905      -1,   114,   280,   373,   115,    -1,    -1,   279,    -1,   281,
     906     279,    -1,   280,   116,   279,    -1,   280,   116,   281,   279,
     907      -1,   282,   130,    -1,   275,   130,    -1,   283,    -1,   282,
     908     283,    -1,   113,   275,    -1,   111,   134,   166,   135,   112,
     909      -1,   111,   134,   311,   135,   112,    -1,   111,   134,   165,
     910      96,   165,   135,   112,    -1,   113,   111,   134,   147,   135,
     911     112,    -1,   285,    -1,   233,   285,    -1,   284,   235,    -1,
     912     284,   235,   229,    -1,   286,    -1,   229,   286,    -1,   285,
     913     230,    -1,    75,   109,   293,   110,    -1,   288,   374,    -1,
     914     287,   116,   288,   374,    -1,    -1,   290,   275,   289,   291,
     915      -1,   227,   337,    -1,    33,    -1,    35,    -1,    34,    -1,
     916      -1,   291,   292,    -1,   128,   275,   109,   293,   110,    -1,
     917     128,   114,   134,   299,   115,    -1,   128,   109,   134,   287,
     918     135,   110,   114,   134,   299,   115,   109,   293,   110,    -1,
     919     277,    -1,   166,    -1,   293,   116,   277,    -1,   293,   116,
     920     166,    -1,    33,   295,    -1,   234,    33,   295,    -1,   294,
     921     116,   295,    -1,   296,   291,    -1,   296,   291,   131,   277,
     922      -1,   275,    -1,   274,   109,   134,   287,   135,   110,    -1,
     923      36,   275,   109,   134,   287,   135,   110,   114,   115,    -1,
     924      -1,    36,   275,   109,   134,   287,   135,   110,   114,   298,
     925     299,   115,    -1,   300,    -1,   299,   134,   300,    -1,   301,
     926     135,   132,    -1,   302,   135,   132,    -1,   217,    -1,   219,
     927      -1,   301,   135,   116,   134,   273,    -1,   227,   310,    -1,
     928     302,   135,   116,   134,   310,    -1,    -1,   304,    -1,   306,
     929      -1,   304,   134,   306,    -1,    -1,   304,    -1,   214,    -1,
     930     308,    -1,   200,    -1,    -1,     5,    82,   307,   114,   305,
     931     115,    -1,    40,   306,    -1,   309,    -1,   324,   175,    -1,
     932     328,   134,   209,   175,    -1,   218,   175,    -1,   226,   324,
     933     175,    -1,   229,   324,   175,    -1,   233,   324,   175,    -1,
     934     233,   229,   324,   175,    -1,   226,   328,   134,   209,   175,
     935      -1,   229,   328,   134,   209,   175,    -1,   233,   328,   134,
     936     209,   175,    -1,   233,   229,   328,   134,   209,   175,    -1,
     937     319,    -1,   332,    -1,   324,    -1,   165,   122,   165,    -1,
     938      -1,    64,   109,   142,   110,   313,    -1,    -1,   314,    -1,
     939     315,    -1,   314,   315,    -1,    39,   109,   109,   316,   110,
     940     110,    -1,   317,    -1,   316,   116,   317,    -1,    -1,   318,
     941      -1,   318,   109,   172,   110,    -1,   273,    -1,   235,    -1,
     942     236,    -1,   230,    -1,   320,   313,    -1,   321,    -1,   322,
     943     313,    -1,   323,   313,    -1,   137,    -1,   109,   320,   110,
     944      -1,   151,   319,    -1,   151,   229,   319,    -1,   109,   321,
     945     110,    -1,   320,   350,    -1,   109,   321,   110,   350,    -1,
     946     109,   322,   110,   351,    -1,   109,   322,   110,    -1,   109,
     947     321,   110,   109,   134,   265,   135,   110,    -1,   109,   323,
     948     110,    -1,   325,   313,    -1,   326,    -1,   327,   313,    -1,
     949     320,   109,   134,   265,   135,   110,    -1,   109,   326,   110,
     950     109,   134,   265,   135,   110,    -1,   109,   325,   110,    -1,
     951     151,   324,    -1,   151,   229,   324,    -1,   109,   326,   110,
     952      -1,   109,   326,   110,   350,    -1,   109,   327,   110,   351,
     953      -1,   109,   327,   110,    -1,   329,    -1,   330,    -1,   331,
     954      -1,   320,   109,   272,   110,    -1,   109,   330,   110,   109,
     955     272,   110,    -1,   109,   329,   110,    -1,   151,   328,    -1,
     956     151,   229,   328,    -1,   109,   330,   110,    -1,   109,   330,
     957     110,   350,    -1,   109,   331,   110,   351,    -1,   109,   331,
     958     110,    -1,   333,   313,    -1,   334,    -1,   335,   313,    -1,
     959     336,   313,    -1,   342,    -1,   109,   333,   110,    -1,   151,
     960     332,    -1,   151,   229,   332,    -1,   109,   334,   110,    -1,
     961     333,   350,    -1,   109,   334,   110,   350,    -1,   109,   335,
     962     110,   351,    -1,   109,   335,   110,    -1,   333,   109,   134,
     963     265,   135,   110,    -1,   109,   334,   110,   109,   134,   265,
     964     135,   110,    -1,   109,   336,   110,    -1,   320,   313,    -1,
     965     338,    -1,   339,   313,    -1,   340,   313,    -1,   151,   337,
     966      -1,   151,   229,   337,    -1,   109,   338,   110,    -1,   320,
     967     356,    -1,   109,   338,   110,   350,    -1,   109,   339,   110,
     968     351,    -1,   109,   339,   110,    -1,   320,   109,   134,   265,
     969     135,   110,    -1,   109,   338,   110,   109,   134,   265,   135,
     970     110,    -1,   109,   340,   110,    -1,   342,   313,    -1,   343,
     971      -1,   344,   313,    -1,   345,   313,    -1,    74,    -1,    75,
     972      -1,   151,   341,    -1,   151,   229,   341,    -1,   109,   343,
     973     110,    -1,   342,   356,    -1,   109,   343,   110,   356,    -1,
     974     342,   109,   134,   265,   135,   110,    -1,   109,   343,   110,
     975     109,   134,   265,   135,   110,    -1,   347,    -1,   348,   313,
     976      -1,   349,   313,    -1,   151,    -1,   151,   229,    -1,   151,
     977     346,    -1,   151,   229,   346,    -1,   109,   347,   110,    -1,
     978     350,    -1,   109,   347,   110,   350,    -1,   109,   348,   110,
     979     351,    -1,   109,   348,   110,    -1,   109,   134,   265,   135,
     980     110,    -1,   109,   347,   110,   109,   134,   265,   135,   110,
     981      -1,   109,   349,   110,    -1,   111,   112,    -1,   111,   112,
     982     351,    -1,   351,    -1,   111,   134,   166,   135,   112,    -1,
     983     111,   134,   117,   135,   112,    -1,   351,   111,   134,   166,
     984     135,   112,    -1,   351,   111,   134,   117,   135,   112,    -1,
     985     353,    -1,   354,   313,    -1,   355,   313,    -1,   151,    -1,
     986     151,   229,    -1,   151,   352,    -1,   151,   229,   352,    -1,
     987     109,   353,   110,    -1,   356,    -1,   109,   353,   110,   356,
     988      -1,   109,   354,   110,   351,    -1,   109,   354,   110,    -1,
     989     109,   134,   265,   135,   110,    -1,   109,   353,   110,   109,
     990     134,   265,   135,   110,    -1,   109,   355,   110,    -1,   357,
     991      -1,   357,   351,    -1,   351,    -1,   111,   112,    -1,   111,
     992     134,   229,   117,   135,   112,    -1,   111,   134,   229,   135,
     993     112,    -1,   111,   134,   229,   166,   135,   112,    -1,   111,
     994     134,     7,   228,   166,   135,   112,    -1,   111,   134,   229,
     995       7,   166,   135,   112,    -1,   359,    -1,   360,   313,    -1,
     996     361,   313,    -1,   151,    -1,   151,   229,    -1,   151,   358,
     997      -1,   151,   229,   358,    -1,   109,   359,   110,    -1,   350,
     998      -1,   109,   359,   110,   350,    -1,   109,   360,   110,   351,
     999      -1,   109,   360,   110,    -1,   109,   359,   110,   109,   134,
     1000     265,   135,   110,    -1,   109,   361,   110,    -1,   363,    -1,
     1001     371,    -1,   229,   371,    -1,   364,    -1,   365,    -1,   151,
     1002     227,    -1,   229,   151,   227,    -1,   151,   372,    -1,   229,
     1003     151,   372,    -1,   151,   362,    -1,   229,   151,   362,    -1,
     1004     111,   112,   227,    -1,   366,   227,    -1,   111,   112,   351,
     1005     227,    -1,   366,   351,   227,    -1,   351,   227,    -1,   111,
     1006     112,   364,    -1,   366,   364,    -1,   111,   112,   351,   364,
     1007      -1,   366,   351,   364,    -1,   351,   364,    -1,   111,   134,
     1008     229,   117,   135,   112,    -1,   111,   134,   229,   166,   135,
     1009     112,    -1,   111,   134,   233,   166,   135,   112,    -1,   111,
     1010     134,   233,   229,   166,   135,   112,    -1,   371,    -1,   229,
     1011     371,    -1,   368,    -1,   369,    -1,   370,    -1,   151,   227,
     1012      -1,   229,   151,   227,    -1,   151,   372,    -1,   229,   151,
     1013     372,    -1,   151,   367,    -1,   229,   151,   367,    -1,   111,
     1014     112,   227,    -1,   111,   112,   351,   227,    -1,   351,   227,
     1015      -1,   111,   112,   369,    -1,   111,   112,   351,   369,    -1,
     1016     351,   369,    -1,   111,   134,   264,   135,   112,    -1,   111,
     1017     112,   109,   261,   110,    -1,   371,   109,   134,   261,   135,
     1018     110,    -1,   220,   109,   134,   261,   135,   110,    -1,    -1,
     1019     116,    -1,    -1,   131,   166,    -1
    10181020};
    10191021
     
    10211023static const yytype_uint16 yyrline[] =
    10221024{
    1023        0,   300,   300,   304,   311,   312,   313,   317,   318,   319,
    1024      323,   324,   328,   329,   333,   334,   338,   342,   343,   354,
    1025      356,   358,   360,   365,   366,   372,   376,   378,   380,   382,
    1026      384,   386,   388,   390,   399,   400,   406,   407,   411,   412,
    1027      416,   420,   422,   424,   426,   431,   434,   436,   438,   443,
    1028      456,   458,   460,   462,   464,   466,   468,   470,   472,   474,
    1029      476,   483,   484,   490,   491,   492,   493,   497,   498,   500,
    1030      505,   506,   508,   510,   515,   516,   518,   523,   524,   526,
    1031      531,   532,   534,   536,   538,   543,   544,   546,   551,   552,
    1032      557,   558,   563,   564,   569,   570,   575,   576,   581,   582,
    1033      585,   587,   592,   597,   598,   600,   606,   607,   611,   612,
    1034      613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
    1035      628,   630,   632,   634,   639,   640,   645,   646,   652,   653,
    1036      659,   660,   661,   662,   663,   664,   665,   666,   667,   677,
    1037      684,   686,   696,   697,   702,   704,   710,   712,   716,   717,
    1038      722,   727,   730,   732,   734,   744,   746,   757,   758,   760,
    1039      764,   766,   770,   771,   776,   777,   781,   786,   787,   791,
    1040      793,   799,   800,   804,   806,   808,   810,   816,   817,   821,
    1041      823,   828,   830,   832,   837,   839,   844,   846,   850,   853,
    1042      857,   860,   864,   866,   868,   870,   875,   877,   879,   884,
    1043      886,   888,   890,   892,   897,   899,   901,   903,   908,   920,
    1044      921,   926,   928,   933,   937,   939,   941,   943,   945,   951,
    1045      952,   958,   959,   963,   964,   969,   971,   977,   978,   980,
    1046      985,   990,  1000,  1002,  1006,  1007,  1012,  1014,  1018,  1019,
    1047     1023,  1025,  1029,  1030,  1034,  1035,  1039,  1040,  1055,  1056,
    1048     1057,  1058,  1059,  1063,  1068,  1075,  1085,  1090,  1095,  1103,
    1049     1108,  1113,  1118,  1123,  1131,  1153,  1158,  1165,  1167,  1174,
    1050     1179,  1184,  1195,  1200,  1205,  1210,  1215,  1224,  1229,  1237,
    1051     1238,  1239,  1240,  1246,  1251,  1259,  1260,  1261,  1262,  1266,
    1052     1267,  1268,  1269,  1274,  1275,  1284,  1285,  1290,  1291,  1296,
    1053     1298,  1300,  1302,  1304,  1307,  1306,  1318,  1319,  1321,  1331,
    1054     1332,  1337,  1339,  1341,  1343,  1345,  1348,  1350,  1353,  1358,
    1055     1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
    1056     1380,  1382,  1388,  1389,  1391,  1393,  1395,  1400,  1401,  1407,
    1057     1408,  1410,  1412,  1417,  1419,  1421,  1423,  1428,  1429,  1431,
    1058     1433,  1438,  1439,  1441,  1446,  1447,  1449,  1451,  1456,  1458,
    1059     1460,  1465,  1466,  1470,  1472,  1478,  1477,  1481,  1483,  1488,
    1060     1490,  1496,  1497,  1502,  1503,  1505,  1506,  1515,  1516,  1518,
    1061     1520,  1525,  1527,  1533,  1534,  1536,  1539,  1542,  1547,  1548,
    1062     1553,  1558,  1562,  1564,  1570,  1569,  1576,  1578,  1584,  1585,
    1063     1593,  1594,  1598,  1599,  1600,  1602,  1604,  1611,  1612,  1614,
    1064     1616,  1621,  1622,  1628,  1629,  1633,  1634,  1639,  1640,  1641,
    1065     1643,  1651,  1652,  1654,  1657,  1659,  1663,  1664,  1665,  1667,
    1066     1669,  1673,  1678,  1686,  1687,  1696,  1698,  1703,  1704,  1705,
    1067     1709,  1710,  1711,  1715,  1716,  1717,  1721,  1722,  1723,  1728,
    1068     1729,  1730,  1731,  1737,  1738,  1740,  1745,  1746,  1751,  1752,
    1069     1753,  1754,  1755,  1770,  1771,  1776,  1777,  1783,  1785,  1788,
    1070     1790,  1792,  1815,  1816,  1818,  1820,  1825,  1826,  1828,  1833,
    1071     1838,  1839,  1845,  1844,  1848,  1852,  1854,  1856,  1862,  1863,
    1072     1868,  1873,  1875,  1880,  1882,  1883,  1885,  1890,  1892,  1894,
    1073     1899,  1901,  1906,  1911,  1919,  1925,  1924,  1938,  1939,  1944,
    1074     1945,  1949,  1954,  1959,  1967,  1972,  1983,  1984,  1989,  1990,
    1075     1996,  1997,  2001,  2002,  2003,  2006,  2005,  2016,  2025,  2031,
    1076     2037,  2046,  2052,  2058,  2064,  2070,  2078,  2084,  2092,  2098,
    1077     2107,  2108,  2109,  2113,  2117,  2119,  2124,  2125,  2129,  2130,
    1078     2135,  2141,  2142,  2145,  2147,  2148,  2152,  2153,  2154,  2155,
    1079     2189,  2191,  2192,  2194,  2199,  2204,  2209,  2211,  2213,  2218,
    1080     2220,  2222,  2224,  2229,  2231,  2240,  2242,  2243,  2248,  2250,
    1081     2252,  2257,  2259,  2261,  2266,  2268,  2270,  2279,  2280,  2281,
    1082     2285,  2287,  2289,  2294,  2296,  2298,  2303,  2305,  2307,  2322,
    1083     2324,  2325,  2327,  2332,  2333,  2338,  2340,  2342,  2347,  2349,
    1084     2351,  2353,  2358,  2360,  2362,  2372,  2374,  2375,  2377,  2382,
    1085     2384,  2386,  2391,  2393,  2395,  2397,  2402,  2404,  2406,  2437,
    1086     2439,  2440,  2442,  2447,  2452,  2460,  2462,  2464,  2469,  2471,
    1087     2476,  2478,  2492,  2493,  2495,  2500,  2502,  2504,  2506,  2508,
    1088     2513,  2514,  2516,  2518,  2523,  2525,  2527,  2533,  2535,  2537,
    1089     2541,  2543,  2545,  2547,  2561,  2562,  2564,  2569,  2571,  2573,
    1090     2575,  2577,  2582,  2583,  2585,  2587,  2592,  2594,  2596,  2602,
    1091     2603,  2605,  2614,  2617,  2619,  2622,  2624,  2626,  2639,  2640,
    1092     2642,  2647,  2649,  2651,  2653,  2655,  2660,  2661,  2663,  2665,
    1093     2670,  2672,  2680,  2681,  2682,  2687,  2688,  2692,  2694,  2696,
    1094     2698,  2700,  2702,  2709,  2711,  2713,  2715,  2717,  2719,  2721,
    1095     2723,  2725,  2727,  2732,  2734,  2736,  2741,  2767,  2768,  2770,
    1096     2774,  2775,  2779,  2781,  2783,  2785,  2787,  2789,  2796,  2798,
    1097     2800,  2802,  2804,  2806,  2811,  2816,  2818,  2820,  2838,  2840,
    1098     2845,  2846
     1025       0,   302,   302,   306,   313,   314,   315,   319,   320,   321,
     1026     325,   326,   330,   331,   335,   336,   340,   344,   345,   356,
     1027     358,   360,   362,   367,   368,   374,   378,   380,   382,   384,
     1028     386,   388,   390,   392,   394,   403,   404,   410,   411,   415,
     1029     416,   420,   424,   426,   428,   430,   435,   436,   440,   443,
     1030     445,   447,   452,   465,   467,   469,   471,   473,   475,   477,
     1031     479,   481,   483,   485,   492,   493,   499,   500,   501,   502,
     1032     506,   507,   509,   514,   515,   517,   519,   524,   525,   527,
     1033     532,   533,   535,   540,   541,   543,   545,   547,   552,   553,
     1034     555,   560,   561,   566,   567,   572,   573,   578,   579,   584,
     1035     585,   590,   591,   594,   596,   601,   606,   607,   609,   615,
     1036     616,   620,   621,   622,   623,   624,   625,   626,   627,   628,
     1037     629,   630,   631,   637,   639,   641,   643,   648,   649,   654,
     1038     655,   661,   662,   668,   669,   670,   671,   672,   673,   674,
     1039     675,   676,   686,   693,   695,   705,   706,   711,   713,   719,
     1040     721,   725,   726,   731,   736,   739,   741,   743,   753,   755,
     1041     766,   767,   769,   773,   775,   779,   780,   785,   786,   790,
     1042     795,   796,   800,   802,   808,   809,   813,   815,   817,   819,
     1043     825,   826,   830,   832,   837,   839,   841,   846,   848,   853,
     1044     855,   859,   862,   866,   869,   873,   875,   877,   879,   884,
     1045     886,   888,   893,   895,   897,   899,   901,   906,   908,   910,
     1046     912,   917,   929,   930,   935,   937,   942,   946,   948,   950,
     1047     952,   954,   960,   961,   967,   968,   972,   973,   978,   980,
     1048     986,   987,   989,   994,   999,  1009,  1011,  1015,  1016,  1021,
     1049    1023,  1027,  1028,  1032,  1034,  1038,  1039,  1043,  1044,  1048,
     1050    1049,  1064,  1065,  1066,  1067,  1068,  1072,  1077,  1084,  1094,
     1051    1099,  1104,  1112,  1117,  1122,  1127,  1132,  1140,  1162,  1167,
     1052    1174,  1176,  1183,  1188,  1193,  1204,  1209,  1214,  1219,  1224,
     1053    1233,  1238,  1246,  1247,  1248,  1249,  1255,  1260,  1268,  1269,
     1054    1270,  1271,  1275,  1276,  1277,  1278,  1283,  1284,  1293,  1294,
     1055    1299,  1300,  1305,  1307,  1309,  1311,  1313,  1316,  1315,  1327,
     1056    1328,  1330,  1340,  1341,  1346,  1348,  1350,  1352,  1354,  1357,
     1057    1359,  1362,  1367,  1369,  1371,  1373,  1375,  1377,  1379,  1381,
     1058    1383,  1385,  1387,  1389,  1391,  1397,  1398,  1400,  1402,  1404,
     1059    1409,  1410,  1416,  1417,  1419,  1421,  1426,  1428,  1430,  1432,
     1060    1437,  1438,  1440,  1442,  1447,  1448,  1450,  1455,  1456,  1458,
     1061    1460,  1465,  1467,  1469,  1474,  1475,  1479,  1481,  1487,  1486,
     1062    1490,  1492,  1497,  1499,  1505,  1506,  1511,  1512,  1514,  1515,
     1063    1524,  1525,  1527,  1529,  1534,  1536,  1542,  1543,  1545,  1548,
     1064    1551,  1556,  1557,  1562,  1567,  1571,  1573,  1579,  1578,  1585,
     1065    1587,  1593,  1594,  1602,  1603,  1607,  1608,  1609,  1611,  1613,
     1066    1620,  1621,  1623,  1625,  1630,  1631,  1637,  1638,  1642,  1643,
     1067    1648,  1649,  1650,  1652,  1660,  1661,  1663,  1666,  1668,  1672,
     1068    1673,  1674,  1676,  1678,  1682,  1687,  1695,  1696,  1705,  1707,
     1069    1712,  1713,  1714,  1718,  1719,  1720,  1724,  1725,  1726,  1730,
     1070    1731,  1732,  1737,  1738,  1739,  1740,  1746,  1747,  1749,  1754,
     1071    1755,  1760,  1761,  1762,  1763,  1764,  1779,  1780,  1785,  1786,
     1072    1792,  1794,  1797,  1799,  1801,  1824,  1825,  1827,  1829,  1834,
     1073    1835,  1837,  1842,  1847,  1848,  1854,  1853,  1857,  1861,  1863,
     1074    1865,  1871,  1872,  1877,  1882,  1884,  1889,  1891,  1892,  1894,
     1075    1899,  1901,  1903,  1908,  1910,  1915,  1920,  1928,  1934,  1933,
     1076    1947,  1948,  1953,  1954,  1958,  1963,  1968,  1976,  1981,  1992,
     1077    1993,  1998,  1999,  2005,  2006,  2010,  2011,  2012,  2015,  2014,
     1078    2025,  2034,  2040,  2046,  2055,  2061,  2067,  2073,  2079,  2087,
     1079    2093,  2101,  2107,  2116,  2117,  2118,  2122,  2126,  2128,  2133,
     1080    2134,  2138,  2139,  2144,  2150,  2151,  2154,  2156,  2157,  2161,
     1081    2162,  2163,  2164,  2198,  2200,  2201,  2203,  2208,  2213,  2218,
     1082    2220,  2222,  2227,  2229,  2231,  2233,  2238,  2240,  2249,  2251,
     1083    2252,  2257,  2259,  2261,  2266,  2268,  2270,  2275,  2277,  2279,
     1084    2288,  2289,  2290,  2294,  2296,  2298,  2303,  2305,  2307,  2312,
     1085    2314,  2316,  2331,  2333,  2334,  2336,  2341,  2342,  2347,  2349,
     1086    2351,  2356,  2358,  2360,  2362,  2367,  2369,  2371,  2381,  2383,
     1087    2384,  2386,  2391,  2393,  2395,  2400,  2402,  2404,  2406,  2411,
     1088    2413,  2415,  2446,  2448,  2449,  2451,  2456,  2461,  2469,  2471,
     1089    2473,  2478,  2480,  2485,  2487,  2501,  2502,  2504,  2509,  2511,
     1090    2513,  2515,  2517,  2522,  2523,  2525,  2527,  2532,  2534,  2536,
     1091    2542,  2544,  2546,  2550,  2552,  2554,  2556,  2570,  2571,  2573,
     1092    2578,  2580,  2582,  2584,  2586,  2591,  2592,  2594,  2596,  2601,
     1093    2603,  2605,  2611,  2612,  2614,  2623,  2626,  2628,  2631,  2633,
     1094    2635,  2648,  2649,  2651,  2656,  2658,  2660,  2662,  2664,  2669,
     1095    2670,  2672,  2674,  2679,  2681,  2689,  2690,  2691,  2696,  2697,
     1096    2701,  2703,  2705,  2707,  2709,  2711,  2718,  2720,  2722,  2724,
     1097    2726,  2728,  2730,  2732,  2734,  2736,  2741,  2743,  2745,  2750,
     1098    2776,  2777,  2779,  2783,  2784,  2788,  2790,  2792,  2794,  2796,
     1099    2798,  2805,  2807,  2809,  2811,  2813,  2815,  2820,  2825,  2827,
     1100    2829,  2847,  2849,  2854,  2855
    10991101};
    11001102#endif
     
    11281130  "string_literal", "string_literal_list", "primary_expression",
    11291131  "postfix_expression", "argument_expression_list", "argument_expression",
    1130   "field_list", "field", "unary_expression", "ptrref_operator",
    1131   "unary_operator", "cast_expression", "multiplicative_expression",
    1132   "additive_expression", "shift_expression", "relational_expression",
    1133   "equality_expression", "AND_expression", "exclusive_OR_expression",
    1134   "inclusive_OR_expression", "logical_AND_expression",
    1135   "logical_OR_expression", "conditional_expression", "constant_expression",
    1136   "assignment_expression", "assignment_expression_opt",
    1137   "assignment_operator", "tuple", "tuple_expression_list",
    1138   "comma_expression", "comma_expression_opt", "statement",
    1139   "labeled_statement", "compound_statement", "block_item_list",
    1140   "block_item", "statement_list", "expression_statement",
    1141   "selection_statement", "case_value", "case_value_list", "case_label",
    1142   "case_label_list", "case_clause", "switch_clause_list_opt",
    1143   "switch_clause_list", "choose_clause_list_opt", "choose_clause_list",
    1144   "fall_through_opt", "fall_through", "iteration_statement",
    1145   "for_control_expression", "jump_statement", "exception_statement",
    1146   "handler_list", "handler_clause", "finally_clause",
    1147   "exception_declaration", "asm_statement", "asm_volatile_opt",
    1148   "asm_operands_opt", "asm_operands_list", "asm_operand",
    1149   "asm_clobbers_list_opt", "label_list", "declaration_list_opt",
    1150   "declaration_list", "old_declaration_list_opt", "old_declaration_list",
    1151   "local_label_declaration_opt", "local_label_declaration_list",
    1152   "local_label_list", "declaration", "new_declaration",
    1153   "new_variable_declaration", "new_variable_specifier",
     1132  "field_list", "field", "field_name", "unary_expression",
     1133  "ptrref_operator", "unary_operator", "cast_expression",
     1134  "multiplicative_expression", "additive_expression", "shift_expression",
     1135  "relational_expression", "equality_expression", "AND_expression",
     1136  "exclusive_OR_expression", "inclusive_OR_expression",
     1137  "logical_AND_expression", "logical_OR_expression",
     1138  "conditional_expression", "constant_expression", "assignment_expression",
     1139  "assignment_expression_opt", "assignment_operator", "tuple",
     1140  "tuple_expression_list", "comma_expression", "comma_expression_opt",
     1141  "statement", "labeled_statement", "compound_statement",
     1142  "block_item_list", "block_item", "statement_list",
     1143  "expression_statement", "selection_statement", "case_value",
     1144  "case_value_list", "case_label", "case_label_list", "case_clause",
     1145  "switch_clause_list_opt", "switch_clause_list", "choose_clause_list_opt",
     1146  "choose_clause_list", "fall_through_opt", "fall_through",
     1147  "iteration_statement", "for_control_expression", "jump_statement",
     1148  "exception_statement", "handler_list", "handler_clause",
     1149  "finally_clause", "exception_declaration", "asm_statement",
     1150  "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
     1151  "asm_operand", "asm_clobbers_list_opt", "label_list",
     1152  "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
     1153  "old_declaration_list", "local_label_declaration_opt",
     1154  "local_label_declaration_list", "local_label_list", "declaration",
     1155  "new_declaration", "new_variable_declaration", "new_variable_specifier",
    11541156  "new_function_declaration", "new_function_specifier",
    11551157  "new_function_return", "new_typedef_declaration", "typedef_declaration",
     
    12411243     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
    12421244     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
    1243      144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
    1244      148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
    1245      149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
    1246      149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
    1247      153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
    1248      156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
    1249      159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
    1250      163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
    1251      167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
    1252      168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
    1253      172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
    1254      174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
    1255      178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
    1256      181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
    1257      186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
    1258      190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
    1259      193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
    1260      195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
    1261      198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
    1262      200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
    1263      205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
    1264      210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
    1265      214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
    1266      217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
    1267      220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
    1268      223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
    1269      226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
    1270      230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
    1271      233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
    1272      235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1273      235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
    1274      238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
    1275      240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
    1276      243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
    1277      247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
    1278      250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
    1279      254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
    1280      260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
    1281      262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
    1282      266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
    1283      268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
     1245     144,   144,   144,   144,   144,   145,   145,   146,   146,   147,
     1246     147,   148,   148,   148,   148,   148,   149,   149,   150,   150,
     1247     150,   150,   150,   150,   150,   150,   150,   150,   150,   150,
     1248     150,   150,   150,   150,   151,   151,   152,   152,   152,   152,
     1249     153,   153,   153,   154,   154,   154,   154,   155,   155,   155,
     1250     156,   156,   156,   157,   157,   157,   157,   157,   158,   158,
     1251     158,   159,   159,   160,   160,   161,   161,   162,   162,   163,
     1252     163,   164,   164,   164,   164,   165,   166,   166,   166,   167,
     1253     167,   168,   168,   168,   168,   168,   168,   168,   168,   168,
     1254     168,   168,   168,   169,   169,   169,   169,   170,   170,   171,
     1255     171,   172,   172,   173,   173,   173,   173,   173,   173,   173,
     1256     173,   173,   174,   175,   175,   176,   176,   177,   177,   177,
     1257     177,   178,   178,   179,   180,   180,   180,   180,   180,   180,
     1258     181,   181,   181,   182,   182,   183,   183,   184,   184,   185,
     1259     186,   186,   187,   187,   188,   188,   189,   189,   189,   189,
     1260     190,   190,   191,   191,   192,   192,   192,   193,   193,   194,
     1261     194,   194,   194,   194,   194,   194,   194,   194,   194,   195,
     1262     195,   195,   196,   196,   196,   196,   196,   197,   197,   197,
     1263     197,   198,   199,   199,   199,   199,   199,   200,   200,   200,
     1264     200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
     1265     205,   205,   205,   206,   206,   207,   207,   208,   208,   209,
     1266     209,   210,   210,   211,   211,   212,   212,   213,   213,   214,
     1267     214,   215,   215,   215,   215,   215,   216,   216,   216,   217,
     1268     217,   217,   218,   218,   218,   218,   218,   219,   219,   219,
     1269     220,   220,   221,   221,   221,   222,   222,   222,   222,   222,
     1270     223,   223,   224,   224,   224,   224,   225,   225,   226,   226,
     1271     226,   226,   227,   227,   227,   227,   228,   228,   229,   229,
     1272     230,   230,   231,   231,   231,   231,   231,   232,   231,   233,
     1273     233,   233,   234,   234,   235,   235,   235,   235,   235,   235,
     1274     235,   235,   236,   236,   236,   236,   236,   236,   236,   236,
     1275     236,   236,   236,   236,   236,   237,   237,   237,   237,   237,
     1276     238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
     1277     241,   241,   241,   241,   242,   242,   242,   243,   243,   243,
     1278     243,   244,   244,   244,   245,   245,   246,   246,   247,   246,
     1279     246,   246,   248,   248,   249,   249,   250,   250,   250,   250,
     1280     251,   251,   251,   251,   252,   252,   253,   253,   253,   253,
     1281     253,   254,   254,   255,   256,   257,   257,   258,   257,   259,
     1282     259,   260,   260,   261,   261,   262,   262,   262,   262,   262,
     1283     263,   263,   263,   263,   264,   264,   265,   265,   266,   266,
     1284     267,   267,   267,   267,   268,   268,   268,   268,   268,   269,
     1285     269,   269,   269,   269,   270,   270,   271,   271,   272,   272,
    12841286     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
    1285      276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
    1286      279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
    1287      282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
    1288      286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
    1289      291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
    1290      294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
    1291      299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
    1292      304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
    1293      307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
    1294      309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
    1295      314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
    1296      318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
    1297      321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
     1287     276,   276,   277,   277,   277,   277,   278,   278,   278,   279,
     1288     279,   280,   280,   280,   280,   280,   281,   281,   282,   282,
     1289     283,   283,   283,   283,   283,   284,   284,   284,   284,   285,
     1290     285,   285,   286,   287,   287,   289,   288,   288,   290,   290,
     1291     290,   291,   291,   292,   292,   292,   293,   293,   293,   293,
     1292     294,   294,   294,   295,   295,   296,   296,   297,   298,   297,
     1293     299,   299,   300,   300,   301,   301,   301,   302,   302,   303,
     1294     303,   304,   304,   305,   305,   306,   306,   306,   307,   306,
     1295     306,   308,   308,   308,   309,   309,   309,   309,   309,   309,
     1296     309,   309,   309,   310,   310,   310,   311,   312,   312,   313,
     1297     313,   314,   314,   315,   316,   316,   317,   317,   317,   318,
     1298     318,   318,   318,   319,   319,   319,   319,   320,   320,   321,
     1299     321,   321,   322,   322,   322,   322,   323,   323,   324,   324,
    12981300     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
    12991301     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
    1300      331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
    1301      334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
    1302      337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
    1303      340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
    1304      344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
    1305      347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
    1306      350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
    1307      352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
    1308      355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
    1309      357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
    1310      360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
    1311      363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
    1312      364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
    1313      367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
    1314      369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
    1315      373,   373
     1302     331,   331,   332,   332,   332,   332,   333,   333,   334,   334,
     1303     334,   335,   335,   335,   335,   336,   336,   336,   337,   337,
     1304     337,   337,   338,   338,   338,   339,   339,   339,   339,   340,
     1305     340,   340,   341,   341,   341,   341,   342,   342,   343,   343,
     1306     343,   344,   344,   345,   345,   346,   346,   346,   347,   347,
     1307     347,   347,   347,   348,   348,   348,   348,   349,   349,   349,
     1308     350,   350,   350,   351,   351,   351,   351,   352,   352,   352,
     1309     353,   353,   353,   353,   353,   354,   354,   354,   354,   355,
     1310     355,   355,   356,   356,   356,   357,   357,   357,   357,   357,
     1311     357,   358,   358,   358,   359,   359,   359,   359,   359,   360,
     1312     360,   360,   360,   361,   361,   362,   362,   362,   363,   363,
     1313     364,   364,   364,   364,   364,   364,   365,   365,   365,   365,
     1314     365,   365,   365,   365,   365,   365,   366,   366,   366,   366,
     1315     367,   367,   367,   368,   368,   369,   369,   369,   369,   369,
     1316     369,   370,   370,   370,   370,   370,   370,   371,   372,   372,
     1317     372,   373,   373,   374,   374
    13161318};
    13171319
     
    13211323       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    13221324       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1323        1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
    1324        2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
    1325        1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    1326        2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
    1327        4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
    1328        1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
    1329        1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
    1330        1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
    1331        4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
     1325       1,     3,     3,     1,     6,     4,     3,     7,     3,     3,
     1326       7,     2,     2,     7,     4,     1,     3,     0,     1,     1,
     1327       3,     1,     3,     7,     3,     7,     1,     1,     1,     1,
     1328       1,     2,     2,     2,     2,     2,     2,     4,     2,     4,
     1329       6,     1,     4,     4,     1,     1,     1,     1,     1,     1,
     1330       1,     4,     4,     1,     3,     3,     3,     1,     3,     3,
     1331       1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
     1332       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
     1333       3,     1,     5,     4,     5,     1,     1,     3,     2,     0,
    13321334       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1333        2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
    1334        1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
    1335        2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
    1336        2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
    1337        1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
    1338        3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
    1339        2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
    1340        2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
    1341        5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
    1342        2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
    1343        1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
    1344        1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
    1345        0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
    1346        3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
    1347        2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
    1348        2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
    1349        3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
    1350        1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
    1351        1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
    1352        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1335       1,     1,     1,     2,     5,     6,     7,     1,     3,     1,
     1336       3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
     1337       1,     6,     4,     2,     7,     1,     3,     1,     2,     1,
     1338       2,     1,     2,     2,     5,     7,     5,     9,     5,     9,
     1339       1,     3,     1,     1,     3,     3,     2,     1,     2,     2,
     1340       0,     1,     2,     3,     0,     1,     2,     3,     3,     4,
     1341       0,     1,     1,     2,     5,     7,     6,     6,     4,     3,
     1342       4,     2,     3,     2,     3,     3,     3,     3,     5,     3,
     1343       3,     4,     1,     5,     6,     5,     6,     9,    10,     9,
     1344      10,     2,     1,     2,     2,     2,     1,     6,     8,    10,
     1345      12,    14,     0,     1,     0,     1,     1,     3,     4,     7,
     1346       0,     1,     3,     1,     3,     1,     1,     1,     3,     1,
     1347       1,     1,     3,     0,     1,     3,     4,     1,     3,     1,
     1348       1,     3,     3,     3,     3,     3,     2,     3,     6,     3,
     1349       3,     4,     1,     2,     2,     3,     5,     8,     7,     7,
     1350       5,     9,     2,     2,     5,     3,     5,     4,     3,     4,
     1351       4,     7,     3,     3,     3,     3,     4,     6,     1,     1,
     1352       1,     1,     1,     1,     1,     1,     0,     1,     1,     2,
     1353       1,     1,     1,     1,     1,     1,     1,     0,     5,     1,
     1354       2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
    13531355       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1354        1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
    1355        2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
    1356        3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
    1357        2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
    1358        2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
    1359        2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
    1360        2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
    1361        0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
    1362        9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
    1363        5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
    1364        1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
    1365        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1366        1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
    1367        2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
    1368        7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
    1369        2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
    1370        5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
    1371        2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
    1372        3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
    1373        0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
    1374        4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
    1375        1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
    1376        6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
    1377        2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
    1378        4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
    1379        3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
    1380        4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
    1381        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1382        4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
    1383        3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
    1384        1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
    1385        6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
    1386        1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
    1387        5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
    1388        3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
    1389        2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
    1390        2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
    1391        8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
    1392        3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
    1393        4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
    1394        1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
    1395        2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
    1396        0,     2
     1356       1,     1,     1,     1,     1,     1,     2,     2,     3,     3,
     1357       1,     3,     1,     2,     2,     2,     4,     4,     4,     4,
     1358       1,     2,     2,     3,     1,     2,     2,     1,     2,     2,
     1359       3,     1,     2,     2,     1,     1,     4,     2,     0,     6,
     1360       7,     2,     2,     2,     0,     2,     2,     3,     2,     3,
     1361       1,     2,     3,     2,     2,     4,     0,     1,     2,     2,
     1362       1,     0,     1,     2,     2,     5,     2,     0,     7,     2,
     1363       4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
     1364       1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
     1365       1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
     1366       1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
     1367       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1368       1,     2,     1,     1,     1,     2,     0,     2,     2,     1,
     1369       4,     0,     1,     2,     3,     4,     2,     2,     1,     2,
     1370       2,     5,     5,     7,     6,     1,     2,     2,     3,     1,
     1371       2,     2,     4,     2,     4,     0,     4,     2,     1,     1,
     1372       1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
     1373       2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
     1374       1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
     1375       1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
     1376       2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
     1377       5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
     1378       1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
     1379       1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
     1380       3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
     1381       2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
     1382       1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
     1383       4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
     1384       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
     1385       2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
     1386       8,     3,     2,     1,     2,     2,     1,     1,     2,     3,
     1387       3,     2,     4,     6,     8,     1,     2,     2,     1,     2,
     1388       2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
     1389       2,     3,     1,     5,     5,     6,     6,     1,     2,     2,
     1390       1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
     1391       8,     3,     1,     2,     1,     2,     6,     5,     6,     7,
     1392       7,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1393       4,     4,     3,     8,     3,     1,     1,     2,     1,     1,
     1394       2,     3,     2,     3,     2,     3,     3,     2,     4,     3,
     1395       2,     3,     2,     4,     3,     2,     6,     6,     6,     7,
     1396       1,     2,     1,     1,     1,     2,     3,     2,     3,     2,
     1397       3,     3,     4,     2,     3,     4,     2,     5,     5,     6,
     1398       6,     0,     1,     0,     2
    13971399};
    13981400
     
    14021404static const yytype_uint16 yydefact[] =
    14031405{
    1404      293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
    1405      300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
    1406      325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
    1407        0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
    1408        8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
    1409      524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
    1410        3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
    1411      306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
    1412      351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
    1413        0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
    1414      546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
    1415       12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
    1416      291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
    1417      444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
    1418      445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
    1419        0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
    1420      294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
    1421      253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
    1422        0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
    1423      561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
    1424      603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
    1425      260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
    1426      261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
    1427      334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
    1428      371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
    1429        1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
    1430      743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
    1431        2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
    1432        0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
    1433        6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
    1434       46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
    1435       74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
    1436      103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
    1437      580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
    1438        0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
    1439      294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
    1440      411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
    1441      430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
    1442      458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
    1443        2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
    1444        0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
    1445      453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
    1446      599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
    1447        0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
    1448      254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
    1449      282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
    1450      499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
    1451        2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
    1452        0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
    1453      750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
    1454      556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
    1455       48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
    1456        0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
    1457       31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
    1458      115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
     1406     296,   296,   316,   314,   317,   315,   318,   319,   302,   304,
     1407     303,     0,   305,   330,   322,   327,   325,   326,   324,   323,
     1408     328,   329,   334,   331,   332,   333,   549,   549,   549,     0,
     1409       0,     0,   296,   222,   306,   320,   321,     7,   361,     0,
     1410       8,    14,    15,     0,     2,    64,    65,   567,     9,   296,
     1411     527,   525,   249,     3,   456,     3,   262,     0,     3,     3,
     1412       3,   250,     3,     0,     0,     0,   297,   298,   300,   296,
     1413     309,   312,   342,   288,   335,   340,   289,   350,   290,   357,
     1414     354,   364,     0,     0,   365,   291,   475,   479,     3,     3,
     1415       0,     2,   521,   526,   531,   301,     0,     0,   549,   579,
     1416     549,     2,   590,   591,   592,   296,     0,   733,   734,     0,
     1417      12,     0,    13,   296,   272,   273,     0,   297,   292,   293,
     1418     294,   295,   528,   307,   394,   550,   551,   372,   373,    12,
     1419     447,   448,    11,   443,   446,     0,   505,   500,   491,   447,
     1420     448,     0,     0,   530,   223,     0,   296,     0,     0,     0,
     1421       0,     0,     0,     0,     0,   296,   296,     2,     0,   735,
     1422     297,   584,   596,   739,   732,   730,   737,     0,     0,     0,
     1423     256,     2,     0,   534,   441,   442,   440,     0,     0,     0,
     1424       0,   549,     0,   636,   637,     0,     0,   547,   543,   549,
     1425     564,   549,   549,   545,     2,   544,   549,   603,   549,   549,
     1426     606,     0,     0,     0,   296,   296,   314,   362,     2,   296,
     1427     263,   299,   310,   343,   355,   480,     0,     2,     0,   456,
     1428     264,   297,   336,   351,   358,   476,     0,     2,     0,   313,
     1429     337,   344,   345,     0,   352,   356,   359,   363,   448,   296,
     1430     374,   367,   371,     0,   396,   477,   481,     0,     0,     0,
     1431       1,   296,     2,   532,   578,   580,   296,     2,   743,   297,
     1432     746,   547,   547,     0,   297,     0,     0,   275,   549,   545,
     1433       2,   296,     0,     0,   296,   552,     2,   503,     2,   556,
     1434       0,     0,     0,     0,     0,     0,    19,    61,     4,     5,
     1435       6,    17,     0,     0,   296,     2,    66,    67,    68,    69,
     1436      49,    20,    50,    16,    23,    48,    70,   296,     0,    73,
     1437      77,    80,    83,    88,    91,    93,    95,    97,    99,   101,
     1438     106,   497,   753,   454,   496,     0,   452,   453,     0,   568,
     1439     583,   586,   589,   595,   598,   601,   361,     0,     2,   741,
     1440       0,   296,   744,     2,    64,   296,     3,   428,     0,   436,
     1441     297,   296,   309,   335,   289,   350,   357,     3,     3,   410,
     1442     414,   424,   429,   475,   296,   430,   708,   709,   296,   431,
     1443     433,   296,     2,   585,   597,   731,     2,     2,   251,     2,
     1444     461,     0,   459,   458,   457,   143,     2,     2,   253,     2,
     1445       2,   252,     2,   283,     2,   284,     0,   282,     0,     0,
     1446       0,     0,     0,     0,     0,     0,     0,   569,   608,     0,
     1447     456,     2,   563,   572,   662,   565,   566,   535,   296,     2,
     1448     602,   611,   604,   605,     0,   278,   296,   296,   341,   297,
     1449       0,   297,     0,   296,   736,   740,   738,   536,   296,   547,
     1450     257,   265,   311,     0,     2,   537,   296,   501,   338,   339,
     1451     285,   353,   360,     0,   296,     0,   751,   401,     0,   478,
     1452     502,   254,   255,   522,   296,   438,     0,   296,   239,     0,
     1453       2,   241,     0,   297,     0,   259,     2,   260,   280,     0,
     1454       0,     2,   296,   547,   296,   488,   490,   489,     0,     0,
     1455     753,     0,   296,     0,   296,   492,   296,   562,   560,   561,
     1456     559,     0,   554,   557,     0,     0,   296,    56,   296,    70,
     1457      51,   296,    58,   296,   296,    54,    55,     2,   129,     0,
     1458       0,   450,     0,   449,   730,   123,   296,    18,     0,    31,
     1459      32,    37,     2,     0,    37,   113,   114,   115,   116,   117,
     1460     118,   119,   120,   121,   122,   112,   111,     0,    52,    53,
    14591461       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    14601462       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1461      105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
    1462        2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
    1463      120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
    1464        0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
    1465      546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
    1466      679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
    1467      750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
    1468        0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
    1469      465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
    1470      574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
    1471        0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
    1472      258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
    1473        0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
    1474        3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
    1475        3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
    1476        0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
    1477      501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
    1478        0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
    1479        0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
    1480        2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
    1481       72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
    1482       86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
    1483      293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
    1484      293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
    1485      293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
    1486        0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
    1487      615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
    1488      632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
    1489      744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
    1490        3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
    1491      460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
    1492      273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
    1493      658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
    1494      538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
    1495      384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
    1496      293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
    1497        0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
    1498      488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
    1499        0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
    1500       59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
    1501      689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
    1502        0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
    1503      653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
    1504      293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
    1505      671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
    1506      424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
    1507      102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
    1508      244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
    1509      128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
    1510      130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
    1511      144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
    1512      539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
    1513      379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
    1514      668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
    1515      507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
    1516      221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
    1517        0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
    1518      101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
    1519        0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
    1520      673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
    1521      409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
    1522        0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
    1523      293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
    1524        0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
    1525      150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
    1526      612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
    1527      293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
    1528      224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
    1529        0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
    1530      724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
    1531      684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
    1532      469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
    1533      191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
    1534      199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
    1535        0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
    1536      510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
    1537      123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
    1538        3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
    1539        2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
    1540      128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
    1541        0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
    1542        2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
    1543        0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
    1544        0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
    1545        2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
    1546      293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
    1547        3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
    1548      159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
    1549        0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
    1550      229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
    1551        0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
    1552      200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
    1553        0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
    1554      293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
    1555      212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
    1556      169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
    1557        0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
    1558      178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
    1559      206,     3,     3,   205,   207
     1463     108,     2,   648,   455,   645,   549,   549,   653,   482,   296,
     1464       2,   587,   588,     0,   599,   600,     0,     2,   742,   745,
     1465     123,   296,     0,     2,   710,   297,   714,   705,   706,   712,
     1466       0,     2,     2,   670,   549,   753,   619,   549,   549,   753,
     1467     549,   633,   549,   549,   684,   437,   667,   549,   549,   675,
     1468     682,   296,   432,   297,     0,     0,   296,   720,   297,   725,
     1469     753,   717,   296,   722,   753,   296,   296,   296,     0,   123,
     1470       0,    19,     2,     0,    20,     0,   462,   751,     0,     0,
     1471     468,   243,     0,   296,     0,     0,     0,   547,   571,   575,
     1472     577,   607,   610,   614,   617,   570,   609,     0,   286,   660,
     1473       0,   296,   279,     0,     0,     0,     0,   277,     2,     0,
     1474     261,   538,   296,     0,     0,   296,     2,   366,   386,   375,
     1475       0,     0,   380,   374,   752,     0,     0,   399,     0,   297,
     1476       3,   417,     3,   421,   420,   593,     0,   533,   296,    64,
     1477       3,   296,   436,   297,     3,   430,   431,     2,     0,     0,
     1478       0,   487,   308,   296,   483,   485,     3,     2,     2,     0,
     1479     504,     3,     0,   556,   131,     0,     0,   224,     0,     0,
     1480       0,     0,    38,     0,     0,   123,   296,    21,     0,    22,
     1481       0,   694,   699,   451,   691,   549,   549,     0,   109,     3,
     1482       2,    29,     0,    35,     0,    28,     2,    26,     0,   107,
     1483      74,    75,    76,    78,    79,    81,    82,    86,    87,    84,
     1484      85,    89,    90,    92,    94,    96,    98,   100,     0,     0,
     1485     754,   296,     0,     0,     0,   649,   650,   646,   647,   499,
     1486     498,   296,     0,   296,   716,   296,   721,   297,   296,   664,
     1487     296,   296,   707,   663,     2,   296,     0,     0,     0,     0,
     1488       0,     0,     0,     0,   685,     0,   671,   622,   638,   672,
     1489       2,   618,   625,   434,   620,   621,   435,     2,   632,   641,
     1490     634,   635,   668,   669,   683,   711,   715,   713,   753,   270,
     1491       2,   747,     2,   425,   719,   724,   426,     0,   404,     3,
     1492       3,     3,     3,   456,     3,     0,     2,   470,   467,   752,
     1493       0,   463,     2,   466,   469,     0,   296,   244,   266,     3,
     1494     274,   276,     0,   456,     2,   573,   574,     2,   612,   613,
     1495       0,   661,   539,     3,   347,   346,   349,   348,   296,   540,
     1496       0,   541,   374,     0,     0,   296,   296,     0,     0,   694,
     1497     384,   387,   391,   549,   391,   390,   383,   376,   549,   378,
     1498     381,   296,   401,   395,   105,   402,   751,     0,     0,   439,
     1499     242,     0,     0,     3,     2,   670,   432,     0,   529,     0,
     1500     753,   491,     0,   296,   296,   296,     0,   553,   555,   132,
     1501       0,     0,   217,     0,     0,     0,   225,   226,    57,     0,
     1502      59,    62,    63,     0,     2,   130,     0,     0,     0,   695,
     1503     696,   692,   693,   461,    71,    72,   110,   127,     3,   109,
     1504       0,     0,    25,    37,     3,     0,    34,   103,     0,     3,
     1505     652,   656,   659,   651,     3,   594,     3,   718,   723,     2,
     1506      64,   296,     3,     3,   297,     0,     3,   624,   628,   631,
     1507     640,   674,   678,   681,   296,     3,   623,   639,   673,   296,
     1508     296,   427,   296,   296,   748,     0,     0,     0,     0,   258,
     1509       0,   105,     0,     3,     3,     0,   464,     0,   460,     0,
     1510       0,   247,   296,     0,     0,   131,     0,     0,     0,     0,
     1511       0,   131,     0,     0,   109,   109,    19,     2,     0,     0,
     1512       3,   133,   134,     2,   145,   135,   136,   137,   138,   139,
     1513     140,   147,   149,     0,     0,     0,   287,   296,   296,   549,
     1514       0,   542,   296,   377,   379,     0,   393,   695,   388,   392,
     1515     389,   382,   386,   369,   400,     0,   581,     2,   666,   665,
     1516       0,   671,     2,   484,   486,   506,     3,   514,   515,     0,
     1517       2,   510,     3,     3,     0,     0,   558,   224,     0,     0,
     1518       0,   224,     0,     0,   123,   698,   702,   704,   697,   751,
     1519     109,     0,     3,   663,    47,    46,     3,    39,    41,    36,
     1520       0,     3,   102,   104,     0,     2,   654,   655,     0,     0,
     1521     296,     0,     0,     0,     3,   640,     0,     2,   626,   627,
     1522       2,   642,     2,   676,   677,     0,     0,    64,     0,     3,
     1523       3,     3,     3,   412,   411,   415,     2,     2,   750,   749,
     1524     124,     0,     0,     0,     0,     3,   465,     3,     0,   245,
     1525     148,     3,   297,   296,     0,     0,     0,     0,     2,     0,
     1526     193,     0,   191,     0,     0,     0,     0,     0,     0,     0,
     1527     549,   123,     0,   153,   150,   296,     0,     0,   269,   281,
     1528       3,     3,   548,   615,   370,   385,   398,   296,   268,   296,
     1529       0,   517,   494,   296,     0,     0,   493,   508,     0,     0,
     1530       0,   218,     0,   227,    60,     2,   700,   701,     0,   128,
     1531     125,     0,     0,     0,     0,     0,    24,     0,   657,   296,
     1532     582,   267,   726,   727,   728,     0,   679,   296,   296,   296,
     1533       3,     3,     0,   687,     0,     0,     0,     0,   296,   296,
     1534       3,   546,   124,   472,     0,     0,   248,   297,     0,     0,
     1535       0,     0,   296,   194,   192,   189,     0,   195,     0,     0,
     1536       0,     0,   199,   202,   200,   196,     0,   197,   131,    37,
     1537     146,   144,   246,     0,     0,   419,   423,   422,     0,   511,
     1538       2,   512,     2,   513,   507,   296,   230,     0,   228,     0,
     1539     230,   296,    33,   126,    40,    30,     2,    44,     2,    42,
     1540      27,     3,   729,     3,     3,     3,     0,     0,   686,   688,
     1541     629,   643,   271,     2,   409,     3,   408,     0,   474,   471,
     1542     131,     0,     0,   131,     3,     0,   131,   190,     0,     2,
     1543       2,   211,   201,     0,     0,     0,   142,     0,   576,   616,
     1544       2,     0,     0,     2,   231,     0,     0,   219,     0,     3,
     1545       0,     0,     0,     0,     0,     0,   689,   690,   296,     0,
     1546     473,   154,     0,     0,     2,   167,   131,   156,     0,   184,
     1547       0,   131,     0,     2,   158,     0,     2,     0,     2,     2,
     1548       2,   198,    34,   296,   516,   518,   509,     0,     0,     0,
     1549       0,     0,     3,     3,   658,   630,   644,   680,   413,   131,
     1550     160,   163,     0,   162,   166,     3,   169,   168,     0,   131,
     1551     186,   131,     3,     0,   296,     0,   296,     0,     2,     0,
     1552       2,   141,     2,   232,   233,     0,   229,   220,   703,     0,
     1553       0,   155,     0,     0,   165,   235,   170,     2,   237,   185,
     1554       0,   188,   174,   203,     3,   212,   216,   205,     3,     0,
     1555     296,     0,   296,     0,     0,     0,    45,    43,   161,   164,
     1556     131,     0,   171,   296,   131,   131,     0,   175,     0,     0,
     1557     694,   213,   214,   215,     0,   204,     3,   206,     3,   296,
     1558     221,   234,   151,   172,   157,   131,   238,   187,   182,   180,
     1559     176,   159,   131,     0,   695,     0,     0,     0,     0,   152,
     1560     173,   183,   177,   181,   180,   178,     3,     3,     0,     0,
     1561     495,   179,   207,   209,     3,     3,   208,   210
    15601562};
    15611563
     
    15631565static const yytype_int16 yydefgoto[] =
    15641566{
    1565       -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
    1566      304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
    1567      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
    1568      320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
    1569     1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
    1570     1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
    1571     1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
    1572      956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
    1573       51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
    1574       61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
    1575      352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
    1576      120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
    1577     1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
    1578      859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
    1579      135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
    1580       85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
    1581       88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
    1582       91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
    1583      125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
    1584      269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
    1585      197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
    1586      612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
    1587      617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
    1588      366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
    1589      570
     1567      -1,   815,   468,   300,    47,   133,   134,   301,   302,   303,
     1568     304,   305,   762,   763,  1136,  1137,  1138,   306,   381,   308,
     1569     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     1570     319,   320,  1032,   518,   977,   547,   322,   978,   949,  1059,
     1571    1522,  1061,  1062,  1063,  1064,  1523,  1065,  1066,  1441,  1442,
     1572    1405,  1406,  1407,  1501,  1502,  1506,  1507,  1542,  1543,  1067,
     1573    1365,  1068,  1069,  1302,  1303,  1304,  1484,  1070,   145,   955,
     1574     956,   957,  1385,  1465,  1476,  1477,   469,   470,   876,   877,
     1575    1040,    51,    52,    53,    54,    55,   347,   158,    58,    59,
     1576      60,    61,    62,   349,    64,    65,   264,    67,    68,   274,
     1577     351,   352,    71,    72,    73,   118,    75,   204,   354,   119,
     1578      78,   120,    80,    81,   455,    82,   454,   689,   690,   691,
     1579     910,  1088,   911,    83,    84,   458,   456,   697,   857,   858,
     1580     859,   860,   700,   701,   702,   359,   360,   361,   362,   466,
     1581     340,   135,   136,   522,   324,   170,   646,   647,   648,   649,
     1582     650,    85,   121,    87,   489,   490,   941,   491,   277,   495,
     1583     325,    88,   137,   138,    89,  1325,  1110,  1111,  1112,  1113,
     1584      90,    91,   718,    92,   273,    93,    94,   187,  1034,   680,
     1585     412,   125,    95,   501,   502,   503,   188,   268,   190,   191,
     1586     192,   269,    98,    99,   100,   101,   102,   103,   104,   195,
     1587     196,   197,   198,   199,   827,   606,   607,   608,   609,   200,
     1588     611,   612,   613,   573,   574,   575,   576,   752,   105,   615,
     1589     616,   617,   618,   619,   620,   970,   754,   755,   756,   596,
     1590     365,   366,   367,   368,   326,   164,   107,   108,   109,   370,
     1591     695,   570
    15901592};
    15911593
    15921594/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15931595   STATE-NUM.  */
    1594 #define YYPACT_NINF -1323
     1596#define YYPACT_NINF -1338
    15951597static const yytype_int16 yypact[] =
    15961598{
    1597     7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
    1598    -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1599    -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
    1600      733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
    1601    -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
    1602    -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
    1603    -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
    1604     1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
    1605    -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
    1606      616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
    1607       85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
    1608    -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
    1609      844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
    1610      608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
    1611    -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
    1612      717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
    1613     5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
    1614    -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
    1615      534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
    1616    -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
    1617    -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
    1618    -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
    1619    -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
    1620     5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
    1621    -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
    1622    -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
    1623    -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
    1624    -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
    1625      922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
    1626    -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
    1627    -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
    1628      756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
    1629    -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
    1630    -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
    1631      990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
    1632     8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
    1633    -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
    1634    -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
    1635     5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1636    -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
    1637      992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
    1638      229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
    1639    -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
    1640     1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
    1641    -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
    1642    -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
    1643    -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
    1644     1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
    1645     4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
    1646      962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
    1647    -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
    1648    -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
    1649     1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
    1650    -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
    1651    -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
    1652    10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
    1653    10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
    1654    -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
    1655    -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
    1656     5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
    1657     1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
    1658      132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
    1659      985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
    1660      962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
    1661     5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
    1662    -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
    1663    -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
    1664      285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
    1665    -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
    1666      538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
    1667    -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
    1668    -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
    1669     5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
    1670    -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
    1671     1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
    1672      682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
    1673    -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
    1674    -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
    1675      411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
    1676     9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
    1677     9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
    1678     6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
    1679     1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
    1680    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1681    -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
    1682    -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
    1683    -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
    1684    -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
    1685    -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
    1686     1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
    1687    -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
    1688    -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
    1689     8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
    1690     1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
    1691    -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
    1692     1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
    1693    -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
    1694    -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
    1695      631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
    1696      985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
    1697     9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
    1698      861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
    1699    -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
    1700      685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
    1701    -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
    1702    10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
    1703    -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1704    -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
    1705    -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
    1706    -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
    1707     1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
    1708    -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
    1709       94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
    1710     1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
    1711    -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
    1712     1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
    1713    -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
    1714    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
    1715     1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
    1716     9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
    1717     1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
    1718    -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
    1719    -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
    1720     9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
    1721    -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
    1722      509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
    1723    -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
    1724    -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
    1725    -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
    1726    -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
    1727      834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
    1728     1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
    1729    -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
    1730    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1731    -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
    1732    -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
    1733    10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
    1734     1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
    1735     1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
    1736     1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
    1737     1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
    1738    -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
    1739     9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
    1740     1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
    1741    -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
    1742      285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
    1743    -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
    1744    10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
    1745    -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
    1746     1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
    1747     6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
    1748    -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
    1749     9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
    1750      285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
    1751    -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
    1752    -1323, -1323, -1323, -1323, -1323
     1599    4794,  8872, -1338,   118, -1338, -1338, -1338, -1338, -1338, -1338,
     1600   -1338,   -32, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
     1601   -1338, -1338, -1338, -1338, -1338, -1338,    75,    75,    75,   889,
     1602     761,    17,  6057,   231, -1338, -1338, -1338, -1338, -1338,   166,
     1603   -1338, -1338, -1338,   566,   192, -1338, -1338, -1338, -1338,  4939,
     1604   -1338, -1338, -1338, -1338,   195,   234, -1338,  1148, -1338, -1338,
     1605   -1338, -1338,   170,  2042,   352,    44,  7574, -1338, -1338,  9333,
     1606    1157, -1338, -1338,  1542,   364,  3919,   608,   982,  1542,  1041,
     1607   -1338, -1338,   474,   402, -1338,  1542,  1242, -1338,   273, -1338,
     1608     455,   478, -1338, -1338, -1338, -1338,   354,   234,    75, -1338,
     1609      75, -1338, -1338, -1338, -1338,  9218,  1148, -1338, -1338,  1148,
     1610   -1338,   387, -1338,  9518, -1338, -1338,  2342,  9556, -1338,   992,
     1611     992,   992, -1338, -1338, -1338,    75, -1338, -1338, -1338,   374,
     1612     386,   471, -1338, -1338, -1338,   480, -1338, -1338, -1338, -1338,
     1613   -1338,   525,   539, -1338, -1338,    53,  8841,  1022,    54,   558,
     1614     563,   587,   592,   605,   615,  8759,  7097,   644,   585, -1338,
     1615    9371, -1338, -1338, -1338, -1338,   619, -1338,   349,  4637,  4637,
     1616   -1338,   657,   446, -1338, -1338, -1338, -1338,   651,   453,   454,
     1617     476,    75,   659, -1338, -1338,  2042,  2592,   742, -1338,    57,
     1618   -1338,    75,    75,   234, -1338, -1338,   101, -1338,    75,    75,
     1619   -1338,  3079,   687,   706,   992,  6771, -1338, -1338,   707,  4939,
     1620   -1338, -1338,  1542, -1338, -1338, -1338,   234, -1338,  1148,   195,
     1621   -1338,  7912, -1338,   992,   992,   992,   234, -1338,   889, -1338,
     1622    4555, -1338, -1338,   691,   992, -1338,   992, -1338,   166,  8841,
     1623   -1338,   713, -1338,   761,   725,   992, -1338,   889,   756,   768,
     1624   -1338,  6057,   675, -1338, -1338, -1338,  9300, -1338, -1338,  2361,
     1625   -1338,   742,   105, 10239,  9556,  2342,  3079, -1338,   194, -1338,
     1626   -1338,  9518,  1148,   743,  7605, -1338, -1338,   126, -1338, 10586,
     1627     755,   847, 10372,   832, 10391, 10448, -1338,   839, -1338, -1338,
     1628   -1338, -1338, 10467, 10467,  8615,   824, -1338, -1338, -1338, -1338,
     1629   -1338, -1338, -1338,   901, -1338,   679,  3121,  8954, 10391, -1338,
     1630     507,   418,   680,   295,   694,   894,   852,   888,   930,    66,
     1631   -1338, -1338,   938,   665, -1338,   380, -1338, -1338,  1022, -1338,
     1632   -1338,    12,   949, -1338,   338,   949,   961,   166, -1338, -1338,
     1633     968,  9218, -1338,   983,   984,  9067, -1338, -1338,   776,  1555,
     1634    8330,  6771,  1542, -1338,  1542,   992,   992, -1338, -1338, -1338,
     1635   -1338, -1338, -1338,   992,  9218,  1148, -1338, -1338,  9594,  1098,
     1636   -1338,  8061, -1338, -1338, -1338, -1338, -1338, -1338, -1338,   995,
     1637    5881, 10391, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
     1638   -1338, -1338, -1338, -1338, -1338, -1338,  2342, -1338,   489,   993,
     1639     994,  1000,   732,  1004,  1007,  1008,  2592, -1338, -1338,   969,
     1640     195,  1030, -1338, -1338,  1024, -1338, -1338, -1338,  9300, -1338,
     1641   -1338, -1338, -1338, -1338,  3079, -1338,  8841,  8841, -1338,   992,
     1642    2342,  6890,  1148,  8403, -1338, -1338, -1338, -1338,  9300,   105,
     1643   -1338, -1338,  1542,   234, -1338, -1338,  9300, -1338,  6655, -1338,
     1644   -1338,   992,   992,   465,  8248,  1029,  1028,  1015,  1033,   992,
     1645   -1338, -1338, -1338, -1338,  9742, -1338,   591,  6518, -1338,   234,
     1646    1044, -1338,  2342, 10668, 10296, -1338, -1338, -1338, -1338,   929,
     1647    3079, -1338,  8476,   742,  5771, -1338, -1338, -1338,  1039,   645,
     1648     938,   761,  7605,   809,  9518, -1338,  7605, -1338, -1338, -1338,
     1649   -1338,   688, -1338,  1046,   847,   251,  8615, -1338,  9627, -1338,
     1650   -1338,  8615, -1338,  8728,  8615, -1338, -1338,  1048, -1338,   751,
     1651    1043,   711,  1057, -1338, -1338,  9447,  6740, -1338,   107, -1338,
     1652   -1338, 10239, -1338,   318, 10239, -1338, -1338, -1338, -1338, -1338,
     1653   -1338, -1338, -1338, -1338, -1338, -1338, -1338, 10239, -1338, -1338,
     1654   10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391,
     1655   10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391,  4422, 10239,
     1656   -1338,   665,  1831, -1338, -1338,    75,    75, -1338, -1338,  8841,
     1657   -1338, -1338,  1024,   675, -1338,  1024, 10315, -1338, -1338, -1338,
     1658    5500,  6740,  1056,  1064, -1338,  9556, -1338, -1338,   619, -1338,
     1659    1065,  1323,  1067,  2196,   209,   938, -1338,    75,    75,   938,
     1660     243, -1338,    75,    75,  1024, -1338, -1338,    75,    75, -1338,
     1661     949,  9665,  1148, 10813,   217,   306,  9665, -1338,  2361, -1338,
     1662     938, -1338,  9218, -1338,   212,  8027,  8027,  8027,  1148, -1338,
     1663    6120,  1053,   995,   535,  1061,  1066, -1338,  1071,  4637,   421,
     1664   -1338,  1166,  1148,  8027,   675,  2342,   675,   742,   394,   949,
     1665   -1338, -1338,   788,   949, -1338, -1338, -1338,   847, -1338,   949,
     1666     234,  9742, -1338,   764,  1087,   806,  1088, -1338,  1089,   234,
     1667   -1338, -1338,  9300,   234,  1090,  9627,  1096, -1338,  1729, -1338,
     1668     527,   550,   761, -1338,   761,  1102, 10391, -1338,   761, 10813,
     1669   -1338, -1338,  1092, -1338, -1338, -1338,   675, -1338, 10741,   984,
     1670   -1338,  8027,   857,  8330, -1338, -1338,   619,  1103,  1112,  1039,
     1671    3523, -1338, -1338,  7605, -1338, -1338,  1097, -1338, -1338,  1121,
     1672   -1338,  1097,  1124, 10586, 10239,  1105,  1104,    94,  1128,  1123,
     1673    1132,  1133, -1338,  1136,  1138,  9485,  6859, -1338, 10239, -1338,
     1674     711,  1914, -1338, -1338, -1338,    75,    75,  6186, 10239,  1134,
     1675   -1338, -1338,   822, -1338, 10239, -1338, -1338, -1338,   715, -1338,
     1676   -1338, -1338, -1338,   507,   507,   418,   418,   680,   680,   680,
     1677     680,   295,   295,   694,   894,   852,   888,   930, 10391,   250,
     1678   -1338,  9742,  1151,  1153,  1158,  1831, -1338, -1338, -1338, -1338,
     1679   -1338,  9742,   827,  8027, -1338,  9218, -1338,  7216,  9180, -1338,
     1680    8061,  7097, -1338, -1338,  1323,  9742,   936,  1159,  1162,  1164,
     1681    1167,  1170,  1175,  1178, -1338,  3437,  2196, -1338, -1338, -1338,
     1682   -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
     1683   -1338, -1338, -1338, -1338,  1024, -1338, -1338, -1338,   938, -1338,
     1684   -1338, -1338, -1338, -1338, -1338, -1338, -1338,  1179, -1338,  1180,
     1685    1181, -1338, -1338,   195,  1134,  6120, -1338, -1338, -1338,  5881,
     1686    1143, -1338, -1338, -1338, -1338,   761,  6348,  1247, -1338, -1338,
     1687   -1338, -1338,  1165,   195, -1338, -1338,  1024, -1338, -1338,  1024,
     1688     230,  1024, -1338, -1338, -1338, -1338, -1338, -1338,  9409, -1338,
     1689     234, -1338, -1338,   554,   555,  9594,  7335,  2114, 10391,  2586,
     1690   -1338, -1338,  1163,    40,  1163, -1338,   761, -1338,    75, -1338,
     1691   -1338,  8985,  1015, -1338, -1338, -1338,  1028,  1185,  1186, -1338,
     1692   -1338,  1189,  1191, -1338,   857,  1994, -1338,   444, -1338,  3523,
     1693     938, -1338,  1195,  7605,  9703,  8841,  1196, -1338, -1338,  1192,
     1694    1200,  1182, -1338, 10391,  1205,   298,  1203, -1338,  1206,   675,
     1695    1206, -1338, -1338,  1206,  1209, -1338,  1214,  1216,  1217,  1914,
     1696   -1338, -1338, -1338,  5881, -1338, -1338, -1338, -1338,  1215, 10239,
     1697    1220,   831, -1338, 10239, -1338,   831, -1338, -1338, 10239, -1338,
     1698     972,   949, -1338, -1338, -1338, -1338, -1338, -1338, -1338,   995,
     1699     984,  9067, -1338, -1338,  7454,  1229, -1338,   975,   949, -1338,
     1700     979,   991,   949, -1338,   992,  3705, -1338, -1338, -1338,  9742,
     1701    9742, -1338,  8403,  8403, -1338,  1226,  1232,  1235,  1240, -1338,
     1702    1244,   564,    43,  1134, -1338,   831, -1338,  4637, -1338, 10239,
     1703     582, -1338,  6621,  1243,  1245, 10182,  1248,  1251,    46,    70,
     1704     103, 10239,  1252,   234, 10239, 10239,  1238,  1257,   333,  1239,
     1705   -1338, -1338, -1338,  1258, -1338, -1338, -1338, -1338, -1338, -1338,
     1706   -1338, -1338, -1338,   761,  1268, 10239, -1338,  9742,  9742,    75,
     1707    1269, -1338,  9098, -1338, -1338,   767, -1338,  2586, -1338, -1338,
     1708   -1338, -1338,  1729, -1338, -1338,  1270, -1338, -1338, -1338, -1338,
     1709    1273,  1994, -1338, -1338,  1256, -1338,  1097, -1338, -1338,  2342,
     1710    1271, -1338, -1338, -1338,   836,  1276, -1338,    94,  1279, 10391,
     1711    1265,    94,    94,  1293,  9447,  1023,   949, -1338, -1338,  1071,
     1712   10239,  1292,  1215,   513, -1338, -1338,  1296, -1338,    -5, -1338,
     1713    1297,  1296, -1338, -1338,  1304, -1338, -1338,  1024,  1306,  1309,
     1714    6978,  1310,  1312,  1313, -1338, -1338,  1316, -1338, -1338,  1024,
     1715   -1338, -1338, -1338, -1338,  1024, 10239, 10239,   984,  1315, -1338,
     1716   -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
     1717   -1338, 10391, 10391,  1317,  1318,  1296, -1338, -1338,   761, -1338,
     1718   -1338, -1338,  7839,  9703, 10239, 10239,  1381, 10239, -1338,  1299,
     1719   -1338,  1303, -1338,  1305, 10239,  1311, 10239,  1014,  1314,    39,
     1720      75,  5221,  1493, -1338, -1338,  6348,  1321,   584, -1338, -1338,
     1721   -1338, -1338, -1338, -1338, -1338, -1338, -1338, 10002, -1338,  8476,
     1722    1328, -1338, -1338,  9703,   589,   606, -1338,  1327,  1325,   847,
     1723    1334, -1338,   331, -1338, -1338, -1338, -1338,  1024,  1332, -1338,
     1724   -1338,  1336,   831,  1339,   320,   457, -1338,  1341, -1338,  9742,
     1725   -1338, -1338, -1338, -1338, -1338,  1345, -1338,  9742,  9742,  9742,
     1726   -1338, -1338,  1351, -1338,  1355,  1358,  1360,   623,  8100,  8215,
     1727   -1338, -1338,   463, -1338,  1361,  1370, -1338,  8549,   841,   866,
     1728    1374,   868,  6487, -1338, -1338, -1338,   616, -1338,   881,  1375,
     1729    1379,   234,  1429,   861, -1338, -1338, 10239, -1338, 10182, 10239,
     1730   -1338, -1338, -1338,  1383,  1384, -1338, -1338, -1338,  1382, -1338,
     1731   -1338, -1338, -1338, -1338, -1338,  9703,   847,  1386, -1338,  1366,
     1732     847,  9742, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
     1733   -1338, -1338, -1338, -1338, -1338, -1338,  1389,  1390, -1338, -1338,
     1734   -1338, -1338, -1338, -1338, -1338,  1395, -1338,  1394, -1338, -1338,
     1735   10182,   334, 10239, 10182, -1338,  1398, 10239, -1338,   339,  1415,
     1736    1417, -1338, -1338,  1405,  1406,  1393, -1338,   840, -1338, -1338,
     1737   -1338,  1148,  2342,  1403, -1338,   329, 10391, -1338,   897, -1338,
     1738     831,   831,  1411,  1412,  1416,  1421, -1338, -1338,  8403,  1423,
     1739   -1338,  1485, 10391,  1407, -1338, -1338, 10094, -1338,   898, -1338,
     1740    1410, 10182,  1422, -1338, -1338,  1434, -1338,  1443, -1338,  1459,
     1741    1461, -1338,  1428,  9703, -1338, -1338, -1338,   847,   675,  1452,
     1742    1431,  1455,  1296,  1296, -1338, -1338, -1338, -1338, -1338, 10182,
     1743      81, -1338,   447, -1338, -1338,  7690, -1338, -1338,  1435, 10239,
     1744   -1338, 10239,  7690,   234,  9627,   234,  9627,  1465, -1338,  1466,
     1745   -1338, -1338,  1456, -1338, -1338,   909, -1338, -1338, -1338,  1470,
     1746    1471, -1338, 10391, 10391, -1338, -1338,   880,   254, -1338, -1338,
     1747    1453, -1338,   880, -1338, -1338,  2645,   675, -1338, -1338,   234,
     1748    9627,   234,  9627,  1480,  1458,   675, -1338, -1338, -1338, -1338,
     1749   10094,  1476,   880,  7766, 10239, 10006,  1478,   880,  1486,  2645,
     1750    2922, -1338, -1338, -1338,  1487, -1338, -1338, -1338, -1338,  8841,
     1751   -1338, -1338, -1338,  9873, -1338, 10094, -1338, -1338,  1467,  9785,
     1752   -1338, -1338, 10006,   234,  2922,   234,  1495,  1498,   927, -1338,
     1753    9873, -1338, -1338, -1338,  9785, -1338, -1338, -1338,   234,   234,
     1754   -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338
    17531755};
    17541756
     
    17561758static const yytype_int16 yypgoto[] =
    17571759{
    1758    -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
    1759    -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
    1760      423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
    1761     -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
    1762    -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
    1763    -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
    1764    -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
    1765      482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
    1766     -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
    1767      -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
    1768       54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
    1769     2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
    1770      699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
    1771       34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
    1772    -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
    1773    -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
    1774    -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
    1775     1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
    1776    -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
    1777        7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
    1778     -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
    1779    -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
    1780     -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
    1781     -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
    1782     -397
     1760   -1338,  4260,  2887, -1338,  1463, -1338,  1198,   661,  -268,   942,
     1761   -1338,   552,  -528,  -471,  -934,  -784, -1338,  4910,     0, -1338,
     1762    -100,   434,   472,   506,   438,  1049,  1050,  1051,  1062,  1055,
     1763   -1338,  1094,  -577,  5180,  -896, -1338,  -712,   636,   -68,  -593,
     1764    -654, -1338,  1469, -1338,   408, -1065, -1338, -1338,   159, -1338,
     1765   -1118,  -880,   265, -1338, -1338, -1338, -1338,    92, -1253, -1338,
     1766   -1338, -1338, -1338, -1338, -1338,   341, -1303,    36, -1338,  -904,
     1767   -1338,   518,   311, -1338,   196, -1338,  -309, -1338, -1338, -1338,
     1768     571,  -749, -1338, -1338,    16,  -930,   172,  1119, -1338, -1338,
     1769   -1338,  -149, -1338,    71,   966,  -196,  1532,  4034, -1338, -1338,
     1770      83,   174,   287,  2700, -1338,  1836, -1338, -1338,    55,  2097,
     1771   -1338,  2401,  2181, -1338, -1338, -1338,  -656, -1338,   962,   964,
     1772     560,   736,  -249, -1338, -1338, -1338,   955,   734,  -456, -1338,
     1773    -116,   -94,   869, -1338, -1338,  -963,  -979,    -2,   913,  1074,
     1774      29, -1338,   719,   357,  -283,  -191,  -146,   681,   789, -1338,
     1775    1010, -1338,  2818,  1589,  -439,   940, -1338, -1338,   720, -1338,
     1776    -237, -1338,   109, -1338, -1338, -1338, -1275,   435, -1338, -1338,
     1777   -1338,  1183, -1338,    32, -1338, -1338,  -845,  -111, -1337,  -112,
     1778    3150, -1338,  3946, -1338,   941, -1338,  -138,  1137,  -181,  -176,
     1779    -174,     7,   -40,   -33,   -28,  1352,    38,    50,    77,  -134,
     1780    -173,  -171,  -166,  -165,  -261,  -504,  -490,  -476,  -565,  -319,
     1781    -523, -1338, -1338,  -525,  1107,  1111,  1115,  -135,  4740,  -582,
     1782    -583,  -534,  -519,  -480, -1338,  -505,  -725,  -715,  -709,  -592,
     1783    -312,  -258, -1338, -1338,   326,    26,   -81, -1338,  3689,   -15,
     1784    -601,  -356
    17831785};
    17841786
     
    17861788   positive, shift that token.  If negative, reduce the rule which
    17871789   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1788 #define YYTABLE_NINF -522
     1790#define YYTABLE_NINF -525
    17891791static const yytype_int16 yytable[] =
    17901792{
    1791       49,   113,   407,   149,   453,   399,   428,    97,   150,   440,
    1792      151,   267,   400,   753,   767,   401,   114,  1071,   408,   106,
    1793      106,   402,   974,   280,   869,   828,   965,   403,    57,    57,
    1794      505,   845,    49,   966,  1188,    50,  1172,   152,   404,    97,
    1795      597,   405,   967,   147,   383,   384,   741,   610,  1070,    49,
    1796      357,   106,   827,   143,    70,   920,   161,   605,   410,    96,
    1797       57,   795,   177,   186,   819,  1380,   209,    50,   153,    49,
    1798      193,    56,   115,   216,   923,  1303,   226,  1440,   949,   726,
    1799       69,   281,   407,   731,   219,   399,    70,   820,   106,    31,
    1800       31,    96,   400,   724,    57,   401,   425,    57,   408,   821,
    1801       31,   402,   148,    56,   831,   113,   822,   403,    96,   162,
    1802      838,   261,    69,   113,   262,   670,   266,   271,   404,   122,
    1803      212,   405,   189,   194,    31,    96,   217,    31,    96,   227,
    1804      816,  1138,   475,   477,   510,   679,   154,   210,   202,   817,
    1805      220,   260,  1196,   683,  1304,   149,   307,   147,  1440,   818,
    1806      150,  1198,   151,   166,   161,   113,   345,   548,   549,   252,
    1807      209,   411,   411,  1459,    31,   986,   527,   373,  1200,   629,
    1808      419,    31,   411,   633,  1170,  1171,   291,   715,  1178,   152,
    1809      914,  1182,   965,  1235,   348,   186,   186,  1239,   203,   966,
    1810      358,   342,    76,   161,  1078,   548,   721,   481,   967,   411,
    1811      668,   266,  1197,  1469,  1179,   952,    96,   162,   832,    49,
    1812      153,  1199,   835,  1201,  1187,   409,   161,   166,   123,    96,
    1813      374,   209,   665,   439,    76,   149,   252,   329,   443,  1179,
    1814      150,   548,   151,   852,   829,   471,   602,   855,   666,   307,
    1815     1172,   836,  1030,   602,   398,   189,   162,  1017,   816,    57,
    1816      327,    49,  1140,   735,   176,  -233,  -233,   817,    97,   271,
    1817      476,   674,   676,  1081,   271,   266,   266,   818,    96,   162,
    1818      106,   113,   463,   161,  1016,   442,  1004,   483,   154,    57,
    1819       96,   444,  1188,   992,   500,   923,    50,   142,   924,  1249,
    1820     1172,   657,   441,  1527,   307,   163,   665,   860,   861,   820,
    1821      146,   610,  1094,   176,  1485,    70,   176,   307,  1205,  1206,
    1822       96,   821,   666,   436,   878,   831,   597,  1250,   822,   672,
    1823     1542,   597,    56,   572,   479,   677,  -233,   357,   147,   730,
    1824      923,    69,   567,  1399,  1400,   373,   168,   155,  1513,   377,
    1825     1515,   113,   816,   327,   580,   345,   411,   476,   743,   603,
    1826      621,   817,   176,   177,  1071,   378,   828,    63,   736,   163,
    1827      169,   818,  1399,  1400,   626,  1139,   568,  1497,   626,   569,
    1828      630,   113,   932,  1502,   634,   436,   748,   589,   737,   899,
    1829      110,   144,   139,   140,  1246,  1070,   447,    96,   374,    63,
    1830      987,    41,    42,  1522,  1202,   805,   266,   471,  1529,   171,
    1831      769,   770,   771,  1401,   212,   460,   186,   342,   604,  1172,
    1832      845,   166,   578,   373,   799,   176,  1030,   471,   579,   820,
    1833      357,   583,   243,   411,   266,   471,   307,   307,  1170,  1171,
    1834      266,   821,  1410,   626,   110,  1188,  1119,   854,   822,  1326,
    1835      110,   715,  1188,    76,  1526,    41,    42,   684,    76,   599,
    1836     1020,    41,    42,   579,   113,   435,  1120,   553,   554,  1327,
    1837     1127,   348,  1363,   995,  1537,   189,   374,   358,  -121,   176,
    1838     -121,  1541,   266,   760,  -121,   493,   176,   705,   494,   765,
    1839      266,   387,   626,   706,    49,   357,   953,   373,   720,  -121,
    1840     -121,    97,   229,  1188,   113,   230,   923,   388,   234,  1085,
    1841      236,   557,   558,   106,   911,  1245,   307,   245,   113,  1158,
    1842     1160,   307,    57,   307,   307,  1136,   714,   435,  1424,    50,
    1843      913,   751,  1017,   610,   870,   113,   345,   212,   882,  1105,
    1844      327,   327,  1425,  1015,  1429,  1430,   559,   560,    70,   883,
    1845      523,   411,  1102,    96,  1117,   176,   722,   604,  1435,  1470,
    1846      880,   181,   723,   163,   348,    56,   923,   923,   110,   390,
    1847      358,   342,   176,  1471,    69,   110,   176,   139,   140,    41,
    1848       42,   572,   572,   555,   556,   391,    41,    42,  1127,   307,
    1849     1444,   110,   201,   914,     2,   206,     4,     5,     6,     7,
    1850      626,   345,    41,    42,   286,   621,   392,  1331,   327,  -289,
    1851      715,   603,   111,   603,   865,    41,    42,   973,    63,   997,
    1852       76,   247,   393,   472,   805,  1475,   250,   327,   732,   348,
    1853     1333,   626,  1475,  -517,   733,   358,   626,   847,   621,   176,
    1854       76,   514,   626,  1361,   229,   626,   626,   626,    76,   871,
    1855     -468,   643,  -468,   862,   848,   886,  1015,   411,   849,    35,
    1856      394,    36,  1028,   626,   915,   266,   252,   877,   872,  -468,
    1857      815,   471,   604,   348,   348,   348,   395,  1142,   917,   411,
    1858      916,   807,  1075,  1523,  1444,   915,    76,   442,   917,  1444,
    1859     1185,   348,   263,   327,   918,   113,    37,   929,   908,  1185,
    1860       40,  1082,  1317,   -10,  1083,   597,  1186,    41,    42,  1444,
    1861      692,   498,   805,   110,   357,  1309,  1444,  1409,  1318,  1113,
    1862     1237,   626,   934,   621,    41,    42,   747,  -441,  1319,   720,
    1863      720,   748,   748,    43,   407,   846,   399,   561,   562,   893,
    1864      599,    45,    46,   400,  1320,   748,   401,  1364,   500,   348,
    1865      408,  -442,   402,   895,  1035,   113,   345,   912,   403,   748,
    1866      751,   751,   523,   212,   523,   276,   571,   523,   411,   404,
    1867      523,   923,   405,   981,    45,    46,   519,   212,   850,   982,
    1868     1277,  1278,   851,   278,   229,   472,   234,   923,   815,   604,
    1869      714,   342,   965,  1154,   850,   411,  1374,   176,  1101,   966,
    1870     1477,   750,  1478,   411,   572,   472,   279,  -103,   967,    45,
    1871       46,  -103,   626,   472,   626,   110,  1000,   139,   140,   626,
    1872      345,   330,   933,   603,   602,  1162,    41,    42,   994,   176,
    1873       45,    46,    37,  1233,   706,   603,    40,   331,  1349,   579,
    1874      348,  1357,  1350,    41,    42,   176,   332,   748,   348,   712,
    1875     1358,    63,   715,   371,   358,  1524,   748,   923,   923,   176,
    1876      548,   985,   982,   465,     8,     9,    10,    11,    12,   813,
    1877      212,   602,   329,   411,   229,   953,   372,    45,    46,   953,
    1878      953,  1360,   815,   550,    76,   307,  1365,   748,  -290,   551,
    1879      552,   333,   748,    31,   604,     8,     9,    10,    11,    12,
    1880      807,   510,  1370,  1371,   106,  1427,   334,   626,   673,   675,
    1881       76,  1424,   665,    57,   113,   345,   908,   911,   908,   335,
    1882     1445,    34,  1183,   376,    31,    37,   748,   385,   666,    40,
    1883      113,   715,  1157,   913,   602,   389,    41,    42,   805,    70,
    1884      176,   692,   409,   934,   934,  1491,  1419,   982,   720,   714,
    1885      342,  1492,    34,   113,   307,   129,    56,   130,   131,   132,
    1886       48,   112,   719,  1399,  1400,    69,    41,    42,  1106,   397,
    1887       45,    46,   106,  1547,   214,  1084,   426,   912,   751,   579,
    1888     1159,    57,   602,   427,  1509,  1426,   772,   773,   519,   112,
    1889      112,   432,    48,   519,   450,  1324,   519,   738,  1242,   739,
    1890      411,  1437,   740,    48,  1088,   744,  1088,   604,  -365,    48,
    1891      345,   774,   775,  1228,  -394,   484,    37,    48,   174,   175,
    1892       40,   780,   781,    48,  1107,   214,    48,    41,    42,    48,
    1893      461,   626,   626,  1127,   462,     2,   206,     4,     5,     6,
    1894        7,   504,   112,   112,   776,   777,   778,   779,   291,   472,
    1895      788,   307,     2,   206,     4,     5,     6,     7,   327,   348,
    1896      348,   528,   529,   530,   508,  1169,    48,   442,   214,    48,
    1897      106,  1495,  1437,   513,   525,   472,    48,    76,   111,    57,
    1898      527,   228,  1381,   563,   564,   531,  1381,   532,   566,   533,
    1899      534,   113,   252,   329,   411,   565,   908,   419,   661,   411,
    1900       35,   908,    36,   569,   176,    70,   338,    48,  -438,   587,
    1901      934,   658,   659,   712,   846,    48,  -291,    35,   266,    36,
    1902       48,   590,    56,     8,     9,    10,    11,    12,    -3,   214,
    1903      639,  1190,   660,   626,   481,   329,   411,   662,   663,   761,
    1904      664,   829,   329,   602,   766,    48,    48,    37,   667,   183,
    1905      184,    40,    31,   669,   257,   912,   693,   345,    41,    42,
    1906      912,    48,   694,    -3,   696,   498,   698,   214,  -237,    48,
    1907      734,   745,   214,  1296,  1297,  1298,   692,   749,    48,   757,
    1908       34,    48,   808,  1460,   906,   809,   411,   -12,   112,   812,
    1909      823,   714,    45,    46,   465,  1332,  1334,  1335,   -13,   271,
    1910      113,   867,   868,   112,   874,   907,   894,   112,   896,   897,
    1911      922,    48,   112,   901,   904,   219,  -415,   723,   113,   106,
    1912     -521,   944,   307,   937,   946,    48,    48,    57,    57,   957,
    1913      950,   959,    48,   958,   960,   951,   626,  -292,   961,    48,
    1914      113,   106,    63,    76,     8,     9,    10,    11,    12,   962,
    1915       57,   978,   989,   212,   342,  1106,   990,   991,   214,   106,
    1916     1006,  1007,  1008,  1009,   116,   879,  1010,   881,    57,  1011,
    1917      210,   220,   712,    31,  1012,  1023,    70,  -403,    37,  -402,
    1918      183,   184,    40,  1037,  1422,   626,   626,  1072,    48,    41,
    1919       42,  1535,  1074,    56,   271,  1095,   907,  1096,  1059,   307,
    1920     1097,    34,    69,  1098,  1104,  1114,   748,  1115,    48,    48,
    1921     1116,  1107,   159,   348,   348,   185,  1118,   928,   106,  1352,
    1922     1121,  1123,    57,    45,    46,    48,   972,    57,  1124,    48,
    1923     1125,  1126,   113,   407,  1132,  1129,   399,   692,  1152,   214,
    1924      644,  1173,  1174,   400,   173,  1175,   401,  1106,   442,   408,
    1925     1176,   106,   402,    70,  1177,  1191,    48,   665,   403,  1192,
    1926       57,  1194,  1195,  1203,  1210,   441,    48,  1207,   258,   404,
    1927       56,  1208,   405,   666,  1215,    -3,   159,  1220,  1225,  1190,
    1928     1223,   214,  1241,   493,    48,  1229,   253,  1508,  1234,   266,
    1929       48,  1236,    48,  1421,  1238,  1247,  1251,  1253,  1255,   110,
    1930     1257,   139,   238,  1107,  1258,   626,  1263,  1259,   472,   323,
    1931       41,    42,  1260,  1261,    76,   176,  1270,    37,   339,   174,
    1932      175,    40,  1279,   110,  1280,   139,   140,   112,    41,    42,
    1933      113,  1287,    48,   348,    41,    42,   239,  1290,  1291,  1292,
    1934       48,   240,  1330,  1294,    48,  1106,  1302,  1308,    48,   106,
    1935     1315,   112,   113,   112,   372,  1323,  1321,  1325,    57,   113,
    1936      727,   113,  1336,   113,  1329,   728,  1337,  1193,   430,  1339,
    1937     1345,   106,   434,  1346,  1347,  1348,   149,  1359,   106,  1355,
    1938       57,   150,   417,   151,  1356,  1366,  1367,    57,   112,  1298,
    1939     1375,    76,  1507,   112,  1384,  1376,  1377,   113,  1383,   113,
    1940     1393,  1107,   323,   214,  1394,   437,    70,  -404,  1397,  1408,
    1941      113,  1412,  1414,    70,   712,   445,  1507,  1507,  1416,  1417,
    1942      703,  1423,  1418,    56,   161,  1441,   307,  1431,  1432,   106,
    1943       56,   214,  1190,  1433,   434,  1434,   214,   488,    57,  1190,
    1944     1350,  1507,  1436,   112,  1446,  1448,  1450,  1452,   373,   213,
    1945       48,  1454,  1456,  1458,  1463,  1465,  1486,   521,   232,  1464,
    1946     1476,    48,  1488,    48,    70,  1490,  1493,  1501,  1521,  1122,
    1947      159,  1494,  1516,  1517,  1530,   479,   141,  1528,  1532,    63,
    1948     1538,    56,    48,   520,  1545,   176,  1546,   889,  1209,   782,
    1949     1190,  1133,  1131,   712,   784,  1133,  1307,  1411,    48,   783,
    1950      213,   704,   785,   112,   588,   786,  1496,   214,   594,  1548,
    1951     1369,  1385,    48,  1240,   112,    48,   112,  1214,  1479,   902,
    1952      903,   214,  1089,   925,   215,  1222,  1093,   627,   241,   244,
    1953      327,   631,   801,  1128,   339,  1059,  1036,   939,   873,  1103,
    1954      242,  1316,   717,   213,    76,  1133,    66,   117,    48,   947,
    1955      791,    76,   112,   792,   112,   793,   472,    37,   112,   174,
    1956      175,    40,     0,     0,     0,     0,   112,     0,    41,    42,
    1957        0,     0,     0,  1285,  1286,   215,  1288,     0,    66,    48,
    1958       48,     0,     0,  1293,     0,  1295,     0,     0,     0,   323,
    1959      323,     0,     0,    48,   376,   160,     0,     8,     9,    10,
    1960       11,    12,    76,     0,   213,     0,     0,  1483,     0,  1483,
    1961        0,     0,     0,     0,   214,   221,     0,   688,   215,     0,
    1962      528,   529,   530,     0,     0,     0,    31,   703,  1373,     0,
    1963      116,     0,   681,     0,     0,     0,     0,     8,     9,    10,
    1964       11,    12,   213,  1483,   531,  1483,   532,   213,   533,  1306,
    1965        0,   259,     0,     0,    34,   488,     0,   323,   707,   488,
    1966        0,     0,   499,     0,     0,     0,    31,     0,     0,   521,
    1967        0,   521,     0,    48,   521,     0,   323,   521,     0,   215,
    1968     1398,     0,     0,  1406,     0,    48,     0,     0,   339,   457,
    1969        0,     0,     0,   328,    34,   520,   571,     0,   411,     0,
    1970      520,   259,   350,   520,    45,    46,     0,     0,   704,   472,
    1971        0,     0,     0,     0,     0,     0,   472,   215,     0,     0,
    1972        0,     0,   215,     0,     0,     0,  1443,     0,   644,     0,
    1973        0,  1447,   406,   213,   112,     0,   750,     0,   411,     0,
    1974        0,  1405,   323,     0,    45,    46,   703,   424,     0,     0,
    1975      429,   431,     0,   803,     0,   160,   703,    48,     0,  1468,
    1976     1133,  1133,  1133,     0,     0,     0,    48,   472,    48,     0,
    1977      703,     0,     0,     0,     0,   112,   448,     0,     0,     0,
    1978      451,     0,   452,     0,   844,     0,     0,     0,     0,   594,
    1979        0,   459,     0,     0,     0,   853,    74,    66,    48,     0,
    1980        0,     0,   473,     0,     0,     0,     0,     0,   215,     0,
    1981        0,   214,   480,     0,   213,     0,     0,     0,   112,     0,
    1982      431,     8,     9,    10,    11,    12,   645,   704,    74,     0,
    1983        0,   213,   644,     0,     0,     0,     0,   704,     0,     0,
    1984      112,     0,     0,  1536,   112,     0,     0,     0,   688,  1536,
    1985       31,   704,     0,     0,     0,     0,   213,     0,     0,   891,
    1986     1536,     0,   892,     0,  1536,   222,     0,     0,   898,     0,
    1987        0,     0,   900,     0,     0,     0,     0,     0,    34,     0,
    1988        0,    37,     0,   183,   184,    40,   488,   259,     0,   215,
    1989        0,   595,    41,    42,   112,     0,     0,   623,  1133,  1133,
    1990        0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
    1991      628,     0,     0,     0,   628,     0,     0,   259,   265,     0,
    1992      933,     0,   602,     0,     0,     0,    45,    46,    45,    46,
    1993        0,   215,   112,     0,     0,     0,  1461,   725,     0,   729,
    1994        0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
    1995        0,    48,   353,   535,   536,   537,   538,   539,   540,   541,
    1996      542,   543,   544,   545,   473,     0,     0,   996,    48,     0,
    1997        0,     0,   803,     0,   703,   703,     0,     0,   213,   350,
    1998        0,   988,     0,     0,   473,     0,     0,   546,     0,     0,
    1999        0,   993,   473,     0,  1510,     0,     0,   214,     0,     0,
    2000        0,     0,     0,  1518,     0,  1005,   213,     0,     0,     0,
    2001      699,   213,    37,   431,   183,   184,    40,     0,     0,     0,
    2002        0,     0,     0,    41,    42,     0,   449,     0,   713,     0,
    2003       66,     0,   703,   703,     0,     0,     0,     0,   431,     0,
    2004        0,     0,   431,     0,     0,   112,     0,    74,     0,   601,
    2005        0,   602,    74,   215,     0,   704,   704,    45,    46,     0,
    2006      803,     0,     0,     0,     0,     0,     0,   339,    48,     0,
    2007        0,   259,   350,     0,     0,     0,     0,     0,     0,     0,
    2008        0,   215,   213,   688,     0,     0,   215,     0,  1080,   866,
    2009        0,     0,   214,    77,     0,     0,   213,     0,     0,     0,
    2010        0,     0,     0,     0,     0,   488,  1108,   323,     0,   112,
    2011      112,   112,     0,   704,   704,     0,   499,     0,   794,    37,
    2012        0,   183,   184,    40,     0,    77,     0,     0,     0,     0,
    2013       41,    42,     0,     0,     0,     0,   628,   806,   919,     0,
    2014      921,     0,     0,     0,   457,     0,     0,   222,    37,   825,
    2015      183,   184,    40,     0,     0,     0,   906,   215,   411,    41,
    2016       42,     0,   223,   844,    45,    46,     0,   595,     0,     0,
    2017        0,   215,   595,     0,     0,     0,     0,     0,   628,     0,
    2018     1313,   350,   350,   350,     0,  1506,     0,   411,     0,   213,
    2019        0,     0,     0,    45,    46,     0,     0,     0,     0,   350,
    2020        0,     0,     0,   124,   127,   128,     0,     0,     0,  1167,
    2021     1168,     0,   703,     0,    74,     0,     0,   699,     0,     0,
    2022      703,   703,   703,     0,     0,     0,     0,     0,   473,   353,
    2023        0,     0,     0,     0,    74,     0,     0,     0,    48,    48,
    2024        0,  1204,    74,     0,   688,     0,     0,   112,   112,   355,
    2025        0,     0,     0,     0,   473,     0,     0,   350,     0,     0,
    2026      353,  1314,     0,     0,   215,     0,   938,  1217,  1218,   431,
    2027        0,     0,     0,     0,     0,   254,     0,   255,   353,     0,
    2028       74,     0,     0,     0,   703,   112,   803,     0,     0,     0,
    2029        0,   259,   713,   704,     0,     0,     0,   968,     0,     0,
    2030        0,   704,   704,   704,     0,     0,     0,     0,     0,     0,
    2031        0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
    2032     1040,     0,   353,     0,     0,     0,     0,   126,   126,   126,
    2033        0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
    2034        0,     0,    48,   112,    77,     0,   699,     0,   350,    77,
    2035      628,     0,   112,  1003,     0,   628,   806,     0,   396,     0,
    2036      699,  1090,     0,     0,     0,   704,    48,    48,   415,   416,
    2037     1014,   339,     0,   420,     0,   422,   423,     0,     0,     0,
    2038        0,     0,     0,     0,     0,     0,   213,   353,     0,     0,
    2039        0,    48,     0,  1108,     0,     0,     0,     0,     0,   126,
    2040        0,   126,     0,     0,     0,    79,     0,     0,     0,     0,
    2041        0,     0,     0,     0,     0,     0,     0,     0,   645,     0,
    2042        0,    66,     0,     0,     0,     0,   275,     0,     0,     0,
    2043        0,   353,   353,   353,     0,     0,     0,    79,     0,     0,
    2044        0,     0,     0,   628,   223,     0,     0,  1338,     0,   353,
    2045      259,   713,     0,     0,  1086,  1340,  1341,  1342,     0,     0,
    2046        0,   215,     0,     0,     0,     0,     0,   353,     0,     0,
    2047        0,     0,     0,     0,   224,     0,     0,     0,    74,     0,
    2048     1100,     0,   126,     0,     0,  1108,     0,  1368,   431,   117,
    2049      126,     0,   126,   126,     0,     0,     0,   126,     0,   126,
    2050      126,     0,     0,     0,    74,     0,     0,   353,     0,     0,
    2051        0,    77,     0,     0,     0,     0,     0,     0,  1040,  1386,
     1793      49,   113,   453,   149,   399,   267,   768,    97,   428,   400,
     1794     150,   401,   402,   505,   403,   151,   753,   114,   821,   404,
     1795     405,   829,   383,   384,   260,   966,   106,   106,   440,   846,
     1796     610,  1072,    49,   597,   166,   967,    50,   921,   828,    97,
     1797     357,   968,   741,   147,  1175,   975,   870,   796,   407,    49,
     1798    1383,  1141,   408,   726,   413,    76,   161,   731,   106,  1173,
     1799    1174,   421,   358,   186,   143,  1443,   209,   822,    50,    49,
     1800     193,    63,   202,   216,   342,   410,   226,   123,   820,    31,
     1801    1254,   152,   823,    69,   399,   219,   177,    76,   605,   400,
     1802     425,   401,   402,   153,   403,   106,    31,   817,   166,   404,
     1803     405,  1185,  1306,    63,   280,   113,   629,   471,  1255,   670,
     1804     633,   818,  1191,   113,    31,    69,   266,   271,  1199,   925,
     1805     154,   580,   203,   411,   832,   819,   142,  1071,   407,   679,
     1806     839,   327,   408,   413,   724,   261,  1443,   683,   262,  1181,
     1807      31,   950,  1201,   674,   676,   149,   307,   147,  1462,   475,
     1808     477,   411,   150,  1488,   161,   113,   345,   151,  1208,  1209,
     1809     209,   567,   281,   252,   329,  1182,   252,   373,   411,   409,
     1810     715,  1307,    56,   115,    70,  1203,   291,  1472,  1200,   110,
     1811     861,   862,   966,   915,   510,   186,   186,  1516,   577,  1518,
     1812      41,    42,   967,   161,   436,   568,   581,   879,   968,   584,
     1813     122,   266,  1202,  1182,    56,   953,    70,   548,   549,    49,
     1814     419,   730,   411,  1238,   476,   817,   161,  1242,   760,   668,
     1815    1204,   209,  1060,   152,   327,   149,   519,   721,   443,   818,
     1816     743,   821,   150,    31,  1249,   153,   735,   151,   210,   307,
     1817     212,   220,   144,   819,  1018,   548,  1082,   439,    31,   833,
     1818    1175,    49,  1530,   836,   493,   933,   436,   494,    97,   271,
     1819     589,  1017,   154,   413,   271,   266,   266,   421,   665,   471,
     1820     993,   113,   666,   161,   853,   146,  1143,   106,   856,  1545,
     1821     822,   548,    31,   463,   610,   657,   181,    50,  1447,   471,
     1822     342,  1005,   166,  1190,   307,   823,   800,   471,  -236,  -236,
     1823    1175,   483,   168,   481,   155,   411,    76,   307,   500,   597,
     1824     817,    76,   527,   672,   597,  1173,  1174,   357,   830,   677,
     1825     602,   476,    63,   572,   818,  1095,   169,   472,   147,   849,
     1826     599,  1086,   806,   850,    69,   373,   832,   447,   819,   358,
     1827    1079,   113,   665,   569,   413,   345,   666,   996,   171,   603,
     1828     621,   821,   837,   829,   602,   201,   460,   229,   673,   675,
     1829     230,   736,  1191,   234,   626,   236,   748,  -292,   626,  -236,
     1830    1072,   113,   245,   900,   855,   163,  1118,   177,  1402,  1403,
     1831     988,   737,  1447,  1402,  1403,   557,   558,  1447,   714,   247,
     1832     110,  1196,   110,   441,   630,   442,   266,   765,   634,  1134,
     1833     822,    41,    42,    41,    42,   286,   186,  1447,  1120,   846,
     1834     357,   327,   327,   373,  1447,   823,    41,    42,   851,  1175,
     1835     559,   560,   852,    56,   266,    70,   307,   307,  1121,   766,
     1836     266,  1336,   358,   626,   715,  1438,   577,   577,   519,   163,
     1837    1529,  1329,   514,   519,   342,  1427,   519,   583,  1404,   411,
     1838     770,   771,   772,  1413,   113,   250,  1432,  1433,  1205,  1428,
     1839    1540,  1330,   703,   252,  1128,   377,  1071,  1544,  1334,   954,
     1840    1337,  1339,   266,    76,   110,   357,   139,   140,  -520,   327,
     1841     266,   378,   626,   -10,    49,    41,    42,   373,   720,   472,
     1842     578,    97,  1021,    76,   113,  -444,   579,   358,   327,   229,
     1843     789,    76,   871,   884,  1106,   411,   307,   610,   113,   472,
     1844     106,   307,  1139,   307,   307,  1191,   243,   472,   263,  1018,
     1845      50,   751,  1191,   885,   212,   113,   345,   888,  1248,   110,
     1846    1161,  1163,   872,   471,   643,   435,  1134,   553,   554,    76,
     1847      41,    42,  1240,  1366,   881,   883,   110,   998,   139,   238,
     1848     912,   873,   806,   712,   914,    63,   851,    41,    42,   930,
     1849    1102,  1060,   387,  1473,   327,  1016,   498,    69,  1338,   390,
     1850     392,   572,   572,  1191,  -471,   684,  -471,  1474,   388,   307,
     1851    -445,   579,  1128,   239,  1103,   391,   393,   915,   240,   276,
     1852     626,   345,   394,  -471,   715,   621,  1500,   435,   252,   329,
     1853     411,   603,  1505,   603,  1280,  1281,   847,   110,   395,   139,
     1854     140,   599,     2,   206,     4,     5,     6,     7,    41,    42,
     1855     523,   626,  1525,  -124,   550,  -124,   626,  1532,   621,  -124,
     1856     551,   552,   626,   163,   278,   626,   626,   626,    37,   229,
     1857     806,   234,    40,   916,  -124,  -124,   866,   212,   279,    41,
     1858      42,   848,   714,   626,  1376,   266,    56,   974,    70,   917,
     1859     577,    48,   112,  1089,   342,  1089,   918,   863,   330,   703,
     1860     916,   918,  1029,   331,   808,    43,  -106,    35,  1016,    36,
     1861    -106,   878,   919,    45,    46,   113,  1083,  1084,   909,   597,
     1862     112,   112,  1076,    48,   372,   357,  1478,   332,  1188,  1364,
     1863    1188,   705,   333,  1478,    48,  1320,  1401,   706,  1114,  1409,
     1864      48,   626,   935,   621,  1189,   334,  1312,   358,    48,   720,
     1865     720,  1321,  1322,  1036,    48,   335,   399,    48,   376,   229,
     1866      48,   400,   748,   401,   402,  1352,   403,    76,  1323,  1353,
     1867      -3,   404,   405,   112,   112,   113,   345,   110,  1367,   141,
     1868     751,   751,  1446,   472,  1526,   722,   371,  1450,    41,    42,
     1869     389,   723,   500,    76,   528,   529,   530,    48,   555,   556,
     1870      48,   407,   385,  1412,   571,   408,   411,    48,   413,   472,
     1871     692,  1377,    45,    46,   966,  1471,   561,   562,   531,   703,
     1872     532,   397,   533,   534,   967,   572,   426,   442,   732,   703,
     1873     968,   241,   244,   626,   733,   626,   409,  1001,    48,  1429,
     1874     626,   345,   714,   703,   603,   427,    48,   712,  1165,   432,
     1875     750,    48,   411,   450,   342,  1440,   603,  -368,    45,    46,
     1876     986,   983,   523,   110,   523,   139,   140,   523,   715,  -397,
     1877     523,   419,   661,   411,    41,    42,    48,    48,    37,   954,
     1878     174,   175,    40,   954,   954,  1146,  1480,   484,  1481,    41,
     1879      42,   747,    48,   738,   504,   739,   806,   748,   740,  1539,
     1880      48,   744,  1158,   212,   894,  1539,   307,   329,   411,    48,
     1881     748,   110,    48,   139,   140,   372,  1539,   212,   461,   112,
     1882    1539,  1186,    41,    42,   808,  1498,  1440,   887,   626,   411,
     1883     462,   548,   106,   110,   112,   113,   345,   909,   112,   909,
     1884    1134,  1527,    48,   112,    41,    42,   896,   715,   727,  1373,
     1885    1374,   113,   748,   728,  1402,  1403,    48,    48,  1172,   291,
     1886     327,    76,   982,    48,   935,   935,   525,   995,   983,   720,
     1887      48,   508,   510,   706,   113,   307,  1236,    63,   513,   665,
     1888     413,  1360,   579,   666,   912,  1422,   983,   748,   914,    69,
     1889    1107,   129,   457,   130,   131,   132,   934,   116,   602,   751,
     1890     106,  1327,    41,    42,    45,    46,  1361,   712,  1363,   564,
     1891    1512,   212,   748,   527,   748,  -293,   847,   773,   774,    48,
     1892    1246,  1368,     8,     9,    10,    11,    12,   748,  1231,   781,
     1893     782,   345,     8,     9,    10,    11,    12,  1430,  1448,    48,
     1894      48,   692,   563,  1427,   748,   159,   565,   703,   703,  1494,
     1895     498,    31,   626,   626,   566,  1495,    48,   775,   776,  1128,
     1896      48,    31,     8,     9,    10,    11,    12,  1550,   481,   329,
     1897     411,   644,   307,   579,  -294,   830,   329,   602,    56,    34,
     1898      70,     8,     9,    10,    11,    12,   714,    48,  1384,    34,
     1899     338,    31,  1384,   777,   778,   779,   780,    48,   106,   569,
     1900    -441,   258,  1299,  1300,  1301,   703,   703,   587,   667,   159,
     1901      31,  1145,   113,   411,  1157,    48,   411,   909,  1160,    34,
     1902     602,    48,   909,    48,    37,   590,    -3,    76,    40,   645,
     1903    1162,   935,   602,   658,   659,    41,    42,   639,    34,   266,
     1904     660,    37,   323,   472,   662,    40,  1108,   663,   664,    57,
     1905      57,   339,    41,    42,   626,  1193,  1288,  1289,   112,  1291,
     1906     342,    43,  1245,    48,   411,   257,  1296,    96,  1298,    45,
     1907      46,    48,   669,   693,   694,    48,   696,   698,   719,    48,
     1908     345,    57,   112,   749,   112,   734,    45,    46,  -240,  1463,
     1909     745,     2,   206,     4,     5,     6,     7,   757,   809,    96,
     1910      37,   430,   174,   175,    40,   434,   810,   813,   442,   824,
     1911     148,    41,    42,   -12,  1355,    57,    96,   869,    57,   112,
     1912     228,   -13,   271,   113,   112,   875,   868,   895,   897,   111,
     1913     189,   898,  -418,    96,   902,   323,    96,   376,   905,   219,
     1914     725,   113,   729,   723,    56,   307,    70,   923,  -524,   106,
     1915      37,   712,   174,   175,    40,  1316,    35,   938,    36,   626,
     1916     945,    41,    42,   113,   947,   951,   952,   434,   958,   959,
     1917     488,   106,   960,   961,   112,  -295,   962,   692,   963,  1107,
     1918     979,    48,     8,     9,    10,    11,    12,   703,  1038,   106,
     1919     521,   990,    48,   991,    48,   703,   703,   703,   992,  1007,
     1920      76,  1425,  1008,   159,  1009,   348,  1073,  1010,   626,   626,
     1921    1011,    31,  1538,    48,    96,  1012,    63,   271,  1013,  1024,
     1922    -406,  -405,   307,   908,  1408,  1096,  1075,    96,    69,    48,
     1923     712,  1098,  1097,  1099,   112,  1105,  1115,   588,   748,    34,
     1924    1116,   594,  1117,    48,  1119,   112,    48,   112,   106,  1122,
     1925     973,  1124,   398,   189,  1125,   113,  1126,  1127,   399,   703,
     1926     627,  1130,  1133,   400,   631,   401,   402,   339,   403,  1155,
     1927      57,  1107,  1176,   404,   405,  1178,    96,    76,  1177,    48,
     1928    1179,   106,  1194,   112,  1195,   112,  1180,  1197,    96,   112,
     1929    1198,  1206,   867,   472,   210,   220,   212,   112,  1210,  1211,
     1930      57,  1213,   407,    -3,  1511,  1193,   408,   704,  1218,  1223,
     1931      48,    48,   266,  1228,   493,  1226,  1232,    56,    96,    70,
     1932    1237,  1239,   323,   323,    48,    37,   665,  1241,   626,    40,
     1933     666,   162,   479,  1244,  1250,  1108,    41,    42,   692,  1256,
     1934    1424,   920,  1252,   922,  1258,   194,  1260,   457,   217,  1261,
     1935     688,   227,  1262,   113,  1263,  1264,  1266,  1273,  1290,  1282,
     1936    1283,  1293,   814,   116,   602,  1294,  1311,  1295,  1318,  1107,
     1937      45,    46,  1324,  1297,  1328,   113,  1305,  1332,  1333,   106,
     1938     465,  1335,   113,  1340,   113,  1326,   113,  1342,   488,   441,
     1939     323,   442,   488,  1348,    56,    96,    70,  1349,  1350,   149,
     1940    1351,   106,   521,  1358,   521,    48,   150,   521,   106,   323,
     1941     521,   151,  1359,  1362,  1369,  1510,   604,    48,  1370,  1301,
     1942     113,   339,   113,  1378,  1379,  1386,  1380,  1108,  1387,   162,
     1943      76,  1396,  1397,   113,   327,  -407,  1400,    76,  1411,  1510,
     1944    1510,  1415,   374,  1417,  1419,  1420,   472,   161,  1426,   307,
     1945     176,  1434,  1435,   472,   173,  1421,  1436,  1439,  1193,   106,
     1946     644,  1437,    66,   117,  1510,  1193,   112,  1444,   162,  1353,
     1947     893,   373,  1449,   189,  1453,   323,     2,   206,     4,     5,
     1948       6,     7,   348,  1455,  1451,  1457,   804,  1459,    76,    48,
     1949    1461,   162,  1466,  1467,    66,  1468,   253,  1479,    48,   176,
     1950      48,  1493,   176,   444,   472,  1489,  1491,   112,   528,   529,
     1951     530,   160,  1496,  1497,   704,  1504,  1193,   845,   645,  1519,
     1952    1520,  1524,   594,  1531,  1041,  1108,  1533,  1535,   854,  1541,
     1953      48,   221,   531,    57,   532,  1548,   533,  1309,  1549,   890,
     1954    1212,    35,   783,    36,   784,  1132,   785,    56,   176,    70,
     1955     112,    96,   787,  1310,    56,   604,    70,    37,   786,   183,
     1956     184,    40,  1499,  1414,   644,  1091,  1551,   259,    41,    42,
     1957    1243,  1388,   112,  1372,  1217,   348,   112,   903,  1482,   904,
     1958    1090,   688,  1225,   926,  1129,   215,  1094,   802,  1037,   874,
     1959     989,  1104,   417,   940,   601,   111,   602,   717,  1319,     0,
     1960     994,   242,    45,    46,   948,    56,     0,    70,   792,   328,
     1961     374,   176,   793,     0,  1006,   437,   794,   259,   350,   488,
     1962       0,     0,   645,     0,     0,   445,   112,     0,     0,     0,
     1963       0,     0,     0,     0,   704,     0,   215,     0,     0,     0,
     1964     348,   339,     0,     0,   704,     0,     0,     0,   406,     0,
     1965       0,     0,     0,     0,     0,     0,   761,     0,   704,     0,
     1966       0,   767,     0,   424,   112,   176,   429,   431,   816,     0,
     1967     604,   160,   176,     0,     0,     0,     0,     0,    48,   215,
     1968       0,     0,     0,    48,   348,   348,   348,     0,   374,     0,
     1969       0,     0,   448,   520,     0,     0,   451,     0,   452,     0,
     1970      48,   997,   348,     0,     0,     0,   804,   459,     0,     0,
     1971    1486,   465,  1486,    66,     0,     0,     0,     0,   473,     0,
     1972     924,     0,  1041,     0,     0,     0,     0,     0,   480,     0,
     1973       0,    37,     0,   183,   184,    40,   431,     0,     0,     0,
     1974     215,   176,    41,    42,     0,     0,  1486,     0,  1486,     0,
     1975       0,     0,     0,     0,     0,   913,     0,     0,   176,     0,
     1976     348,     0,   176,     0,     0,     0,    74,     0,   907,     0,
     1977     411,     8,     9,    10,    11,    12,    45,    46,   215,   112,
     1978       0,     0,   880,   215,   882,     0,   816,   604,     0,   908,
     1979       0,     0,     0,     0,   804,     0,     0,     0,    74,     0,
     1980      31,   339,    48,   259,     0,     0,     0,   595,     0,     0,
     1981       0,     0,   987,   623,     0,     0,     0,   688,  1170,  1171,
     1982       0,     0,     0,     0,     0,   176,   628,     0,    34,     0,
     1983     628,     0,     0,   259,   929,   222,     0,  1286,     0,   488,
     1984    1109,   323,   681,   112,     0,   112,   112,     0,     0,     0,
     1985       0,     0,   348,     0,     8,     9,    10,    11,    12,     0,
     1986     348,     0,   704,   704,     0,     0,     0,     0,   707,   215,
     1987     571,     0,   411,     0,     0,     0,  1220,  1221,    45,    46,
     1988     473,   816,     0,    31,     0,     0,     0,     0,     0,  1031,
     1989       0,     0,     0,   604,     0,   350,     0,   845,     0,     0,
     1990     473,     0,     0,     0,     0,   520,     0,     0,   473,     0,
     1991     520,    34,     0,   520,     0,     0,     0,     0,     0,     0,
     1992     704,   704,   353,     0,     0,    57,   699,     0,     0,   431,
     1993       0,     0,   924,     0,     8,     9,    10,    11,    12,     0,
     1994       0,     0,     0,     0,   713,     0,    66,     0,     0,     0,
     1995     215,     0,     0,   750,   431,   411,     0,     0,   431,     0,
     1996       0,    45,    46,    31,     0,     0,     0,     0,     0,     0,
     1997       0,     0,    48,    48,  1085,     0,   913,   924,   688,     0,
     1998       0,   112,   112,   176,     0,     0,     0,   259,   350,     0,
     1999       0,    34,   215,    57,     0,     0,   449,     0,     0,     0,
     2000       0,     0,     0,     0,     0,     0,   604,     0,     0,     0,
     2001       0,     0,  1142,     0,     0,   176,     0,    74,     0,   112,
     2002     804,     0,    74,     0,     0,     0,     0,    77,     0,     0,
     2003       0,   176,     0,   934,   795,   602,     0,     0,     0,     0,
     2004       0,    45,    46,     0,    37,   176,   183,   184,    40,     0,
     2005       0,     0,   628,   807,     0,    41,    42,     0,  1341,    77,
     2006       0,     0,     0,  1031,     0,   826,  1343,  1344,  1345,   892,
     2007    1317,   348,   348,     0,     0,     0,    48,   112,   899,     0,
     2008       0,   185,   901,   595,     0,     0,   112,  1123,   595,    45,
     2009      46,    57,     0,     0,   628,     0,   223,   350,   350,   350,
     2010      48,    48,   704,     0,     0,     0,     0,   339,     0,  1135,
     2011     704,   704,   704,  1135,   215,   350,    37,   222,   183,   184,
     2012      40,     0,     0,     0,     0,    48,   176,    41,    42,  1109,
     2013    1389,     0,     0,   699,     0,     0,     8,     9,    10,    11,
     2014      12,     0,   215,   924,   473,     0,     0,   215,     0,     0,
     2015       0,     0,     0,   907,   913,   411,     0,     0,     0,   913,
     2016       0,    45,    46,  1135,     0,    31,     0,     0,     0,     0,
     2017     473,     0,     0,   350,   704,     0,     0,   214,     0,     0,
     2018       0,     0,   939,   355,    74,   431,     0,     0,     0,     0,
     2019       0,     0,     0,    34,     0,     0,     0,     0,    37,   353,
     2020     183,   184,    40,     0,    74,   924,   924,   259,   713,    41,
     2021      42,     0,    74,   969,     0,     0,     0,     0,   215,     0,
     2022       0,  1109,     0,     0,     0,     0,     0,     0,   214,     0,
     2023     353,     0,   215,     0,     0,   601,     0,   602,     0,     0,
     2024       0,    57,    57,    45,    46,     0,     0,     0,   353,     0,
     2025      74,     0,     0,   699,     0,     0,     0,     0,     0,     0,
     2026       0,     0,     0,   699,    57,   350,     0,   628,     0,     0,
     2027    1004,   214,   628,   807,     0,     0,     0,   699,    77,     0,
     2028       0,     0,    57,    77,     0,     0,     0,  1015,     0,     0,
     2029       0,   176,   353,     0,     0,     0,     0,     0,     0,  1081,
     2030       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2031      17,    18,    19,    20,    21,    22,    23,    24,    25,  1109,
     2032       0,    26,    27,    28,     0,     0,   215,   348,   348,     0,
     2033      31,    79,   214,     0,     0,     0,    57,     0,    66,     0,
     2034       0,    57,     0,     0,    37,     0,   183,   184,    40,     0,
     2035    1485,     0,  1485,     0,     0,    41,    42,   353,    34,     0,
     2036     628,     0,     0,    79,     0,   207,    39,   259,   713,     0,
     2037     214,  1087,     0,     0,    57,   214,     0,     0,   223,     0,
     2038    1135,   265,  1135,  1135,     0,     0,  1485,     0,  1485,    45,
     2039      46,     0,     0,     0,     0,     0,     0,  1101,     0,     0,
     2040     224,   353,   353,   353,     0,   431,   117,     0,    45,    46,
     2041     924,     0,     0,     0,     0,   323,     0,     0,     0,   353,
     2042       0,     0,     0,     0,     0,     0,   924,     0,     0,     0,
     2043       0,     0,     0,     0,     0,     0,     0,   353,     0,     0,
     2044       0,     0,     0,     0,     0,    77,     0,   348,    74,     0,
     2045       0,     0,  1207,     0,     0,     0,     0,     0,     0,     0,
     2046     355,   214,     0,   595,     0,    77,     0,     0,     0,     0,
     2047       0,     0,    57,    77,    74,     0,   429,   353,     0,     0,
     2048       0,   699,   699,     0,   350,   350,     0,   356,     0,     0,
     2049       0,   355,     0,     0,    57,     0,   924,   924,     0,     0,
     2050       0,    57,     0,     0,  1192,     0,     0,     0,     0,   355,
     2051       0,    77,   353,     0,     0,     0,     0,     0,  1135,  1135,
     2052       0,     0,     0,   215,     0,     0,     8,     9,    10,    11,
     2053      12,     0,     8,     9,    10,    11,    12,     0,     0,   699,
     2054     699,     0,   214,     0,     0,     0,     0,     0,     0,     0,
     2055       0,     0,    57,   355,     0,    31,  1464,   353,     0,     0,
     2056       0,    31,     0,     0,     0,     0,     0,   353,     0,   353,
     2057       0,     0,     0,     0,   222,     0,   479,   353,     0,     0,
     2058       0,   353,    79,    34,   214,     0,   628,    79,    37,    34,
     2059     183,   184,    40,     0,    37,     0,   183,   184,    40,    41,
     2060      42,     0,     0,     0,   176,    41,    42,     0,     0,     0,
     2061       0,     0,   713,     0,  1513,     0,     0,     0,   355,     0,
     2062       0,     0,     0,  1521,     0,   907,     0,   411,     0,     0,
     2063       0,   185,     0,    45,    46,     0,     0,     0,     0,    45,
     2064      46,     0,    74,     0,     0,     0,     0,    37,     0,   183,
     2065     184,    40,     0,     0,     0,  1287,     0,     0,    41,    42,
     2066       0,     0,   355,   355,   355,     0,     0,     0,     0,     0,
     2067       0,     0,   353,   259,     0,     0,     0,    66,     0,     0,
     2068     355,     0,   224,     0,  1509,     0,   411,     0,     0,   699,
     2069       0,   713,    45,    46,     0,   117,   213,     0,   355,     0,
     2070    1371,     0,     0,     0,     0,   232,   214,     0,     0,    77,
     2071       0,   215,     0,     0,     0,     0,     0,     0,     0,     0,
     2072       0,   699,     0,     0,     0,     0,     0,     0,     0,   699,
     2073     699,   699,     0,     0,   214,    77,     0,     0,   355,   214,
     2074     350,   350,     0,     0,     0,     0,     0,   213,    86,    79,
     2075       0,     0,     0,     0,  1192,     0,     0,     0,     0,     0,
     2076       0,     0,     0,     0,   356,     0,     0,     0,     0,    79,
     2077       0,     0,     0,   355,   176,     0,     0,    79,     0,     0,
     2078      86,     0,     0,     0,     0,   353,   353,   117,   353,   353,
     2079     213,     0,     0,   699,     0,   356,     0,     0,     0,     0,
     2080       0,     0,     0,     0,     0,     0,   215,     0,    74,     0,
     2081     214,     0,     0,   356,     0,    79,     0,   225,   355,     0,
     2082       0,     0,     0,     0,   214,     0,     0,     0,   355,     0,
     2083     355,     0,     0,     0,     0,   223,     0,     0,   355,     0,
     2084       0,     0,   355,   353,   353,     0,     0,     0,     0,     0,
     2085       0,   213,  1483,     0,  1487,     0,     0,   356,     0,     0,
     2086     350,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2087     167,     0,   172,     0,     0,   178,   179,   180,     0,   182,
     2088       0,     0,     0,     0,     0,   117,     0,     0,  1515,   213,
     2089    1517,    31,     0,   233,   213,     0,     0,     0,     0,     0,
     2090       0,     0,     0,    77,   363,   248,   249,  1192,     0,   499,
     2091       0,     0,     0,     0,  1192,     0,   353,     0,   214,    34,
     2092       0,     0,   356,     0,    37,     0,   183,   184,    40,     0,
     2093       0,     0,  1546,   355,  1547,    41,    42,     0,     0,     0,
     2094       0,     0,     0,     0,     0,     0,     0,  1554,  1555,     0,
     2095       0,     0,     0,     0,     0,     0,     0,     0,     0,   222,
     2096       0,  1509,     0,   411,     0,  1192,   356,   356,   356,    45,
     2097      46,     0,  1534,     0,     0,     0,     0,     0,     0,     0,
     2098     213,    74,     0,     0,   356,     0,     0,     0,     0,     0,
     2099       0,     0,     0,   353,     0,   353,     0,     0,     0,    86,
     2100       0,     0,   356,     0,    86,     0,     0,     0,     0,     0,
     2101       0,     0,     0,    79,     0,     0,     0,     0,     0,     8,
     2102       9,    10,    11,    12,     0,   353,     0,     0,     0,     0,
     2103       0,     0,     0,   353,   353,   353,     0,     0,     0,    79,
     2104       0,     0,   356,     0,   353,   353,   355,   355,    31,   355,
     2105     355,     0,     0,     0,     0,     0,     0,     0,    74,     0,
     2106       0,   213,     0,     0,     0,     0,     0,     0,     0,    77,
     2107       0,     0,     0,     0,     0,     0,    34,   356,   213,     0,
     2108       0,    37,     0,   183,   184,    40,     0,     0,     0,     0,
     2109       0,     0,    41,    42,     0,     0,     0,   353,     0,   225,
     2110       0,     0,     0,   213,   355,   355,   124,   127,   128,     0,
     2111       0,     0,     0,     0,     0,   214,     0,     0,   265,     0,
     2112       0,     0,   356,     0,     0,     0,    45,    46,     0,     0,
     2113       0,     0,   356,     0,   356,     0,     0,     0,     0,   224,
     2114       0,     0,   356,     0,     0,     0,   356,     0,   535,   536,
     2115     537,   538,   539,   540,   541,   542,   543,   544,   545,     0,
     2116       0,   592,     0,   600,   353,     0,    86,     0,     0,     0,
     2117       0,     0,     0,     0,   624,   625,     0,   355,   254,     0,
     2118     255,   363,   546,     0,     0,     0,    86,     0,     0,     0,
     2119       0,     0,     0,     0,    86,     0,     0,     0,     0,     0,
     2120       0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
     2121       0,    74,   363,     0,     0,     0,     0,     0,    74,     0,
     2122     223,     0,     0,     0,     0,   213,     0,     0,     0,     0,
     2123     363,     0,    86,     0,     0,     0,     0,   356,     0,     0,
     2124       0,     0,    77,     0,     0,     0,     0,     0,     0,     0,
     2125       0,     0,     0,   213,   355,     0,   355,     0,   213,     0,
     2126       0,   396,     0,     0,     0,     0,     0,     0,     0,    74,
     2127       0,   415,   416,     0,   363,     0,   420,     0,   422,   423,
    20522128       0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
    2053        0,    77,     0,     0,     0,     0,     0,     0,     0,    77,
    2054        0,     0,   353,     0,     0,     0,   595,     8,     9,    10,
    2055       11,    12,     0,     0,     0,     0,     0,   355,     0,   429,
    2056        0,   356,     0,     0,   699,   699,     0,   350,   350,   126,
    2057        0,     0,   213,     0,     0,   355,    31,    77,     0,     0,
    2058        0,     0,     0,  1108,     0,     0,   353,  1189,     0,     0,
    2059        0,     0,     0,     0,     0,     0,   353,     0,   353,     0,
    2060        0,     0,     0,   222,    34,     0,   353,     0,     0,    37,
    2061      353,   183,   184,    40,  1482,     0,  1482,     0,     0,   355,
    2062       41,    42,   699,   699,     0,     0,     0,     0,     0,     0,
    2063        0,  1283,     0,     0,     0,     0,     0,     0,     0,  1480,
    2064        0,  1484,     0,     0,     0,     0,   601,   215,   602,     0,
    2065     1482,     0,  1482,     0,    45,    46,    79,     0,     0,     0,
    2066        0,    79,     0,     0,     0,     0,     0,   213,     0,   628,
    2067        0,    74,     0,     0,     0,  1512,     0,  1514,     0,   323,
    2068        0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
    2069        0,     0,     0,   713,     0,     0,     0,     0,     0,    86,
    2070        0,   353,     0,     0,     0,     0,     0,   413,     0,     0,
    2071        0,     0,     0,     0,   421,     0,     0,     0,     0,  1543,
    2072        0,  1544,     0,     0,     0,     0,     0,     0,   355,   355,
    2073      355,    86,     0,     0,  1551,  1552,  1284,     0,     0,     0,
    2074        0,     0,   215,     0,     0,     0,   355,     0,     0,     0,
    2075        0,     0,   796,   797,   259,     0,   224,     0,    66,     0,
    2076        0,     0,     0,     0,   355,     0,     0,     0,   225,     0,
    2077      699,     0,   713,     0,     0,    77,   117,     0,     0,     0,
    2078        0,   830,     0,     0,   833,   834,   413,   837,     0,   839,
    2079      840,     0,     0,     0,   841,   842,     0,     0,     0,     0,
    2080        0,    77,   699,     0,   355,     0,     0,     0,     0,     0,
    2081      699,   699,   699,     0,   353,   353,     0,   353,   353,     0,
    2082        0,   350,   350,    79,     0,     0,     0,     0,     8,     9,
    2083       10,    11,    12,     0,     0,  1189,     0,    74,   356,   355,
    2084        0,   577,     0,    79,     0,     0,     0,     0,     0,   581,
    2085        0,    79,   584,     0,     0,   363,     0,    31,     0,     0,
    2086        0,     0,     0,     0,     0,     0,     0,     0,   117,   356,
    2087        0,     0,   353,   353,   699,     0,   126,   126,     0,     0,
    2088        0,     0,     0,   355,     0,    34,     0,   356,     0,    79,
    2089       37,     0,     0,   355,    40,   355,     0,     0,     0,     0,
    2090      223,    41,    42,   355,     0,   126,     0,   355,   126,   126,
    2091        0,   126,     0,   126,   126,     0,   413,     0,   126,   126,
    2092      421,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2093        0,   356,   970,   971,     0,    45,    46,     0,     0,     0,
    2094        0,   350,     0,   353,     0,     0,     0,     0,     0,     0,
    2095       86,     0,     0,     0,     0,    86,     0,     0,     0,     0,
    2096        0,     0,     0,     0,     0,     0,   117,     0,    77,     0,
     2129       0,     0,     0,     0,   355,   355,   355,     0,     0,     0,
     2130       0,     0,     0,   214,     0,   355,   355,     0,     0,     0,
     2131       0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
     2132       0,     0,     0,     0,     0,     0,     0,     0,     0,   213,
     2133       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     2134       0,     0,     0,   213,     0,     0,     0,     0,     0,     0,
     2135     356,   356,     0,   356,   356,     0,     0,     0,   355,     0,
     2136       0,     0,     0,   499,     0,     0,     0,     0,     0,     0,
     2137       0,     0,     0,    79,  1014,     0,     0,     8,     9,    10,
     2138      11,    12,     0,   363,   363,   363,     0,     0,     0,     0,
     2139       0,     0,     0,     0,     0,     0,     0,     0,   214,     0,
     2140       0,   363,     0,     0,   282,   283,    31,   284,   356,   356,
     2141       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     2142       0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
     2143      86,     0,     0,   285,    34,     0,     0,   213,     0,   286,
     2144       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2145      41,    42,     0,   292,   293,     0,    86,     0,     0,   363,
     2146       0,     0,     0,     8,     9,    10,    11,    12,     0,     0,
     2147       0,     0,    77,     0,     0,     0,   294,     0,   379,    77,
     2148       0,   356,     0,     0,   344,    46,   296,   297,   298,   299,
     2149       0,     0,    31,     0,   363,     0,     0,     0,     0,     0,
    20972150       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2098        0,     0,     0,     0,     0,     0,   222,     0,  1189,     0,
    2099        0,     0,     0,     0,     0,  1189,   356,   413,   355,     0,
    2100        0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
     2151       0,     0,     0,     0,     0,     0,     0,   927,     0,   928,
     2152      34,     0,     0,     0,   224,    37,   931,   932,     0,    40,
     2153      77,   937,     0,     0,     0,     0,    41,    42,     0,   363,
     2154       0,     0,     0,   942,     0,     0,    79,     0,   946,   363,
     2155       0,   363,     0,     0,     0,     0,   225,     0,   356,   363,
     2156     356,     0,   719,   363,     0,     0,     0,     0,     0,     0,
     2157      45,    46,     0,     0,     0,     0,   980,     0,     0,     0,
    21012158       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2102      353,     0,   353,     0,     0,     0,     0,     0,     0,     0,
    2103        0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
    2104      356,   356,   356,     0,     0,     0,  1189,     0,     0,     0,
    2105      225,     0,   353,  1531,     0,     0,   126,   126,   356,     0,
    2106      353,   353,   353,    31,     0,     0,     0,     0,     0,     0,
    2107        0,   353,   353,     0,     0,     0,   356,     0,     0,     0,
    2108        0,     0,     0,     0,     0,    74,     0,    79,     0,   577,
    2109      577,    34,     0,     0,  1091,     0,    37,     0,   183,   184,
     2159     356,     0,     0,     0,     0,     0,     0,     0,   356,   356,
     2160     356,     0,     0,     0,     0,     0,     0,     0,     0,   356,
     2161     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2162       0,     0,     0,    79,    86,     0,     0,     0,     0,     0,
     2163       0,     0,     0,     0,   213,     0,     0,     0,     0,     0,
     2164       0,     0,  1166,     0,     0,     8,     9,    10,    11,    12,
     2165       0,     0,     0,     0,   363,   797,   798,     0,     0,     0,
     2166       0,     0,   356,     0,     0,     0,     0,     0,   165,     0,
     2167       0,     0,   282,   283,    31,   284,  1025,  1026,  1027,  1028,
     2168       0,  1030,     0,     0,   831,   218,     0,   834,   835,     0,
     2169     838,     0,   840,   841,     0,     0,  1074,   842,   843,     0,
     2170       0,   285,    34,     0,     0,     0,     0,   286,     0,     0,
     2171    1080,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2172       0,   292,   293,     0,     0,     0,     0,     0,     0,   356,
     2173       0,     0,   165,     0,     0,     0,   272,     0,     0,     0,
     2174       0,     0,     0,     0,   294,     0,   379,     0,     0,     0,
     2175    1100,     0,  1167,    46,   296,   297,   298,   299,     0,     0,
     2176       0,     0,     0,     0,     0,   165,     0,   363,   363,     0,
     2177     363,   363,     0,     0,     0,   369,    79,     0,     0,   375,
     2178       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
     2179      86,     0,     0,     0,     0,  1131,     0,     0,     0,     0,
     2180       0,  1140,     0,     0,     0,     0,  1144,     0,     0,     0,
     2181       0,  1148,     0,  1149,     0,     0,     0,  1151,     0,  1152,
     2182    1153,     0,   213,  1156,     0,   363,   363,     0,   165,     0,
     2183       0,     0,  1168,     0,    79,   971,   972,     0,     0,     0,
     2184     218,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2185    1183,  1184,     0,     0,     0,     0,     0,     0,   165,     8,
     2186       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2187      19,    20,    21,    22,    23,    24,    25,  1214,     0,     0,
     2188    1216,     0,     0,   375,     0,     0,     0,     0,    31,     0,
     2189     165,     0,     0,     0,     0,     0,     0,     0,   363,     0,
     2190       0,     0,   126,   126,   126,     0,     0,     0,     0,     0,
     2191       0,     0,     0,   524,     0,     0,    34,   213,     0,     0,
     2192       0,     0,     0,  1230,     0,     0,   165,     0,     0,  1234,
     2193    1235,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2194       0,   225,     0,     0,     0,     0,     0,     0,     0,  1251,
     2195       0,     0,     0,  1253,     0,     0,     0,     0,  1257,     0,
     2196       0,     0,     0,    86,   598,     0,     0,     0,     0,   622,
     2197       0,  1265,     0,     0,   126,   363,   126,   363,     0,     0,
     2198       0,     0,     0,     0,  1272,     0,  1274,  1275,  1276,  1277,
     2199       0,     0,     0,     0,     0,     0,     0,     0,  1092,     0,
     2200       0,   275,  1284,     0,  1285,     0,     0,   363,   172,     0,
     2201       0,     0,     0,     0,     0,   363,   363,   363,     0,     0,
     2202       0,     0,     0,     0,     0,     0,   363,   363,     0,     0,
     2203     211,     0,     0,     0,     0,     0,     0,  1313,  1314,   231,
     2204      86,   235,     0,   237,     0,   165,   165,     0,     0,     0,
     2205     246,     0,   369,     0,     0,     0,     0,   126,     0,     0,
     2206       0,     0,     0,     0,     0,   126,     0,   126,   126,     0,
     2207       0,     0,   126,   524,   126,   126,     0,     0,     0,   363,
     2208       0,   211,     0,   235,   237,   246,     0,  1346,  1347,     0,
     2209       0,     0,     0,     0,     0,     0,     0,  1357,     0,     0,
     2210       0,   716,     0,     0,     0,     0,     0,     0,     0,     0,
     2211       0,     0,     0,   165,     0,     0,     0,     0,     0,     0,
     2212       0,     0,     0,     0,   211,   524,     0,   524,     0,     0,
     2213     524,     0,   165,   524,     0,     0,     0,     0,     0,     0,
     2214       0,     0,     0,     0,   126,   369,   363,     0,     0,     0,
     2215       0,     0,     0,     0,     0,     0,     0,     0,  1392,  1222,
     2216    1393,  1394,  1395,     0,     0,     0,     0,     0,     0,     0,
     2217       0,     0,  1399,     0,     0,     0,     0,     0,     0,     0,
     2218       0,  1410,     0,     0,     0,   211,     0,   235,   237,   246,
     2219       0,     0,     0,    86,     0,     0,     0,     0,   165,     0,
     2220      86,     0,     0,     0,     0,     0,  1431,     0,     0,     0,
     2221     369,     0,     0,     0,   812,     0,     0,     0,     0,     0,
     2222       0,     0,     0,   211,     0,     0,     0,     0,   211,     0,
     2223       0,     0,     0,     0,   156,     0,     0,     0,     0,     0,
     2224     598,     0,     0,   497,     0,   598,     0,     0,     0,  1469,
     2225    1470,    86,     0,     0,   369,   369,   369,     0,     0,     0,
     2226       0,     0,  1475,     0,     0,     0,     0,     0,     0,  1475,
     2227       0,     0,   369,     0,     0,     0,     0,     0,     0,     0,
     2228       0,   251,     0,     0,     0,     0,     0,     0,     0,     0,
     2229    1308,   256,   211,     0,     0,     0,     0,     0,     0,     0,
     2230       0,  1508,     0,     0,   524,  1514,     0,     0,     0,     0,
     2231       0,     0,     0,     0,   211,     0,     0,     0,     0,   235,
     2232     237,     0,     0,     0,     0,     0,     0,   246,     0,     0,
     2233     369,     0,   936,  1536,     0,  1537,     0,     0,     0,     0,
     2234       0,     0,     0,     0,     0,     0,     0,   156,     0,     0,
     2235       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2236       0,   386,     0,  1552,  1553,   716,     0,     0,     0,     0,
     2237     211,  1556,  1557,     0,     0,     0,     0,     0,     0,     0,
     2238       0,     0,     0,     0,   418,     0,     0,     0,   211,   282,
     2239     283,     0,   284,   211,     0,   211,     0,     0,   433,     0,
     2240       0,     0,     0,     0,     0,     0,     0,   438,     0,     0,
     2241       0,     0,   211,     0,     0,   211,   211,   446,   285,     0,
     2242       0,     0,   369,   211,   286,     0,   622,     0,   287,     0,
     2243     369,   288,   289,   290,   291,    41,    42,   211,   292,   293,
     2244       0,     0,   464,     0,   211,     0,     0,   474,     0,     0,
     2245       0,   126,   126,     0,     0,     0,     0,     0,     0,     0,
     2246     482,   294,     0,   379,     0,     0,   492,     0,   496,    45,
     2247      46,   296,   297,   298,   299,     0,     0,     0,     0,     0,
     2248     126,     0,   788,   126,   126,   526,   126,     0,   126,   126,
     2249       0,     0,     0,   126,   126,     8,     9,    10,    11,    12,
     2250      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2251      23,    24,    25,  -296,     0,     0,     0,     0,     0,     0,
     2252       0,     0,     0,     0,    31,   716,     0,     0,   586,     0,
     2253       0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
     2254     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2255       0,     0,    34,     0,     0,     0,     0,     0,     0,   211,
     2256       0,     0,   636,  -296,   165,     0,   637,   638,     0,   640,
     2257       0,     0,     0,     0,     0,     0,   651,   652,     0,   653,
     2258     654,     0,   655,     0,   656,     0,     0,   211,     0,     0,
     2259       0,     0,   211,     0,     0,     0,     0,     0,     0,     0,
     2260       0,   586,     0,     0,   282,   283,     0,   284,     0,   671,
     2261       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2262     598,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2263       0,   126,   126,   285,   682,     0,     0,     0,     0,   286,
     2264       0,   369,   369,   287,     0,     0,   288,   289,   290,   291,
     2265      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2266     708,     0,     0,   211,     0,     0,   711,     0,     0,     0,
     2267       0,   464,     0,     0,     0,     0,   294,   211,   379,     0,
     2268       0,   380,     0,     0,    45,    46,   296,   297,   298,   299,
     2269       0,     0,     0,     0,     0,     0,     0,   497,     0,     0,
     2270       0,   524,     0,     0,     0,     0,     0,   746,     0,     0,
     2271       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2272       0,     0,   764,     0,  -519,     0,     0,     1,     2,     3,
     2273       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2274      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2275      24,    25,     0,     0,    26,    27,    28,    29,     0,   211,
     2276      30,   791,     0,    31,    32,     0,     0,     0,     0,   716,
     2277     801,   211,     0,     0,     0,     0,     0,   803,     0,     0,
     2278       0,     0,     0,   811,     0,     0,     0,     0,    33,   126,
     2279     211,    34,   825,    35,   126,    36,    37,     0,    38,    39,
    21102280      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
    2111        0,   355,   355,    79,   355,   355,   356,    86,     0,     0,
    2112        0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
    2113        0,     0,   363,   906,    77,   411,     0,    86,     0,     0,
    2114        0,    45,    46,     0,     0,    86,     0,     0,     0,     0,
    2115        0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2116        0,     0,     0,   363,     0,     0,     0,     0,     0,   355,
    2117      355,     0,     0,     0,     0,     0,   884,     0,     0,     0,
    2118      887,   363,     0,    86,     0,     0,     0,     0,     0,     0,
    2119        0,   353,     0,     0,     0,   356,     0,     0,     0,     0,
    2120        0,     0,     0,     0,     0,   356,     0,   356,     0,     0,
    2121        0,     0,   224,   126,     0,   356,     0,     0,   126,   356,
    2122        0,     0,     0,     0,     0,   363,   167,     0,   172,     0,
    2123        0,   178,   179,   180,     0,   182,     0,     0,    74,     0,
    2124      355,     0,     0,     0,     0,    74,     0,     0,     0,   233,
    2125        0,     0,     0,     0,     0,  1219,     0,     0,     0,     0,
    2126        0,   248,   249,     0,     8,     9,    10,    11,    12,     0,
     2281       0,   218,     0,     0,     0,     0,     0,     0,     0,     0,
     2282       0,     0,     0,     0,     0,   341,   364,     0,     0,     0,
     2283       0,     0,   865,    43,     0,    44,     0,     0,     0,     0,
     2284       0,    45,    46,     0,     0,     0,     0,     0,   716,     0,
     2285       0,     0,     0,     0,     0,     0,     0,     0,     0,   414,
     2286       0,     0,     0,     0,     0,     0,   414,     0,   811,     0,
     2287       0,     0,     0,     0,     0,     0,   906,     0,     0,     8,
     2288       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2289      19,    20,    21,    22,    23,    24,    25,   369,   369,    26,
     2290      27,    28,     0,   211,     0,     0,   218,   251,    31,     0,
     2291       0,     0,     0,     0,     0,     0,     0,   943,   944,     0,
    21272292       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2128       79,     0,     0,   223,     0,     0,     0,     0,     0,     0,
    2129      363,     0,     0,    31,     0,     0,    74,     0,     0,     0,
    2130        0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
    2131      356,     0,   577,     0,     0,     0,     0,   355,     0,   355,
    2132        0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
    2133       40,     0,     0,     0,   363,   363,   363,    41,    42,     0,
    2134        0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
    2135        0,     0,   363,     0,     0,     0,     0,   355,   355,   355,
    2136        0,     0,     0,  1506,     0,   411,     0,     0,   355,   355,
    2137      363,    45,    46,     0,     0,   507,     0,   509,   512,   126,
    2138        0,    86,    77,     0,  1305,   515,   516,     0,     0,     0,
     2293       0,     0,     0,   211,     0,     0,    34,     0,   414,     0,
     2294       0,    37,     0,    38,    39,    40,     0,     0,     0,     0,
     2295     981,     0,    41,    42,     0,   126,   985,     0,     0,     0,
     2296       0,     0,     0,     0,     0,     0,     0,     0,   211,     0,
     2297       0,     0,     0,     0,     0,     0,     0,     0,    43,   211,
     2298     157,     0,     0,     0,     0,     0,    45,    46,     0,     0,
     2299       0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
     2300       0,   414,   582,     0,   414,   585,     0,     0,     0,     0,
     2301       0,     0,     0,     0,     0,   364,     0,   369,     0,   614,
     2302    1019,     0,     0,     0,     0,     0,     0,  1020,     0,     0,
     2303       0,     0,     0,     0,     0,     0,     0,     0,   632,     0,
     2304    1022,   341,  1023,     0,     0,     0,     0,     0,     0,     0,
     2305       0,   211,     0,     0,     0,     0,  1035,     0,     0,     0,
     2306       0,     0,  1039,     0,     0,   211,     0,     0,   414,     0,
     2307       0,     0,   414,   524,  1077,   524,     0,  1078,     0,     0,
     2308       0,     0,     0,     0,     0,     0,   126,     0,     0,     0,
    21392309       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2140      509,   509,     0,     0,     0,     0,     0,    86,     0,     0,
    2141      363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2142        0,   355,     0,   356,   356,     0,   356,   356,     0,     0,
    2143      413,     0,     0,     0,     0,     0,     0,     0,   509,     0,
    2144        0,     0,     0,     0,     0,   363,    79,     8,     9,    10,
     2310       0,     0,     0,   364,     0,     0,     0,     0,     0,   524,
     2311       0,   524,     0,     0,     0,     0,     0,     0,     0,     0,
     2312       0,     0,   507,     0,   509,   512,     0,     0,     0,     0,
     2313       0,     0,   515,   516,     0,     0,     0,     0,   165,     0,
     2314       0,     0,     0,     0,     0,     0,     0,   509,   509,   414,
     2315       0,     0,   364,     0,   591,     0,   211,     0,     0,     0,
     2316       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2317      17,    18,    19,    20,    21,    22,    23,    24,    25,  -296,
     2318       0,    26,    27,    28,     0,   509,     0,     0,     0,  1150,
     2319      31,   414,     0,     0,     0,   341,   364,     0,     0,     0,
     2320       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2321       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2322       0,   509,     0,    37,     0,   336,   337,    40,     0,  -296,
     2323       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
     2324       0,   414,   414,     0,     0,     0,     0,   526,     0,     0,
     2325       0,   211,     0,  1215,     0,     0,   321,     0,     0,     0,
     2326     805,   364,   338,     0,     0,     0,   346,     0,    45,    46,
     2327       0,   614,     0,   614,   614,     0,     0,     0,   382,   382,
     2328     614,     0,     0,     0,     0,     0,     0,  1227,     0,     0,
     2329     844,   364,  1229,     0,     0,     0,   364,     0,     0,     0,
     2330    1233,     0,     0,     0,     0,   364,   364,   364,     0,     0,
     2331       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2332       0,     0,     0,   364,     0,     0,     0,     0,   414,   886,
     2333       0,     0,   414,   889,     0,  1259,     0,     0,     0,   891,
     2334       0,     0,     0,     0,     0,     0,     0,  1267,     0,   321,
     2335    1268,     0,  1269,     0,     0,     0,     0,     0,   414,     0,
     2336       0,     0,     0,     0,     0,     0,  1278,  1279,     0,     0,
     2337       0,     0,     0,   478,     0,     0,     0,     0,     0,     0,
     2338       0,   364,   614,     0,     0,     0,     0,     0,  1292,     0,
     2339     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
     2340     509,   509,   509,   509,   509,   509,   509,   509,     0,     0,
     2341       0,     0,     0,     0,     0,   341,   364,     0,     0,     0,
     2342     414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
     2343       0,     0,     0,     0,     0,  1331,     0,     0,     0,     0,
     2344       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2345      18,    19,    20,    21,    22,    23,    24,    25,  -296,     0,
     2346      26,    27,    28,     0,     0,   414,     0,     0,     0,    31,
     2347       0,     0,     0,   364,     0,     0,     0,     0,     0,     0,
     2348     805,   364,     0,     0,   614,     0,   614,     0,     0,     0,
     2349     382,     0,     0,     0,     0,     0,   614,    34,   211,     0,
     2350       0,     0,    37,     0,   336,   337,    40,     0,  -296,     0,
     2351    1381,     0,  1382,    41,    42,     0,     0,     0,     0,     0,
     2352       0,     0,     0,     0,     0,     0,  1390,     0,  1391,     0,
     2353       0,     0,     0,     0,     0,     0,   509,     0,     0,   635,
     2354       0,   338,     0,  1398,     0,     0,     0,    45,    46,     0,
     2355       0,     0,     0,     0,     0,     0,     0,     0,     0,  1416,
     2356    1418,     0,     0,     0,     0,     0,     0,     0,   805,     0,
     2357    1423,     0,     0,  1233,     0,   341,   364,   414,     0,   414,
     2358       0,     0,     0,   414,   710,     0,     0,     0,     0,     0,
     2359       0,     0,     0,     0,  1445,     0,     0,   509,     0,     0,
     2360       0,     0,     0,  1452,   614,   614,  1454,     0,  1456,  1458,
     2361    1460,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2362       0,     0,     0,   742,     0,     0,     0,     0,   509,     0,
     2363       0,     0,     0,     0,     0,     0,   759,     0,     0,   414,
     2364       0,   742,     0,     0,   742,     0,     0,     0,  1490,     0,
     2365    1492,     0,  1233,     0,     0,     0,     0,   769,     0,     0,
     2366     414,  1147,     0,     0,     0,     0,     0,  1503,     0,     0,
     2367       0,   364,     0,     0,     0,     0,     0,   414,  1159,   790,
     2368     614,   614,  1164,     0,     0,     0,     0,     0,     0,   799,
     2369       0,     0,   364,   364,     0,     0,   346,     0,     0,     0,
     2370       0,   759,     0,     0,     1,     2,     3,     4,     5,     6,
     2371       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2372      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2373       0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2374      31,    32,     0,     0,     0,     0,     0,     0,   509,     0,
     2375     864,     0,     0,     0,     0,   414,     0,   414,   382,     0,
     2376       0,     0,   414,     0,     0,    33,     0,     0,    34,     0,
     2377      35,   614,    36,    37,     0,    38,    39,    40,     0,     0,
     2378       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
     2379       0,     0,     0,   509,   805,   414,  1247,     0,     0,     0,
     2380       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2381      43,     0,    44,     0,     0,     0,  -523,     0,    45,    46,
     2382     364,     0,     0,     0,     0,     0,     0,     0,   509,     0,
     2383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2384       0,   509,     0,     0,     0,     0,     0,     0,   282,   283,
     2385       0,   284,     0,     0,     0,     0,   759,     0,   965,     0,
     2386       0,     0,     0,     0,     0,     0,     0,     0,   976,     0,
     2387       0,     0,     0,     0,   984,     0,     0,   285,     0,     0,
     2388       0,   341,   509,   641,     0,   139,   140,   287,     0,     0,
     2389     288,   289,   290,   291,    41,    42,     0,   292,   293,   364,
     2390       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2391       0,     0,     0,     0,     0,     0,     0,  1002,  1003,     0,
     2392     294,   346,   642,     0,   643,   380,     0,     0,    45,    46,
     2393     296,   297,   298,   299,     0,   346,     0,     0,     0,     0,
     2394       0,     0,     0,     0,     0,     0,     0,     0,   364,   364,
     2395       0,     0,     0,     0,     0,     0,     0,     0,     0,   509,
     2396       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2397       0,     0,     0,     0,     0,  1033,     0,     0,     0,   382,
     2398       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2399       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
    21452400      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2146       21,    22,    23,    24,    25,  -293,     0,    26,    27,    28,
    2147        0,     0,     0,     0,   509,     0,    31,     0,     0,     0,
    2148        0,   356,   356,     0,     0,     0,     0,     0,   355,   363,
    2149        0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
    2150        0,   363,     0,     0,    34,     0,   225,  1143,   126,   363,
    2151        0,    38,    39,   363,     0,  -293,     0,   592,     0,   600,
    2152        0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
    2153      624,   625,     0,     0,     0,    77,     0,     0,     0,     0,
    2154      282,   283,    77,   284,     0,     0,   635,     0,   338,     0,
    2155        0,     0,   356,     0,    45,    46,     0,     0,     0,     0,
    2156        0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
    2157        0,     0,     0,     0,    86,   286,     0,     0,     0,   287,
    2158        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2159      293,     0,     0,    77,     0,   224,     0,     0,     0,     0,
    2160        0,     0,   413,     0,   363,     0,     0,     0,     0,     0,
    2161        0,     0,   294,     0,   379,     0,     0,    79,     0,     0,
    2162       45,    46,   296,   297,   298,   299,     0,     0,     0,   356,
    2163        0,   356,  1013,   787,     0,     8,     9,    10,    11,    12,
    2164        0,     0,  1243,   509,   509,   509,   509,   509,   509,   509,
    2165      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2166      509,   356,   282,   283,    31,   284,     0,     0,     0,   356,
    2167      356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2168      356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2169        0,   285,    34,     0,    79,     0,     0,   286,     0,     0,
    2170        0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2171        0,   292,   293,     0,     0,     0,     0,   363,   363,     0,
    2172      363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
    2173        0,     0,     0,   356,   294,     0,   379,     0,     0,     0,
    2174       86,     0,   344,    46,   296,   297,   298,   299,     0,     0,
     2401      21,    22,    23,    24,    25,     0,   346,    26,    27,    28,
     2402      29,   509,   509,    30,     0,     0,    31,    32,     0,     0,
     2403       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2404       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2405       0,    33,     0,     0,    34,   321,    35,     0,    36,    37,
     2406       0,    38,    39,    40,     0,     0,     0,     0,   364,     0,
     2407      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2408       0,     0,     0,   382,     0,     0,     0,   282,   283,   976,
     2409     284,     0,     0,   742,     0,     0,    43,     0,    44,     0,
     2410       0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
     2411       0,     0,     0,     0,  1154,     0,   285,     0,     0,     0,
     2412       0,     0,   286,     0,     0,  1169,   287,     0,     0,   288,
     2413     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2414       0,     0,     0,     0,     0,     0,     0,   382,     0,  1187,
     2415       0,     0,     0,   282,   283,   414,   284,     0,     0,   294,
     2416       0,   379,     0,     0,   976,   976,   758,    45,    46,   296,
     2417     297,   298,   299,     0,     0,     0,     0,     0,     0,   414,
     2418     414,     0,   285,     0,     0,  1219,     0,     0,   286,     0,
     2419       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2420      42,     0,   292,   293,   414,     0,     0,     0,     0,     0,
     2421       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,   294,   509,   379,     0,     0,
     2423     973,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     2424     976,     0,   509,     0,     0,     0,     0,     0,     0,     0,
     2425       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2426     864,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2427       0,     0,     0,     0,     0,  1270,  1271,     0,     0,     0,
     2428       0,     1,     2,   206,     4,     5,     6,     7,     8,     9,
     2429      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2430      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2431      28,    29,   509,   509,    30,   282,   283,    31,  1042,  1043,
     2432       0,  1044,     0,     0,  1045,  1046,  1047,  1048,  1049,  1050,
     2433    1051,  1052,     0,     0,     0,  1053,     0,     0,     0,  1054,
     2434    1055,     0,    33,     0,   285,    34,     0,    35,     0,    36,
     2435    1056,     0,    38,    39,   287,     0,     0,   288,   289,   290,
     2436     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
     2437       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2438       0,     0,     0,     0,     0,     0,     0,   294,     0,  1057,
     2439       0,     0,   171,     0,     0,    45,    46,   296,   297,   298,
     2440     299,     0,     0,     0,     0,  1058,     0,     0,     0,     0,
     2441    -131,     0,     0,     0,     0,     0,  1375,     0,     0,   742,
    21752442       1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    21762443      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2177       21,    22,    23,    24,    25,   363,   363,    26,    27,    28,
    2178       29,     0,     0,    30,   282,   283,    31,   284,     0,   509,
    2179        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2180      356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2181        0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
    2182        0,    38,    39,   287,   165,     0,   288,   289,   290,   291,
     2444      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2445      29,     0,     0,    30,   282,   283,    31,   284,     8,     9,
     2446      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2447      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2448      28,     0,     0,   285,    34,     0,    35,    31,    36,   286,
     2449       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
    21832450      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2184        0,   218,     0,     0,     0,     0,   363,    79,     0,     0,
    2185      509,     0,     0,     0,    79,     0,   294,     0,  1056,     0,
    2186        0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
    2187        0,     0,     0,   926,     0,   927,     0,     0,     0,  -128,
    2188      509,     0,   930,   931,     0,     0,     0,   936,   165,   225,
    2189        0,     0,   272,     0,     0,     0,     0,     0,     0,   941,
    2190        0,     0,     0,     0,   945,    79,     0,     0,     0,     0,
    2191        0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
    2192        0,   165,     0,   363,     0,   363,     0,     0,     0,     0,
    2193        0,   369,   979,     0,     0,   375,     0,     0,     0,     0,
    2194        0,     0,     0,     0,     0,     0,  1163,     0,     0,     8,
    2195        9,    10,    11,    12,     0,   363,     0,     0,     0,     0,
    2196        0,     0,     0,   363,   363,   363,     0,     0,     0,     0,
    2197        0,     0,     0,     0,   363,   363,   282,   283,    31,   284,
    2198        0,     0,     0,     0,   165,     0,     0,     0,    86,     0,
    2199        0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
    2200      509,     0,     0,     0,     0,   285,    34,     0,     0,     0,
    2201        0,   286,     0,     0,   165,   287,     0,     0,   288,   289,
    2202      290,   291,    41,    42,     0,   292,   293,   363,     0,     0,
    2203        0,  1024,  1025,  1026,  1027,     0,  1029,     0,     0,   375,
    2204        0,     0,     0,     0,     0,   509,   165,     0,   294,     0,
    2205      379,  1073,     0,     0,     0,     0,  1164,    46,   296,   297,
    2206      298,   299,     0,     0,     0,  1079,     0,     0,     0,   524,
    2207        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2208      509,     0,   165,     0,     0,     0,     0,     0,     0,   211,
    2209        0,     0,     0,   509,   363,     0,     0,     0,   231,     0,
    2210      235,     0,   237,     0,     0,  1099,     0,     0,     0,   246,
    2211        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2212      598,     0,     0,     0,     0,   622,     0,     0,     0,     0,
    2213        0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
    2214      211,    86,   235,   237,   246,     0,     0,     0,    86,     0,
    2215     1130,     0,     0,     0,     0,     0,  1137,     0,     0,     0,
    2216        0,  1141,     0,     0,     0,     0,  1145,     0,  1146,     0,
    2217        0,     0,  1148,     0,  1149,  1150,     0,     0,  1153,     0,
    2218        0,     0,     0,   211,     0,     0,     0,  1165,     0,     0,
    2219        0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
    2220        0,   165,   165,     0,     0,  1180,  1181,     0,   369,     0,
    2221        0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
    2222        0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
    2223        0,     0,  1211,     0,     0,  1213,     0,     0,     0,     0,
    2224        0,     0,     0,     0,   211,     0,   235,   237,   246,     0,
    2225        0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
    2226        0,     8,     9,    10,    11,    12,     0,     0,     0,   165,
    2227        0,   509,   509,     0,     0,     0,     0,     0,  1227,     0,
    2228        0,   524,   211,   524,  1231,  1232,   524,   211,   165,   524,
    2229       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2230        0,   369,   497,     0,  1248,     0,     0,  1252,     0,     0,
    2231        0,  1254,     0,     0,     0,     0,     0,     0,    34,     0,
    2232        0,     0,     0,    37,  1262,   183,   184,    40,     0,     0,
    2233        0,     0,     0,     0,    41,    42,     0,  1269,     0,  1271,
    2234     1272,  1273,  1274,     0,     0,     0,     0,     0,     0,     0,
    2235        0,   211,     0,     0,   165,  1281,     0,  1282,     0,     0,
    2236      185,   172,     0,     0,     0,     0,   369,     0,    45,    46,
    2237      811,     0,     0,   211,     0,     0,     0,     0,   235,   237,
    2238        0,     0,     0,     0,     0,     0,   246,     0,     0,     0,
    2239     1310,  1311,     0,     0,     0,     0,   598,     0,     0,     0,
    2240        0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
    2241      369,   369,   369,     0,     0,     0,     0,     0,     0,     0,
    2242        0,     0,     0,     0,     0,     0,     0,     0,   369,   211,
    2243        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2244     1343,  1344,     0,     0,     0,     0,     0,   211,     0,     0,
    2245     1354,     0,   211,     0,   211,     0,     0,     0,     0,     0,
    2246      524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2247        0,   211,     0,     0,   211,   211,   509,     0,     0,     0,
    2248        0,     0,   211,     0,     0,     0,   369,     0,   935,     0,
    2249        0,     0,   509,     0,     0,     0,   211,     0,     0,     0,
    2250        0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
    2251        0,  1389,     0,  1390,  1391,  1392,     0,     0,     0,     0,
    2252        0,   716,     0,     0,     0,  1396,   156,     0,     0,     0,
    2253        0,     0,     0,     0,  1407,     8,     9,    10,    11,    12,
    2254       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2255       23,    24,    25,     0,     0,    26,    27,    28,     0,  1428,
    2256        0,     0,   509,   509,    31,     0,     0,     8,     9,    10,
    2257       11,    12,     0,   251,     0,     0,     0,   369,     0,     0,
    2258        0,   622,     0,   256,     0,   369,     0,     0,     0,     0,
    2259        0,     0,    34,     0,     0,     0,    31,    37,     0,    38,
    2260       39,    40,  1466,  1467,     0,     0,     0,     0,    41,    42,
    2261        0,     0,     0,     0,     0,  1472,     0,     0,   211,     0,
    2262        0,     0,  1472,     0,    34,     0,     0,     0,     0,    37,
    2263        0,   183,   184,    40,    43,     0,   157,     0,     0,   156,
    2264       41,    42,    45,    46,     0,     0,   211,     0,     0,     0,
    2265        0,   211,     0,   386,  1505,     0,     0,     0,  1511,     0,
    2266        0,     0,     0,     0,     0,     0,   265,     0,     0,     0,
    2267        0,     0,     0,     0,    45,    46,   418,     0,     0,     0,
    2268      716,     0,     0,     0,     0,     0,  1533,     0,  1534,     0,
    2269      433,     0,     0,     0,     0,   524,     0,     0,     0,   438,
    2270        0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
    2271        0,     0,     0,     0,     0,     0,  1549,  1550,     0,   165,
    2272        0,     0,   211,     0,  1553,  1554,     0,     0,     0,     0,
    2273        0,     0,     0,     0,   464,     0,   211,     0,     0,   474,
    2274        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2275        0,     0,   482,     0,     0,     0,   497,     0,   492,     0,
    2276      496,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2277        0,     0,     0,     0,     0,   598,     0,   526,     8,     9,
    2278       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2279       20,    21,    22,    23,    24,    25,   369,   369,    26,    27,
    2280       28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2281        0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
    2282      586,     0,     0,     0,     0,   591,     0,     0,     0,   211,
    22832451       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2284       37,     0,    38,    39,    40,     0,     0,     0,   211,     0,
    2285        0,    41,    42,     0,   636,     0,   524,     0,   637,   638,
    2286        0,   640,     0,     0,     0,     0,     0,     0,   651,   652,
    2287        0,   653,   654,     0,   655,     0,   656,    43,     0,    44,
    2288        0,     0,     0,     0,     0,    45,    46,     0,     0,     0,
    2289        0,     0,     0,   586,     0,     0,     0,     0,     0,     0,
    2290        0,   671,     0,     0,     0,     0,     0,     0,     0,   341,
    2291      364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2292        0,     0,   716,     0,     0,     0,   682,     0,     0,     0,
    2293        0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2294       12,     0,     0,   414,     0,     0,     0,     0,     0,     0,
    2295      414,     0,   708,     0,     0,     0,     0,     0,   711,     0,
    2296        0,   211,     0,   464,   218,    31,     8,     9,    10,    11,
    2297       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2298       22,    23,    24,    25,  -293,     0,    26,    27,    28,     0,
    2299        0,   211,     0,    34,     0,    31,     0,     0,    37,   746,
    2300        0,   716,    40,     0,     0,     0,     0,     0,     0,    41,
    2301       42,     0,     0,     0,   764,     0,     0,     0,     0,     0,
    2302        0,     0,   414,    34,     0,     0,   211,     0,    37,     0,
    2303      336,   337,    40,     0,  -293,   719,     0,   211,     0,    41,
    2304       42,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    2305      369,   369,     0,   790,     0,     0,     0,     0,     0,   218,
    2306        0,     0,   800,     0,     0,   635,     0,   338,   321,   802,
    2307        0,     0,     0,    45,    46,   810,     0,   414,   346,     0,
    2308        0,     0,     0,     0,   824,   414,   582,     0,   414,   585,
    2309      382,   382,     0,     0,     0,     0,     0,     0,     0,   364,
    2310        0,     0,     0,   614,     0,     0,     0,     0,     0,   211,
    2311        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2312        0,     0,   632,   211,   864,   341,   205,     2,   206,     4,
    2313        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2314       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2315       25,     0,   414,    26,    27,    28,   414,     0,     0,     0,
    2316      810,   321,    31,     0,     0,     0,     0,     0,   905,     0,
    2317      369,     0,   282,   283,     0,   284,     0,     0,     0,     0,
    2318        0,     0,     0,     0,     0,   478,     0,   364,     0,     0,
    2319       34,     0,    35,     0,    36,     0,     0,   207,    39,   251,
    2320        0,   285,     0,     0,     0,     0,     0,   286,     0,   942,
    2321      943,   287,   211,     0,   288,   289,   290,   291,    41,    42,
    2322        0,   292,   293,     0,     0,     0,   524,     0,   524,     0,
    2323        0,     0,     0,   414,   208,     0,   364,     0,     0,     0,
    2324       45,    46,   980,     0,   294,     0,   379,   984,     0,   380,
    2325        0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
    2326        0,     0,   524,     0,   524,     0,     0,     0,     0,     0,
    2327        0,     0,     0,     0,     0,   414,     0,     0,     0,   341,
    2328      364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2329        0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
    2330        0,     0,   382,     0,     0,     0,     0,   211,     0,     0,
    2331        0,  1018,     0,     0,     0,     0,     0,     0,  1019,     0,
    2332        0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
    2333        0,  1021,     0,  1022,     0,     0,     0,     0,     0,     0,
    2334        0,     0,     0,     0,   804,   364,     0,  1034,     0,     0,
    2335        0,     0,     0,  1038,     0,   614,     0,   614,   614,     0,
    2336        0,     0,     0,     0,   614,  1076,     0,     0,  1077,     0,
    2337        0,     0,     0,     0,   843,   364,     0,     0,     0,     0,
    2338      364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
    2339      364,   364,     0,     0,     0,     0,   710,     0,     0,     0,
    2340        0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
    2341        0,     0,   414,   885,     0,     0,   414,   888,     0,     0,
    2342        0,     0,     0,   890,     0,     0,     0,     0,     0,     0,
    2343        0,     0,     0,     0,     0,   742,     0,     0,     0,     0,
    2344        0,     0,   414,     0,     0,   591,     0,     0,   759,     0,
    2345        0,     0,     0,   742,     0,     0,   742,     0,     0,     0,
    2346        0,     0,     0,     0,     0,   364,   614,     0,     0,   768,
    2347        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2348     1147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2349        0,   789,     0,     0,     0,     0,     0,     0,     0,   341,
    2350      364,   798,     0,     0,   414,   414,     0,     0,   346,     0,
    2351        0,     0,     0,   759,     0,     0,     0,     0,     0,     0,
    2352        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2353       18,    19,    20,    21,    22,    23,    24,    25,   526,     0,
    2354       26,    27,    28,     0,  1212,     0,     0,     0,   414,    31,
    2355        0,     0,     0,     0,   211,     0,   364,     0,     0,     0,
    2356        0,     0,   863,   804,   364,     0,     0,   614,     0,   614,
    2357      382,     0,     0,     0,     0,     0,     0,    34,  1224,   614,
    2358        0,     0,    37,  1226,   207,    39,    40,     0,     0,     0,
    2359        0,  1230,     0,    41,    42,     0,     8,     9,    10,    11,
    2360       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2361       22,    23,    24,    25,  -293,     0,     0,     0,     0,    43,
    2362        0,   270,     0,     0,  1256,    31,     0,    45,    46,     0,
    2363        0,     0,     0,     0,     0,     0,  1264,     0,     0,  1265,
    2364        0,  1266,     0,     0,     0,     0,     0,     0,     0,     0,
    2365        0,   804,     0,    34,     0,  1275,  1276,     0,   341,   364,
    2366      414,     0,   414,     0,  -293,     0,   414,     0,   759,     0,
    2367      964,     0,     0,     0,     0,     0,     0,  1289,     0,     0,
    2368      975,     0,     0,     0,     0,     0,   983,   614,   614,     0,
    2369        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2370       18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
    2371        0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
    2372        0,     0,   414,     0,  1328,     0,     0,     0,  1001,  1002,
    2373        0,     0,   346,     0,     0,     0,     0,     0,   282,   283,
    2374        0,   284,     0,   414,  1144,     0,   346,    34,     0,     0,
    2375        0,     0,     0,     0,   364,     0,     0,     0,  -294,     0,
    2376      414,  1156,     0,   614,   614,  1161,     0,   285,     0,     0,
    2377        0,     0,     0,   286,     0,   364,   364,   287,     0,     0,
    2378      288,   289,   290,   291,    41,    42,  1032,   292,   293,     0,
    2379      382,     0,     0,     0,     0,     0,     0,     0,     0,  1378,
    2380        0,  1379,     0,     0,     0,     0,     0,     0,     0,     0,
    2381      294,     0,   379,  1387,     0,  1388,     0,   758,    45,    46,
    2382      296,   297,   298,   299,     0,     0,     0,   346,     0,     0,
    2383        0,     0,  1395,     0,     0,     0,     0,     0,   414,     0,
    2384      414,     0,     0,     0,     0,   414,     0,     0,  1413,  1415,
    2385        0,     0,     0,     0,   614,     0,     0,     0,     0,  1420,
    2386        0,     0,  1230,     0,     0,     0,   321,     0,     0,     0,
    2387        0,     0,     0,     0,     0,     0,     0,   804,   414,  1244,
    2388        0,     0,     0,  1442,     0,     0,     0,     0,     0,     0,
    2389        0,     0,  1449,     0,   382,  1451,     0,  1453,  1455,  1457,
    2390      975,   364,     0,     0,   742,   282,   283,     0,   284,     0,
    2391        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2392        0,     0,     0,     0,     0,  1151,     0,     0,     0,     0,
    2393        0,     0,     0,     0,   285,     0,  1166,  1487,     0,  1489,
    2394      641,  1230,   139,   140,   287,     0,     0,   288,   289,   290,
    2395      291,    41,    42,     0,   292,   293,  1500,     0,   382,     0,
    2396     1184,     0,   341,     0,     0,     0,     0,     0,     0,     0,
    2397        0,     0,     0,     0,     0,   975,   975,   294,     0,   642,
    2398      364,   643,   380,     0,     0,    45,    46,   296,   297,   298,
    2399      299,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
     2452     110,     0,    38,    39,     0,     0,   294,     0,  1057,     0,
     2453       0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
     2454       0,     0,     0,     0,     0,     0,     0,     0,     0,  -131,
    24002455       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
    24012456       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2402       17,    18,    19,    20,    21,    22,    23,    24,    25,   364,
    2403      364,    26,    27,    28,    29,     0,     0,    30,     0,     0,
    2404       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2405        0,   975,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,     0,     0,     0,     0,     0,     0,     0,    34,   863,
    2407       35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
    2408        0,     0,     0,     0,  1267,  1268,     0,     1,     2,   206,
    2409        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2410       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2411       24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
    2412       30,   282,   283,    31,  1041,  1042,     0,  1043,     0,     0,
    2413     1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
    2414        0,  1052,     0,     0,     0,  1053,  1054,     0,    33,   364,
    2415      285,    34,     0,    35,     0,    36,  1055,     0,    38,    39,
    2416      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2417      292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2457      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2458       0,    26,    27,    28,    29,     0,     0,    30,   282,   283,
     2459      31,   284,     0,     0,     0,     8,     9,    10,    11,    12,
     2460      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2461      23,    24,    25,  -297,     0,     0,     0,   285,    34,     0,
     2462      35,     0,    36,   286,    31,    38,    39,   287,     0,   321,
     2463     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    24182464       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2419        0,     0,     0,   294,     0,  1056,     0,     0,   171,     0,
    2420        0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
    2421        0,  1057,     0,     0,     0,     0,  -128,     0,     0,     0,
    2422        0,     0,     0,     0,     0,  1372,     0,     0,   742,     0,
    2423        0,     0,     0,     0,     0,     0,   414,     0,     0,     0,
    2424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2426      414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
    2427        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2428        0,     0,     0,     0,     0,   414,     1,     2,   206,     4,
    2429        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2430       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2431       25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
    2432      282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
    2433       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2434       24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
    2435       34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
    2436        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2437      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2438        0,    34,     0,     0,     0,     0,   110,     0,    38,    39,
    2439        0,     0,   294,     0,    44,     0,     0,    41,    42,     0,
    2440       45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
    2441        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2442       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2443        0,     0,    26,    27,    28,     0,     0,     0,   321,   282,
    2444      283,    31,   284,     8,     9,    10,    11,    12,    13,    14,
    2445       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2446       25,     0,     0,    26,    27,    28,     0,     0,   285,    34,
    2447        0,    35,    31,    36,   286,     0,    38,    39,   287,     0,
    2448        0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    2449        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2450       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2451        0,   294,     0,   343,     0,     0,     0,     0,   758,   344,
    2452       46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
    2453        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2454       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2455        0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
    2456       31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
    2457       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2458        0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
    2459       35,    31,    36,   286,     0,    38,    39,   287,     0,     0,
    2460      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    2461        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2462        0,     0,     0,     0,     0,     0,   207,    39,     0,     0,
    2463      294,     0,   963,     0,     0,     0,     0,   758,   344,    46,
     2465       0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
     2466     294,     0,    44,  -297,     0,     0,     0,     0,    45,    46,
    24642467     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
    24652468       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     
    24682471     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    24692472      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2470        0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
     2473       0,    26,    27,    28,     0,     0,   285,    34,     0,    35,
    24712474      31,    36,   286,     0,    38,    39,   287,     0,     0,   288,
    24722475     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    24732476       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2474        0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
    2475        0,   963,     0,     0,     0,     0,   758,    45,    46,   296,
     2477       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
     2478       0,   343,     0,     0,     0,     0,   758,   344,    46,   296,
    24762479     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
    24772480       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    24782481      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    24792482      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
    2480        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2481        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482        0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
     2483       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2484      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2485      26,    27,    28,     0,     0,   285,    34,     0,    35,    31,
    24832486      36,   286,     0,    38,    39,   287,     0,     0,   288,   289,
    24842487     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
    2485        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2486        0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
    2487      343,     0,     0,     0,     0,     0,   344,    46,   296,   297,
     2488       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2489       0,     0,     0,     0,   207,    39,     0,     0,   294,     0,
     2490     964,     0,     0,     0,     0,   758,   344,    46,   296,   297,
    24882491     298,   299,     2,   206,     4,     5,     6,     7,     8,     9,
    24892492      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    24932496       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24942497       0,     0,     0,     0,   285,    34,     0,    35,     0,    36,
    2495      286,     0,   207,    39,   287,     0,     0,   288,   289,   290,
     2498     286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
    24962499     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
    24972500       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2498        0,     0,     0,     0,     0,     0,     0,   294,     0,   998,
    2499        0,     0,     0,     0,     0,   999,    46,   296,   297,   298,
     2501       0,     0,     0,     0,     0,     0,     0,   294,     0,   964,
     2502       0,     0,     0,     0,   758,    45,    46,   296,   297,   298,
    25002503     299,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    25012504      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     
    25082511      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    25092512       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2510        0,     0,     0,     0,     0,     0,   294,     0,   963,     0,
     2513       0,     0,     0,     0,     0,     0,   294,     0,   343,     0,
    25112514       0,     0,     0,     0,   344,    46,   296,   297,   298,   299,
    25122515       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     
    25202523      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
    25212524       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
    2523        0,     0,     0,    45,    46,   296,   297,   298,   299,  -516,
    2524        0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
     2525       0,     0,     0,     0,     0,   294,     0,   999,     0,     0,
     2526       0,     0,     0,  1000,    46,   296,   297,   298,   299,     2,
     2527     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2528      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2529      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2530       0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
     2531       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2532       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2533       0,   285,    34,     0,    35,     0,    36,   286,     0,    38,
     2534      39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2535       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2536       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2537       0,     0,     0,     0,   294,     0,   964,     0,     0,     0,
     2538       0,     0,   344,    46,   296,   297,   298,   299,     2,   206,
     2539       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2540      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2541      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2542       0,   282,   283,    31,   284,     0,     0,     0,     0,     0,
     2543       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2544       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2545     285,    34,     0,    35,     0,    36,   286,     0,   207,    39,
     2546     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2547     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2548       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2549       0,     0,     0,   294,     0,   379,     0,     0,     0,     0,
     2550       0,    45,    46,   296,   297,   298,   299,   205,     2,   206,
     2551       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2552      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2553      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2554       0,     0,     0,    31,     0,     8,     9,    10,    11,    12,
     2555      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2556      23,    24,    25,     0,     0,    26,    27,    28,   485,   486,
     2557     487,    34,     0,    35,    31,    36,    37,     0,   207,    39,
     2558      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2559       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2560       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2561      39,     0,     0,    43,     0,   208,     0,     0,     0,     0,
     2562       0,    45,    46,     1,     2,   206,     4,     5,     6,     7,
     2563       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2564      18,    19,    20,    21,    22,    23,    24,    25,  -296,     0,
     2565      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
     2566       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2567       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2568       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2569       0,    36,     0,     0,    38,    39,     0,     0,  -296,     1,
     2570       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2571      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2572      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
     2573       0,    44,    30,     0,     0,    31,     0,    45,    46,     0,
     2574       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2576       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2577      38,    39,   205,     2,   206,     4,     5,     6,     7,     8,
    25252578       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    25262579      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2527       27,    28,    29,     0,     0,    30,     0,     0,    31,    32,
     2580      27,    28,     0,     0,     0,     0,     0,    44,    31,     0,
     2581       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2582       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2583       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2584      36,     0,     0,   207,    39,     0,     2,   206,     4,     5,
     2585       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2586      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2587       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2588     208,    31,     0,     0,     0,     0,    45,    46,     0,     0,
     2589       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2590       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2591       0,    35,     0,    36,    37,     0,   207,    39,    40,     0,
     2592       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
    25282593       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25292594       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2530        0,     0,     0,    33,     0,     0,    34,     0,    35,     0,
    2531       36,    37,     0,    38,    39,    40,     0,     0,     0,     0,
    2532        0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
     2595       0,    43,     0,   208,     0,     0,     0,     0,     0,    45,
     2596      46,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2597      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2598      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2599       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2600       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2601      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2602       0,    26,    27,    28,    34,     0,    35,     0,    36,     0,
     2603      31,    38,    39,     0,     2,   206,     4,     5,     6,     7,
     2604       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2605      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
     2606      26,    27,    28,     0,     0,    38,    39,  -403,   678,    31,
     2607       0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    25332608       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2534        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
    2535       44,     0,     0,     0,     0,     0,    45,    46,     1,     2,
    2536        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2609       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2610     635,    36,   338,     0,    38,    39,     0,     0,    45,    46,
     2611       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2612       0,     0,     0,     0,     0,     0,  1354,     0,     0,     0,
     2613       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2614       0,   678,     0,     0,     0,     0,     0,    45,    46,     2,
     2615     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    25372616      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2538       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2539        0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
     2617      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2618       0,     0,     0,     0,    31,     0,     0,     0,     8,     9,
     2619      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2620      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2621      28,     0,    34,     0,    35,     0,    36,    31,   685,    38,
     2622      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25402623       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2541        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2542        0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
    2543       39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2624       0,  1356,     0,     0,     0,    34,     0,     0,     0,     0,
     2625       0,     0,    38,    39,     0,     0,   678,     0,     0,     0,
     2626       0,     0,    45,    46,     2,   206,     4,     5,     6,     7,
     2627       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2628      18,    19,    20,    21,    22,    23,    24,    25,     0,   686,
     2629      26,    27,    28,   687,     0,    45,    46,     0,     0,    31,
    25442630       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25452631       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2546        0,     0,     0,     0,    43,     0,    44,     0,     0,     0,
    2547     -520,     0,    45,    46,     1,     2,     3,     4,     5,     6,
    2548        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2549       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2550        0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
    2551       31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
    2552        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2553        0,     0,     0,     0,     0,    33,     0,     0,    34,     0,
    2554       35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
    2555        0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
    2556        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2557        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2558       43,     0,    44,     0,     0,     0,     0,     0,    45,    46,
    2559      205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    2560       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2561       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2562        0,     0,     0,     0,     0,     0,    31,     0,     8,     9,
    2563       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2564       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2565       28,   485,   486,   487,    34,     0,    35,    31,    36,    37,
    2566        0,   207,    39,    40,     0,     0,     0,     0,     0,     0,
    2567       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
    2568        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2569        0,     0,    38,    39,     0,     0,    43,     0,   208,     0,
    2570        0,     0,     0,     0,    45,    46,     1,     2,   206,     4,
     2632       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2633       0,    36,     0,     0,   207,    39,     0,     2,   206,     4,
    25712634       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25722635      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2573       25,  -293,     0,    26,    27,    28,    29,     0,     0,    30,
    2574        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2636      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2637       0,   270,    31,     0,     0,     0,     0,    45,    46,     0,
    25752638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25762639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25772640      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2578        0,  -293,     2,   206,     4,     5,     6,     7,     8,     9,
    2579       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2580       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2581       28,     0,     0,     0,    44,     0,     0,    31,     0,     0,
     2641       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2642      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2643      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2644       0,     0,     0,     0,   678,    31,     0,     0,     0,     0,
    25822645      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    25832646       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2584        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2585       37,     0,   207,    39,    40,     0,     0,     0,     0,     0,
    2586        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2587        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2588        0,     0,     0,     0,     0,     0,     0,    43,     0,   208,
    2589        0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
    2590        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2591       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2592       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2593        0,     0,    31,     0,     0,     0,     0,     8,     9,    10,
    2594       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2595       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2596       34,     0,    35,     0,    36,     0,    31,    38,    39,     0,
    2597        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2598       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2599       22,    23,    24,    25,    34,     0,    26,    27,    28,     0,
    2600        0,    38,    39,  -400,   678,    31,     0,     0,     0,     0,
    2601       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    2602        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2603        0,     0,     0,    34,     0,    35,   635,    36,   338,     0,
    2604       38,    39,     0,     0,    45,    46,     0,     0,     0,     0,
    2605        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2606        0,     0,  1351,     0,     0,     0,     0,     0,     0,     0,
    2607        0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
    2608        0,     0,     0,    45,    46,     2,   206,     4,     5,     6,
    2609        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2610       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2611        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2612       31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2613       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2614       24,    25,     0,     0,    26,    27,    28,     0,    34,     0,
    2615       35,     0,    36,    31,   685,    38,    39,     0,     0,     0,
    2616        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2617        0,     0,     0,     0,     0,     0,     0,  1353,     0,     0,
    2618        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2619        0,     0,   678,     0,     0,     0,     0,     0,    45,    46,
    2620        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2621       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2622       22,    23,    24,    25,     0,   686,    26,    27,    28,   687,
    2623        0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
    2624        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2625        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26262647       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2627      207,    39,     0,     2,   206,     4,     5,     6,     7,     8,
     2648      38,    39,     0,     2,   206,     4,     5,     6,     7,     8,
    26282649       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    26292650      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2630       27,    28,     0,     0,     0,     0,     0,   270,    31,     0,
     2651      27,    28,     0,     0,     0,     0,     0,   593,    31,     0,
    26312652       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    26322653       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26332654       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2634       36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
    2635        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2636       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2637        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2638      678,    31,     0,     0,     0,     0,    45,    46,     0,     0,
    2639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2641        0,    35,     0,    36,     0,     0,    38,    39,     0,     2,
    2642      206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2655      36,     0,     0,   207,    39,     8,     9,    10,    11,    12,
    26432656      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    26442657      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2645        0,     0,     0,   593,    31,     0,     0,     0,     0,    45,
    2646       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2658       0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
     2659     208,     0,     0,     0,     0,     0,    45,    46,     0,     0,
    26472660       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2648        0,     0,    34,     0,    35,     0,    36,     0,     0,   207,
    2649       39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2661       0,   285,    34,     0,     0,     0,     0,   286,     0,    38,
     2662      39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2663       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2664       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2665       0,     0,     0,     0,   294,     0,   517,     0,     0,   171,
     2666       0,     0,    45,    46,   296,   297,   298,   299,     8,     9,
     2667      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2668      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2669      28,     0,     0,     0,     0,   282,   283,    31,   284,     8,
     2670       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2671      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2672      27,    28,     0,     0,   285,    34,     0,     0,    31,     0,
     2673     286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
     2674     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
     2675       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2676       0,    37,     0,   336,   337,    40,     0,   294,   -37,   295,
     2677       0,     0,    41,    42,     0,    45,    46,   296,   297,   298,
     2678     299,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    26502679      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2651        0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
    2652       31,   284,     0,     0,     0,     0,   208,     0,     0,     0,
    2653        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2654        0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
    2655        0,     0,     0,   286,     0,    38,    39,   287,     0,     0,
     2680     338,    26,    27,    28,     0,     0,    45,    46,   282,   283,
     2681      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
     2682      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2683       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
     2684       0,    31,     0,   286,     0,    38,    39,   287,     0,     0,
    26562685     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    2657        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2658        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2659      294,     0,   517,     0,     0,   171,     0,     0,    45,    46,
     2686       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2687       0,     0,     0,     0,   110,     0,    38,    39,     0,     0,
     2688     294,     0,   295,     0,     0,    41,    42,     0,    45,    46,
    26602689     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
    26612690      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2662       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2663        0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     2691      24,    25,     0,    44,    26,    27,    28,     0,     0,    45,
     2692      46,   282,   283,    31,   284,     8,     9,    10,    11,    12,
    26642693      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    26652694      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2666      285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
     2695     285,    34,     0,     0,    31,   685,   286,     0,    38,    39,
    26672696     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    26682697     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2669        0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
    2670      337,    40,     0,   294,   -36,   295,     0,     0,    41,    42,
     2698       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2699      39,     0,     0,   294,     0,   157,     0,     0,     0,     0,
    26712700       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
    26722701      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2673       21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
    2674        0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
     2702      21,    22,    23,    24,    25,     0,   686,    26,    27,    28,
     2703    1093,     0,    45,    46,   282,   283,    31,   284,     8,     9,
    26752704      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    26762705      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2677       28,     0,     0,   285,    34,     0,     0,    31,     0,   286,
     2706      28,     0,     0,   285,    34,     0,     0,    31,   685,   286,
    26782707       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
    26792708      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    26802709       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2681      110,     0,    38,    39,     0,     0,   294,     0,   295,     0,
    2682        0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
     2710       0,     0,    38,    39,     0,     0,   294,     0,   593,     0,
     2711       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
    26832712       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2684       18,    19,    20,    21,    22,    23,    24,    25,     0,    44,
    2685       26,    27,    28,     0,     0,    45,    46,   282,   283,    31,
    2686      284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2713      18,    19,    20,    21,    22,    23,    24,    25,     0,   686,
     2714      26,    27,    28,  1224,     0,    45,    46,   282,   283,    31,
     2715     284,     0,     0,     0,     0,     0,     0,     0,     8,     9,
     2716      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2717      20,    21,    22,    23,    24,    25,   285,    34,    26,    27,
     2718      28,     0,   286,     0,    38,    39,   287,    31,     0,   288,
     2719     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2720       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2721       0,     0,     0,     0,     0,    34,     0,     0,     0,   294,
     2722       0,   379,    38,    39,     0,     0,     0,    45,    46,   296,
     2723     297,   298,   299,   467,     2,   206,     4,     5,     6,     7,
     2724       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2725      18,    19,    20,    21,    22,    23,    24,    25,     0,   257,
     2726      26,    27,    28,     0,     0,    45,    46,     0,     0,    31,
     2727       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2728      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2729      25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
     2730       0,    36,    31,     0,    38,    39,     0,     0,     0,     0,
     2731       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    26872732      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2688        0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
    2689       31,   685,   286,     0,    38,    39,   287,     0,     0,   288,
    2690      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2691        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2692        0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
    2693        0,   157,     0,     0,     0,     0,     0,    45,    46,   296,
    2694      297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
    2695       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2696       25,     0,   686,    26,    27,    28,  1092,     0,    45,    46,
    2697      282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
    2698       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2699       24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
    2700       34,     0,     0,    31,   685,   286,     0,    38,    39,   287,
    2701        0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    2702      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2703        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2704        0,     0,   294,     0,   593,     0,     0,     0,     0,     0,
    2705       45,    46,   296,   297,   298,   299,     8,     9,    10,    11,
     2733      34,    26,    27,    28,     0,    37,     0,    38,    39,    40,
     2734      31,     0,     0,     0,    -3,     0,    41,    42,     0,     8,
     2735       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2736      19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
     2737      27,    28,    43,    37,    44,   207,    39,    40,    31,     0,
     2738      45,    46,     0,     0,    41,    42,     0,     8,     9,    10,
     2739      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2740      21,    22,    23,    24,    25,  -296,    34,    26,    27,    28,
     2741      43,    37,   270,   336,   337,    40,    31,     0,    45,    46,
     2742       0,     0,    41,    42,     0,     8,     9,    10,    11,    12,
     2743      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2744      23,    24,    25,  -296,    34,    26,    27,    28,   635,     0,
     2745     338,    38,    39,     0,    31,  -296,    45,    46,     8,     9,
     2746      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2747      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2748      28,     0,    34,     0,     0,     0,   635,    31,   338,    38,
     2749      39,     0,     0,  -296,    45,    46,     8,     9,    10,    11,
    27062750      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2707       22,    23,    24,    25,     0,   686,    26,    27,    28,  1221,
    2708        0,    45,    46,   282,   283,    31,   284,     0,     0,     0,
    2709        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2710       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2711       24,    25,   285,    34,    26,    27,    28,     0,   286,     0,
    2712       38,    39,   287,    31,     0,   288,   289,   290,   291,    41,
    2713       42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
    2714        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,    34,     0,     0,     0,   294,     0,   379,    38,    39,
    2716        0,     0,     0,    45,    46,   296,   297,   298,   299,   467,
    2717        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2718       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2719       22,    23,    24,    25,     0,   257,    26,    27,    28,     0,
    2720        0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
    2721        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2722       19,    20,    21,    22,    23,    24,    25,  -293,     0,    26,
    2723       27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
    2724       38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
    2725       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2726       21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
    2727        0,    37,     0,   336,   337,    40,    31,  -293,     0,     0,
    2728       -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
    2729       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2730       23,    24,    25,  -293,    34,    26,    27,    28,     0,    37,
    2731      338,   336,   337,    40,    31,     0,    45,    46,     0,     0,
    2732       41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
    2733       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2734       25,     0,    34,    26,    27,    28,   635,     0,   338,    38,
    2735       39,     0,    31,  -293,    45,    46,     8,     9,    10,    11,
    2736       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2737       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2738       34,     0,     0,     0,     0,    31,   338,    38,    39,     0,
     2751      22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
     2752       0,     0,    38,    39,     0,    31,   338,     0,     0,     0,
    27392753       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
    27402754      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2741       24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
    2742      207,    39,     0,    31,   157,     0,     0,     0,     0,     0,
    2743       45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
    2744       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2745        0,    34,    26,    27,    28,     0,     0,   270,    38,    39,
    2746        0,    31,     0,    45,    46,     8,     9,    10,    11,    12,
     2755      24,    25,     0,    34,    26,    27,    28,     0,     0,   157,
     2756     207,    39,     0,    31,     0,    45,    46,     8,     9,    10,
     2757      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2758      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2759       0,    34,     0,     0,     0,     0,    31,   270,    38,    39,
     2760       0,     0,     0,    45,    46,     8,     9,    10,    11,    12,
    27472761      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2748       23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
    2749        0,     0,     0,     0,    31,   338,    38,    39,     0,     0,
     2762      23,    24,    25,     0,    34,    26,    27,    28,     0,     0,
     2763       0,    38,    39,     0,    31,   338,     0,     0,     0,     0,
    27502764       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
    27512765      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2752       25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
    2753       39,     0,    31,   686,     0,     0,     0,     0,     0,    45,
    2754       46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2755       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2756       34,    26,    27,    28,     0,     0,   593,    38,    39,     0,
    2757       31,     0,    45,    46,     2,   206,     4,     5,     6,     7,
    2758        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2759       18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
    2760       26,    27,    28,     0,    44,   207,    39,     0,     0,    31,
    2761       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2766      25,     0,    34,    26,    27,    28,     0,     0,   686,    38,
     2767      39,     0,    31,     0,    45,    46,     2,   206,     4,     5,
     2768       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2769      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2770      34,     0,    26,    27,    28,     0,   593,    38,    39,     0,
     2771       0,    31,    45,    46,     0,     0,     0,     0,     0,     0,
    27622772       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2763        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2764        0,    36,     0,     0,    38,    39,     0,     0,    45,    46,
    2765      282,   283,     0,   284,  1042,     0,  1043,     0,     0,  1044,
    2766     1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,  1525,
    2767     1052,     0,     0,     0,  1053,  1054,     0,    33,     0,   285,
    2768     -413,     0,     0,     0,     0,  1055,     0,     0,     0,   287,
     2773       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2774       0,    35,     0,    36,    44,     0,    38,    39,     0,     0,
     2775      45,    46,   282,   283,     0,   284,  1043,     0,  1044,     0,
     2776       0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
     2777       0,  1528,  1053,     0,     0,     0,  1054,  1055,     0,    33,
     2778       0,   285,  -416,     0,     0,     0,     0,  1056,     0,     0,
     2779       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2780       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2781       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2782       0,     0,     0,     0,   294,     0,   379,     0,     0,   171,
     2783       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
     2784     282,   283,  1058,   284,  1043,     0,  1044,  -131,     0,  1045,
     2785    1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,     0,     0,
     2786    1053,     0,     0,     0,  1054,  1055,     0,    33,     0,   285,
     2787       0,     0,     0,     0,     0,  1056,     0,     0,     0,   287,
    27692788       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    27702789     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27712790       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27722791       0,     0,   294,     0,   379,     0,     0,   171,     0,     0,
    2773       45,    46,   296,   297,   298,   299,     0,     0,   282,   283,
    2774     1057,   284,  1042,     0,  1043,  -128,     0,  1044,  1045,  1046,
    2775     1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,
    2776        0,     0,  1053,  1054,     0,    33,     0,   285,     0,     0,
    2777        0,     0,     0,  1055,     0,     0,     0,   287,     0,     0,
    2778      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2792      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     2793    1058,     0,     0,     0,     0,  -131,     2,   206,     4,     5,
     2794       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2795      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2796       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2797       0,    31,     0,   282,   283,     0,   284,  1043,     0,  1044,
     2798    1402,  1403,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
     2799       0,     0,  1528,  1053,     0,     0,     0,  1054,  1055,    34,
     2800      33,    35,   285,    36,     0,     0,    38,    39,  1056,     0,
     2801       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2802      42,     0,   292,   293,     0,     0,     0,     0,  1315,     0,
    27792803       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2780        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2781      294,     0,   379,     0,     0,   171,     0,     0,    45,    46,
    2782      296,   297,   298,   299,     0,     0,     0,     0,  1057,     0,
    2783        0,     0,     0,  -128,     2,   206,     4,     5,     6,     7,
    2784        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2785       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2786       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2787        0,   282,   283,     0,   284,  1042,     0,  1043,  1399,  1400,
    2788     1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
    2789     1525,  1052,     0,     0,     0,  1053,  1054,    34,    33,    35,
    2790      285,    36,     0,     0,    38,    39,  1055,     0,     0,     0,
     2804       0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
     2805     171,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     2806       0,   282,   283,  1058,   284,  1043,     0,  1044,  1402,  1403,
     2807    1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,     0,
     2808       0,  1053,     0,     0,     0,  1054,  1055,     0,    33,     0,
     2809     285,     0,     0,     0,     0,     0,  1056,     0,     0,     0,
    27912810     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2792      292,   293,     0,     0,     0,     0,  1312,     0,     0,     0,
     2811     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    27932812       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27942813       0,     0,     0,   294,     0,   379,     0,     0,   171,     0,
    27952814       0,    45,    46,   296,   297,   298,   299,     0,     0,   282,
    2796      283,  1057,   284,  1042,     0,  1043,  1399,  1400,  1044,  1045,
    2797     1046,  1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,
    2798        0,     0,     0,  1053,  1054,     0,    33,     0,   285,     0,
    2799        0,     0,     0,     0,  1055,     0,     0,     0,   287,     0,
     2815     283,  1058,   284,  1043,     0,  1044,     0,     0,  1045,  1046,
     2816    1047,  1048,  1049,  1050,  1051,  1052,     0,     0,     0,  1053,
     2817       0,     0,     0,  1054,  1055,     0,    33,     0,   285,     0,
     2818       0,     0,     0,     0,  1056,     0,     0,     0,   287,     0,
    28002819       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
     2820       0,     0,     0,     0,     0,     0,   282,   283,     0,   284,
     2821       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2822       0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
     2823      46,   296,   297,   298,   299,   285,     0,     0,     0,  1058,
     2824       0,   286,     0,     0,     0,   287,     0,     0,   288,   289,
     2825     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
     2826       0,     0,     0,   282,   283,     0,   284,     0,     0,     0,
     2827       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2828     379,     0,   282,   283,     0,   284,    45,    46,   296,   297,
     2829     298,   299,   285,     0,     0,     0,     0,     0,   286,     0,
     2830       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2831      42,   285,   292,   293,     0,     0,     0,   286,     0,     0,
     2832       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2833       0,   292,   293,     0,     0,   294,     0,   379,     0,   282,
     2834     283,     0,   284,   709,    46,   296,   297,   298,   299,     0,
     2835       0,     0,     0,     0,   294,     0,   379,     0,   282,   283,
     2836       0,   284,   344,    46,   296,   297,   298,   299,   285,     0,
     2837       0,     0,     0,     0,   286,     0,     0,     0,   287,     0,
     2838       0,   288,   289,   290,   291,    41,    42,   285,   292,   293,
     2839       0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
     2840     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2841       0,   506,     0,     0,     0,   282,   283,     0,   284,    45,
     2842      46,   296,   297,   298,   299,     0,     0,     0,     0,     0,
     2843     294,     0,     0,     0,   282,   283,     0,   284,    45,    46,
     2844     296,   297,   298,   299,   285,     0,     0,     0,     0,     0,
     2845     286,     0,     0,     0,   287,     0,     0,   288,   289,   290,
     2846     291,    41,    42,   285,   292,   293,     0,     0,     0,   286,
     2847       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2848      41,    42,     0,   292,   293,     0,     0,   511,     0,     0,
     2849       0,     0,     0,     0,     0,    45,    46,   296,   297,   298,
     2850     299,     0,     0,     0,     0,     0,   514,     0,     0,     0,
     2851       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2852       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2853      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2854      22,    23,    24,    25,     0,     0,     0,     0,     0,     0,
     2855       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    28012856       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28022857       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2803        0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
    2804       46,   296,   297,   298,   299,     0,     0,   282,   283,  1057,
    2805      284,  1042,     0,  1043,     0,     0,  1044,  1045,  1046,  1047,
    2806     1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,     0,
    2807        0,  1053,  1054,     0,    33,     0,   285,     0,     0,     0,
    2808        0,     0,  1055,     0,     0,     0,   287,     0,     0,   288,
    2809      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2810        0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
    2811        0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
    2812        0,   379,     0,     0,   171,     0,     0,    45,    46,   296,
    2813      297,   298,   299,   285,     0,     0,     0,  1057,     0,   286,
    2814        0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
    2815       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2816        0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
    2817        0,     0,     0,     0,     0,     0,   294,     0,   379,     0,
    2818        0,   972,     0,     0,    45,    46,   296,   297,   298,   299,
    2819      285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
    2820      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2821      292,   293,     0,     0,     0,     0,     0,     0,   282,   283,
    2822        0,   284,     0,     0,     0,     0,     0,     0,     0,     0,
    2823        0,     0,     0,   294,     0,   379,     0,   282,   283,     0,
    2824      284,    45,    46,   296,   297,   298,   299,   285,     0,     0,
    2825        0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
    2826      288,   289,   290,   291,    41,    42,   285,   292,   293,     0,
    2827        0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
    2828      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2829      294,     0,   379,     0,   282,   283,     0,   284,   709,    46,
    2830      296,   297,   298,   299,     0,     0,     0,     0,     0,   294,
    2831        0,   379,     0,   282,   283,     0,   284,   344,    46,   296,
    2832      297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
    2833        0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
    2834       41,    42,   285,   292,   293,     0,     0,     0,   286,     0,
    2835        0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
    2836       42,     0,   292,   293,     0,     0,   506,     0,     0,     0,
    2837      282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
    2838        0,     0,     0,     0,     0,   294,     0,     0,     0,   282,
    2839      283,     0,   284,    45,    46,   296,   297,   298,   299,   285,
    2840        0,     0,     0,     0,     0,   286,     0,     0,     0,   287,
    2841        0,     0,   288,   289,   290,   291,    41,    42,   285,   292,
    2842      293,     0,     0,     0,   286,     0,     0,     0,   287,     0,
    2843        0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    2844        0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
    2845       45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
    2846        0,   514,     0,     0,     0,     0,     0,     0,     0,    45,
    2847       46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
     2858       0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
     2859     174,   175,    40,     0,     0,     0,     0,     0,     0,    41,
     2860      42,   205,     2,   206,     4,     5,     6,     7,     8,     9,
     2861      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2862      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2863      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2864       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2865       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2866       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2867       0,     0,   207,    39,   467,     2,   206,     4,     5,     6,
    28482868       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    28492869      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2850        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2870       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    28512871      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28522872       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28532873       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2854       35,     0,    36,    37,     0,   174,   175,    40,     0,     0,
    2855        0,     0,     0,     0,    41,    42,   205,     2,   206,     4,
     2874      35,     0,    36,     0,     0,    38,    39,     2,   206,     4,
    28562875       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    28572876      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    28602879       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28612880       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2862       34,     0,    35,     0,    36,     0,     0,   207,    39,   467,
    2863        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2864       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2865       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2866        0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    2867        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2868        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2869        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2870       38,    39,     2,   206,     4,     5,     6,     7,     8,     9,
    2871       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2872       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2873       28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2874        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2875        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2876        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2877        0,     0,   207,    39
     2881      34,     0,    35,     0,    36,     0,     0,   207,    39
    28782882};
    28792883
    28802884#define yypact_value_is_default(yystate) \
    2881   ((yystate) == (-1323))
     2885  ((yystate) == (-1338))
    28822886
    28832887#define yytable_value_is_error(yytable_value) \
     
    28862890static const yytype_int16 yycheck[] =
    28872891{
    2888        0,     1,   186,    43,   239,   185,   204,     0,    43,   219,
    2889       43,   116,   185,   521,   534,   185,     1,   875,   186,     0,
    2890        1,   185,   757,    51,   647,   603,   750,   185,     0,     1,
    2891      281,   621,    32,   750,  1041,     0,  1022,    43,   185,    32,
    2892      345,   185,   750,    43,   168,   169,   513,   349,   875,    49,
    2893      156,    32,   603,    32,     0,   693,    49,   349,   187,     0,
    2894       32,   572,    57,    63,   601,  1322,    66,    32,    43,    69,
    2895       63,     0,     1,    66,   696,    63,    69,  1399,   734,   492,
    2896        0,   109,   266,   496,    69,   265,    32,   601,    69,    39,
    2897       39,    32,   265,   490,    66,   265,   201,    69,   266,   601,
    2898       39,   265,    43,    32,   604,   105,   601,   265,    49,    49,
    2899      610,   106,    32,   113,   109,   418,   116,   117,   265,    82,
    2900       66,   265,    63,    63,    39,    66,    66,    39,    69,    69,
    2901      601,   984,   261,   262,   284,   438,    43,    66,    28,   601,
    2902       69,   105,    72,   446,   132,   185,   146,   147,  1470,   601,
    2903      185,    72,   185,    49,   147,   155,   156,   307,   308,   109,
    2904      160,   111,   111,  1420,    39,   787,    82,   160,    72,   364,
    2905      109,    39,   111,   368,  1021,  1022,    82,   482,    96,   185,
    2906      688,  1034,   906,  1116,   156,   185,   186,  1120,    78,   906,
    2907      156,   155,     0,   186,   110,   345,   488,   109,   906,   111,
    2908      410,   201,   132,    96,   122,   111,   147,   147,   605,   209,
    2909      185,   132,   609,   117,  1041,    64,   209,   113,   109,   160,
    2910      160,   221,   406,   218,    32,   265,   109,   110,   221,   122,
    2911      265,   381,   265,   630,   109,   256,   111,   634,   406,   239,
    2912     1226,   109,   864,   111,   185,   186,   186,   825,   719,   221,
    2913      146,   251,   987,   504,    57,    44,    45,   719,   251,   259,
    2914      109,   426,   427,   901,   264,   265,   266,   719,   209,   209,
    2915      251,   271,   251,   266,   825,   221,   813,   272,   185,   251,
    2916      221,   221,  1289,   794,   279,   907,   251,   109,   696,    85,
    2917     1276,   396,   221,  1502,   294,    49,   480,   636,   637,   813,
    2918      109,   603,   925,   106,  1453,   251,   109,   307,  1053,  1054,
    2919      251,   813,   480,   209,   653,   815,   621,   113,   813,   424,
    2920     1529,   626,   251,   323,   265,   430,   115,   433,   328,   494,
    2921      952,   251,    95,    44,    45,   328,   107,   112,  1487,   116,
    2922     1489,   341,   813,   239,   109,   345,   111,   109,   513,   349,
    2923      350,   813,   155,   348,  1212,   132,   934,     0,   110,   113,
    2924      131,   813,    44,    45,   364,   987,   129,  1473,   368,   131,
    2925      365,   371,   711,  1479,   369,   271,   116,   341,   130,   682,
    2926       72,    11,    74,    75,  1129,  1212,   228,   328,   328,    32,
    2927      130,    83,    84,  1499,  1050,   590,   396,   418,  1504,   114,
    2928      550,   551,   552,   114,   350,   247,   406,   371,   349,  1395,
    2929     1000,   307,   110,   406,   579,   218,  1038,   438,   116,   933,
    2930      526,   109,   114,   111,   424,   446,   426,   427,  1275,  1276,
    2931      430,   933,   114,   433,    72,  1442,   110,   632,   933,   110,
    2932       72,   746,  1449,   251,  1502,    83,    84,   110,   256,   345,
    2933      847,    83,    84,   116,   454,   209,   130,   119,   120,   130,
    2934      968,   433,  1289,   802,  1522,   406,   406,   433,   110,   272,
    2935      112,  1529,   472,   111,   116,   128,   279,   110,   131,   111,
    2936      480,   116,   482,   116,   484,   591,   737,   480,   488,   131,
    2937      132,   484,    70,  1500,   494,    73,  1118,   132,    76,   907,
    2938       78,    90,    91,   484,   688,  1128,   506,    85,   508,  1009,
    2939     1010,   511,   484,   513,   514,   982,   482,   271,   116,   484,
    2940      688,   521,  1100,   825,   648,   525,   526,   473,   657,   942,
    2941      426,   427,   130,   825,  1387,  1388,   125,   126,   484,   109,
    2942      294,   111,   939,   484,   952,   348,   110,   488,  1395,   116,
    2943      655,   116,   116,   307,   526,   484,  1178,  1179,    72,   116,
    2944      526,   525,   365,   130,   484,    72,   369,    74,    75,    83,
    2945       84,   571,   572,    88,    89,   132,    83,    84,  1086,   579,
    2946     1403,    72,     3,  1091,     4,     5,     6,     7,     8,     9,
    2947      590,   591,    83,    84,    72,   595,   116,   111,   494,     3,
    2948      905,   601,     1,   603,   111,    83,    84,   757,   251,   804,
    2949      418,   116,   132,   256,   809,  1442,     0,   513,   110,   591,
    2950      111,   621,  1449,     0,   116,   591,   626,   622,   628,   432,
    2951      438,   109,   632,  1289,   212,   635,   636,   637,   446,   111,
    2952      111,   113,   113,   638,   112,   109,   938,   111,   116,    69,
    2953      116,    71,   862,   653,   116,   655,   109,   652,   130,   130,
    2954      601,   682,   603,   635,   636,   637,   132,   109,   116,   111,
    2955      132,   591,   882,  1500,  1497,   116,   484,   623,   116,  1502,
    2956      116,   653,   131,   579,   132,   685,    72,   708,   688,   116,
    2957       76,   132,   116,   109,   132,  1000,   132,    83,    84,  1522,
    2958      454,   279,   897,    72,   810,   132,  1529,  1363,   132,   944,
    2959     1118,   711,   712,   713,    83,    84,   110,   109,   116,   719,
    2960      720,   116,   116,   109,   908,   621,   906,    92,    93,   110,
    2961      626,   117,   118,   906,   132,   116,   906,   132,   733,   711,
    2962      908,   109,   906,   110,   868,   745,   746,   688,   906,   116,
    2963      750,   751,   506,   699,   508,   109,   109,   511,   111,   906,
    2964      514,  1383,   906,   110,   117,   118,   294,   713,   112,   116,
    2965     1178,  1179,   116,   109,   352,   418,   354,  1399,   719,   720,
    2966      746,   745,  1506,   109,   112,   111,  1306,   590,   116,  1506,
    2967     1446,   109,  1448,   111,   794,   438,   109,   112,  1506,   117,
    2968      118,   116,   802,   446,   804,    72,   806,    74,    75,   809,
    2969      810,   110,   109,   813,   111,  1013,    83,    84,   110,   622,
    2970      117,   118,    72,   110,   116,   825,    76,   110,   112,   116,
    2971      802,   110,   116,    83,    84,   638,   110,   116,   810,   482,
    2972      110,   484,  1147,   112,   810,  1501,   116,  1469,  1470,   652,
    2973     1000,   115,   116,   252,    10,    11,    12,    13,    14,   109,
    2974      806,   111,   110,   111,   442,  1116,   109,   117,   118,  1120,
    2975     1121,   110,   813,   117,   682,   875,   110,   116,     3,   123,
    2976      124,   110,   116,    39,   825,    10,    11,    12,    13,    14,
    2977      810,  1041,    58,    59,   875,   110,   110,   897,   426,   427,
    2978      708,   116,  1086,   875,   904,   905,   906,  1091,   908,   110,
    2979      110,    67,  1036,   109,    39,    72,   116,   115,  1086,    76,
    2980      920,  1226,   109,  1091,   111,   109,    83,    84,  1123,   875,
    2981      733,   685,    64,   933,   934,   110,   115,   116,   938,   905,
    2982      904,   116,    67,   943,   944,    72,   875,    74,    75,    76,
    2983        0,     1,   109,    44,    45,   875,    83,    84,   943,   132,
    2984      117,   118,   943,   110,    66,   906,   109,   908,   968,   116,
    2985      109,   943,   111,   109,  1482,  1383,   553,   554,   506,    29,
    2986       30,   112,    32,   511,   132,  1236,   514,   506,   109,   508,
    2987      111,  1399,   511,    43,   911,   514,   913,   938,   114,    49,
    2988     1000,   555,   556,  1108,   114,   114,    72,    57,    74,    75,
    2989       76,   561,   562,    63,   943,   117,    66,    83,    84,    69,
    2990      132,  1021,  1022,  1531,   132,     4,     5,     6,     7,     8,
    2991        9,   109,    82,    83,   557,   558,   559,   560,    82,   682,
    2992      568,  1041,     4,     5,     6,     7,     8,     9,   944,  1021,
    2993     1022,    85,    86,    87,   109,  1021,   106,  1003,   160,   109,
    2994     1041,  1469,  1470,   109,   112,   708,   116,   875,   467,  1041,
    2995       82,    33,  1323,   118,   127,   109,  1327,   111,    94,   113,
    2996      114,  1081,   109,   110,   111,   128,  1086,   109,   110,   111,
    2997       69,  1091,    71,   131,   897,  1041,   111,   147,   109,   109,
    2998     1100,   110,   110,   746,  1000,   155,     3,    69,  1108,    71,
    2999      160,   112,  1041,    10,    11,    12,    13,    14,   112,   221,
    3000      112,  1041,   110,  1123,   109,   110,   111,   110,   110,   528,
    3001      110,   109,   110,   111,   533,   185,   186,    72,   109,    74,
    3002       75,    76,    39,   112,   111,  1086,   114,  1147,    83,    84,
    3003     1091,   201,   116,   132,   131,   733,   114,   259,   114,   209,
    3004      109,   112,   264,    58,    59,    60,   920,   110,   218,   110,
    3005       67,   221,   112,  1424,   109,   112,   111,   130,   228,   112,
    3006      112,  1147,   117,   118,   583,  1249,  1250,  1251,   130,  1189,
    3007     1190,   130,   116,   243,    29,   130,   110,   247,   110,   112,
    3008      115,   251,   252,   114,   112,  1190,   110,   116,  1208,  1190,
    3009      115,   109,  1212,   115,   110,   265,   266,  1189,  1190,   110,
    3010      130,   110,   272,   116,   110,   132,  1226,     3,   110,   279,
    3011     1230,  1212,   875,  1041,    10,    11,    12,    13,    14,   110,
    3012     1212,   116,   110,  1189,  1208,  1230,   110,   110,   350,  1230,
    3013      110,   110,   110,   110,     1,   654,   110,   656,  1230,   110,
    3014     1189,  1190,   905,    39,   110,   110,  1212,   110,    72,   110,
    3015       74,    75,    76,   115,  1379,  1275,  1276,    29,   328,    83,
    3016       84,  1516,   131,  1212,  1284,   110,   130,   116,   875,  1289,
    3017      112,    67,  1212,   112,   110,   110,   116,   110,   348,   349,
    3018      130,  1230,    49,  1275,  1276,   109,   109,   706,  1289,  1275,
    3019      116,   112,  1284,   117,   118,   365,   114,  1289,   110,   369,
    3020      110,   110,  1322,  1507,   112,   116,  1506,  1081,   110,   431,
    3021      380,   116,   116,  1506,    55,   110,  1506,  1322,  1284,  1507,
    3022      110,  1322,  1506,  1289,   112,   109,   396,  1531,  1506,   109,
    3023     1322,   109,   109,   109,   132,  1284,   406,   130,   105,  1506,
    3024     1289,   112,  1506,  1531,   110,   115,   113,   110,   110,  1289,
    3025      115,   473,   110,   128,   424,   115,    97,  1482,   114,  1379,
    3026      430,   112,   432,  1378,   132,   112,   116,   112,   110,    72,
    3027      110,    74,    75,  1322,   110,  1395,   110,   112,  1041,   146,
    3028       83,    84,   112,   112,  1212,  1208,   112,    72,   155,    74,
    3029       75,    76,   112,    72,   112,    74,    75,   467,    83,    84,
    3030     1420,    47,   472,  1395,    83,    84,   109,   132,   132,   132,
    3031      480,   114,   112,   132,   484,  1420,   132,   115,   488,  1420,
    3032      110,   491,  1442,   493,   109,   130,   115,   110,  1420,  1449,
    3033      109,  1451,   112,  1453,   115,   114,   112,  1044,   205,   112,
    3034      112,  1442,   209,   112,   110,   110,  1506,   109,  1449,   112,
    3035     1442,  1506,   193,  1506,   112,   109,   109,  1449,   528,    60,
    3036      110,  1289,  1482,   533,   132,   110,   114,  1487,   109,  1489,
    3037      112,  1420,   239,   595,   112,   216,  1442,   110,   112,   110,
    3038     1500,    96,    96,  1449,  1147,   226,  1506,  1507,   109,   109,
    3039      464,   115,   132,  1442,  1507,   130,  1516,   110,   110,  1500,
    3040     1449,   623,  1442,   110,   271,   110,   628,   274,  1500,  1449,
    3041      116,  1531,    42,   583,   132,   132,   110,   110,  1531,    66,
    3042      590,    96,    96,   132,   110,   110,   110,   294,    75,   132,
    3043      132,   601,   110,   603,  1500,   115,   112,   132,   115,   958,
    3044      307,   112,   109,   132,   110,  1506,    30,   115,   110,  1212,
    3045      132,  1500,   622,   294,   110,  1378,   110,   667,  1057,   563,
    3046     1500,   980,   978,  1226,   565,   984,  1212,  1365,   638,   564,
    3047      117,   464,   566,   643,   341,   567,  1470,   699,   345,  1541,
    3048     1299,  1327,   652,  1121,   654,   655,   656,  1072,  1449,   685,
    3049      685,   713,   913,   698,    66,  1091,   921,   364,    82,    83,
    3050     1516,   368,   583,   972,   371,  1212,   868,   723,   649,   940,
    3051       82,  1230,   484,   160,  1442,  1034,     0,     1,   688,   733,
    3052      571,  1449,   692,   571,   694,   571,  1289,    72,   698,    74,
    3053       75,    76,    -1,    -1,    -1,    -1,   706,    -1,    83,    84,
    3054       -1,    -1,    -1,  1191,  1192,   117,  1194,    -1,    32,   719,
    3055      720,    -1,    -1,  1201,    -1,  1203,    -1,    -1,    -1,   426,
    3056      427,    -1,    -1,   733,   109,    49,    -1,    10,    11,    12,
    3057       13,    14,  1500,    -1,   221,    -1,    -1,  1451,    -1,  1453,
    3058       -1,    -1,    -1,    -1,   806,    69,    -1,   454,   160,    -1,
    3059       85,    86,    87,    -1,    -1,    -1,    39,   671,  1305,    -1,
    3060      467,    -1,   443,    -1,    -1,    -1,    -1,    10,    11,    12,
    3061       13,    14,   259,  1487,   109,  1489,   111,   264,   113,   114,
    3062       -1,   105,    -1,    -1,    67,   492,    -1,   494,   469,   496,
    3063       -1,    -1,   279,    -1,    -1,    -1,    39,    -1,    -1,   506,
    3064       -1,   508,    -1,   813,   511,    -1,   513,   514,    -1,   221,
    3065     1357,    -1,    -1,  1360,    -1,   825,    -1,    -1,   525,   243,
    3066       -1,    -1,    -1,   147,    67,   506,   109,    -1,   111,    -1,
    3067      511,   155,   156,   514,   117,   118,    -1,    -1,   671,  1442,
    3068       -1,    -1,    -1,    -1,    -1,    -1,  1449,   259,    -1,    -1,
    3069       -1,    -1,   264,    -1,    -1,    -1,  1403,    -1,   868,    -1,
    3070       -1,  1408,   186,   350,   874,    -1,   109,    -1,   111,    -1,
    3071       -1,  1359,   579,    -1,   117,   118,   790,   201,    -1,    -1,
    3072      204,   205,    -1,   590,    -1,   209,   800,   897,    -1,  1436,
    3073     1249,  1250,  1251,    -1,    -1,    -1,   906,  1500,   908,    -1,
    3074      814,    -1,    -1,    -1,    -1,   915,   230,    -1,    -1,    -1,
    3075      234,    -1,   236,    -1,   621,    -1,    -1,    -1,    -1,   626,
    3076       -1,   245,    -1,    -1,    -1,   632,     0,   251,   938,    -1,
    3077       -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,   350,    -1,
    3078       -1,  1003,   266,    -1,   431,    -1,    -1,    -1,   958,    -1,
    3079      274,    10,    11,    12,    13,    14,   380,   790,    32,    -1,
    3080       -1,   448,   972,    -1,    -1,    -1,    -1,   800,    -1,    -1,
    3081      980,    -1,    -1,  1520,   984,    -1,    -1,    -1,   685,  1526,
    3082       39,   814,    -1,    -1,    -1,    -1,   473,    -1,    -1,   670,
    3083     1537,    -1,   671,    -1,  1541,    69,    -1,    -1,   679,    -1,
    3084       -1,    -1,   683,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3085       -1,    72,    -1,    74,    75,    76,   723,   341,    -1,   431,
    3086       -1,   345,    83,    84,  1034,    -1,    -1,   351,  1387,  1388,
    3087       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,
    3088      364,    -1,    -1,    -1,   368,    -1,    -1,   371,   109,    -1,
    3089      109,    -1,   111,    -1,    -1,    -1,   117,   118,   117,   118,
    3090       -1,   473,  1072,    -1,    -1,    -1,  1425,   491,    -1,   493,
    3091       -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,    -1,
    3092       -1,  1091,   156,    97,    98,    99,   100,   101,   102,   103,
    3093      104,   105,   106,   107,   418,    -1,    -1,   804,  1108,    -1,
    3094       -1,    -1,   809,    -1,  1018,  1019,    -1,    -1,   595,   433,
    3095       -1,   790,    -1,    -1,   438,    -1,    -1,   131,    -1,    -1,
    3096       -1,   800,   446,    -1,  1483,    -1,    -1,  1189,    -1,    -1,
    3097       -1,    -1,    -1,  1492,    -1,   814,   623,    -1,    -1,    -1,
    3098      464,   628,    72,   467,    74,    75,    76,    -1,    -1,    -1,
    3099       -1,    -1,    -1,    83,    84,    -1,   230,    -1,   482,    -1,
    3100      484,    -1,  1076,  1077,    -1,    -1,    -1,    -1,   492,    -1,
    3101       -1,    -1,   496,    -1,    -1,  1185,    -1,   251,    -1,   109,
    3102       -1,   111,   256,   595,    -1,  1018,  1019,   117,   118,    -1,
    3103      897,    -1,    -1,    -1,    -1,    -1,    -1,   904,  1208,    -1,
    3104       -1,   525,   526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3105       -1,   623,   699,   920,    -1,    -1,   628,    -1,   899,   643,
    3106       -1,    -1,  1284,     0,    -1,    -1,   713,    -1,    -1,    -1,
    3107       -1,    -1,    -1,    -1,    -1,   942,   943,   944,    -1,  1249,
    3108     1250,  1251,    -1,  1076,  1077,    -1,   733,    -1,   572,    72,
    3109       -1,    74,    75,    76,    -1,    32,    -1,    -1,    -1,    -1,
    3110       83,    84,    -1,    -1,    -1,    -1,   590,   591,   692,    -1,
    3111      694,    -1,    -1,    -1,   698,    -1,    -1,   351,    72,   603,
    3112       74,    75,    76,    -1,    -1,    -1,   109,   699,   111,    83,
    3113       84,    -1,    69,  1000,   117,   118,    -1,   621,    -1,    -1,
    3114       -1,   713,   626,    -1,    -1,    -1,    -1,    -1,   632,    -1,
    3115     1224,   635,   636,   637,    -1,   109,    -1,   111,    -1,   806,
    3116       -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,   653,
    3117       -1,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,  1018,
    3118     1019,    -1,  1256,    -1,   418,    -1,    -1,   671,    -1,    -1,
    3119     1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,   682,   433,
    3120       -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,  1378,  1379,
    3121       -1,  1052,   446,    -1,  1081,    -1,    -1,  1387,  1388,   156,
    3122       -1,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
    3123      464,  1224,    -1,    -1,   806,    -1,   720,  1076,  1077,   723,
    3124       -1,    -1,    -1,    -1,    -1,    98,    -1,   100,   482,    -1,
    3125      484,    -1,    -1,    -1,  1328,  1425,  1123,    -1,    -1,    -1,
    3126       -1,   745,   746,  1256,    -1,    -1,    -1,   751,    -1,    -1,
    3127       -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,
    3128       -1,    -1,    -1,    -1,   868,    -1,    -1,    -1,    -1,    -1,
    3129      874,    -1,   526,    -1,    -1,    -1,    -1,    26,    27,    28,
    3130       -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
    3131       -1,    -1,  1482,  1483,   251,    -1,   800,    -1,   802,   256,
    3132      804,    -1,  1492,   807,    -1,   809,   810,    -1,   181,    -1,
    3133      814,   915,    -1,    -1,    -1,  1328,  1506,  1507,   191,   192,
    3134      824,  1208,    -1,   196,    -1,   198,   199,    -1,    -1,    -1,
    3135       -1,    -1,    -1,    -1,    -1,    -1,  1003,   591,    -1,    -1,
    3136       -1,  1531,    -1,  1230,    -1,    -1,    -1,    -1,    -1,    98,
    3137       -1,   100,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
    3138       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    -1,
    3139       -1,   875,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,
    3140       -1,   635,   636,   637,    -1,    -1,    -1,    32,    -1,    -1,
    3141       -1,    -1,    -1,   897,   351,    -1,    -1,  1256,    -1,   653,
    3142      904,   905,    -1,    -1,   908,  1264,  1265,  1266,    -1,    -1,
    3143       -1,  1003,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
    3144       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,   682,    -1,
    3145      934,    -1,   181,    -1,    -1,  1322,    -1,  1298,   942,   943,
    3146      189,    -1,   191,   192,    -1,    -1,    -1,   196,    -1,   198,
    3147      199,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
    3148       -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,  1072,  1328,
    3149       -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
    3150       -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   446,
    3151       -1,    -1,   746,    -1,    -1,    -1,  1000,    10,    11,    12,
    3152       13,    14,    -1,    -1,    -1,    -1,    -1,   464,    -1,  1013,
    3153       -1,   156,    -1,    -1,  1018,  1019,    -1,  1021,  1022,   268,
    3154       -1,    -1,  1189,    -1,    -1,   482,    39,   484,    -1,    -1,
    3155       -1,    -1,    -1,  1420,    -1,    -1,   790,  1041,    -1,    -1,
    3156       -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,
    3157       -1,    -1,    -1,   807,    67,    -1,   810,    -1,    -1,    72,
    3158      814,    74,    75,    76,  1451,    -1,  1453,    -1,    -1,   526,
    3159       83,    84,  1076,  1077,    -1,    -1,    -1,    -1,    -1,    -1,
    3160       -1,  1185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1450,
    3161       -1,  1452,    -1,    -1,    -1,    -1,   109,  1189,   111,    -1,
    3162     1487,    -1,  1489,    -1,   117,   118,   251,    -1,    -1,    -1,
    3163       -1,   256,    -1,    -1,    -1,    -1,    -1,  1284,    -1,  1123,
    3164       -1,   875,    -1,    -1,    -1,  1486,    -1,  1488,    -1,  1516,
    3165       -1,    -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,
    3166       -1,    -1,    -1,  1147,    -1,    -1,    -1,    -1,    -1,     0,
    3167       -1,   905,    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,
    3168       -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,  1530,
    3169       -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
    3170      637,    32,    -1,    -1,  1545,  1546,  1190,    -1,    -1,    -1,
    3171       -1,    -1,  1284,    -1,    -1,    -1,   653,    -1,    -1,    -1,
    3172       -1,    -1,   575,   576,  1208,    -1,   351,    -1,  1212,    -1,
    3173       -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,    69,    -1,
    3174     1224,    -1,  1226,    -1,    -1,   682,  1230,    -1,    -1,    -1,
    3175       -1,   604,    -1,    -1,   607,   608,   268,   610,    -1,   612,
    3176      613,    -1,    -1,    -1,   617,   618,    -1,    -1,    -1,    -1,
    3177       -1,   708,  1256,    -1,   711,    -1,    -1,    -1,    -1,    -1,
    3178     1264,  1265,  1266,    -1,  1018,  1019,    -1,  1021,  1022,    -1,
    3179       -1,  1275,  1276,   418,    -1,    -1,    -1,    -1,    10,    11,
    3180       12,    13,    14,    -1,    -1,  1289,    -1,  1041,   433,   746,
    3181       -1,   323,    -1,   438,    -1,    -1,    -1,    -1,    -1,   331,
    3182       -1,   446,   334,    -1,    -1,   156,    -1,    39,    -1,    -1,
    3183       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1322,   464,
    3184       -1,    -1,  1076,  1077,  1328,    -1,   575,   576,    -1,    -1,
    3185       -1,    -1,    -1,   790,    -1,    67,    -1,   482,    -1,   484,
    3186       72,    -1,    -1,   800,    76,   802,    -1,    -1,    -1,    -1,
    3187      807,    83,    84,   810,    -1,   604,    -1,   814,   607,   608,
    3188       -1,   610,    -1,   612,   613,    -1,   398,    -1,   617,   618,
    3189      402,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    3190       -1,   526,   755,   756,    -1,   117,   118,    -1,    -1,    -1,
    3191       -1,  1395,    -1,  1147,    -1,    -1,    -1,    -1,    -1,    -1,
    3192      251,    -1,    -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,
    3193       -1,    -1,    -1,    -1,    -1,    -1,  1420,    -1,   875,    -1,
     2892       0,     1,   239,    43,   185,   116,   534,     0,   204,   185,
     2893      43,   185,   185,   281,   185,    43,   521,     1,   601,   185,
     2894     185,   603,   168,   169,   105,   750,     0,     1,   219,   621,
     2895     349,   876,    32,   345,    49,   750,     0,   693,   603,    32,
     2896     156,   750,   513,    43,  1023,   757,   647,   572,   186,    49,
     2897    1325,   985,   186,   492,   189,     0,    49,   496,    32,  1022,
     2898    1023,   196,   156,    63,    32,  1402,    66,   601,    32,    69,
     2899      63,     0,    28,    66,   155,   187,    69,   109,   601,    39,
     2900      85,    43,   601,     0,   265,    69,    57,    32,   349,   265,
     2901     201,   265,   265,    43,   265,    69,    39,   601,   113,   265,
     2902     265,  1035,    63,    32,    51,   105,   364,   256,   113,   418,
     2903     368,   601,  1042,   113,    39,    32,   116,   117,    72,   696,
     2904      43,   109,    78,   111,   604,   601,   109,   876,   266,   438,
     2905     610,   146,   266,   268,   490,   106,  1473,   446,   109,    96,
     2906      39,   734,    72,   426,   427,   185,   146,   147,  1423,   261,
     2907     262,   111,   185,  1456,   147,   155,   156,   185,  1054,  1055,
     2908     160,    95,   109,   109,   110,   122,   109,   160,   111,    64,
     2909     482,   132,     0,     1,     0,    72,    82,    96,   132,    72,
     2910     636,   637,   907,   688,   284,   185,   186,  1490,   323,  1492,
     2911      83,    84,   907,   186,   209,   129,   331,   653,   907,   334,
     2912      82,   201,   132,   122,    32,   111,    32,   307,   308,   209,
     2913     109,   494,   111,  1117,   109,   719,   209,  1121,   111,   410,
     2914     117,   221,   876,   185,   239,   265,   294,   488,   221,   719,
     2915     513,   814,   265,    39,  1130,   185,   504,   265,    66,   239,
     2916      66,    69,    11,   719,   826,   345,   902,   218,    39,   605,
     2917    1229,   251,  1505,   609,   128,   711,   271,   131,   251,   259,
     2918     341,   826,   185,   398,   264,   265,   266,   402,   406,   418,
     2919     795,   271,   406,   266,   630,   109,   988,   251,   634,  1532,
     2920     814,   381,    39,   251,   603,   396,   116,   251,  1406,   438,
     2921     371,   814,   307,  1042,   294,   814,   579,   446,    44,    45,
     2922    1279,   272,   107,   109,   112,   111,   251,   307,   279,   621,
     2923     814,   256,    82,   424,   626,  1278,  1279,   433,   109,   430,
     2924     111,   109,   251,   323,   814,   926,   131,   256,   328,   112,
     2925     345,   908,   590,   116,   251,   328,   816,   228,   814,   433,
     2926     110,   341,   480,   131,   479,   345,   480,   803,   114,   349,
     2927     350,   934,   109,   935,   111,     3,   247,    70,   426,   427,
     2928      73,   110,  1292,    76,   364,    78,   116,     3,   368,   115,
     2929    1215,   371,    85,   682,   632,    49,   953,   348,    44,    45,
     2930     130,   130,  1500,    44,    45,    90,    91,  1505,   482,   116,
     2931      72,  1045,    72,   221,   365,   221,   396,    79,   369,    79,
     2932     934,    83,    84,    83,    84,    72,   406,  1525,   110,  1001,
     2933     526,   426,   427,   406,  1532,   934,    83,    84,   112,  1398,
     2934     125,   126,   116,   251,   424,   251,   426,   427,   130,   111,
     2935     430,   111,   526,   433,   746,  1398,   571,   572,   506,   113,
     2936    1505,   110,   109,   511,   525,   116,   514,   109,   114,   111,
     2937     550,   551,   552,   114,   454,     0,  1390,  1391,  1051,   130,
     2938    1525,   130,   464,   109,   969,   116,  1215,  1532,  1252,   737,
     2939    1254,  1255,   472,   418,    72,   591,    74,    75,     0,   494,
     2940     480,   132,   482,   109,   484,    83,    84,   480,   488,   418,
     2941     110,   484,   848,   438,   494,   109,   116,   591,   513,   212,
     2942     568,   446,   648,   109,   943,   111,   506,   826,   508,   438,
     2943     484,   511,   983,   513,   514,  1445,   114,   446,   131,  1101,
     2944     484,   521,  1452,   658,   350,   525,   526,   662,  1129,    72,
     2945    1010,  1011,   111,   682,   113,   209,    79,   119,   120,   484,
     2946      83,    84,  1119,  1292,   655,   657,    72,   805,    74,    75,
     2947     688,   130,   810,   482,   688,   484,   112,    83,    84,   708,
     2948     116,  1215,   116,   116,   579,   826,   279,   484,   111,   116,
     2949     116,   571,   572,  1503,   111,   110,   113,   130,   132,   579,
     2950     109,   116,  1087,   109,   940,   132,   132,  1092,   114,   109,
     2951     590,   591,   116,   130,   906,   595,  1476,   271,   109,   110,
     2952     111,   601,  1482,   603,  1181,  1182,   621,    72,   132,    74,
     2953      75,   626,     4,     5,     6,     7,     8,     9,    83,    84,
     2954     294,   621,  1502,   110,   117,   112,   626,  1507,   628,   116,
     2955     123,   124,   632,   307,   109,   635,   636,   637,    72,   352,
     2956     898,   354,    76,   116,   131,   132,   111,   473,   109,    83,
     2957      84,   622,   746,   653,  1308,   655,   484,   757,   484,   132,
     2958     795,     0,     1,   912,   745,   914,   116,   638,   110,   671,
     2959     116,   116,   863,   110,   591,   109,   112,    69,   939,    71,
     2960     116,   652,   132,   117,   118,   685,   132,   132,   688,  1001,
     2961      29,    30,   883,    32,   109,   811,  1445,   110,   116,  1292,
     2962     116,   110,   110,  1452,    43,   116,  1360,   116,   945,  1363,
     2963      49,   711,   712,   713,   132,   110,   132,   811,    57,   719,
     2964     720,   132,   116,   869,    63,   110,   907,    66,   109,   442,
     2965      69,   907,   116,   907,   907,   112,   907,   682,   132,   116,
     2966     132,   907,   907,    82,    83,   745,   746,    72,   132,    30,
     2967     750,   751,  1406,   682,  1503,   110,   112,  1411,    83,    84,
     2968     109,   116,   733,   708,    85,    86,    87,   106,    88,    89,
     2969     109,   909,   115,  1366,   109,   909,   111,   116,   913,   708,
     2970     454,  1309,   117,   118,  1509,  1439,    92,    93,   109,   791,
     2971     111,   132,   113,   114,  1509,   795,   109,   623,   110,   801,
     2972    1509,    82,    83,   803,   116,   805,    64,   807,   147,  1386,
     2973     810,   811,   906,   815,   814,   109,   155,   746,  1014,   112,
     2974     109,   160,   111,   132,   905,  1402,   826,   114,   117,   118,
     2975     115,   116,   506,    72,   508,    74,    75,   511,  1150,   114,
     2976     514,   109,   110,   111,    83,    84,   185,   186,    72,  1117,
     2977      74,    75,    76,  1121,  1122,   990,  1449,   114,  1451,    83,
     2978      84,   110,   201,   506,   109,   508,  1124,   116,   511,  1523,
     2979     209,   514,  1007,   699,   110,  1529,   876,   110,   111,   218,
     2980     116,    72,   221,    74,    75,   109,  1540,   713,   132,   228,
     2981    1544,  1037,    83,    84,   811,  1472,  1473,   109,   898,   111,
     2982     132,  1001,   876,    72,   243,   905,   906,   907,   247,   909,
     2983      79,  1504,   251,   252,    83,    84,   110,  1229,   109,    58,
     2984      59,   921,   116,   114,    44,    45,   265,   266,  1022,    82,
     2985     945,   876,   110,   272,   934,   935,   112,   110,   116,   939,
     2986     279,   109,  1042,   116,   944,   945,   110,   876,   109,  1087,
     2987    1085,   110,   116,  1087,  1092,   115,   116,   116,  1092,   876,
     2988     944,    72,   243,    74,    75,    76,   109,     1,   111,   969,
     2989     944,  1239,    83,    84,   117,   118,   110,   906,   110,   127,
     2990    1485,   807,   116,    82,   116,     3,  1001,   553,   554,   328,
     2991    1125,   110,    10,    11,    12,    13,    14,   116,  1109,   561,
     2992     562,  1001,    10,    11,    12,    13,    14,   110,   110,   348,
     2993     349,   685,   118,   116,   116,    49,   128,  1019,  1020,   110,
     2994     733,    39,  1022,  1023,    94,   116,   365,   555,   556,  1534,
     2995     369,    39,    10,    11,    12,    13,    14,   110,   109,   110,
     2996     111,   380,  1042,   116,     3,   109,   110,   111,   876,    67,
     2997     876,    10,    11,    12,    13,    14,  1150,   396,  1326,    67,
     2998     111,    39,  1330,   557,   558,   559,   560,   406,  1042,   131,
     2999     109,   105,    58,    59,    60,  1077,  1078,   109,   109,   113,
     3000      39,   109,  1082,   111,   109,   424,   111,  1087,   109,    67,
     3001     111,   430,  1092,   432,    72,   112,   112,  1042,    76,   380,
     3002     109,  1101,   111,   110,   110,    83,    84,   112,    67,  1109,
     3003     110,    72,   146,  1042,   110,    76,   944,   110,   110,     0,
     3004       1,   155,    83,    84,  1124,  1042,  1194,  1195,   467,  1197,
     3005    1211,   109,   109,   472,   111,   111,  1204,     0,  1206,   117,
     3006     118,   480,   112,   114,   116,   484,   131,   114,   109,   488,
     3007    1150,    32,   491,   110,   493,   109,   117,   118,   114,  1427,
     3008     112,     4,     5,     6,     7,     8,     9,   110,   112,    32,
     3009      72,   205,    74,    75,    76,   209,   112,   112,  1004,   112,
     3010      43,    83,    84,   130,  1278,    66,    49,   116,    69,   528,
     3011      33,   130,  1192,  1193,   533,    29,   130,   110,   110,     1,
     3012      63,   112,   110,    66,   114,   239,    69,   109,   112,  1193,
     3013     491,  1211,   493,   116,  1042,  1215,  1042,   115,   115,  1193,
     3014      72,  1150,    74,    75,    76,  1227,    69,   115,    71,  1229,
     3015     109,    83,    84,  1233,   110,   130,   132,   271,   110,   116,
     3016     274,  1215,   110,   110,   583,     3,   110,   921,   110,  1233,
     3017     116,   590,    10,    11,    12,    13,    14,  1259,   115,  1233,
     3018     294,   110,   601,   110,   603,  1267,  1268,  1269,   110,   110,
     3019    1215,  1382,   110,   307,   110,   156,    29,   110,  1278,  1279,
     3020     110,    39,  1519,   622,   147,   110,  1215,  1287,   110,   110,
     3021     110,   110,  1292,   130,  1362,   110,   131,   160,  1215,   638,
     3022    1229,   112,   116,   112,   643,   110,   110,   341,   116,    67,
     3023     110,   345,   130,   652,   109,   654,   655,   656,  1292,   116,
     3024     114,   112,   185,   186,   110,  1325,   110,   110,  1509,  1331,
     3025     364,   116,   112,  1509,   368,  1509,  1509,   371,  1509,   110,
     3026     221,  1325,   116,  1509,  1509,   110,   209,  1292,   116,   688,
     3027     110,  1325,   109,   692,   109,   694,   112,   109,   221,   698,
     3028     109,   109,   643,  1292,  1192,  1193,  1192,   706,   130,   112,
     3029     251,   132,  1510,   115,  1485,  1292,  1510,   464,   110,   110,
     3030     719,   720,  1382,   110,   128,   115,   115,  1215,   251,  1215,
     3031     114,   112,   426,   427,   733,    72,  1534,   132,  1398,    76,
     3032    1534,    49,   265,   110,   112,  1233,    83,    84,  1082,   112,
     3033    1381,   692,   116,   694,   110,    63,   110,   698,    66,   110,
     3034     454,    69,   112,  1423,   112,   112,   110,   112,    47,   112,
     3035     112,   132,   109,   467,   111,   132,   115,   132,   110,  1423,
     3036     117,   118,   115,   132,   110,  1445,   132,   115,   112,  1423,
     3037     252,   112,  1452,   112,  1454,   130,  1456,   112,   492,  1287,
     3038     494,  1287,   496,   112,  1292,   328,  1292,   112,   110,  1509,
     3039     110,  1445,   506,   112,   508,   814,  1509,   511,  1452,   513,
     3040     514,  1509,   112,   109,   109,  1485,   349,   826,   109,    60,
     3041    1490,   525,  1492,   110,   110,   109,   114,  1325,   132,   147,
     3042    1445,   112,   112,  1503,  1519,   110,   112,  1452,   110,  1509,
     3043    1510,    96,   160,    96,   109,   109,  1445,  1510,   115,  1519,
     3044      57,   110,   110,  1452,    55,   132,   110,    42,  1445,  1503,
     3045     869,   110,     0,     1,  1534,  1452,   875,   130,   186,   116,
     3046     671,  1534,   132,   406,   110,   579,     4,     5,     6,     7,
     3047       8,     9,   433,   110,   132,    96,   590,    96,  1503,   898,
     3048     132,   209,   110,   132,    32,   110,    97,   132,   907,   106,
     3049     909,   115,   109,   221,  1503,   110,   110,   916,    85,    86,
     3050      87,    49,   112,   112,   671,   132,  1503,   621,   869,   109,
     3051     132,   115,   626,   115,   875,  1423,   110,   110,   632,   132,
     3052     939,    69,   109,   484,   111,   110,   113,   114,   110,   667,
     3053    1058,    69,   563,    71,   564,   979,   565,  1445,   155,  1445,
     3054     959,   484,   567,  1215,  1452,   488,  1452,    72,   566,    74,
     3055      75,    76,  1473,  1368,   973,   916,  1544,   105,    83,    84,
     3056    1122,  1330,   981,  1302,  1073,   526,   985,   685,  1452,   685,
     3057     914,   685,  1092,   698,   973,    66,   922,   583,   869,   649,
     3058     791,   941,   193,   723,   109,   467,   111,   484,  1233,    -1,
     3059     801,    82,   117,   118,   733,  1503,    -1,  1503,   571,   147,
     3060     328,   218,   571,    -1,   815,   216,   571,   155,   156,   723,
     3061      -1,    -1,   973,    -1,    -1,   226,  1035,    -1,    -1,    -1,
     3062      -1,    -1,    -1,    -1,   791,    -1,   117,    -1,    -1,    -1,
     3063     591,   745,    -1,    -1,   801,    -1,    -1,    -1,   186,    -1,
     3064      -1,    -1,    -1,    -1,    -1,    -1,   528,    -1,   815,    -1,
     3065      -1,   533,    -1,   201,  1073,   272,   204,   205,   601,    -1,
     3066     603,   209,   279,    -1,    -1,    -1,    -1,    -1,  1087,   160,
     3067      -1,    -1,    -1,  1092,   635,   636,   637,    -1,   406,    -1,
     3068      -1,    -1,   230,   294,    -1,    -1,   234,    -1,   236,    -1,
     3069    1109,   805,   653,    -1,    -1,    -1,   810,   245,    -1,    -1,
     3070    1454,   583,  1456,   251,    -1,    -1,    -1,    -1,   256,    -1,
     3071     696,    -1,  1073,    -1,    -1,    -1,    -1,    -1,   266,    -1,
     3072      -1,    72,    -1,    74,    75,    76,   274,    -1,    -1,    -1,
     3073     221,   348,    83,    84,    -1,    -1,  1490,    -1,  1492,    -1,
     3074      -1,    -1,    -1,    -1,    -1,   688,    -1,    -1,   365,    -1,
     3075     711,    -1,   369,    -1,    -1,    -1,     0,    -1,   109,    -1,
     3076     111,    10,    11,    12,    13,    14,   117,   118,   259,  1188,
     3077      -1,    -1,   654,   264,   656,    -1,   719,   720,    -1,   130,
     3078      -1,    -1,    -1,    -1,   898,    -1,    -1,    -1,    32,    -1,
     3079      39,   905,  1211,   341,    -1,    -1,    -1,   345,    -1,    -1,
     3080      -1,    -1,   788,   351,    -1,    -1,    -1,   921,  1019,  1020,
     3081      -1,    -1,    -1,    -1,    -1,   432,   364,    -1,    67,    -1,
     3082     368,    -1,    -1,   371,   706,    69,    -1,  1188,    -1,   943,
     3083     944,   945,   443,  1252,    -1,  1254,  1255,    -1,    -1,    -1,
     3084      -1,    -1,   803,    -1,    10,    11,    12,    13,    14,    -1,
     3085     811,    -1,  1019,  1020,    -1,    -1,    -1,    -1,   469,   350,
     3086     109,    -1,   111,    -1,    -1,    -1,  1077,  1078,   117,   118,
     3087     418,   814,    -1,    39,    -1,    -1,    -1,    -1,    -1,   865,
     3088      -1,    -1,    -1,   826,    -1,   433,    -1,  1001,    -1,    -1,
     3089     438,    -1,    -1,    -1,    -1,   506,    -1,    -1,   446,    -1,
     3090     511,    67,    -1,   514,    -1,    -1,    -1,    -1,    -1,    -1,
     3091    1077,  1078,   156,    -1,    -1,   876,   464,    -1,    -1,   467,
     3092      -1,    -1,   908,    -1,    10,    11,    12,    13,    14,    -1,
     3093      -1,    -1,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
     3094     431,    -1,    -1,   109,   492,   111,    -1,    -1,   496,    -1,
     3095      -1,   117,   118,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3096      -1,    -1,  1381,  1382,   907,    -1,   909,   953,  1082,    -1,
     3097      -1,  1390,  1391,   590,    -1,    -1,    -1,   525,   526,    -1,
     3098      -1,    67,   473,   944,    -1,    -1,   230,    -1,    -1,    -1,
     3099      -1,    -1,    -1,    -1,    -1,    -1,   939,    -1,    -1,    -1,
     3100      -1,    -1,   988,    -1,    -1,   622,    -1,   251,    -1,  1428,
     3101    1124,    -1,   256,    -1,    -1,    -1,    -1,     0,    -1,    -1,
     3102      -1,   638,    -1,   109,   572,   111,    -1,    -1,    -1,    -1,
     3103      -1,   117,   118,    -1,    72,   652,    74,    75,    76,    -1,
     3104      -1,    -1,   590,   591,    -1,    83,    84,    -1,  1259,    32,
     3105      -1,    -1,    -1,  1039,    -1,   603,  1267,  1268,  1269,   670,
     3106    1227,  1022,  1023,    -1,    -1,    -1,  1485,  1486,   679,    -1,
     3107      -1,   109,   683,   621,    -1,    -1,  1495,   959,   626,   117,
     3108     118,  1042,    -1,    -1,   632,    -1,    69,   635,   636,   637,
     3109    1509,  1510,  1259,    -1,    -1,    -1,    -1,  1211,    -1,   981,
     3110    1267,  1268,  1269,   985,   595,   653,    72,   351,    74,    75,
     3111      76,    -1,    -1,    -1,    -1,  1534,   733,    83,    84,  1233,
     3112    1331,    -1,    -1,   671,    -1,    -1,    10,    11,    12,    13,
     3113      14,    -1,   623,  1119,   682,    -1,    -1,   628,    -1,    -1,
     3114      -1,    -1,    -1,   109,  1087,   111,    -1,    -1,    -1,  1092,
     3115      -1,   117,   118,  1035,    -1,    39,    -1,    -1,    -1,    -1,
     3116     708,    -1,    -1,   711,  1331,    -1,    -1,    66,    -1,    -1,
     3117      -1,    -1,   720,   156,   418,   723,    -1,    -1,    -1,    -1,
     3118      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,   433,
     3119      74,    75,    76,    -1,   438,  1181,  1182,   745,   746,    83,
     3120      84,    -1,   446,   751,    -1,    -1,    -1,    -1,   699,    -1,
     3121      -1,  1325,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,
     3122     464,    -1,   713,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3123      -1,  1192,  1193,   117,   118,    -1,    -1,    -1,   482,    -1,
     3124     484,    -1,    -1,   791,    -1,    -1,    -1,    -1,    -1,    -1,
     3125      -1,    -1,    -1,   801,  1215,   803,    -1,   805,    -1,    -1,
     3126     808,   160,   810,   811,    -1,    -1,    -1,   815,   251,    -1,
     3127      -1,    -1,  1233,   256,    -1,    -1,    -1,   825,    -1,    -1,
     3128      -1,   898,   526,    -1,    -1,    -1,    -1,    -1,    -1,   900,
     3129      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3130      19,    20,    21,    22,    23,    24,    25,    26,    27,  1423,
     3131      -1,    30,    31,    32,    -1,    -1,   807,  1278,  1279,    -1,
     3132      39,     0,   221,    -1,    -1,    -1,  1287,    -1,   876,    -1,
     3133      -1,  1292,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     3134    1454,    -1,  1456,    -1,    -1,    83,    84,   591,    67,    -1,
     3135     898,    -1,    -1,    32,    -1,    74,    75,   905,   906,    -1,
     3136     259,   909,    -1,    -1,  1325,   264,    -1,    -1,   351,    -1,
     3137    1252,   109,  1254,  1255,    -1,    -1,  1490,    -1,  1492,   117,
     3138     118,    -1,    -1,    -1,    -1,    -1,    -1,   935,    -1,    -1,
     3139      69,   635,   636,   637,    -1,   943,   944,    -1,   117,   118,
     3140    1386,    -1,    -1,    -1,    -1,  1519,    -1,    -1,    -1,   653,
     3141      -1,    -1,    -1,    -1,    -1,    -1,  1402,    -1,    -1,    -1,
     3142      -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
     3143      -1,    -1,    -1,    -1,    -1,   418,    -1,  1398,   682,    -1,
     3144      -1,    -1,  1053,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3145     433,   350,    -1,  1001,    -1,   438,    -1,    -1,    -1,    -1,
     3146      -1,    -1,  1423,   446,   708,    -1,  1014,   711,    -1,    -1,
     3147      -1,  1019,  1020,    -1,  1022,  1023,    -1,   156,    -1,    -1,
     3148      -1,   464,    -1,    -1,  1445,    -1,  1472,  1473,    -1,    -1,
     3149      -1,  1452,    -1,    -1,  1042,    -1,    -1,    -1,    -1,   482,
     3150      -1,   484,   746,    -1,    -1,    -1,    -1,    -1,  1390,  1391,
     3151      -1,    -1,    -1,  1004,    -1,    -1,    10,    11,    12,    13,
     3152      14,    -1,    10,    11,    12,    13,    14,    -1,    -1,  1077,
     3153    1078,    -1,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3154      -1,    -1,  1503,   526,    -1,    39,  1428,   791,    -1,    -1,
     3155      -1,    39,    -1,    -1,    -1,    -1,    -1,   801,    -1,   803,
     3156      -1,    -1,    -1,    -1,   808,    -1,  1509,   811,    -1,    -1,
     3157      -1,   815,   251,    67,   473,    -1,  1124,   256,    72,    67,
     3158      74,    75,    76,    -1,    72,    -1,    74,    75,    76,    83,
     3159      84,    -1,    -1,    -1,  1211,    83,    84,    -1,    -1,    -1,
     3160      -1,    -1,  1150,    -1,  1486,    -1,    -1,    -1,   591,    -1,
     3161      -1,    -1,    -1,  1495,    -1,   109,    -1,   111,    -1,    -1,
     3162      -1,   109,    -1,   117,   118,    -1,    -1,    -1,    -1,   117,
     3163     118,    -1,   876,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3164      75,    76,    -1,    -1,    -1,  1193,    -1,    -1,    83,    84,
     3165      -1,    -1,   635,   636,   637,    -1,    -1,    -1,    -1,    -1,
     3166      -1,    -1,   906,  1211,    -1,    -1,    -1,  1215,    -1,    -1,
     3167     653,    -1,   351,    -1,   109,    -1,   111,    -1,    -1,  1227,
     3168      -1,  1229,   117,   118,    -1,  1233,    66,    -1,   671,    -1,
     3169    1301,    -1,    -1,    -1,    -1,    75,   595,    -1,    -1,   682,
     3170      -1,  1192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3171      -1,  1259,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,
     3172    1268,  1269,    -1,    -1,   623,   708,    -1,    -1,   711,   628,
     3173    1278,  1279,    -1,    -1,    -1,    -1,    -1,   117,     0,   418,
     3174      -1,    -1,    -1,    -1,  1292,    -1,    -1,    -1,    -1,    -1,
     3175      -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,   438,
     3176      -1,    -1,    -1,   746,  1381,    -1,    -1,   446,    -1,    -1,
     3177      32,    -1,    -1,    -1,    -1,  1019,  1020,  1325,  1022,  1023,
     3178     160,    -1,    -1,  1331,    -1,   464,    -1,    -1,    -1,    -1,
     3179      -1,    -1,    -1,    -1,    -1,    -1,  1287,    -1,  1042,    -1,
     3180     699,    -1,    -1,   482,    -1,   484,    -1,    69,   791,    -1,
     3181      -1,    -1,    -1,    -1,   713,    -1,    -1,    -1,   801,    -1,
     3182     803,    -1,    -1,    -1,    -1,   808,    -1,    -1,   811,    -1,
     3183      -1,    -1,   815,  1077,  1078,    -1,    -1,    -1,    -1,    -1,
     3184      -1,   221,  1453,    -1,  1455,    -1,    -1,   526,    -1,    -1,
     3185    1398,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3186      53,    -1,    55,    -1,    -1,    58,    59,    60,    -1,    62,
     3187      -1,    -1,    -1,    -1,    -1,  1423,    -1,    -1,  1489,   259,
     3188    1491,    39,    -1,    76,   264,    -1,    -1,    -1,    -1,    -1,
     3189      -1,    -1,    -1,   876,   156,    88,    89,  1445,    -1,   279,
     3190      -1,    -1,    -1,    -1,  1452,    -1,  1150,    -1,   807,    67,
     3191      -1,    -1,   591,    -1,    72,    -1,    74,    75,    76,    -1,
     3192      -1,    -1,  1533,   906,  1535,    83,    84,    -1,    -1,    -1,
     3193      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1548,  1549,    -1,
     3194      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1193,
     3195      -1,   109,    -1,   111,    -1,  1503,   635,   636,   637,   117,
     3196     118,    -1,  1510,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3197     350,  1215,    -1,    -1,   653,    -1,    -1,    -1,    -1,    -1,
     3198      -1,    -1,    -1,  1227,    -1,  1229,    -1,    -1,    -1,   251,
     3199      -1,    -1,   671,    -1,   256,    -1,    -1,    -1,    -1,    -1,
     3200      -1,    -1,    -1,   682,    -1,    -1,    -1,    -1,    -1,    10,
     3201      11,    12,    13,    14,    -1,  1259,    -1,    -1,    -1,    -1,
     3202      -1,    -1,    -1,  1267,  1268,  1269,    -1,    -1,    -1,   708,
     3203      -1,    -1,   711,    -1,  1278,  1279,  1019,  1020,    39,  1022,
     3204    1023,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1292,    -1,
     3205      -1,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1042,
     3206      -1,    -1,    -1,    -1,    -1,    -1,    67,   746,   448,    -1,
     3207      -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3208      -1,    -1,    83,    84,    -1,    -1,    -1,  1331,    -1,   351,
     3209      -1,    -1,    -1,   473,  1077,  1078,    26,    27,    28,    -1,
     3210      -1,    -1,    -1,    -1,    -1,  1004,    -1,    -1,   109,    -1,
     3211      -1,    -1,   791,    -1,    -1,    -1,   117,   118,    -1,    -1,
     3212      -1,    -1,   801,    -1,   803,    -1,    -1,    -1,    -1,   808,
     3213      -1,    -1,   811,    -1,    -1,    -1,   815,    -1,    97,    98,
     3214      99,   100,   101,   102,   103,   104,   105,   106,   107,    -1,
     3215      -1,   344,    -1,   346,  1398,    -1,   418,    -1,    -1,    -1,
     3216      -1,    -1,    -1,    -1,   357,   358,    -1,  1150,    98,    -1,
     3217     100,   433,   131,    -1,    -1,    -1,   438,    -1,    -1,    -1,
     3218      -1,    -1,    -1,    -1,   446,    -1,    -1,    -1,    -1,    -1,
     3219      -1,    -1,    -1,    -1,    -1,    -1,    -1,   876,    -1,    -1,
     3220      -1,  1445,   464,    -1,    -1,    -1,    -1,    -1,  1452,    -1,
     3221    1193,    -1,    -1,    -1,    -1,   595,    -1,    -1,    -1,    -1,
     3222     482,    -1,   484,    -1,    -1,    -1,    -1,   906,    -1,    -1,
     3223      -1,    -1,  1215,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3224      -1,    -1,    -1,   623,  1227,    -1,  1229,    -1,   628,    -1,
     3225      -1,   181,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1503,
     3226      -1,   191,   192,    -1,   526,    -1,   196,    -1,   198,   199,
     3227      -1,    -1,    -1,    -1,    -1,    -1,  1259,    -1,    -1,    -1,
     3228      -1,    -1,    -1,    -1,  1267,  1268,  1269,    -1,    -1,    -1,
     3229      -1,    -1,    -1,  1192,    -1,  1278,  1279,    -1,    -1,    -1,
     3230      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1292,
     3231      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   699,
     3232      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   591,
     3233      -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,    -1,
     3234    1019,  1020,    -1,  1022,  1023,    -1,    -1,    -1,  1331,    -1,
     3235      -1,    -1,    -1,   733,    -1,    -1,    -1,    -1,    -1,    -1,
     3236      -1,    -1,    -1,  1042,     7,    -1,    -1,    10,    11,    12,
     3237      13,    14,    -1,   635,   636,   637,    -1,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1287,    -1,
     3239      -1,   653,    -1,    -1,    37,    38,    39,    40,  1077,  1078,
     3240      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,
     3241      -1,    -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,
     3242     682,    -1,    -1,    66,    67,    -1,    -1,   807,    -1,    72,
     3243      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3244      83,    84,    -1,    86,    87,    -1,   708,    -1,    -1,   711,
     3245      -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
     3246      -1,    -1,  1445,    -1,    -1,    -1,   109,    -1,   111,  1452,
     3247      -1,  1150,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3248      -1,    -1,    39,    -1,   746,    -1,    -1,    -1,    -1,    -1,
    31943249      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3195       -1,    -1,    -1,    -1,    -1,    -1,  1190,    -1,  1442,    -1,
    3196       -1,    -1,    -1,    -1,    -1,  1449,   591,   479,   905,    -1,
    3197       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,    -1,
     3250      -1,    -1,    -1,    -1,    -1,    -1,    -1,   700,    -1,   702,
     3251      67,    -1,    -1,    -1,  1193,    72,   709,   710,    -1,    76,
     3252    1503,   714,    -1,    -1,    -1,    -1,    83,    84,    -1,   791,
     3253      -1,    -1,    -1,   726,    -1,    -1,  1215,    -1,   731,   801,
     3254      -1,   803,    -1,    -1,    -1,    -1,   808,    -1,  1227,   811,
     3255    1229,    -1,   109,   815,    -1,    -1,    -1,    -1,    -1,    -1,
     3256     117,   118,    -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,
    31983257      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3199     1224,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3200       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3201      635,   636,   637,    -1,    -1,    -1,  1500,    -1,    -1,    -1,
    3202      351,    -1,  1256,  1507,    -1,    -1,   755,   756,   653,    -1,
    3203     1264,  1265,  1266,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3204       -1,  1275,  1276,    -1,    -1,    -1,   671,    -1,    -1,    -1,
    3205       -1,    -1,    -1,    -1,    -1,  1289,    -1,   682,    -1,   571,
    3206      572,    67,    -1,    -1,   917,    -1,    72,    -1,    74,    75,
     3258    1259,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,  1268,
     3259    1269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1278,
     3260    1279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      -1,    -1,    -1,  1292,   876,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,  1004,    -1,    -1,    -1,    -1,    -1,
     3263      -1,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
     3264      -1,    -1,    -1,    -1,   906,   575,   576,    -1,    -1,    -1,
     3265      -1,    -1,  1331,    -1,    -1,    -1,    -1,    -1,    49,    -1,
     3266      -1,    -1,    37,    38,    39,    40,   859,   860,   861,   862,
     3267      -1,   864,    -1,    -1,   604,    66,    -1,   607,   608,    -1,
     3268     610,    -1,   612,   613,    -1,    -1,   879,   617,   618,    -1,
     3269      -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3270     893,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3271      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,  1398,
     3272      -1,    -1,   113,    -1,    -1,    -1,   117,    -1,    -1,    -1,
     3273      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3274     933,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3275      -1,    -1,    -1,    -1,    -1,   146,    -1,  1019,  1020,    -1,
     3276    1022,  1023,    -1,    -1,    -1,   156,  1445,    -1,    -1,   160,
     3277      -1,    -1,    -1,  1452,    -1,    -1,    -1,    -1,    -1,    -1,
     3278    1042,    -1,    -1,    -1,    -1,   978,    -1,    -1,    -1,    -1,
     3279      -1,   984,    -1,    -1,    -1,    -1,   989,    -1,    -1,    -1,
     3280      -1,   994,    -1,   996,    -1,    -1,    -1,  1000,    -1,  1002,
     3281    1003,    -1,  1192,  1006,    -1,  1077,  1078,    -1,   209,    -1,
     3282      -1,    -1,  1015,    -1,  1503,   755,   756,    -1,    -1,    -1,
     3283     221,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3284    1033,  1034,    -1,    -1,    -1,    -1,    -1,    -1,   239,    10,
     3285      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3286      21,    22,    23,    24,    25,    26,    27,  1060,    -1,    -1,
     3287    1063,    -1,    -1,   264,    -1,    -1,    -1,    -1,    39,    -1,
     3288     271,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1150,    -1,
     3289      -1,    -1,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
     3290      -1,    -1,    -1,   294,    -1,    -1,    67,  1287,    -1,    -1,
     3291      -1,    -1,    -1,  1106,    -1,    -1,   307,    -1,    -1,  1112,
     3292    1113,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3293      -1,  1193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1132,
     3294      -1,    -1,    -1,  1136,    -1,    -1,    -1,    -1,  1141,    -1,
     3295      -1,    -1,    -1,  1215,   345,    -1,    -1,    -1,    -1,   350,
     3296      -1,  1154,    -1,    -1,    98,  1227,   100,  1229,    -1,    -1,
     3297      -1,    -1,    -1,    -1,  1167,    -1,  1169,  1170,  1171,  1172,
     3298      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   918,    -1,
     3299      -1,   125,  1185,    -1,  1187,    -1,    -1,  1259,  1191,    -1,
     3300      -1,    -1,    -1,    -1,    -1,  1267,  1268,  1269,    -1,    -1,
     3301      -1,    -1,    -1,    -1,    -1,    -1,  1278,  1279,    -1,    -1,
     3302      66,    -1,    -1,    -1,    -1,    -1,    -1,  1220,  1221,    75,
     3303    1292,    77,    -1,    79,    -1,   426,   427,    -1,    -1,    -1,
     3304      86,    -1,   433,    -1,    -1,    -1,    -1,   181,    -1,    -1,
     3305      -1,    -1,    -1,    -1,    -1,   189,    -1,   191,   192,    -1,
     3306      -1,    -1,   196,   454,   198,   199,    -1,    -1,    -1,  1331,
     3307      -1,   117,    -1,   119,   120,   121,    -1,  1270,  1271,    -1,
     3308      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1280,    -1,    -1,
     3309      -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3310      -1,    -1,    -1,   494,    -1,    -1,    -1,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    -1,   160,   506,    -1,   508,    -1,    -1,
     3312     511,    -1,   513,   514,    -1,    -1,    -1,    -1,    -1,    -1,
     3313      -1,    -1,    -1,    -1,   268,   526,  1398,    -1,    -1,    -1,
     3314      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1341,  1079,
     3315    1343,  1344,  1345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3316      -1,    -1,  1355,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317      -1,  1364,    -1,    -1,    -1,   221,    -1,   223,   224,   225,
     3318      -1,    -1,    -1,  1445,    -1,    -1,    -1,    -1,   579,    -1,
     3319    1452,    -1,    -1,    -1,    -1,    -1,  1389,    -1,    -1,    -1,
     3320     591,    -1,    -1,    -1,   595,    -1,    -1,    -1,    -1,    -1,
     3321      -1,    -1,    -1,   259,    -1,    -1,    -1,    -1,   264,    -1,
     3322      -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,
     3323     621,    -1,    -1,   279,    -1,   626,    -1,    -1,    -1,  1432,
     3324    1433,  1503,    -1,    -1,   635,   636,   637,    -1,    -1,    -1,
     3325      -1,    -1,  1445,    -1,    -1,    -1,    -1,    -1,    -1,  1452,
     3326      -1,    -1,   653,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3327      -1,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3328    1210,   101,   328,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3329      -1,  1484,    -1,    -1,   685,  1488,    -1,    -1,    -1,    -1,
     3330      -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,
     3331     356,    -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,
     3332     711,    -1,   713,  1516,    -1,  1518,    -1,    -1,    -1,    -1,
     3333      -1,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,    -1,
     3334      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3335      -1,   171,    -1,  1546,  1547,   746,    -1,    -1,    -1,    -1,
     3336     406,  1554,  1555,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3337      -1,    -1,    -1,    -1,   194,    -1,    -1,    -1,   424,    37,
     3338      38,    -1,    40,   429,    -1,   431,    -1,    -1,   208,    -1,
     3339      -1,    -1,    -1,    -1,    -1,    -1,    -1,   217,    -1,    -1,
     3340      -1,    -1,   448,    -1,    -1,   451,   452,   227,    66,    -1,
     3341      -1,    -1,   803,   459,    72,    -1,   807,    -1,    76,    -1,
     3342     811,    79,    80,    81,    82,    83,    84,   473,    86,    87,
     3343      -1,    -1,   252,    -1,   480,    -1,    -1,   257,    -1,    -1,
     3344      -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3345     270,   109,    -1,   111,    -1,    -1,   276,    -1,   278,   117,
     3346     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
     3347     604,    -1,   130,   607,   608,   295,   610,    -1,   612,   613,
     3348      -1,    -1,    -1,   617,   618,    10,    11,    12,    13,    14,
     3349      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3350      25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
     3351      -1,    -1,    -1,    -1,    39,   906,    -1,    -1,   338,    -1,
     3352      -1,    -1,    -1,   343,    -1,    -1,    -1,    -1,    -1,    -1,
     3353     921,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3354      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,   595,
     3355      -1,    -1,   372,    78,   945,    -1,   376,   377,    -1,   379,
     3356      -1,    -1,    -1,    -1,    -1,    -1,   386,   387,    -1,   389,
     3357     390,    -1,   392,    -1,   394,    -1,    -1,   623,    -1,    -1,
     3358      -1,    -1,   628,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,   411,    -1,    -1,    37,    38,    -1,    40,    -1,   419,
     3360      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361    1001,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3362      -1,   755,   756,    66,   444,    -1,    -1,    -1,    -1,    72,
     3363      -1,  1022,  1023,    76,    -1,    -1,    79,    80,    81,    82,
     3364      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3365     470,    -1,    -1,   699,    -1,    -1,   476,    -1,    -1,    -1,
     3366      -1,   481,    -1,    -1,    -1,    -1,   109,   713,   111,    -1,
     3367      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3368      -1,    -1,    -1,    -1,    -1,    -1,    -1,   733,    -1,    -1,
     3369      -1,  1082,    -1,    -1,    -1,    -1,    -1,   517,    -1,    -1,
     3370      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3371      -1,    -1,   532,    -1,     0,    -1,    -1,     3,     4,     5,
     3372       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3373      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3374      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,   795,
     3375      36,   571,    -1,    39,    40,    -1,    -1,    -1,    -1,  1150,
     3376     580,   807,    -1,    -1,    -1,    -1,    -1,   587,    -1,    -1,
     3377      -1,    -1,    -1,   593,    -1,    -1,    -1,    -1,    64,   913,
     3378     826,    67,   602,    69,   918,    71,    72,    -1,    74,    75,
    32073379      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
    3208       -1,  1018,  1019,   708,  1021,  1022,   711,   418,    -1,    -1,
    3209       -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
    3210       -1,    -1,   433,   109,  1041,   111,    -1,   438,    -1,    -1,
    3211       -1,   117,   118,    -1,    -1,   446,    -1,    -1,    -1,    -1,
    3212       -1,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3213       -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,    -1,  1076,
    3214     1077,    -1,    -1,    -1,    -1,    -1,   658,    -1,    -1,    -1,
    3215      662,   482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
    3216       -1,  1395,    -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,
    3217       -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,    -1,
    3218       -1,    -1,   807,   912,    -1,   810,    -1,    -1,   917,   814,
    3219       -1,    -1,    -1,    -1,    -1,   526,    53,    -1,    55,    -1,
    3220       -1,    58,    59,    60,    -1,    62,    -1,    -1,  1442,    -1,
    3221     1147,    -1,    -1,    -1,    -1,  1449,    -1,    -1,    -1,    76,
    3222       -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,
    3223       -1,    88,    89,    -1,    10,    11,    12,    13,    14,    -1,
     3380      -1,  1192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3381      -1,    -1,    -1,    -1,    -1,   155,   156,    -1,    -1,    -1,
     3382      -1,    -1,   642,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3383      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,  1229,    -1,
     3384      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   189,
     3385      -1,    -1,    -1,    -1,    -1,    -1,   196,    -1,   678,    -1,
     3386      -1,    -1,    -1,    -1,    -1,    -1,   686,    -1,    -1,    10,
     3387      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3388      21,    22,    23,    24,    25,    26,    27,  1278,  1279,    30,
     3389      31,    32,    -1,   939,    -1,    -1,  1287,   717,    39,    -1,
     3390      -1,    -1,    -1,    -1,    -1,    -1,    -1,   727,   728,    -1,
    32243391      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3225      875,    -1,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
    3226      591,    -1,    -1,    39,    -1,    -1,  1500,    -1,    -1,    -1,
    3227       -1,    -1,    -1,    -1,    -1,  1212,    -1,    -1,    -1,    -1,
    3228      905,    -1,   794,    -1,    -1,    -1,    -1,  1224,    -1,  1226,
    3229       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3230       76,    -1,    -1,    -1,   635,   636,   637,    83,    84,    -1,
    3231       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1256,
    3232       -1,    -1,   653,    -1,    -1,    -1,    -1,  1264,  1265,  1266,
    3233       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,  1275,  1276,
    3234      671,   117,   118,    -1,    -1,   282,    -1,   284,   285,  1078,
    3235       -1,   682,  1289,    -1,  1207,   292,   293,    -1,    -1,    -1,
     3392      -1,    -1,    -1,   969,    -1,    -1,    67,    -1,   268,    -1,
     3393      -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3394     760,    -1,    83,    84,    -1,  1079,   766,    -1,    -1,    -1,
     3395      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1004,    -1,
     3396      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,  1015,
     3397     111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
     3398      -1,    -1,    -1,   323,    -1,    -1,    -1,    -1,    -1,    -1,
     3399      -1,   331,   332,    -1,   334,   335,    -1,    -1,    -1,    -1,
     3400      -1,    -1,    -1,    -1,    -1,   345,    -1,  1398,    -1,   349,
     3401     830,    -1,    -1,    -1,    -1,    -1,    -1,   837,    -1,    -1,
     3402      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   368,    -1,
     3403     850,   371,   852,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3404      -1,  1087,    -1,    -1,    -1,    -1,   866,    -1,    -1,    -1,
     3405      -1,    -1,   872,    -1,    -1,  1101,    -1,    -1,   398,    -1,
     3406      -1,    -1,   402,  1454,   884,  1456,    -1,   887,    -1,    -1,
     3407      -1,    -1,    -1,    -1,    -1,    -1,  1210,    -1,    -1,    -1,
    32363408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3237      307,   308,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
    3238      711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3239       -1,  1328,    -1,  1018,  1019,    -1,  1021,  1022,    -1,    -1,
    3240      912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,
    3241       -1,    -1,    -1,    -1,    -1,   746,  1041,    10,    11,    12,
    3242       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3243       23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
    3244       -1,    -1,    -1,    -1,   381,    -1,    39,    -1,    -1,    -1,
    3245       -1,  1076,  1077,    -1,    -1,    -1,    -1,    -1,  1395,   790,
    3246       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   800,
    3247       -1,   802,    -1,    -1,    67,    -1,   807,   989,  1207,   810,
    3248       -1,    74,    75,   814,    -1,    78,    -1,   344,    -1,   346,
    3249       -1,    -1,    -1,    -1,  1006,    -1,    -1,    -1,    -1,    -1,
    3250      357,   358,    -1,    -1,    -1,  1442,    -1,    -1,    -1,    -1,
    3251       37,    38,  1449,    40,    -1,    -1,   109,    -1,   111,    -1,
    3252       -1,    -1,  1147,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3253       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3254       -1,    -1,    -1,    -1,   875,    72,    -1,    -1,    -1,    76,
    3255       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3256       87,    -1,    -1,  1500,    -1,  1190,    -1,    -1,    -1,    -1,
    3257       -1,    -1,  1084,    -1,   905,    -1,    -1,    -1,    -1,    -1,
    3258       -1,    -1,   109,    -1,   111,    -1,    -1,  1212,    -1,    -1,
    3259      117,   118,   119,   120,   121,   122,    -1,    -1,    -1,  1224,
    3260       -1,  1226,     7,   130,    -1,    10,    11,    12,    13,    14,
    3261       -1,    -1,  1124,   550,   551,   552,   553,   554,   555,   556,
    3262      557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
    3263      567,  1256,    37,    38,    39,    40,    -1,    -1,    -1,  1264,
    3264     1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3265     1275,  1276,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3266       -1,    66,    67,    -1,  1289,    -1,    -1,    72,    -1,    -1,
    3267       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3268       -1,    86,    87,    -1,    -1,    -1,    -1,  1018,  1019,    -1,
    3269     1021,  1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3270       -1,    -1,    -1,  1328,   109,    -1,   111,    -1,    -1,    -1,
    3271     1041,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3409      -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,  1490,
     3410      -1,  1492,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3411      -1,    -1,   282,    -1,   284,   285,    -1,    -1,    -1,    -1,
     3412      -1,    -1,   292,   293,    -1,    -1,    -1,    -1,  1519,    -1,
     3413      -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,   308,   479,
     3414      -1,    -1,   482,    -1,   964,    -1,  1192,    -1,    -1,    -1,
     3415      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3416      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3417      -1,    30,    31,    32,    -1,   345,    -1,    -1,    -1,   999,
     3418      39,   521,    -1,    -1,    -1,   525,   526,    -1,    -1,    -1,
     3419      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3420      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3421      -1,   381,    -1,    72,    -1,    74,    75,    76,    -1,    78,
     3422      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
     3423      -1,   571,   572,    -1,    -1,    -1,    -1,  1057,    -1,    -1,
     3424      -1,  1287,    -1,  1063,    -1,    -1,   146,    -1,    -1,    -1,
     3425     590,   591,   111,    -1,    -1,    -1,   156,    -1,   117,   118,
     3426      -1,   601,    -1,   603,   604,    -1,    -1,    -1,   168,   169,
     3427     610,    -1,    -1,    -1,    -1,    -1,    -1,  1097,    -1,    -1,
     3428     620,   621,  1102,    -1,    -1,    -1,   626,    -1,    -1,    -1,
     3429    1110,    -1,    -1,    -1,    -1,   635,   636,   637,    -1,    -1,
     3430      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3431      -1,    -1,    -1,   653,    -1,    -1,    -1,    -1,   658,   659,
     3432      -1,    -1,   662,   663,    -1,  1145,    -1,    -1,    -1,   669,
     3433      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1157,    -1,   239,
     3434    1160,    -1,  1162,    -1,    -1,    -1,    -1,    -1,   688,    -1,
     3435      -1,    -1,    -1,    -1,    -1,    -1,  1176,  1177,    -1,    -1,
     3436      -1,    -1,    -1,   263,    -1,    -1,    -1,    -1,    -1,    -1,
     3437      -1,   711,   712,    -1,    -1,    -1,    -1,    -1,  1198,    -1,
     3438     550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
     3439     560,   561,   562,   563,   564,   565,   566,   567,    -1,    -1,
     3440      -1,    -1,    -1,    -1,    -1,   745,   746,    -1,    -1,    -1,
     3441     750,   751,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3442      -1,    -1,    -1,    -1,    -1,  1245,    -1,    -1,    -1,    -1,
     3443      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3444      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3445      30,    31,    32,    -1,    -1,   795,    -1,    -1,    -1,    39,
     3446      -1,    -1,    -1,   803,    -1,    -1,    -1,    -1,    -1,    -1,
     3447     810,   811,    -1,    -1,   814,    -1,   816,    -1,    -1,    -1,
     3448     380,    -1,    -1,    -1,    -1,    -1,   826,    67,  1534,    -1,
     3449      -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,    -1,
     3450    1320,    -1,  1322,    83,    84,    -1,    -1,    -1,    -1,    -1,
     3451      -1,    -1,    -1,    -1,    -1,    -1,  1336,    -1,  1338,    -1,
     3452      -1,    -1,    -1,    -1,    -1,    -1,   696,    -1,    -1,   109,
     3453      -1,   111,    -1,  1353,    -1,    -1,    -1,   117,   118,    -1,
     3454      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1369,
     3455    1370,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   898,    -1,
     3456    1380,    -1,    -1,  1383,    -1,   905,   906,   907,    -1,   909,
     3457      -1,    -1,    -1,   913,   474,    -1,    -1,    -1,    -1,    -1,
     3458      -1,    -1,    -1,    -1,  1404,    -1,    -1,   757,    -1,    -1,
     3459      -1,    -1,    -1,  1413,   934,   935,  1416,    -1,  1418,  1419,
     3460    1420,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,   788,    -1,
     3462      -1,    -1,    -1,    -1,    -1,    -1,   526,    -1,    -1,   969,
     3463      -1,   531,    -1,    -1,   534,    -1,    -1,    -1,  1458,    -1,
     3464    1460,    -1,  1462,    -1,    -1,    -1,    -1,   547,    -1,    -1,
     3465     990,   991,    -1,    -1,    -1,    -1,    -1,  1477,    -1,    -1,
     3466      -1,  1001,    -1,    -1,    -1,    -1,    -1,  1007,  1008,   569,
     3467    1010,  1011,  1012,    -1,    -1,    -1,    -1,    -1,    -1,   579,
     3468      -1,    -1,  1022,  1023,    -1,    -1,   586,    -1,    -1,    -1,
     3469      -1,   591,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3470       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3471      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3472      -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3473      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,   908,    -1,
     3474     640,    -1,    -1,    -1,    -1,  1085,    -1,  1087,   648,    -1,
     3475      -1,    -1,  1092,    -1,    -1,    64,    -1,    -1,    67,    -1,
     3476      69,  1101,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3477      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
     3478      -1,    -1,    -1,   953,  1124,  1125,  1126,    -1,    -1,    -1,
     3479      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3480     109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,   118,
     3481    1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   988,    -1,
     3482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3483      -1,  1001,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3484      -1,    40,    -1,    -1,    -1,    -1,   746,    -1,   748,    -1,
     3485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   758,    -1,
     3486      -1,    -1,    -1,    -1,   764,    -1,    -1,    66,    -1,    -1,
     3487      -1,  1211,  1042,    72,    -1,    74,    75,    76,    -1,    -1,
     3488      79,    80,    81,    82,    83,    84,    -1,    86,    87,  1229,
     3489      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,    -1,    -1,    -1,    -1,   807,   808,    -1,
     3491     109,   811,   111,    -1,   113,   114,    -1,    -1,   117,   118,
     3492     119,   120,   121,   122,    -1,   825,    -1,    -1,    -1,    -1,
     3493      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1278,  1279,
     3494      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1119,
     3495      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3496      -1,    -1,    -1,    -1,    -1,   865,    -1,    -1,    -1,   869,
     3497      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    32723498       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    32733499      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3274       23,    24,    25,    26,    27,  1076,  1077,    30,    31,    32,
    3275       33,    -1,    -1,    36,    37,    38,    39,    40,    -1,   696,
     3500      23,    24,    25,    26,    27,    -1,   906,    30,    31,    32,
     3501      33,  1181,  1182,    36,    -1,    -1,    39,    40,    -1,    -1,
    32763502      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3277     1395,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3278       -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
    3279       -1,    74,    75,    76,    49,    -1,    79,    80,    81,    82,
     3503      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3504      -1,    64,    -1,    -1,    67,   945,    69,    -1,    71,    72,
     3505      -1,    74,    75,    76,    -1,    -1,    -1,    -1,  1398,    -1,
     3506      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3507      -1,    -1,    -1,   973,    -1,    -1,    -1,    37,    38,   979,
     3508      40,    -1,    -1,   983,    -1,    -1,   109,    -1,   111,    -1,
     3509      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3510      -1,    -1,    -1,    -1,  1004,    -1,    66,    -1,    -1,    -1,
     3511      -1,    -1,    72,    -1,    -1,  1015,    76,    -1,    -1,    79,
     3512      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3513      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1037,    -1,  1039,
     3514      -1,    -1,    -1,    37,    38,  1485,    40,    -1,    -1,   109,
     3515      -1,   111,    -1,    -1,  1054,  1055,   116,   117,   118,   119,
     3516     120,   121,   122,    -1,    -1,    -1,    -1,    -1,    -1,  1509,
     3517    1510,    -1,    66,    -1,    -1,  1075,    -1,    -1,    72,    -1,
     3518      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3519      84,    -1,    86,    87,  1534,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3521      -1,    -1,    -1,    -1,    -1,   109,  1386,   111,    -1,    -1,
     3522     114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     3523    1130,    -1,  1402,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3525    1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3526      -1,    -1,    -1,    -1,    -1,  1165,  1166,    -1,    -1,    -1,
     3527      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3528      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3529      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3530      32,    33,  1472,  1473,    36,    37,    38,    39,    40,    41,
     3531      -1,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
     3532      52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,
     3533      62,    -1,    64,    -1,    66,    67,    -1,    69,    -1,    71,
     3534      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3535      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3536      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3537      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3538      -1,    -1,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3539     122,    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,
     3540     132,    -1,    -1,    -1,    -1,    -1,  1306,    -1,    -1,  1309,
     3541       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3542      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3543      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3544      33,    -1,    -1,    36,    37,    38,    39,    40,    10,    11,
     3545      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3546      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3547      32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
     3548      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    32803549      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3281       -1,    66,    -1,    -1,    -1,    -1,  1147,  1442,    -1,    -1,
    3282      757,    -1,    -1,    -1,  1449,    -1,   109,    -1,   111,    -1,
    3283       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3284       -1,    -1,    -1,   700,    -1,   702,    -1,    -1,    -1,   132,
    3285      787,    -1,   709,   710,    -1,    -1,    -1,   714,   113,  1190,
    3286       -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   726,
    3287       -1,    -1,    -1,    -1,   731,  1500,    -1,    -1,    -1,    -1,
    3288       -1,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3289       -1,   146,    -1,  1224,    -1,  1226,    -1,    -1,    -1,    -1,
    3290       -1,   156,   759,    -1,    -1,   160,    -1,    -1,    -1,    -1,
    3291       -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    10,
    3292       11,    12,    13,    14,    -1,  1256,    -1,    -1,    -1,    -1,
    3293       -1,    -1,    -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,
    3294       -1,    -1,    -1,    -1,  1275,  1276,    37,    38,    39,    40,
    3295       -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,  1289,    -1,
    3296       -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,    -1,    -1,
    3297      907,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
    3298       -1,    72,    -1,    -1,   239,    76,    -1,    -1,    79,    80,
    3299       81,    82,    83,    84,    -1,    86,    87,  1328,    -1,    -1,
    3300       -1,   858,   859,   860,   861,    -1,   863,    -1,    -1,   264,
    3301       -1,    -1,    -1,    -1,    -1,   952,   271,    -1,   109,    -1,
    3302      111,   878,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    3303      121,   122,    -1,    -1,    -1,   892,    -1,    -1,    -1,   294,
    3304       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3305      987,    -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3306       -1,    -1,    -1,  1000,  1395,    -1,    -1,    -1,    75,    -1,
    3307       77,    -1,    79,    -1,    -1,   932,    -1,    -1,    -1,    86,
    3308       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3309      345,    -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,
    3310       -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,    -1,    -1,
    3311      117,  1442,   119,   120,   121,    -1,    -1,    -1,  1449,    -1,
    3312      977,    -1,    -1,    -1,    -1,    -1,   983,    -1,    -1,    -1,
    3313       -1,   988,    -1,    -1,    -1,    -1,   993,    -1,   995,    -1,
    3314       -1,    -1,   999,    -1,  1001,  1002,    -1,    -1,  1005,    -1,
    3315       -1,    -1,    -1,   160,    -1,    -1,    -1,  1014,    -1,    -1,
    3316       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1500,
    3317       -1,   426,   427,    -1,    -1,  1032,  1033,    -1,   433,    -1,
    3318       -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3319       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
    3320       -1,    -1,  1059,    -1,    -1,  1062,    -1,    -1,    -1,    -1,
    3321       -1,    -1,    -1,    -1,   221,    -1,   223,   224,   225,    -1,
    3322       -1,    -1,    -1,    -1,    -1,    -1,    -1,   482,    -1,    -1,
    3323       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   494,
    3324       -1,  1178,  1179,    -1,    -1,    -1,    -1,    -1,  1105,    -1,
    3325       -1,   506,   259,   508,  1111,  1112,   511,   264,   513,   514,
    3326       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3327       -1,   526,   279,    -1,  1131,    -1,    -1,  1134,    -1,    -1,
    3328       -1,  1138,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3329       -1,    -1,    -1,    72,  1151,    74,    75,    76,    -1,    -1,
    3330       -1,    -1,    -1,    -1,    83,    84,    -1,  1164,    -1,  1166,
    3331     1167,  1168,  1169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3332       -1,   328,    -1,    -1,   579,  1182,    -1,  1184,    -1,    -1,
    3333      109,  1188,    -1,    -1,    -1,    -1,   591,    -1,   117,   118,
    3334      595,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,   356,
    3335       -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,
    3336     1217,  1218,    -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,
    3337       -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3338      635,   636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3339       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,   406,
    3340       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3341     1267,  1268,    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,
    3342     1277,    -1,   429,    -1,   431,    -1,    -1,    -1,    -1,    -1,
    3343      685,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3344       -1,   448,    -1,    -1,   451,   452,  1383,    -1,    -1,    -1,
    3345       -1,    -1,   459,    -1,    -1,    -1,   711,    -1,   713,    -1,
    3346       -1,    -1,  1399,    -1,    -1,    -1,   473,    -1,    -1,    -1,
    3347       -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,    -1,    -1,
    3348       -1,  1338,    -1,  1340,  1341,  1342,    -1,    -1,    -1,    -1,
    3349       -1,   746,    -1,    -1,    -1,  1352,    44,    -1,    -1,    -1,
    3350       -1,    -1,    -1,    -1,  1361,    10,    11,    12,    13,    14,
    3351       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3352       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,  1386,
    3353       -1,    -1,  1469,  1470,    39,    -1,    -1,    10,    11,    12,
    3354       13,    14,    -1,    91,    -1,    -1,    -1,   802,    -1,    -1,
    3355       -1,   806,    -1,   101,    -1,   810,    -1,    -1,    -1,    -1,
    3356       -1,    -1,    67,    -1,    -1,    -1,    39,    72,    -1,    74,
    3357       75,    76,  1429,  1430,    -1,    -1,    -1,    -1,    83,    84,
    3358       -1,    -1,    -1,    -1,    -1,  1442,    -1,    -1,   595,    -1,
    3359       -1,    -1,  1449,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3360       -1,    74,    75,    76,   109,    -1,   111,    -1,    -1,   157,
    3361       83,    84,   117,   118,    -1,    -1,   623,    -1,    -1,    -1,
    3362       -1,   628,    -1,   171,  1481,    -1,    -1,    -1,  1485,    -1,
    3363       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,   117,   118,   194,    -1,    -1,    -1,
    3365      905,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
    3366      208,    -1,    -1,    -1,    -1,   920,    -1,    -1,    -1,   217,
    3367       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
    3368       -1,    -1,    -1,    -1,    -1,    -1,  1543,  1544,    -1,   944,
    3369       -1,    -1,   699,    -1,  1551,  1552,    -1,    -1,    -1,    -1,
    3370       -1,    -1,    -1,    -1,   252,    -1,   713,    -1,    -1,   257,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3372       -1,    -1,   270,    -1,    -1,    -1,   733,    -1,   276,    -1,
    3373      278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3374       -1,    -1,    -1,    -1,    -1,  1000,    -1,   295,    10,    11,
    3375       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3376       22,    23,    24,    25,    26,    27,  1021,  1022,    30,    31,
    3377       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3378       -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,    -1,    -1,
    3379      338,    -1,    -1,    -1,    -1,   343,    -1,    -1,    -1,   806,
    33803550      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3381       72,    -1,    74,    75,    76,    -1,    -1,    -1,   825,    -1,
    3382       -1,    83,    84,    -1,   372,    -1,  1081,    -1,   376,   377,
    3383       -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
    3384       -1,   389,   390,    -1,   392,    -1,   394,   109,    -1,   111,
    3385       -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
    3386       -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,
    3387       -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
    3388      156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3389       -1,    -1,  1147,    -1,    -1,    -1,   444,    -1,    -1,    -1,
    3390       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3391       14,    -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
    3392      196,    -1,   470,    -1,    -1,    -1,    -1,    -1,   476,    -1,
    3393       -1,   938,    -1,   481,  1189,    39,    10,    11,    12,    13,
    3394       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3395       24,    25,    26,    27,    28,    -1,    30,    31,    32,    -1,
    3396       -1,   968,    -1,    67,    -1,    39,    -1,    -1,    72,   517,
    3397       -1,  1226,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3398       84,    -1,    -1,    -1,   532,    -1,    -1,    -1,    -1,    -1,
    3399       -1,    -1,   268,    67,    -1,    -1,  1003,    -1,    72,    -1,
    3400       74,    75,    76,    -1,    78,   109,    -1,  1014,    -1,    83,
    3401       84,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    3402     1275,  1276,    -1,   571,    -1,    -1,    -1,    -1,    -1,  1284,
    3403       -1,    -1,   580,    -1,    -1,   109,    -1,   111,   146,   587,
    3404       -1,    -1,    -1,   117,   118,   593,    -1,   323,   156,    -1,
    3405       -1,    -1,    -1,    -1,   602,   331,   332,    -1,   334,   335,
    3406      168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
    3407       -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1086,
    3408       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       -1,    -1,   368,  1100,   642,   371,     3,     4,     5,     6,
    3410        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3411       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3412       27,    -1,   398,    30,    31,    32,   402,    -1,    -1,    -1,
    3413      678,   239,    39,    -1,    -1,    -1,    -1,    -1,   686,    -1,
    3414     1395,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3415       -1,    -1,    -1,    -1,    -1,   263,    -1,   433,    -1,    -1,
    3416       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,   717,
    3417       -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,   727,
    3418      728,    76,  1189,    -1,    79,    80,    81,    82,    83,    84,
    3419       -1,    86,    87,    -1,    -1,    -1,  1451,    -1,  1453,    -1,
    3420       -1,    -1,    -1,   479,   111,    -1,   482,    -1,    -1,    -1,
    3421      117,   118,   760,    -1,   109,    -1,   111,   765,    -1,   114,
    3422       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3423       -1,    -1,  1487,    -1,  1489,    -1,    -1,    -1,    -1,    -1,
    3424       -1,    -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,   525,
    3425      526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3426       -1,  1516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3427       -1,    -1,   380,    -1,    -1,    -1,    -1,  1284,    -1,    -1,
    3428       -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,   836,    -1,
    3429       -1,    -1,    -1,    -1,    -1,   571,   572,    -1,    -1,    -1,
    3430       -1,   849,    -1,   851,    -1,    -1,    -1,    -1,    -1,    -1,
    3431       -1,    -1,    -1,    -1,   590,   591,    -1,   865,    -1,    -1,
    3432       -1,    -1,    -1,   871,    -1,   601,    -1,   603,   604,    -1,
    3433       -1,    -1,    -1,    -1,   610,   883,    -1,    -1,   886,    -1,
    3434       -1,    -1,    -1,    -1,   620,   621,    -1,    -1,    -1,    -1,
    3435      626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,
    3436      636,   637,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,
    3437       -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,    -1,
    3438       -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,    -1,
    3439       -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
    3440       -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,
    3441       -1,    -1,   688,    -1,    -1,   963,    -1,    -1,   526,    -1,
    3442       -1,    -1,    -1,   531,    -1,    -1,   534,    -1,    -1,    -1,
    3443       -1,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,   547,
    3444       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3445      998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3446       -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
    3447      746,   579,    -1,    -1,   750,   751,    -1,    -1,   586,    -1,
    3448       -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,    -1,
    3449       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3450       20,    21,    22,    23,    24,    25,    26,    27,  1056,    -1,
    3451       30,    31,    32,    -1,  1062,    -1,    -1,    -1,   794,    39,
    3452       -1,    -1,    -1,    -1,  1531,    -1,   802,    -1,    -1,    -1,
    3453       -1,    -1,   640,   809,   810,    -1,    -1,   813,    -1,   815,
    3454      648,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1096,   825,
    3455       -1,    -1,    72,  1101,    74,    75,    76,    -1,    -1,    -1,
    3456       -1,  1109,    -1,    83,    84,    -1,    10,    11,    12,    13,
    3457       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3458       24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
    3459       -1,   111,    -1,    -1,  1142,    39,    -1,   117,   118,    -1,
    3460       -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    -1,  1157,
    3461       -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3462       -1,   897,    -1,    67,    -1,  1173,  1174,    -1,   904,   905,
    3463      906,    -1,   908,    -1,    78,    -1,   912,    -1,   746,    -1,
    3464      748,    -1,    -1,    -1,    -1,    -1,    -1,  1195,    -1,    -1,
    3465      758,    -1,    -1,    -1,    -1,    -1,   764,   933,   934,    -1,
    3466       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3467       20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3469       -1,    -1,   968,    -1,  1242,    -1,    -1,    -1,   806,   807,
    3470       -1,    -1,   810,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3471       -1,    40,    -1,   989,   990,    -1,   824,    67,    -1,    -1,
    3472       -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    78,    -1,
    3473     1006,  1007,    -1,  1009,  1010,  1011,    -1,    66,    -1,    -1,
    3474       -1,    -1,    -1,    72,    -1,  1021,  1022,    76,    -1,    -1,
    3475       79,    80,    81,    82,    83,    84,   864,    86,    87,    -1,
    3476      868,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1317,
    3477       -1,  1319,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3478      109,    -1,   111,  1331,    -1,  1333,    -1,   116,   117,   118,
    3479      119,   120,   121,   122,    -1,    -1,    -1,   905,    -1,    -1,
    3480       -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,  1084,    -1,
    3481     1086,    -1,    -1,    -1,    -1,  1091,    -1,    -1,  1366,  1367,
    3482       -1,    -1,    -1,    -1,  1100,    -1,    -1,    -1,    -1,  1377,
    3483       -1,    -1,  1380,    -1,    -1,    -1,   944,    -1,    -1,    -1,
    3484       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,  1125,
    3485       -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,    -1,    -1,
    3486       -1,    -1,  1410,    -1,   972,  1413,    -1,  1415,  1416,  1417,
    3487      978,  1147,    -1,    -1,   982,    37,    38,    -1,    40,    -1,
    3488       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3489       -1,    -1,    -1,    -1,    -1,  1003,    -1,    -1,    -1,    -1,
    3490       -1,    -1,    -1,    -1,    66,    -1,  1014,  1455,    -1,  1457,
    3491       72,  1459,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3492       82,    83,    84,    -1,    86,    87,  1474,    -1,  1036,    -1,
    3493     1038,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,    -1,    -1,  1053,  1054,   109,    -1,   111,
    3495     1226,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
    3496      122,    -1,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
     3551      72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3552      -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
     3553      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   132,
    34973554      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    34983555       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3499       19,    20,    21,    22,    23,    24,    25,    26,    27,  1275,
    3500     1276,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
    3501       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3502       -1,  1129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3503       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1147,
    3504       69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
    3505       -1,    -1,    -1,    -1,  1162,  1163,    -1,     3,     4,     5,
    3506        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3507       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3508       26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
    3509       36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
    3510       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3511       -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1395,
    3512       66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
    3513       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3514       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3556      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3557      -1,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
     3558      39,    40,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3559      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3560      25,    26,    27,    28,    -1,    -1,    -1,    66,    67,    -1,
     3561      69,    -1,    71,    72,    39,    74,    75,    76,    -1,  1519,
     3562      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    35153563      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3516       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    3517       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
    3518       -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
    3519       -1,    -1,    -1,    -1,    -1,  1303,    -1,    -1,  1306,    -1,
    3520       -1,    -1,    -1,    -1,    -1,    -1,  1482,    -1,    -1,    -1,
    3521       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3522       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3523     1506,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3525       -1,    -1,    -1,    -1,    -1,  1531,     3,     4,     5,     6,
    3526        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3527       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3528       27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
    3529       37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
    3530       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3531       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
    3532       67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
    3533       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3534       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3535       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3536       -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
    3537      117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
    3538        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3539       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3540       -1,    -1,    30,    31,    32,    -1,    -1,    -1,  1516,    37,
    3541       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3542       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3543       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3544       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3545       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3546       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3547       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3548       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,
    3549      118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
    3550        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3551       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3552       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
    3553       39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
    3554       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3555       -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
    3556       69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3557       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3558       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3559       -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
    3560      109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,
     3564      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3565     109,    -1,   111,    78,    -1,    -1,    -1,    -1,   117,   118,
    35613566     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
    35623567      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    35653570      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    35663571      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3567       -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
     3572      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    69,
    35683573      39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    35693574      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    35703575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3571       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3576      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
    35723577      -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
    35733578     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
     
    35753580      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    35763581      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3577       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3578       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3582      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3583      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3584      30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
    35803585      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    35813586      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3582       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3584      111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3587      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3588      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3589     111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
    35853590     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    35863591      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     
    35943599      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35953600      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3596       -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
     3601      -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,   121,
    35973602     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    35983603      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     
    36183623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36193624      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3620       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     0,
    3621       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3622       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3623       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3624       31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,
     3625      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
     3626       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3627      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3628      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3629      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    36253630      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36263631      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3627       -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,
    3628       71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
    3629       -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3632      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3633      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3634      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36303635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3632      111,    -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,
    3633        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3634       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3635       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3636       -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
    3637       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3638       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
    3639       -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3640       75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3636      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3637      -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
     3638       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3639      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3640      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3641      -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    36413642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36423643      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3644      115,    -1,   117,   118,     3,     4,     5,     6,     7,     8,
    3645        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3646       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3647       -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
    3648       39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3644      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3645      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3646      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36493647      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3650       -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
    3651       69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3652       -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
     3648      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3649      -1,   117,   118,   119,   120,   121,   122,     3,     4,     5,
     3650       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3651      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3652      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3653      -1,    -1,    -1,    39,    -1,    10,    11,    12,    13,    14,
     3654      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3655      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    34,
     3656      35,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3657      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3659      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3660      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3661      -1,   117,   118,     3,     4,     5,     6,     7,     8,     9,
     3662      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3663      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3664      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
    36533665      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36543666      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655      109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3656        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3657       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3658       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3659       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    10,    11,
    3660       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3661       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3662       32,    33,    34,    35,    67,    -1,    69,    39,    71,    72,
    3663       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3667       -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,     6,
    3668        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3669       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3670       27,    28,    -1,    30,    31,    32,    33,    -1,    -1,    36,
    3671       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3672       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3673       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3674       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3675       -1,    78,     4,     5,     6,     7,     8,     9,    10,    11,
    3676       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3677       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3678       32,    -1,    -1,    -1,   111,    -1,    -1,    39,    -1,    -1,
    3679      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3680       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3681       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3682       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
    3683       -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3684       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3686       -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
    3687        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3688       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3689       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3690       -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,
    3691       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3692       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3693       67,    -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,
     3667      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3668      -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,     3,
    36943669       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    36953670      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3696       24,    25,    26,    27,    67,    -1,    30,    31,    32,    -1,
    3697       -1,    74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,
    3698      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3699       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,
    3701       74,    75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3702       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3703       -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3705       -1,    -1,    -1,   117,   118,     4,     5,     6,     7,     8,
    3706        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3707       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3708       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3709       39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3710       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3711       26,    27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,
    3712       69,    -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,
    3713       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3714       -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
    3715       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    3716       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3717        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3718       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3719       24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
    3720       -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,
     3671      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
     3672      -1,   111,    36,    -1,    -1,    39,    -1,   117,   118,    -1,
    37213673      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37223674      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37233675      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3724       74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
     3676      74,    75,     3,     4,     5,     6,     7,     8,     9,    10,
    37253677      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    37263678      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     
    37363688      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37373689      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3738       -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,
     3690      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3691      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
     3692      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3695     118,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3696      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3697      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3698      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
     3699      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3700      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3701      -1,    30,    31,    32,    67,    -1,    69,    -1,    71,    -1,
     3702      39,    74,    75,    -1,     4,     5,     6,     7,     8,     9,
     3703      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3704      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
     3705      30,    31,    32,    -1,    -1,    74,    75,   110,   111,    39,
     3706      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3708      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3709     109,    71,   111,    -1,    74,    75,    -1,    -1,   117,   118,
     3710      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3711      -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
     3712      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3713      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
    37393714       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    37403715      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37413716      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3742       -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,
    3743      118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
     3718      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3719      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3720      32,    -1,    67,    -1,    69,    -1,    71,    39,    40,    74,
     3721      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37443722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3745       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3746       75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3747       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3748       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
    3749       39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3750       -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3751       -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
    3752       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3753       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3723      -1,    96,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3724      -1,    -1,    74,    75,    -1,    -1,   111,    -1,    -1,    -1,
     3725      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3726      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3727      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
     3728      30,    31,    32,   115,    -1,   117,   118,    -1,    -1,    39,
    37543729      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37553730      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3756      109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3731      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3732      -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,     6,
     3733       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3734      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3735      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3736      -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,
     3737      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3738      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3739      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3740       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3741      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3742      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3743      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
     3744     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3745      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3746      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3747      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
     3748      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3749      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3750      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
     3751      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3752      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3753      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3754      71,    -1,    -1,    74,    75,    10,    11,    12,    13,    14,
     3755      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3756      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3757      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3758     111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
     3759      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3760      -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3761      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3762      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3764      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3765      -1,    -1,   117,   118,   119,   120,   121,   122,    10,    11,
     3766      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3767      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3768      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
     3769      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3770      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3771      31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,
     3772      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3773      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3774      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3775      -1,    72,    -1,    74,    75,    76,    -1,   109,   110,   111,
     3776      -1,    -1,    83,    84,    -1,   117,   118,   119,   120,   121,
     3777     122,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3778      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3779     111,    30,    31,    32,    -1,    -1,   117,   118,    37,    38,
     3780      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3781      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3782      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
     3783      -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3784      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3785      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3786      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    -1,
     3787     109,    -1,   111,    -1,    -1,    83,    84,    -1,   117,   118,
    37573788     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
    37583789      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3759       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3760       -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3790      26,    27,    -1,   111,    30,    31,    32,    -1,    -1,   117,
     3791     118,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    37613792      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37623793      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3763       66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
     3794      66,    67,    -1,    -1,    39,    40,    72,    -1,    74,    75,
    37643795      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    37653796      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3766       -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3767       75,    76,    -1,   109,   110,   111,    -1,    -1,    83,    84,
     3797      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3798      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    37683799      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
    37693800      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    37703801      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
    3771       -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
     3802     115,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
    37723803      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    37733804      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3774       32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,
     3805      32,    -1,    -1,    66,    67,    -1,    -1,    39,    40,    72,
    37753806      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    37763807      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    37773808      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3778       72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3779       -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
     3809      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3810      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    37803811      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    37813812      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
    3782       30,    31,    32,    -1,    -1,   117,   118,    37,    38,    39,
    3783       40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3813      30,    31,    32,   115,    -1,   117,   118,    37,    38,    39,
     3814      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,
     3815      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3816      22,    23,    24,    25,    26,    27,    66,    67,    30,    31,
     3817      32,    -1,    72,    -1,    74,    75,    76,    39,    -1,    79,
     3818      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3820      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   109,
     3821      -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,   119,
     3822     120,   121,   122,     3,     4,     5,     6,     7,     8,     9,
     3823      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3824      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
     3825      30,    31,    32,    -1,    -1,   117,   118,    -1,    -1,    39,
     3826      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3827      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3828      27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
     3829      -1,    71,    39,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3830      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37843831      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3785       -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
    3786       39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    3787       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3788       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3789       -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
    3790       -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
    3791      120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
    3792       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3793       27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
    3794       37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
    3795       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3796       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
    3797       67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
    3798       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3799       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    3801       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3802      117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
     3832      67,    30,    31,    32,    -1,    72,    -1,    74,    75,    76,
     3833      39,    -1,    -1,    -1,   114,    -1,    83,    84,    -1,    10,
     3834      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3835      21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
     3836      31,    32,   109,    72,   111,    74,    75,    76,    39,    -1,
     3837     117,   118,    -1,    -1,    83,    84,    -1,    10,    11,    12,
     3838      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3839      23,    24,    25,    26,    27,    28,    67,    30,    31,    32,
     3840     109,    72,   111,    74,    75,    76,    39,    -1,   117,   118,
     3841      -1,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
     3842      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3843      25,    26,    27,    28,    67,    30,    31,    32,   109,    -1,
     3844     111,    74,    75,    -1,    39,    78,   117,   118,    10,    11,
     3845      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3846      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3847      32,    -1,    67,    -1,    -1,    -1,   109,    39,   111,    74,
     3848      75,    -1,    -1,    78,   117,   118,    10,    11,    12,    13,
    38033849      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3804       24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
    3805       -1,   117,   118,    37,    38,    39,    40,    -1,    -1,    -1,
    3806       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3807       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3808       26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
    3809       74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
    3810       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3811       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3812       -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
    3813       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     3,
    3814        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3815       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3816       24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
    3817       -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,
    3818       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3819       21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
    3820       31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
    3821       74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3822       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3823       23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
    3824       -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
    3825      114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
    3826       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3827       25,    26,    27,    28,    67,    30,    31,    32,    -1,    72,
    3828      111,    74,    75,    76,    39,    -1,   117,   118,    -1,    -1,
    3829       83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
    3830       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3831       27,    -1,    67,    30,    31,    32,   109,    -1,   111,    74,
    3832       75,    -1,    39,    78,   117,   118,    10,    11,    12,    13,
    3833       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3834       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3835       67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,
     3850      24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
     3851      -1,    -1,    74,    75,    -1,    39,   111,    -1,    -1,    -1,
    38363852      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
    38373853      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3838       26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
    3839       74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,
    3840      117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
    3841       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3842       -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
    3843       -1,    39,    -1,   117,   118,    10,    11,    12,    13,    14,
     3854      26,    27,    -1,    67,    30,    31,    32,    -1,    -1,   111,
     3855      74,    75,    -1,    39,    -1,   117,   118,    10,    11,    12,
     3856      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3857      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3858      -1,    67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,
     3859      -1,    -1,    -1,   117,   118,    10,    11,    12,    13,    14,
    38443860      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3845       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
    3846       -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,    -1,
     3861      25,    26,    27,    -1,    67,    30,    31,    32,    -1,    -1,
     3862      -1,    74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,
    38473863      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
    38483864      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3849       27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
    3850       75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3851      118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3852       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3853       67,    30,    31,    32,    -1,    -1,   111,    74,    75,    -1,
    3854       39,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
    3855       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3856       20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
    3857       30,    31,    32,    -1,   111,    74,    75,    -1,    -1,    39,
    3858      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3865      27,    -1,    67,    30,    31,    32,    -1,    -1,   111,    74,
     3866      75,    -1,    39,    -1,   117,   118,     4,     5,     6,     7,
     3867       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3868      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3869      67,    -1,    30,    31,    32,    -1,   111,    74,    75,    -1,
     3870      -1,    39,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    38593871      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3860       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3861       -1,    71,    -1,    -1,    74,    75,    -1,    -1,   117,   118,
    3862       37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,
    3863       47,    48,    49,    50,    51,    52,    53,    -1,    -1,    56,
     3872      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3873      -1,    69,    -1,    71,   111,    -1,    74,    75,    -1,    -1,
     3874     117,   118,    37,    38,    -1,    40,    41,    -1,    43,    -1,
     3875      -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3876      -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
     3877      -1,    66,   110,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3878      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3879      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3880      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3881      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3882      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3883      37,    38,   127,    40,    41,    -1,    43,   132,    -1,    46,
     3884      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
    38643885      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
    3865      110,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3886      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    38663887      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    38673888      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38683889      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38693890      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
    3870      117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
    3871      127,    40,    41,    -1,    43,   132,    -1,    46,    47,    48,
    3872       49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
    3873       -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
    3874       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3875       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3891     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
     3892     127,    -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,
     3893       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3894      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3895      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3896      -1,    39,    -1,    37,    38,    -1,    40,    41,    -1,    43,
     3897      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     3898      -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,
     3899      64,    69,    66,    71,    -1,    -1,    74,    75,    72,    -1,
     3900      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3901      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,
    38763902      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3877       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3878      109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
    3879      119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,
    3880       -1,    -1,    -1,   132,     4,     5,     6,     7,     8,     9,
    3881       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3882       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3883       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3884       -1,    37,    38,    -1,    40,    41,    -1,    43,    44,    45,
     3903      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3904     114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     3905      -1,    37,    38,   127,    40,    41,    -1,    43,    44,    45,
    38853906      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3886       56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
    3887       66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
     3907      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
     3908      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    38883909      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3889       86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
     3910      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38903911      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38913912      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    38923913      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
    3893       38,   127,    40,    41,    -1,    43,    44,    45,    46,    47,
     3914      38,   127,    40,    41,    -1,    43,    -1,    -1,    46,    47,
    38943915      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
    38953916      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
    38963917      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    38973918      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3919      -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
     3920      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3921      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
     3922     118,   119,   120,   121,   122,    66,    -1,    -1,    -1,   127,
     3923      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     3924      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3925      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     3926      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3927     111,    -1,    37,    38,    -1,    40,   117,   118,   119,   120,
     3928     121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     3929      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3930      84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,    -1,
     3931      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3932      -1,    86,    87,    -1,    -1,   109,    -1,   111,    -1,    37,
     3933      38,    -1,    40,   117,   118,   119,   120,   121,   122,    -1,
     3934      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
     3935      -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
     3936      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3937      -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
     3938      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3939      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3940      -1,   109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,
     3941     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
     3942     109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
     3943     119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
     3944      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     3945      82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
     3946      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3947      83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
     3948      -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
     3949     122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3950      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3951       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3952      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3953      24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
     3954      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    38983955      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38993956      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3900       -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
    3901      118,   119,   120,   121,   122,    -1,    -1,    37,    38,   127,
    3902       40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
    3903       50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
    3904       -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
    3905       -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3906       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3907       -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
    3908       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3909       -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
    3910      120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,    72,
    3911       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3912       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3913       -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    3914       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3915       -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3916       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    3917       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3918       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3919       -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3920       -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
    3921       40,   117,   118,   119,   120,   121,   122,    66,    -1,    -1,
    3922       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3923       79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
    3924       -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3925       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3926      109,    -1,   111,    -1,    37,    38,    -1,    40,   117,   118,
    3927      119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,
    3928       -1,   111,    -1,    37,    38,    -1,    40,   117,   118,   119,
    3929      120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
    3930       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3931       83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
    3932       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3933       84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,    -1,
    3934       37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
    3935       -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    37,
    3936       38,    -1,    40,   117,   118,   119,   120,   121,   122,    66,
    3937       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3938       -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
    3939       87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3940       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3941       -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3942      117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
    3943       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    3944      118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3957      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
     3958      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3959      84,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3960      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3961      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3962      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     3963      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3964      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3965      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3966      -1,    -1,    74,    75,     3,     4,     5,     6,     7,     8,
    39453967       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    39463968      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3947       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3969      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    39483970      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39493971      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39503972      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3951       69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3952       -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,     6,
     3973      69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
    39533974       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39543975      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    39573978      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39583979      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3959       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
    3960        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3961       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3962       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3963       -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    3964       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3965       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3966       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3967       74,    75,     4,     5,     6,     7,     8,     9,    10,    11,
    3968       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3969       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3970       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3971       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3972       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3973       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3974       -1,    -1,    74,    75
     3980      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75
    39753981};
    39763982
     
    39833989      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    39843990      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    3985       76,    83,    84,   109,   111,   117,   118,   137,   140,   150,
    3986      199,   213,   214,   215,   216,   217,   218,   219,   220,   221,
    3987      222,   223,   224,   225,   226,   227,   228,   229,   230,   232,
    3988      233,   234,   235,   236,   237,   238,   240,   241,   242,   243,
    3989      244,   245,   247,   255,   256,   283,   284,   285,   293,   296,
    3990      302,   303,   305,   307,   308,   314,   319,   323,   324,   325,
    3991      326,   327,   328,   329,   330,   350,   367,   368,   369,   370,
    3992       72,   139,   140,   150,   216,   218,   226,   228,   237,   241,
    3993      243,   284,    82,   109,   312,   313,   314,   312,   312,    72,
    3994       74,    75,    76,   138,   139,   273,   274,   294,   295,    74,
    3995       75,   274,   109,   305,    11,   200,   109,   150,   319,   324,
    3996      325,   326,   328,   329,   330,   112,   134,   111,   219,   226,
    3997      228,   323,   327,   366,   367,   370,   371,   135,   107,   131,
    3998      277,   114,   135,   174,    74,    75,   137,   272,   135,   135,
    3999      135,   116,   135,    74,    75,   109,   150,   309,   318,   319,
    4000      320,   321,   322,   323,   327,   331,   332,   333,   334,   335,
    4001      341,     3,    28,    78,   239,     3,     5,    74,   111,   150,
    4002      218,   229,   233,   235,   244,   285,   323,   327,   370,   216,
    4003      218,   228,   237,   241,   243,   284,   323,   327,    33,   234,
    4004      234,   229,   235,   135,   234,   229,   234,   229,    75,   109,
    4005      114,   274,   285,   114,   274,   234,   229,   116,   135,   135,
    4006        0,   134,   109,   174,   312,   312,   134,   111,   226,   228,
    4007      368,   272,   272,   131,   228,   109,   150,   309,   319,   323,
    4008      111,   150,   370,   306,   231,   314,   109,   290,   109,   109,
     3991      76,    83,    84,   109,   111,   117,   118,   137,   140,   151,
     3992     200,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     3993     223,   224,   225,   226,   227,   228,   229,   230,   231,   233,
     3994     234,   235,   236,   237,   238,   239,   241,   242,   243,   244,
     3995     245,   246,   248,   256,   257,   284,   285,   286,   294,   297,
     3996     303,   304,   306,   308,   309,   315,   320,   324,   325,   326,
     3997     327,   328,   329,   330,   331,   351,   368,   369,   370,   371,
     3998      72,   139,   140,   151,   217,   219,   227,   229,   238,   242,
     3999     244,   285,    82,   109,   313,   314,   315,   313,   313,    72,
     4000      74,    75,    76,   138,   139,   274,   275,   295,   296,    74,
     4001      75,   275,   109,   306,    11,   201,   109,   151,   320,   325,
     4002     326,   327,   329,   330,   331,   112,   134,   111,   220,   227,
     4003     229,   324,   328,   367,   368,   371,   372,   135,   107,   131,
     4004     278,   114,   135,   175,    74,    75,   137,   273,   135,   135,
     4005     135,   116,   135,    74,    75,   109,   151,   310,   319,   320,
     4006     321,   322,   323,   324,   328,   332,   333,   334,   335,   336,
     4007     342,     3,    28,    78,   240,     3,     5,    74,   111,   151,
     4008     219,   230,   234,   236,   245,   286,   324,   328,   371,   217,
     4009     219,   229,   238,   242,   244,   285,   324,   328,    33,   235,
     4010     235,   230,   236,   135,   235,   230,   235,   230,    75,   109,
     4011     114,   275,   286,   114,   275,   235,   230,   116,   135,   135,
     4012       0,   134,   109,   175,   313,   313,   134,   111,   227,   229,
     4013     369,   273,   273,   131,   229,   109,   151,   310,   320,   324,
     4014     111,   151,   371,   307,   232,   315,   109,   291,   109,   109,
    40094015      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
    40104016      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
    4011      136,   140,   141,   142,   143,   144,   149,   150,   151,   152,
    4012      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
    4013      163,   165,   168,   226,   276,   292,   366,   371,   228,   110,
    4014      110,   110,   110,   110,   110,   110,    74,    75,   111,   226,
    4015      272,   350,   368,   111,   117,   150,   165,   218,   219,   225,
    4016      228,   232,   233,   237,   240,   241,   243,   262,   263,   267,
    4017      268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
    4018      371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
    4019      114,   150,   165,   278,   278,   115,   134,   116,   132,   109,
    4020      116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
    4021      321,   322,   332,   333,   334,   335,   228,   318,   331,    64,
    4022      311,   111,   312,   349,   350,   312,   312,   174,   134,   109,
    4023      312,   349,   312,   312,   228,   309,   109,   109,   227,   228,
    4024      226,   228,   112,   134,   226,   366,   371,   174,   134,   272,
    4025      277,   218,   233,   323,   327,   174,   134,   294,   228,   237,
    4026      132,   228,   228,   292,   248,   246,   258,   274,   257,   228,
    4027      294,   132,   132,   305,   134,   139,   271,     3,   135,   208,
    4028      209,   223,   225,   228,   134,   311,   109,   311,   165,   319,
    4029      228,   109,   134,   272,   114,    33,    34,    35,   226,   286,
    4030      287,   289,   134,   128,   131,   291,   134,   229,   234,   235,
    4031      272,   315,   316,   317,   109,   141,   109,   149,   109,   149,
    4032      152,   109,   149,   109,   109,   149,   149,   111,   165,   170,
    4033      174,   226,   275,   366,   370,   112,   134,    82,    85,    86,
     4017     136,   140,   141,   142,   143,   144,   150,   151,   152,   153,
     4018     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
     4019     164,   166,   169,   227,   277,   293,   367,   372,   229,   110,
     4020     110,   110,   110,   110,   110,   110,    74,    75,   111,   227,
     4021     273,   351,   369,   111,   117,   151,   166,   219,   220,   226,
     4022     229,   233,   234,   238,   241,   242,   244,   263,   264,   268,
     4023     269,   270,   271,   285,   351,   363,   364,   365,   366,   371,
     4024     372,   112,   109,   324,   328,   371,   109,   116,   132,   111,
     4025     114,   151,   166,   279,   279,   115,   134,   116,   132,   109,
     4026     116,   132,   116,   132,   116,   132,   313,   132,   320,   321,
     4027     322,   323,   333,   334,   335,   336,   229,   319,   332,    64,
     4028     312,   111,   313,   350,   351,   313,   313,   175,   134,   109,
     4029     313,   350,   313,   313,   229,   310,   109,   109,   228,   229,
     4030     227,   229,   112,   134,   227,   367,   372,   175,   134,   273,
     4031     278,   219,   234,   324,   328,   175,   134,   295,   229,   238,
     4032     132,   229,   229,   293,   249,   247,   259,   275,   258,   229,
     4033     295,   132,   132,   306,   134,   139,   272,     3,   135,   209,
     4034     210,   224,   226,   229,   134,   312,   109,   312,   166,   320,
     4035     229,   109,   134,   273,   114,    33,    34,    35,   227,   287,
     4036     288,   290,   134,   128,   131,   292,   134,   230,   235,   236,
     4037     273,   316,   317,   318,   109,   141,   109,   150,   109,   150,
     4038     153,   109,   150,   109,   109,   150,   150,   111,   166,   171,
     4039     175,   227,   276,   367,   371,   112,   134,    82,    85,    86,
    40344040      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4035      102,   103,   104,   105,   106,   107,   131,   167,   152,   152,
     4041     102,   103,   104,   105,   106,   107,   131,   168,   153,   153,
    40364042     117,   123,   124,   119,   120,    88,    89,    90,    91,   125,
    40374043     126,    92,    93,   118,   127,   128,    94,    95,   129,   131,
    4038      373,   109,   150,   345,   346,   347,   348,   349,   110,   116,
    4039      109,   349,   350,   109,   349,   350,   134,   109,   226,   368,
    4040      112,   134,   135,   111,   226,   228,   361,   362,   370,   371,
    4041      135,   109,   111,   150,   319,   336,   337,   338,   339,   340,
    4042      341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
    4043      356,   150,   370,   228,   135,   135,   150,   226,   228,   363,
    4044      272,   226,   350,   363,   272,   109,   134,   134,   134,   112,
    4045      134,    72,   111,   113,   140,   274,   278,   279,   280,   281,
    4046      282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
    4047      110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
    4048      208,   134,   309,   170,   276,   170,   276,   309,   111,   208,
    4049      311,   174,   134,   208,   110,    40,   111,   115,   226,   249,
    4050      250,   251,   366,   114,   116,   372,   131,   259,   114,   228,
    4051      264,   265,   266,   269,   270,   110,   116,   174,   134,   117,
    4052      165,   134,   225,   228,   263,   362,   370,   303,   304,   109,
    4053      150,   336,   110,   116,   373,   274,   286,   109,   114,   274,
    4054      276,   286,   110,   116,   109,   141,   110,   130,   275,   275,
    4055      275,   146,   165,   276,   275,   112,   134,   110,   116,   110,
    4056      109,   150,   349,   357,   358,   359,   360,   110,   116,   165,
    4057      111,   139,   145,   146,   134,   111,   139,   145,   165,   152,
    4058      152,   152,   153,   153,   154,   154,   155,   155,   155,   155,
    4059      156,   156,   157,   158,   159,   160,   161,   130,   170,   165,
    4060      134,   346,   347,   348,   228,   345,   312,   312,   165,   276,
    4061      134,   271,   134,   226,   350,   363,   228,   232,   112,   112,
    4062      134,   370,   112,   109,   134,   319,   337,   338,   339,   342,
    4063      352,   353,   354,   112,   134,   228,   336,   340,   351,   109,
    4064      312,   355,   373,   312,   312,   373,   109,   312,   355,   312,
    4065      312,   312,   312,   350,   226,   361,   371,   272,   112,   116,
    4066      112,   116,   373,   226,   363,   373,   260,   261,   262,   263,
    4067      260,   260,   272,   165,   134,   111,   274,   130,   116,   372,
    4068      278,   111,   130,   282,    29,   210,   211,   272,   260,   139,
    4069      309,   139,   311,   109,   349,   350,   109,   349,   350,   142,
    4070      350,   174,   264,   110,   110,   110,   110,   112,   174,   208,
    4071      174,   114,   250,   251,   112,   134,   109,   130,   150,   252,
    4072      254,   318,   319,   331,   357,   116,   132,   116,   132,   274,
    4073      248,   274,   115,   163,   164,   258,   135,   135,   139,   223,
    4074      135,   135,   260,   109,   150,   370,   135,   115,   228,   287,
    4075      288,   135,   134,   134,   109,   135,   110,   316,   170,   171,
    4076      130,   132,   111,   141,   201,   202,   203,   110,   116,   110,
    4077      110,   110,   110,   111,   165,   358,   359,   360,   228,   357,
    4078      312,   312,   114,   152,   168,   165,   166,   169,   116,   135,
    4079      134,   110,   116,   165,   134,   115,   163,   130,   264,   110,
    4080      110,   110,   345,   264,   110,   260,   226,   363,   111,   117,
    4081      150,   165,   165,   228,   342,   264,   110,   110,   110,   110,
    4082      110,   110,   110,     7,   228,   336,   340,   351,   134,   134,
    4083      373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
    4084      163,   164,   165,   310,   134,   278,   280,   115,   134,   212,
    4085      274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
    4086       52,    53,    57,    61,    62,    72,   111,   127,   171,   172,
    4087      173,   174,   175,   176,   178,   179,   191,   193,   194,   199,
    4088      213,   308,    29,   135,   131,   277,   134,   134,   110,   135,
    4089      174,   248,   132,   132,   319,   164,   228,   253,   254,   253,
    4090      274,   312,   115,   259,   372,   110,   116,   112,   112,   135,
    4091      228,   116,   373,   290,   110,   286,   216,   218,   226,   298,
    4092      299,   300,   301,   292,   110,   110,   130,   164,   109,   110,
    4093      130,   116,   139,   112,   110,   110,   110,   357,   279,   116,
    4094      135,   169,   112,   139,   147,   148,   146,   135,   147,   163,
    4095      168,   135,   109,   349,   350,   135,   135,   134,   135,   135,
    4096      135,   165,   110,   135,   109,   349,   350,   109,   355,   109,
    4097      355,   350,   227,     7,   117,   135,   165,   264,   264,   263,
    4098      267,   267,   268,   116,   116,   110,   110,   112,    96,   122,
    4099      135,   135,   147,   278,   165,   116,   132,   213,   217,   228,
    4100      232,   109,   109,   172,   109,   109,    72,   132,    72,   132,
    4101       72,   117,   171,   109,   174,   166,   166,   130,   112,   144,
    4102      132,   135,   134,   135,   212,   110,   165,   264,   264,   312,
    4103      110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
    4104      134,   135,   135,   110,   114,   201,   112,   164,   132,   201,
    4105      203,   110,   109,   349,   350,   372,   166,   112,   135,    85,
    4106      113,   116,   135,   112,   135,   110,   134,   110,   110,   112,
    4107      112,   112,   135,   110,   134,   134,   134,   165,   165,   135,
    4108      112,   135,   135,   135,   135,   134,   134,   164,   164,   112,
    4109      112,   135,   135,   274,   228,   170,   170,    47,   170,   134,
    4110      132,   132,   132,   170,   132,   170,    58,    59,    60,   195,
    4111      196,   197,   132,    63,   132,   312,   114,   176,   115,   132,
    4112      135,   135,    96,   269,   270,   110,   299,   116,   132,   116,
    4113      132,   115,   297,   130,   141,   110,   110,   130,   134,   115,
    4114      112,   111,   148,   111,   148,   148,   112,   112,   264,   112,
    4115      264,   264,   264,   135,   135,   112,   112,   110,   110,   112,
    4116      116,    96,   263,    96,   135,   112,   112,   110,   110,   109,
    4117      110,   171,   192,   213,   132,   110,   109,   109,   174,   197,
    4118       58,    59,   165,   172,   145,   110,   110,   114,   134,   134,
    4119      298,   141,   204,   109,   132,   204,   264,   134,   134,   135,
    4120      135,   135,   135,   112,   112,   134,   135,   112,   172,    44,
    4121       45,   114,   182,   183,   184,   170,   172,   135,   110,   171,
    4122      114,   184,    96,   134,    96,   134,   109,   109,   132,   115,
    4123      134,   272,   309,   115,   116,   130,   164,   110,   135,   147,
    4124      147,   110,   110,   110,   110,   267,    42,   164,   180,   181,
    4125      310,   130,   134,   172,   182,   110,   132,   172,   132,   134,
    4126      110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
    4127      141,   139,   205,   110,   132,   110,   135,   135,   172,    96,
    4128      116,   130,   135,   206,   207,   213,   132,   171,   171,   206,
    4129      174,   198,   226,   366,   174,   198,   110,   134,   110,   134,
    4130      115,   110,   116,   112,   112,   164,   180,   183,   185,   186,
    4131      134,   132,   183,   187,   188,   135,   109,   150,   309,   357,
    4132      139,   135,   174,   198,   174,   198,   109,   132,   139,   172,
    4133      177,   115,   183,   213,   171,    56,   177,   190,   115,   183,
    4134      110,   228,   110,   135,   135,   292,   172,   177,   132,   189,
    4135      190,   177,   190,   174,   174,   110,   110,   110,   189,   135,
    4136      135,   174,   174,   135,   135
     4044     374,   109,   151,   346,   347,   348,   349,   350,   110,   116,
     4045     109,   350,   351,   109,   350,   351,   134,   109,   227,   369,
     4046     112,   134,   135,   111,   227,   229,   362,   363,   371,   372,
     4047     135,   109,   111,   151,   320,   337,   338,   339,   340,   341,
     4048     342,   343,   344,   345,   351,   352,   353,   354,   355,   356,
     4049     357,   151,   371,   229,   135,   135,   151,   227,   229,   364,
     4050     273,   227,   351,   364,   273,   109,   134,   134,   134,   112,
     4051     134,    72,   111,   113,   140,   275,   279,   280,   281,   282,
     4052     283,   134,   134,   134,   134,   134,   134,   310,   110,   110,
     4053     110,   110,   110,   110,   110,   319,   332,   109,   278,   112,
     4054     209,   134,   310,   171,   277,   171,   277,   310,   111,   209,
     4055     312,   175,   134,   209,   110,    40,   111,   115,   227,   250,
     4056     251,   252,   367,   114,   116,   373,   131,   260,   114,   229,
     4057     265,   266,   267,   270,   271,   110,   116,   175,   134,   117,
     4058     166,   134,   226,   229,   264,   363,   371,   304,   305,   109,
     4059     151,   337,   110,   116,   374,   275,   287,   109,   114,   275,
     4060     277,   287,   110,   116,   109,   141,   110,   130,   276,   276,
     4061     276,   146,   166,   277,   276,   112,   134,   110,   116,   110,
     4062     109,   151,   350,   358,   359,   360,   361,   110,   116,   166,
     4063     111,   139,   145,   146,   134,    79,   111,   139,   145,   166,
     4064     153,   153,   153,   154,   154,   155,   155,   156,   156,   156,
     4065     156,   157,   157,   158,   159,   160,   161,   162,   130,   171,
     4066     166,   134,   347,   348,   349,   229,   346,   313,   313,   166,
     4067     277,   134,   272,   134,   227,   351,   364,   229,   233,   112,
     4068     112,   134,   371,   112,   109,   134,   320,   338,   339,   340,
     4069     343,   353,   354,   355,   112,   134,   229,   337,   341,   352,
     4070     109,   313,   356,   374,   313,   313,   374,   109,   313,   356,
     4071     313,   313,   313,   313,   351,   227,   362,   372,   273,   112,
     4072     116,   112,   116,   374,   227,   364,   374,   261,   262,   263,
     4073     264,   261,   261,   273,   166,   134,   111,   275,   130,   116,
     4074     373,   279,   111,   130,   283,    29,   211,   212,   273,   261,
     4075     139,   310,   139,   312,   109,   350,   351,   109,   350,   351,
     4076     142,   351,   175,   265,   110,   110,   110,   110,   112,   175,
     4077     209,   175,   114,   251,   252,   112,   134,   109,   130,   151,
     4078     253,   255,   319,   320,   332,   358,   116,   132,   116,   132,
     4079     275,   249,   275,   115,   164,   165,   259,   135,   135,   139,
     4080     224,   135,   135,   261,   109,   151,   371,   135,   115,   229,
     4081     288,   289,   135,   134,   134,   109,   135,   110,   317,   171,
     4082     172,   130,   132,   111,   141,   202,   203,   204,   110,   116,
     4083     110,   110,   110,   110,   111,   166,   359,   360,   361,   229,
     4084     358,   313,   313,   114,   153,   169,   166,   167,   170,   116,
     4085     135,   134,   110,   116,   166,   134,   115,   164,   130,   265,
     4086     110,   110,   110,   346,   265,   110,   261,   227,   364,   111,
     4087     117,   151,   166,   166,   229,   343,   265,   110,   110,   110,
     4088     110,   110,   110,   110,     7,   229,   337,   341,   352,   134,
     4089     134,   374,   134,   134,   110,   135,   135,   135,   135,   278,
     4090     135,   164,   165,   166,   311,   134,   279,   281,   115,   134,
     4091     213,   275,    40,    41,    43,    46,    47,    48,    49,    50,
     4092      51,    52,    53,    57,    61,    62,    72,   111,   127,   172,
     4093     173,   174,   175,   176,   177,   179,   180,   192,   194,   195,
     4094     200,   214,   309,    29,   135,   131,   278,   134,   134,   110,
     4095     135,   175,   249,   132,   132,   320,   165,   229,   254,   255,
     4096     254,   275,   313,   115,   260,   373,   110,   116,   112,   112,
     4097     135,   229,   116,   374,   291,   110,   287,   217,   219,   227,
     4098     299,   300,   301,   302,   293,   110,   110,   130,   165,   109,
     4099     110,   130,   116,   139,   112,   110,   110,   110,   358,   280,
     4100     116,   135,   170,   112,    79,   139,   147,   148,   149,   146,
     4101     135,   147,   164,   169,   135,   109,   350,   351,   135,   135,
     4102     134,   135,   135,   135,   166,   110,   135,   109,   350,   351,
     4103     109,   356,   109,   356,   351,   228,     7,   117,   135,   166,
     4104     265,   265,   264,   268,   268,   269,   116,   116,   110,   110,
     4105     112,    96,   122,   135,   135,   147,   279,   166,   116,   132,
     4106     214,   218,   229,   233,   109,   109,   173,   109,   109,    72,
     4107     132,    72,   132,    72,   117,   172,   109,   175,   167,   167,
     4108     130,   112,   144,   132,   135,   134,   135,   213,   110,   166,
     4109     265,   265,   313,   110,   115,   253,   115,   134,   110,   134,
     4110     135,   310,   115,   134,   135,   135,   110,   114,   202,   112,
     4111     165,   132,   202,   204,   110,   109,   350,   351,   373,   167,
     4112     112,   135,   116,   135,    85,   113,   112,   135,   110,   134,
     4113     110,   110,   112,   112,   112,   135,   110,   134,   134,   134,
     4114     166,   166,   135,   112,   135,   135,   135,   135,   134,   134,
     4115     165,   165,   112,   112,   135,   135,   275,   229,   171,   171,
     4116      47,   171,   134,   132,   132,   132,   171,   132,   171,    58,
     4117      59,    60,   196,   197,   198,   132,    63,   132,   313,   114,
     4118     177,   115,   132,   135,   135,    96,   270,   271,   110,   300,
     4119     116,   132,   116,   132,   115,   298,   130,   141,   110,   110,
     4120     130,   134,   115,   112,   148,   112,   111,   148,   111,   148,
     4121     112,   265,   112,   265,   265,   265,   135,   135,   112,   112,
     4122     110,   110,   112,   116,    96,   264,    96,   135,   112,   112,
     4123     110,   110,   109,   110,   172,   193,   214,   132,   110,   109,
     4124     109,   175,   198,    58,    59,   166,   173,   145,   110,   110,
     4125     114,   134,   134,   299,   141,   205,   109,   132,   205,   265,
     4126     134,   134,   135,   135,   135,   135,   112,   112,   134,   135,
     4127     112,   173,    44,    45,   114,   183,   184,   185,   171,   173,
     4128     135,   110,   172,   114,   185,    96,   134,    96,   134,   109,
     4129     109,   132,   115,   134,   273,   310,   115,   116,   130,   165,
     4130     110,   135,   147,   147,   110,   110,   110,   110,   268,    42,
     4131     165,   181,   182,   311,   130,   134,   173,   183,   110,   132,
     4132     173,   132,   134,   110,   134,   110,   134,    96,   134,    96,
     4133     134,   132,   299,   141,   139,   206,   110,   132,   110,   135,
     4134     135,   173,    96,   116,   130,   135,   207,   208,   214,   132,
     4135     172,   172,   207,   175,   199,   227,   367,   175,   199,   110,
     4136     134,   110,   134,   115,   110,   116,   112,   112,   165,   181,
     4137     184,   186,   187,   134,   132,   184,   188,   189,   135,   109,
     4138     151,   310,   358,   139,   135,   175,   199,   175,   199,   109,
     4139     132,   139,   173,   178,   115,   184,   214,   172,    56,   178,
     4140     191,   115,   184,   110,   229,   110,   135,   135,   293,   173,
     4141     178,   132,   190,   191,   178,   191,   175,   175,   110,   110,
     4142     110,   190,   135,   135,   175,   175,   135,   135
    41374143};
    41384144
     
    49714977
    49724978/* Line 1806 of yacc.c  */
    4973 #line 300 "parser.yy"
     4979#line 302 "parser.yy"
    49744980    { typedefTable.enterScope(); }
    49754981    break;
     
    49784984
    49794985/* Line 1806 of yacc.c  */
    4980 #line 304 "parser.yy"
     4986#line 306 "parser.yy"
    49814987    { typedefTable.leaveScope(); }
    49824988    break;
     
    49854991
    49864992/* Line 1806 of yacc.c  */
    4987 #line 311 "parser.yy"
     4993#line 313 "parser.yy"
    49884994    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    49894995    break;
     
    49924998
    49934999/* Line 1806 of yacc.c  */
    4994 #line 312 "parser.yy"
     5000#line 314 "parser.yy"
    49955001    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    49965002    break;
     
    49995005
    50005006/* Line 1806 of yacc.c  */
    5001 #line 313 "parser.yy"
     5007#line 315 "parser.yy"
    50025008    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    50035009    break;
     
    50065012
    50075013/* Line 1806 of yacc.c  */
    5008 #line 338 "parser.yy"
     5014#line 340 "parser.yy"
    50095015    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    50105016    break;
     
    50135019
    50145020/* Line 1806 of yacc.c  */
    5015 #line 342 "parser.yy"
     5021#line 344 "parser.yy"
    50165022    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    50175023    break;
     
    50205026
    50215027/* Line 1806 of yacc.c  */
    5022 #line 344 "parser.yy"
     5028#line 346 "parser.yy"
    50235029    {
    50245030                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    50315037
    50325038/* Line 1806 of yacc.c  */
    5033 #line 355 "parser.yy"
    5034     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    5035     break;
    5036 
    5037   case 20:
    5038 
    5039 /* Line 1806 of yacc.c  */
    50405039#line 357 "parser.yy"
    50415040    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50425041    break;
    50435042
     5043  case 20:
     5044
     5045/* Line 1806 of yacc.c  */
     5046#line 359 "parser.yy"
     5047    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     5048    break;
     5049
    50445050  case 21:
    50455051
    50465052/* Line 1806 of yacc.c  */
    5047 #line 359 "parser.yy"
     5053#line 361 "parser.yy"
    50485054    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50495055    break;
     
    50525058
    50535059/* Line 1806 of yacc.c  */
    5054 #line 361 "parser.yy"
     5060#line 363 "parser.yy"
    50555061    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50565062    break;
     
    50595065
    50605066/* Line 1806 of yacc.c  */
    5061 #line 371 "parser.yy"
     5067#line 373 "parser.yy"
    50625068    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50635069    break;
     
    50665072
    50675073/* Line 1806 of yacc.c  */
    5068 #line 373 "parser.yy"
     5074#line 375 "parser.yy"
    50695075    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50705076    break;
     
    50735079
    50745080/* Line 1806 of yacc.c  */
    5075 #line 377 "parser.yy"
     5081#line 379 "parser.yy"
    50765082    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50775083    break;
     
    50805086
    50815087/* Line 1806 of yacc.c  */
    5082 #line 379 "parser.yy"
     5088#line 381 "parser.yy"
    50835089    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50845090    break;
     
    50875093
    50885094/* Line 1806 of yacc.c  */
    5089 #line 381 "parser.yy"
     5095#line 383 "parser.yy"
     5096    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_constantInteger( *(yyvsp[(3) - (3)].tok) ) ) ); }
     5097    break;
     5098
     5099  case 29:
     5100
     5101/* Line 1806 of yacc.c  */
     5102#line 385 "parser.yy"
    50905103    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50915104    break;
    50925105
    5093   case 29:
    5094 
    5095 /* Line 1806 of yacc.c  */
    5096 #line 383 "parser.yy"
     5106  case 30:
     5107
     5108/* Line 1806 of yacc.c  */
     5109#line 387 "parser.yy"
    50975110    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50985111    break;
    50995112
    5100   case 30:
    5101 
    5102 /* Line 1806 of yacc.c  */
    5103 #line 385 "parser.yy"
     5113  case 31:
     5114
     5115/* Line 1806 of yacc.c  */
     5116#line 389 "parser.yy"
    51045117    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    51055118    break;
    51065119
    5107   case 31:
    5108 
    5109 /* Line 1806 of yacc.c  */
    5110 #line 387 "parser.yy"
     5120  case 32:
     5121
     5122/* Line 1806 of yacc.c  */
     5123#line 391 "parser.yy"
    51115124    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    51125125    break;
    51135126
    5114   case 32:
    5115 
    5116 /* Line 1806 of yacc.c  */
    5117 #line 389 "parser.yy"
     5127  case 33:
     5128
     5129/* Line 1806 of yacc.c  */
     5130#line 393 "parser.yy"
    51185131    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    51195132    break;
    51205133
    5121   case 33:
    5122 
    5123 /* Line 1806 of yacc.c  */
    5124 #line 391 "parser.yy"
     5134  case 34:
     5135
     5136/* Line 1806 of yacc.c  */
     5137#line 395 "parser.yy"
    51255138    {
    51265139                        Token fn;
    5127                         fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
     5140                        fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
    51285141                        (yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
    51295142                }
    51305143    break;
    51315144
    5132   case 35:
    5133 
    5134 /* Line 1806 of yacc.c  */
    5135 #line 401 "parser.yy"
     5145  case 36:
     5146
     5147/* Line 1806 of yacc.c  */
     5148#line 405 "parser.yy"
    51365149    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    51375150    break;
    51385151
    5139   case 36:
    5140 
    5141 /* Line 1806 of yacc.c  */
    5142 #line 406 "parser.yy"
     5152  case 37:
     5153
     5154/* Line 1806 of yacc.c  */
     5155#line 410 "parser.yy"
    51435156    { (yyval.en) = 0; }
    51445157    break;
    51455158
    5146   case 39:
    5147 
    5148 /* Line 1806 of yacc.c  */
    5149 #line 412 "parser.yy"
     5159  case 40:
     5160
     5161/* Line 1806 of yacc.c  */
     5162#line 416 "parser.yy"
    51505163    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    51515164    break;
    51525165
    5153   case 40:
    5154 
    5155 /* Line 1806 of yacc.c  */
    5156 #line 417 "parser.yy"
     5166  case 41:
     5167
     5168/* Line 1806 of yacc.c  */
     5169#line 423 "parser.yy"
    51575170    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    51585171    break;
    51595172
    5160   case 41:
    5161 
    5162 /* Line 1806 of yacc.c  */
    5163 #line 421 "parser.yy"
     5173  case 42:
     5174
     5175/* Line 1806 of yacc.c  */
     5176#line 425 "parser.yy"
    51645177    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51655178    break;
    51665179
    5167   case 42:
    5168 
    5169 /* Line 1806 of yacc.c  */
    5170 #line 423 "parser.yy"
     5180  case 43:
     5181
     5182/* Line 1806 of yacc.c  */
     5183#line 427 "parser.yy"
    51715184    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51725185    break;
    51735186
    5174   case 43:
    5175 
    5176 /* Line 1806 of yacc.c  */
    5177 #line 425 "parser.yy"
     5187  case 44:
     5188
     5189/* Line 1806 of yacc.c  */
     5190#line 429 "parser.yy"
    51785191    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51795192    break;
    51805193
    5181   case 44:
    5182 
    5183 /* Line 1806 of yacc.c  */
    5184 #line 427 "parser.yy"
     5194  case 45:
     5195
     5196/* Line 1806 of yacc.c  */
     5197#line 431 "parser.yy"
    51855198    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51865199    break;
    51875200
    5188   case 46:
    5189 
    5190 /* Line 1806 of yacc.c  */
    5191 #line 435 "parser.yy"
     5201  case 49:
     5202
     5203/* Line 1806 of yacc.c  */
     5204#line 444 "parser.yy"
    51925205    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51935206    break;
    51945207
    5195   case 47:
    5196 
    5197 /* Line 1806 of yacc.c  */
    5198 #line 437 "parser.yy"
     5208  case 50:
     5209
     5210/* Line 1806 of yacc.c  */
     5211#line 446 "parser.yy"
    51995212    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    52005213    break;
    52015214
    5202   case 48:
    5203 
    5204 /* Line 1806 of yacc.c  */
    5205 #line 439 "parser.yy"
     5215  case 51:
     5216
     5217/* Line 1806 of yacc.c  */
     5218#line 448 "parser.yy"
    52065219    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    52075220    break;
    52085221
    5209   case 49:
    5210 
    5211 /* Line 1806 of yacc.c  */
    5212 #line 444 "parser.yy"
     5222  case 52:
     5223
     5224/* Line 1806 of yacc.c  */
     5225#line 453 "parser.yy"
    52135226    {
    52145227                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52255238    break;
    52265239
    5227   case 50:
    5228 
    5229 /* Line 1806 of yacc.c  */
    5230 #line 457 "parser.yy"
     5240  case 53:
     5241
     5242/* Line 1806 of yacc.c  */
     5243#line 466 "parser.yy"
    52315244    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52325245    break;
    52335246
    5234   case 51:
    5235 
    5236 /* Line 1806 of yacc.c  */
    5237 #line 459 "parser.yy"
     5247  case 54:
     5248
     5249/* Line 1806 of yacc.c  */
     5250#line 468 "parser.yy"
    52385251    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52395252    break;
    52405253
    5241   case 52:
    5242 
    5243 /* Line 1806 of yacc.c  */
    5244 #line 461 "parser.yy"
     5254  case 55:
     5255
     5256/* Line 1806 of yacc.c  */
     5257#line 470 "parser.yy"
    52455258    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52465259    break;
    52475260
    5248   case 53:
    5249 
    5250 /* Line 1806 of yacc.c  */
    5251 #line 463 "parser.yy"
     5261  case 56:
     5262
     5263/* Line 1806 of yacc.c  */
     5264#line 472 "parser.yy"
    52525265    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52535266    break;
    52545267
    5255   case 54:
    5256 
    5257 /* Line 1806 of yacc.c  */
    5258 #line 465 "parser.yy"
     5268  case 57:
     5269
     5270/* Line 1806 of yacc.c  */
     5271#line 474 "parser.yy"
    52595272    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52605273    break;
    52615274
    5262   case 55:
    5263 
    5264 /* Line 1806 of yacc.c  */
    5265 #line 467 "parser.yy"
     5275  case 58:
     5276
     5277/* Line 1806 of yacc.c  */
     5278#line 476 "parser.yy"
    52665279    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52675280    break;
    52685281
    5269   case 56:
    5270 
    5271 /* Line 1806 of yacc.c  */
    5272 #line 469 "parser.yy"
     5282  case 59:
     5283
     5284/* Line 1806 of yacc.c  */
     5285#line 478 "parser.yy"
    52735286    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52745287    break;
    52755288
    5276   case 57:
    5277 
    5278 /* Line 1806 of yacc.c  */
    5279 #line 471 "parser.yy"
     5289  case 60:
     5290
     5291/* Line 1806 of yacc.c  */
     5292#line 480 "parser.yy"
    52805293    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52815294    break;
    52825295
    5283   case 58:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 473 "parser.yy"
     5296  case 61:
     5297
     5298/* Line 1806 of yacc.c  */
     5299#line 482 "parser.yy"
    52875300    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52885301    break;
    52895302
    5290   case 59:
    5291 
    5292 /* Line 1806 of yacc.c  */
    5293 #line 475 "parser.yy"
     5303  case 62:
     5304
     5305/* Line 1806 of yacc.c  */
     5306#line 484 "parser.yy"
    52945307    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52955308    break;
    52965309
    5297   case 60:
    5298 
    5299 /* Line 1806 of yacc.c  */
    5300 #line 477 "parser.yy"
     5310  case 63:
     5311
     5312/* Line 1806 of yacc.c  */
     5313#line 486 "parser.yy"
    53015314    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    53025315    break;
    53035316
    5304   case 61:
    5305 
    5306 /* Line 1806 of yacc.c  */
    5307 #line 483 "parser.yy"
     5317  case 64:
     5318
     5319/* Line 1806 of yacc.c  */
     5320#line 492 "parser.yy"
    53085321    { (yyval.op) = OperKinds::PointTo; }
    53095322    break;
    53105323
    5311   case 62:
    5312 
    5313 /* Line 1806 of yacc.c  */
    5314 #line 484 "parser.yy"
     5324  case 65:
     5325
     5326/* Line 1806 of yacc.c  */
     5327#line 493 "parser.yy"
    53155328    { (yyval.op) = OperKinds::AddressOf; }
    53165329    break;
    53175330
    5318   case 63:
    5319 
    5320 /* Line 1806 of yacc.c  */
    5321 #line 490 "parser.yy"
     5331  case 66:
     5332
     5333/* Line 1806 of yacc.c  */
     5334#line 499 "parser.yy"
    53225335    { (yyval.op) = OperKinds::UnPlus; }
    53235336    break;
    53245337
    5325   case 64:
    5326 
    5327 /* Line 1806 of yacc.c  */
    5328 #line 491 "parser.yy"
     5338  case 67:
     5339
     5340/* Line 1806 of yacc.c  */
     5341#line 500 "parser.yy"
    53295342    { (yyval.op) = OperKinds::UnMinus; }
    53305343    break;
    53315344
    5332   case 65:
    5333 
    5334 /* Line 1806 of yacc.c  */
    5335 #line 492 "parser.yy"
     5345  case 68:
     5346
     5347/* Line 1806 of yacc.c  */
     5348#line 501 "parser.yy"
    53365349    { (yyval.op) = OperKinds::Neg; }
    53375350    break;
    53385351
    5339   case 66:
    5340 
    5341 /* Line 1806 of yacc.c  */
    5342 #line 493 "parser.yy"
     5352  case 69:
     5353
     5354/* Line 1806 of yacc.c  */
     5355#line 502 "parser.yy"
    53435356    { (yyval.op) = OperKinds::BitNeg; }
    53445357    break;
    53455358
    5346   case 68:
    5347 
    5348 /* Line 1806 of yacc.c  */
    5349 #line 499 "parser.yy"
     5359  case 71:
     5360
     5361/* Line 1806 of yacc.c  */
     5362#line 508 "parser.yy"
    53505363    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53515364    break;
    53525365
    5353   case 69:
    5354 
    5355 /* Line 1806 of yacc.c  */
    5356 #line 501 "parser.yy"
     5366  case 72:
     5367
     5368/* Line 1806 of yacc.c  */
     5369#line 510 "parser.yy"
    53575370    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53585371    break;
    53595372
    5360   case 71:
    5361 
    5362 /* Line 1806 of yacc.c  */
    5363 #line 507 "parser.yy"
     5373  case 74:
     5374
     5375/* Line 1806 of yacc.c  */
     5376#line 516 "parser.yy"
    53645377    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53655378    break;
    53665379
    5367   case 72:
    5368 
    5369 /* Line 1806 of yacc.c  */
    5370 #line 509 "parser.yy"
     5380  case 75:
     5381
     5382/* Line 1806 of yacc.c  */
     5383#line 518 "parser.yy"
    53715384    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53725385    break;
    53735386
    5374   case 73:
    5375 
    5376 /* Line 1806 of yacc.c  */
    5377 #line 511 "parser.yy"
     5387  case 76:
     5388
     5389/* Line 1806 of yacc.c  */
     5390#line 520 "parser.yy"
    53785391    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53795392    break;
    53805393
    5381   case 75:
    5382 
    5383 /* Line 1806 of yacc.c  */
    5384 #line 517 "parser.yy"
     5394  case 78:
     5395
     5396/* Line 1806 of yacc.c  */
     5397#line 526 "parser.yy"
    53855398    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53865399    break;
    53875400
    5388   case 76:
    5389 
    5390 /* Line 1806 of yacc.c  */
    5391 #line 519 "parser.yy"
     5401  case 79:
     5402
     5403/* Line 1806 of yacc.c  */
     5404#line 528 "parser.yy"
    53925405    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53935406    break;
    53945407
    5395   case 78:
    5396 
    5397 /* Line 1806 of yacc.c  */
    5398 #line 525 "parser.yy"
     5408  case 81:
     5409
     5410/* Line 1806 of yacc.c  */
     5411#line 534 "parser.yy"
    53995412    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54005413    break;
    54015414
    5402   case 79:
    5403 
    5404 /* Line 1806 of yacc.c  */
    5405 #line 527 "parser.yy"
     5415  case 82:
     5416
     5417/* Line 1806 of yacc.c  */
     5418#line 536 "parser.yy"
    54065419    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54075420    break;
    54085421
    5409   case 81:
    5410 
    5411 /* Line 1806 of yacc.c  */
    5412 #line 533 "parser.yy"
     5422  case 84:
     5423
     5424/* Line 1806 of yacc.c  */
     5425#line 542 "parser.yy"
    54135426    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54145427    break;
    54155428
    5416   case 82:
    5417 
    5418 /* Line 1806 of yacc.c  */
    5419 #line 535 "parser.yy"
     5429  case 85:
     5430
     5431/* Line 1806 of yacc.c  */
     5432#line 544 "parser.yy"
    54205433    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54215434    break;
    54225435
    5423   case 83:
    5424 
    5425 /* Line 1806 of yacc.c  */
    5426 #line 537 "parser.yy"
     5436  case 86:
     5437
     5438/* Line 1806 of yacc.c  */
     5439#line 546 "parser.yy"
    54275440    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54285441    break;
    54295442
    5430   case 84:
    5431 
    5432 /* Line 1806 of yacc.c  */
    5433 #line 539 "parser.yy"
     5443  case 87:
     5444
     5445/* Line 1806 of yacc.c  */
     5446#line 548 "parser.yy"
    54345447    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54355448    break;
    54365449
    5437   case 86:
    5438 
    5439 /* Line 1806 of yacc.c  */
    5440 #line 545 "parser.yy"
     5450  case 89:
     5451
     5452/* Line 1806 of yacc.c  */
     5453#line 554 "parser.yy"
    54415454    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54425455    break;
    54435456
    5444   case 87:
    5445 
    5446 /* Line 1806 of yacc.c  */
    5447 #line 547 "parser.yy"
     5457  case 90:
     5458
     5459/* Line 1806 of yacc.c  */
     5460#line 556 "parser.yy"
    54485461    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54495462    break;
    54505463
    5451   case 89:
    5452 
    5453 /* Line 1806 of yacc.c  */
    5454 #line 553 "parser.yy"
     5464  case 92:
     5465
     5466/* Line 1806 of yacc.c  */
     5467#line 562 "parser.yy"
    54555468    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54565469    break;
    54575470
    5458   case 91:
    5459 
    5460 /* Line 1806 of yacc.c  */
    5461 #line 559 "parser.yy"
     5471  case 94:
     5472
     5473/* Line 1806 of yacc.c  */
     5474#line 568 "parser.yy"
    54625475    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54635476    break;
    54645477
    5465   case 93:
    5466 
    5467 /* Line 1806 of yacc.c  */
    5468 #line 565 "parser.yy"
     5478  case 96:
     5479
     5480/* Line 1806 of yacc.c  */
     5481#line 574 "parser.yy"
    54695482    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54705483    break;
    54715484
    5472   case 95:
    5473 
    5474 /* Line 1806 of yacc.c  */
    5475 #line 571 "parser.yy"
     5485  case 98:
     5486
     5487/* Line 1806 of yacc.c  */
     5488#line 580 "parser.yy"
    54765489    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54775490    break;
    54785491
    5479   case 97:
    5480 
    5481 /* Line 1806 of yacc.c  */
    5482 #line 577 "parser.yy"
     5492  case 100:
     5493
     5494/* Line 1806 of yacc.c  */
     5495#line 586 "parser.yy"
    54835496    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54845497    break;
    54855498
    5486   case 99:
    5487 
    5488 /* Line 1806 of yacc.c  */
    5489 #line 583 "parser.yy"
     5499  case 102:
     5500
     5501/* Line 1806 of yacc.c  */
     5502#line 592 "parser.yy"
    54905503    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54915504    break;
    54925505
    5493   case 100:
    5494 
    5495 /* Line 1806 of yacc.c  */
    5496 #line 586 "parser.yy"
     5506  case 103:
     5507
     5508/* Line 1806 of yacc.c  */
     5509#line 595 "parser.yy"
    54975510    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54985511    break;
    54995512
    5500   case 101:
    5501 
    5502 /* Line 1806 of yacc.c  */
    5503 #line 588 "parser.yy"
     5513  case 104:
     5514
     5515/* Line 1806 of yacc.c  */
     5516#line 597 "parser.yy"
    55045517    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    55055518    break;
    55065519
    5507   case 104:
    5508 
    5509 /* Line 1806 of yacc.c  */
    5510 #line 599 "parser.yy"
     5520  case 107:
     5521
     5522/* Line 1806 of yacc.c  */
     5523#line 608 "parser.yy"
    55115524    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    55125525    break;
    55135526
    5514   case 105:
    5515 
    5516 /* Line 1806 of yacc.c  */
    5517 #line 601 "parser.yy"
     5527  case 108:
     5528
     5529/* Line 1806 of yacc.c  */
     5530#line 610 "parser.yy"
    55185531    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
    55195532    break;
    55205533
    5521   case 106:
    5522 
    5523 /* Line 1806 of yacc.c  */
    5524 #line 606 "parser.yy"
     5534  case 109:
     5535
     5536/* Line 1806 of yacc.c  */
     5537#line 615 "parser.yy"
    55255538    { (yyval.en) = nullptr; }
    55265539    break;
    55275540
    5528   case 108:
    5529 
    5530 /* Line 1806 of yacc.c  */
    5531 #line 611 "parser.yy"
     5541  case 111:
     5542
     5543/* Line 1806 of yacc.c  */
     5544#line 620 "parser.yy"
    55325545    { (yyval.op) = OperKinds::Assign; }
    55335546    break;
    55345547
    5535   case 109:
    5536 
    5537 /* Line 1806 of yacc.c  */
    5538 #line 612 "parser.yy"
     5548  case 112:
     5549
     5550/* Line 1806 of yacc.c  */
     5551#line 621 "parser.yy"
    55395552    { (yyval.op) = OperKinds::AtAssn; }
    55405553    break;
    55415554
    5542   case 110:
    5543 
    5544 /* Line 1806 of yacc.c  */
    5545 #line 613 "parser.yy"
     5555  case 113:
     5556
     5557/* Line 1806 of yacc.c  */
     5558#line 622 "parser.yy"
    55465559    { (yyval.op) = OperKinds::MulAssn; }
    55475560    break;
    55485561
    5549   case 111:
    5550 
    5551 /* Line 1806 of yacc.c  */
    5552 #line 614 "parser.yy"
     5562  case 114:
     5563
     5564/* Line 1806 of yacc.c  */
     5565#line 623 "parser.yy"
    55535566    { (yyval.op) = OperKinds::DivAssn; }
    55545567    break;
    55555568
    5556   case 112:
    5557 
    5558 /* Line 1806 of yacc.c  */
    5559 #line 615 "parser.yy"
     5569  case 115:
     5570
     5571/* Line 1806 of yacc.c  */
     5572#line 624 "parser.yy"
    55605573    { (yyval.op) = OperKinds::ModAssn; }
    55615574    break;
    55625575
    5563   case 113:
    5564 
    5565 /* Line 1806 of yacc.c  */
    5566 #line 616 "parser.yy"
     5576  case 116:
     5577
     5578/* Line 1806 of yacc.c  */
     5579#line 625 "parser.yy"
    55675580    { (yyval.op) = OperKinds::PlusAssn; }
    55685581    break;
    55695582
    5570   case 114:
    5571 
    5572 /* Line 1806 of yacc.c  */
    5573 #line 617 "parser.yy"
     5583  case 117:
     5584
     5585/* Line 1806 of yacc.c  */
     5586#line 626 "parser.yy"
    55745587    { (yyval.op) = OperKinds::MinusAssn; }
    55755588    break;
    55765589
    5577   case 115:
    5578 
    5579 /* Line 1806 of yacc.c  */
    5580 #line 618 "parser.yy"
     5590  case 118:
     5591
     5592/* Line 1806 of yacc.c  */
     5593#line 627 "parser.yy"
    55815594    { (yyval.op) = OperKinds::LSAssn; }
    55825595    break;
    55835596
    5584   case 116:
    5585 
    5586 /* Line 1806 of yacc.c  */
    5587 #line 619 "parser.yy"
     5597  case 119:
     5598
     5599/* Line 1806 of yacc.c  */
     5600#line 628 "parser.yy"
    55885601    { (yyval.op) = OperKinds::RSAssn; }
    55895602    break;
    55905603
    5591   case 117:
    5592 
    5593 /* Line 1806 of yacc.c  */
    5594 #line 620 "parser.yy"
     5604  case 120:
     5605
     5606/* Line 1806 of yacc.c  */
     5607#line 629 "parser.yy"
    55955608    { (yyval.op) = OperKinds::AndAssn; }
    55965609    break;
    55975610
    5598   case 118:
    5599 
    5600 /* Line 1806 of yacc.c  */
    5601 #line 621 "parser.yy"
     5611  case 121:
     5612
     5613/* Line 1806 of yacc.c  */
     5614#line 630 "parser.yy"
    56025615    { (yyval.op) = OperKinds::ERAssn; }
    56035616    break;
    56045617
    5605   case 119:
    5606 
    5607 /* Line 1806 of yacc.c  */
    5608 #line 622 "parser.yy"
     5618  case 122:
     5619
     5620/* Line 1806 of yacc.c  */
     5621#line 631 "parser.yy"
    56095622    { (yyval.op) = OperKinds::OrAssn; }
    56105623    break;
    56115624
    5612   case 120:
    5613 
    5614 /* Line 1806 of yacc.c  */
    5615 #line 629 "parser.yy"
     5625  case 123:
     5626
     5627/* Line 1806 of yacc.c  */
     5628#line 638 "parser.yy"
    56165629    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    56175630    break;
    56185631
    5619   case 121:
    5620 
    5621 /* Line 1806 of yacc.c  */
    5622 #line 631 "parser.yy"
     5632  case 124:
     5633
     5634/* Line 1806 of yacc.c  */
     5635#line 640 "parser.yy"
    56235636    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    56245637    break;
    56255638
    5626   case 122:
    5627 
    5628 /* Line 1806 of yacc.c  */
    5629 #line 633 "parser.yy"
     5639  case 125:
     5640
     5641/* Line 1806 of yacc.c  */
     5642#line 642 "parser.yy"
    56305643    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56315644    break;
    56325645
    5633   case 123:
    5634 
    5635 /* Line 1806 of yacc.c  */
    5636 #line 635 "parser.yy"
     5646  case 126:
     5647
     5648/* Line 1806 of yacc.c  */
     5649#line 644 "parser.yy"
    56375650    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56385651    break;
    56395652
    5640   case 125:
    5641 
    5642 /* Line 1806 of yacc.c  */
    5643 #line 641 "parser.yy"
     5653  case 128:
     5654
     5655/* Line 1806 of yacc.c  */
     5656#line 650 "parser.yy"
    56445657    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56455658    break;
    56465659
    5647   case 127:
    5648 
    5649 /* Line 1806 of yacc.c  */
    5650 #line 647 "parser.yy"
     5660  case 130:
     5661
     5662/* Line 1806 of yacc.c  */
     5663#line 656 "parser.yy"
    56515664    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56525665    break;
    56535666
    5654   case 128:
    5655 
    5656 /* Line 1806 of yacc.c  */
    5657 #line 652 "parser.yy"
     5667  case 131:
     5668
     5669/* Line 1806 of yacc.c  */
     5670#line 661 "parser.yy"
    56585671    { (yyval.en) = 0; }
    56595672    break;
    56605673
    5661   case 132:
    5662 
    5663 /* Line 1806 of yacc.c  */
    5664 #line 661 "parser.yy"
     5674  case 135:
     5675
     5676/* Line 1806 of yacc.c  */
     5677#line 670 "parser.yy"
    56655678    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56665679    break;
    56675680
    5668   case 138:
    5669 
    5670 /* Line 1806 of yacc.c  */
    5671 #line 668 "parser.yy"
     5681  case 141:
     5682
     5683/* Line 1806 of yacc.c  */
     5684#line 677 "parser.yy"
    56725685    {
    56735686                        Token fn;
    5674                         fn.str = new std::string( "^?{}" ); // location undefined
     5687                        fn.str = new string( "^?{}" );                          // location undefined
    56755688                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
    56765689                }
    56775690    break;
    56785691
    5679   case 139:
    5680 
    5681 /* Line 1806 of yacc.c  */
    5682 #line 678 "parser.yy"
     5692  case 142:
     5693
     5694/* Line 1806 of yacc.c  */
     5695#line 687 "parser.yy"
    56835696    {
    56845697                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56865699    break;
    56875700
    5688   case 140:
    5689 
    5690 /* Line 1806 of yacc.c  */
    5691 #line 685 "parser.yy"
     5701  case 143:
     5702
     5703/* Line 1806 of yacc.c  */
     5704#line 694 "parser.yy"
    56925705    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56935706    break;
    56945707
    5695   case 141:
    5696 
    5697 /* Line 1806 of yacc.c  */
    5698 #line 692 "parser.yy"
     5708  case 144:
     5709
     5710/* Line 1806 of yacc.c  */
     5711#line 701 "parser.yy"
    56995712    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    57005713    break;
    57015714
    5702   case 143:
    5703 
    5704 /* Line 1806 of yacc.c  */
    5705 #line 698 "parser.yy"
     5715  case 146:
     5716
     5717/* Line 1806 of yacc.c  */
     5718#line 707 "parser.yy"
    57065719    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57075720    break;
    57085721
    5709   case 144:
    5710 
    5711 /* Line 1806 of yacc.c  */
    5712 #line 703 "parser.yy"
     5722  case 147:
     5723
     5724/* Line 1806 of yacc.c  */
     5725#line 712 "parser.yy"
    57135726    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57145727    break;
    57155728
    5716   case 145:
    5717 
    5718 /* Line 1806 of yacc.c  */
    5719 #line 705 "parser.yy"
     5729  case 148:
     5730
     5731/* Line 1806 of yacc.c  */
     5732#line 714 "parser.yy"
    57205733    {   // mark all fields in list
    57215734                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    57255738    break;
    57265739
    5727   case 146:
    5728 
    5729 /* Line 1806 of yacc.c  */
    5730 #line 711 "parser.yy"
     5740  case 149:
     5741
     5742/* Line 1806 of yacc.c  */
     5743#line 720 "parser.yy"
    57315744    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57325745    break;
    57335746
    5734   case 149:
    5735 
    5736 /* Line 1806 of yacc.c  */
    5737 #line 718 "parser.yy"
     5747  case 152:
     5748
     5749/* Line 1806 of yacc.c  */
     5750#line 727 "parser.yy"
    57385751    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57395752    break;
    57405753
    5741   case 150:
    5742 
    5743 /* Line 1806 of yacc.c  */
    5744 #line 723 "parser.yy"
     5754  case 153:
     5755
     5756/* Line 1806 of yacc.c  */
     5757#line 732 "parser.yy"
    57455758    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57465759    break;
    57475760
    5748   case 151:
    5749 
    5750 /* Line 1806 of yacc.c  */
    5751 #line 729 "parser.yy"
     5761  case 154:
     5762
     5763/* Line 1806 of yacc.c  */
     5764#line 738 "parser.yy"
    57525765    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57535766    break;
    57545767
    5755   case 152:
    5756 
    5757 /* Line 1806 of yacc.c  */
    5758 #line 731 "parser.yy"
     5768  case 155:
     5769
     5770/* Line 1806 of yacc.c  */
     5771#line 740 "parser.yy"
    57595772    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57605773    break;
    57615774
    5762   case 153:
    5763 
    5764 /* Line 1806 of yacc.c  */
    5765 #line 733 "parser.yy"
     5775  case 156:
     5776
     5777/* Line 1806 of yacc.c  */
     5778#line 742 "parser.yy"
    57665779    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57675780    break;
    57685781
    5769   case 154:
    5770 
    5771 /* Line 1806 of yacc.c  */
    5772 #line 735 "parser.yy"
     5782  case 157:
     5783
     5784/* Line 1806 of yacc.c  */
     5785#line 744 "parser.yy"
    57735786    {
    57745787                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57825795    break;
    57835796
    5784   case 155:
    5785 
    5786 /* Line 1806 of yacc.c  */
    5787 #line 745 "parser.yy"
     5797  case 158:
     5798
     5799/* Line 1806 of yacc.c  */
     5800#line 754 "parser.yy"
    57885801    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57895802    break;
    57905803
    5791   case 156:
    5792 
    5793 /* Line 1806 of yacc.c  */
    5794 #line 747 "parser.yy"
     5804  case 159:
     5805
     5806/* Line 1806 of yacc.c  */
     5807#line 756 "parser.yy"
    57955808    {
    57965809                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57995812    break;
    58005813
    5801   case 157:
    5802 
    5803 /* Line 1806 of yacc.c  */
    5804 #line 757 "parser.yy"
     5814  case 160:
     5815
     5816/* Line 1806 of yacc.c  */
     5817#line 766 "parser.yy"
    58055818    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    58065819    break;
    58075820
    5808   case 158:
    5809 
    5810 /* Line 1806 of yacc.c  */
    5811 #line 759 "parser.yy"
     5821  case 161:
     5822
     5823/* Line 1806 of yacc.c  */
     5824#line 768 "parser.yy"
    58125825    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    58135826    break;
    58145827
    5815   case 160:
    5816 
    5817 /* Line 1806 of yacc.c  */
    5818 #line 764 "parser.yy"
     5828  case 163:
     5829
     5830/* Line 1806 of yacc.c  */
     5831#line 773 "parser.yy"
    58195832    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    58205833    break;
    58215834
    5822   case 161:
    5823 
    5824 /* Line 1806 of yacc.c  */
    5825 #line 766 "parser.yy"
     5835  case 164:
     5836
     5837/* Line 1806 of yacc.c  */
     5838#line 775 "parser.yy"
    58265839    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    58275840    break;
    58285841
    5829   case 162:
    5830 
    5831 /* Line 1806 of yacc.c  */
    5832 #line 770 "parser.yy"
     5842  case 165:
     5843
     5844/* Line 1806 of yacc.c  */
     5845#line 779 "parser.yy"
    58335846    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58345847    break;
    58355848
    5836   case 163:
    5837 
    5838 /* Line 1806 of yacc.c  */
    5839 #line 771 "parser.yy"
     5849  case 166:
     5850
     5851/* Line 1806 of yacc.c  */
     5852#line 780 "parser.yy"
    58405853    { (yyval.sn) = new StatementNode( build_default() ); }
    58415854    break;
    58425855
    5843   case 165:
    5844 
    5845 /* Line 1806 of yacc.c  */
    5846 #line 777 "parser.yy"
     5856  case 168:
     5857
     5858/* Line 1806 of yacc.c  */
     5859#line 786 "parser.yy"
    58475860    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58485861    break;
    58495862
    5850   case 166:
    5851 
    5852 /* Line 1806 of yacc.c  */
    5853 #line 781 "parser.yy"
     5863  case 169:
     5864
     5865/* Line 1806 of yacc.c  */
     5866#line 790 "parser.yy"
    58545867    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58555868    break;
    58565869
    5857   case 167:
    5858 
    5859 /* Line 1806 of yacc.c  */
    5860 #line 786 "parser.yy"
     5870  case 170:
     5871
     5872/* Line 1806 of yacc.c  */
     5873#line 795 "parser.yy"
    58615874    { (yyval.sn) = 0; }
    58625875    break;
    58635876
    5864   case 169:
    5865 
    5866 /* Line 1806 of yacc.c  */
    5867 #line 792 "parser.yy"
     5877  case 172:
     5878
     5879/* Line 1806 of yacc.c  */
     5880#line 801 "parser.yy"
    58685881    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58695882    break;
    58705883
    5871   case 170:
    5872 
    5873 /* Line 1806 of yacc.c  */
    5874 #line 794 "parser.yy"
     5884  case 173:
     5885
     5886/* Line 1806 of yacc.c  */
     5887#line 803 "parser.yy"
    58755888    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    58765889    break;
    58775890
    5878   case 171:
    5879 
    5880 /* Line 1806 of yacc.c  */
    5881 #line 799 "parser.yy"
     5891  case 174:
     5892
     5893/* Line 1806 of yacc.c  */
     5894#line 808 "parser.yy"
    58825895    { (yyval.sn) = 0; }
    58835896    break;
    58845897
    5885   case 173:
    5886 
    5887 /* Line 1806 of yacc.c  */
    5888 #line 805 "parser.yy"
     5898  case 176:
     5899
     5900/* Line 1806 of yacc.c  */
     5901#line 814 "parser.yy"
    58895902    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58905903    break;
    58915904
    5892   case 174:
    5893 
    5894 /* Line 1806 of yacc.c  */
    5895 #line 807 "parser.yy"
     5905  case 177:
     5906
     5907/* Line 1806 of yacc.c  */
     5908#line 816 "parser.yy"
    58965909    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58975910    break;
    58985911
    5899   case 175:
    5900 
    5901 /* Line 1806 of yacc.c  */
    5902 #line 809 "parser.yy"
     5912  case 178:
     5913
     5914/* Line 1806 of yacc.c  */
     5915#line 818 "parser.yy"
    59035916    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    59045917    break;
    59055918
    5906   case 176:
    5907 
    5908 /* Line 1806 of yacc.c  */
    5909 #line 811 "parser.yy"
     5919  case 179:
     5920
     5921/* Line 1806 of yacc.c  */
     5922#line 820 "parser.yy"
    59105923    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    59115924    break;
    59125925
    5913   case 177:
    5914 
    5915 /* Line 1806 of yacc.c  */
    5916 #line 816 "parser.yy"
     5926  case 180:
     5927
     5928/* Line 1806 of yacc.c  */
     5929#line 825 "parser.yy"
    59175930    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59185931    break;
    59195932
    5920   case 179:
    5921 
    5922 /* Line 1806 of yacc.c  */
    5923 #line 822 "parser.yy"
     5933  case 182:
     5934
     5935/* Line 1806 of yacc.c  */
     5936#line 831 "parser.yy"
    59245937    { (yyval.sn) = 0; }
    59255938    break;
    59265939
    5927   case 180:
    5928 
    5929 /* Line 1806 of yacc.c  */
    5930 #line 824 "parser.yy"
     5940  case 183:
     5941
     5942/* Line 1806 of yacc.c  */
     5943#line 833 "parser.yy"
    59315944    { (yyval.sn) = 0; }
    59325945    break;
    59335946
    5934   case 181:
    5935 
    5936 /* Line 1806 of yacc.c  */
    5937 #line 829 "parser.yy"
     5947  case 184:
     5948
     5949/* Line 1806 of yacc.c  */
     5950#line 838 "parser.yy"
    59385951    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59395952    break;
    59405953
    5941   case 182:
    5942 
    5943 /* Line 1806 of yacc.c  */
    5944 #line 831 "parser.yy"
     5954  case 185:
     5955
     5956/* Line 1806 of yacc.c  */
     5957#line 840 "parser.yy"
    59455958    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    59465959    break;
    59475960
    5948   case 183:
    5949 
    5950 /* Line 1806 of yacc.c  */
    5951 #line 833 "parser.yy"
     5961  case 186:
     5962
     5963/* Line 1806 of yacc.c  */
     5964#line 842 "parser.yy"
    59525965    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59535966    break;
    59545967
    5955   case 184:
    5956 
    5957 /* Line 1806 of yacc.c  */
    5958 #line 838 "parser.yy"
     5968  case 187:
     5969
     5970/* Line 1806 of yacc.c  */
     5971#line 847 "parser.yy"
    59595972    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59605973    break;
    59615974
    5962   case 185:
    5963 
    5964 /* Line 1806 of yacc.c  */
    5965 #line 840 "parser.yy"
     5975  case 188:
     5976
     5977/* Line 1806 of yacc.c  */
     5978#line 849 "parser.yy"
    59665979    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59675980    break;
    59685981
    5969   case 186:
    5970 
    5971 /* Line 1806 of yacc.c  */
    5972 #line 845 "parser.yy"
     5982  case 189:
     5983
     5984/* Line 1806 of yacc.c  */
     5985#line 854 "parser.yy"
    59735986    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59745987    break;
    59755988
    5976   case 187:
    5977 
    5978 /* Line 1806 of yacc.c  */
    5979 #line 849 "parser.yy"
     5989  case 190:
     5990
     5991/* Line 1806 of yacc.c  */
     5992#line 858 "parser.yy"
    59805993    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59815994    break;
    59825995
    5983   case 188:
    5984 
    5985 /* Line 1806 of yacc.c  */
    5986 #line 852 "parser.yy"
     5996  case 191:
     5997
     5998/* Line 1806 of yacc.c  */
     5999#line 861 "parser.yy"
    59876000    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59886001    break;
    59896002
    5990   case 189:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 856 "parser.yy"
     6003  case 192:
     6004
     6005/* Line 1806 of yacc.c  */
     6006#line 865 "parser.yy"
    59946007    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59956008    break;
    59966009
    5997   case 190:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 859 "parser.yy"
     6010  case 193:
     6011
     6012/* Line 1806 of yacc.c  */
     6013#line 868 "parser.yy"
    60016014    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    60026015    break;
    60036016
    6004   case 191:
    6005 
    6006 /* Line 1806 of yacc.c  */
    6007 #line 863 "parser.yy"
     6017  case 194:
     6018
     6019/* Line 1806 of yacc.c  */
     6020#line 872 "parser.yy"
    60086021    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    60096022    break;
    60106023
    6011   case 192:
    6012 
    6013 /* Line 1806 of yacc.c  */
    6014 #line 865 "parser.yy"
     6024  case 195:
     6025
     6026/* Line 1806 of yacc.c  */
     6027#line 874 "parser.yy"
    60156028    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60166029    break;
    60176030
    6018   case 193:
    6019 
    6020 /* Line 1806 of yacc.c  */
    6021 #line 867 "parser.yy"
     6031  case 196:
     6032
     6033/* Line 1806 of yacc.c  */
     6034#line 876 "parser.yy"
    60226035    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60236036    break;
    60246037
    6025   case 194:
    6026 
    6027 /* Line 1806 of yacc.c  */
    6028 #line 869 "parser.yy"
     6038  case 197:
     6039
     6040/* Line 1806 of yacc.c  */
     6041#line 878 "parser.yy"
    60296042    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60306043    break;
    60316044
    6032   case 195:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 871 "parser.yy"
     6045  case 198:
     6046
     6047/* Line 1806 of yacc.c  */
     6048#line 880 "parser.yy"
    60366049    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60376050    break;
    60386051
    6039   case 196:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 876 "parser.yy"
     6052  case 199:
     6053
     6054/* Line 1806 of yacc.c  */
     6055#line 885 "parser.yy"
    60436056    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60446057    break;
    60456058
    6046   case 197:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 878 "parser.yy"
     6059  case 200:
     6060
     6061/* Line 1806 of yacc.c  */
     6062#line 887 "parser.yy"
    60506063    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60516064    break;
    60526065
    6053   case 198:
    6054 
    6055 /* Line 1806 of yacc.c  */
    6056 #line 880 "parser.yy"
     6066  case 201:
     6067
     6068/* Line 1806 of yacc.c  */
     6069#line 889 "parser.yy"
    60576070    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60586071    break;
    60596072
    6060   case 200:
    6061 
    6062 /* Line 1806 of yacc.c  */
    6063 #line 887 "parser.yy"
     6073  case 203:
     6074
     6075/* Line 1806 of yacc.c  */
     6076#line 896 "parser.yy"
    60646077    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60656078    break;
    60666079
    6067   case 201:
    6068 
    6069 /* Line 1806 of yacc.c  */
    6070 #line 889 "parser.yy"
     6080  case 204:
     6081
     6082/* Line 1806 of yacc.c  */
     6083#line 898 "parser.yy"
    60716084    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60726085    break;
    60736086
    6074   case 202:
    6075 
    6076 /* Line 1806 of yacc.c  */
    6077 #line 891 "parser.yy"
     6087  case 205:
     6088
     6089/* Line 1806 of yacc.c  */
     6090#line 900 "parser.yy"
    60786091    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60796092    break;
    60806093
    6081   case 203:
    6082 
    6083 /* Line 1806 of yacc.c  */
    6084 #line 893 "parser.yy"
     6094  case 206:
     6095
     6096/* Line 1806 of yacc.c  */
     6097#line 902 "parser.yy"
    60856098    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60866099    break;
    60876100
    6088   case 204:
    6089 
    6090 /* Line 1806 of yacc.c  */
    6091 #line 898 "parser.yy"
     6101  case 207:
     6102
     6103/* Line 1806 of yacc.c  */
     6104#line 907 "parser.yy"
    60926105    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60936106    break;
    60946107
    6095   case 205:
    6096 
    6097 /* Line 1806 of yacc.c  */
    6098 #line 900 "parser.yy"
     6108  case 208:
     6109
     6110/* Line 1806 of yacc.c  */
     6111#line 909 "parser.yy"
    60996112    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    61006113    break;
    61016114
    6102   case 206:
    6103 
    6104 /* Line 1806 of yacc.c  */
    6105 #line 902 "parser.yy"
     6115  case 209:
     6116
     6117/* Line 1806 of yacc.c  */
     6118#line 911 "parser.yy"
    61066119    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    61076120    break;
    61086121
    6109   case 207:
    6110 
    6111 /* Line 1806 of yacc.c  */
    6112 #line 904 "parser.yy"
     6122  case 210:
     6123
     6124/* Line 1806 of yacc.c  */
     6125#line 913 "parser.yy"
    61136126    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    61146127    break;
    61156128
    6116   case 208:
    6117 
    6118 /* Line 1806 of yacc.c  */
    6119 #line 909 "parser.yy"
     6129  case 211:
     6130
     6131/* Line 1806 of yacc.c  */
     6132#line 918 "parser.yy"
    61206133    {
    61216134                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61236136    break;
    61246137
    6125   case 210:
    6126 
    6127 /* Line 1806 of yacc.c  */
    6128 #line 922 "parser.yy"
     6138  case 213:
     6139
     6140/* Line 1806 of yacc.c  */
     6141#line 931 "parser.yy"
    61296142    {
    61306143                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61336146    break;
    61346147
    6135   case 211:
    6136 
    6137 /* Line 1806 of yacc.c  */
    6138 #line 927 "parser.yy"
     6148  case 214:
     6149
     6150/* Line 1806 of yacc.c  */
     6151#line 936 "parser.yy"
    61396152    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61406153    break;
    61416154
    6142   case 212:
    6143 
    6144 /* Line 1806 of yacc.c  */
    6145 #line 929 "parser.yy"
     6155  case 215:
     6156
     6157/* Line 1806 of yacc.c  */
     6158#line 938 "parser.yy"
    61466159    {
    61476160                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61506163    break;
    61516164
    6152   case 214:
    6153 
    6154 /* Line 1806 of yacc.c  */
    6155 #line 938 "parser.yy"
     6165  case 217:
     6166
     6167/* Line 1806 of yacc.c  */
     6168#line 947 "parser.yy"
    61566169    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    61576170    break;
    61586171
    6159   case 215:
    6160 
    6161 /* Line 1806 of yacc.c  */
    6162 #line 940 "parser.yy"
     6172  case 218:
     6173
     6174/* Line 1806 of yacc.c  */
     6175#line 949 "parser.yy"
    61636176    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    61646177    break;
    61656178
    6166   case 216:
    6167 
    6168 /* Line 1806 of yacc.c  */
    6169 #line 942 "parser.yy"
     6179  case 219:
     6180
     6181/* Line 1806 of yacc.c  */
     6182#line 951 "parser.yy"
    61706183    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    61716184    break;
    61726185
    6173   case 217:
    6174 
    6175 /* Line 1806 of yacc.c  */
    6176 #line 944 "parser.yy"
     6186  case 220:
     6187
     6188/* Line 1806 of yacc.c  */
     6189#line 953 "parser.yy"
    61776190    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    61786191    break;
    61796192
    6180   case 218:
    6181 
    6182 /* Line 1806 of yacc.c  */
    6183 #line 946 "parser.yy"
     6193  case 221:
     6194
     6195/* Line 1806 of yacc.c  */
     6196#line 955 "parser.yy"
    61846197    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    61856198    break;
    61866199
    6187   case 219:
    6188 
    6189 /* Line 1806 of yacc.c  */
    6190 #line 951 "parser.yy"
     6200  case 222:
     6201
     6202/* Line 1806 of yacc.c  */
     6203#line 960 "parser.yy"
    61916204    { (yyval.flag) = false; }
    61926205    break;
    61936206
    6194   case 220:
    6195 
    6196 /* Line 1806 of yacc.c  */
    6197 #line 953 "parser.yy"
     6207  case 223:
     6208
     6209/* Line 1806 of yacc.c  */
     6210#line 962 "parser.yy"
    61986211    { (yyval.flag) = true; }
    61996212    break;
    62006213
    6201   case 221:
    6202 
    6203 /* Line 1806 of yacc.c  */
    6204 #line 958 "parser.yy"
     6214  case 224:
     6215
     6216/* Line 1806 of yacc.c  */
     6217#line 967 "parser.yy"
    62056218    { (yyval.en) = 0; }
    62066219    break;
    62076220
    6208   case 224:
    6209 
    6210 /* Line 1806 of yacc.c  */
    6211 #line 965 "parser.yy"
     6221  case 227:
     6222
     6223/* Line 1806 of yacc.c  */
     6224#line 974 "parser.yy"
    62126225    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    62136226    break;
    62146227
    6215   case 225:
    6216 
    6217 /* Line 1806 of yacc.c  */
    6218 #line 970 "parser.yy"
     6228  case 228:
     6229
     6230/* Line 1806 of yacc.c  */
     6231#line 979 "parser.yy"
    62196232    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    62206233    break;
    62216234
    6222   case 226:
    6223 
    6224 /* Line 1806 of yacc.c  */
    6225 #line 972 "parser.yy"
     6235  case 229:
     6236
     6237/* Line 1806 of yacc.c  */
     6238#line 981 "parser.yy"
    62266239    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    62276240    break;
    62286241
    6229   case 227:
    6230 
    6231 /* Line 1806 of yacc.c  */
    6232 #line 977 "parser.yy"
     6242  case 230:
     6243
     6244/* Line 1806 of yacc.c  */
     6245#line 986 "parser.yy"
    62336246    { (yyval.en) = 0; }
    62346247    break;
    62356248
    6236   case 228:
    6237 
    6238 /* Line 1806 of yacc.c  */
    6239 #line 979 "parser.yy"
     6249  case 231:
     6250
     6251/* Line 1806 of yacc.c  */
     6252#line 988 "parser.yy"
    62406253    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62416254    break;
    62426255
    6243   case 229:
    6244 
    6245 /* Line 1806 of yacc.c  */
    6246 #line 981 "parser.yy"
     6256  case 232:
     6257
     6258/* Line 1806 of yacc.c  */
     6259#line 990 "parser.yy"
    62476260    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62486261    break;
    62496262
    6250   case 230:
    6251 
    6252 /* Line 1806 of yacc.c  */
    6253 #line 986 "parser.yy"
     6263  case 233:
     6264
     6265/* Line 1806 of yacc.c  */
     6266#line 995 "parser.yy"
    62546267    {
    62556268                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62586271    break;
    62596272
    6260   case 231:
    6261 
    6262 /* Line 1806 of yacc.c  */
    6263 #line 991 "parser.yy"
     6273  case 234:
     6274
     6275/* Line 1806 of yacc.c  */
     6276#line 1000 "parser.yy"
    62646277    {
    62656278                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62686281    break;
    62696282
    6270   case 232:
    6271 
    6272 /* Line 1806 of yacc.c  */
    6273 #line 1001 "parser.yy"
     6283  case 235:
     6284
     6285/* Line 1806 of yacc.c  */
     6286#line 1010 "parser.yy"
    62746287    { (yyval.decl) = 0; }
    62756288    break;
    62766289
    6277   case 235:
    6278 
    6279 /* Line 1806 of yacc.c  */
    6280 #line 1008 "parser.yy"
     6290  case 238:
     6291
     6292/* Line 1806 of yacc.c  */
     6293#line 1017 "parser.yy"
    62816294    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62826295    break;
    62836296
    6284   case 236:
    6285 
    6286 /* Line 1806 of yacc.c  */
    6287 #line 1013 "parser.yy"
     6297  case 239:
     6298
     6299/* Line 1806 of yacc.c  */
     6300#line 1022 "parser.yy"
    62886301    { (yyval.decl) = 0; }
    62896302    break;
    62906303
    6291   case 239:
    6292 
    6293 /* Line 1806 of yacc.c  */
    6294 #line 1020 "parser.yy"
     6304  case 242:
     6305
     6306/* Line 1806 of yacc.c  */
     6307#line 1029 "parser.yy"
    62956308    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62966309    break;
    62976310
    6298   case 244:
    6299 
    6300 /* Line 1806 of yacc.c  */
    6301 #line 1034 "parser.yy"
     6311  case 247:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 1043 "parser.yy"
    63026315    {}
    63036316    break;
    63046317
    6305   case 245:
    6306 
    6307 /* Line 1806 of yacc.c  */
    6308 #line 1035 "parser.yy"
     6318  case 248:
     6319
     6320/* Line 1806 of yacc.c  */
     6321#line 1044 "parser.yy"
    63096322    {}
    63106323    break;
    63116324
    6312   case 253:
    6313 
    6314 /* Line 1806 of yacc.c  */
    6315 #line 1064 "parser.yy"
     6325  case 256:
     6326
     6327/* Line 1806 of yacc.c  */
     6328#line 1073 "parser.yy"
    63166329    {
    63176330                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63206333    break;
    63216334
    6322   case 254:
    6323 
    6324 /* Line 1806 of yacc.c  */
    6325 #line 1071 "parser.yy"
     6335  case 257:
     6336
     6337/* Line 1806 of yacc.c  */
     6338#line 1080 "parser.yy"
    63266339    {
    63276340                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63306343    break;
    63316344
    6332   case 255:
    6333 
    6334 /* Line 1806 of yacc.c  */
    6335 #line 1076 "parser.yy"
     6345  case 258:
     6346
     6347/* Line 1806 of yacc.c  */
     6348#line 1085 "parser.yy"
    63366349    {
    63376350                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63406353    break;
    63416354
    6342   case 256:
    6343 
    6344 /* Line 1806 of yacc.c  */
    6345 #line 1086 "parser.yy"
     6355  case 259:
     6356
     6357/* Line 1806 of yacc.c  */
     6358#line 1095 "parser.yy"
    63466359    {
    63476360                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63506363    break;
    63516364
    6352   case 257:
    6353 
    6354 /* Line 1806 of yacc.c  */
    6355 #line 1091 "parser.yy"
     6365  case 260:
     6366
     6367/* Line 1806 of yacc.c  */
     6368#line 1100 "parser.yy"
    63566369    {
    63576370                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63606373    break;
    63616374
    6362   case 258:
    6363 
    6364 /* Line 1806 of yacc.c  */
    6365 #line 1096 "parser.yy"
     6375  case 261:
     6376
     6377/* Line 1806 of yacc.c  */
     6378#line 1105 "parser.yy"
    63666379    {
    63676380                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63706383    break;
    63716384
    6372   case 259:
    6373 
    6374 /* Line 1806 of yacc.c  */
    6375 #line 1104 "parser.yy"
     6385  case 262:
     6386
     6387/* Line 1806 of yacc.c  */
     6388#line 1113 "parser.yy"
    63766389    {
    63776390                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63806393    break;
    63816394
    6382   case 260:
    6383 
    6384 /* Line 1806 of yacc.c  */
    6385 #line 1109 "parser.yy"
     6395  case 263:
     6396
     6397/* Line 1806 of yacc.c  */
     6398#line 1118 "parser.yy"
    63866399    {
    63876400                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63906403    break;
    63916404
    6392   case 261:
    6393 
    6394 /* Line 1806 of yacc.c  */
    6395 #line 1114 "parser.yy"
     6405  case 264:
     6406
     6407/* Line 1806 of yacc.c  */
     6408#line 1123 "parser.yy"
    63966409    {
    63976410                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64006413    break;
    64016414
    6402   case 262:
    6403 
    6404 /* Line 1806 of yacc.c  */
    6405 #line 1119 "parser.yy"
     6415  case 265:
     6416
     6417/* Line 1806 of yacc.c  */
     6418#line 1128 "parser.yy"
    64066419    {
    64076420                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64106423    break;
    64116424
    6412   case 263:
    6413 
    6414 /* Line 1806 of yacc.c  */
    6415 #line 1124 "parser.yy"
     6425  case 266:
     6426
     6427/* Line 1806 of yacc.c  */
     6428#line 1133 "parser.yy"
    64166429    {
    64176430                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64206433    break;
    64216434
    6422   case 264:
    6423 
    6424 /* Line 1806 of yacc.c  */
    6425 #line 1132 "parser.yy"
     6435  case 267:
     6436
     6437/* Line 1806 of yacc.c  */
     6438#line 1141 "parser.yy"
    64266439    {
    64276440                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64296442    break;
    64306443
    6431   case 265:
    6432 
    6433 /* Line 1806 of yacc.c  */
    6434 #line 1155 "parser.yy"
     6444  case 268:
     6445
     6446/* Line 1806 of yacc.c  */
     6447#line 1164 "parser.yy"
    64356448    {
    64366449                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64386451    break;
    64396452
    6440   case 266:
    6441 
    6442 /* Line 1806 of yacc.c  */
    6443 #line 1159 "parser.yy"
     6453  case 269:
     6454
     6455/* Line 1806 of yacc.c  */
     6456#line 1168 "parser.yy"
    64446457    {
    64456458                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64476460    break;
    64486461
    6449   case 267:
    6450 
    6451 /* Line 1806 of yacc.c  */
    6452 #line 1166 "parser.yy"
     6462  case 270:
     6463
     6464/* Line 1806 of yacc.c  */
     6465#line 1175 "parser.yy"
    64536466    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64546467    break;
    64556468
    6456   case 268:
    6457 
    6458 /* Line 1806 of yacc.c  */
    6459 #line 1170 "parser.yy"
     6469  case 271:
     6470
     6471/* Line 1806 of yacc.c  */
     6472#line 1179 "parser.yy"
    64606473    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64616474    break;
    64626475
    6463   case 269:
    6464 
    6465 /* Line 1806 of yacc.c  */
    6466 #line 1175 "parser.yy"
     6476  case 272:
     6477
     6478/* Line 1806 of yacc.c  */
     6479#line 1184 "parser.yy"
    64676480    {
    64686481                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64716484    break;
    64726485
    6473   case 270:
    6474 
    6475 /* Line 1806 of yacc.c  */
    6476 #line 1180 "parser.yy"
     6486  case 273:
     6487
     6488/* Line 1806 of yacc.c  */
     6489#line 1189 "parser.yy"
    64776490    {
    64786491                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64816494    break;
    64826495
    6483   case 271:
    6484 
    6485 /* Line 1806 of yacc.c  */
    6486 #line 1185 "parser.yy"
     6496  case 274:
     6497
     6498/* Line 1806 of yacc.c  */
     6499#line 1194 "parser.yy"
    64876500    {
    64886501                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64916504    break;
    64926505
    6493   case 272:
    6494 
    6495 /* Line 1806 of yacc.c  */
    6496 #line 1196 "parser.yy"
     6506  case 275:
     6507
     6508/* Line 1806 of yacc.c  */
     6509#line 1205 "parser.yy"
    64976510    {
    64986511                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65016514    break;
    65026515
    6503   case 273:
    6504 
    6505 /* Line 1806 of yacc.c  */
    6506 #line 1201 "parser.yy"
     6516  case 276:
     6517
     6518/* Line 1806 of yacc.c  */
     6519#line 1210 "parser.yy"
    65076520    {
    65086521                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65116524    break;
    65126525
    6513   case 274:
    6514 
    6515 /* Line 1806 of yacc.c  */
    6516 #line 1206 "parser.yy"
     6526  case 277:
     6527
     6528/* Line 1806 of yacc.c  */
     6529#line 1215 "parser.yy"
    65176530    {
    65186531                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65216534    break;
    65226535
    6523   case 275:
    6524 
    6525 /* Line 1806 of yacc.c  */
    6526 #line 1211 "parser.yy"
     6536  case 278:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1220 "parser.yy"
    65276540    {
    65286541                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65316544    break;
    65326545
    6533   case 276:
    6534 
    6535 /* Line 1806 of yacc.c  */
    6536 #line 1216 "parser.yy"
     6546  case 279:
     6547
     6548/* Line 1806 of yacc.c  */
     6549#line 1225 "parser.yy"
    65376550    {
    65386551                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65416554    break;
    65426555
    6543   case 277:
    6544 
    6545 /* Line 1806 of yacc.c  */
    6546 #line 1225 "parser.yy"
     6556  case 280:
     6557
     6558/* Line 1806 of yacc.c  */
     6559#line 1234 "parser.yy"
    65476560    {
    65486561                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65516564    break;
    65526565
    6553   case 278:
    6554 
    6555 /* Line 1806 of yacc.c  */
    6556 #line 1230 "parser.yy"
     6566  case 281:
     6567
     6568/* Line 1806 of yacc.c  */
     6569#line 1239 "parser.yy"
    65576570    {
    65586571                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65616574    break;
    65626575
    6563   case 283:
    6564 
    6565 /* Line 1806 of yacc.c  */
    6566 #line 1247 "parser.yy"
     6576  case 286:
     6577
     6578/* Line 1806 of yacc.c  */
     6579#line 1256 "parser.yy"
    65676580    {
    65686581                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65716584    break;
    65726585
    6573   case 284:
    6574 
    6575 /* Line 1806 of yacc.c  */
    6576 #line 1252 "parser.yy"
     6586  case 287:
     6587
     6588/* Line 1806 of yacc.c  */
     6589#line 1261 "parser.yy"
    65776590    {
    65786591                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65816594    break;
    65826595
    6583   case 293:
    6584 
    6585 /* Line 1806 of yacc.c  */
    6586 #line 1274 "parser.yy"
     6596  case 296:
     6597
     6598/* Line 1806 of yacc.c  */
     6599#line 1283 "parser.yy"
    65876600    { (yyval.decl) = 0; }
    65886601    break;
    65896602
    6590   case 296:
    6591 
    6592 /* Line 1806 of yacc.c  */
    6593 #line 1286 "parser.yy"
     6603  case 299:
     6604
     6605/* Line 1806 of yacc.c  */
     6606#line 1295 "parser.yy"
    65946607    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65956608    break;
    65966609
    6597   case 299:
    6598 
    6599 /* Line 1806 of yacc.c  */
    6600 #line 1297 "parser.yy"
     6610  case 302:
     6611
     6612/* Line 1806 of yacc.c  */
     6613#line 1306 "parser.yy"
    66016614    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    66026615    break;
    66036616
    6604   case 300:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1299 "parser.yy"
     6617  case 303:
     6618
     6619/* Line 1806 of yacc.c  */
     6620#line 1308 "parser.yy"
    66086621    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66096622    break;
    66106623
    6611   case 301:
    6612 
    6613 /* Line 1806 of yacc.c  */
    6614 #line 1301 "parser.yy"
     6624  case 304:
     6625
     6626/* Line 1806 of yacc.c  */
     6627#line 1310 "parser.yy"
    66156628    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66166629    break;
    66176630
    6618   case 302:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1303 "parser.yy"
     6631  case 305:
     6632
     6633/* Line 1806 of yacc.c  */
     6634#line 1312 "parser.yy"
    66226635    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66236636    break;
    66246637
    6625   case 303:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1305 "parser.yy"
     6638  case 306:
     6639
     6640/* Line 1806 of yacc.c  */
     6641#line 1314 "parser.yy"
    66296642    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66306643    break;
    66316644
    6632   case 304:
    6633 
    6634 /* Line 1806 of yacc.c  */
    6635 #line 1307 "parser.yy"
     6645  case 307:
     6646
     6647/* Line 1806 of yacc.c  */
     6648#line 1316 "parser.yy"
    66366649    {
    66376650                        typedefTable.enterScope();
     
    66396652    break;
    66406653
    6641   case 305:
    6642 
    6643 /* Line 1806 of yacc.c  */
    6644 #line 1311 "parser.yy"
     6654  case 308:
     6655
     6656/* Line 1806 of yacc.c  */
     6657#line 1320 "parser.yy"
    66456658    {
    66466659                        typedefTable.leaveScope();
     
    66496662    break;
    66506663
    6651   case 307:
    6652 
    6653 /* Line 1806 of yacc.c  */
    6654 #line 1320 "parser.yy"
     6664  case 310:
     6665
     6666/* Line 1806 of yacc.c  */
     6667#line 1329 "parser.yy"
    66556668    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66566669    break;
    66576670
    6658   case 308:
    6659 
    6660 /* Line 1806 of yacc.c  */
    6661 #line 1322 "parser.yy"
     6671  case 311:
     6672
     6673/* Line 1806 of yacc.c  */
     6674#line 1331 "parser.yy"
    66626675    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66636676    break;
    66646677
    6665   case 310:
    6666 
    6667 /* Line 1806 of yacc.c  */
    6668 #line 1333 "parser.yy"
     6678  case 313:
     6679
     6680/* Line 1806 of yacc.c  */
     6681#line 1342 "parser.yy"
    66696682    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66706683    break;
    66716684
    6672   case 311:
    6673 
    6674 /* Line 1806 of yacc.c  */
    6675 #line 1338 "parser.yy"
     6685  case 314:
     6686
     6687/* Line 1806 of yacc.c  */
     6688#line 1347 "parser.yy"
    66766689    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66776690    break;
    66786691
    6679   case 312:
    6680 
    6681 /* Line 1806 of yacc.c  */
    6682 #line 1340 "parser.yy"
     6692  case 315:
     6693
     6694/* Line 1806 of yacc.c  */
     6695#line 1349 "parser.yy"
    66836696    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66846697    break;
    66856698
    6686   case 313:
    6687 
    6688 /* Line 1806 of yacc.c  */
    6689 #line 1342 "parser.yy"
     6699  case 316:
     6700
     6701/* Line 1806 of yacc.c  */
     6702#line 1351 "parser.yy"
    66906703    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66916704    break;
    66926705
    6693   case 314:
    6694 
    6695 /* Line 1806 of yacc.c  */
    6696 #line 1344 "parser.yy"
     6706  case 317:
     6707
     6708/* Line 1806 of yacc.c  */
     6709#line 1353 "parser.yy"
    66976710    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66986711    break;
    66996712
    6700   case 315:
    6701 
    6702 /* Line 1806 of yacc.c  */
    6703 #line 1347 "parser.yy"
     6713  case 318:
     6714
     6715/* Line 1806 of yacc.c  */
     6716#line 1356 "parser.yy"
    67046717    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    67056718    break;
    67066719
    6707   case 316:
    6708 
    6709 /* Line 1806 of yacc.c  */
    6710 #line 1349 "parser.yy"
     6720  case 319:
     6721
     6722/* Line 1806 of yacc.c  */
     6723#line 1358 "parser.yy"
    67116724    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67126725    break;
    67136726
    6714   case 317:
    6715 
    6716 /* Line 1806 of yacc.c  */
    6717 #line 1352 "parser.yy"
     6727  case 320:
     6728
     6729/* Line 1806 of yacc.c  */
     6730#line 1361 "parser.yy"
    67186731    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67196732    break;
    67206733
    6721   case 318:
    6722 
    6723 /* Line 1806 of yacc.c  */
    6724 #line 1354 "parser.yy"
     6734  case 321:
     6735
     6736/* Line 1806 of yacc.c  */
     6737#line 1363 "parser.yy"
    67256738    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67266739    break;
    67276740
    6728   case 319:
    6729 
    6730 /* Line 1806 of yacc.c  */
    6731 #line 1359 "parser.yy"
     6741  case 322:
     6742
     6743/* Line 1806 of yacc.c  */
     6744#line 1368 "parser.yy"
    67326745    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67336746    break;
    67346747
    6735   case 320:
    6736 
    6737 /* Line 1806 of yacc.c  */
    6738 #line 1361 "parser.yy"
     6748  case 323:
     6749
     6750/* Line 1806 of yacc.c  */
     6751#line 1370 "parser.yy"
    67396752    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67406753    break;
    67416754
    6742   case 321:
    6743 
    6744 /* Line 1806 of yacc.c  */
    6745 #line 1363 "parser.yy"
     6755  case 324:
     6756
     6757/* Line 1806 of yacc.c  */
     6758#line 1372 "parser.yy"
    67466759    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67476760    break;
    67486761
    6749   case 322:
    6750 
    6751 /* Line 1806 of yacc.c  */
    6752 #line 1365 "parser.yy"
     6762  case 325:
     6763
     6764/* Line 1806 of yacc.c  */
     6765#line 1374 "parser.yy"
    67536766    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67546767    break;
    67556768
    6756   case 323:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1367 "parser.yy"
     6769  case 326:
     6770
     6771/* Line 1806 of yacc.c  */
     6772#line 1376 "parser.yy"
    67606773    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67616774    break;
    67626775
    6763   case 324:
    6764 
    6765 /* Line 1806 of yacc.c  */
    6766 #line 1369 "parser.yy"
     6776  case 327:
     6777
     6778/* Line 1806 of yacc.c  */
     6779#line 1378 "parser.yy"
    67676780    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67686781    break;
    67696782
    6770   case 325:
    6771 
    6772 /* Line 1806 of yacc.c  */
    6773 #line 1371 "parser.yy"
     6783  case 328:
     6784
     6785/* Line 1806 of yacc.c  */
     6786#line 1380 "parser.yy"
    67746787    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67756788    break;
    67766789
    6777   case 326:
    6778 
    6779 /* Line 1806 of yacc.c  */
    6780 #line 1373 "parser.yy"
     6790  case 329:
     6791
     6792/* Line 1806 of yacc.c  */
     6793#line 1382 "parser.yy"
    67816794    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67826795    break;
    67836796
    6784   case 327:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1375 "parser.yy"
     6797  case 330:
     6798
     6799/* Line 1806 of yacc.c  */
     6800#line 1384 "parser.yy"
    67886801    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67896802    break;
    67906803
    6791   case 328:
    6792 
    6793 /* Line 1806 of yacc.c  */
    6794 #line 1377 "parser.yy"
     6804  case 331:
     6805
     6806/* Line 1806 of yacc.c  */
     6807#line 1386 "parser.yy"
    67956808    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67966809    break;
    67976810
    6798   case 329:
    6799 
    6800 /* Line 1806 of yacc.c  */
    6801 #line 1379 "parser.yy"
     6811  case 332:
     6812
     6813/* Line 1806 of yacc.c  */
     6814#line 1388 "parser.yy"
    68026815    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    68036816    break;
    68046817
    6805   case 330:
    6806 
    6807 /* Line 1806 of yacc.c  */
    6808 #line 1381 "parser.yy"
     6818  case 333:
     6819
     6820/* Line 1806 of yacc.c  */
     6821#line 1390 "parser.yy"
    68096822    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    68106823    break;
    68116824
    6812   case 331:
    6813 
    6814 /* Line 1806 of yacc.c  */
    6815 #line 1383 "parser.yy"
     6825  case 334:
     6826
     6827/* Line 1806 of yacc.c  */
     6828#line 1392 "parser.yy"
    68166829    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68176830    break;
    68186831
    6819   case 333:
    6820 
    6821 /* Line 1806 of yacc.c  */
    6822 #line 1390 "parser.yy"
     6832  case 336:
     6833
     6834/* Line 1806 of yacc.c  */
     6835#line 1399 "parser.yy"
    68236836    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68246837    break;
    68256838
    6826   case 334:
    6827 
    6828 /* Line 1806 of yacc.c  */
    6829 #line 1392 "parser.yy"
     6839  case 337:
     6840
     6841/* Line 1806 of yacc.c  */
     6842#line 1401 "parser.yy"
    68306843    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68316844    break;
    68326845
    6833   case 335:
    6834 
    6835 /* Line 1806 of yacc.c  */
    6836 #line 1394 "parser.yy"
     6846  case 338:
     6847
     6848/* Line 1806 of yacc.c  */
     6849#line 1403 "parser.yy"
    68376850    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68386851    break;
    68396852
    6840   case 336:
    6841 
    6842 /* Line 1806 of yacc.c  */
    6843 #line 1396 "parser.yy"
     6853  case 339:
     6854
     6855/* Line 1806 of yacc.c  */
     6856#line 1405 "parser.yy"
    68446857    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68456858    break;
    68466859
    6847   case 338:
    6848 
    6849 /* Line 1806 of yacc.c  */
    6850 #line 1402 "parser.yy"
     6860  case 341:
     6861
     6862/* Line 1806 of yacc.c  */
     6863#line 1411 "parser.yy"
    68516864    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68526865    break;
    68536866
    6854   case 340:
    6855 
    6856 /* Line 1806 of yacc.c  */
    6857 #line 1409 "parser.yy"
     6867  case 343:
     6868
     6869/* Line 1806 of yacc.c  */
     6870#line 1418 "parser.yy"
    68586871    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68596872    break;
    68606873
    6861   case 341:
    6862 
    6863 /* Line 1806 of yacc.c  */
    6864 #line 1411 "parser.yy"
     6874  case 344:
     6875
     6876/* Line 1806 of yacc.c  */
     6877#line 1420 "parser.yy"
    68656878    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68666879    break;
    68676880
    6868   case 342:
    6869 
    6870 /* Line 1806 of yacc.c  */
    6871 #line 1413 "parser.yy"
     6881  case 345:
     6882
     6883/* Line 1806 of yacc.c  */
     6884#line 1422 "parser.yy"
    68726885    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68736886    break;
    68746887
    6875   case 343:
    6876 
    6877 /* Line 1806 of yacc.c  */
    6878 #line 1418 "parser.yy"
     6888  case 346:
     6889
     6890/* Line 1806 of yacc.c  */
     6891#line 1427 "parser.yy"
    68796892    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68806893    break;
    68816894
    6882   case 344:
    6883 
    6884 /* Line 1806 of yacc.c  */
    6885 #line 1420 "parser.yy"
     6895  case 347:
     6896
     6897/* Line 1806 of yacc.c  */
     6898#line 1429 "parser.yy"
    68866899    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68876900    break;
    68886901
    6889   case 345:
    6890 
    6891 /* Line 1806 of yacc.c  */
    6892 #line 1422 "parser.yy"
     6902  case 348:
     6903
     6904/* Line 1806 of yacc.c  */
     6905#line 1431 "parser.yy"
    68936906    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68946907    break;
    68956908
    6896   case 346:
    6897 
    6898 /* Line 1806 of yacc.c  */
    6899 #line 1424 "parser.yy"
     6909  case 349:
     6910
     6911/* Line 1806 of yacc.c  */
     6912#line 1433 "parser.yy"
    69006913    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    69016914    break;
    69026915
    6903   case 348:
    6904 
    6905 /* Line 1806 of yacc.c  */
    6906 #line 1430 "parser.yy"
     6916  case 351:
     6917
     6918/* Line 1806 of yacc.c  */
     6919#line 1439 "parser.yy"
    69076920    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69086921    break;
    69096922
    6910   case 349:
    6911 
    6912 /* Line 1806 of yacc.c  */
    6913 #line 1432 "parser.yy"
     6923  case 352:
     6924
     6925/* Line 1806 of yacc.c  */
     6926#line 1441 "parser.yy"
    69146927    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69156928    break;
    69166929
    6917   case 350:
    6918 
    6919 /* Line 1806 of yacc.c  */
    6920 #line 1434 "parser.yy"
     6930  case 353:
     6931
     6932/* Line 1806 of yacc.c  */
     6933#line 1443 "parser.yy"
    69216934    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69226935    break;
    69236936
    6924   case 352:
    6925 
    6926 /* Line 1806 of yacc.c  */
    6927 #line 1440 "parser.yy"
     6937  case 355:
     6938
     6939/* Line 1806 of yacc.c  */
     6940#line 1449 "parser.yy"
    69286941    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69296942    break;
    69306943
    6931   case 353:
    6932 
    6933 /* Line 1806 of yacc.c  */
    6934 #line 1442 "parser.yy"
     6944  case 356:
     6945
     6946/* Line 1806 of yacc.c  */
     6947#line 1451 "parser.yy"
    69356948    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69366949    break;
    69376950
    6938   case 355:
    6939 
    6940 /* Line 1806 of yacc.c  */
    6941 #line 1448 "parser.yy"
     6951  case 358:
     6952
     6953/* Line 1806 of yacc.c  */
     6954#line 1457 "parser.yy"
    69426955    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69436956    break;
    69446957
    6945   case 356:
    6946 
    6947 /* Line 1806 of yacc.c  */
    6948 #line 1450 "parser.yy"
     6958  case 359:
     6959
     6960/* Line 1806 of yacc.c  */
     6961#line 1459 "parser.yy"
    69496962    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69506963    break;
    69516964
    6952   case 357:
    6953 
    6954 /* Line 1806 of yacc.c  */
    6955 #line 1452 "parser.yy"
     6965  case 360:
     6966
     6967/* Line 1806 of yacc.c  */
     6968#line 1461 "parser.yy"
    69566969    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69576970    break;
    69586971
    6959   case 358:
    6960 
    6961 /* Line 1806 of yacc.c  */
    6962 #line 1457 "parser.yy"
     6972  case 361:
     6973
     6974/* Line 1806 of yacc.c  */
     6975#line 1466 "parser.yy"
    69636976    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69646977    break;
    69656978
    6966   case 359:
    6967 
    6968 /* Line 1806 of yacc.c  */
    6969 #line 1459 "parser.yy"
     6979  case 362:
     6980
     6981/* Line 1806 of yacc.c  */
     6982#line 1468 "parser.yy"
    69706983    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69716984    break;
    69726985
    6973   case 360:
    6974 
    6975 /* Line 1806 of yacc.c  */
    6976 #line 1461 "parser.yy"
     6986  case 363:
     6987
     6988/* Line 1806 of yacc.c  */
     6989#line 1470 "parser.yy"
    69776990    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69786991    break;
    69796992
    6980   case 363:
    6981 
    6982 /* Line 1806 of yacc.c  */
    6983 #line 1471 "parser.yy"
    6984     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
    6985     break;
    6986 
    6987   case 364:
    6988 
    6989 /* Line 1806 of yacc.c  */
    6990 #line 1473 "parser.yy"
     6993  case 366:
     6994
     6995/* Line 1806 of yacc.c  */
     6996#line 1480 "parser.yy"
     6997    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     6998    break;
     6999
     7000  case 367:
     7001
     7002/* Line 1806 of yacc.c  */
     7003#line 1482 "parser.yy"
    69917004    {
    69927005                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    6993                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
     7006                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), nullptr, nullptr, false );
    69947007                }
    69957008    break;
    69967009
    6997   case 365:
    6998 
    6999 /* Line 1806 of yacc.c  */
    7000 #line 1478 "parser.yy"
     7010  case 368:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1487 "parser.yy"
    70017014    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    70027015    break;
    70037016
    7004   case 366:
    7005 
    7006 /* Line 1806 of yacc.c  */
    7007 #line 1480 "parser.yy"
    7008     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
    7009     break;
    7010 
    7011   case 367:
    7012 
    7013 /* Line 1806 of yacc.c  */
    7014 #line 1482 "parser.yy"
    7015     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    7016     break;
    7017 
    7018   case 368:
    7019 
    7020 /* Line 1806 of yacc.c  */
    7021 #line 1484 "parser.yy"
     7017  case 369:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1489 "parser.yy"
     7021    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     7022    break;
     7023
     7024  case 370:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1491 "parser.yy"
     7028    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7029    break;
     7030
     7031  case 371:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1493 "parser.yy"
    70227035    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70237036    break;
    70247037
    7025   case 369:
    7026 
    7027 /* Line 1806 of yacc.c  */
    7028 #line 1489 "parser.yy"
     7038  case 372:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1498 "parser.yy"
    70297042    { (yyval.aggKey) = DeclarationNode::Struct; }
    70307043    break;
    70317044
    7032   case 370:
    7033 
    7034 /* Line 1806 of yacc.c  */
    7035 #line 1491 "parser.yy"
     7045  case 373:
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1500 "parser.yy"
    70367049    { (yyval.aggKey) = DeclarationNode::Union; }
    70377050    break;
    70387051
    7039   case 371:
    7040 
    7041 /* Line 1806 of yacc.c  */
    7042 #line 1496 "parser.yy"
     7052  case 374:
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1505 "parser.yy"
    70437056    { (yyval.decl) = 0; }
    70447057    break;
    70457058
    7046   case 372:
    7047 
    7048 /* Line 1806 of yacc.c  */
    7049 #line 1498 "parser.yy"
     7059  case 375:
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1507 "parser.yy"
    70507063    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70517064    break;
    70527065
    7053   case 374:
    7054 
    7055 /* Line 1806 of yacc.c  */
    7056 #line 1504 "parser.yy"
     7066  case 377:
     7067
     7068/* Line 1806 of yacc.c  */
     7069#line 1513 "parser.yy"
    70577070    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70587071    break;
    70597072
    7060   case 376:
    7061 
    7062 /* Line 1806 of yacc.c  */
    7063 #line 1507 "parser.yy"
     7073  case 379:
     7074
     7075/* Line 1806 of yacc.c  */
     7076#line 1516 "parser.yy"
    70647077    {   // mark all fields in list
    70657078                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70697082    break;
    70707083
    7071   case 378:
    7072 
    7073 /* Line 1806 of yacc.c  */
    7074 #line 1517 "parser.yy"
     7084  case 381:
     7085
     7086/* Line 1806 of yacc.c  */
     7087#line 1526 "parser.yy"
    70757088    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70767089    break;
    70777090
    7078   case 379:
    7079 
    7080 /* Line 1806 of yacc.c  */
    7081 #line 1519 "parser.yy"
     7091  case 382:
     7092
     7093/* Line 1806 of yacc.c  */
     7094#line 1528 "parser.yy"
    70827095    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70837096    break;
    70847097
    7085   case 380:
    7086 
    7087 /* Line 1806 of yacc.c  */
    7088 #line 1521 "parser.yy"
     7098  case 383:
     7099
     7100/* Line 1806 of yacc.c  */
     7101#line 1530 "parser.yy"
    70897102    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70907103    break;
    70917104
    7092   case 381:
    7093 
    7094 /* Line 1806 of yacc.c  */
    7095 #line 1526 "parser.yy"
     7105  case 384:
     7106
     7107/* Line 1806 of yacc.c  */
     7108#line 1535 "parser.yy"
    70967109    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70977110    break;
    70987111
    7099   case 382:
    7100 
    7101 /* Line 1806 of yacc.c  */
    7102 #line 1528 "parser.yy"
     7112  case 385:
     7113
     7114/* Line 1806 of yacc.c  */
     7115#line 1537 "parser.yy"
    71037116    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71047117    break;
    71057118
    7106   case 383:
    7107 
    7108 /* Line 1806 of yacc.c  */
    7109 #line 1533 "parser.yy"
     7119  case 386:
     7120
     7121/* Line 1806 of yacc.c  */
     7122#line 1542 "parser.yy"
    71107123    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71117124    break;
    71127125
    7113   case 384:
    7114 
    7115 /* Line 1806 of yacc.c  */
    7116 #line 1535 "parser.yy"
     7126  case 387:
     7127
     7128/* Line 1806 of yacc.c  */
     7129#line 1544 "parser.yy"
    71177130    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71187131    break;
    71197132
    7120   case 385:
    7121 
    7122 /* Line 1806 of yacc.c  */
    7123 #line 1538 "parser.yy"
     7133  case 388:
     7134
     7135/* Line 1806 of yacc.c  */
     7136#line 1547 "parser.yy"
    71247137    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71257138    break;
    71267139
    7127   case 386:
    7128 
    7129 /* Line 1806 of yacc.c  */
    7130 #line 1541 "parser.yy"
     7140  case 389:
     7141
     7142/* Line 1806 of yacc.c  */
     7143#line 1550 "parser.yy"
    71317144    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71327145    break;
    71337146
    7134   case 388:
    7135 
    7136 /* Line 1806 of yacc.c  */
    7137 #line 1547 "parser.yy"
     7147  case 391:
     7148
     7149/* Line 1806 of yacc.c  */
     7150#line 1556 "parser.yy"
    71387151    { (yyval.en) = 0; }
    71397152    break;
    71407153
    7141   case 389:
    7142 
    7143 /* Line 1806 of yacc.c  */
    7144 #line 1549 "parser.yy"
     7154  case 392:
     7155
     7156/* Line 1806 of yacc.c  */
     7157#line 1558 "parser.yy"
    71457158    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71467159    break;
    71477160
    7148   case 390:
    7149 
    7150 /* Line 1806 of yacc.c  */
    7151 #line 1554 "parser.yy"
     7161  case 393:
     7162
     7163/* Line 1806 of yacc.c  */
     7164#line 1563 "parser.yy"
    71527165    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71537166    break;
    71547167
    7155   case 392:
    7156 
    7157 /* Line 1806 of yacc.c  */
    7158 #line 1563 "parser.yy"
    7159     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7160     break;
    7161 
    7162   case 393:
    7163 
    7164 /* Line 1806 of yacc.c  */
    7165 #line 1565 "parser.yy"
     7168  case 395:
     7169
     7170/* Line 1806 of yacc.c  */
     7171#line 1572 "parser.yy"
     7172    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     7173    break;
     7174
     7175  case 396:
     7176
     7177/* Line 1806 of yacc.c  */
     7178#line 1574 "parser.yy"
    71667179    {
    71677180                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71707183    break;
    71717184
    7172   case 394:
    7173 
    7174 /* Line 1806 of yacc.c  */
    7175 #line 1570 "parser.yy"
     7185  case 397:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1579 "parser.yy"
    71767189    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71777190    break;
    71787191
    7179   case 395:
    7180 
    7181 /* Line 1806 of yacc.c  */
    7182 #line 1572 "parser.yy"
     7192  case 398:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1581 "parser.yy"
    71837196    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71847197    break;
    71857198
    7186   case 396:
    7187 
    7188 /* Line 1806 of yacc.c  */
    7189 #line 1577 "parser.yy"
     7199  case 399:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1586 "parser.yy"
    71907203    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71917204    break;
    71927205
    7193   case 397:
    7194 
    7195 /* Line 1806 of yacc.c  */
    7196 #line 1579 "parser.yy"
     7206  case 400:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1588 "parser.yy"
    71977210    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71987211    break;
    71997212
    7200   case 398:
    7201 
    7202 /* Line 1806 of yacc.c  */
    7203 #line 1584 "parser.yy"
     7213  case 401:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1593 "parser.yy"
    72047217    { (yyval.en) = 0; }
    72057218    break;
    72067219
    7207   case 399:
    7208 
    7209 /* Line 1806 of yacc.c  */
    7210 #line 1586 "parser.yy"
     7220  case 402:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1595 "parser.yy"
    72117224    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72127225    break;
    72137226
    7214   case 400:
    7215 
    7216 /* Line 1806 of yacc.c  */
    7217 #line 1593 "parser.yy"
     7227  case 403:
     7228
     7229/* Line 1806 of yacc.c  */
     7230#line 1602 "parser.yy"
    72187231    { (yyval.decl) = 0; }
    72197232    break;
    72207233
    7221   case 404:
    7222 
    7223 /* Line 1806 of yacc.c  */
    7224 #line 1601 "parser.yy"
     7234  case 407:
     7235
     7236/* Line 1806 of yacc.c  */
     7237#line 1610 "parser.yy"
    72257238    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72267239    break;
    72277240
    7228   case 405:
    7229 
    7230 /* Line 1806 of yacc.c  */
    7231 #line 1603 "parser.yy"
     7241  case 408:
     7242
     7243/* Line 1806 of yacc.c  */
     7244#line 1612 "parser.yy"
    72327245    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72337246    break;
    72347247
    7235   case 406:
    7236 
    7237 /* Line 1806 of yacc.c  */
    7238 #line 1605 "parser.yy"
     7248  case 409:
     7249
     7250/* Line 1806 of yacc.c  */
     7251#line 1614 "parser.yy"
    72397252    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72407253    break;
    72417254
    7242   case 408:
    7243 
    7244 /* Line 1806 of yacc.c  */
    7245 #line 1613 "parser.yy"
     7255  case 411:
     7256
     7257/* Line 1806 of yacc.c  */
     7258#line 1622 "parser.yy"
    72467259    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72477260    break;
    72487261
    7249   case 409:
    7250 
    7251 /* Line 1806 of yacc.c  */
    7252 #line 1615 "parser.yy"
     7262  case 412:
     7263
     7264/* Line 1806 of yacc.c  */
     7265#line 1624 "parser.yy"
    72537266    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72547267    break;
    72557268
    7256   case 410:
    7257 
    7258 /* Line 1806 of yacc.c  */
    7259 #line 1617 "parser.yy"
     7269  case 413:
     7270
     7271/* Line 1806 of yacc.c  */
     7272#line 1626 "parser.yy"
    72607273    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72617274    break;
    72627275
    7263   case 412:
    7264 
    7265 /* Line 1806 of yacc.c  */
    7266 #line 1623 "parser.yy"
     7276  case 415:
     7277
     7278/* Line 1806 of yacc.c  */
     7279#line 1632 "parser.yy"
    72677280    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72687281    break;
    72697282
    7270   case 413:
    7271 
    7272 /* Line 1806 of yacc.c  */
    7273 #line 1628 "parser.yy"
     7283  case 416:
     7284
     7285/* Line 1806 of yacc.c  */
     7286#line 1637 "parser.yy"
    72747287    { (yyval.decl) = 0; }
    72757288    break;
    72767289
    7277   case 416:
    7278 
    7279 /* Line 1806 of yacc.c  */
    7280 #line 1635 "parser.yy"
     7290  case 419:
     7291
     7292/* Line 1806 of yacc.c  */
     7293#line 1644 "parser.yy"
    72817294    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72827295    break;
    72837296
    7284   case 419:
    7285 
    7286 /* Line 1806 of yacc.c  */
    7287 #line 1642 "parser.yy"
     7297  case 422:
     7298
     7299/* Line 1806 of yacc.c  */
     7300#line 1651 "parser.yy"
    72887301    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72897302    break;
    72907303
    7291   case 420:
    7292 
    7293 /* Line 1806 of yacc.c  */
    7294 #line 1644 "parser.yy"
     7304  case 423:
     7305
     7306/* Line 1806 of yacc.c  */
     7307#line 1653 "parser.yy"
    72957308    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72967309    break;
    72977310
    7298   case 422:
    7299 
    7300 /* Line 1806 of yacc.c  */
    7301 #line 1653 "parser.yy"
     7311  case 425:
     7312
     7313/* Line 1806 of yacc.c  */
     7314#line 1662 "parser.yy"
    73027315    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73037316    break;
    73047317
    7305   case 423:
    7306 
    7307 /* Line 1806 of yacc.c  */
    7308 #line 1656 "parser.yy"
     7318  case 426:
     7319
     7320/* Line 1806 of yacc.c  */
     7321#line 1665 "parser.yy"
    73097322    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73107323    break;
    73117324
    7312   case 424:
    7313 
    7314 /* Line 1806 of yacc.c  */
    7315 #line 1658 "parser.yy"
     7325  case 427:
     7326
     7327/* Line 1806 of yacc.c  */
     7328#line 1667 "parser.yy"
    73167329    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73177330    break;
    73187331
    7319   case 429:
    7320 
    7321 /* Line 1806 of yacc.c  */
    7322 #line 1668 "parser.yy"
     7332  case 432:
     7333
     7334/* Line 1806 of yacc.c  */
     7335#line 1677 "parser.yy"
    73237336    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73247337    break;
    73257338
    7326   case 431:
    7327 
    7328 /* Line 1806 of yacc.c  */
    7329 #line 1674 "parser.yy"
     7339  case 434:
     7340
     7341/* Line 1806 of yacc.c  */
     7342#line 1683 "parser.yy"
    73307343    {
    73317344                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73347347    break;
    73357348
    7336   case 432:
    7337 
    7338 /* Line 1806 of yacc.c  */
    7339 #line 1679 "parser.yy"
     7349  case 435:
     7350
     7351/* Line 1806 of yacc.c  */
     7352#line 1688 "parser.yy"
    73407353    {
    73417354                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73447357    break;
    73457358
    7346   case 434:
    7347 
    7348 /* Line 1806 of yacc.c  */
    7349 #line 1688 "parser.yy"
     7359  case 437:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1697 "parser.yy"
    73507363    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73517364    break;
    73527365
    7353   case 435:
    7354 
    7355 /* Line 1806 of yacc.c  */
    7356 #line 1697 "parser.yy"
     7366  case 438:
     7367
     7368/* Line 1806 of yacc.c  */
     7369#line 1706 "parser.yy"
    73577370    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73587371    break;
    73597372
    7360   case 436:
    7361 
    7362 /* Line 1806 of yacc.c  */
    7363 #line 1699 "parser.yy"
     7373  case 439:
     7374
     7375/* Line 1806 of yacc.c  */
     7376#line 1708 "parser.yy"
    73647377    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73657378    break;
    73667379
    7367   case 448:
    7368 
    7369 /* Line 1806 of yacc.c  */
    7370 #line 1724 "parser.yy"
     7380  case 451:
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1733 "parser.yy"
    73717384    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73727385    break;
    73737386
    7374   case 452:
    7375 
    7376 /* Line 1806 of yacc.c  */
    7377 #line 1732 "parser.yy"
     7387  case 455:
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1741 "parser.yy"
    73787391    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73797392    break;
    73807393
    7381   case 453:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1737 "parser.yy"
     7394  case 456:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1746 "parser.yy"
    73857398    { (yyval.in) = 0; }
    73867399    break;
    73877400
    7388   case 454:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1739 "parser.yy"
     7401  case 457:
     7402
     7403/* Line 1806 of yacc.c  */
     7404#line 1748 "parser.yy"
    73927405    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73937406    break;
    73947407
    7395   case 455:
    7396 
    7397 /* Line 1806 of yacc.c  */
    7398 #line 1741 "parser.yy"
     7408  case 458:
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1750 "parser.yy"
    73997412    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    74007413    break;
    74017414
    7402   case 456:
    7403 
    7404 /* Line 1806 of yacc.c  */
    7405 #line 1745 "parser.yy"
     7415  case 459:
     7416
     7417/* Line 1806 of yacc.c  */
     7418#line 1754 "parser.yy"
    74067419    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    74077420    break;
    74087421
    7409   case 457:
    7410 
    7411 /* Line 1806 of yacc.c  */
    7412 #line 1746 "parser.yy"
     7422  case 460:
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1755 "parser.yy"
    74137426    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74147427    break;
    74157428
    7416   case 458:
    7417 
    7418 /* Line 1806 of yacc.c  */
    7419 #line 1751 "parser.yy"
     7429  case 461:
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1760 "parser.yy"
    74207433    { (yyval.in) = 0; }
    74217434    break;
    74227435
    7423   case 460:
    7424 
    7425 /* Line 1806 of yacc.c  */
    7426 #line 1753 "parser.yy"
     7436  case 463:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1762 "parser.yy"
    74277440    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74287441    break;
    74297442
    7430   case 461:
    7431 
    7432 /* Line 1806 of yacc.c  */
    7433 #line 1754 "parser.yy"
     7443  case 464:
     7444
     7445/* Line 1806 of yacc.c  */
     7446#line 1763 "parser.yy"
    74347447    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    74357448    break;
    74367449
    7437   case 462:
    7438 
    7439 /* Line 1806 of yacc.c  */
    7440 #line 1756 "parser.yy"
     7450  case 465:
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1765 "parser.yy"
    74417454    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74427455    break;
    74437456
    7444   case 464:
    7445 
    7446 /* Line 1806 of yacc.c  */
    7447 #line 1772 "parser.yy"
     7457  case 467:
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1781 "parser.yy"
    74487461    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74497462    break;
    74507463
    7451   case 466:
    7452 
    7453 /* Line 1806 of yacc.c  */
    7454 #line 1778 "parser.yy"
     7464  case 469:
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1787 "parser.yy"
    74557468    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74567469    break;
    74577470
    7458   case 467:
    7459 
    7460 /* Line 1806 of yacc.c  */
    7461 #line 1784 "parser.yy"
     7471  case 470:
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1793 "parser.yy"
    74627475    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74637476    break;
    74647477
    7465   case 468:
    7466 
    7467 /* Line 1806 of yacc.c  */
    7468 #line 1787 "parser.yy"
     7478  case 471:
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1796 "parser.yy"
    74697482    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74707483    break;
    74717484
    7472   case 469:
    7473 
    7474 /* Line 1806 of yacc.c  */
    7475 #line 1789 "parser.yy"
     7485  case 472:
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1798 "parser.yy"
    74767489    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74777490    break;
    74787491
    7479   case 470:
    7480 
    7481 /* Line 1806 of yacc.c  */
    7482 #line 1791 "parser.yy"
     7492  case 473:
     7493
     7494/* Line 1806 of yacc.c  */
     7495#line 1800 "parser.yy"
    74837496    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74847497    break;
    74857498
    7486   case 471:
    7487 
    7488 /* Line 1806 of yacc.c  */
    7489 #line 1793 "parser.yy"
     7499  case 474:
     7500
     7501/* Line 1806 of yacc.c  */
     7502#line 1802 "parser.yy"
    74907503    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74917504    break;
    74927505
    7493   case 473:
    7494 
    7495 /* Line 1806 of yacc.c  */
    7496 #line 1817 "parser.yy"
     7506  case 476:
     7507
     7508/* Line 1806 of yacc.c  */
     7509#line 1826 "parser.yy"
    74977510    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74987511    break;
    74997512
    7500   case 474:
    7501 
    7502 /* Line 1806 of yacc.c  */
    7503 #line 1819 "parser.yy"
     7513  case 477:
     7514
     7515/* Line 1806 of yacc.c  */
     7516#line 1828 "parser.yy"
    75047517    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75057518    break;
    75067519
    7507   case 475:
    7508 
    7509 /* Line 1806 of yacc.c  */
    7510 #line 1821 "parser.yy"
     7520  case 478:
     7521
     7522/* Line 1806 of yacc.c  */
     7523#line 1830 "parser.yy"
    75117524    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75127525    break;
    75137526
    7514   case 477:
    7515 
    7516 /* Line 1806 of yacc.c  */
    7517 #line 1827 "parser.yy"
     7527  case 480:
     7528
     7529/* Line 1806 of yacc.c  */
     7530#line 1836 "parser.yy"
    75187531    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75197532    break;
    75207533
    7521   case 478:
    7522 
    7523 /* Line 1806 of yacc.c  */
    7524 #line 1829 "parser.yy"
     7534  case 481:
     7535
     7536/* Line 1806 of yacc.c  */
     7537#line 1838 "parser.yy"
    75257538    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75267539    break;
    75277540
    7528   case 479:
    7529 
    7530 /* Line 1806 of yacc.c  */
    7531 #line 1834 "parser.yy"
     7541  case 482:
     7542
     7543/* Line 1806 of yacc.c  */
     7544#line 1843 "parser.yy"
    75327545    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75337546    break;
    75347547
    7535   case 481:
    7536 
    7537 /* Line 1806 of yacc.c  */
    7538 #line 1840 "parser.yy"
     7548  case 484:
     7549
     7550/* Line 1806 of yacc.c  */
     7551#line 1849 "parser.yy"
    75397552    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75407553    break;
    75417554
    7542   case 482:
    7543 
    7544 /* Line 1806 of yacc.c  */
    7545 #line 1845 "parser.yy"
     7555  case 485:
     7556
     7557/* Line 1806 of yacc.c  */
     7558#line 1854 "parser.yy"
    75467559    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75477560    break;
    75487561
    7549   case 483:
    7550 
    7551 /* Line 1806 of yacc.c  */
    7552 #line 1847 "parser.yy"
     7562  case 486:
     7563
     7564/* Line 1806 of yacc.c  */
     7565#line 1856 "parser.yy"
    75537566    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75547567    break;
    75557568
    7556   case 485:
    7557 
    7558 /* Line 1806 of yacc.c  */
    7559 #line 1853 "parser.yy"
     7569  case 488:
     7570
     7571/* Line 1806 of yacc.c  */
     7572#line 1862 "parser.yy"
    75607573    { (yyval.tclass) = DeclarationNode::Otype; }
    75617574    break;
    75627575
    7563   case 486:
    7564 
    7565 /* Line 1806 of yacc.c  */
    7566 #line 1855 "parser.yy"
     7576  case 489:
     7577
     7578/* Line 1806 of yacc.c  */
     7579#line 1864 "parser.yy"
    75677580    { (yyval.tclass) = DeclarationNode::Ftype; }
    75687581    break;
    75697582
    7570   case 487:
    7571 
    7572 /* Line 1806 of yacc.c  */
    7573 #line 1857 "parser.yy"
     7583  case 490:
     7584
     7585/* Line 1806 of yacc.c  */
     7586#line 1866 "parser.yy"
    75747587    { (yyval.tclass) = DeclarationNode::Dtype; }
    75757588    break;
    75767589
    7577   case 488:
    7578 
    7579 /* Line 1806 of yacc.c  */
    7580 #line 1862 "parser.yy"
     7590  case 491:
     7591
     7592/* Line 1806 of yacc.c  */
     7593#line 1871 "parser.yy"
    75817594    { (yyval.decl) = 0; }
    75827595    break;
    75837596
    7584   case 489:
    7585 
    7586 /* Line 1806 of yacc.c  */
    7587 #line 1864 "parser.yy"
     7597  case 492:
     7598
     7599/* Line 1806 of yacc.c  */
     7600#line 1873 "parser.yy"
    75887601    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75897602    break;
    75907603
    7591   case 490:
    7592 
    7593 /* Line 1806 of yacc.c  */
    7594 #line 1869 "parser.yy"
     7604  case 493:
     7605
     7606/* Line 1806 of yacc.c  */
     7607#line 1878 "parser.yy"
    75957608    {
    75967609                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75997612    break;
    76007613
    7601   case 491:
    7602 
    7603 /* Line 1806 of yacc.c  */
    7604 #line 1874 "parser.yy"
     7614  case 494:
     7615
     7616/* Line 1806 of yacc.c  */
     7617#line 1883 "parser.yy"
    76057618    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76067619    break;
    76077620
    7608   case 492:
    7609 
    7610 /* Line 1806 of yacc.c  */
    7611 #line 1876 "parser.yy"
     7621  case 495:
     7622
     7623/* Line 1806 of yacc.c  */
     7624#line 1885 "parser.yy"
    76127625    { (yyval.decl) = 0; }
    76137626    break;
    76147627
    7615   case 493:
    7616 
    7617 /* Line 1806 of yacc.c  */
    7618 #line 1881 "parser.yy"
     7628  case 496:
     7629
     7630/* Line 1806 of yacc.c  */
     7631#line 1890 "parser.yy"
    76197632    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    76207633    break;
    76217634
    7622   case 495:
    7623 
    7624 /* Line 1806 of yacc.c  */
    7625 #line 1884 "parser.yy"
     7635  case 498:
     7636
     7637/* Line 1806 of yacc.c  */
     7638#line 1893 "parser.yy"
    76267639    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76277640    break;
    76287641
    7629   case 496:
    7630 
    7631 /* Line 1806 of yacc.c  */
    7632 #line 1886 "parser.yy"
     7642  case 499:
     7643
     7644/* Line 1806 of yacc.c  */
     7645#line 1895 "parser.yy"
    76337646    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76347647    break;
    76357648
    7636   case 497:
    7637 
    7638 /* Line 1806 of yacc.c  */
    7639 #line 1891 "parser.yy"
     7649  case 500:
     7650
     7651/* Line 1806 of yacc.c  */
     7652#line 1900 "parser.yy"
    76407653    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76417654    break;
    76427655
    7643   case 498:
    7644 
    7645 /* Line 1806 of yacc.c  */
    7646 #line 1893 "parser.yy"
     7656  case 501:
     7657
     7658/* Line 1806 of yacc.c  */
     7659#line 1902 "parser.yy"
    76477660    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76487661    break;
    76497662
    7650   case 499:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1895 "parser.yy"
     7663  case 502:
     7664
     7665/* Line 1806 of yacc.c  */
     7666#line 1904 "parser.yy"
    76547667    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76557668    break;
    76567669
    7657   case 500:
    7658 
    7659 /* Line 1806 of yacc.c  */
    7660 #line 1900 "parser.yy"
     7670  case 503:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1909 "parser.yy"
    76617674    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76627675    break;
    76637676
    7664   case 501:
    7665 
    7666 /* Line 1806 of yacc.c  */
    7667 #line 1902 "parser.yy"
     7677  case 504:
     7678
     7679/* Line 1806 of yacc.c  */
     7680#line 1911 "parser.yy"
    76687681    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76697682    break;
    76707683
    7671   case 502:
    7672 
    7673 /* Line 1806 of yacc.c  */
    7674 #line 1907 "parser.yy"
     7684  case 505:
     7685
     7686/* Line 1806 of yacc.c  */
     7687#line 1916 "parser.yy"
    76757688    {
    76767689                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76797692    break;
    76807693
    7681   case 503:
    7682 
    7683 /* Line 1806 of yacc.c  */
    7684 #line 1912 "parser.yy"
     7694  case 506:
     7695
     7696/* Line 1806 of yacc.c  */
     7697#line 1921 "parser.yy"
    76857698    {
    76867699                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76897702    break;
    76907703
    7691   case 504:
    7692 
    7693 /* Line 1806 of yacc.c  */
    7694 #line 1920 "parser.yy"
     7704  case 507:
     7705
     7706/* Line 1806 of yacc.c  */
     7707#line 1929 "parser.yy"
    76957708    {
    76967709                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76997712    break;
    77007713
    7701   case 505:
    7702 
    7703 /* Line 1806 of yacc.c  */
    7704 #line 1925 "parser.yy"
     7714  case 508:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1934 "parser.yy"
    77057718    {
    77067719                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77097722    break;
    77107723
    7711   case 506:
    7712 
    7713 /* Line 1806 of yacc.c  */
    7714 #line 1930 "parser.yy"
     7724  case 509:
     7725
     7726/* Line 1806 of yacc.c  */
     7727#line 1939 "parser.yy"
    77157728    {
    77167729                        typedefTable.leaveTrait();
     
    77207733    break;
    77217734
    7722   case 508:
    7723 
    7724 /* Line 1806 of yacc.c  */
    7725 #line 1940 "parser.yy"
     7735  case 511:
     7736
     7737/* Line 1806 of yacc.c  */
     7738#line 1949 "parser.yy"
    77267739    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77277740    break;
    77287741
    7729   case 511:
    7730 
    7731 /* Line 1806 of yacc.c  */
    7732 #line 1950 "parser.yy"
     7742  case 514:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1959 "parser.yy"
    77337746    {
    77347747                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77377750    break;
    77387751
    7739   case 512:
    7740 
    7741 /* Line 1806 of yacc.c  */
    7742 #line 1955 "parser.yy"
     7752  case 515:
     7753
     7754/* Line 1806 of yacc.c  */
     7755#line 1964 "parser.yy"
    77437756    {
    77447757                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77477760    break;
    77487761
    7749   case 513:
    7750 
    7751 /* Line 1806 of yacc.c  */
    7752 #line 1960 "parser.yy"
     7762  case 516:
     7763
     7764/* Line 1806 of yacc.c  */
     7765#line 1969 "parser.yy"
    77537766    {
    77547767                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77577770    break;
    77587771
    7759   case 514:
    7760 
    7761 /* Line 1806 of yacc.c  */
    7762 #line 1968 "parser.yy"
     7772  case 517:
     7773
     7774/* Line 1806 of yacc.c  */
     7775#line 1977 "parser.yy"
    77637776    {
    77647777                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77677780    break;
    77687781
    7769   case 515:
    7770 
    7771 /* Line 1806 of yacc.c  */
    7772 #line 1973 "parser.yy"
     7782  case 518:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 1982 "parser.yy"
    77737786    {
    77747787                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77777790    break;
    77787791
    7779   case 516:
    7780 
    7781 /* Line 1806 of yacc.c  */
    7782 #line 1983 "parser.yy"
     7792  case 519:
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 1992 "parser.yy"
    77837796    {}
    77847797    break;
    77857798
    7786   case 517:
    7787 
    7788 /* Line 1806 of yacc.c  */
    7789 #line 1985 "parser.yy"
     7799  case 520:
     7800
     7801/* Line 1806 of yacc.c  */
     7802#line 1994 "parser.yy"
    77907803    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    77917804    break;
    77927805
    7793   case 519:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 1991 "parser.yy"
     7806  case 522:
     7807
     7808/* Line 1806 of yacc.c  */
     7809#line 2000 "parser.yy"
    77977810    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77987811    break;
    77997812
    7800   case 520:
    7801 
    7802 /* Line 1806 of yacc.c  */
    7803 #line 1996 "parser.yy"
     7813  case 523:
     7814
     7815/* Line 1806 of yacc.c  */
     7816#line 2005 "parser.yy"
    78047817    { (yyval.decl) = 0; }
    78057818    break;
    78067819
    7807   case 524:
    7808 
    7809 /* Line 1806 of yacc.c  */
    7810 #line 2004 "parser.yy"
     7820  case 527:
     7821
     7822/* Line 1806 of yacc.c  */
     7823#line 2013 "parser.yy"
    78117824    {}
    78127825    break;
    78137826
    7814   case 525:
    7815 
    7816 /* Line 1806 of yacc.c  */
    7817 #line 2006 "parser.yy"
     7827  case 528:
     7828
     7829/* Line 1806 of yacc.c  */
     7830#line 2015 "parser.yy"
    78187831    {
    78197832                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    7820                         linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
     7833                        linkage = LinkageSpec::linkageCheck( (yyvsp[(2) - (2)].tok) );
    78217834                }
    78227835    break;
    78237836
    7824   case 526:
    7825 
    7826 /* Line 1806 of yacc.c  */
    7827 #line 2011 "parser.yy"
     7837  case 529:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 2020 "parser.yy"
    78287841    {
    78297842                        linkage = linkageStack.top();
     
    78337846    break;
    78347847
    7835   case 527:
    7836 
    7837 /* Line 1806 of yacc.c  */
    7838 #line 2017 "parser.yy"
     7848  case 530:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2026 "parser.yy"
    78397852    {   // mark all fields in list
    78407853                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78447857    break;
    78457858
    7846   case 529:
    7847 
    7848 /* Line 1806 of yacc.c  */
    7849 #line 2032 "parser.yy"
     7859  case 532:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2041 "parser.yy"
    78507863    {
    78517864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78557868    break;
    78567869
    7857   case 530:
    7858 
    7859 /* Line 1806 of yacc.c  */
    7860 #line 2038 "parser.yy"
     7870  case 533:
     7871
     7872/* Line 1806 of yacc.c  */
     7873#line 2047 "parser.yy"
    78617874    {
    78627875                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78667879    break;
    78677880
    7868   case 531:
    7869 
    7870 /* Line 1806 of yacc.c  */
    7871 #line 2047 "parser.yy"
     7881  case 534:
     7882
     7883/* Line 1806 of yacc.c  */
     7884#line 2056 "parser.yy"
    78727885    {
    78737886                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78777890    break;
    78787891
    7879   case 532:
    7880 
    7881 /* Line 1806 of yacc.c  */
    7882 #line 2053 "parser.yy"
     7892  case 535:
     7893
     7894/* Line 1806 of yacc.c  */
     7895#line 2062 "parser.yy"
    78837896    {
    78847897                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78887901    break;
    78897902
    7890   case 533:
    7891 
    7892 /* Line 1806 of yacc.c  */
    7893 #line 2059 "parser.yy"
     7903  case 536:
     7904
     7905/* Line 1806 of yacc.c  */
     7906#line 2068 "parser.yy"
    78947907    {
    78957908                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78997912    break;
    79007913
    7901   case 534:
    7902 
    7903 /* Line 1806 of yacc.c  */
    7904 #line 2065 "parser.yy"
     7914  case 537:
     7915
     7916/* Line 1806 of yacc.c  */
     7917#line 2074 "parser.yy"
    79057918    {
    79067919                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79107923    break;
    79117924
    7912   case 535:
    7913 
    7914 /* Line 1806 of yacc.c  */
    7915 #line 2071 "parser.yy"
     7925  case 538:
     7926
     7927/* Line 1806 of yacc.c  */
     7928#line 2080 "parser.yy"
    79167929    {
    79177930                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79217934    break;
    79227935
    7923   case 536:
    7924 
    7925 /* Line 1806 of yacc.c  */
    7926 #line 2079 "parser.yy"
     7936  case 539:
     7937
     7938/* Line 1806 of yacc.c  */
     7939#line 2088 "parser.yy"
    79277940    {
    79287941                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79327945    break;
    79337946
    7934   case 537:
    7935 
    7936 /* Line 1806 of yacc.c  */
    7937 #line 2085 "parser.yy"
     7947  case 540:
     7948
     7949/* Line 1806 of yacc.c  */
     7950#line 2094 "parser.yy"
    79387951    {
    79397952                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79437956    break;
    79447957
    7945   case 538:
    7946 
    7947 /* Line 1806 of yacc.c  */
    7948 #line 2093 "parser.yy"
     7958  case 541:
     7959
     7960/* Line 1806 of yacc.c  */
     7961#line 2102 "parser.yy"
    79497962    {
    79507963                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79547967    break;
    79557968
    7956   case 539:
    7957 
    7958 /* Line 1806 of yacc.c  */
    7959 #line 2099 "parser.yy"
     7969  case 542:
     7970
     7971/* Line 1806 of yacc.c  */
     7972#line 2108 "parser.yy"
    79607973    {
    79617974                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79657978    break;
    79667979
    7967   case 543:
    7968 
    7969 /* Line 1806 of yacc.c  */
    7970 #line 2114 "parser.yy"
     7980  case 546:
     7981
     7982/* Line 1806 of yacc.c  */
     7983#line 2123 "parser.yy"
    79717984    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79727985    break;
    79737986
    7974   case 545:
    7975 
    7976 /* Line 1806 of yacc.c  */
    7977 #line 2119 "parser.yy"
     7987  case 548:
     7988
     7989/* Line 1806 of yacc.c  */
     7990#line 2128 "parser.yy"
    79787991    { delete (yyvsp[(3) - (5)].str); }
    79797992    break;
    79807993
    7981   case 546:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2124 "parser.yy"
     7994  case 549:
     7995
     7996/* Line 1806 of yacc.c  */
     7997#line 2133 "parser.yy"
    79857998    { (yyval.decl) = 0; }
    79867999    break;
    79878000
    7988   case 549:
    7989 
    7990 /* Line 1806 of yacc.c  */
    7991 #line 2131 "parser.yy"
     8001  case 552:
     8002
     8003/* Line 1806 of yacc.c  */
     8004#line 2140 "parser.yy"
    79928005    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79938006    break;
    79948007
    7995   case 550:
    7996 
    7997 /* Line 1806 of yacc.c  */
    7998 #line 2137 "parser.yy"
     8008  case 553:
     8009
     8010/* Line 1806 of yacc.c  */
     8011#line 2146 "parser.yy"
    79998012    { (yyval.decl) = 0; }
    80008013    break;
    80018014
    8002   case 555:
    8003 
    8004 /* Line 1806 of yacc.c  */
    8005 #line 2148 "parser.yy"
     8015  case 558:
     8016
     8017/* Line 1806 of yacc.c  */
     8018#line 2157 "parser.yy"
    80068019    { delete (yyvsp[(3) - (4)].en); }
    80078020    break;
    80088021
    8009   case 556:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 2152 "parser.yy"
     8022  case 559:
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2161 "parser.yy"
    80138026    { delete (yyvsp[(1) - (1)].tok); }
    80148027    break;
    80158028
    8016   case 557:
    8017 
    8018 /* Line 1806 of yacc.c  */
    8019 #line 2153 "parser.yy"
     8029  case 560:
     8030
     8031/* Line 1806 of yacc.c  */
     8032#line 2162 "parser.yy"
    80208033    { delete (yyvsp[(1) - (1)].decl); }
    80218034    break;
    80228035
    8023   case 558:
    8024 
    8025 /* Line 1806 of yacc.c  */
    8026 #line 2154 "parser.yy"
     8036  case 561:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2163 "parser.yy"
    80278040    { delete (yyvsp[(1) - (1)].decl); }
    80288041    break;
    80298042
    8030   case 559:
    8031 
    8032 /* Line 1806 of yacc.c  */
    8033 #line 2155 "parser.yy"
     8043  case 562:
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2164 "parser.yy"
    80348047    { delete (yyvsp[(1) - (1)].decl); }
    80358048    break;
    80368049
    8037   case 560:
    8038 
    8039 /* Line 1806 of yacc.c  */
    8040 #line 2190 "parser.yy"
     8050  case 563:
     8051
     8052/* Line 1806 of yacc.c  */
     8053#line 2199 "parser.yy"
    80418054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80428055    break;
    80438056
    8044   case 562:
    8045 
    8046 /* Line 1806 of yacc.c  */
    8047 #line 2193 "parser.yy"
     8057  case 565:
     8058
     8059/* Line 1806 of yacc.c  */
     8060#line 2202 "parser.yy"
    80488061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80498062    break;
    80508063
    8051   case 563:
    8052 
    8053 /* Line 1806 of yacc.c  */
    8054 #line 2195 "parser.yy"
     8064  case 566:
     8065
     8066/* Line 1806 of yacc.c  */
     8067#line 2204 "parser.yy"
    80558068    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80568069    break;
    80578070
    8058   case 564:
    8059 
    8060 /* Line 1806 of yacc.c  */
    8061 #line 2200 "parser.yy"
     8071  case 567:
     8072
     8073/* Line 1806 of yacc.c  */
     8074#line 2209 "parser.yy"
    80628075    {
    80638076                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80668079    break;
    80678080
    8068   case 565:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2205 "parser.yy"
    8072     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8073     break;
    8074 
    8075   case 566:
    8076 
    8077 /* Line 1806 of yacc.c  */
    8078 #line 2210 "parser.yy"
    8079     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8080     break;
    8081 
    8082   case 567:
    8083 
    8084 /* Line 1806 of yacc.c  */
    8085 #line 2212 "parser.yy"
    8086     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8087     break;
    8088 
    80898081  case 568:
    80908082
     
    80988090/* Line 1806 of yacc.c  */
    80998091#line 2219 "parser.yy"
     8092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8093    break;
     8094
     8095  case 570:
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2221 "parser.yy"
     8099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8100    break;
     8101
     8102  case 571:
     8103
     8104/* Line 1806 of yacc.c  */
     8105#line 2223 "parser.yy"
     8106    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8107    break;
     8108
     8109  case 572:
     8110
     8111/* Line 1806 of yacc.c  */
     8112#line 2228 "parser.yy"
    81008113    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81018114    break;
    81028115
    8103   case 570:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2221 "parser.yy"
     8116  case 573:
     8117
     8118/* Line 1806 of yacc.c  */
     8119#line 2230 "parser.yy"
    81078120    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81088121    break;
    81098122
    8110   case 571:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2223 "parser.yy"
     8123  case 574:
     8124
     8125/* Line 1806 of yacc.c  */
     8126#line 2232 "parser.yy"
    81148127    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81158128    break;
    81168129
    8117   case 572:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2225 "parser.yy"
     8130  case 575:
     8131
     8132/* Line 1806 of yacc.c  */
     8133#line 2234 "parser.yy"
    81218134    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81228135    break;
    81238136
    8124   case 573:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2230 "parser.yy"
     8137  case 576:
     8138
     8139/* Line 1806 of yacc.c  */
     8140#line 2239 "parser.yy"
    81288141    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81298142    break;
    81308143
    8131   case 574:
    8132 
    8133 /* Line 1806 of yacc.c  */
    8134 #line 2232 "parser.yy"
     8144  case 577:
     8145
     8146/* Line 1806 of yacc.c  */
     8147#line 2241 "parser.yy"
    81358148    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81368149    break;
    81378150
    8138   case 575:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2241 "parser.yy"
     8151  case 578:
     8152
     8153/* Line 1806 of yacc.c  */
     8154#line 2250 "parser.yy"
    81428155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81438156    break;
    81448157
    8145   case 577:
    8146 
    8147 /* Line 1806 of yacc.c  */
    8148 #line 2244 "parser.yy"
     8158  case 580:
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2253 "parser.yy"
    81498162    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81508163    break;
    81518164
    8152   case 578:
    8153 
    8154 /* Line 1806 of yacc.c  */
    8155 #line 2249 "parser.yy"
     8165  case 581:
     8166
     8167/* Line 1806 of yacc.c  */
     8168#line 2258 "parser.yy"
    81568169    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81578170    break;
    81588171
    8159   case 579:
    8160 
    8161 /* Line 1806 of yacc.c  */
    8162 #line 2251 "parser.yy"
     8172  case 582:
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2260 "parser.yy"
    81638176    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8164     break;
    8165 
    8166   case 580:
    8167 
    8168 /* Line 1806 of yacc.c  */
    8169 #line 2253 "parser.yy"
    8170     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8171     break;
    8172 
    8173   case 581:
    8174 
    8175 /* Line 1806 of yacc.c  */
    8176 #line 2258 "parser.yy"
    8177     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8178     break;
    8179 
    8180   case 582:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2260 "parser.yy"
    8184     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81858177    break;
    81868178
     
    81968188/* Line 1806 of yacc.c  */
    81978189#line 2267 "parser.yy"
    8198     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8190    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81998191    break;
    82008192
     
    82038195/* Line 1806 of yacc.c  */
    82048196#line 2269 "parser.yy"
    8205     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8197    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82068198    break;
    82078199
     
    82138205    break;
    82148206
    8215   case 590:
    8216 
    8217 /* Line 1806 of yacc.c  */
    8218 #line 2286 "parser.yy"
     8207  case 587:
     8208
     8209/* Line 1806 of yacc.c  */
     8210#line 2276 "parser.yy"
     8211    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8212    break;
     8213
     8214  case 588:
     8215
     8216/* Line 1806 of yacc.c  */
     8217#line 2278 "parser.yy"
     8218    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8219    break;
     8220
     8221  case 589:
     8222
     8223/* Line 1806 of yacc.c  */
     8224#line 2280 "parser.yy"
     8225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8226    break;
     8227
     8228  case 593:
     8229
     8230/* Line 1806 of yacc.c  */
     8231#line 2295 "parser.yy"
    82198232    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82208233    break;
    82218234
    8222   case 591:
    8223 
    8224 /* Line 1806 of yacc.c  */
    8225 #line 2288 "parser.yy"
     8235  case 594:
     8236
     8237/* Line 1806 of yacc.c  */
     8238#line 2297 "parser.yy"
    82268239    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8227     break;
    8228 
    8229   case 592:
    8230 
    8231 /* Line 1806 of yacc.c  */
    8232 #line 2290 "parser.yy"
    8233     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8234     break;
    8235 
    8236   case 593:
    8237 
    8238 /* Line 1806 of yacc.c  */
    8239 #line 2295 "parser.yy"
    8240     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8241     break;
    8242 
    8243   case 594:
    8244 
    8245 /* Line 1806 of yacc.c  */
    8246 #line 2297 "parser.yy"
    8247     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82488240    break;
    82498241
     
    82598251/* Line 1806 of yacc.c  */
    82608252#line 2304 "parser.yy"
    8261     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8253    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82628254    break;
    82638255
     
    82668258/* Line 1806 of yacc.c  */
    82678259#line 2306 "parser.yy"
    8268     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8260    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82698261    break;
    82708262
     
    82798271
    82808272/* Line 1806 of yacc.c  */
    8281 #line 2323 "parser.yy"
     8273#line 2313 "parser.yy"
     8274    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8275    break;
     8276
     8277  case 600:
     8278
     8279/* Line 1806 of yacc.c  */
     8280#line 2315 "parser.yy"
     8281    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8282    break;
     8283
     8284  case 601:
     8285
     8286/* Line 1806 of yacc.c  */
     8287#line 2317 "parser.yy"
     8288    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8289    break;
     8290
     8291  case 602:
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2332 "parser.yy"
    82828295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82838296    break;
    82848297
    8285   case 601:
    8286 
    8287 /* Line 1806 of yacc.c  */
    8288 #line 2326 "parser.yy"
     8298  case 604:
     8299
     8300/* Line 1806 of yacc.c  */
     8301#line 2335 "parser.yy"
    82898302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82908303    break;
    82918304
    8292   case 602:
    8293 
    8294 /* Line 1806 of yacc.c  */
    8295 #line 2328 "parser.yy"
     8305  case 605:
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2337 "parser.yy"
    82968309    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8297     break;
    8298 
    8299   case 604:
    8300 
    8301 /* Line 1806 of yacc.c  */
    8302 #line 2334 "parser.yy"
    8303     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8304     break;
    8305 
    8306   case 605:
    8307 
    8308 /* Line 1806 of yacc.c  */
    8309 #line 2339 "parser.yy"
    8310     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8311     break;
    8312 
    8313   case 606:
    8314 
    8315 /* Line 1806 of yacc.c  */
    8316 #line 2341 "parser.yy"
    8317     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83188310    break;
    83198311
     
    83298321/* Line 1806 of yacc.c  */
    83308322#line 2348 "parser.yy"
     8323    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8324    break;
     8325
     8326  case 609:
     8327
     8328/* Line 1806 of yacc.c  */
     8329#line 2350 "parser.yy"
     8330    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8331    break;
     8332
     8333  case 610:
     8334
     8335/* Line 1806 of yacc.c  */
     8336#line 2352 "parser.yy"
     8337    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8338    break;
     8339
     8340  case 611:
     8341
     8342/* Line 1806 of yacc.c  */
     8343#line 2357 "parser.yy"
    83318344    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83328345    break;
    83338346
    8334   case 609:
    8335 
    8336 /* Line 1806 of yacc.c  */
    8337 #line 2350 "parser.yy"
     8347  case 612:
     8348
     8349/* Line 1806 of yacc.c  */
     8350#line 2359 "parser.yy"
    83388351    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83398352    break;
    83408353
    8341   case 610:
    8342 
    8343 /* Line 1806 of yacc.c  */
    8344 #line 2352 "parser.yy"
     8354  case 613:
     8355
     8356/* Line 1806 of yacc.c  */
     8357#line 2361 "parser.yy"
    83458358    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8346     break;
    8347 
    8348   case 611:
    8349 
    8350 /* Line 1806 of yacc.c  */
    8351 #line 2354 "parser.yy"
    8352     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8353     break;
    8354 
    8355   case 612:
    8356 
    8357 /* Line 1806 of yacc.c  */
    8358 #line 2359 "parser.yy"
    8359     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8360     break;
    8361 
    8362   case 613:
    8363 
    8364 /* Line 1806 of yacc.c  */
    8365 #line 2361 "parser.yy"
    8366     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83678359    break;
    83688360
     
    83778369
    83788370/* Line 1806 of yacc.c  */
    8379 #line 2373 "parser.yy"
     8371#line 2368 "parser.yy"
     8372    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8373    break;
     8374
     8375  case 616:
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2370 "parser.yy"
     8379    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8380    break;
     8381
     8382  case 617:
     8383
     8384/* Line 1806 of yacc.c  */
     8385#line 2372 "parser.yy"
     8386    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8387    break;
     8388
     8389  case 618:
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2382 "parser.yy"
    83808393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83818394    break;
    83828395
    8383   case 617:
    8384 
    8385 /* Line 1806 of yacc.c  */
    8386 #line 2376 "parser.yy"
     8396  case 620:
     8397
     8398/* Line 1806 of yacc.c  */
     8399#line 2385 "parser.yy"
    83878400    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83888401    break;
    83898402
    8390   case 618:
    8391 
    8392 /* Line 1806 of yacc.c  */
    8393 #line 2378 "parser.yy"
     8403  case 621:
     8404
     8405/* Line 1806 of yacc.c  */
     8406#line 2387 "parser.yy"
    83948407    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83958408    break;
    83968409
    8397   case 619:
    8398 
    8399 /* Line 1806 of yacc.c  */
    8400 #line 2383 "parser.yy"
     8410  case 622:
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2392 "parser.yy"
    84018414    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84028415    break;
    84038416
    8404   case 620:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2385 "parser.yy"
     8417  case 623:
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2394 "parser.yy"
    84088421    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84098422    break;
    84108423
    8411   case 621:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2387 "parser.yy"
     8424  case 624:
     8425
     8426/* Line 1806 of yacc.c  */
     8427#line 2396 "parser.yy"
    84158428    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84168429    break;
    84178430
    8418   case 622:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2392 "parser.yy"
     8431  case 625:
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2401 "parser.yy"
    84228435    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84238436    break;
    84248437
    8425   case 623:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2394 "parser.yy"
     8438  case 626:
     8439
     8440/* Line 1806 of yacc.c  */
     8441#line 2403 "parser.yy"
    84298442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84308443    break;
    84318444
    8432   case 624:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2396 "parser.yy"
     8445  case 627:
     8446
     8447/* Line 1806 of yacc.c  */
     8448#line 2405 "parser.yy"
    84368449    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8437     break;
    8438 
    8439   case 625:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2398 "parser.yy"
    8443     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8444     break;
    8445 
    8446   case 626:
    8447 
    8448 /* Line 1806 of yacc.c  */
    8449 #line 2403 "parser.yy"
    8450     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8451     break;
    8452 
    8453   case 627:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2405 "parser.yy"
    8457     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84588450    break;
    84598451
     
    84688460
    84698461/* Line 1806 of yacc.c  */
    8470 #line 2438 "parser.yy"
     8462#line 2412 "parser.yy"
     8463    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8464    break;
     8465
     8466  case 630:
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2414 "parser.yy"
     8470    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8471    break;
     8472
     8473  case 631:
     8474
     8475/* Line 1806 of yacc.c  */
     8476#line 2416 "parser.yy"
     8477    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8478    break;
     8479
     8480  case 632:
     8481
     8482/* Line 1806 of yacc.c  */
     8483#line 2447 "parser.yy"
    84718484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84728485    break;
    84738486
    8474   case 631:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2441 "parser.yy"
     8487  case 634:
     8488
     8489/* Line 1806 of yacc.c  */
     8490#line 2450 "parser.yy"
    84788491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84798492    break;
    84808493
    8481   case 632:
    8482 
    8483 /* Line 1806 of yacc.c  */
    8484 #line 2443 "parser.yy"
     8494  case 635:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2452 "parser.yy"
    84858498    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84868499    break;
    84878500
    8488   case 633:
    8489 
    8490 /* Line 1806 of yacc.c  */
    8491 #line 2448 "parser.yy"
     8501  case 636:
     8502
     8503/* Line 1806 of yacc.c  */
     8504#line 2457 "parser.yy"
    84928505    {
    84938506                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84968509    break;
    84978510
    8498   case 634:
    8499 
    8500 /* Line 1806 of yacc.c  */
    8501 #line 2453 "parser.yy"
     8511  case 637:
     8512
     8513/* Line 1806 of yacc.c  */
     8514#line 2462 "parser.yy"
    85028515    {
    85038516                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85068519    break;
    85078520
    8508   case 635:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2461 "parser.yy"
     8521  case 638:
     8522
     8523/* Line 1806 of yacc.c  */
     8524#line 2470 "parser.yy"
    85128525    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85138526    break;
    85148527
    8515   case 636:
    8516 
    8517 /* Line 1806 of yacc.c  */
    8518 #line 2463 "parser.yy"
     8528  case 639:
     8529
     8530/* Line 1806 of yacc.c  */
     8531#line 2472 "parser.yy"
    85198532    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85208533    break;
    85218534
    8522   case 637:
    8523 
    8524 /* Line 1806 of yacc.c  */
    8525 #line 2465 "parser.yy"
     8535  case 640:
     8536
     8537/* Line 1806 of yacc.c  */
     8538#line 2474 "parser.yy"
    85268539    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85278540    break;
    85288541
    8529   case 638:
    8530 
    8531 /* Line 1806 of yacc.c  */
    8532 #line 2470 "parser.yy"
     8542  case 641:
     8543
     8544/* Line 1806 of yacc.c  */
     8545#line 2479 "parser.yy"
    85338546    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85348547    break;
    85358548
    8536   case 639:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2472 "parser.yy"
     8549  case 642:
     8550
     8551/* Line 1806 of yacc.c  */
     8552#line 2481 "parser.yy"
    85408553    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85418554    break;
    85428555
    8543   case 640:
    8544 
    8545 /* Line 1806 of yacc.c  */
    8546 #line 2477 "parser.yy"
     8556  case 643:
     8557
     8558/* Line 1806 of yacc.c  */
     8559#line 2486 "parser.yy"
    85478560    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85488561    break;
    85498562
    8550   case 641:
    8551 
    8552 /* Line 1806 of yacc.c  */
    8553 #line 2479 "parser.yy"
     8563  case 644:
     8564
     8565/* Line 1806 of yacc.c  */
     8566#line 2488 "parser.yy"
    85548567    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85558568    break;
    85568569
    8557   case 643:
    8558 
    8559 /* Line 1806 of yacc.c  */
    8560 #line 2494 "parser.yy"
     8570  case 646:
     8571
     8572/* Line 1806 of yacc.c  */
     8573#line 2503 "parser.yy"
    85618574    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85628575    break;
    85638576
    8564   case 644:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2496 "parser.yy"
     8577  case 647:
     8578
     8579/* Line 1806 of yacc.c  */
     8580#line 2505 "parser.yy"
    85688581    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85698582    break;
    85708583
    8571   case 645:
    8572 
    8573 /* Line 1806 of yacc.c  */
    8574 #line 2501 "parser.yy"
     8584  case 648:
     8585
     8586/* Line 1806 of yacc.c  */
     8587#line 2510 "parser.yy"
    85758588    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85768589    break;
    85778590
    8578   case 646:
    8579 
    8580 /* Line 1806 of yacc.c  */
    8581 #line 2503 "parser.yy"
     8591  case 649:
     8592
     8593/* Line 1806 of yacc.c  */
     8594#line 2512 "parser.yy"
    85828595    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85838596    break;
    85848597
    8585   case 647:
    8586 
    8587 /* Line 1806 of yacc.c  */
    8588 #line 2505 "parser.yy"
     8598  case 650:
     8599
     8600/* Line 1806 of yacc.c  */
     8601#line 2514 "parser.yy"
    85898602    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85908603    break;
    85918604
    8592   case 648:
    8593 
    8594 /* Line 1806 of yacc.c  */
    8595 #line 2507 "parser.yy"
     8605  case 651:
     8606
     8607/* Line 1806 of yacc.c  */
     8608#line 2516 "parser.yy"
    85968609    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85978610    break;
    85988611
    8599   case 649:
    8600 
    8601 /* Line 1806 of yacc.c  */
    8602 #line 2509 "parser.yy"
     8612  case 652:
     8613
     8614/* Line 1806 of yacc.c  */
     8615#line 2518 "parser.yy"
    86038616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86048617    break;
    86058618
    8606   case 651:
    8607 
    8608 /* Line 1806 of yacc.c  */
    8609 #line 2515 "parser.yy"
     8619  case 654:
     8620
     8621/* Line 1806 of yacc.c  */
     8622#line 2524 "parser.yy"
    86108623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86118624    break;
    86128625
    8613   case 652:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2517 "parser.yy"
     8626  case 655:
     8627
     8628/* Line 1806 of yacc.c  */
     8629#line 2526 "parser.yy"
    86178630    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8618     break;
    8619 
    8620   case 653:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2519 "parser.yy"
    8624     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8625     break;
    8626 
    8627   case 654:
    8628 
    8629 /* Line 1806 of yacc.c  */
    8630 #line 2524 "parser.yy"
    8631     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8632     break;
    8633 
    8634   case 655:
    8635 
    8636 /* Line 1806 of yacc.c  */
    8637 #line 2526 "parser.yy"
    8638     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86398631    break;
    86408632
     
    86498641
    86508642/* Line 1806 of yacc.c  */
    8651 #line 2534 "parser.yy"
     8643#line 2533 "parser.yy"
     8644    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8645    break;
     8646
     8647  case 658:
     8648
     8649/* Line 1806 of yacc.c  */
     8650#line 2535 "parser.yy"
     8651    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8652    break;
     8653
     8654  case 659:
     8655
     8656/* Line 1806 of yacc.c  */
     8657#line 2537 "parser.yy"
     8658    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8659    break;
     8660
     8661  case 660:
     8662
     8663/* Line 1806 of yacc.c  */
     8664#line 2543 "parser.yy"
    86528665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86538666    break;
    86548667
    8655   case 658:
    8656 
    8657 /* Line 1806 of yacc.c  */
    8658 #line 2536 "parser.yy"
     8668  case 661:
     8669
     8670/* Line 1806 of yacc.c  */
     8671#line 2545 "parser.yy"
    86598672    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86608673    break;
    86618674
    8662   case 660:
    8663 
    8664 /* Line 1806 of yacc.c  */
    8665 #line 2542 "parser.yy"
     8675  case 663:
     8676
     8677/* Line 1806 of yacc.c  */
     8678#line 2551 "parser.yy"
    86668679    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86678680    break;
    86688681
    8669   case 661:
    8670 
    8671 /* Line 1806 of yacc.c  */
    8672 #line 2544 "parser.yy"
     8682  case 664:
     8683
     8684/* Line 1806 of yacc.c  */
     8685#line 2553 "parser.yy"
    86738686    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86748687    break;
    86758688
    8676   case 662:
    8677 
    8678 /* Line 1806 of yacc.c  */
    8679 #line 2546 "parser.yy"
     8689  case 665:
     8690
     8691/* Line 1806 of yacc.c  */
     8692#line 2555 "parser.yy"
    86808693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86818694    break;
    86828695
    8683   case 663:
    8684 
    8685 /* Line 1806 of yacc.c  */
    8686 #line 2548 "parser.yy"
     8696  case 666:
     8697
     8698/* Line 1806 of yacc.c  */
     8699#line 2557 "parser.yy"
    86878700    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86888701    break;
    86898702
    8690   case 665:
    8691 
    8692 /* Line 1806 of yacc.c  */
    8693 #line 2563 "parser.yy"
     8703  case 668:
     8704
     8705/* Line 1806 of yacc.c  */
     8706#line 2572 "parser.yy"
    86948707    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86958708    break;
    86968709
    8697   case 666:
    8698 
    8699 /* Line 1806 of yacc.c  */
    8700 #line 2565 "parser.yy"
     8710  case 669:
     8711
     8712/* Line 1806 of yacc.c  */
     8713#line 2574 "parser.yy"
    87018714    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87028715    break;
    87038716
    8704   case 667:
    8705 
    8706 /* Line 1806 of yacc.c  */
    8707 #line 2570 "parser.yy"
     8717  case 670:
     8718
     8719/* Line 1806 of yacc.c  */
     8720#line 2579 "parser.yy"
    87088721    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87098722    break;
    87108723
    8711   case 668:
    8712 
    8713 /* Line 1806 of yacc.c  */
    8714 #line 2572 "parser.yy"
     8724  case 671:
     8725
     8726/* Line 1806 of yacc.c  */
     8727#line 2581 "parser.yy"
    87158728    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87168729    break;
    87178730
    8718   case 669:
    8719 
    8720 /* Line 1806 of yacc.c  */
    8721 #line 2574 "parser.yy"
     8731  case 672:
     8732
     8733/* Line 1806 of yacc.c  */
     8734#line 2583 "parser.yy"
    87228735    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87238736    break;
    87248737
    8725   case 670:
    8726 
    8727 /* Line 1806 of yacc.c  */
    8728 #line 2576 "parser.yy"
     8738  case 673:
     8739
     8740/* Line 1806 of yacc.c  */
     8741#line 2585 "parser.yy"
    87298742    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87308743    break;
    87318744
    8732   case 671:
    8733 
    8734 /* Line 1806 of yacc.c  */
    8735 #line 2578 "parser.yy"
     8745  case 674:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2587 "parser.yy"
    87368749    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87378750    break;
    87388751
    8739   case 673:
    8740 
    8741 /* Line 1806 of yacc.c  */
    8742 #line 2584 "parser.yy"
     8752  case 676:
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2593 "parser.yy"
    87438756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87448757    break;
    87458758
    8746   case 674:
    8747 
    8748 /* Line 1806 of yacc.c  */
    8749 #line 2586 "parser.yy"
     8759  case 677:
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2595 "parser.yy"
    87508763    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8751     break;
    8752 
    8753   case 675:
    8754 
    8755 /* Line 1806 of yacc.c  */
    8756 #line 2588 "parser.yy"
    8757     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8758     break;
    8759 
    8760   case 676:
    8761 
    8762 /* Line 1806 of yacc.c  */
    8763 #line 2593 "parser.yy"
    8764     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8765     break;
    8766 
    8767   case 677:
    8768 
    8769 /* Line 1806 of yacc.c  */
    8770 #line 2595 "parser.yy"
    8771     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87728764    break;
    87738765
     
    87798771    break;
    87808772
     8773  case 679:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2602 "parser.yy"
     8777    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8778    break;
     8779
    87818780  case 680:
    87828781
    87838782/* Line 1806 of yacc.c  */
    87848783#line 2604 "parser.yy"
     8784    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8785    break;
     8786
     8787  case 681:
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2606 "parser.yy"
     8791    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8792    break;
     8793
     8794  case 683:
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2613 "parser.yy"
    87858798    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87868799    break;
    87878800
    8788   case 682:
    8789 
    8790 /* Line 1806 of yacc.c  */
    8791 #line 2615 "parser.yy"
     8801  case 685:
     8802
     8803/* Line 1806 of yacc.c  */
     8804#line 2624 "parser.yy"
    87928805    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87938806    break;
    87948807
    8795   case 683:
    8796 
    8797 /* Line 1806 of yacc.c  */
    8798 #line 2618 "parser.yy"
     8808  case 686:
     8809
     8810/* Line 1806 of yacc.c  */
     8811#line 2627 "parser.yy"
    87998812    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88008813    break;
    88018814
    8802   case 684:
    8803 
    8804 /* Line 1806 of yacc.c  */
    8805 #line 2620 "parser.yy"
     8815  case 687:
     8816
     8817/* Line 1806 of yacc.c  */
     8818#line 2629 "parser.yy"
    88068819    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    88078820    break;
    88088821
    8809   case 685:
    8810 
    8811 /* Line 1806 of yacc.c  */
    8812 #line 2623 "parser.yy"
     8822  case 688:
     8823
     8824/* Line 1806 of yacc.c  */
     8825#line 2632 "parser.yy"
    88138826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88148827    break;
    88158828
    8816   case 686:
    8817 
    8818 /* Line 1806 of yacc.c  */
    8819 #line 2625 "parser.yy"
     8829  case 689:
     8830
     8831/* Line 1806 of yacc.c  */
     8832#line 2634 "parser.yy"
    88208833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88218834    break;
    88228835
    8823   case 687:
    8824 
    8825 /* Line 1806 of yacc.c  */
    8826 #line 2627 "parser.yy"
     8836  case 690:
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2636 "parser.yy"
    88278840    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88288841    break;
    88298842
    8830   case 689:
    8831 
    8832 /* Line 1806 of yacc.c  */
    8833 #line 2641 "parser.yy"
     8843  case 692:
     8844
     8845/* Line 1806 of yacc.c  */
     8846#line 2650 "parser.yy"
    88348847    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88358848    break;
    88368849
    8837   case 690:
    8838 
    8839 /* Line 1806 of yacc.c  */
    8840 #line 2643 "parser.yy"
     8850  case 693:
     8851
     8852/* Line 1806 of yacc.c  */
     8853#line 2652 "parser.yy"
    88418854    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88428855    break;
    88438856
    8844   case 691:
    8845 
    8846 /* Line 1806 of yacc.c  */
    8847 #line 2648 "parser.yy"
     8857  case 694:
     8858
     8859/* Line 1806 of yacc.c  */
     8860#line 2657 "parser.yy"
    88488861    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88498862    break;
    88508863
    8851   case 692:
    8852 
    8853 /* Line 1806 of yacc.c  */
    8854 #line 2650 "parser.yy"
     8864  case 695:
     8865
     8866/* Line 1806 of yacc.c  */
     8867#line 2659 "parser.yy"
    88558868    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88568869    break;
    88578870
    8858   case 693:
    8859 
    8860 /* Line 1806 of yacc.c  */
    8861 #line 2652 "parser.yy"
     8871  case 696:
     8872
     8873/* Line 1806 of yacc.c  */
     8874#line 2661 "parser.yy"
    88628875    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88638876    break;
    88648877
    8865   case 694:
    8866 
    8867 /* Line 1806 of yacc.c  */
    8868 #line 2654 "parser.yy"
     8878  case 697:
     8879
     8880/* Line 1806 of yacc.c  */
     8881#line 2663 "parser.yy"
    88698882    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88708883    break;
    88718884
    8872   case 695:
    8873 
    8874 /* Line 1806 of yacc.c  */
    8875 #line 2656 "parser.yy"
     8885  case 698:
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2665 "parser.yy"
    88768889    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88778890    break;
    88788891
    8879   case 697:
    8880 
    8881 /* Line 1806 of yacc.c  */
    8882 #line 2662 "parser.yy"
     8892  case 700:
     8893
     8894/* Line 1806 of yacc.c  */
     8895#line 2671 "parser.yy"
    88838896    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88848897    break;
    88858898
    8886   case 698:
    8887 
    8888 /* Line 1806 of yacc.c  */
    8889 #line 2664 "parser.yy"
     8899  case 701:
     8900
     8901/* Line 1806 of yacc.c  */
     8902#line 2673 "parser.yy"
    88908903    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88918904    break;
    88928905
    8893   case 699:
    8894 
    8895 /* Line 1806 of yacc.c  */
    8896 #line 2666 "parser.yy"
     8906  case 702:
     8907
     8908/* Line 1806 of yacc.c  */
     8909#line 2675 "parser.yy"
    88978910    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88988911    break;
    88998912
    8900   case 700:
    8901 
    8902 /* Line 1806 of yacc.c  */
    8903 #line 2671 "parser.yy"
     8913  case 703:
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2680 "parser.yy"
    89048917    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    89058918    break;
    89068919
    8907   case 701:
    8908 
    8909 /* Line 1806 of yacc.c  */
    8910 #line 2673 "parser.yy"
     8920  case 704:
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2682 "parser.yy"
    89118924    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89128925    break;
    89138926
    8914   case 704:
    8915 
    8916 /* Line 1806 of yacc.c  */
    8917 #line 2683 "parser.yy"
     8927  case 707:
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2692 "parser.yy"
    89188931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89198932    break;
    89208933
    8921   case 707:
    8922 
    8923 /* Line 1806 of yacc.c  */
    8924 #line 2693 "parser.yy"
     8934  case 710:
     8935
     8936/* Line 1806 of yacc.c  */
     8937#line 2702 "parser.yy"
    89258938    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89268939    break;
    89278940
    8928   case 708:
    8929 
    8930 /* Line 1806 of yacc.c  */
    8931 #line 2695 "parser.yy"
     8941  case 711:
     8942
     8943/* Line 1806 of yacc.c  */
     8944#line 2704 "parser.yy"
    89328945    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89338946    break;
    89348947
    8935   case 709:
    8936 
    8937 /* Line 1806 of yacc.c  */
    8938 #line 2697 "parser.yy"
     8948  case 712:
     8949
     8950/* Line 1806 of yacc.c  */
     8951#line 2706 "parser.yy"
    89398952    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89408953    break;
    89418954
    8942   case 710:
    8943 
    8944 /* Line 1806 of yacc.c  */
    8945 #line 2699 "parser.yy"
     8955  case 713:
     8956
     8957/* Line 1806 of yacc.c  */
     8958#line 2708 "parser.yy"
    89468959    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89478960    break;
    89488961
    8949   case 711:
    8950 
    8951 /* Line 1806 of yacc.c  */
    8952 #line 2701 "parser.yy"
     8962  case 714:
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2710 "parser.yy"
    89538966    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89548967    break;
    89558968
    8956   case 712:
    8957 
    8958 /* Line 1806 of yacc.c  */
    8959 #line 2703 "parser.yy"
     8969  case 715:
     8970
     8971/* Line 1806 of yacc.c  */
     8972#line 2712 "parser.yy"
    89608973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89618974    break;
    89628975
    8963   case 713:
    8964 
    8965 /* Line 1806 of yacc.c  */
    8966 #line 2710 "parser.yy"
     8976  case 716:
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2719 "parser.yy"
    89678980    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89688981    break;
    89698982
    8970   case 714:
    8971 
    8972 /* Line 1806 of yacc.c  */
    8973 #line 2712 "parser.yy"
     8983  case 717:
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2721 "parser.yy"
    89748987    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89758988    break;
    89768989
    8977   case 715:
    8978 
    8979 /* Line 1806 of yacc.c  */
    8980 #line 2714 "parser.yy"
     8990  case 718:
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2723 "parser.yy"
    89818994    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89828995    break;
    89838996
    8984   case 716:
    8985 
    8986 /* Line 1806 of yacc.c  */
    8987 #line 2716 "parser.yy"
     8997  case 719:
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2725 "parser.yy"
    89889001    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89899002    break;
    89909003
    8991   case 717:
    8992 
    8993 /* Line 1806 of yacc.c  */
    8994 #line 2718 "parser.yy"
     9004  case 720:
     9005
     9006/* Line 1806 of yacc.c  */
     9007#line 2727 "parser.yy"
    89959008    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89969009    break;
    89979010
    8998   case 718:
    8999 
    9000 /* Line 1806 of yacc.c  */
    9001 #line 2720 "parser.yy"
     9011  case 721:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2729 "parser.yy"
    90029015    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90039016    break;
    90049017
    9005   case 719:
    9006 
    9007 /* Line 1806 of yacc.c  */
    9008 #line 2722 "parser.yy"
     9018  case 722:
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2731 "parser.yy"
    90099022    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90109023    break;
    90119024
    9012   case 720:
    9013 
    9014 /* Line 1806 of yacc.c  */
    9015 #line 2724 "parser.yy"
     9025  case 723:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2733 "parser.yy"
    90169029    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90179030    break;
    90189031
    9019   case 721:
    9020 
    9021 /* Line 1806 of yacc.c  */
    9022 #line 2726 "parser.yy"
     9032  case 724:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2735 "parser.yy"
    90239036    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90249037    break;
    90259038
    9026   case 722:
    9027 
    9028 /* Line 1806 of yacc.c  */
    9029 #line 2728 "parser.yy"
     9039  case 725:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2737 "parser.yy"
    90309043    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90319044    break;
    90329045
    9033   case 723:
    9034 
    9035 /* Line 1806 of yacc.c  */
    9036 #line 2733 "parser.yy"
     9046  case 726:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2742 "parser.yy"
    90379050    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90389051    break;
    90399052
    9040   case 724:
    9041 
    9042 /* Line 1806 of yacc.c  */
    9043 #line 2735 "parser.yy"
     9053  case 727:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2744 "parser.yy"
    90449057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90459058    break;
    90469059
    9047   case 725:
    9048 
    9049 /* Line 1806 of yacc.c  */
    9050 #line 2740 "parser.yy"
     9060  case 728:
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2749 "parser.yy"
    90519064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90529065    break;
    90539066
    9054   case 726:
    9055 
    9056 /* Line 1806 of yacc.c  */
    9057 #line 2742 "parser.yy"
     9067  case 729:
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2751 "parser.yy"
    90589071    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90599072    break;
    90609073
    9061   case 728:
    9062 
    9063 /* Line 1806 of yacc.c  */
    9064 #line 2769 "parser.yy"
     9074  case 731:
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2778 "parser.yy"
    90659078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90669079    break;
    90679080
    9068   case 732:
    9069 
    9070 /* Line 1806 of yacc.c  */
    9071 #line 2780 "parser.yy"
     9081  case 735:
     9082
     9083/* Line 1806 of yacc.c  */
     9084#line 2789 "parser.yy"
    90729085    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90739086    break;
    90749087
    9075   case 733:
    9076 
    9077 /* Line 1806 of yacc.c  */
    9078 #line 2782 "parser.yy"
     9088  case 736:
     9089
     9090/* Line 1806 of yacc.c  */
     9091#line 2791 "parser.yy"
    90799092    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90809093    break;
    90819094
    9082   case 734:
    9083 
    9084 /* Line 1806 of yacc.c  */
    9085 #line 2784 "parser.yy"
     9095  case 737:
     9096
     9097/* Line 1806 of yacc.c  */
     9098#line 2793 "parser.yy"
    90869099    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90879100    break;
    90889101
    9089   case 735:
    9090 
    9091 /* Line 1806 of yacc.c  */
    9092 #line 2786 "parser.yy"
     9102  case 738:
     9103
     9104/* Line 1806 of yacc.c  */
     9105#line 2795 "parser.yy"
    90939106    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90949107    break;
    90959108
    9096   case 736:
    9097 
    9098 /* Line 1806 of yacc.c  */
    9099 #line 2788 "parser.yy"
     9109  case 739:
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2797 "parser.yy"
    91009113    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91019114    break;
    91029115
    9103   case 737:
    9104 
    9105 /* Line 1806 of yacc.c  */
    9106 #line 2790 "parser.yy"
     9116  case 740:
     9117
     9118/* Line 1806 of yacc.c  */
     9119#line 2799 "parser.yy"
    91079120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91089121    break;
    91099122
    9110   case 738:
    9111 
    9112 /* Line 1806 of yacc.c  */
    9113 #line 2797 "parser.yy"
    9114     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9115     break;
    9116 
    9117   case 739:
    9118 
    9119 /* Line 1806 of yacc.c  */
    9120 #line 2799 "parser.yy"
    9121     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9122     break;
    9123 
    9124   case 740:
    9125 
    9126 /* Line 1806 of yacc.c  */
    9127 #line 2801 "parser.yy"
     9123  case 741:
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2806 "parser.yy"
     9127    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9128    break;
     9129
     9130  case 742:
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2808 "parser.yy"
     9134    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9135    break;
     9136
     9137  case 743:
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2810 "parser.yy"
    91289141    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91299142    break;
    91309143
    9131   case 741:
    9132 
    9133 /* Line 1806 of yacc.c  */
    9134 #line 2803 "parser.yy"
    9135     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9136     break;
    9137 
    9138   case 742:
    9139 
    9140 /* Line 1806 of yacc.c  */
    9141 #line 2805 "parser.yy"
    9142     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9143     break;
    9144 
    9145   case 743:
    9146 
    9147 /* Line 1806 of yacc.c  */
    9148 #line 2807 "parser.yy"
     9144  case 744:
     9145
     9146/* Line 1806 of yacc.c  */
     9147#line 2812 "parser.yy"
     9148    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9149    break;
     9150
     9151  case 745:
     9152
     9153/* Line 1806 of yacc.c  */
     9154#line 2814 "parser.yy"
     9155    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9156    break;
     9157
     9158  case 746:
     9159
     9160/* Line 1806 of yacc.c  */
     9161#line 2816 "parser.yy"
    91499162    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91509163    break;
    91519164
    9152   case 744:
    9153 
    9154 /* Line 1806 of yacc.c  */
    9155 #line 2812 "parser.yy"
     9165  case 747:
     9166
     9167/* Line 1806 of yacc.c  */
     9168#line 2821 "parser.yy"
    91569169    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91579170    break;
    91589171
    9159   case 745:
    9160 
    9161 /* Line 1806 of yacc.c  */
    9162 #line 2817 "parser.yy"
    9163     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    9164     break;
    9165 
    9166   case 746:
    9167 
    9168 /* Line 1806 of yacc.c  */
    9169 #line 2819 "parser.yy"
    9170     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9171     break;
    9172 
    9173   case 747:
    9174 
    9175 /* Line 1806 of yacc.c  */
    9176 #line 2821 "parser.yy"
    9177     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     9172  case 748:
     9173
     9174/* Line 1806 of yacc.c  */
     9175#line 2826 "parser.yy"
     9176    { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
     9177    break;
     9178
     9179  case 749:
     9180
     9181/* Line 1806 of yacc.c  */
     9182#line 2828 "parser.yy"
     9183    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91789184    break;
    91799185
     
    91819187
    91829188/* Line 1806 of yacc.c  */
    9183 #line 2845 "parser.yy"
     9189#line 2830 "parser.yy"
     9190    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     9191    break;
     9192
     9193  case 753:
     9194
     9195/* Line 1806 of yacc.c  */
     9196#line 2854 "parser.yy"
    91849197    { (yyval.en) = 0; }
    91859198    break;
    91869199
    9187   case 751:
    9188 
    9189 /* Line 1806 of yacc.c  */
    9190 #line 2847 "parser.yy"
     9200  case 754:
     9201
     9202/* Line 1806 of yacc.c  */
     9203#line 2856 "parser.yy"
    91919204    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91929205    break;
     
    91959208
    91969209/* Line 1806 of yacc.c  */
    9197 #line 9198 "Parser/parser.cc"
     9210#line 9211 "Parser/parser.cc"
    91989211      default: break;
    91999212    }
     
    94269439
    94279440/* Line 2067 of yacc.c  */
    9428 #line 2850 "parser.yy"
     9441#line 2859 "parser.yy"
    94299442
    94309443// ----end of grammar----
     
    94339446
    94349447void yyerror( const char * ) {
    9435         std::cout << "Error ";
     9448        cout << "Error ";
    94369449        if ( yyfilename ) {
    9437                 std::cout << "in file " << yyfilename << " ";
     9450                cout << "in file " << yyfilename << " ";
    94389451        } // if
    9439         std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
     9452        cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl;
    94409453}
    94419454
  • src/Parser/parser.h

    rac9ca96 r7756647  
    262262
    263263/* Line 2068 of yacc.c  */
    264 #line 115 "parser.yy"
     264#line 116 "parser.yy"
    265265
    266266        Token tok;
  • src/Parser/parser.yy

    rac9ca96 r7756647  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 12 17:29:45 2016
    13 // Update Count     : 1969
     12// Last Modified On : Wed Oct  5 14:10:46 2016
     13// Update Count     : 2002
    1414//
    1515
     
    5454#include "TypeData.h"
    5555#include "LinkageSpec.h"
     56using namespace std;
    5657
    5758extern DeclarationNode * parseTree;
     
    5960extern TypedefTable typedefTable;
    6061
    61 std::stack< LinkageSpec::Spec > linkageStack;
    62 
    63 void appendStr( std::string *to, std::string *from ) {
     62stack< LinkageSpec::Spec > linkageStack;
     63
     64void appendStr( string *to, string *from ) {
    6465        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    6566        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
     
    195196%type<decl> field_declaration field_declaration_list field_declarator field_declaring_list
    196197%type<en> field field_list
     198%type<tok> field_name
    197199
    198200%type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr
     
    359361                { $$ = $2; }
    360362        | '(' compound_statement ')'                                            // GCC, lambda expression
    361         { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
     363                { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
    362364        ;
    363365
     
    378380        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    379381                { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $5 ) ) ); }
     382        | postfix_expression '.' INTEGERconstant
     383                { $$ = new ExpressionNode( build_fieldSel( $1, build_constantInteger( *$3 ) ) ); }
    380384        | postfix_expression ARROW no_attr_identifier
    381385                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
     
    391395                {
    392396                        Token fn;
    393                         fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
     397                        fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
    394398                        $$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
    395399                }
     
    414418
    415419field:                                                                                                  // CFA, tuple field selector
    416         no_attr_identifier
    417                 { $$ = new ExpressionNode( build_varref( $1 ) ); }
     420        field_name
    418421                // ambiguity with .0 so space required after field-selection, e.g.
    419422                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    420         | no_attr_identifier '.' field
     423                { $$ = new ExpressionNode( build_varref( $1 ) ); }
     424        | field_name '.' field
    421425                { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); }
    422         | no_attr_identifier '.' '[' push field_list pop ']'
     426        | field_name '.' '[' push field_list pop ']'
    423427                { $$ = new ExpressionNode( build_fieldSel( $5, build_varref( $1 ) ) ); }
    424         | no_attr_identifier ARROW field
     428        | field_name ARROW field
    425429                { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); }
    426         | no_attr_identifier ARROW '[' push field_list pop ']'
     430        | field_name ARROW '[' push field_list pop ']'
    427431                { $$ = new ExpressionNode( build_pfieldSel( $5, build_varref( $1 ) ) ); }
     432        ;
     433
     434field_name:
     435        no_attr_identifier
     436        | INTEGERconstant
    428437        ;
    429438
     
    668677                {
    669678                        Token fn;
    670                         fn.str = new std::string( "^?{}" ); // location undefined
     679                        fn.str = new string( "^?{}" );                          // location undefined
    671680                        $$ = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) ) ) );
    672681                }
     
    898907                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
    899908        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    900         { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
     909                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
    901910        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    902911                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
     
    970979                { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); }
    971980        | '[' constant_expression ']' string_literal '(' constant_expression ')'
    972         { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); }
     981                { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); }
    973982        ;
    974983
     
    14691478aggregate_name:
    14701479        aggregate_key '{' field_declaration_list '}'
    1471                 { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3, true ); }
     1480                { $$ = DeclarationNode::newAggregate( $1, nullptr, nullptr, $3, true ); }
    14721481        | aggregate_key no_attr_identifier_or_type_name
    14731482                {
    14741483                        typedefTable.makeTypedef( *$2 );
    1475                         $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, false );
     1484                        $$ = DeclarationNode::newAggregate( $1, $2, nullptr, nullptr, false );
    14761485                }
    14771486        | aggregate_key no_attr_identifier_or_type_name
    14781487                { typedefTable.makeTypedef( *$2 ); }
    14791488                '{' field_declaration_list '}'
    1480                 { $$ = DeclarationNode::newAggregate( $1, $2, 0, $5, true ); }
     1489                { $$ = DeclarationNode::newAggregate( $1, $2, nullptr, $5, true ); }
    14811490        | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    1482                 { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6, false ); }
     1491                { $$ = DeclarationNode::newAggregate( $1, nullptr, $3, $6, false ); }
    14831492        | aggregate_key typegen_name                                            // CFA, S/R conflict
    14841493                { $$ = $2; }
     
    15611570enum_name:
    15621571        enum_key '{' enumerator_list comma_opt '}'
    1563                 { $$ = DeclarationNode::newEnum( 0, $3 ); }
     1572                { $$ = DeclarationNode::newEnum( nullptr, $3 ); }
    15641573        | enum_key no_attr_identifier_or_type_name
    15651574                {
     
    20062015                {
    20072016                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    2008                         linkage = LinkageSpec::fromString( *$2 );
     2017                        linkage = LinkageSpec::linkageCheck( $2 );
    20092018                }
    20102019          '{' external_definition_list_opt '}'                          // C++-style linkage specifier
     
    25222531abstract_function:
    25232532        '(' push parameter_type_list_opt pop ')'                        // empty parameter list OBSOLESCENT (see 3)
    2524                 { $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
     2533                { $$ = DeclarationNode::newFunction( nullptr, nullptr, $3, nullptr ); }
    25252534        | '(' abstract_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    25262535                { $$ = $2->addParamList( $6 ); }
     
    25912600abstract_parameter_function:
    25922601        '(' push parameter_type_list_opt pop ')'                        // empty parameter list OBSOLESCENT (see 3)
    2593                 { $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
     2602                { $$ = DeclarationNode::newFunction( nullptr, nullptr, $3, nullptr ); }
    25942603        | '(' abstract_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    25952604                { $$ = $2->addParamList( $6 ); }
     
    27952804                // empty (void) function return type.
    27962805        '[' ']' type_specifier
    2797                 { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2806                { $$ = $3->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    27982807        | '[' ']' multi_array_dimension type_specifier
    2799                 { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2808                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    28002809        | multi_array_dimension type_specifier
    28012810                { $$ = $2->addNewArray( $1 ); }
    28022811        | '[' ']' new_abstract_ptr
    2803                 { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2812                { $$ = $3->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    28042813        | '[' ']' multi_array_dimension new_abstract_ptr
    2805                 { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2814                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    28062815        | multi_array_dimension new_abstract_ptr
    28072816                { $$ = $2->addNewArray( $1 ); }
     
    28152824new_abstract_function:                                                                  // CFA
    28162825        '[' ']' '(' new_parameter_type_list_opt ')'
    2817                 { $$ = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), $4, 0 ); }
     2826                { $$ = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), $4, nullptr ); }
    28182827        | new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
    2819                 { $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
     2828                { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
    28202829        | new_function_return '(' push new_parameter_type_list_opt pop ')'
    2821                 { $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
     2830                { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
    28222831        ;
    28232832
     
    28542863
    28552864void yyerror( const char * ) {
    2856         std::cout << "Error ";
     2865        cout << "Error ";
    28572866        if ( yyfilename ) {
    2858                 std::cout << "in file " << yyfilename << " ";
     2867                cout << "in file " << yyfilename << " ";
    28592868        } // if
    2860         std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
     2869        cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl;
    28612870}
    28622871
  • src/SynTree/FunctionDecl.cc

    rac9ca96 r7756647  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:14 2016
    13 // Update Count     : 20
     12// Last Modified On : Sat Oct  1 23:06:32 2016
     13// Update Count     : 21
    1414//
    1515
     
    6060        } // if
    6161        if ( get_linkage() != LinkageSpec::Cforall ) {
    62                 os << LinkageSpec::toString( get_linkage() ) << " ";
     62                os << LinkageSpec::linkageName( get_linkage() ) << " ";
    6363        } // if
    6464        if ( get_isInline() ) {
  • src/SynTree/ObjectDecl.cc

    rac9ca96 r7756647  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:33 2016
    13 // Update Count     : 31
     12// Last Modified On : Sat Oct  1 23:05:56 2016
     13// Update Count     : 32
    1414//
    1515
     
    4444
    4545        if ( get_linkage() != LinkageSpec::Cforall ) {
    46                 os << LinkageSpec::toString( get_linkage() ) << " ";
     46                os << LinkageSpec::linkageName( get_linkage() ) << " ";
    4747        } // if
    4848
Note: See TracChangeset for help on using the changeset viewer.