Changeset 3078643 for src


Ignore:
Timestamp:
Aug 10, 2016, 2:29:44 PM (9 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
be0a9d8, ef42e764
Parents:
f18a711 (diff), a563f01 (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' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
src
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    rf18a711 r3078643  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 20:49:31 2016
    13 // Update Count     : 164
     12// Last Modified On : Tue Aug  9 08:39:20 2016
     13// Update Count     : 169
    1414//
    1515
     
    4949        newnode->name = name;
    5050        newnode->storageClasses = storageClasses;
    51         newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     51//PAB   newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     52        newnode->bitfieldWidth = bitfieldWidth;
    5253        newnode->hasEllipsis = hasEllipsis;
    5354        newnode->initializer = initializer;
     
    283284        newnode->type->array->dimension = size;
    284285        newnode->type->array->isStatic = isStatic;
    285         if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantNode *>( newnode->type->array->dimension ) ) {
     286        if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build() ) ) {
    286287                newnode->type->array->isVarLen = false;
    287288        } else {
  • src/Parser/ExpressionNode.cc

    rf18a711 r3078643  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Aug  5 07:56:23 2016
    13 // Update Count     : 375
     12// Last Modified On : Wed Aug 10 11:07:38 2016
     13// Update Count     : 486
    1414//
    1515
    1616#include <cassert>
    1717#include <cctype>
     18#include <climits>
     19#include <cstdio>
    1820#include <algorithm>
    1921#include <sstream>
    20 #include <cstdio>
    2122
    2223#include "ParseNode.h"
     
    3132using namespace std;
    3233
    33 ExpressionNode::ExpressionNode() : ParseNode() {}
    34 
    35 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
    36 
    37 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
    38         if ( other.argName ) {
    39                 argName = other.argName->clone();
    40         } else {
    41                 argName = 0;
    42         } // if
    43 }
    44 
    45 ExpressionNode * ExpressionNode::set_argName( const std::string *aName ) {
    46         argName = new VarRefNode( aName );
    47         return this;
    48 }
    49 
    50 ExpressionNode * ExpressionNode::set_argName( ExpressionNode *aDesignator ) {
    51         argName = aDesignator;
    52         return this;
    53 }
    54 
    55 void ExpressionNode::printDesignation( std::ostream &os, int indent ) const {
    56         if ( argName ) {
    57                 os << string( indent, ' ' ) << "(designated by:  ";
    58                 argName->printOneLine( os, indent );
    59                 os << ")" << std::endl;
    60         } // if
    61 }
    62 
    63 //##############################################################################
    64 
    65 NullExprNode::NullExprNode() {}
    66 
    67 NullExprNode *NullExprNode::clone() const {
    68         return new NullExprNode();
    69 }
    70 
    71 void NullExprNode::print( std::ostream & os, int indent ) const {
    72         printDesignation( os );
    73         os << "null expression";
    74 }
    75 
    76 void NullExprNode::printOneLine( std::ostream & os, int indent ) const {
    77         printDesignation( os );
    78         os << "null";
    79 }
    80 
    81 Expression *NullExprNode::build() const {
    82         return 0;
    83 }
    84 
    85 // CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) {
    86 //      return new CommaExprNode( this, exp );
    87 // }
    88 
    89 //##############################################################################
    90 
    91 ConstantNode::ConstantNode( ConstantExpr *expr ) : expr( expr ) {
    92 } // ConstantNode::ConstantNode
    93 
    94 ConstantNode *ConstantNode::appendstr( const std::string *newValue ) {
    95         assert( newValue != 0 );
    96 
    97         string value = expr->get_constant()->get_value();
    98 
    99         // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    100         value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
    101         expr->get_constant()->set_value( value );
    102 
    103         delete newValue;                                                                        // allocated by lexer
    104         return this;
    105 }
    106 
    107 void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
    108         // os << string( indent, ' ' );
    109         // printDesignation( os );
    110 
    111         // switch ( type ) {
    112         //   case Integer:
    113         //   case Float:
    114         //      os << value ;
    115         //      break;
    116         //   case Character:
    117         //      os << "'" << value << "'";
    118         //      break;
    119         //   case String:
    120         //      os << '"' << value << '"';
    121         //      break;
    122         // } // switch
    123 
    124         // os << ' ';
    125 }
    126 
    127 void ConstantNode::print( std::ostream &os, int indent ) const {
    128         printOneLine( os, indent );
    129         os << endl;
    130 }
    131 
    132 Expression *ConstantNode::build() const {
    133         return expr->clone();
    134 }
    135 
    136 //##############################################################################
    137 
    138 VarRefNode::VarRefNode() : isLabel( false ) {}
    139 
    140 VarRefNode::VarRefNode( const string *name_, bool labelp ) : ExpressionNode( name_ ), isLabel( labelp ) {}
    141 
    142 VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {
    143 }
    144 
    145 Expression *VarRefNode::build() const {
    146         return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
    147 }
    148 
    149 void VarRefNode::printOneLine( std::ostream &os, int indent ) const {
    150         printDesignation( os );
    151         os << get_name() << ' ';
    152 }
    153 
    154 void VarRefNode::print( std::ostream &os, int indent ) const {
    155         printDesignation( os );
    156         os << string( indent, ' ' ) << "Referencing: ";
    157         os << "Variable: " << get_name();
    158         os << endl;
    159 }
    160 
    161 //##############################################################################
    162 
    163 DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
    164         set_argName( expr );
    165         assert( get_argName() );
    166 
    167         if ( ! isArrayIndex ) {
    168                 if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
    169 
    170                         stringstream ss( var->get_name() );
    171                         double value;
    172                         if ( ss >> value ) {
    173                                 // this is a floating point constant. It MUST be
    174                                 // ".0" or ".1", otherwise the program is invalid
    175                                 if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
    176                                         throw SemanticError( "invalid designator name: " + var->get_name() );
    177                                 } // if
    178                                 var->set_name( var->get_name().substr(1) );
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
     35
     36//##############################################################################
     37
     38// Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
     39//
     40//              prefix action constant action suffix
     41//
     42// Alternatively, breaking a pattern using BEGIN does not work if the following pattern can be empty:
     43//
     44//              constant BEGIN CONT ...
     45//              <CONT>(...)? BEGIN 0 ... // possible empty suffix
     46//
     47// because the CONT rule is NOT triggered if the pattern is empty. Hence, constants are reparsed here to determine their
     48// type.
     49
     50static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
     51
     52static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
     53static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
     54static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
     55static inline bool checkD( char c ) { return c == 'd' || c == 'D'; }
     56static inline bool checkI( char c ) { return c == 'i' || c == 'I'; }
     57static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
     58
     59Expression *build_constantInteger( std::string & str ) {
     60        static const BasicType::Kind kind[2][3] = {
     61                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     62                { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
     63        };
     64        bool dec = true, Unsigned = false;                                      // decimal, unsigned constant
     65        int size;                                                                                       // 0 => int, 1 => long, 2 => long long
     66        unsigned long long v;                                                           // converted integral value
     67        size_t last = str.length() - 1;                                         // last character of constant
     68
     69        if ( str[0] == '0' ) {                                                          // octal/hex constant ?
     70                dec = false;
     71                if ( last != 0 && checkX( str[1] ) ) {                  // hex constant ?
     72                        sscanf( (char *)str.c_str(), "%llx", &v );
     73                        //printf( "%llx %llu\n", v, v );
     74                } else {                                                                                // octal constant
     75                        sscanf( (char *)str.c_str(), "%llo", &v );
     76                        //printf( "%llo %llu\n", v, v );
     77                } // if
     78        } else {                                                                                        // decimal constant ?
     79                sscanf( (char *)str.c_str(), "%llu", &v );
     80                //printf( "%llu %llu\n", v, v );
     81        } // if
     82
     83        if ( v <= INT_MAX ) {                                                           // signed int
     84                size = 0;
     85        } else if ( v <= UINT_MAX && ! dec ) {                          // unsigned int
     86                size = 0;
     87                Unsigned = true;                                                                // unsigned
     88        } else if ( v <= LONG_MAX ) {                                           // signed long int
     89                size = 1;
     90        } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
     91                size = 1;
     92                Unsigned = true;                                                                // unsigned long int
     93        } else if ( v <= LLONG_MAX ) {                                          // signed long long int
     94                size = 2;
     95        } else {                                                                                        // unsigned long long int
     96                size = 2;
     97                Unsigned = true;                                                                // unsigned long long int
     98        } // if
     99
     100        if ( checkU( str[last] ) ) {                                            // suffix 'u' ?
     101                Unsigned = true;
     102                if ( last > 0 && checkL( str[last - 1] ) ) {    // suffix 'l' ?
     103                        size = 1;
     104                        if ( last > 1 && checkL( str[last - 2] ) ) { // suffix 'll' ?
     105                                size = 2;
    179106                        } // if
    180107                } // if
    181         } // if
    182 }
    183 
    184 DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {
    185 }
    186 
    187 class DesignatorFixer : public Mutator {
    188 public:
    189         virtual Expression* mutate( NameExpr *nameExpr ) {
    190                 if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
    191                         Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
    192                         delete nameExpr;
    193                         return new ConstantExpr( val );
    194                 }
    195                 return nameExpr;
    196         }
    197 };
    198 
    199 Expression *DesignatorNode::build() const {
    200         Expression * ret = maybeBuild<Expression>(get_argName());
    201 
    202         if ( isArrayIndex ) {
    203                 // need to traverse entire structure and change any instances of 0 or 1 to
    204                 // ConstantExpr
    205                 DesignatorFixer fixer;
    206                 ret = ret->acceptMutator( fixer );
    207         } // if
    208 
    209         return ret;
    210 }
    211 
    212 void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {
    213         if ( get_argName() ) {
    214                 if ( isArrayIndex ) {
    215                         os << "[";
    216                         get_argName()->printOneLine( os, indent );
    217                         os << "]";
     108        } else if ( checkL( str[ last ] ) ) {                           // suffix 'l' ?
     109                size = 1;
     110                if ( last > 0 && checkL( str[last - 1] ) ) {    // suffix 'll' ?
     111                        size = 2;
     112                        if ( last > 1 && checkU( str[last - 2] ) ) { // suffix 'u' ?
     113                                Unsigned = true;
     114                        } // if
    218115                } else {
    219                         os << ".";
    220                         get_argName()->printOneLine( os, indent );
    221                 }
    222         } // if
    223 }
    224 
    225 void DesignatorNode::print( std::ostream &os, int indent ) const {
    226         if ( get_argName() ) {
    227                 if ( isArrayIndex ) {
    228                         os << "[";
    229                         get_argName()->print( os, indent );
    230                         os << "]";
    231                 } else {
    232                         os << ".";
    233                         get_argName()->print( os, indent );
    234                 }
    235         } // if
    236 }
    237 
    238 //##############################################################################
    239 
    240 static const char *opName[] = {
    241         "TupleC", "Comma", "TupleFieldSel", // "TuplePFieldSel", // n-adic
    242         // triadic
    243         "Cond", "NCond",
     116                        if ( last > 0 && checkU( str[last - 1] ) ) { // suffix 'u' ?
     117                                Unsigned = true;
     118                        } // if
     119                } // if
     120        } // if
     121
     122        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
     123} // build_constantInteger
     124
     125Expression *build_constantFloat( std::string & str ) {
     126        static const BasicType::Kind kind[2][3] = {
     127                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     128                { BasicType::FloatComplex, BasicType::DoubleComplex, BasicType::LongDoubleComplex },
     129        };
     130
     131        bool complx = false;                                                            // real, complex
     132        int size = 1;                                                                           // 0 => float, 1 => double (default), 2 => long double
     133        // floating-point constant has minimum of 2 characters: 1. or .1
     134        size_t last = str.length() - 1;
     135
     136        if ( checkI( str[last] ) ) {                                            // imaginary ?
     137                complx = true;
     138                last -= 1;                                                                              // backup one character
     139        } // if
     140
     141        if ( checkF( str[last] ) ) {                                            // float ?
     142                size = 0;
     143        } else if ( checkD( str[last] ) ) {                                     // double ?
     144                size = 1;
     145        } else if ( checkL( str[last] ) ) {                                     // long double ?
     146                size = 2;
     147        } // if
     148        if ( ! complx && checkI( str[last - 1] ) ) {            // imaginary ?
     149                complx = true;
     150        } // if
     151
     152        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
     153} // build_constantFloat
     154
     155Expression *build_constantChar( std::string & str ) {
     156        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
     157} // build_constantChar
     158
     159ConstantExpr *build_constantStr( std::string & str ) {
     160        // string should probably be a primitive type
     161        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     162                                new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::UnsignedInt ),
     163                                                                                        toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
     164                                                                   false, false );
     165        return new ConstantExpr( Constant( at, str ) );
     166} // build_constantStr
     167
     168//##############################################################################
     169
     170NameExpr * build_varref( const string *name, bool labelp ) {
     171        return new NameExpr( *name, nullptr );
     172}
     173
     174//##############################################################################
     175
     176static const char *OperName[] = {
    244177        // diadic
    245         "SizeOf", "AlignOf", "OffsetOf", "Attr", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
     178        "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
    246179        "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
    247180        "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
    248         "?[?]", "FieldSel", "PFieldSel", "...",
     181        "?[?]", "...",
    249182        // monadic
    250183        "+?", "-?", "AddressOf", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "&&"
    251184};
    252185
    253 OperatorNode::OperatorNode( Type t ) : type( t ) {}
    254 
    255 OperatorNode::OperatorNode( const OperatorNode &other ) : ExpressionNode( other ), type( other.type ) {
    256 }
    257 
    258 OperatorNode::~OperatorNode() {}
    259 
    260 OperatorNode::Type OperatorNode::get_type( void ) const {
    261         return type;
    262 }
    263 
    264 void OperatorNode::printOneLine( std::ostream &os, int indent ) const {
    265         printDesignation( os );
    266         os << opName[ type ] << ' ';
    267 }
    268 
    269 void OperatorNode::print( std::ostream &os, int indent ) const{
    270         printDesignation( os );
    271         os << string( indent, ' ' ) << "Operator: " << opName[type] << endl;
    272         return;
    273 }
    274 
    275 const char *OperatorNode::get_typename( void ) const{
    276         return opName[ type ];
    277 }
    278 
    279 //##############################################################################
    280 
    281 CompositeExprNode::CompositeExprNode() : ExpressionNode(), function( 0 ), arguments( 0 ) {
    282 }
    283 
    284 CompositeExprNode::CompositeExprNode( const string *name_ ) : ExpressionNode( name_ ), function( 0 ), arguments( 0 ) {
    285 }
    286 
    287 CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *args ):
    288         function( f ), arguments( args ) {
    289 }
    290 
    291 CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2):
    292         function( f ), arguments( arg1 ) {
    293         arguments->set_link( arg2 );
    294 }
    295 
    296 CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ), arguments( 0 ) {
    297         ParseNode *cur = other.arguments;
    298         while ( cur ) {
    299                 if ( arguments ) {
    300                         arguments->set_link( cur->clone() );
    301                 } else {
    302                         arguments = ( ExpressionNode*)cur->clone();
    303                 } // if
    304                 cur = cur->get_link();
    305         }
    306 }
    307 
    308 CompositeExprNode::~CompositeExprNode() {
    309         delete function;
    310         delete arguments;
    311 }
    312 
    313 
    314 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node ) {
    315         DeclarationNode *decl_node = arg->get_decl();
    316 
     186//##############################################################################
     187
     188Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    317189        Type *targetType = decl_node->buildType();
    318         if ( dynamic_cast< VoidType* >( targetType ) ) {
     190        if ( dynamic_cast< VoidType * >( targetType ) ) {
    319191                delete targetType;
    320192                return new CastExpr( maybeBuild<Expression>(expr_node) );
     
    324196}
    325197
    326 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
    327         NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
    328         assert( memberExpr );
    329         UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), maybeBuild<Expression>(expr_node) );
     198Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
     199        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
    330200        delete member;
    331201        return ret;
    332202}
    333203
    334 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
    335         NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
    336         assert( memberExpr );
     204Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    337205        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    338206        deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
    339         UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), deref );
     207        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    340208        delete member;
    341209        return ret;
     
    345213                return new AddressExpr( maybeBuild<Expression>(expr_node) );
    346214}
    347 Expression *build_sizeOf( ExpressionNode *expr_node ) {
    348         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
    349                 return new SizeofExpr( arg->get_decl()->buildType() );
    350         } else {
    351                 return new SizeofExpr( maybeBuild<Expression>(expr_node) );
    352         } // if
    353 }
    354 Expression *build_alignOf( ExpressionNode *expr_node ) {
    355         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
    356                 return new AlignofExpr( arg->get_decl()->buildType() );
    357         } else {
    358                 return new AlignofExpr( maybeBuild<Expression>(expr_node) );
    359         } // if
    360 }
    361 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member ) {
    362         NameExpr *memberExpr = dynamic_cast<NameExpr *>( maybeBuild<Expression>( member ) );
    363         assert( memberExpr );
    364         return new UntypedOffsetofExpr( arg->get_decl()->buildType(), memberExpr->get_name() );
     215Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
     216        return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     217}
     218Expression *build_sizeOftype( DeclarationNode *decl_node ) {
     219        return new SizeofExpr( decl_node->buildType() );
     220}
     221Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
     222        return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     223}
     224Expression *build_alignOftype( DeclarationNode *decl_node ) {
     225        return new AlignofExpr( decl_node->buildType() );
     226}
     227Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
     228        return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
    365229}
    366230
     
    369233}
    370234
    371 Expression *build_opr1( OperatorNode::Type op, ExpressionNode *expr_node ) {
     235Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
     236        std::list<Expression *> args;
     237        args.push_back( maybeBuild<Expression>(expr_node) );
     238        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
     239}
     240Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    372241        std::list<Expression *> args;
    373242        args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
    374         return new UntypedExpr( new NameExpr( opName[ op ] ), args );
    375 }
    376 Expression *build_opr2( OperatorNode::Type op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
     243        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
     244}
     245Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    377246        std::list<Expression *> args;
    378247        args.push_back( maybeBuild<Expression>(expr_node1) );
    379248        args.push_back( maybeBuild<Expression>(expr_node2) );
    380         return new UntypedExpr( new NameExpr( opName[ op ] ), args );
     249        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
     250}
     251Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
     252        std::list<Expression *> args;
     253        args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
     254        args.push_back( maybeBuild<Expression>(expr_node2) );
     255        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    381256}
    382257
     
    389264}
    390265
    391 CompositeExprNode2::CompositeExprNode2( Expression *expr ) : expr( expr ) {}
    392 CompositeExprNode2::CompositeExprNode2( const CompositeExprNode2 &other ) : expr( other.expr->clone() ) {}
    393 CompositeExprNode2::~CompositeExprNode2() { delete expr; }
    394 void CompositeExprNode2::print( std::ostream &, int indent ) const { assert( false ); }
    395 void CompositeExprNode2::printOneLine( std::ostream &, int indent ) const { assert( false ); }
    396 
    397 
    398 Expression *CompositeExprNode::build() const {
    399         OperatorNode *op;
    400         std::list<Expression *> args;
    401 
    402         buildList( get_args(), args );
    403 
    404         if ( ! ( op = dynamic_cast<OperatorNode *>( function ) ) ) { // function as opposed to operator
    405                 return new UntypedExpr( maybeBuild<Expression>(function), args, maybeBuild< Expression >( get_argName() ));
    406         } // if
    407 
    408         switch ( op->get_type() ) {
    409           case OperatorNode::Assign:
    410           case OperatorNode::MulAssn:
    411           case OperatorNode::DivAssn:
    412           case OperatorNode::ModAssn:
    413           case OperatorNode::PlusAssn:
    414           case OperatorNode::MinusAssn:
    415           case OperatorNode::LSAssn:
    416           case OperatorNode::RSAssn:
    417           case OperatorNode::AndAssn:
    418           case OperatorNode::ERAssn:
    419           case OperatorNode::OrAssn:
    420                 assert( ! args.empty() );
    421                 args.front() = new AddressExpr( args.front() );
    422           case OperatorNode::UnPlus:
    423           case OperatorNode::UnMinus:
    424           case OperatorNode::PointTo:
    425           case OperatorNode::Neg:
    426           case OperatorNode::BitNeg:
    427           case OperatorNode::LabelAddress:
    428                 return new UntypedExpr( new NameExpr( opName[ op->get_type() ] ), args );
    429 
    430           case OperatorNode::Attr:
    431                 {
    432                         VarRefNode *var = dynamic_cast<VarRefNode *>( get_args() );
    433                         assert( var );
    434                         if ( ! get_args()->get_link() ) {
    435                                 return new AttrExpr( maybeBuild<Expression>(var), ( Expression*)0);
    436                         } else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link() ) ) {
    437                                 return new AttrExpr( maybeBuild<Expression>(var), arg->get_decl()->buildType() );
    438                         } else {
    439                                 return new AttrExpr( maybeBuild<Expression>(var), args.back() );
    440                         } // if
    441                 }
    442           case OperatorNode::Cond:
    443                 {
    444                         assert( args.size() == 3);
    445                         std::list< Expression * >::const_iterator i = args.begin();
    446                         Expression *arg1 = notZeroExpr( *i++ );
    447                         Expression *arg2 = *i++;
    448                         Expression *arg3 = *i++;
    449                         return new ConditionalExpr( arg1, arg2, arg3 );
    450                 }
    451           case OperatorNode::NCond:
    452                 throw UnimplementedError( "GNU 2-argument conditional expression" );
    453                 // Tuples
    454           case OperatorNode::TupleC:
    455                 {
    456                         TupleExpr *ret = new TupleExpr();
    457                         std::copy( args.begin(), args.end(), back_inserter( ret->get_exprs() ) );
    458                         return ret;
    459                 }
    460           default:
    461                 assert( ((void)"CompositeExprNode::build", false) );
    462                 return 0;
    463         } // switch
    464 }
    465 
    466 void CompositeExprNode::printOneLine( std::ostream &os, int indent ) const {
    467         printDesignation( os );
    468         os << "( ";
    469         function->printOneLine( os, indent );
    470         for ( ExpressionNode *cur = arguments; cur != 0; cur = dynamic_cast< ExpressionNode* >( cur->get_link() ) ) {
    471                 cur->printOneLine( os, indent );
    472         } // for
    473         os << ") ";
    474 }
    475 
    476 void CompositeExprNode::print( std::ostream &os, int indent ) const {
    477         printDesignation( os );
    478         os << string( indent, ' ' ) << "Application of: " << endl;
    479         function->print( os, indent + ParseNode::indent_by );
    480 
    481         os << string( indent, ' ' ) ;
    482         if ( arguments ) {
    483                 os << "... on arguments: " << endl;
    484                 arguments->printList( os, indent + ParseNode::indent_by );
    485         } else
    486                 os << "... on no arguments: " << endl;
    487 }
    488 
    489 void CompositeExprNode::set_function( ExpressionNode *f ) {
    490         function = f;
    491 }
    492 
    493 void CompositeExprNode::set_args( ExpressionNode *args ) {
    494         arguments = args;
    495 }
    496 
    497 ExpressionNode *CompositeExprNode::get_function( void ) const {
    498         return function;
    499 }
    500 
    501 ExpressionNode *CompositeExprNode::get_args( void ) const {
    502         return arguments;
    503 }
    504 
    505 void CompositeExprNode::add_arg( ExpressionNode *arg ) {
    506         if ( arguments )
    507                 arguments->set_link( arg );
    508         else
    509                 set_args( arg );
    510 }
    511 
    512 //##############################################################################
    513 
    514 Expression *AsmExprNode::build() const {
    515         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
    516 }
    517 
    518 void AsmExprNode::print( std::ostream &os, int indent ) const {
    519         os << string( indent, ' ' ) << "Assembler Expression:" << endl;
    520         if ( inout ) {
    521                 os << string( indent, ' ' ) << "inout: " << std::endl;
    522                 inout->print( os, indent + 2 );
    523         } // if
    524         if ( constraint ) {
    525                 os << string( indent, ' ' ) << "constraint: " << std::endl;
    526                 constraint->print( os, indent + 2 );
    527         } // if
    528         if ( operand ) {
    529                 os << string( indent, ' ' ) << "operand: " << std::endl;
    530                 operand->print( os, indent + 2 );
    531         } // if
    532 }
    533 
    534 void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {
    535         printDesignation( os );
    536         os << "( ";
    537         if ( inout ) inout->printOneLine( os, indent + 2 );
    538         os << ", ";
    539         if ( constraint ) constraint->printOneLine( os, indent + 2 );
    540         os << ", ";
    541         if ( operand ) operand->printOneLine( os, indent + 2 );
    542         os << ") ";
     266Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
     267        return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
     268}
     269Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     270        return new AttrExpr( var, decl_node->buildType() );
     271}
     272
     273Expression *build_tuple( ExpressionNode * expr_node ) {
     274        TupleExpr *ret = new TupleExpr();
     275        buildList( expr_node, ret->get_exprs() );
     276        return ret;
     277}
     278
     279Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
     280        std::list<Expression *> args;
     281
     282        buildList( expr_node, args );
     283        return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
     284}
     285
     286Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
     287        Expression *low_cexpr = maybeBuild<Expression>( low );
     288        Expression *high_cexpr = maybeBuild<Expression>( high );
     289        return new RangeExpr( low_cexpr, high_cexpr );
     290}
     291
     292//##############################################################################
     293
     294Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
     295        return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) );
    543296}
    544297
     
    551304//##############################################################################
    552305
    553 ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
    554 
    555 ValofExprNode::ValofExprNode( const ValofExprNode &other ) : ExpressionNode( other ), body( maybeClone( body ) ) {
    556 }
    557 
    558 ValofExprNode::~ValofExprNode() {
    559         delete body;
    560 }
    561 
    562 void ValofExprNode::print( std::ostream &os, int indent ) const {
    563         printDesignation( os );
    564         os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
    565         get_body()->print( os, indent + 4);
    566 }
    567 
    568 void ValofExprNode::printOneLine( std::ostream &, int indent ) const {
    569         assert( false );
    570 }
    571 
    572 Expression *ValofExprNode::build() const {
    573         return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
    574 }
    575 
    576 //##############################################################################
    577 
    578 ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) {
    579         if ( init_ == 0 )
    580                 init = 0;
    581         else {
    582                 DeclarationNode *decl;
    583                 ExpressionNode *exp;
    584 
    585                 if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0)
    586                         init = new StatementNode( decl );
    587                 else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0)
    588                         init = new StatementNode( StatementNode::Exp, exp );
    589                 else
    590                         throw SemanticError("Error in for control expression");
    591         }
    592 }
    593 
    594 ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other )
    595         : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) {
    596 }
    597 
    598 ForCtlExprNode::~ForCtlExprNode() {
    599         delete init;
    600         delete condition;
    601         delete change;
    602 }
    603 
    604 Expression *ForCtlExprNode::build() const {
    605         // this shouldn't be used!
    606         assert( false );
    607         return 0;
    608 }
    609 
    610 void ForCtlExprNode::print( std::ostream &os, int indent ) const{
    611         os << string( indent,' ' ) << "For Control Expression -- :" << endl;
    612 
    613         os << string( indent + 2, ' ' ) << "initialization:" << endl;
    614         if ( init != 0 )
    615                 init->printList( os, indent + 4 );
    616 
    617         os << string( indent + 2, ' ' ) << "condition: " << endl;
    618         if ( condition != 0 )
    619                 condition->print( os, indent + 4 );
    620         os << string( indent + 2, ' ' ) << "increment: " << endl;
    621         if ( change != 0 )
    622                 change->print( os, indent + 4 );
    623 }
    624 
    625 void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const {
    626         assert( false );
    627 }
    628 
    629 //##############################################################################
    630 
    631 TypeValueNode::TypeValueNode( DeclarationNode *decl ) : decl( decl ) {
    632 }
    633 
    634 TypeValueNode::TypeValueNode( const TypeValueNode &other ) : ExpressionNode( other ), decl( maybeClone( other.decl ) ) {
    635 }
    636 
    637 Expression *TypeValueNode::build() const {
     306Expression *build_valexpr( StatementNode *s ) {
     307        return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr );
     308}
     309
     310//##############################################################################
     311 
     312// ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) {
     313//      if ( init_ == 0 )
     314//              init = 0;
     315//      else {
     316//              DeclarationNode *decl;
     317//              ExpressionNode *exp;
     318
     319//              if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0)
     320//                      init = new StatementNode( decl );
     321//              else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0)
     322//                      init = new StatementNode( StatementNode::Exp, exp );
     323//              else
     324//                      throw SemanticError("Error in for control expression");
     325//      }
     326// }
     327
     328// ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other )
     329//      : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) {
     330// }
     331
     332// ForCtlExprNode::~ForCtlExprNode() {
     333//      delete init;
     334//      delete condition;
     335//      delete change;
     336// }
     337
     338// Expression *ForCtlExprNode::build() const {
     339//      // this shouldn't be used!
     340//      assert( false );
     341//      return 0;
     342// }
     343
     344// void ForCtlExprNode::print( std::ostream &os, int indent ) const{
     345//      os << string( indent,' ' ) << "For Control Expression -- :" << endl;
     346
     347//      os << string( indent + 2, ' ' ) << "initialization:" << endl;
     348//      if ( init != 0 )
     349//              init->printList( os, indent + 4 );
     350
     351//      os << string( indent + 2, ' ' ) << "condition: " << endl;
     352//      if ( condition != 0 )
     353//              condition->print( os, indent + 4 );
     354//      os << string( indent + 2, ' ' ) << "increment: " << endl;
     355//      if ( change != 0 )
     356//              change->print( os, indent + 4 );
     357// }
     358
     359// void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const {
     360//      assert( false );
     361// }
     362
     363//##############################################################################
     364
     365Expression *build_typevalue( DeclarationNode *decl ) {
    638366        return new TypeExpr( decl->buildType() );
    639367}
    640368
    641 void TypeValueNode::print( std::ostream &os, int indent ) const {
    642         os << std::string( indent, ' ' ) << "Type:";
    643         get_decl()->print( os, indent + 2);
    644 }
    645 
    646 void TypeValueNode::printOneLine( std::ostream &os, int indent ) const {
    647         os << "Type:";
    648         get_decl()->print( os, indent + 2);
    649 }
    650 
    651 
    652 CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}
    653 CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}
    654 
    655 CompoundLiteralNode::~CompoundLiteralNode() {
    656         delete kids;
    657         delete type;
    658 }
    659 
    660 CompoundLiteralNode *CompoundLiteralNode::clone() const {
    661         return new CompoundLiteralNode( *this );
    662 }
    663 
    664 void CompoundLiteralNode::print( std::ostream &os, int indent ) const {
    665         os << string( indent,' ' ) << "CompoundLiteralNode:" << endl;
    666 
    667         os << string( indent + 2, ' ' ) << "type:" << endl;
    668         if ( type != 0 )
    669                 type->print( os, indent + 4 );
    670 
    671         os << string( indent + 2, ' ' ) << "initialization:" << endl;
    672         if ( kids != 0 )
    673                 kids->printList( os, indent + 4 );
    674 }
    675 
    676 void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const {
    677         os << "( ";
    678         if ( type ) type->print( os );
    679         os << ", ";
    680         if ( kids ) kids->printOneLine( os );
    681         os << ") ";
    682 }
    683 
    684 Expression *CompoundLiteralNode::build() const {
    685         Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
     369//##############################################################################
     370
     371Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
     372        Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
    686373        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    687374                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     
    698385}
    699386
    700 ExpressionNode *flattenCommas( ExpressionNode *list ) {
    701         if ( CompositeExprNode *composite = dynamic_cast< CompositeExprNode * >( list ) ) {
    702                 OperatorNode *op;
    703                 if ( ( op = dynamic_cast< OperatorNode * >( composite->get_function() )) && ( op->get_type() == OperatorNode::Comma ) ) {
    704                         if ( ExpressionNode *next = dynamic_cast< ExpressionNode * >( list->get_link() ) )
    705                                 composite->add_arg( next );
    706                         return flattenCommas( composite->get_args() );
    707                 } // if
    708         } // if
    709 
    710         if ( ExpressionNode *next = dynamic_cast< ExpressionNode * >( list->get_link() ) )
    711                 list->set_next( flattenCommas( next ) );
    712 
    713         return list;
    714 }
    715 
    716 ExpressionNode *tupleContents( ExpressionNode *tuple ) {
    717         if ( CompositeExprNode *composite = dynamic_cast< CompositeExprNode * >( tuple ) ) {
    718                 OperatorNode *op = 0;
    719                 if ( ( op = dynamic_cast< OperatorNode * >( composite->get_function() )) && ( op->get_type() == OperatorNode::TupleC ) )
    720                         return composite->get_args();
    721         } // if
    722         return tuple;
    723 }
    724 
    725387// Local Variables: //
    726388// tab-width: 4 //
  • src/Parser/ParseNode.cc

    rf18a711 r3078643  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jul 24 02:17:01 2016
    13 // Update Count     : 90
     12// Last Modified On : Sun Aug  7 23:32:47 2016
     13// Update Count     : 94
    1414//
    1515
    16 #include <climits>
    1716#include "ParseNode.h"
    1817using namespace std;
    19 
    20 // Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
    21 //
    22 //              prefix action constant action suffix
    23 //
    24 // Alternatively, breaking a pattern using BEGIN does not work if the following pattern can be empty:
    25 //
    26 //              constant BEGIN CONT ...
    27 //              <CONT>(...)? BEGIN 0 ... // possible empty suffix
    28 //
    29 // because the CONT rule is NOT triggered if the pattern is empty. Hence, constants are reparsed here to determine their
    30 // type.
    31 
    32 static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
    33 
    34 static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
    35 static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
    36 static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
    37 static inline bool checkD( char c ) { return c == 'd' || c == 'D'; }
    38 static inline bool checkI( char c ) { return c == 'i' || c == 'I'; }
    39 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    40 
    41 ConstantNode *makeConstantInteger( std::string & str ) {
    42         static const BasicType::Kind kind[2][3] = {
    43                 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
    44                 { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
    45         };
    46         bool dec = true, Unsigned = false;                                      // decimal, unsigned constant
    47         int size;                                                                                       // 0 => int, 1 => long, 2 => long long
    48         unsigned long long v;                                                           // converted integral value
    49         size_t last = str.length() - 1;                                         // last character of constant
    50 
    51         if ( str[0] == '0' ) {                                                          // octal/hex constant ?
    52                 dec = false;
    53                 if ( last != 0 && checkX( str[1] ) ) {                  // hex constant ?
    54                         sscanf( (char *)str.c_str(), "%llx", &v );
    55                         //printf( "%llx %llu\n", v, v );
    56                 } else {                                                                                // octal constant
    57                         sscanf( (char *)str.c_str(), "%llo", &v );
    58                         //printf( "%llo %llu\n", v, v );
    59                 } // if
    60         } else {                                                                                        // decimal constant ?
    61                 sscanf( (char *)str.c_str(), "%llu", &v );
    62                 //printf( "%llu %llu\n", v, v );
    63         } // if
    64 
    65         if ( v <= INT_MAX ) {                                                           // signed int
    66                 size = 0;
    67         } else if ( v <= UINT_MAX && ! dec ) {                          // unsigned int
    68                 size = 0;
    69                 Unsigned = true;                                                                // unsigned
    70         } else if ( v <= LONG_MAX ) {                                           // signed long int
    71                 size = 1;
    72         } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
    73                 size = 1;
    74                 Unsigned = true;                                                                // unsigned long int
    75         } else if ( v <= LLONG_MAX ) {                                          // signed long long int
    76                 size = 2;
    77         } else {                                                                                        // unsigned long long int
    78                 size = 2;
    79                 Unsigned = true;                                                                // unsigned long long int
    80         } // if
    81 
    82         if ( checkU( str[last] ) ) {                                            // suffix 'u' ?
    83                 Unsigned = true;
    84                 if ( last > 0 && checkL( str[last - 1] ) ) {    // suffix 'l' ?
    85                         size = 1;
    86                         if ( last > 1 && checkL( str[last - 2] ) ) { // suffix 'll' ?
    87                                 size = 2;
    88                         } // if
    89                 } // if
    90         } else if ( checkL( str[ last ] ) ) {                           // suffix 'l' ?
    91                 size = 1;
    92                 if ( last > 0 && checkL( str[last - 1] ) ) { // suffix 'll' ?
    93                         size = 2;
    94                         if ( last > 1 && checkU( str[last - 2] ) ) { // suffix 'u' ?
    95                                 Unsigned = true;
    96                         } // if
    97                 } else {
    98                         if ( last > 0 && checkU( str[last - 1] ) ) { // suffix 'u' ?
    99                                 Unsigned = true;
    100                         } // if
    101                 } // if
    102         } // if
    103 
    104         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ), nullptr ) );
    105 } // makeConstantInteger
    106 
    107 ConstantNode *makeConstantFloat( std::string & str ) {
    108         static const BasicType::Kind kind[2][3] = {
    109                 { BasicType::Float, BasicType::Double, BasicType::LongDouble },
    110                 { BasicType::FloatComplex, BasicType::DoubleComplex, BasicType::LongDoubleComplex },
    111         };
    112 
    113         bool complx = false;                                                            // real, complex
    114         int size = 1;                                                                           // 0 => float, 1 => double (default), 2 => long double
    115         // floating-point constant has minimum of 2 characters: 1. or .1
    116         size_t last = str.length() - 1;
    117 
    118         if ( checkI( str[last] ) ) {                                            // imaginary ?
    119                 complx = true;
    120                 last -= 1;                                                                              // backup one character
    121         } // if
    122 
    123         if ( checkF( str[last] ) ) {                                            // float ?
    124                 size = 0;
    125         } else if ( checkD( str[last] ) ) {                                     // double ?
    126                 size = 1;
    127         } else if ( checkL( str[last] ) ) {                                     // long double ?
    128                 size = 2;
    129         } // if
    130         if ( ! complx && checkI( str[last - 1] ) ) {            // imaginary ?
    131                 complx = true;
    132         } // if
    133 
    134         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ), nullptr ) );
    135 } // makeConstantFloat
    136 
    137 ConstantNode *makeConstantChar( std::string & str ) {
    138         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ), nullptr ) );
    139 } // makeConstantChar
    140 
    141 ConstantNode *makeConstantStr( std::string & str ) {
    142         // string should probably be a primitive type
    143         ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
    144                                                                    new ConstantExpr(
    145                                                                            Constant( new BasicType( emptyQualifiers, BasicType::UnsignedInt ),
    146                                                                                                  toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
    147                                                                    false, false );
    148         return new ConstantNode( new ConstantExpr( Constant( at, str ), nullptr ) );
    149 } // makeConstantStr
    150 
    15118
    15219// Builder
  • src/Parser/ParseNode.h

    rf18a711 r3078643  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Aug  5 07:49:32 2016
    13 // Update Count     : 288
     12// Last Modified On : Wed Aug 10 13:08:46 2016
     13// Update Count     : 436
    1414//
    1515
     
    2626#include "SynTree/Type.h"
    2727#include "SynTree/Expression.h"
     28#include "SynTree/Statement.h"
    2829//#include "SynTree/Declaration.h"
    2930#include "Common/UniqueName.h"
    3031#include "SynTree/Label.h"
    3132
    32 class ExpressionNode;
    33 class CompositeExprNode;
    34 class CommaExprNode;
    3533class StatementNode;
    3634class CompoundStmtNode;
    3735class DeclarationNode;
     36class ExpressionNode;
    3837class InitializerNode;
    3938
     
    5655        void set_name( const std::string &newValue ) { name = newValue; }
    5756
    58         virtual void print( std::ostream &, int indent = 0 ) const;
    59         virtual void printList( std::ostream &, int indent = 0 ) const;
    60 
    61         ParseNode &operator,( ParseNode &);
     57        virtual void print( std::ostream &os, int indent = 0 ) const;
     58        virtual void printList( std::ostream &os, int indent = 0 ) const;
     59
     60        ParseNode &operator,( ParseNode & );
    6261  protected:
    6362        std::string name;
     
    6867ParseNode *mkList( ParseNode & );
    6968
     69//##############################################################################
     70
     71class InitializerNode : public ParseNode {
     72  public:
     73        InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode *des = 0 );
     74        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
     75        ~InitializerNode();
     76
     77        ExpressionNode *get_expression() const { return expr; }
     78
     79        InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
     80        ExpressionNode *get_designators() const { return designator; }
     81
     82        InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
     83        bool get_maybeConstructed() const { return maybeConstructed; }
     84
     85        InitializerNode *next_init() const { return kids; }
     86
     87        void print( std::ostream &os, int indent = 0 ) const;
     88        void printOneLine( std::ostream & ) const;
     89
     90        virtual Initializer *build() const;
     91  private:
     92        ExpressionNode *expr;
     93        bool aggregate;
     94        ExpressionNode *designator; // may be list
     95        InitializerNode *kids;
     96        bool maybeConstructed;
     97};
     98
     99//##############################################################################
     100
    70101class ExpressionNode : public ParseNode {
    71102  public:
    72         ExpressionNode();
    73         ExpressionNode( const std::string * );
     103        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     104        ExpressionNode( Expression * expr, const std::string *name ) : ParseNode( name ), expr( expr ) {}
    74105        ExpressionNode( const ExpressionNode &other );
    75         virtual ~ExpressionNode() { delete argName; } // cannot delete argName because it might be referenced elsewhere
    76 
    77         virtual ExpressionNode *clone() const = 0;
    78 
    79         // virtual CommaExprNode *add_to_list( ExpressionNode * );
    80 
    81         ExpressionNode *get_argName() const { return argName; }
    82         ExpressionNode *set_argName( const std::string *aName );
    83         ExpressionNode *set_argName( ExpressionNode *aDesignator );
     106        virtual ~ExpressionNode() {}
     107
     108        virtual ExpressionNode *clone() const { return 0; }
     109
    84110        bool get_extension() const { return extension; }
    85111        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    86112
    87         virtual void print( std::ostream &, int indent = 0) const = 0;
    88         virtual void printOneLine( std::ostream &, int indent = 0) const = 0;
    89 
    90         virtual Expression *build() const = 0;
    91   protected:
    92         void printDesignation ( std::ostream &, int indent = 0) const;
    93   private:
    94         ExpressionNode *argName = 0;
     113        virtual void print( std::ostream &os, int indent = 0 ) const {}
     114        virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
     115
     116        virtual Expression *build() const { return expr; }
     117  private:
    95118        bool extension = false;
     119        Expression *expr;
    96120};
    97121
     
    109133};
    110134
    111 // NullExprNode is used in tuples as a place-holder where a tuple component is omitted e.g., [ 2, , 3 ]
    112 class NullExprNode : public ExpressionNode {
    113   public:
    114         NullExprNode();
    115 
    116         virtual NullExprNode *clone() const;
    117 
    118         virtual void print( std::ostream &, int indent = 0) const;
    119         virtual void printOneLine( std::ostream &, int indent = 0) const;
    120 
    121         virtual Expression *build() const;
    122 };
    123 
    124 class ConstantNode : public ExpressionNode {
    125   public:
    126         enum Type { Integer, Float, Character, String };
    127 
    128         ConstantNode( ConstantExpr * );
    129         ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {};
    130         ~ConstantNode() { delete expr; }
    131 
    132         virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
    133         virtual void print( std::ostream &, int indent = 0) const;
    134         virtual void printOneLine( std::ostream &, int indent = 0) const;
    135 
    136         ConstantNode *appendstr( const std::string *newValue );
    137 
    138         Expression *build() const;
    139   private:
    140         ConstantExpr *expr;
    141 };
    142 
    143 ConstantNode *makeConstantInteger( std::string & );
    144 ConstantNode *makeConstantFloat( std::string & );
    145 ConstantNode *makeConstantChar( std::string & );
    146 ConstantNode *makeConstantStr( std::string & );
    147 
    148 class VarRefNode : public ExpressionNode {
    149   public:
    150         VarRefNode();
    151         VarRefNode( const std::string *, bool isLabel = false );
    152         VarRefNode( const VarRefNode &other );
    153 
    154         virtual Expression *build() const ;
    155 
    156         virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
    157 
    158         virtual void print( std::ostream &, int indent = 0 ) const;
    159         virtual void printOneLine( std::ostream &, int indent = 0 ) const;
    160   private:
    161         bool isLabel;
    162 };
    163 
    164 class DesignatorNode : public ExpressionNode {
    165   public:
    166         DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );
    167         DesignatorNode( const DesignatorNode &other );
    168 
    169         virtual Expression *build() const ;
    170         virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }
    171 
    172         virtual void print( std::ostream &, int indent = 0 ) const;
    173         virtual void printOneLine( std::ostream &, int indent = 0 ) const;
    174   private:
    175         bool isArrayIndex;
    176 };
    177 
    178 class TypeValueNode : public ExpressionNode {
    179   public:
    180         TypeValueNode( DeclarationNode * );
    181         TypeValueNode( const TypeValueNode &other );
    182 
    183         DeclarationNode *get_decl() const { return decl; }
    184 
    185         virtual Expression *build() const ;
    186 
    187         virtual TypeValueNode *clone() const { return new TypeValueNode( *this ); }
    188 
    189         virtual void print( std::ostream &, int indent = 0) const;
    190         virtual void printOneLine( std::ostream &, int indent = 0) const;
    191   private:
    192         DeclarationNode *decl;
    193 };
    194 
    195 class OperatorNode : public ExpressionNode {
    196   public:
    197         enum Type { TupleC, Comma, TupleFieldSel, // n-adic
    198                                 // triadic
    199                                 Cond, NCond,
    200                                 // diadic
    201                                 SizeOf, AlignOf, OffsetOf, Attr, Plus, Minus, Mul, Div, Mod, Or, And,
    202                                 BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    203                                 Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
    204                                 Index, FieldSel, PFieldSel, Range,
    205                                 // monadic
    206                                 UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
    207                                 Ctor, Dtor,
    208         };
    209 
    210         OperatorNode( Type t );
    211         OperatorNode( const OperatorNode &other );
    212         virtual ~OperatorNode();
    213 
    214         virtual OperatorNode *clone() const { return new OperatorNode( *this ); }
    215 
    216         Type get_type() const;
    217         const char *get_typename() const;
    218 
    219         virtual void print( std::ostream &, int indent = 0) const;
    220         virtual void printOneLine( std::ostream &, int indent = 0) const;
    221 
    222         virtual Expression *build() const { return 0; }
    223   private:
    224         Type type;
    225 };
    226 
    227 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node );
    228 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member );
    229 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member );
     135//##############################################################################
     136
     137Expression *build_constantInteger( std::string &str );
     138Expression *build_constantFloat( std::string &str );
     139Expression *build_constantChar( std::string &str );
     140ConstantExpr *build_constantStr( std::string &str );
     141
     142//##############################################################################
     143
     144NameExpr *build_varref( const std::string *name, bool labelp = false );
     145
     146//##############################################################################
     147
     148Expression *build_typevalue( DeclarationNode *decl );
     149
     150//##############################################################################
     151
     152enum class OperKinds {
     153        // diadic
     154        SizeOf, AlignOf, OffsetOf, Plus, Minus, Mul, Div, Mod, Or, And,
     155        BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
     156        Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
     157        Index, Range,
     158        // monadic
     159        UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
     160        Ctor, Dtor,
     161};
     162
     163Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node );
     164Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member );
     165Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member );
    230166Expression *build_addressOf( ExpressionNode *expr_node );
    231 Expression *build_sizeOf( ExpressionNode *expr_node );
    232 Expression *build_alignOf( ExpressionNode *expr_node );
    233 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member );
     167Expression *build_sizeOfexpr( ExpressionNode *expr_node );
     168Expression *build_sizeOftype( DeclarationNode *decl_node );
     169Expression *build_alignOfexpr( ExpressionNode *expr_node );
     170Expression *build_alignOftype( DeclarationNode *decl_node );
     171Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member );
    234172Expression *build_and( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    235173Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind );
    236 Expression *build_opr1( OperatorNode::Type op, ExpressionNode *expr_node );
    237 Expression *build_opr2( OperatorNode::Type op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
     174Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node );
     175Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node );
     176Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
     177Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    238178Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 );
    239179Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    240 
    241 class CompositeExprNode2 : public ExpressionNode {
    242   public:
    243         CompositeExprNode2( Expression *expr );
    244         CompositeExprNode2( const CompositeExprNode2 &other );
    245         virtual ~CompositeExprNode2();
    246 
    247         virtual CompositeExprNode2 *clone() const { return new CompositeExprNode2( *this ); }
    248         virtual Expression *build() const { return expr->clone(); }
    249 
    250         virtual void print( std::ostream &, int indent = 0) const;
    251         virtual void printOneLine( std::ostream &, int indent = 0) const;
    252   private:
    253         Expression *expr;
    254 };
    255 
    256 class CompositeExprNode : public ExpressionNode {
    257   public:
    258         CompositeExprNode();
    259         CompositeExprNode( const std::string * );
    260         CompositeExprNode( ExpressionNode *f, ExpressionNode *args = 0 );
    261         CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2 );
    262         CompositeExprNode( const CompositeExprNode &other );
    263         virtual ~CompositeExprNode();
    264 
    265         virtual CompositeExprNode *clone() const { return new CompositeExprNode( *this ); }
    266         virtual Expression *build() const;
    267 
    268         virtual void print( std::ostream &, int indent = 0) const;
    269         virtual void printOneLine( std::ostream &, int indent = 0) const;
    270 
    271         void set_function( ExpressionNode * );
    272         void set_args( ExpressionNode * );
    273 
    274         void add_arg( ExpressionNode * );
    275 
    276         ExpressionNode *get_function() const;
    277         ExpressionNode *get_args() const;
    278   private:
    279         ExpressionNode *function;
    280         ExpressionNode *arguments;
    281 };
    282 
    283 class AsmExprNode : public ExpressionNode {
    284   public:
    285         AsmExprNode();
    286         AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
    287         virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }
    288 
    289         virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }
    290         virtual Expression *build() const;
    291 
    292         virtual void print( std::ostream &, int indent = 0) const;
    293         virtual void printOneLine( std::ostream &, int indent = 0) const;
    294 
    295         ExpressionNode *get_inout() const { return inout; };
    296         void set_inout( ExpressionNode *newValue ) { inout = newValue; }
    297 
    298         ConstantNode *get_constraint() const { return constraint; };
    299         void set_constraint( ConstantNode *newValue ) { constraint = newValue; }
    300 
    301         ExpressionNode *get_operand() const { return operand; };
    302         void set_operand( ExpressionNode *newValue ) { operand = newValue; }
    303   private:
    304         ExpressionNode *inout;
    305         ConstantNode *constraint;
    306         ExpressionNode *operand;
    307 };
     180Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node );
     181Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node );
     182Expression *build_tuple( ExpressionNode * expr_node = 0 );
     183Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node );
     184Expression *build_range( ExpressionNode * low, ExpressionNode *high );
     185
     186//##############################################################################
     187
     188Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand );
     189
     190//##############################################################################
    308191
    309192class LabelNode : public ExpressionNode {
    310193  public:
    311194        virtual Expression *build() const { return NULL; }
    312         virtual LabelNode *clone() const { return new LabelNode( *this ); }
    313 
    314         virtual void print( std::ostream &, int indent = 0) const;
    315         virtual void printOneLine( std::ostream &, int indent = 0) const;
     195        virtual LabelNode *clone() const { assert( false ); return new LabelNode( *this ); }
     196
     197        virtual void print( std::ostream &os, int indent = 0) const;
     198        virtual void printOneLine( std::ostream &os, int indent = 0) const;
    316199
    317200        const std::list< Label > &get_labels() const { return labels; };
    318         void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
     201        void append_label( std::string * label ) { labels.push_back( *label ); delete label; }
    319202  private:
    320203        std::list< Label > labels;
    321204};
    322205
    323 class ForCtlExprNode : public ExpressionNode {
    324   public:
    325         ForCtlExprNode( ParseNode *, ExpressionNode *, ExpressionNode * ) throw ( SemanticError );
    326         ForCtlExprNode( const ForCtlExprNode &other );
    327         ~ForCtlExprNode();
    328 
    329         StatementNode *get_init() const { return init; }
    330         ExpressionNode *get_condition() const { return condition; }
    331         ExpressionNode *get_change() const { return change; }
    332 
    333         virtual ForCtlExprNode *clone() const { return new ForCtlExprNode( *this ); }
    334         virtual Expression *build() const;
    335 
    336         virtual void print( std::ostream &, int indent = 0 ) const;
    337         virtual void printOneLine( std::ostream &, int indent = 0 ) const;
    338   private:
    339         StatementNode *init;
    340         ExpressionNode *condition;
    341         ExpressionNode *change;
    342 };
    343 
    344 class ValofExprNode : public ExpressionNode {
    345   public:
    346         ValofExprNode();
    347         ValofExprNode( StatementNode *s = 0 );
    348         ValofExprNode( const ValofExprNode &other );
    349         ~ValofExprNode();
    350 
    351         virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }
    352 
    353         StatementNode *get_body() const { return body; }
    354         void print( std::ostream &, int indent = 0 ) const;
    355         void printOneLine( std::ostream &, int indent = 0 ) const;
    356         Expression *build() const;
    357 
    358   private:
    359         StatementNode *body;
    360 };
     206//##############################################################################
     207
     208Expression *build_valexpr( StatementNode *s );
     209
     210//##############################################################################
     211
     212Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids );
     213
     214//##############################################################################
    361215
    362216class TypeData;
     
    433287
    434288        DeclarationNode *clone() const;
    435         void print( std::ostream &, int indent = 0 ) const;
    436         void printList( std::ostream &, int indent = 0 ) const;
     289        void print( std::ostream &os, int indent = 0 ) const;
     290        void printList( std::ostream &os, int indent = 0 ) const;
    437291
    438292        Declaration *build() const;
     
    468322}; // DeclarationNode
    469323
     324Type *buildType( TypeData *type );
     325
     326//##############################################################################
     327
    470328class StatementNode : public ParseNode {
    471329  public:
     
    487345        static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
    488346
    489         StatementNode *set_block( StatementNode *b ) {  block = b; return this; }
     347        StatementNode *set_block( StatementNode *b ) { block = b; return this; }
    490348        StatementNode *get_block() const { return block; }
    491349
     
    495353        StatementNode::Type get_type() const { return type; }
    496354
    497         StatementNode *add_label( const std::string * );
    498         const std::list<std::string> &get_labels() const { return labels; }
     355        virtual StatementNode *add_label( const std::string * );
     356        virtual std::list<std::string> get_labels() const { return labels; }
    499357
    500358        void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
     
    507365        StatementNode *append_last_case( StatementNode * );
    508366
    509         void print( std::ostream &, int indent = 0) const;
     367        void print( std::ostream &os, int indent = 0) const;
    510368        virtual StatementNode *clone() const;
    511369        virtual Statement *build() const;
     
    521379}; // StatementNode
    522380
     381class StatementNode2 : public StatementNode {
     382  public:
     383        StatementNode2() {}
     384        StatementNode2( Statement *stmt ) : stmt( stmt ) {}
     385        virtual ~StatementNode2() {}
     386
     387        virtual StatementNode2 *clone() const { assert( false ); return nullptr; }
     388        virtual Statement *build() const { return stmt; }
     389
     390        virtual StatementNode2 *add_label( const std::string * name ) {
     391                stmt->get_labels().emplace_back( *name );
     392                return this;
     393        }
     394        virtual std::list<std::string> get_labels() const { assert( false ); return StatementNode::get_labels(); }
     395
     396        virtual void print( std::ostream &os, int indent = 0 ) {}
     397        virtual void printList( std::ostream &os, int indent = 0 ) {}
     398  private:
     399        Statement *stmt;
     400}; // StatementNode
     401
     402struct ForCtl {
     403        ForCtl( ExpressionNode *expr, ExpressionNode *condition, ExpressionNode *change ) :
     404                init( new StatementNode( StatementNode::Exp, expr ) ), condition( condition ), change( change ) {}
     405        ForCtl( DeclarationNode *decl, ExpressionNode *condition, ExpressionNode *change ) :
     406                init( new StatementNode( decl ) ), condition( condition ), change( change ) {}
     407
     408        StatementNode *init;
     409        ExpressionNode *condition;
     410        ExpressionNode *change;
     411};
     412
     413Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt );
     414Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt );
     415Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false );
     416Statement *build_for( ForCtl *forctl, StatementNode *stmt );
     417
     418//##############################################################################
     419
    523420class CompoundStmtNode : public StatementNode {
    524421  public:
     
    530427        void add_statement( StatementNode * );
    531428
    532         void print( std::ostream &, int indent = 0 ) const;
     429        void print( std::ostream &os, int indent = 0 ) const;
    533430        virtual Statement *build() const;
    534431  private:
     
    536433};
    537434
     435//##############################################################################
     436
    538437class AsmStmtNode : public StatementNode {
    539438  public:
    540         AsmStmtNode( Type, bool voltile, ConstantNode *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ConstantNode *clobber = 0, LabelNode *gotolabels = 0 );
     439        AsmStmtNode( Type, bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
    541440        ~AsmStmtNode();
    542441
    543         void print( std::ostream &, int indent = 0 ) const;
     442        void print( std::ostream &os, int indent = 0 ) const;
    544443        Statement *build() const;
    545444  private:
    546445        bool voltile;
    547         ConstantNode *instruction;
     446        ConstantExpr *instruction;
    548447        ExpressionNode *output, *input;
    549         ConstantNode *clobber;
     448        ExpressionNode *clobber;
    550449        std::list< Label > gotolabels;
    551450};
    552451
    553 class InitializerNode : public ParseNode {
    554   public:
    555         InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode *des = 0 );
    556         InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
    557         ~InitializerNode();
    558 
    559         ExpressionNode *get_expression() const { return expr; }
    560 
    561         InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
    562         ExpressionNode *get_designators() const { return designator; }
    563 
    564         InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
    565         bool get_maybeConstructed() const { return maybeConstructed; }
    566 
    567         InitializerNode *next_init() const { return kids; }
    568 
    569         void print( std::ostream &, int indent = 0 ) const;
    570         void printOneLine( std::ostream & ) const;
    571 
    572         virtual Initializer *build() const;
    573   private:
    574         ExpressionNode *expr;
    575         bool aggregate;
    576         ExpressionNode *designator; // may be list
    577         InitializerNode *kids;
    578         bool maybeConstructed;
    579 };
    580 
    581 class CompoundLiteralNode : public ExpressionNode {
    582   public:
    583         CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );
    584         CompoundLiteralNode( const CompoundLiteralNode &type );
    585         ~CompoundLiteralNode();
    586 
    587         virtual CompoundLiteralNode *clone() const;
    588 
    589         DeclarationNode *get_type() const { return type; }
    590         CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }
    591 
    592         InitializerNode *get_initializer() const { return kids; }
    593         CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }
    594 
    595         void print( std::ostream &, int indent = 0 ) const;
    596         void printOneLine( std::ostream &, int indent = 0 ) const;
    597 
    598         virtual Expression *build() const;
    599   private:
    600         DeclarationNode *type;
    601         InitializerNode *kids;
    602 };
     452//##############################################################################
    603453
    604454template< typename SynTreeType, typename NodeType >
    605 void buildList( const NodeType *firstNode, std::list< SynTreeType *> &outputList ) {
     455void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
    606456        SemanticError errors;
    607457        std::back_insert_iterator< std::list< SynTreeType *> > out( outputList );
     
    631481void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
    632482
    633 // in ExpressionNode.cc
    634 ExpressionNode *flattenCommas( ExpressionNode *list );
    635 ExpressionNode *tupleContents( ExpressionNode *tuple );
    636 
    637483#endif // PARSENODE_H
    638484
  • src/Parser/StatementNode.cc

    rf18a711 r3078643  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:21:02 2016
    13 // Update Count     : 133
     12// Last Modified On : Wed Aug 10 13:54:21 2016
     13// Update Count     : 170
    1414//
    1515
     
    106106        return this;
    107107}
    108 
    109 // StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
    110 //      if ( control && e )
    111 //              control->add_to_list( e ); // xxx - check this
    112 //      return this;
    113 // }
    114108
    115109StatementNode *StatementNode::append_block( StatementNode *stmt ) {
     
    176170                } // if
    177171                if ( block ) {
    178                         os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
     172                        os << string( indent + ParseNode::indent_by, ' ' ) << "Cases: " << endl;
    179173                        block->printList( os, indent + 2 * ParseNode::indent_by );
    180174                } // if
     
    212206                }
    213207          case If:
    214                 {
    215                         Statement *thenb = 0, *elseb = 0;
    216                         assert( branches.size() >= 1 );
    217 
    218                         thenb = branches.front();
    219                         branches.pop_front();
    220                         if ( ! branches.empty() ) {
    221                                 elseb = branches.front();
    222                                 branches.pop_front();
    223                         } // if
    224                         return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
    225                 }
    226           case While:
    227                 assert( branches.size() == 1 );
    228                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
    229           case Do:
    230                 assert( branches.size() == 1 );
    231                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
    232           case For:
    233                 {
    234                         assert( branches.size() == 1 );
    235 
    236                         ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );
    237                         assert( ctl != 0 );
    238 
    239                         std::list<Statement *> init;
    240                         if ( ctl->get_init() != 0 ) {
    241                                 buildList( ctl->get_init(), init );
    242                         } // if
    243 
    244                         Expression *cond = 0;
    245                         if ( ctl->get_condition() != 0 )
    246                                 cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
    247 
    248                         Expression *incr = 0;
    249                         if ( ctl->get_change() != 0 )
    250                                 incr = maybeBuild<Expression>(ctl->get_change());
    251 
    252                         return new ForStmt( labs, init, cond, incr, branches.front() );
    253                 }
     208                // {
     209                //      Statement *thenb = 0, *elseb = 0;
     210                //      assert( branches.size() >= 1 );
     211
     212                //      thenb = branches.front();
     213                //      branches.pop_front();
     214                //      if ( ! branches.empty() ) {
     215                //              elseb = branches.front();
     216                //              branches.pop_front();
     217                //      } // if
     218                //      return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
     219                // }
     220                assert( false );
    254221          case Switch:
    255                 return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
     222                //return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
     223                assert( false );
    256224          case Case:
    257                 return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
     225                return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );
    258226          case Default:
    259227                return new CaseStmt( labs, 0, branches, true );
     228          case While:
     229                // assert( branches.size() == 1 );
     230                // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
     231                assert( false );
     232          case Do:
     233                // assert( branches.size() == 1 );
     234                // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
     235                assert( false );
     236          case For:
     237                // {
     238                //      assert( branches.size() == 1 );
     239
     240                //      ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );
     241                //      assert( ctl != 0 );
     242
     243                //      std::list<Statement *> init;
     244                //      if ( ctl->get_init() != 0 ) {
     245                //              buildList( ctl->get_init(), init );
     246                //      } // if
     247
     248                //      Expression *cond = 0;
     249                //      if ( ctl->get_condition() != 0 )
     250                //              cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
     251
     252                //      Expression *incr = 0;
     253                //      if ( ctl->get_change() != 0 )
     254                //              incr = maybeBuild<Expression>(ctl->get_change());
     255
     256                //      return new ForStmt( labs, init, cond, incr, branches.front() );
     257                // }
     258                assert( false );
    260259          case Goto:
    261260                {
     
    311310}
    312311
     312Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
     313        Statement *thenb, *elseb = 0;
     314        std::list<Statement *> branches;
     315        buildList<Statement, StatementNode>( then_stmt, branches );
     316        assert( branches.size() >= 1 );
     317        thenb = branches.front();
     318
     319        if ( else_stmt ) {
     320                std::list<Statement *> branches;
     321                buildList<Statement, StatementNode>( else_stmt, branches );
     322                assert( branches.size() >= 1 );
     323                elseb = branches.front();
     324        } // if
     325        return new IfStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), thenb, elseb );
     326}
     327
     328Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
     329        std::list<Statement *> branches;
     330        buildList<Statement, StatementNode>( stmt, branches );
     331        assert( branches.size() >= 1 );
     332        return new SwitchStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     333}
     334
     335Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
     336        std::list<Statement *> branches;
     337        buildList<Statement, StatementNode>( stmt, branches );
     338        assert( branches.size() == 1 );
     339        return new WhileStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), branches.front(), kind );
     340}
     341
     342Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
     343        std::list<Statement *> branches;
     344        buildList<Statement, StatementNode>( stmt, branches );
     345        assert( branches.size() == 1 );
     346
     347        std::list<Statement *> init;
     348        if ( forctl->init != 0 ) {
     349                buildList( forctl->init, init );
     350        } // if
     351
     352        Expression *cond = 0;
     353        if ( forctl->condition != 0 )
     354                cond = notZeroExpr( maybeBuild<Expression>(forctl->condition) );
     355
     356        Expression *incr = 0;
     357        if ( forctl->change != 0 )
     358                incr = maybeBuild<Expression>(forctl->change);
     359
     360        delete forctl;
     361        return new ForStmt( noLabels, init, cond, incr, branches.front() );
     362}
     363
    313364
    314365CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
     
    356407
    357408
    358 AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantNode *instruction, ExpressionNode *output, ExpressionNode *input, ConstantNode *clobber, LabelNode *gotolabels ) :
     409AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
    359410        StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
    360411        if ( gotolabels ) {
     
    365416
    366417AsmStmtNode::~AsmStmtNode() {
    367         delete instruction; delete output; delete input; delete clobber;
     418        delete output; delete input; delete clobber;
    368419}
    369420
     
    373424        if ( instruction ) {
    374425                os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
    375                 instruction->printList( os, indent + 2 * ParseNode::indent_by );
     426//              instruction->printList( os, indent + 2 * ParseNode::indent_by );
    376427        } // if
    377428        if ( output ) {
     
    385436        if ( clobber ) {
    386437                os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
    387                 clobber->printList( os, indent + 2 * ParseNode::indent_by );
     438//              clobber->printList( os, indent + 2 * ParseNode::indent_by );
    388439        } // if
    389440        if ( ! gotolabels.empty() ) {
     
    414465        buildList( clobber, clob );
    415466        std::list< Label > gotolabs = gotolabels;
    416         return new AsmStmt( labs, voltile, (ConstantExpr *)maybeBuild< Expression >( instruction ), out, in, clob, gotolabs );
     467        return new AsmStmt( labs, voltile, instruction, out, in, clob, gotolabs );
    417468}
    418469
  • src/Parser/TypeData.cc

    rf18a711 r3078643  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 13 18:03:29 2016
    13 // Update Count     : 56
     12// Last Modified On : Sun Aug  7 07:51:48 2016
     13// Update Count     : 58
    1414//
    1515
     
    182182                break;
    183183          case Array:
    184                 newtype->array->dimension = maybeClone( array->dimension );
     184//PAB           newtype->array->dimension = maybeClone( array->dimension );
     185                newtype->array->dimension = array->dimension;
    185186                newtype->array->isVarLen = array->isVarLen;
    186187                newtype->array->isStatic = array->isStatic;
  • src/Parser/parser.cc

    rf18a711 r3078643  
    8989TypedefTable typedefTable;
    9090
     91void appendStr( std::string &to, std::string *from ) {
     92        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
     93        to.insert( to.length() - 1, from->substr( 1, from->length() - 2 ) );
     94} // appendStr
     95
    9196
    9297/* Line 268 of yacc.c  */
    93 #line 94 "Parser/parser.cc"
     98#line 99 "Parser/parser.cc"
    9499
    95100/* Enabling traces.  */
     
    342347
    343348/* Line 293 of yacc.c  */
    344 #line 110 "parser.yy"
     349#line 115 "parser.yy"
    345350
    346351        Token tok;
     
    351356        DeclarationNode::TypeClass tclass;
    352357        StatementNode *sn;
    353         ConstantNode *constant;
     358        ConstantExpr *constant;
     359        ForCtl *fctl;
    354360        LabelNode *label;
    355361        InitializerNode *in;
    356         OperatorNode::Type op;
     362        OperKinds op;
    357363        bool flag;
    358364
     
    360366
    361367/* Line 293 of yacc.c  */
    362 #line 363 "Parser/parser.cc"
     368#line 369 "Parser/parser.cc"
    363369} YYSTYPE;
    364370# define YYSTYPE_IS_TRIVIAL 1
     
    372378
    373379/* Line 343 of yacc.c  */
    374 #line 375 "Parser/parser.cc"
     380#line 381 "Parser/parser.cc"
    375381
    376382#ifdef short
     
    589595
    590596/* YYFINAL -- State number of the termination state.  */
    591 #define YYFINAL  252
     597#define YYFINAL  251
    592598/* YYLAST -- Last index in YYTABLE.  */
    593 #define YYLAST   12080
     599#define YYLAST   10816
    594600
    595601/* YYNTOKENS -- Number of terminals.  */
     
    598604#define YYNNTS  241
    599605/* YYNRULES -- Number of rules.  */
    600 #define YYNRULES  755
     606#define YYNRULES  750
    601607/* YYNRULES -- Number of states.  */
    602 #define YYNSTATES  1579
     608#define YYNSTATES  1554
    603609
    604610/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    615621       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    616622       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    617        2,     2,     2,   122,     2,     2,     2,   125,   119,     2,
    618      109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
    619        2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
    620      126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
     623       2,     2,     2,   121,     2,     2,     2,   124,   118,     2,
     624     109,   110,   117,   119,   116,   120,   113,   123,     2,     2,
     625       2,     2,     2,     2,     2,     2,     2,     2,   130,   132,
     626     125,   131,   126,   129,     2,     2,     2,     2,     2,     2,
    621627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622628       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    623        2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
     629       2,   111,     2,   112,   127,     2,     2,     2,     2,     2,
    624630       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    625631       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    626        2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
     632       2,     2,     2,   114,   128,   115,   122,     2,     2,     2,
    627633       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    628634       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    659665      17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
    660666      38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
    661       87,    90,    98,   103,   105,   109,   110,   112,   116,   124,
    662      134,   136,   140,   142,   146,   154,   158,   166,   168,   170,
    663      172,   175,   178,   181,   184,   187,   190,   195,   202,   204,
    664      209,   214,   217,   222,   224,   226,   228,   230,   232,   234,
    665      236,   238,   243,   248,   250,   254,   258,   262,   264,   268,
    666      272,   274,   278,   282,   284,   288,   292,   296,   300,   302,
    667      306,   310,   312,   316,   318,   322,   324,   328,   330,   334,
    668      336,   340,   342,   348,   353,   359,   361,   363,   367,   371,
    669      374,   375,   377,   380,   386,   393,   401,   403,   407,   409,
    670      411,   413,   415,   417,   419,   421,   423,   425,   427,   429,
    671      433,   434,   436,   438,   440,   442,   444,   446,   448,   450,
    672      452,   459,   464,   467,   475,   477,   481,   483,   486,   488,
    673      491,   493,   496,   499,   505,   513,   519,   529,   535,   545,
    674      547,   551,   553,   555,   559,   563,   566,   568,   571,   574,
    675      575,   577,   580,   584,   585,   587,   590,   594,   598,   603,
    676      604,   606,   608,   611,   617,   625,   632,   639,   644,   648,
    677      653,   656,   660,   663,   667,   671,   675,   679,   685,   689,
    678      693,   698,   700,   706,   713,   719,   726,   736,   747,   757,
    679      768,   771,   773,   776,   779,   782,   784,   791,   800,   811,
    680      824,   839,   840,   842,   843,   845,   847,   851,   856,   864,
    681      865,   867,   871,   873,   877,   879,   881,   883,   887,   889,
    682      891,   893,   897,   898,   900,   904,   909,   911,   915,   917,
    683      919,   923,   927,   931,   935,   939,   942,   946,   953,   957,
    684      961,   966,   968,   971,   974,   978,   984,   993,  1001,  1009,
    685     1015,  1025,  1028,  1031,  1037,  1041,  1047,  1052,  1056,  1061,
    686     1066,  1074,  1078,  1082,  1086,  1090,  1095,  1102,  1104,  1106,
    687     1108,  1110,  1112,  1114,  1116,  1118,  1119,  1121,  1123,  1126,
    688     1128,  1130,  1132,  1134,  1136,  1138,  1140,  1141,  1147,  1149,
    689     1152,  1156,  1158,  1161,  1163,  1165,  1167,  1169,  1171,  1173,
    690     1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,  1193,
    691     1195,  1197,  1199,  1201,  1203,  1205,  1207,  1210,  1213,  1217,
    692     1221,  1223,  1227,  1229,  1232,  1235,  1238,  1243,  1248,  1253,
    693     1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,  1283,
    694     1286,  1290,  1292,  1295,  1298,  1300,  1302,  1307,  1310,  1311,
    695     1318,  1326,  1329,  1332,  1335,  1336,  1339,  1342,  1346,  1349,
    696     1353,  1355,  1358,  1362,  1365,  1368,  1373,  1374,  1376,  1379,
    697     1382,  1384,  1385,  1387,  1390,  1393,  1399,  1402,  1403,  1411,
    698     1414,  1419,  1420,  1423,  1424,  1426,  1428,  1430,  1436,  1442,
    699     1448,  1450,  1456,  1462,  1472,  1474,  1480,  1481,  1483,  1485,
    700     1491,  1493,  1495,  1501,  1507,  1509,  1513,  1517,  1522,  1524,
    701     1526,  1528,  1530,  1533,  1535,  1539,  1543,  1545,  1548,  1550,
    702     1554,  1556,  1558,  1560,  1562,  1564,  1566,  1568,  1570,  1572,
    703     1574,  1576,  1579,  1581,  1583,  1585,  1588,  1589,  1592,  1595,
    704     1597,  1602,  1603,  1605,  1608,  1612,  1617,  1620,  1623,  1625,
    705     1628,  1630,  1633,  1639,  1645,  1653,  1660,  1662,  1665,  1668,
    706     1672,  1674,  1677,  1680,  1685,  1688,  1693,  1694,  1699,  1702,
    707     1704,  1706,  1708,  1709,  1712,  1718,  1724,  1738,  1740,  1742,
    708     1746,  1750,  1753,  1757,  1761,  1764,  1769,  1771,  1778,  1788,
    709     1789,  1801,  1803,  1807,  1811,  1815,  1817,  1819,  1825,  1828,
    710     1834,  1835,  1837,  1839,  1843,  1844,  1846,  1848,  1850,  1852,
    711     1853,  1860,  1863,  1865,  1868,  1873,  1876,  1880,  1884,  1888,
    712     1893,  1899,  1905,  1911,  1918,  1920,  1922,  1924,  1928,  1929,
    713     1935,  1936,  1938,  1940,  1943,  1950,  1952,  1956,  1957,  1959,
    714     1964,  1966,  1968,  1970,  1972,  1975,  1977,  1980,  1983,  1985,
    715     1989,  1992,  1996,  2000,  2003,  2008,  2013,  2017,  2026,  2030,
    716     2033,  2035,  2038,  2045,  2054,  2058,  2061,  2065,  2069,  2074,
    717     2079,  2083,  2085,  2087,  2089,  2094,  2101,  2105,  2108,  2112,
    718     2116,  2121,  2126,  2130,  2133,  2135,  2138,  2141,  2143,  2147,
    719     2150,  2154,  2158,  2161,  2166,  2171,  2175,  2182,  2191,  2195,
    720     2198,  2200,  2203,  2206,  2209,  2213,  2217,  2220,  2225,  2230,
    721     2234,  2241,  2250,  2254,  2257,  2259,  2262,  2265,  2267,  2269,
    722     2272,  2276,  2280,  2283,  2288,  2295,  2304,  2306,  2309,  2312,
    723     2314,  2317,  2320,  2324,  2328,  2330,  2335,  2340,  2344,  2350,
    724     2359,  2363,  2366,  2370,  2372,  2378,  2384,  2391,  2398,  2400,
    725     2403,  2406,  2408,  2411,  2414,  2418,  2422,  2424,  2429,  2434,
    726     2438,  2444,  2453,  2457,  2459,  2462,  2464,  2467,  2474,  2480,
    727     2487,  2495,  2503,  2505,  2508,  2511,  2513,  2516,  2519,  2523,
    728     2527,  2529,  2534,  2539,  2543,  2552,  2556,  2558,  2560,  2563,
    729     2565,  2567,  2570,  2574,  2577,  2581,  2584,  2588,  2592,  2595,
    730     2600,  2604,  2607,  2611,  2614,  2619,  2623,  2626,  2633,  2640,
    731     2647,  2655,  2657,  2660,  2662,  2664,  2666,  2669,  2673,  2676,
    732     2680,  2683,  2687,  2691,  2696,  2699,  2703,  2708,  2711,  2717,
    733     2723,  2730,  2737,  2738,  2740,  2741
     667      87,    90,    98,   103,   105,   109,   110,   112,   114,   118,
     668     120,   124,   132,   136,   144,   146,   148,   150,   153,   156,
     669     159,   162,   165,   168,   173,   176,   181,   188,   190,   195,
     670     200,   202,   204,   206,   208,   210,   212,   214,   219,   224,
     671     226,   230,   234,   238,   240,   244,   248,   250,   254,   258,
     672     260,   264,   268,   272,   276,   278,   282,   286,   288,   292,
     673     294,   298,   300,   304,   306,   310,   312,   316,   318,   324,
     674     329,   335,   337,   339,   343,   346,   347,   349,   351,   353,
     675     355,   357,   359,   361,   363,   365,   367,   369,   371,   374,
     676     380,   387,   395,   397,   401,   403,   407,   408,   410,   412,
     677     414,   416,   418,   420,   422,   424,   426,   433,   438,   441,
     678     449,   451,   455,   457,   460,   462,   465,   467,   470,   473,
     679     479,   487,   493,   503,   509,   519,   521,   525,   527,   529,
     680     533,   537,   540,   542,   545,   548,   549,   551,   554,   558,
     681     559,   561,   564,   568,   572,   577,   578,   580,   582,   585,
     682     591,   599,   606,   613,   618,   622,   627,   630,   634,   637,
     683     641,   645,   649,   653,   659,   663,   667,   672,   674,   680,
     684     687,   693,   700,   710,   721,   731,   742,   745,   747,   750,
     685     753,   756,   758,   765,   774,   785,   798,   813,   814,   816,
     686     817,   819,   821,   825,   830,   838,   839,   841,   845,   847,
     687     851,   853,   855,   857,   861,   863,   865,   867,   871,   872,
     688     874,   878,   883,   885,   889,   891,   893,   897,   901,   905,
     689     909,   913,   916,   920,   927,   931,   935,   940,   942,   945,
     690     948,   952,   958,   967,   975,   983,   989,   999,  1002,  1005,
     691    1011,  1015,  1021,  1026,  1030,  1035,  1040,  1048,  1052,  1056,
     692    1060,  1064,  1069,  1076,  1078,  1080,  1082,  1084,  1086,  1088,
     693    1090,  1092,  1093,  1095,  1097,  1100,  1102,  1104,  1106,  1108,
     694    1110,  1112,  1114,  1115,  1121,  1123,  1126,  1130,  1132,  1135,
     695    1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
     696    1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
     697    1177,  1179,  1181,  1184,  1187,  1191,  1195,  1197,  1201,  1203,
     698    1206,  1209,  1212,  1217,  1222,  1227,  1232,  1234,  1237,  1240,
     699    1244,  1246,  1249,  1252,  1254,  1257,  1260,  1264,  1266,  1269,
     700    1272,  1274,  1276,  1281,  1284,  1285,  1292,  1300,  1303,  1306,
     701    1309,  1310,  1313,  1316,  1320,  1323,  1327,  1329,  1332,  1336,
     702    1339,  1342,  1347,  1348,  1350,  1353,  1356,  1358,  1359,  1361,
     703    1364,  1367,  1373,  1376,  1377,  1385,  1388,  1393,  1394,  1397,
     704    1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
     705    1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
     706    1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
     707    1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
     708    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1553,  1555,
     709    1557,  1559,  1562,  1563,  1566,  1569,  1571,  1576,  1577,  1579,
     710    1582,  1586,  1591,  1594,  1597,  1599,  1602,  1605,  1611,  1617,
     711    1625,  1632,  1634,  1637,  1640,  1644,  1646,  1649,  1652,  1657,
     712    1660,  1665,  1666,  1671,  1674,  1676,  1678,  1680,  1681,  1684,
     713    1690,  1696,  1710,  1712,  1714,  1718,  1722,  1725,  1729,  1733,
     714    1736,  1741,  1743,  1750,  1760,  1761,  1773,  1775,  1779,  1783,
     715    1787,  1789,  1791,  1797,  1800,  1806,  1807,  1809,  1811,  1815,
     716    1816,  1818,  1820,  1822,  1824,  1825,  1832,  1835,  1837,  1840,
     717    1845,  1848,  1852,  1856,  1860,  1865,  1871,  1877,  1883,  1890,
     718    1892,  1894,  1896,  1900,  1901,  1907,  1908,  1910,  1912,  1915,
     719    1922,  1924,  1928,  1929,  1931,  1936,  1938,  1940,  1942,  1944,
     720    1947,  1949,  1952,  1955,  1957,  1961,  1964,  1968,  1972,  1975,
     721    1980,  1985,  1989,  1998,  2002,  2005,  2007,  2010,  2017,  2026,
     722    2030,  2033,  2037,  2041,  2046,  2051,  2055,  2057,  2059,  2061,
     723    2066,  2073,  2077,  2080,  2084,  2088,  2093,  2098,  2102,  2105,
     724    2107,  2110,  2113,  2115,  2119,  2122,  2126,  2130,  2133,  2138,
     725    2143,  2147,  2154,  2163,  2167,  2170,  2172,  2175,  2178,  2181,
     726    2185,  2189,  2192,  2197,  2202,  2206,  2213,  2222,  2226,  2229,
     727    2231,  2234,  2237,  2239,  2241,  2244,  2248,  2252,  2255,  2260,
     728    2267,  2276,  2278,  2281,  2284,  2286,  2289,  2292,  2296,  2300,
     729    2302,  2307,  2312,  2316,  2322,  2331,  2335,  2338,  2342,  2344,
     730    2350,  2356,  2363,  2370,  2372,  2375,  2378,  2380,  2383,  2386,
     731    2390,  2394,  2396,  2401,  2406,  2410,  2416,  2425,  2429,  2431,
     732    2434,  2436,  2439,  2446,  2452,  2459,  2467,  2475,  2477,  2480,
     733    2483,  2485,  2488,  2491,  2495,  2499,  2501,  2506,  2511,  2515,
     734    2524,  2528,  2530,  2532,  2535,  2537,  2539,  2542,  2546,  2549,
     735    2553,  2556,  2560,  2564,  2567,  2572,  2576,  2579,  2583,  2586,
     736    2591,  2595,  2598,  2605,  2612,  2619,  2627,  2629,  2632,  2634,
     737    2636,  2638,  2641,  2645,  2648,  2652,  2655,  2659,  2663,  2668,
     738    2671,  2675,  2680,  2683,  2689,  2695,  2702,  2709,  2710,  2712,
     739    2713
    734740};
    735741
     
    748754     109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
    749755     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    750      164,    -1,   139,   117,   164,    -1,   111,   134,   164,   135,
    751      112,   117,   164,    -1,   111,   134,   164,   116,   167,   135,
    752      112,   117,   164,    -1,   147,    -1,   146,   116,   147,    -1,
    753      139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
    754      146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
    755      111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
    756      141,    -1,    40,   151,    -1,   149,   151,    -1,   150,   151,
    757       -1,    86,   148,    -1,    87,   148,    -1,    37,   148,    -1,
    758       37,   109,   275,   110,    -1,    38,   109,   275,   116,   139,
    759      110,    -1,    76,    -1,    76,   109,   276,   110,    -1,    76,
    760      109,   145,   110,    -1,    66,   148,    -1,    66,   109,   275,
    761      110,    -1,   118,    -1,   119,    -1,    94,    -1,   120,    -1,
    762      121,    -1,   122,    -1,   123,    -1,   148,    -1,   109,   275,
    763      110,   151,    -1,   109,   275,   110,   166,    -1,   151,    -1,
    764      152,   118,   151,    -1,   152,   124,   151,    -1,   152,   125,
    765      151,    -1,   152,    -1,   153,   120,   152,    -1,   153,   121,
    766      152,    -1,   153,    -1,   154,    88,   153,    -1,   154,    89,
    767      153,    -1,   154,    -1,   155,   126,   154,    -1,   155,   127,
    768      154,    -1,   155,    90,   154,    -1,   155,    91,   154,    -1,
    769      155,    -1,   156,    92,   155,    -1,   156,    93,   155,    -1,
    770      156,    -1,   157,   119,   156,    -1,   157,    -1,   158,   128,
    771      157,    -1,   158,    -1,   159,   129,   158,    -1,   159,    -1,
    772      160,    94,   159,    -1,   160,    -1,   161,    95,   160,    -1,
    773      161,    -1,   161,   130,   169,   117,   162,    -1,   161,   130,
    774      117,   162,    -1,   161,   130,   169,   117,   166,    -1,   162,
    775       -1,   162,    -1,   148,   131,   164,    -1,   148,   168,   164,
    776       -1,   166,   373,    -1,    -1,   164,    -1,   111,   112,    -1,
    777      111,   134,   164,   135,   112,    -1,   111,   134,   116,   167,
    778      135,   112,    -1,   111,   134,   164,   116,   167,   135,   112,
    779       -1,   165,    -1,   167,   116,   165,    -1,    97,    -1,    98,
    780       -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
    781       -1,   104,    -1,   105,    -1,   106,    -1,   164,    -1,   169,
    782      116,   164,    -1,    -1,   169,    -1,   172,    -1,   173,    -1,
    783      177,    -1,   178,    -1,   190,    -1,   192,    -1,   193,    -1,
    784      198,    -1,   128,   143,   114,   144,   115,   132,    -1,    72,
    785      117,   312,   171,    -1,   114,   115,    -1,   114,   134,   134,
    786      209,   174,   135,   115,    -1,   175,    -1,   174,   134,   175,
    787       -1,   212,    -1,    40,   212,    -1,   308,    -1,   171,   135,
    788       -1,   171,    -1,   176,   171,    -1,   170,   132,    -1,    41,
    789      109,   169,   110,   171,    -1,    41,   109,   169,   110,   171,
    790       42,   171,    -1,    43,   109,   169,   110,   183,    -1,    43,
    791      109,   169,   110,   114,   134,   205,   184,   115,    -1,    53,
    792      109,   169,   110,   183,    -1,    53,   109,   169,   110,   114,
    793      134,   205,   186,   115,    -1,   163,    -1,   163,    96,   163,
    794       -1,   310,    -1,   179,    -1,   180,   116,   179,    -1,    44,
    795      180,   117,    -1,    45,   117,    -1,   181,    -1,   182,   181,
    796       -1,   182,   171,    -1,    -1,   185,    -1,   182,   176,    -1,
    797      185,   182,   176,    -1,    -1,   187,    -1,   182,   189,    -1,
    798      182,   176,   188,    -1,   187,   182,   189,    -1,   187,   182,
    799      176,   188,    -1,    -1,   189,    -1,    56,    -1,    56,   132,
    800       -1,    47,   109,   169,   110,   171,    -1,    46,   171,    47,
    801      109,   169,   110,   132,    -1,    48,   109,   134,   191,   110,
    802      171,    -1,   170,   135,   132,   170,   132,   170,    -1,   212,
    803      170,   132,   170,    -1,    51,    72,   132,    -1,    51,   118,
    804      169,   132,    -1,    50,   132,    -1,    50,    72,   132,    -1,
    805       49,   132,    -1,    49,    72,   132,    -1,    52,   170,   132,
    806       -1,    61,   165,   132,    -1,    62,   165,   132,    -1,    62,
    807      165,    63,   164,   132,    -1,    57,   173,   194,    -1,    57,
    808      173,   196,    -1,    57,   173,   194,   196,    -1,   195,    -1,
    809       58,   109,    96,   110,   173,    -1,   195,    58,   109,    96,
    810      110,   173,    -1,    59,   109,    96,   110,   173,    -1,   195,
    811       59,   109,    96,   110,   173,    -1,    58,   109,   134,   134,
    812      197,   135,   110,   173,   135,    -1,   195,    58,   109,   134,
    813      134,   197,   135,   110,   173,   135,    -1,    59,   109,   134,
    814      134,   197,   135,   110,   173,   135,    -1,   195,    59,   109,
    815      134,   134,   197,   135,   110,   173,   135,    -1,    60,   173,
    816       -1,   225,    -1,   225,   309,    -1,   225,   357,    -1,   366,
    817      139,    -1,   366,    -1,    64,   199,   109,   141,   110,   132,
    818       -1,    64,   199,   109,   141,   117,   200,   110,   132,    -1,
    819       64,   199,   109,   141,   117,   200,   117,   200,   110,   132,
    820       -1,    64,   199,   109,   141,   117,   200,   117,   200,   117,
    821      203,   110,   132,    -1,    64,   199,    51,   109,   141,   117,
    822      117,   200,   117,   203,   117,   204,   110,   132,    -1,    -1,
    823       11,    -1,    -1,   201,    -1,   202,    -1,   201,   116,   202,
    824       -1,   141,   109,   163,   110,    -1,   111,   163,   112,   141,
    825      109,   163,   110,    -1,    -1,   141,    -1,   203,   116,   141,
    826       -1,   139,    -1,   204,   116,   139,    -1,   135,    -1,   206,
    827       -1,   212,    -1,   206,   134,   212,    -1,   135,    -1,   208,
    828       -1,   222,    -1,   208,   134,   222,    -1,    -1,   210,    -1,
    829       29,   211,   132,    -1,   210,    29,   211,   132,    -1,   274,
    830       -1,   211,   116,   274,    -1,   213,    -1,   222,    -1,   214,
    831      135,   132,    -1,   219,   135,   132,    -1,   216,   135,   132,
    832       -1,   293,   135,   132,    -1,   296,   135,   132,    -1,   215,
    833      277,    -1,   231,   215,   277,    -1,   214,   135,   116,   134,
    834      272,   277,    -1,   367,   272,   311,    -1,   370,   272,   311,
    835       -1,   227,   370,   272,   311,    -1,   217,    -1,   227,   217,
    836       -1,   231,   217,    -1,   231,   227,   217,    -1,   216,   135,
    837      116,   134,   272,    -1,   111,   112,   272,   109,   134,   260,
    838      135,   110,    -1,   370,   272,   109,   134,   260,   135,   110,
    839       -1,   218,   272,   109,   134,   260,   135,   110,    -1,   111,
    840      134,   262,   135,   112,    -1,   111,   134,   262,   135,   116,
    841      134,   263,   135,   112,    -1,     3,   215,    -1,     3,   217,
    842       -1,   219,   135,   116,   134,   139,    -1,     3,   225,   309,
    843       -1,   220,   135,   116,   134,   309,    -1,   227,     3,   225,
    844      309,    -1,   225,     3,   309,    -1,   225,     3,   227,   309,
    845       -1,     3,   139,   131,   164,    -1,   221,   135,   116,   134,
    846      139,   131,   164,    -1,   223,   135,   132,    -1,   220,   135,
    847      132,    -1,   221,   135,   132,    -1,   240,   135,   132,    -1,
    848      224,   309,   311,   277,    -1,   223,   116,   312,   309,   311,
    849      277,    -1,   236,    -1,   240,    -1,   242,    -1,   283,    -1,
    850      237,    -1,   241,    -1,   243,    -1,   284,    -1,    -1,   227,
    851       -1,   228,    -1,   227,   228,    -1,   229,    -1,   314,    -1,
    852       10,    -1,    12,    -1,    11,    -1,    14,    -1,    67,    -1,
    853       -1,    13,   109,   230,   286,   110,    -1,   232,    -1,   227,
    854      232,    -1,   231,   227,   232,    -1,   233,    -1,   232,   233,
    855       -1,   234,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
    856       -1,     8,    -1,     9,    -1,    69,    -1,    71,    -1,    16,
    857       -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
    858       -1,    22,    -1,    23,    -1,    15,    -1,    25,    -1,    26,
    859       -1,    27,    -1,    24,    -1,   237,    -1,   231,   237,    -1,
    860      236,   233,    -1,   236,   233,   227,    -1,   236,   233,   237,
    861       -1,   238,    -1,   226,   239,   226,    -1,   235,    -1,   227,
    862      235,    -1,   238,   228,    -1,   238,   235,    -1,    28,   109,
    863      276,   110,    -1,    28,   109,   169,   110,    -1,    78,   109,
    864      276,   110,    -1,    78,   109,   169,   110,    -1,   241,    -1,
    865      231,   241,    -1,   240,   233,    -1,   240,   233,   227,    -1,
    866      244,    -1,   227,   244,    -1,   241,   228,    -1,   243,    -1,
    867      231,   243,    -1,   242,   233,    -1,   242,   233,   227,    -1,
    868       74,    -1,   227,    74,    -1,   243,   228,    -1,   245,    -1,
    869      256,    -1,   247,   114,   248,   115,    -1,   247,   274,    -1,
    870       -1,   247,   274,   246,   114,   248,   115,    -1,   247,   109,
    871      292,   110,   114,   248,   115,    -1,   247,   285,    -1,    31,
    872      312,    -1,    32,   312,    -1,    -1,   248,   249,    -1,   250,
    873      132,    -1,    40,   250,   132,    -1,   251,   132,    -1,    40,
    874      251,   132,    -1,   366,    -1,   366,   274,    -1,   250,   116,
    875      274,    -1,   250,   116,    -1,   225,   252,    -1,   251,   116,
    876      312,   252,    -1,    -1,   254,    -1,   318,   253,    -1,   331,
    877      253,    -1,   357,    -1,    -1,   254,    -1,   117,   163,    -1,
    878       30,   312,    -1,   255,   114,   258,   372,   115,    -1,   255,
    879      274,    -1,    -1,   255,   274,   257,   114,   258,   372,   115,
    880       -1,   274,   259,    -1,   258,   116,   274,   259,    -1,    -1,
    881      131,   163,    -1,    -1,   261,    -1,   263,    -1,   262,    -1,
    882      262,   135,   116,   134,   263,    -1,   263,   135,   116,   134,
    883       96,    -1,   262,   135,   116,   134,    96,    -1,   267,    -1,
    884      263,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
    885      267,    -1,   262,   135,   116,   134,   263,   135,   116,   134,
    886      267,    -1,   268,    -1,   263,   135,   116,   134,   268,    -1,
    887       -1,   265,    -1,   266,    -1,   266,   135,   116,   134,    96,
    888       -1,   270,    -1,   269,    -1,   266,   135,   116,   134,   270,
    889       -1,   266,   135,   116,   134,   269,    -1,   269,    -1,   362,
    890      272,   373,    -1,   370,   272,   373,    -1,   227,   370,   272,
    891      373,    -1,   217,    -1,   270,    -1,   362,    -1,   370,    -1,
    892      227,   370,    -1,   371,    -1,   224,   336,   373,    -1,   224,
    893      340,   373,    -1,   224,    -1,   224,   351,    -1,   139,    -1,
    894      271,   116,   139,    -1,   137,    -1,    74,    -1,    75,    -1,
    895      138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,    -1,
    896       75,    -1,   366,    -1,   225,    -1,   225,   357,    -1,   366,
    897       -1,   371,    -1,   225,    -1,   225,   345,    -1,    -1,   131,
    898      278,    -1,   107,   278,    -1,   164,    -1,   114,   279,   372,
    899      115,    -1,    -1,   278,    -1,   280,   278,    -1,   279,   116,
    900      278,    -1,   279,   116,   280,   278,    -1,   281,   117,    -1,
    901      274,   117,    -1,   282,    -1,   281,   282,    -1,    80,    -1,
    902      113,   274,    -1,   111,   134,   164,   135,   112,    -1,   111,
    903      134,   310,   135,   112,    -1,   111,   134,   163,    96,   163,
    904      135,   112,    -1,   113,   111,   134,   146,   135,   112,    -1,
    905      284,    -1,   231,   284,    -1,   283,   233,    -1,   283,   233,
    906      227,    -1,   285,    -1,   227,   285,    -1,   284,   228,    -1,
    907       75,   109,   292,   110,    -1,   287,   373,    -1,   286,   116,
    908      287,   373,    -1,    -1,   289,   274,   288,   290,    -1,   225,
    909      336,    -1,    33,    -1,    35,    -1,    34,    -1,    -1,   290,
    910      291,    -1,   129,   274,   109,   292,   110,    -1,   129,   114,
    911      134,   298,   115,    -1,   129,   109,   134,   286,   135,   110,
    912      114,   134,   298,   115,   109,   292,   110,    -1,   276,    -1,
    913      164,    -1,   292,   116,   276,    -1,   292,   116,   164,    -1,
    914       33,   294,    -1,   232,    33,   294,    -1,   293,   116,   294,
    915       -1,   295,   290,    -1,   295,   290,   131,   276,    -1,   274,
    916       -1,   273,   109,   134,   286,   135,   110,    -1,    36,   274,
    917      109,   134,   286,   135,   110,   114,   115,    -1,    -1,    36,
    918      274,   109,   134,   286,   135,   110,   114,   297,   298,   115,
    919       -1,   299,    -1,   298,   134,   299,    -1,   300,   135,   132,
    920       -1,   301,   135,   132,    -1,   215,    -1,   217,    -1,   300,
    921      135,   116,   134,   272,    -1,   225,   309,    -1,   301,   135,
    922      116,   134,   309,    -1,    -1,   303,    -1,   305,    -1,   303,
    923      134,   305,    -1,    -1,   303,    -1,   212,    -1,   307,    -1,
    924      198,    -1,    -1,     5,    82,   306,   114,   304,   115,    -1,
    925       40,   305,    -1,   308,    -1,   323,   173,    -1,   327,   134,
    926      207,   173,    -1,   216,   173,    -1,   224,   323,   173,    -1,
    927      227,   323,   173,    -1,   231,   323,   173,    -1,   231,   227,
    928      323,   173,    -1,   224,   327,   134,   207,   173,    -1,   227,
    929      327,   134,   207,   173,    -1,   231,   327,   134,   207,   173,
    930       -1,   231,   227,   327,   134,   207,   173,    -1,   318,    -1,
    931      331,    -1,   323,    -1,   163,   123,   163,    -1,    -1,    64,
    932      109,   141,   110,   312,    -1,    -1,   313,    -1,   314,    -1,
    933      313,   314,    -1,    39,   109,   109,   315,   110,   110,    -1,
    934      316,    -1,   315,   116,   316,    -1,    -1,   317,    -1,   317,
    935      109,   170,   110,    -1,   272,    -1,   234,    -1,   235,    -1,
    936      228,    -1,   319,   312,    -1,   320,    -1,   321,   312,    -1,
    937      322,   312,    -1,   137,    -1,   109,   319,   110,    -1,   149,
    938      318,    -1,   149,   227,   318,    -1,   109,   320,   110,    -1,
    939      319,   349,    -1,   109,   320,   110,   349,    -1,   109,   321,
    940      110,   350,    -1,   109,   321,   110,    -1,   109,   320,   110,
    941      109,   134,   264,   135,   110,    -1,   109,   322,   110,    -1,
    942      324,   312,    -1,   325,    -1,   326,   312,    -1,   319,   109,
    943      134,   264,   135,   110,    -1,   109,   325,   110,   109,   134,
    944      264,   135,   110,    -1,   109,   324,   110,    -1,   149,   323,
    945       -1,   149,   227,   323,    -1,   109,   325,   110,    -1,   109,
    946      325,   110,   349,    -1,   109,   326,   110,   350,    -1,   109,
    947      326,   110,    -1,   328,    -1,   329,    -1,   330,    -1,   319,
    948      109,   271,   110,    -1,   109,   329,   110,   109,   271,   110,
    949       -1,   109,   328,   110,    -1,   149,   327,    -1,   149,   227,
    950      327,    -1,   109,   329,   110,    -1,   109,   329,   110,   349,
    951       -1,   109,   330,   110,   350,    -1,   109,   330,   110,    -1,
    952      332,   312,    -1,   333,    -1,   334,   312,    -1,   335,   312,
    953       -1,   341,    -1,   109,   332,   110,    -1,   149,   331,    -1,
    954      149,   227,   331,    -1,   109,   333,   110,    -1,   332,   349,
    955       -1,   109,   333,   110,   349,    -1,   109,   334,   110,   350,
    956       -1,   109,   334,   110,    -1,   332,   109,   134,   264,   135,
    957      110,    -1,   109,   333,   110,   109,   134,   264,   135,   110,
    958       -1,   109,   335,   110,    -1,   319,   312,    -1,   337,    -1,
    959      338,   312,    -1,   339,   312,    -1,   149,   336,    -1,   149,
    960      227,   336,    -1,   109,   337,   110,    -1,   319,   355,    -1,
    961      109,   337,   110,   349,    -1,   109,   338,   110,   350,    -1,
    962      109,   338,   110,    -1,   319,   109,   134,   264,   135,   110,
    963       -1,   109,   337,   110,   109,   134,   264,   135,   110,    -1,
    964      109,   339,   110,    -1,   341,   312,    -1,   342,    -1,   343,
    965      312,    -1,   344,   312,    -1,    74,    -1,    75,    -1,   149,
    966      340,    -1,   149,   227,   340,    -1,   109,   342,   110,    -1,
    967      341,   355,    -1,   109,   342,   110,   355,    -1,   341,   109,
    968      134,   264,   135,   110,    -1,   109,   342,   110,   109,   134,
    969      264,   135,   110,    -1,   346,    -1,   347,   312,    -1,   348,
    970      312,    -1,   149,    -1,   149,   227,    -1,   149,   345,    -1,
    971      149,   227,   345,    -1,   109,   346,   110,    -1,   349,    -1,
    972      109,   346,   110,   349,    -1,   109,   347,   110,   350,    -1,
    973      109,   347,   110,    -1,   109,   134,   264,   135,   110,    -1,
    974      109,   346,   110,   109,   134,   264,   135,   110,    -1,   109,
    975      348,   110,    -1,   111,   112,    -1,   111,   112,   350,    -1,
    976      350,    -1,   111,   134,   164,   135,   112,    -1,   111,   134,
    977      118,   135,   112,    -1,   350,   111,   134,   164,   135,   112,
    978       -1,   350,   111,   134,   118,   135,   112,    -1,   352,    -1,
    979      353,   312,    -1,   354,   312,    -1,   149,    -1,   149,   227,
    980       -1,   149,   351,    -1,   149,   227,   351,    -1,   109,   352,
    981      110,    -1,   355,    -1,   109,   352,   110,   355,    -1,   109,
    982      353,   110,   350,    -1,   109,   353,   110,    -1,   109,   134,
    983      264,   135,   110,    -1,   109,   352,   110,   109,   134,   264,
    984      135,   110,    -1,   109,   354,   110,    -1,   356,    -1,   356,
    985      350,    -1,   350,    -1,   111,   112,    -1,   111,   134,   227,
    986      118,   135,   112,    -1,   111,   134,   227,   135,   112,    -1,
    987      111,   134,   227,   164,   135,   112,    -1,   111,   134,     7,
    988      226,   164,   135,   112,    -1,   111,   134,   227,     7,   164,
    989      135,   112,    -1,   358,    -1,   359,   312,    -1,   360,   312,
    990       -1,   149,    -1,   149,   227,    -1,   149,   357,    -1,   149,
    991      227,   357,    -1,   109,   358,   110,    -1,   349,    -1,   109,
    992      358,   110,   349,    -1,   109,   359,   110,   350,    -1,   109,
    993      359,   110,    -1,   109,   358,   110,   109,   134,   264,   135,
    994      110,    -1,   109,   360,   110,    -1,   362,    -1,   370,    -1,
    995      227,   370,    -1,   363,    -1,   364,    -1,   149,   225,    -1,
    996      227,   149,   225,    -1,   149,   371,    -1,   227,   149,   371,
    997       -1,   149,   361,    -1,   227,   149,   361,    -1,   111,   112,
    998      225,    -1,   365,   225,    -1,   111,   112,   350,   225,    -1,
    999      365,   350,   225,    -1,   350,   225,    -1,   111,   112,   363,
    1000       -1,   365,   363,    -1,   111,   112,   350,   363,    -1,   365,
    1001      350,   363,    -1,   350,   363,    -1,   111,   134,   227,   118,
    1002      135,   112,    -1,   111,   134,   227,   164,   135,   112,    -1,
    1003      111,   134,   231,   164,   135,   112,    -1,   111,   134,   231,
    1004      227,   164,   135,   112,    -1,   370,    -1,   227,   370,    -1,
    1005      367,    -1,   368,    -1,   369,    -1,   149,   225,    -1,   227,
    1006      149,   225,    -1,   149,   371,    -1,   227,   149,   371,    -1,
    1007      149,   366,    -1,   227,   149,   366,    -1,   111,   112,   225,
    1008       -1,   111,   112,   350,   225,    -1,   350,   225,    -1,   111,
    1009      112,   368,    -1,   111,   112,   350,   368,    -1,   350,   368,
    1010       -1,   111,   134,   263,   135,   112,    -1,   111,   112,   109,
    1011      260,   110,    -1,   370,   109,   134,   260,   135,   110,    -1,
    1012      218,   109,   134,   260,   135,   110,    -1,    -1,   116,    -1,
    1013       -1,   131,   164,    -1
     756     164,    -1,   147,    -1,   146,   116,   147,    -1,   139,    -1,
     757     139,   113,   147,    -1,   139,   113,   111,   134,   146,   135,
     758     112,    -1,   139,    85,   147,    -1,   139,    85,   111,   134,
     759     146,   135,   112,    -1,   143,    -1,   136,    -1,   141,    -1,
     760      40,   151,    -1,   149,   151,    -1,   150,   151,    -1,    86,
     761     148,    -1,    87,   148,    -1,    37,   148,    -1,    37,   109,
     762     275,   110,    -1,    66,   148,    -1,    66,   109,   275,   110,
     763      -1,    38,   109,   275,   116,   139,   110,    -1,    76,    -1,
     764      76,   109,   145,   110,    -1,    76,   109,   276,   110,    -1,
     765     117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
     766     122,    -1,   148,    -1,   109,   275,   110,   151,    -1,   109,
     767     275,   110,   167,    -1,   151,    -1,   152,   117,   151,    -1,
     768     152,   123,   151,    -1,   152,   124,   151,    -1,   152,    -1,
     769     153,   119,   152,    -1,   153,   120,   152,    -1,   153,    -1,
     770     154,    88,   153,    -1,   154,    89,   153,    -1,   154,    -1,
     771     155,   125,   154,    -1,   155,   126,   154,    -1,   155,    90,
     772     154,    -1,   155,    91,   154,    -1,   155,    -1,   156,    92,
     773     155,    -1,   156,    93,   155,    -1,   156,    -1,   157,   118,
     774     156,    -1,   157,    -1,   158,   127,   157,    -1,   158,    -1,
     775     159,   128,   158,    -1,   159,    -1,   160,    94,   159,    -1,
     776     160,    -1,   161,    95,   160,    -1,   161,    -1,   161,   129,
     777     169,   130,   162,    -1,   161,   129,   130,   162,    -1,   161,
     778     129,   169,   130,   167,    -1,   162,    -1,   162,    -1,   148,
     779     166,   164,    -1,   167,   373,    -1,    -1,   164,    -1,   131,
     780      -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,   101,
     781      -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
     782      -1,   111,   112,    -1,   111,   134,   164,   135,   112,    -1,
     783     111,   134,   116,   168,   135,   112,    -1,   111,   134,   164,
     784     116,   168,   135,   112,    -1,   165,    -1,   168,   116,   165,
     785      -1,   164,    -1,   169,   116,   164,    -1,    -1,   169,    -1,
     786     172,    -1,   173,    -1,   177,    -1,   178,    -1,   190,    -1,
     787     192,    -1,   193,    -1,   198,    -1,   127,   143,   114,   144,
     788     115,   132,    -1,    72,   130,   312,   171,    -1,   114,   115,
     789      -1,   114,   134,   134,   209,   174,   135,   115,    -1,   175,
     790      -1,   174,   134,   175,    -1,   212,    -1,    40,   212,    -1,
     791     308,    -1,   171,   135,    -1,   171,    -1,   176,   171,    -1,
     792     170,   132,    -1,    41,   109,   169,   110,   171,    -1,    41,
     793     109,   169,   110,   171,    42,   171,    -1,    43,   109,   169,
     794     110,   183,    -1,    43,   109,   169,   110,   114,   134,   205,
     795     184,   115,    -1,    53,   109,   169,   110,   183,    -1,    53,
     796     109,   169,   110,   114,   134,   205,   186,   115,    -1,   163,
     797      -1,   163,    96,   163,    -1,   310,    -1,   179,    -1,   180,
     798     116,   179,    -1,    44,   180,   130,    -1,    45,   130,    -1,
     799     181,    -1,   182,   181,    -1,   182,   171,    -1,    -1,   185,
     800      -1,   182,   176,    -1,   185,   182,   176,    -1,    -1,   187,
     801      -1,   182,   189,    -1,   182,   176,   188,    -1,   187,   182,
     802     189,    -1,   187,   182,   176,   188,    -1,    -1,   189,    -1,
     803      56,    -1,    56,   132,    -1,    47,   109,   169,   110,   171,
     804      -1,    46,   171,    47,   109,   169,   110,   132,    -1,    48,
     805     109,   134,   191,   110,   171,    -1,   170,   135,   132,   170,
     806     132,   170,    -1,   212,   170,   132,   170,    -1,    51,    72,
     807     132,    -1,    51,   117,   169,   132,    -1,    50,   132,    -1,
     808      50,    72,   132,    -1,    49,   132,    -1,    49,    72,   132,
     809      -1,    52,   170,   132,    -1,    61,   165,   132,    -1,    62,
     810     165,   132,    -1,    62,   165,    63,   164,   132,    -1,    57,
     811     173,   194,    -1,    57,   173,   196,    -1,    57,   173,   194,
     812     196,    -1,   195,    -1,    58,   109,    96,   110,   173,    -1,
     813     195,    58,   109,    96,   110,   173,    -1,    59,   109,    96,
     814     110,   173,    -1,   195,    59,   109,    96,   110,   173,    -1,
     815      58,   109,   134,   134,   197,   135,   110,   173,   135,    -1,
     816     195,    58,   109,   134,   134,   197,   135,   110,   173,   135,
     817      -1,    59,   109,   134,   134,   197,   135,   110,   173,   135,
     818      -1,   195,    59,   109,   134,   134,   197,   135,   110,   173,
     819     135,    -1,    60,   173,    -1,   225,    -1,   225,   309,    -1,
     820     225,   357,    -1,   366,   139,    -1,   366,    -1,    64,   199,
     821     109,   141,   110,   132,    -1,    64,   199,   109,   141,   130,
     822     200,   110,   132,    -1,    64,   199,   109,   141,   130,   200,
     823     130,   200,   110,   132,    -1,    64,   199,   109,   141,   130,
     824     200,   130,   200,   130,   203,   110,   132,    -1,    64,   199,
     825      51,   109,   141,   130,   130,   200,   130,   203,   130,   204,
     826     110,   132,    -1,    -1,    11,    -1,    -1,   201,    -1,   202,
     827      -1,   201,   116,   202,    -1,   141,   109,   163,   110,    -1,
     828     111,   163,   112,   141,   109,   163,   110,    -1,    -1,   141,
     829      -1,   203,   116,   141,    -1,   139,    -1,   204,   116,   139,
     830      -1,   135,    -1,   206,    -1,   212,    -1,   206,   134,   212,
     831      -1,   135,    -1,   208,    -1,   222,    -1,   208,   134,   222,
     832      -1,    -1,   210,    -1,    29,   211,   132,    -1,   210,    29,
     833     211,   132,    -1,   274,    -1,   211,   116,   274,    -1,   213,
     834      -1,   222,    -1,   214,   135,   132,    -1,   219,   135,   132,
     835      -1,   216,   135,   132,    -1,   293,   135,   132,    -1,   296,
     836     135,   132,    -1,   215,   277,    -1,   231,   215,   277,    -1,
     837     214,   135,   116,   134,   272,   277,    -1,   367,   272,   311,
     838      -1,   370,   272,   311,    -1,   227,   370,   272,   311,    -1,
     839     217,    -1,   227,   217,    -1,   231,   217,    -1,   231,   227,
     840     217,    -1,   216,   135,   116,   134,   272,    -1,   111,   112,
     841     272,   109,   134,   260,   135,   110,    -1,   370,   272,   109,
     842     134,   260,   135,   110,    -1,   218,   272,   109,   134,   260,
     843     135,   110,    -1,   111,   134,   262,   135,   112,    -1,   111,
     844     134,   262,   135,   116,   134,   263,   135,   112,    -1,     3,
     845     215,    -1,     3,   217,    -1,   219,   135,   116,   134,   139,
     846      -1,     3,   225,   309,    -1,   220,   135,   116,   134,   309,
     847      -1,   227,     3,   225,   309,    -1,   225,     3,   309,    -1,
     848     225,     3,   227,   309,    -1,     3,   139,   131,   164,    -1,
     849     221,   135,   116,   134,   139,   131,   164,    -1,   223,   135,
     850     132,    -1,   220,   135,   132,    -1,   221,   135,   132,    -1,
     851     240,   135,   132,    -1,   224,   309,   311,   277,    -1,   223,
     852     116,   312,   309,   311,   277,    -1,   236,    -1,   240,    -1,
     853     242,    -1,   283,    -1,   237,    -1,   241,    -1,   243,    -1,
     854     284,    -1,    -1,   227,    -1,   228,    -1,   227,   228,    -1,
     855     229,    -1,   314,    -1,    10,    -1,    12,    -1,    11,    -1,
     856      14,    -1,    67,    -1,    -1,    13,   109,   230,   286,   110,
     857      -1,   232,    -1,   227,   232,    -1,   231,   227,   232,    -1,
     858     233,    -1,   232,   233,    -1,   234,    -1,     5,    -1,     7,
     859      -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
     860      -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
     861      -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
     862      -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   237,
     863      -1,   231,   237,    -1,   236,   233,    -1,   236,   233,   227,
     864      -1,   236,   233,   237,    -1,   238,    -1,   226,   239,   226,
     865      -1,   235,    -1,   227,   235,    -1,   238,   228,    -1,   238,
     866     235,    -1,    28,   109,   276,   110,    -1,    28,   109,   169,
     867     110,    -1,    78,   109,   276,   110,    -1,    78,   109,   169,
     868     110,    -1,   241,    -1,   231,   241,    -1,   240,   233,    -1,
     869     240,   233,   227,    -1,   244,    -1,   227,   244,    -1,   241,
     870     228,    -1,   243,    -1,   231,   243,    -1,   242,   233,    -1,
     871     242,   233,   227,    -1,    74,    -1,   227,    74,    -1,   243,
     872     228,    -1,   245,    -1,   256,    -1,   247,   114,   248,   115,
     873      -1,   247,   274,    -1,    -1,   247,   274,   246,   114,   248,
     874     115,    -1,   247,   109,   292,   110,   114,   248,   115,    -1,
     875     247,   285,    -1,    31,   312,    -1,    32,   312,    -1,    -1,
     876     248,   249,    -1,   250,   132,    -1,    40,   250,   132,    -1,
     877     251,   132,    -1,    40,   251,   132,    -1,   366,    -1,   366,
     878     274,    -1,   250,   116,   274,    -1,   250,   116,    -1,   225,
     879     252,    -1,   251,   116,   312,   252,    -1,    -1,   254,    -1,
     880     318,   253,    -1,   331,   253,    -1,   357,    -1,    -1,   254,
     881      -1,   130,   163,    -1,    30,   312,    -1,   255,   114,   258,
     882     372,   115,    -1,   255,   274,    -1,    -1,   255,   274,   257,
     883     114,   258,   372,   115,    -1,   274,   259,    -1,   258,   116,
     884     274,   259,    -1,    -1,   131,   163,    -1,    -1,   261,    -1,
     885     263,    -1,   262,    -1,   262,   135,   116,   134,   263,    -1,
     886     263,   135,   116,   134,    96,    -1,   262,   135,   116,   134,
     887      96,    -1,   267,    -1,   263,   135,   116,   134,   267,    -1,
     888     262,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
     889     263,   135,   116,   134,   267,    -1,   268,    -1,   263,   135,
     890     116,   134,   268,    -1,    -1,   265,    -1,   266,    -1,   266,
     891     135,   116,   134,    96,    -1,   270,    -1,   269,    -1,   266,
     892     135,   116,   134,   270,    -1,   266,   135,   116,   134,   269,
     893      -1,   269,    -1,   362,   272,   373,    -1,   370,   272,   373,
     894      -1,   227,   370,   272,   373,    -1,   217,    -1,   270,    -1,
     895     362,    -1,   370,    -1,   227,   370,    -1,   371,    -1,   224,
     896     336,   373,    -1,   224,   340,   373,    -1,   224,    -1,   224,
     897     351,    -1,   139,    -1,   271,   116,   139,    -1,   137,    -1,
     898      74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
     899     139,    -1,    74,    -1,    75,    -1,   366,    -1,   225,    -1,
     900     225,   357,    -1,   366,    -1,   371,    -1,   225,    -1,   225,
     901     345,    -1,    -1,   131,   278,    -1,   107,   278,    -1,   164,
     902      -1,   114,   279,   372,   115,    -1,    -1,   278,    -1,   280,
     903     278,    -1,   279,   116,   278,    -1,   279,   116,   280,   278,
     904      -1,   281,   130,    -1,   274,   130,    -1,   282,    -1,   281,
     905     282,    -1,   113,   274,    -1,   111,   134,   164,   135,   112,
     906      -1,   111,   134,   310,   135,   112,    -1,   111,   134,   163,
     907      96,   163,   135,   112,    -1,   113,   111,   134,   146,   135,
     908     112,    -1,   284,    -1,   231,   284,    -1,   283,   233,    -1,
     909     283,   233,   227,    -1,   285,    -1,   227,   285,    -1,   284,
     910     228,    -1,    75,   109,   292,   110,    -1,   287,   373,    -1,
     911     286,   116,   287,   373,    -1,    -1,   289,   274,   288,   290,
     912      -1,   225,   336,    -1,    33,    -1,    35,    -1,    34,    -1,
     913      -1,   290,   291,    -1,   128,   274,   109,   292,   110,    -1,
     914     128,   114,   134,   298,   115,    -1,   128,   109,   134,   286,
     915     135,   110,   114,   134,   298,   115,   109,   292,   110,    -1,
     916     276,    -1,   164,    -1,   292,   116,   276,    -1,   292,   116,
     917     164,    -1,    33,   294,    -1,   232,    33,   294,    -1,   293,
     918     116,   294,    -1,   295,   290,    -1,   295,   290,   131,   276,
     919      -1,   274,    -1,   273,   109,   134,   286,   135,   110,    -1,
     920      36,   274,   109,   134,   286,   135,   110,   114,   115,    -1,
     921      -1,    36,   274,   109,   134,   286,   135,   110,   114,   297,
     922     298,   115,    -1,   299,    -1,   298,   134,   299,    -1,   300,
     923     135,   132,    -1,   301,   135,   132,    -1,   215,    -1,   217,
     924      -1,   300,   135,   116,   134,   272,    -1,   225,   309,    -1,
     925     301,   135,   116,   134,   309,    -1,    -1,   303,    -1,   305,
     926      -1,   303,   134,   305,    -1,    -1,   303,    -1,   212,    -1,
     927     307,    -1,   198,    -1,    -1,     5,    82,   306,   114,   304,
     928     115,    -1,    40,   305,    -1,   308,    -1,   323,   173,    -1,
     929     327,   134,   207,   173,    -1,   216,   173,    -1,   224,   323,
     930     173,    -1,   227,   323,   173,    -1,   231,   323,   173,    -1,
     931     231,   227,   323,   173,    -1,   224,   327,   134,   207,   173,
     932      -1,   227,   327,   134,   207,   173,    -1,   231,   327,   134,
     933     207,   173,    -1,   231,   227,   327,   134,   207,   173,    -1,
     934     318,    -1,   331,    -1,   323,    -1,   163,   122,   163,    -1,
     935      -1,    64,   109,   141,   110,   312,    -1,    -1,   313,    -1,
     936     314,    -1,   313,   314,    -1,    39,   109,   109,   315,   110,
     937     110,    -1,   316,    -1,   315,   116,   316,    -1,    -1,   317,
     938      -1,   317,   109,   170,   110,    -1,   272,    -1,   234,    -1,
     939     235,    -1,   228,    -1,   319,   312,    -1,   320,    -1,   321,
     940     312,    -1,   322,   312,    -1,   137,    -1,   109,   319,   110,
     941      -1,   149,   318,    -1,   149,   227,   318,    -1,   109,   320,
     942     110,    -1,   319,   349,    -1,   109,   320,   110,   349,    -1,
     943     109,   321,   110,   350,    -1,   109,   321,   110,    -1,   109,
     944     320,   110,   109,   134,   264,   135,   110,    -1,   109,   322,
     945     110,    -1,   324,   312,    -1,   325,    -1,   326,   312,    -1,
     946     319,   109,   134,   264,   135,   110,    -1,   109,   325,   110,
     947     109,   134,   264,   135,   110,    -1,   109,   324,   110,    -1,
     948     149,   323,    -1,   149,   227,   323,    -1,   109,   325,   110,
     949      -1,   109,   325,   110,   349,    -1,   109,   326,   110,   350,
     950      -1,   109,   326,   110,    -1,   328,    -1,   329,    -1,   330,
     951      -1,   319,   109,   271,   110,    -1,   109,   329,   110,   109,
     952     271,   110,    -1,   109,   328,   110,    -1,   149,   327,    -1,
     953     149,   227,   327,    -1,   109,   329,   110,    -1,   109,   329,
     954     110,   349,    -1,   109,   330,   110,   350,    -1,   109,   330,
     955     110,    -1,   332,   312,    -1,   333,    -1,   334,   312,    -1,
     956     335,   312,    -1,   341,    -1,   109,   332,   110,    -1,   149,
     957     331,    -1,   149,   227,   331,    -1,   109,   333,   110,    -1,
     958     332,   349,    -1,   109,   333,   110,   349,    -1,   109,   334,
     959     110,   350,    -1,   109,   334,   110,    -1,   332,   109,   134,
     960     264,   135,   110,    -1,   109,   333,   110,   109,   134,   264,
     961     135,   110,    -1,   109,   335,   110,    -1,   319,   312,    -1,
     962     337,    -1,   338,   312,    -1,   339,   312,    -1,   149,   336,
     963      -1,   149,   227,   336,    -1,   109,   337,   110,    -1,   319,
     964     355,    -1,   109,   337,   110,   349,    -1,   109,   338,   110,
     965     350,    -1,   109,   338,   110,    -1,   319,   109,   134,   264,
     966     135,   110,    -1,   109,   337,   110,   109,   134,   264,   135,
     967     110,    -1,   109,   339,   110,    -1,   341,   312,    -1,   342,
     968      -1,   343,   312,    -1,   344,   312,    -1,    74,    -1,    75,
     969      -1,   149,   340,    -1,   149,   227,   340,    -1,   109,   342,
     970     110,    -1,   341,   355,    -1,   109,   342,   110,   355,    -1,
     971     341,   109,   134,   264,   135,   110,    -1,   109,   342,   110,
     972     109,   134,   264,   135,   110,    -1,   346,    -1,   347,   312,
     973      -1,   348,   312,    -1,   149,    -1,   149,   227,    -1,   149,
     974     345,    -1,   149,   227,   345,    -1,   109,   346,   110,    -1,
     975     349,    -1,   109,   346,   110,   349,    -1,   109,   347,   110,
     976     350,    -1,   109,   347,   110,    -1,   109,   134,   264,   135,
     977     110,    -1,   109,   346,   110,   109,   134,   264,   135,   110,
     978      -1,   109,   348,   110,    -1,   111,   112,    -1,   111,   112,
     979     350,    -1,   350,    -1,   111,   134,   164,   135,   112,    -1,
     980     111,   134,   117,   135,   112,    -1,   350,   111,   134,   164,
     981     135,   112,    -1,   350,   111,   134,   117,   135,   112,    -1,
     982     352,    -1,   353,   312,    -1,   354,   312,    -1,   149,    -1,
     983     149,   227,    -1,   149,   351,    -1,   149,   227,   351,    -1,
     984     109,   352,   110,    -1,   355,    -1,   109,   352,   110,   355,
     985      -1,   109,   353,   110,   350,    -1,   109,   353,   110,    -1,
     986     109,   134,   264,   135,   110,    -1,   109,   352,   110,   109,
     987     134,   264,   135,   110,    -1,   109,   354,   110,    -1,   356,
     988      -1,   356,   350,    -1,   350,    -1,   111,   112,    -1,   111,
     989     134,   227,   117,   135,   112,    -1,   111,   134,   227,   135,
     990     112,    -1,   111,   134,   227,   164,   135,   112,    -1,   111,
     991     134,     7,   226,   164,   135,   112,    -1,   111,   134,   227,
     992       7,   164,   135,   112,    -1,   358,    -1,   359,   312,    -1,
     993     360,   312,    -1,   149,    -1,   149,   227,    -1,   149,   357,
     994      -1,   149,   227,   357,    -1,   109,   358,   110,    -1,   349,
     995      -1,   109,   358,   110,   349,    -1,   109,   359,   110,   350,
     996      -1,   109,   359,   110,    -1,   109,   358,   110,   109,   134,
     997     264,   135,   110,    -1,   109,   360,   110,    -1,   362,    -1,
     998     370,    -1,   227,   370,    -1,   363,    -1,   364,    -1,   149,
     999     225,    -1,   227,   149,   225,    -1,   149,   371,    -1,   227,
     1000     149,   371,    -1,   149,   361,    -1,   227,   149,   361,    -1,
     1001     111,   112,   225,    -1,   365,   225,    -1,   111,   112,   350,
     1002     225,    -1,   365,   350,   225,    -1,   350,   225,    -1,   111,
     1003     112,   363,    -1,   365,   363,    -1,   111,   112,   350,   363,
     1004      -1,   365,   350,   363,    -1,   350,   363,    -1,   111,   134,
     1005     227,   117,   135,   112,    -1,   111,   134,   227,   164,   135,
     1006     112,    -1,   111,   134,   231,   164,   135,   112,    -1,   111,
     1007     134,   231,   227,   164,   135,   112,    -1,   370,    -1,   227,
     1008     370,    -1,   367,    -1,   368,    -1,   369,    -1,   149,   225,
     1009      -1,   227,   149,   225,    -1,   149,   371,    -1,   227,   149,
     1010     371,    -1,   149,   366,    -1,   227,   149,   366,    -1,   111,
     1011     112,   225,    -1,   111,   112,   350,   225,    -1,   350,   225,
     1012      -1,   111,   112,   368,    -1,   111,   112,   350,   368,    -1,
     1013     350,   368,    -1,   111,   134,   263,   135,   112,    -1,   111,
     1014     112,   109,   260,   110,    -1,   370,   109,   134,   260,   135,
     1015     110,    -1,   218,   109,   134,   260,   135,   110,    -1,    -1,
     1016     116,    -1,    -1,   131,   164,    -1
    10141017};
    10151018
     
    10171020static const yytype_uint16 yyrline[] =
    10181021{
    1019        0,   292,   292,   298,   307,   308,   309,   313,   314,   315,
    1020      319,   320,   324,   325,   329,   330,   334,   335,   341,   343,
    1021      345,   347,   352,   353,   359,   363,   365,   366,   368,   369,
    1022      371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
    1023      404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
    1024      431,   436,   439,   441,   443,   445,   447,   449,   451,   453,
    1025      455,   457,   459,   466,   467,   469,   473,   474,   475,   476,
    1026      480,   481,   483,   488,   489,   491,   493,   498,   499,   501,
    1027      506,   507,   509,   514,   515,   517,   519,   521,   526,   527,
    1028      529,   534,   535,   540,   541,   546,   547,   552,   553,   558,
    1029      559,   564,   565,   568,   570,   575,   580,   581,   583,   585,
    1030      591,   592,   598,   600,   602,   604,   609,   610,   615,   616,
    1031      617,   618,   619,   620,   621,   622,   623,   624,   628,   629,
    1032      636,   637,   643,   644,   645,   646,   647,   648,   649,   650,
    1033      651,   661,   668,   670,   680,   681,   686,   688,   694,   696,
    1034      700,   701,   706,   711,   714,   716,   718,   728,   730,   741,
    1035      742,   744,   748,   750,   754,   755,   760,   761,   765,   770,
    1036      771,   775,   777,   783,   784,   788,   790,   792,   794,   800,
    1037      801,   805,   807,   812,   814,   816,   821,   823,   828,   830,
    1038      834,   837,   841,   844,   848,   850,   854,   856,   863,   865,
    1039      867,   876,   878,   880,   882,   884,   889,   891,   893,   895,
    1040      900,   913,   914,   919,   921,   926,   930,   932,   934,   936,
    1041      938,   944,   945,   951,   952,   956,   957,   962,   964,   970,
    1042      971,   973,   978,   980,   987,   989,   993,   994,   999,  1001,
    1043     1005,  1006,  1010,  1012,  1016,  1017,  1021,  1022,  1026,  1027,
    1044     1042,  1043,  1044,  1045,  1046,  1050,  1055,  1062,  1072,  1077,
    1045     1082,  1090,  1095,  1100,  1105,  1110,  1118,  1140,  1145,  1152,
    1046     1154,  1161,  1166,  1171,  1182,  1187,  1192,  1197,  1202,  1211,
    1047     1216,  1224,  1225,  1226,  1227,  1233,  1238,  1246,  1247,  1248,
    1048     1249,  1253,  1254,  1255,  1256,  1261,  1262,  1271,  1272,  1277,
    1049     1278,  1283,  1285,  1287,  1289,  1291,  1294,  1293,  1305,  1306,
    1050     1308,  1318,  1319,  1324,  1328,  1330,  1332,  1334,  1336,  1338,
    1051     1340,  1342,  1347,  1349,  1351,  1353,  1355,  1357,  1359,  1361,
    1052     1363,  1365,  1367,  1369,  1371,  1377,  1378,  1380,  1382,  1384,
    1053     1389,  1390,  1396,  1397,  1399,  1401,  1406,  1408,  1410,  1412,
    1054     1417,  1418,  1420,  1422,  1427,  1428,  1430,  1435,  1436,  1438,
    1055     1440,  1445,  1447,  1449,  1454,  1455,  1459,  1461,  1467,  1466,
    1056     1470,  1472,  1477,  1479,  1485,  1486,  1491,  1492,  1494,  1495,
    1057     1504,  1505,  1507,  1509,  1514,  1516,  1522,  1523,  1525,  1528,
    1058     1531,  1536,  1537,  1542,  1547,  1551,  1553,  1559,  1558,  1565,
    1059     1567,  1573,  1574,  1582,  1583,  1587,  1588,  1589,  1591,  1593,
    1060     1600,  1601,  1603,  1605,  1610,  1611,  1617,  1618,  1622,  1623,
    1061     1628,  1629,  1630,  1632,  1640,  1641,  1643,  1646,  1648,  1652,
    1062     1653,  1654,  1656,  1658,  1662,  1667,  1675,  1676,  1685,  1687,
    1063     1692,  1693,  1694,  1698,  1699,  1700,  1704,  1705,  1706,  1710,
    1064     1711,  1712,  1717,  1718,  1719,  1720,  1726,  1727,  1729,  1734,
    1065     1735,  1740,  1741,  1742,  1743,  1744,  1759,  1760,  1765,  1766,
    1066     1774,  1776,  1778,  1781,  1783,  1785,  1808,  1809,  1811,  1813,
    1067     1818,  1819,  1821,  1826,  1831,  1832,  1838,  1837,  1841,  1845,
    1068     1847,  1849,  1855,  1856,  1861,  1866,  1868,  1873,  1875,  1876,
    1069     1878,  1883,  1885,  1887,  1892,  1894,  1899,  1904,  1912,  1918,
    1070     1917,  1931,  1932,  1937,  1938,  1942,  1947,  1952,  1960,  1965,
    1071     1976,  1977,  1988,  1989,  1995,  1996,  2000,  2001,  2002,  2005,
    1072     2004,  2015,  2024,  2030,  2036,  2045,  2051,  2057,  2063,  2069,
    1073     2077,  2083,  2091,  2097,  2106,  2107,  2108,  2112,  2116,  2118,
    1074     2123,  2124,  2128,  2129,  2134,  2140,  2141,  2144,  2146,  2147,
    1075     2151,  2152,  2153,  2154,  2188,  2190,  2191,  2193,  2198,  2203,
    1076     2208,  2210,  2212,  2217,  2219,  2221,  2223,  2228,  2230,  2239,
    1077     2241,  2242,  2247,  2249,  2251,  2256,  2258,  2260,  2265,  2267,
    1078     2269,  2278,  2279,  2280,  2284,  2286,  2288,  2293,  2295,  2297,
    1079     2302,  2304,  2306,  2321,  2323,  2324,  2326,  2331,  2332,  2337,
    1080     2339,  2341,  2346,  2348,  2350,  2352,  2357,  2359,  2361,  2371,
    1081     2373,  2374,  2376,  2381,  2383,  2385,  2390,  2392,  2394,  2396,
    1082     2401,  2403,  2405,  2436,  2438,  2439,  2441,  2446,  2451,  2459,
    1083     2461,  2463,  2468,  2470,  2475,  2477,  2491,  2492,  2494,  2499,
    1084     2501,  2503,  2505,  2507,  2512,  2513,  2515,  2517,  2522,  2524,
    1085     2526,  2532,  2534,  2536,  2540,  2542,  2544,  2546,  2560,  2561,
    1086     2563,  2568,  2570,  2572,  2574,  2576,  2581,  2582,  2584,  2586,
    1087     2591,  2593,  2595,  2601,  2602,  2604,  2613,  2616,  2618,  2621,
    1088     2623,  2625,  2638,  2639,  2641,  2646,  2648,  2650,  2652,  2654,
    1089     2659,  2660,  2662,  2664,  2669,  2671,  2679,  2680,  2681,  2686,
    1090     2687,  2691,  2693,  2695,  2697,  2699,  2701,  2708,  2710,  2712,
    1091     2714,  2716,  2718,  2720,  2722,  2724,  2726,  2731,  2733,  2735,
    1092     2740,  2766,  2767,  2769,  2773,  2774,  2778,  2780,  2782,  2784,
    1093     2786,  2788,  2795,  2797,  2799,  2801,  2803,  2805,  2810,  2815,
    1094     2817,  2819,  2837,  2839,  2844,  2845
     1022       0,   299,   299,   305,   314,   315,   316,   320,   321,   322,
     1023     326,   327,   331,   332,   336,   337,   341,   342,   353,   355,
     1024     357,   359,   364,   365,   371,   375,   377,   378,   380,   381,
     1025     383,   385,   387,   396,   397,   403,   404,   408,   409,   413,
     1026     417,   419,   421,   423,   428,   431,   433,   435,   440,   453,
     1027     455,   457,   459,   461,   463,   465,   467,   469,   471,   473,
     1028     480,   481,   487,   488,   489,   490,   494,   495,   497,   502,
     1029     503,   505,   507,   512,   513,   515,   520,   521,   523,   528,
     1030     529,   531,   533,   535,   540,   541,   543,   548,   549,   554,
     1031     555,   560,   561,   566,   567,   572,   573,   578,   579,   582,
     1032     584,   589,   594,   595,   597,   603,   604,   608,   609,   610,
     1033     611,   612,   613,   614,   615,   616,   617,   618,   624,   626,
     1034     628,   630,   635,   636,   641,   642,   648,   649,   655,   656,
     1035     657,   658,   659,   660,   661,   662,   663,   673,   680,   682,
     1036     692,   693,   698,   700,   706,   708,   712,   713,   718,   723,
     1037     727,   730,   733,   743,   746,   758,   759,   761,   765,   767,
     1038     771,   772,   777,   778,   782,   787,   788,   792,   794,   800,
     1039     801,   805,   807,   809,   811,   817,   818,   822,   824,   829,
     1040     831,   833,   838,   840,   845,   847,   851,   854,   858,   861,
     1041     865,   867,   871,   873,   880,   882,   884,   893,   895,   897,
     1042     899,   901,   906,   908,   910,   912,   917,   930,   931,   936,
     1043     938,   943,   947,   949,   951,   953,   955,   961,   962,   968,
     1044     969,   973,   974,   979,   981,   987,   988,   990,   995,   997,
     1045    1004,  1006,  1010,  1011,  1016,  1018,  1022,  1023,  1027,  1029,
     1046    1033,  1034,  1038,  1039,  1043,  1044,  1059,  1060,  1061,  1062,
     1047    1063,  1067,  1072,  1079,  1089,  1094,  1099,  1107,  1112,  1117,
     1048    1122,  1127,  1135,  1157,  1162,  1169,  1171,  1178,  1183,  1188,
     1049    1199,  1204,  1209,  1214,  1219,  1228,  1233,  1241,  1242,  1243,
     1050    1244,  1250,  1255,  1263,  1264,  1265,  1266,  1270,  1271,  1272,
     1051    1273,  1278,  1279,  1288,  1289,  1294,  1295,  1300,  1302,  1304,
     1052    1306,  1308,  1311,  1310,  1322,  1323,  1325,  1335,  1336,  1341,
     1053    1345,  1347,  1349,  1351,  1353,  1355,  1357,  1359,  1364,  1366,
     1054    1368,  1370,  1372,  1374,  1376,  1378,  1380,  1382,  1384,  1386,
     1055    1388,  1394,  1395,  1397,  1399,  1401,  1406,  1407,  1413,  1414,
     1056    1416,  1418,  1423,  1425,  1427,  1429,  1434,  1435,  1437,  1439,
     1057    1444,  1445,  1447,  1452,  1453,  1455,  1457,  1462,  1464,  1466,
     1058    1471,  1472,  1476,  1478,  1484,  1483,  1487,  1489,  1494,  1496,
     1059    1502,  1503,  1508,  1509,  1511,  1512,  1521,  1522,  1524,  1526,
     1060    1531,  1533,  1539,  1540,  1542,  1545,  1548,  1553,  1554,  1559,
     1061    1564,  1568,  1570,  1576,  1575,  1582,  1584,  1590,  1591,  1599,
     1062    1600,  1604,  1605,  1606,  1608,  1610,  1617,  1618,  1620,  1622,
     1063    1627,  1628,  1634,  1635,  1639,  1640,  1645,  1646,  1647,  1649,
     1064    1657,  1658,  1660,  1663,  1665,  1669,  1670,  1671,  1673,  1675,
     1065    1679,  1684,  1692,  1693,  1702,  1704,  1709,  1710,  1711,  1715,
     1066    1716,  1717,  1721,  1722,  1723,  1727,  1728,  1729,  1734,  1735,
     1067    1736,  1737,  1743,  1744,  1746,  1751,  1752,  1757,  1758,  1759,
     1068    1760,  1761,  1776,  1777,  1782,  1783,  1789,  1791,  1794,  1796,
     1069    1798,  1821,  1822,  1824,  1826,  1831,  1832,  1834,  1839,  1844,
     1070    1845,  1851,  1850,  1854,  1858,  1860,  1862,  1868,  1869,  1874,
     1071    1879,  1881,  1886,  1888,  1889,  1891,  1896,  1898,  1900,  1905,
     1072    1907,  1912,  1917,  1925,  1931,  1930,  1944,  1945,  1950,  1951,
     1073    1955,  1960,  1965,  1973,  1978,  1989,  1990,  2001,  2002,  2008,
     1074    2009,  2013,  2014,  2015,  2018,  2017,  2028,  2037,  2043,  2049,
     1075    2058,  2064,  2070,  2076,  2082,  2090,  2096,  2104,  2110,  2119,
     1076    2120,  2121,  2125,  2129,  2131,  2136,  2137,  2141,  2142,  2147,
     1077    2153,  2154,  2157,  2159,  2160,  2164,  2165,  2166,  2167,  2201,
     1078    2203,  2204,  2206,  2211,  2216,  2221,  2223,  2225,  2230,  2232,
     1079    2234,  2236,  2241,  2243,  2252,  2254,  2255,  2260,  2262,  2264,
     1080    2269,  2271,  2273,  2278,  2280,  2282,  2291,  2292,  2293,  2297,
     1081    2299,  2301,  2306,  2308,  2310,  2315,  2317,  2319,  2334,  2336,
     1082    2337,  2339,  2344,  2345,  2350,  2352,  2354,  2359,  2361,  2363,
     1083    2365,  2370,  2372,  2374,  2384,  2386,  2387,  2389,  2394,  2396,
     1084    2398,  2403,  2405,  2407,  2409,  2414,  2416,  2418,  2449,  2451,
     1085    2452,  2454,  2459,  2464,  2472,  2474,  2476,  2481,  2483,  2488,
     1086    2490,  2504,  2505,  2507,  2512,  2514,  2516,  2518,  2520,  2525,
     1087    2526,  2528,  2530,  2535,  2537,  2539,  2545,  2547,  2549,  2553,
     1088    2555,  2557,  2559,  2573,  2574,  2576,  2581,  2583,  2585,  2587,
     1089    2589,  2594,  2595,  2597,  2599,  2604,  2606,  2608,  2614,  2615,
     1090    2617,  2626,  2629,  2631,  2634,  2636,  2638,  2651,  2652,  2654,
     1091    2659,  2661,  2663,  2665,  2667,  2672,  2673,  2675,  2677,  2682,
     1092    2684,  2692,  2693,  2694,  2699,  2700,  2704,  2706,  2708,  2710,
     1093    2712,  2714,  2721,  2723,  2725,  2727,  2729,  2731,  2733,  2735,
     1094    2737,  2739,  2744,  2746,  2748,  2753,  2779,  2780,  2782,  2786,
     1095    2787,  2791,  2793,  2795,  2797,  2799,  2801,  2808,  2810,  2812,
     1096    2814,  2816,  2818,  2823,  2828,  2830,  2832,  2850,  2852,  2857,
     1097    2858
    10951098};
    10961099#endif
     
    11181121  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    11191122  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1120   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'*'",
    1121   "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    1122   "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
     1123  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'",
     1124  "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'",
     1125  "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
    11231126  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    11241127  "string_literal_list", "primary_expression", "postfix_expression",
     
    11301133  "logical_AND_expression", "logical_OR_expression",
    11311134  "conditional_expression", "constant_expression", "assignment_expression",
    1132   "assignment_expression_opt", "tuple", "tuple_expression_list",
    1133   "assignment_operator", "comma_expression", "comma_expression_opt",
     1135  "assignment_expression_opt", "assignment_operator", "tuple",
     1136  "tuple_expression_list", "comma_expression", "comma_expression_opt",
    11341137  "statement", "labeled_statement", "compound_statement",
    11351138  "block_item_list", "block_item", "statement_list",
     
    12251228     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12261229     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
    1227       41,    91,    93,    46,   123,   125,    44,    58,    42,    38,
    1228       43,    45,    33,   126,    47,    37,    60,    62,    94,   124,
    1229       63,    61,    59
     1230      41,    91,    93,    46,   123,   125,    44,    42,    38,    43,
     1231      45,    33,   126,    47,    37,    60,    62,    94,   124,    63,
     1232      58,    61,    59
    12301233};
    12311234# endif
     
    12371240     138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
    12381241     142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
    1239      143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
    1240      146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
     1242     143,   143,   143,   144,   144,   145,   145,   146,   146,   147,
     1243     147,   147,   147,   147,   148,   148,   148,   148,   148,   148,
    12411244     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
    1242      148,   148,   148,   149,   149,   149,   150,   150,   150,   150,
    1243      151,   151,   151,   152,   152,   152,   152,   153,   153,   153,
    1244      154,   154,   154,   155,   155,   155,   155,   155,   156,   156,
    1245      156,   157,   157,   158,   158,   159,   159,   160,   160,   161,
    1246      161,   162,   162,   162,   162,   163,   164,   164,   164,   164,
    1247      165,   165,   166,   166,   166,   166,   167,   167,   168,   168,
    1248      168,   168,   168,   168,   168,   168,   168,   168,   169,   169,
    1249      170,   170,   171,   171,   171,   171,   171,   171,   171,   171,
    1250      171,   172,   173,   173,   174,   174,   175,   175,   175,   175,
    1251      176,   176,   177,   178,   178,   178,   178,   178,   178,   179,
    1252      179,   179,   180,   180,   181,   181,   182,   182,   183,   184,
    1253      184,   185,   185,   186,   186,   187,   187,   187,   187,   188,
    1254      188,   189,   189,   190,   190,   190,   191,   191,   192,   192,
    1255      192,   192,   192,   192,   192,   192,   192,   192,   193,   193,
    1256      193,   194,   194,   194,   194,   194,   195,   195,   195,   195,
    1257      196,   197,   197,   197,   197,   197,   198,   198,   198,   198,
    1258      198,   199,   199,   200,   200,   201,   201,   202,   202,   203,
    1259      203,   203,   204,   204,   205,   205,   206,   206,   207,   207,
    1260      208,   208,   209,   209,   210,   210,   211,   211,   212,   212,
    1261      213,   213,   213,   213,   213,   214,   214,   214,   215,   215,
    1262      215,   216,   216,   216,   216,   216,   217,   217,   217,   218,
    1263      218,   219,   219,   219,   220,   220,   220,   220,   220,   221,
    1264      221,   222,   222,   222,   222,   223,   223,   224,   224,   224,
    1265      224,   225,   225,   225,   225,   226,   226,   227,   227,   228,
    1266      228,   229,   229,   229,   229,   229,   230,   229,   231,   231,
    1267      231,   232,   232,   233,   234,   234,   234,   234,   234,   234,
    1268      234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
    1269      235,   235,   235,   235,   235,   236,   236,   236,   236,   236,
    1270      237,   237,   238,   238,   238,   238,   239,   239,   239,   239,
    1271      240,   240,   240,   240,   241,   241,   241,   242,   242,   242,
    1272      242,   243,   243,   243,   244,   244,   245,   245,   246,   245,
    1273      245,   245,   247,   247,   248,   248,   249,   249,   249,   249,
    1274      250,   250,   250,   250,   251,   251,   252,   252,   252,   252,
    1275      252,   253,   253,   254,   255,   256,   256,   257,   256,   258,
    1276      258,   259,   259,   260,   260,   261,   261,   261,   261,   261,
    1277      262,   262,   262,   262,   263,   263,   264,   264,   265,   265,
    1278      266,   266,   266,   266,   267,   267,   267,   267,   267,   268,
    1279      268,   268,   268,   268,   269,   269,   270,   270,   271,   271,
    1280      272,   272,   272,   273,   273,   273,   274,   274,   274,   275,
    1281      275,   275,   276,   276,   276,   276,   277,   277,   277,   278,
    1282      278,   279,   279,   279,   279,   279,   280,   280,   281,   281,
    1283      282,   282,   282,   282,   282,   282,   283,   283,   283,   283,
    1284      284,   284,   284,   285,   286,   286,   288,   287,   287,   289,
    1285      289,   289,   290,   290,   291,   291,   291,   292,   292,   292,
    1286      292,   293,   293,   293,   294,   294,   295,   295,   296,   297,
    1287      296,   298,   298,   299,   299,   300,   300,   300,   301,   301,
    1288      302,   302,   303,   303,   304,   304,   305,   305,   305,   306,
    1289      305,   305,   307,   307,   307,   308,   308,   308,   308,   308,
    1290      308,   308,   308,   308,   309,   309,   309,   310,   311,   311,
    1291      312,   312,   313,   313,   314,   315,   315,   316,   316,   316,
    1292      317,   317,   317,   317,   318,   318,   318,   318,   319,   319,
    1293      320,   320,   320,   321,   321,   321,   321,   322,   322,   323,
    1294      323,   323,   324,   324,   324,   325,   325,   325,   326,   326,
    1295      326,   327,   327,   327,   328,   328,   328,   329,   329,   329,
    1296      330,   330,   330,   331,   331,   331,   331,   332,   332,   333,
    1297      333,   333,   334,   334,   334,   334,   335,   335,   335,   336,
    1298      336,   336,   336,   337,   337,   337,   338,   338,   338,   338,
    1299      339,   339,   339,   340,   340,   340,   340,   341,   341,   342,
    1300      342,   342,   343,   343,   344,   344,   345,   345,   345,   346,
    1301      346,   346,   346,   346,   347,   347,   347,   347,   348,   348,
    1302      348,   349,   349,   349,   350,   350,   350,   350,   351,   351,
    1303      351,   352,   352,   352,   352,   352,   353,   353,   353,   353,
    1304      354,   354,   354,   355,   355,   355,   356,   356,   356,   356,
    1305      356,   356,   357,   357,   357,   358,   358,   358,   358,   358,
    1306      359,   359,   359,   359,   360,   360,   361,   361,   361,   362,
    1307      362,   363,   363,   363,   363,   363,   363,   364,   364,   364,
    1308      364,   364,   364,   364,   364,   364,   364,   365,   365,   365,
    1309      365,   366,   366,   366,   367,   367,   368,   368,   368,   368,
    1310      368,   368,   369,   369,   369,   369,   369,   369,   370,   371,
    1311      371,   371,   372,   372,   373,   373
     1245     149,   149,   150,   150,   150,   150,   151,   151,   151,   152,
     1246     152,   152,   152,   153,   153,   153,   154,   154,   154,   155,
     1247     155,   155,   155,   155,   156,   156,   156,   157,   157,   158,
     1248     158,   159,   159,   160,   160,   161,   161,   162,   162,   162,
     1249     162,   163,   164,   164,   164,   165,   165,   166,   166,   166,
     1250     166,   166,   166,   166,   166,   166,   166,   166,   167,   167,
     1251     167,   167,   168,   168,   169,   169,   170,   170,   171,   171,
     1252     171,   171,   171,   171,   171,   171,   171,   172,   173,   173,
     1253     174,   174,   175,   175,   175,   175,   176,   176,   177,   178,
     1254     178,   178,   178,   178,   178,   179,   179,   179,   180,   180,
     1255     181,   181,   182,   182,   183,   184,   184,   185,   185,   186,
     1256     186,   187,   187,   187,   187,   188,   188,   189,   189,   190,
     1257     190,   190,   191,   191,   192,   192,   192,   192,   192,   192,
     1258     192,   192,   192,   192,   193,   193,   193,   194,   194,   194,
     1259     194,   194,   195,   195,   195,   195,   196,   197,   197,   197,
     1260     197,   197,   198,   198,   198,   198,   198,   199,   199,   200,
     1261     200,   201,   201,   202,   202,   203,   203,   203,   204,   204,
     1262     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
     1263     210,   210,   211,   211,   212,   212,   213,   213,   213,   213,
     1264     213,   214,   214,   214,   215,   215,   215,   216,   216,   216,
     1265     216,   216,   217,   217,   217,   218,   218,   219,   219,   219,
     1266     220,   220,   220,   220,   220,   221,   221,   222,   222,   222,
     1267     222,   223,   223,   224,   224,   224,   224,   225,   225,   225,
     1268     225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
     1269     229,   229,   230,   229,   231,   231,   231,   232,   232,   233,
     1270     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
     1271     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
     1272     235,   236,   236,   236,   236,   236,   237,   237,   238,   238,
     1273     238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
     1274     241,   241,   241,   242,   242,   242,   242,   243,   243,   243,
     1275     244,   244,   245,   245,   246,   245,   245,   245,   247,   247,
     1276     248,   248,   249,   249,   249,   249,   250,   250,   250,   250,
     1277     251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
     1278     255,   256,   256,   257,   256,   258,   258,   259,   259,   260,
     1279     260,   261,   261,   261,   261,   261,   262,   262,   262,   262,
     1280     263,   263,   264,   264,   265,   265,   266,   266,   266,   266,
     1281     267,   267,   267,   267,   267,   268,   268,   268,   268,   268,
     1282     269,   269,   270,   270,   271,   271,   272,   272,   272,   273,
     1283     273,   273,   274,   274,   274,   275,   275,   275,   276,   276,
     1284     276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
     1285     279,   279,   280,   280,   281,   281,   282,   282,   282,   282,
     1286     282,   283,   283,   283,   283,   284,   284,   284,   285,   286,
     1287     286,   288,   287,   287,   289,   289,   289,   290,   290,   291,
     1288     291,   291,   292,   292,   292,   292,   293,   293,   293,   294,
     1289     294,   295,   295,   296,   297,   296,   298,   298,   299,   299,
     1290     300,   300,   300,   301,   301,   302,   302,   303,   303,   304,
     1291     304,   305,   305,   305,   306,   305,   305,   307,   307,   307,
     1292     308,   308,   308,   308,   308,   308,   308,   308,   308,   309,
     1293     309,   309,   310,   311,   311,   312,   312,   313,   313,   314,
     1294     315,   315,   316,   316,   316,   317,   317,   317,   317,   318,
     1295     318,   318,   318,   319,   319,   320,   320,   320,   321,   321,
     1296     321,   321,   322,   322,   323,   323,   323,   324,   324,   324,
     1297     325,   325,   325,   326,   326,   326,   327,   327,   327,   328,
     1298     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
     1299     331,   331,   332,   332,   333,   333,   333,   334,   334,   334,
     1300     334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
     1301     337,   338,   338,   338,   338,   339,   339,   339,   340,   340,
     1302     340,   340,   341,   341,   342,   342,   342,   343,   343,   344,
     1303     344,   345,   345,   345,   346,   346,   346,   346,   346,   347,
     1304     347,   347,   347,   348,   348,   348,   349,   349,   349,   350,
     1305     350,   350,   350,   351,   351,   351,   352,   352,   352,   352,
     1306     352,   353,   353,   353,   353,   354,   354,   354,   355,   355,
     1307     355,   356,   356,   356,   356,   356,   356,   357,   357,   357,
     1308     358,   358,   358,   358,   358,   359,   359,   359,   359,   360,
     1309     360,   361,   361,   361,   362,   362,   363,   363,   363,   363,
     1310     363,   363,   364,   364,   364,   364,   364,   364,   364,   364,
     1311     364,   364,   365,   365,   365,   365,   366,   366,   366,   367,
     1312     367,   368,   368,   368,   368,   368,   368,   369,   369,   369,
     1313     369,   369,   369,   370,   371,   371,   371,   372,   372,   373,
     1314     373
    13121315};
    13131316
     
    13181321       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    13191322       3,     3,     1,     6,     4,     3,     7,     3,     7,     2,
    1320        2,     7,     4,     1,     3,     0,     1,     3,     7,     9,
    1321        1,     3,     1,     3,     7,     3,     7,     1,     1,     1,
    1322        2,     2,     2,     2,     2,     2,     4,     6,     1,     4,
    1323        4,     2,     4,     1,     1,     1,     1,     1,     1,     1,
    1324        1,     4,     4,     1,     3,     3,     3,     1,     3,     3,
    1325        1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
    1326        3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
    1327        3,     1,     5,     4,     5,     1,     1,     3,     3,     2,
    1328        0,     1,     2,     5,     6,     7,     1,     3,     1,     1,
    1329        1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
    1330        0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1331        6,     4,     2,     7,     1,     3,     1,     2,     1,     2,
    1332        1,     2,     2,     5,     7,     5,     9,     5,     9,     1,
    1333        3,     1,     1,     3,     3,     2,     1,     2,     2,     0,
    1334        1,     2,     3,     0,     1,     2,     3,     3,     4,     0,
    1335        1,     1,     2,     5,     7,     6,     6,     4,     3,     4,
    1336        2,     3,     2,     3,     3,     3,     3,     5,     3,     3,
    1337        4,     1,     5,     6,     5,     6,     9,    10,     9,    10,
    1338        2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
    1339       14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
    1340        1,     3,     1,     3,     1,     1,     1,     3,     1,     1,
    1341        1,     3,     0,     1,     3,     4,     1,     3,     1,     1,
    1342        3,     3,     3,     3,     3,     2,     3,     6,     3,     3,
    1343        4,     1,     2,     2,     3,     5,     8,     7,     7,     5,
    1344        9,     2,     2,     5,     3,     5,     4,     3,     4,     4,
    1345        7,     3,     3,     3,     3,     4,     6,     1,     1,     1,
    1346        1,     1,     1,     1,     1,     0,     1,     1,     2,     1,
    1347        1,     1,     1,     1,     1,     1,     0,     5,     1,     2,
    1348        3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
     1323       2,     7,     4,     1,     3,     0,     1,     1,     3,     1,
     1324       3,     7,     3,     7,     1,     1,     1,     2,     2,     2,
     1325       2,     2,     2,     4,     2,     4,     6,     1,     4,     4,
     1326       1,     1,     1,     1,     1,     1,     1,     4,     4,     1,
     1327       3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
     1328       3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
     1329       3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
     1330       5,     1,     1,     3,     2,     0,     1,     1,     1,     1,
     1331       1,     1,     1,     1,     1,     1,     1,     1,     2,     5,
     1332       6,     7,     1,     3,     1,     3,     0,     1,     1,     1,
     1333       1,     1,     1,     1,     1,     1,     6,     4,     2,     7,
     1334       1,     3,     1,     2,     1,     2,     1,     2,     2,     5,
     1335       7,     5,     9,     5,     9,     1,     3,     1,     1,     3,
     1336       3,     2,     1,     2,     2,     0,     1,     2,     3,     0,
     1337       1,     2,     3,     3,     4,     0,     1,     1,     2,     5,
     1338       7,     6,     6,     4,     3,     4,     2,     3,     2,     3,
     1339       3,     3,     3,     5,     3,     3,     4,     1,     5,     6,
     1340       5,     6,     9,    10,     9,    10,     2,     1,     2,     2,
     1341       2,     1,     6,     8,    10,    12,    14,     0,     1,     0,
     1342       1,     1,     3,     4,     7,     0,     1,     3,     1,     3,
     1343       1,     1,     1,     3,     1,     1,     1,     3,     0,     1,
     1344       3,     4,     1,     3,     1,     1,     3,     3,     3,     3,
     1345       3,     2,     3,     6,     3,     3,     4,     1,     2,     2,
     1346       3,     5,     8,     7,     7,     5,     9,     2,     2,     5,
     1347       3,     5,     4,     3,     4,     4,     7,     3,     3,     3,
     1348       3,     4,     6,     1,     1,     1,     1,     1,     1,     1,
     1349       1,     0,     1,     1,     2,     1,     1,     1,     1,     1,
     1350       1,     1,     0,     5,     1,     2,     3,     1,     2,     1,
    13491351       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1350        1,     1,     1,     1,     1,     1,     2,     2,     3,     3,
    1351        1,     3,     1,     2,     2,     2,     4,     4,     4,     4,
    1352        1,     2,     2,     3,     1,     2,     2,     1,     2,     2,
    1353        3,     1,     2,     2,     1,     1,     4,     2,     0,     6,
    1354        7,     2,     2,     2,     0,     2,     2,     3,     2,     3,
    1355        1,     2,     3,     2,     2,     4,     0,     1,     2,     2,
    1356        1,     0,     1,     2,     2,     5,     2,     0,     7,     2,
    1357        4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
    1358        1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
    1359        1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
    1360        1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
    13611352       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1362        1,     2,     1,     1,     1,     2,     0,     2,     2,     1,
    1363        4,     0,     1,     2,     3,     4,     2,     2,     1,     2,
    1364        1,     2,     5,     5,     7,     6,     1,     2,     2,     3,
    1365        1,     2,     2,     4,     2,     4,     0,     4,     2,     1,
    1366        1,     1,     0,     2,     5,     5,    13,     1,     1,     3,
    1367        3,     2,     3,     3,     2,     4,     1,     6,     9,     0,
    1368       11,     1,     3,     3,     3,     1,     1,     5,     2,     5,
    1369        0,     1,     1,     3,     0,     1,     1,     1,     1,     0,
    1370        6,     2,     1,     2,     4,     2,     3,     3,     3,     4,
    1371        5,     5,     5,     6,     1,     1,     1,     3,     0,     5,
    1372        0,     1,     1,     2,     6,     1,     3,     0,     1,     4,
    1373        1,     1,     1,     1,     2,     1,     2,     2,     1,     3,
    1374        2,     3,     3,     2,     4,     4,     3,     8,     3,     2,
    1375        1,     2,     6,     8,     3,     2,     3,     3,     4,     4,
    1376        3,     1,     1,     1,     4,     6,     3,     2,     3,     3,
    1377        4,     4,     3,     2,     1,     2,     2,     1,     3,     2,
    1378        3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
    1379        1,     2,     2,     2,     3,     3,     2,     4,     4,     3,
    1380        6,     8,     3,     2,     1,     2,     2,     1,     1,     2,
    1381        3,     3,     2,     4,     6,     8,     1,     2,     2,     1,
    1382        2,     2,     3,     3,     1,     4,     4,     3,     5,     8,
    1383        3,     2,     3,     1,     5,     5,     6,     6,     1,     2,
    1384        2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
    1385        5,     8,     3,     1,     2,     1,     2,     6,     5,     6,
    1386        7,     7,     1,     2,     2,     1,     2,     2,     3,     3,
    1387        1,     4,     4,     3,     8,     3,     1,     1,     2,     1,
    1388        1,     2,     3,     2,     3,     2,     3,     3,     2,     4,
    1389        3,     2,     3,     2,     4,     3,     2,     6,     6,     6,
    1390        7,     1,     2,     1,     1,     1,     2,     3,     2,     3,
    1391        2,     3,     3,     4,     2,     3,     4,     2,     5,     5,
    1392        6,     6,     0,     1,     0,     2
     1353       1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
     1354       2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
     1355       1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
     1356       1,     1,     4,     2,     0,     6,     7,     2,     2,     2,
     1357       0,     2,     2,     3,     2,     3,     1,     2,     3,     2,
     1358       2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
     1359       2,     5,     2,     0,     7,     2,     4,     0,     2,     0,
     1360       1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
     1361       1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
     1362       1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
     1363       3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
     1364       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
     1365       1,     2,     0,     2,     2,     1,     4,     0,     1,     2,
     1366       3,     4,     2,     2,     1,     2,     2,     5,     5,     7,
     1367       6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
     1368       4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
     1369       5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
     1370       4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
     1371       1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
     1372       1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
     1373       2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
     1374       1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
     1375       1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
     1376       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     1377       4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
     1378       2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
     1379       6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
     1380       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
     1381       3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
     1382       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
     1383       2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
     1384       8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1385       4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
     1386       5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
     1387       3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
     1388       1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
     1389       1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
     1390       3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
     1391       2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
     1392       3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
     1393       1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
     1394       3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
     1395       2
    13931396};
    13941397
     
    13981401static const yytype_uint16 yydefact[] =
    13991402{
    1400      295,   295,   316,   314,   317,   315,   318,   319,   301,   303,
    1401      302,     0,   304,   330,   322,   327,   325,   326,   324,   323,
    1402      328,   329,   334,   331,   332,   333,   550,   550,   550,     0,
    1403        0,     0,   295,   221,   305,   320,   321,     7,   361,     0,
    1404        8,    14,    15,    65,     0,     2,    63,    64,   568,     9,
    1405      295,   528,   526,   248,     3,   456,     3,   261,     0,     3,
    1406        3,     3,   249,     3,     0,     0,     0,   296,   297,   299,
    1407      295,   308,   311,   313,   342,   287,   335,   340,   288,   350,
    1408      289,   357,   354,   364,     0,     0,   365,   290,   476,   480,
    1409        3,     3,     0,     2,   522,   527,   532,   300,     0,     0,
    1410      550,   580,   550,     2,   591,   592,   593,   295,     0,   734,
    1411      735,     0,    12,     0,    13,   295,   271,   272,     0,   296,
    1412      291,   292,   293,   294,   529,   306,   394,   551,   552,   372,
    1413      373,    12,   447,   448,    11,   443,   446,     0,   506,   501,
    1414      492,   447,   448,     0,     0,   531,   222,     0,   295,     0,
    1415        0,     0,     0,     0,     0,     0,     0,   295,   295,     2,
    1416        0,   736,   296,   585,   597,   740,   733,   731,   738,     0,
    1417        0,     0,   255,     2,     0,   535,   441,   442,   440,     0,
    1418        0,     0,     0,   550,     0,   637,   638,     0,     0,   548,
    1419      544,   550,   565,   550,   550,   546,     2,   545,   550,   604,
    1420      550,   550,   607,     0,     0,     0,   295,   295,   314,   362,
    1421        2,   295,   262,   298,   309,   343,   355,   481,     0,     2,
    1422        0,   456,   263,   296,   336,   351,   358,   477,     0,     2,
    1423        0,   312,   337,   344,   345,     0,   352,   356,   359,   363,
    1424      448,   295,   374,   367,   371,     0,   396,   478,   482,     0,
    1425        0,     0,     1,   295,     2,   533,   579,   581,   295,     2,
    1426      744,   296,   747,   548,   548,     0,   296,     0,     0,   274,
    1427      550,   546,     2,   295,     0,     0,   295,   553,     2,   504,
    1428        2,   557,     0,     0,     0,     0,     0,     0,    18,    58,
    1429        4,     5,     6,    16,     0,     0,   295,     2,    66,    67,
    1430       68,    69,    48,    19,    49,    22,    47,    70,   295,     0,
    1431       73,    77,    80,    83,    88,    91,    93,    95,    97,    99,
    1432      101,   106,   498,   754,   454,   497,     0,   452,   453,     0,
    1433      569,   584,   587,   590,   596,   599,   602,   361,     0,     2,
    1434      742,     0,   295,   745,     2,    63,   295,     3,   428,     0,
    1435      436,   296,   295,   308,   335,   288,   350,   357,     3,     3,
    1436      410,   414,   424,   429,   476,   295,   430,   709,   710,   295,
    1437      431,   433,   295,     2,   586,   598,   732,     2,     2,   250,
    1438        2,   461,     0,   459,   458,   457,   142,     2,     2,   252,
    1439        2,     2,   251,     2,   282,     2,   283,     0,   281,     0,
    1440        0,     0,     0,     0,     0,     0,     0,     0,   570,   609,
    1441        0,   456,     2,   564,   573,   663,   566,   567,   536,   295,
    1442        2,   603,   612,   605,   606,     0,   277,   295,   295,   341,
    1443      296,     0,   296,     0,   295,   737,   741,   739,   537,   295,
    1444      548,   256,   264,   310,     0,     2,   538,   295,   502,   338,
    1445      339,   284,   353,   360,     0,   295,     0,   752,   401,     0,
    1446      479,   503,   253,   254,   523,   295,   438,     0,   295,   238,
    1447        0,     2,   240,     0,   296,     0,   258,     2,   259,   279,
    1448        0,     0,     2,   295,   548,   295,   489,   491,   490,     0,
    1449        0,   754,     0,   295,     0,   295,   493,   295,   563,   561,
    1450      562,   560,     0,   555,   558,     0,     0,   295,    55,   295,
    1451       70,    50,   295,    61,   295,   295,    53,    54,     2,   128,
    1452        0,     0,   450,     0,   449,   731,   112,   295,    17,     0,
    1453       29,    30,    35,     2,     0,    35,   118,   119,   120,   121,
    1454      122,   123,   124,   125,   126,   127,     0,     0,    51,    52,
     1403     291,   291,   312,   310,   313,   311,   314,   315,   297,   299,
     1404     298,     0,   300,   326,   318,   323,   321,   322,   320,   319,
     1405     324,   325,   330,   327,   328,   329,   545,   545,   545,     0,
     1406       0,     0,   291,   217,   301,   316,   317,     7,   357,     0,
     1407       8,    14,    15,     0,     2,    60,    61,   563,     9,   291,
     1408     523,   521,   244,     3,   452,     3,   257,     0,     3,     3,
     1409       3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
     1410     304,   307,   309,   338,   283,   331,   336,   284,   346,   285,
     1411     353,   350,   360,     0,     0,   361,   286,   471,   475,     3,
     1412       3,     0,     2,   517,   522,   527,   296,     0,     0,   545,
     1413     575,   545,     2,   586,   587,   588,   291,     0,   729,   730,
     1414       0,    12,     0,    13,   291,   267,   268,     0,   292,   287,
     1415     288,   289,   290,   524,   302,   390,   546,   547,   368,   369,
     1416      12,   443,   444,    11,   439,   442,     0,   501,   496,   487,
     1417     443,   444,     0,     0,   526,   218,     0,   291,     0,     0,
     1418       0,     0,     0,     0,     0,     0,   291,   291,     2,     0,
     1419     731,   292,   580,   592,   735,   728,   726,   733,     0,     0,
     1420       0,   251,     2,     0,   530,   437,   438,   436,     0,     0,
     1421       0,     0,   545,     0,   632,   633,     0,     0,   543,   539,
     1422     545,   560,   545,   545,   541,     2,   540,   545,   599,   545,
     1423     545,   602,     0,     0,     0,   291,   291,   310,   358,     2,
     1424     291,   258,   294,   305,   339,   351,   476,     0,     2,     0,
     1425     452,   259,   292,   332,   347,   354,   472,     0,     2,     0,
     1426     308,   333,   340,   341,     0,   348,   352,   355,   359,   444,
     1427     291,   370,   363,   367,     0,   392,   473,   477,     0,     0,
     1428       0,     1,   291,     2,   528,   574,   576,   291,     2,   739,
     1429     292,   742,   543,   543,     0,   292,     0,     0,   270,   545,
     1430     541,     2,   291,     0,     0,   291,   548,     2,   499,     2,
     1431     552,     0,     0,     0,     0,     0,     0,    18,    57,     4,
     1432       5,     6,    16,     0,     0,   291,     2,    62,    63,    64,
     1433      65,    45,    19,    46,    22,    44,    66,   291,     0,    69,
     1434      73,    76,    79,    84,    87,    89,    91,    93,    95,    97,
     1435     102,   493,   749,   450,   492,     0,   448,   449,     0,   564,
     1436     579,   582,   585,   591,   594,   597,   357,     0,     2,   737,
     1437       0,   291,   740,     2,    60,   291,     3,   424,     0,   432,
     1438     292,   291,   304,   331,   284,   346,   353,     3,     3,   406,
     1439     410,   420,   425,   471,   291,   426,   704,   705,   291,   427,
     1440     429,   291,     2,   581,   593,   727,     2,     2,   246,     2,
     1441     457,     0,   455,   454,   453,   138,     2,     2,   248,     2,
     1442       2,   247,     2,   278,     2,   279,     0,   277,     0,     0,
     1443       0,     0,     0,     0,     0,     0,     0,   565,   604,     0,
     1444     452,     2,   559,   568,   658,   561,   562,   531,   291,     2,
     1445     598,   607,   600,   601,     0,   273,   291,   291,   337,   292,
     1446       0,   292,     0,   291,   732,   736,   734,   532,   291,   543,
     1447     252,   260,   306,     0,     2,   533,   291,   497,   334,   335,
     1448     280,   349,   356,     0,   291,     0,   747,   397,     0,   474,
     1449     498,   249,   250,   518,   291,   434,     0,   291,   234,     0,
     1450       2,   236,     0,   292,     0,   254,     2,   255,   275,     0,
     1451       0,     2,   291,   543,   291,   484,   486,   485,     0,     0,
     1452     749,     0,   291,     0,   291,   488,   291,   558,   556,   557,
     1453     555,     0,   550,   553,     0,     0,   291,    52,   291,    66,
     1454      47,   291,    54,   291,   291,    50,    51,     2,   124,     0,
     1455       0,   446,     0,   445,   726,   118,   291,    17,     0,    29,
     1456      30,    35,     2,     0,    35,   108,   109,   110,   111,   112,
     1457     113,   114,   115,   116,   117,   107,     0,    48,    49,     0,
    14551458       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1456        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1457      109,     2,   649,   455,   646,   550,   550,   654,   483,   295,
    1458        2,   588,   589,     0,   600,   601,     0,     2,   743,   746,
    1459      112,   295,     0,     2,   711,   296,   715,   706,   707,   713,
    1460        0,     2,     2,   671,   550,   754,   620,   550,   550,   754,
    1461      550,   634,   550,   550,   685,   437,   668,   550,   550,   676,
    1462      683,   295,   432,   296,     0,     0,   295,   721,   296,   726,
    1463      754,   718,   295,   723,   754,   295,   295,   295,     0,   112,
    1464        0,    18,     5,     2,     0,    19,     0,   462,   752,     0,
    1465        0,   468,   242,     0,   295,     0,     0,     0,   548,   572,
    1466      576,   578,   608,   611,   615,   618,   571,   610,     0,   285,
    1467      661,     0,   295,   278,     0,     0,     0,     0,   276,     2,
    1468        0,   260,   539,   295,     0,     0,   295,     2,   366,   386,
    1469      375,     0,     0,   380,   374,   753,     0,     0,   399,     0,
    1470      296,     3,   417,     3,   421,   420,   594,     0,   534,   295,
    1471       63,     3,   295,   436,   296,     3,   430,   431,     2,     0,
    1472        0,     0,   488,   307,   295,   484,   486,     3,     2,     2,
    1473        0,   505,     3,     0,   557,   130,     0,     0,   223,     0,
    1474        0,     0,     2,     0,     0,    36,     0,     0,   112,   295,
    1475       20,     0,    21,     0,   695,   700,   451,   692,   550,   550,
    1476        0,   110,     3,     2,    27,     2,     0,    33,     0,     2,
    1477       25,     0,   107,   108,    74,    75,    76,    78,    79,    81,
    1478       82,    86,    87,    84,    85,    89,    90,    92,    94,    96,
    1479       98,   100,     0,     0,   755,   295,     0,     0,     0,   650,
    1480      651,   647,   648,   500,   499,   295,     0,   295,   717,   295,
    1481      722,   296,   295,   665,   295,   295,   708,   664,     2,   295,
    1482        0,     0,     0,     0,     0,     0,     0,     0,   686,     0,
    1483      672,   623,   639,   673,     2,   619,   626,   434,   621,   622,
    1484      435,     2,   633,   642,   635,   636,   669,   670,   684,   712,
    1485      716,   714,   754,   269,     2,   748,     2,   425,   720,   725,
    1486      426,     0,   404,     3,     3,     3,     3,   456,     3,     0,
    1487        2,   471,   467,   753,     0,   463,   470,     2,   466,   469,
    1488        0,   295,   243,   265,     3,   273,   275,     0,   456,     2,
    1489      574,   575,     2,   613,   614,     0,   662,   540,     3,   347,
    1490      346,   349,   348,   295,   541,     0,   542,   374,     0,     0,
    1491      295,   295,     0,     0,   695,   384,   387,   391,   550,   391,
    1492      390,   383,   376,   550,   378,   381,   295,   401,   395,   105,
    1493      402,   752,     0,     0,   439,   241,     0,     0,     3,     2,
    1494      671,   432,     0,   530,     0,   754,   492,     0,   295,   295,
    1495      295,     0,   554,   556,   131,     0,     0,   216,     0,     0,
    1496        0,   224,   225,    56,     0,    62,   295,     0,    60,    59,
    1497        0,     2,   129,     0,     0,     0,   696,   697,   693,   694,
    1498      461,    71,    72,   111,   116,     3,   110,     0,     0,     0,
    1499       24,    35,     3,     0,    32,   103,     0,     3,   653,   657,
    1500      660,   652,     3,   595,     3,   719,   724,     2,    63,   295,
    1501        3,     3,   296,     0,     3,   625,   629,   632,   641,   675,
    1502      679,   682,   295,     3,   624,   640,   674,   295,   295,   427,
    1503      295,   295,   749,     0,     0,     0,     0,   257,     0,   105,
    1504        0,     3,     3,     0,   464,     0,   460,     0,     0,   246,
    1505      295,     0,     0,   130,     0,     0,     0,     0,     0,   130,
    1506        0,     0,   110,   110,    18,     2,     0,     0,     3,   132,
    1507      133,     2,   144,   134,   135,   136,   137,   138,   139,   146,
    1508      148,     0,     0,     0,   286,   295,   295,   550,     0,   543,
    1509      295,   377,   379,     0,   393,   696,   388,   392,   389,   382,
    1510      386,   369,   400,     0,   582,     2,   667,   666,     0,   672,
    1511        2,   485,   487,   507,     3,   515,   516,     0,     2,   511,
    1512        3,     3,     0,     0,   559,   223,     0,     0,     0,   223,
    1513        0,     0,     3,    37,   112,   699,   703,   705,   698,   752,
    1514      110,     0,     3,   664,    42,     3,    40,     3,    34,     0,
    1515        3,   102,   104,     0,     2,   655,   656,     0,     0,   295,
    1516        0,     0,     0,     3,   641,     0,     2,   627,   628,     2,
    1517      643,     2,   677,   678,     0,     0,    63,     0,     3,     3,
    1518        3,     3,   412,   411,   415,     2,     2,   751,   750,   113,
    1519        0,     0,     0,     0,     3,   465,     3,     0,   244,   147,
    1520        3,   296,   295,     0,     0,     0,     0,     2,     0,   192,
    1521        0,   190,     0,     0,     0,     0,     0,     0,     0,   550,
    1522      112,     0,   152,   149,   295,     0,     0,   268,   280,     3,
    1523        3,   549,   616,   370,   385,   398,   295,   267,   295,     0,
    1524      518,   495,   295,     0,     0,   494,   509,     0,     0,     0,
    1525      217,     0,   226,    57,   110,     0,     2,   701,   702,     0,
    1526      117,   114,     0,     0,     0,     0,     0,     0,    23,     0,
    1527      658,   295,   583,   266,   727,   728,   729,     0,   680,   295,
    1528      295,   295,     3,     3,     0,   688,     0,     0,     0,     0,
    1529      295,   295,     3,   547,   472,   473,     0,     0,   247,   296,
    1530        0,     0,     0,     0,   295,   193,   191,   188,     0,   194,
    1531        0,     0,     0,     0,   198,   201,   199,   195,     0,   196,
    1532      130,    35,   145,   143,   245,     0,     0,   419,   423,   422,
    1533        0,   512,     2,   513,     2,   514,   508,   295,   229,     0,
    1534      227,     0,   229,     3,   664,   295,    31,   115,     2,    45,
    1535        2,    43,    41,    28,   113,    26,     3,   730,     3,     3,
    1536        3,     0,     0,   687,   689,   630,   644,   270,     2,   409,
    1537        3,   408,     0,   475,   472,   130,     0,     0,   130,     3,
    1538        0,   130,   189,     0,     2,     2,   210,   200,     0,     0,
    1539        0,   141,     0,   577,   617,     2,     0,     0,     2,   230,
    1540        0,     0,   218,     0,     0,     0,     3,     0,     0,     0,
    1541        0,     0,     0,   690,   691,   295,     0,   474,   153,     0,
    1542        0,     2,   166,   130,   155,     0,   183,     0,   130,     0,
    1543        2,   157,     0,     2,     0,     2,     2,     2,   197,    32,
    1544      295,   517,   519,   510,     0,     0,     0,     0,   115,    38,
    1545        0,     3,     3,   659,   631,   645,   681,   413,   130,   159,
    1546      162,     0,   161,   165,     3,   168,   167,     0,   130,   185,
    1547      130,     3,     0,   295,     0,   295,     0,     2,     0,     2,
    1548      140,     2,   231,   232,     0,   228,   219,     0,   704,     0,
    1549        0,   154,     0,     0,   164,   234,   169,     2,   236,   184,
    1550        0,   187,   173,   202,     3,   211,   215,   204,     3,     0,
    1551      295,     0,   295,     0,     0,     0,    39,    46,    44,   160,
    1552      163,   130,     0,   170,   295,   130,   130,     0,   174,     0,
    1553        0,   695,   212,   213,   214,     0,   203,     3,   205,     3,
    1554      295,   220,   233,   150,   171,   156,   130,   237,   186,   181,
    1555      179,   175,   158,   130,     0,   696,     0,     0,     0,     0,
    1556      151,   172,   182,   176,   180,   179,   177,     3,     3,     0,
    1557        0,   496,   178,   206,   208,     3,     3,   207,   209
     1459       0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
     1460       2,   644,   451,   641,   545,   545,   649,   478,   291,     2,
     1461     583,   584,     0,   595,   596,     0,     2,   738,   741,   118,
     1462     291,     0,     2,   706,   292,   710,   701,   702,   708,     0,
     1463       2,     2,   666,   545,   749,   615,   545,   545,   749,   545,
     1464     629,   545,   545,   680,   433,   663,   545,   545,   671,   678,
     1465     291,   428,   292,     0,     0,   291,   716,   292,   721,   749,
     1466     713,   291,   718,   749,   291,   291,   291,     0,   118,     0,
     1467      18,     2,     0,    19,     0,   458,   747,     0,     0,   464,
     1468     238,     0,   291,     0,     0,     0,   543,   567,   571,   573,
     1469     603,   606,   610,   613,   566,   605,     0,   281,   656,     0,
     1470     291,   274,     0,     0,     0,     0,   272,     2,     0,   256,
     1471     534,   291,     0,     0,   291,     2,   362,   382,   371,     0,
     1472       0,   376,   370,   748,     0,     0,   395,     0,   292,     3,
     1473     413,     3,   417,   416,   589,     0,   529,   291,    60,     3,
     1474     291,   432,   292,     3,   426,   427,     2,     0,     0,     0,
     1475     483,   303,   291,   479,   481,     3,     2,     2,     0,   500,
     1476       3,     0,   552,   126,     0,     0,   219,     0,     0,     0,
     1477       0,    36,     0,     0,   118,   291,    20,     0,    21,     0,
     1478     690,   695,   447,   687,   545,   545,     0,   105,     3,     2,
     1479      27,     0,    33,     0,     2,    25,     0,   103,    70,    71,
     1480      72,    74,    75,    77,    78,    82,    83,    80,    81,    85,
     1481      86,    88,    90,    92,    94,    96,     0,     0,   750,   291,
     1482       0,     0,     0,   645,   646,   642,   643,   495,   494,   291,
     1483       0,   291,   712,   291,   717,   292,   291,   660,   291,   291,
     1484     703,   659,     2,   291,     0,     0,     0,     0,     0,     0,
     1485       0,     0,   681,     0,   667,   618,   634,   668,     2,   614,
     1486     621,   430,   616,   617,   431,     2,   628,   637,   630,   631,
     1487     664,   665,   679,   707,   711,   709,   749,   265,     2,   743,
     1488       2,   421,   715,   720,   422,     0,   400,     3,     3,     3,
     1489       3,   452,     3,     0,     2,   466,   463,   748,     0,   459,
     1490       2,   462,   465,     0,   291,   239,   261,     3,   269,   271,
     1491       0,   452,     2,   569,   570,     2,   608,   609,     0,   657,
     1492     535,     3,   343,   342,   345,   344,   291,   536,     0,   537,
     1493     370,     0,     0,   291,   291,     0,     0,   690,   380,   383,
     1494     387,   545,   387,   386,   379,   372,   545,   374,   377,   291,
     1495     397,   391,   101,   398,   747,     0,     0,   435,   237,     0,
     1496       0,     3,     2,   666,   428,     0,   525,     0,   749,   487,
     1497       0,   291,   291,   291,     0,   549,   551,   127,     0,     0,
     1498     212,     0,     0,     0,   220,   221,    53,     0,    55,    58,
     1499      59,     0,     2,   125,     0,     0,     0,   691,   692,   688,
     1500     689,   457,    67,    68,   106,   122,     3,   105,     0,     0,
     1501      24,    35,     3,     0,    32,    99,     0,     3,   648,   652,
     1502     655,   647,     3,   590,     3,   714,   719,     2,    60,   291,
     1503       3,     3,   292,     0,     3,   620,   624,   627,   636,   670,
     1504     674,   677,   291,     3,   619,   635,   669,   291,   291,   423,
     1505     291,   291,   744,     0,     0,     0,     0,   253,     0,   101,
     1506       0,     3,     3,     0,   460,     0,   456,     0,     0,   242,
     1507     291,     0,     0,   126,     0,     0,     0,     0,     0,   126,
     1508       0,     0,   105,   105,    18,     2,     0,     0,     3,   128,
     1509     129,     2,   140,   130,   131,   132,   133,   134,   135,   142,
     1510     144,     0,     0,     0,   282,   291,   291,   545,     0,   538,
     1511     291,   373,   375,     0,   389,   691,   384,   388,   385,   378,
     1512     382,   365,   396,     0,   577,     2,   662,   661,     0,   667,
     1513       2,   480,   482,   502,     3,   510,   511,     0,     2,   506,
     1514       3,     3,     0,     0,   554,   219,     0,     0,     0,   219,
     1515       0,     0,   118,   694,   698,   700,   693,   747,   105,     0,
     1516       3,   659,    39,     3,    37,    34,     0,     3,    98,   100,
     1517       0,     2,   650,   651,     0,     0,   291,     0,     0,     0,
     1518       3,   636,     0,     2,   622,   623,     2,   638,     2,   672,
     1519     673,     0,     0,    60,     0,     3,     3,     3,     3,   408,
     1520     407,   411,     2,     2,   746,   745,   119,     0,     0,     0,
     1521       0,     3,   461,     3,     0,   240,   143,     3,   292,   291,
     1522       0,     0,     0,     0,     2,     0,   188,     0,   186,     0,
     1523       0,     0,     0,     0,     0,     0,   545,   118,     0,   148,
     1524     145,   291,     0,     0,   264,   276,     3,     3,   544,   611,
     1525     366,   381,   394,   291,   263,   291,     0,   513,   490,   291,
     1526       0,     0,   489,   504,     0,     0,     0,   213,     0,   222,
     1527      56,     2,   696,   697,     0,   123,   120,     0,     0,     0,
     1528       0,     0,    23,     0,   653,   291,   578,   262,   722,   723,
     1529     724,     0,   675,   291,   291,   291,     3,     3,     0,   683,
     1530       0,     0,     0,     0,   291,   291,     3,   542,   119,   468,
     1531       0,     0,   243,   292,     0,     0,     0,     0,   291,   189,
     1532     187,   184,     0,   190,     0,     0,     0,     0,   194,   197,
     1533     195,   191,     0,   192,   126,    35,   141,   139,   241,     0,
     1534       0,   415,   419,   418,     0,   507,     2,   508,     2,   509,
     1535     503,   291,   225,     0,   223,     0,   225,   291,    31,   121,
     1536       2,    42,     2,    40,    38,    28,    26,     3,   725,     3,
     1537       3,     3,     0,     0,   682,   684,   625,   639,   266,     2,
     1538     405,     3,   404,     0,   470,   467,   126,     0,     0,   126,
     1539       3,     0,   126,   185,     0,     2,     2,   206,   196,     0,
     1540       0,     0,   137,     0,   572,   612,     2,     0,     0,     2,
     1541     226,     0,     0,   214,     0,     3,     0,     0,     0,     0,
     1542       0,     0,   685,   686,   291,     0,   469,   149,     0,     0,
     1543       2,   162,   126,   151,     0,   179,     0,   126,     0,     2,
     1544     153,     0,     2,     0,     2,     2,     2,   193,    32,   291,
     1545     512,   514,   505,     0,     0,     0,     0,     0,     3,     3,
     1546     654,   626,   640,   676,   409,   126,   155,   158,     0,   157,
     1547     161,     3,   164,   163,     0,   126,   181,   126,     3,     0,
     1548     291,     0,   291,     0,     2,     0,     2,   136,     2,   227,
     1549     228,     0,   224,   215,   699,     0,     0,   150,     0,     0,
     1550     160,   230,   165,     2,   232,   180,     0,   183,   169,   198,
     1551       3,   207,   211,   200,     3,     0,   291,     0,   291,     0,
     1552       0,     0,    43,    41,   156,   159,   126,     0,   166,   291,
     1553     126,   126,     0,   170,     0,     0,   690,   208,   209,   210,
     1554       0,   199,     3,   201,     3,   291,   216,   229,   146,   167,
     1555     152,   126,   233,   182,   177,   175,   171,   154,   126,     0,
     1556     691,     0,     0,     0,     0,   147,   168,   178,   172,   176,
     1557     175,   173,     3,     3,     0,     0,   491,   174,   202,   204,
     1558       3,     3,   203,   205
    15581559};
    15591560
     
    15611562static const yytype_int16 yydefgoto[] =
    15621563{
    1563       -1,   819,   469,   302,    48,   135,   136,   303,   304,   305,
    1564      306,   766,   767,  1145,  1146,   307,   382,   309,   310,   311,
    1565      312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
    1566     1040,   519,   984,   323,   985,   547,   954,  1067,  1543,  1069,
    1567     1070,  1071,  1072,  1544,  1073,  1074,  1460,  1461,  1422,  1423,
    1568     1424,  1522,  1523,  1527,  1528,  1563,  1564,  1075,  1380,  1076,
    1569     1077,  1314,  1315,  1316,  1504,  1078,   147,   960,   961,   962,
    1570     1400,  1484,  1496,  1497,   470,   471,   881,   882,  1048,    52,
    1571       53,    54,    55,    56,   348,   160,    59,    60,    61,    62,
    1572       63,   350,    65,    66,   266,    68,    69,   276,   352,   353,
    1573       72,    73,    74,    75,   120,    77,   206,   355,   121,    80,
    1574      122,    82,    83,   456,    84,   455,   690,   691,   692,   915,
    1575     1096,   916,    85,    86,   459,   457,   698,   861,   862,   358,
    1576      359,   701,   702,   703,   360,   361,   362,   363,   467,   341,
    1577      137,   138,   523,   325,   172,   647,   648,   649,   650,   651,
    1578       87,   123,    89,   490,   491,   946,   492,   279,   496,   326,
    1579       90,   139,   140,    91,  1337,  1118,  1119,  1120,  1121,    92,
    1580       93,   719,    94,   275,    95,    96,   189,  1042,   681,   413,
    1581      127,    97,   502,   503,   504,   190,   270,   192,   193,   194,
    1582      271,   100,   101,   102,   103,   104,   105,   106,   197,   198,
    1583      199,   200,   201,   831,   606,   607,   608,   609,   202,   611,
    1584      612,   613,   573,   574,   575,   576,   755,   107,   615,   616,
    1585      617,   618,   619,   620,   977,   757,   758,   759,   596,   366,
    1586      367,   368,   369,   327,   166,   109,   110,   111,   371,   696,
    1587      570
     1564      -1,   813,   468,   301,    47,   134,   135,   302,   303,   304,
     1565     305,   761,   762,  1133,  1134,   306,   381,   308,   309,   310,
     1566     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     1567    1030,   518,   975,   546,   322,   976,   947,  1057,  1518,  1059,
     1568    1060,  1061,  1062,  1519,  1063,  1064,  1437,  1438,  1401,  1402,
     1569    1403,  1497,  1498,  1502,  1503,  1538,  1539,  1065,  1361,  1066,
     1570    1067,  1298,  1299,  1300,  1480,  1068,   146,   953,   954,   955,
     1571    1381,  1461,  1472,  1473,   469,   470,   874,   875,  1038,    51,
     1572      52,    53,    54,    55,   347,   159,    58,    59,    60,    61,
     1573      62,   349,    64,    65,   265,    67,    68,   275,   351,   352,
     1574      71,    72,    73,    74,   119,    76,   205,   354,   120,    79,
     1575     121,    81,    82,   455,    83,   454,   688,   689,   690,   908,
     1576    1086,   909,    84,    85,   458,   456,   696,   855,   856,   857,
     1577     858,   699,   700,   701,   359,   360,   361,   362,   466,   340,
     1578     136,   137,   522,   324,   171,   645,   646,   647,   648,   649,
     1579      86,   122,    88,   489,   490,   939,   491,   278,   495,   325,
     1580      89,   138,   139,    90,  1321,  1108,  1109,  1110,  1111,    91,
     1581      92,   717,    93,   274,    94,    95,   188,  1032,   679,   412,
     1582     126,    96,   501,   502,   503,   189,   269,   191,   192,   193,
     1583     270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
     1584     198,   199,   200,   825,   605,   606,   607,   608,   201,   610,
     1585     611,   612,   572,   573,   574,   575,   751,   106,   614,   615,
     1586     616,   617,   618,   619,   968,   753,   754,   755,   595,   365,
     1587     366,   367,   368,   326,   165,   108,   109,   110,   370,   694,
     1588     569
    15881589};
    15891590
    15901591/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15911592   STATE-NUM.  */
    1592 #define YYPACT_NINF -1414
     1593#define YYPACT_NINF -1310
    15931594static const yytype_int16 yypact[] =
    15941595{
    1595     4857,  9883, -1414,    35, -1414, -1414, -1414, -1414, -1414, -1414,
    1596    -1414,   142, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1597    -1414, -1414, -1414, -1414, -1414, -1414,    98,    98,    98,  1334,
    1598      684,   153,  7496,   290, -1414, -1414, -1414, -1414, -1414,   204,
    1599    -1414, -1414, -1414, -1414,   901,   229, -1414, -1414, -1414, -1414,
    1600     9565, -1414, -1414, -1414, -1414,   -15,   301, -1414,  1624, -1414,
    1601    -1414, -1414, -1414,   302,  1806,   471,   143,  7613, -1414, -1414,
    1602     9603,  1367, -1414, -1414, -1414,  1721,   510,  3394,  1032,  1137,
    1603     1721,  1303, -1414, -1414,  1174,  1520, -1414,  1721,  1532, -1414,
    1604      385, -1414,   421,   523, -1414, -1414, -1414, -1414,   460,   301,
    1605       98, -1414,    98, -1414, -1414, -1414, -1414, 10414,  1624, -1414,
    1606    -1414,  1624, -1414,   447, -1414, 10444, -1414, -1414,  2082, 10554,
    1607    -1414,   399,   399,   399, -1414, -1414, -1414,    98, -1414, -1414,
    1608    -1414,   544,   555,   575, -1414, -1414, -1414,   617, -1414, -1414,
    1609    -1414, -1414, -1414,   621,   629, -1414, -1414,    11,  9069,  3253,
    1610      578,   492,   499,   631,   635,   642,   647,  9853,  7015,   649,
    1611      656, -1414,  9713, -1414, -1414, -1414, -1414,   661, -1414,   193,
    1612     3453,  3453, -1414,   667,   251, -1414, -1414, -1414, -1414,   692,
    1613      327,   346,   368,    98,   673, -1414, -1414,  1806,  3136,   748,
    1614    -1414,    12, -1414,    98,    98,   301, -1414, -1414,    75, -1414,
    1615       98,    98, -1414,  3167,   711,   722,   399,  6806, -1414, -1414,
    1616      726,  9565, -1414, -1414,  1721, -1414, -1414, -1414,   301, -1414,
    1617     1624,   -15, -1414,  7963, -1414,   399,   399,   399,   301, -1414,
    1618     1334, -1414,  5769, -1414, -1414,   709,   399, -1414,   399, -1414,
    1619      204,  9069, -1414,   763, -1414,   684,   765,   399, -1414,  1334,
    1620      750,   766, -1414,  7496,   705, -1414, -1414, -1414,  9532, -1414,
    1621    -1414, 10864, -1414,   748,    63,  6244, 10554,  2082,  3167, -1414,
    1622       85, -1414, -1414, 10444,  1624,   804,  7644, -1414, -1414,   319,
    1623    -1414, 11778,   782,   851,  4657,   828,  4994, 11639, -1414,   839,
    1624    -1414, -1414, -1414, -1414, 11658, 11658,  8841,   844, -1414, -1414,
    1625    -1414, -1414, -1414, -1414,   869, -1414,   759,  2440,  9183,  4994,
    1626    -1414,   593,   571,   645,   313,   861,   842,   858,   843,   911,
    1627      -20, -1414, -1414,   876,   326, -1414,    83, -1414, -1414,  3253,
    1628    -1414, -1414,   139,   900, -1414,   422,   900,   905,   204, -1414,
    1629    -1414,   909, 10414, -1414,   912,   917,  9297, -1414, -1414,  1382,
    1630     2358,  8427,  6806,  1721, -1414,  1721,   399,   399, -1414, -1414,
    1631    -1414, -1414, -1414, -1414,   399, 10414,  1624, -1414, -1414, 10584,
    1632     1776, -1414, 10304, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1633      936, 11446,  4994, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1634    -1414, -1414, -1414, -1414, -1414, -1414, -1414,  2082, -1414,   836,
    1635      947,   962,   963,   923,   965,   970,   972,  3136, -1414, -1414,
    1636      959,   -15,   975, -1414, -1414,   978, -1414, -1414, -1414,  9532,
    1637    -1414, -1414, -1414, -1414, -1414,  3167, -1414,  9069,  9069, -1414,
    1638      399,  2082,  6926,  1624,  8543, -1414, -1414, -1414, -1414,  9532,
    1639       63, -1414, -1414,  1721,   301, -1414, -1414,  9532, -1414,  6689,
    1640    -1414, -1414,   399,   399,   271, 10023,   907,   977,   960,   988,
    1641      399, -1414, -1414, -1414, -1414, 10980, -1414,   500,  6556, -1414,
    1642      301,   990, -1414,  2082, 11860, 11504, -1414, -1414, -1414, -1414,
    1643      935,  3167, -1414,  8659,   748,  6228, -1414, -1414, -1414,  1482,
    1644      550,   876,   684,  7644,  1180, 10444, -1414,  7644, -1414, -1414,
    1645    -1414, -1414,   561, -1414,   997,   851,   -13,  8841, -1414, 10694,
    1646    -1414, -1414,  8841, -1414,  8955,  8841, -1414, -1414,   996, -1414,
    1647      585,  1003,   455,  1017, -1414, -1414,  9993,  6037, -1414,   419,
    1648    -1414, -1414, 11562, -1414,   469, 11562, -1414, -1414, -1414, -1414,
    1649    -1414, -1414, -1414, -1414, -1414, -1414,  6244,  6244, -1414, -1414,
    1650     4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,
    1651     4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,  3735,  6244,
    1652    -1414,   326,  1049, -1414, -1414,    98,    98, -1414, -1414,  9069,
    1653    -1414, -1414,   978,   705, -1414,   978, 11581, -1414, -1414, -1414,
    1654     3645,  6037,  1016,  1018, -1414, 10554, -1414, -1414,   661, -1414,
    1655     1020,  1157,  1025,  2611,    95,   876, -1414,    98,    98,   876,
    1656      134, -1414,    98,    98,   978, -1414, -1414,    98,    98, -1414,
    1657      900, 10724,  1624, 12005,    69,   227, 10724, -1414, 10864, -1414,
    1658      876, -1414, 10414, -1414,   218,  8079,  8079,  8079,  1624, -1414,
    1659     5555,  1012,   260,   936,   778,  1021,  1024, -1414,  1026,  3453,
    1660      343, -1414,  1115,  1624,  8079,   705,  2082,   705,   748,   534,
    1661      900, -1414, -1414,   596,   900, -1414, -1414, -1414,   851, -1414,
    1662      900,   301, 10980, -1414,   687,  1042,   700,  1043, -1414,  1044,
    1663      301, -1414, -1414,  9532,   301,  1041, 10694,  1045, -1414,  2066,
    1664    -1414,   408,   416,   684, -1414,   684,  1047,  4994, -1414,   684,
    1665    12005, -1414, -1414,  1053, -1414, -1414, -1414,   705, -1414, 11933,
    1666      917, -1414,  8079,   489,  8427, -1414, -1414,   661,  1055,  1056,
    1667     1482,  3284, -1414, -1414,  7644, -1414, -1414,  1038, -1414, -1414,
    1668     1064, -1414,  1038,  1070, 11778,  6244,    93,  1051,   138,  1074,
    1669     1058,  1075,   844,  1069,  1077, -1414,  1079,  1081, 10133,  6775,
    1670    -1414,  6244, -1414,   455,  1974, -1414, -1414, -1414,    98,    98,
    1671     6104,  6244,  1076, -1414, -1414,   936,   707, -1414,  6244, -1414,
    1672    -1414,   677, -1414, -1414, -1414, -1414, -1414,   593,   593,   571,
    1673      571,   645,   645,   645,   645,   313,   313,   861,   842,   858,
    1674      843,   911,  4994,   847, -1414, 10980,  1083,  1084,  1088,  1049,
    1675    -1414, -1414, -1414, -1414, -1414, 10980,   717,  8079, -1414, 10414,
    1676    -1414,  7135,  9411, -1414, 10304,  7015, -1414, -1414,  1157, 10980,
    1677      945,  1089,  1090,  1095,  1096,  1099,  1100,  1105, -1414,  4392,
    1678     2611, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1679    -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,   978, -1414,
    1680    -1414, -1414,   876, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1681    -1414,  1112, -1414,  1113,  1118, -1414, -1414,   -15,  1076,  5555,
    1682    -1414, -1414, -1414, 11446,  1116, -1414, -1414, -1414, -1414, -1414,
    1683      684,  6369,  1201, -1414, -1414, -1414, -1414,  1103,   -15, -1414,
    1684    -1414,   978, -1414, -1414,   978,   126,   978, -1414, -1414, -1414,
    1685    -1414, -1414, -1414,  9743, -1414,   301, -1414, -1414,   438,   452,
    1686    10584,  7255,  2372,  4994,  2870, -1414, -1414,  1127,    39,  1127,
    1687    -1414,   684, -1414,    98, -1414, -1414, 10163,   960, -1414, -1414,
    1688    -1414,   977,  1143,  1131, -1414, -1414,  1150,  1153, -1414,   489,
    1689     1995, -1414,   363, -1414,  3284,   876, -1414,  1160,  7644, 10834,
    1690     9069,  1161, -1414, -1414,  1151,  1162,  1156, -1414,  4994,   120,
    1691      279,  1163, -1414,  1166,   705,  1166,  6037,  6244, -1414, -1414,
    1692     1166,  1165, -1414,  1176,  1182,  1185,  1974, -1414, -1414, -1414,
    1693    11446, -1414, -1414, -1414, -1414,  1168,  6244,  1188,   705,  5555,
    1694    -1414, 11562, -1414,   705, -1414, -1414,  6244, -1414,   614,   900,
    1695    -1414, -1414, -1414, -1414, -1414, -1414, -1414,   936,   917,  9297,
    1696    -1414, -1414,  7375,  1187, -1414,   758,   900, -1414,   785,   797,
    1697      900, -1414,   399,  5912, -1414, -1414, -1414, 10980, 10980, -1414,
    1698     8543,  8543, -1414,  1186,  1189,  1191,  1199, -1414,  1206,   439,
    1699      119,  1076, -1414,   705, -1414,  3453, -1414,  6244,   480, -1414,
    1700     6655,  1211,  1212, 11388,  1213,  1217,    -6,    58,   117,  6244,
    1701     1221,   301,  6244,  6244,  1215,  1222,   610,  1203, -1414, -1414,
    1702    -1414,  1218, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1703    -1414,   684,  1226,  6244, -1414, 10980, 10980,    98,  1228, -1414,
    1704    10273, -1414, -1414,   864, -1414,  2870, -1414, -1414, -1414, -1414,
    1705     2066, -1414, -1414,  1230, -1414, -1414, -1414, -1414,  1231,  1995,
    1706    -1414, -1414,  1223, -1414,  1038, -1414, -1414,  2082,  1235, -1414,
    1707    -1414, -1414,   744,  1237, -1414,   138,  1245,  4994,  1232,   138,
    1708      138,  1250,  1246, -1414,  9993,   825,   900, -1414, -1414,  1026,
    1709     6244,  1251,  1168,   536,   161,  1261, -1414,  1246, -1414,  1254,
    1710     1261, -1414, -1414,  1257, -1414, -1414,   978,  1270,  1271,  6895,
    1711     1272,  1275,  1280, -1414, -1414,  1283, -1414, -1414,   978, -1414,
    1712    -1414, -1414, -1414,   978,  6244,  6244,   917,  1282, -1414, -1414,
    1713    -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1714     4994,  4994,  1284,  1286,  1261, -1414, -1414,   684, -1414, -1414,
    1715    -1414,  5291, 10834,  6244,  6244,  1335,  6244, -1414,  1263, -1414,
    1716     1267, -1414,  1281,  6244,  1288,  6244,  1039,  1290,    28,    98,
    1717     5165,   856, -1414, -1414,  6369,  1287,   488, -1414, -1414, -1414,
    1718    -1414, -1414, -1414, -1414, -1414, -1414, 11206, -1414,  8659,  1304,
    1719    -1414, -1414, 10834,   490,   498, -1414,  1301,  1306,   851,  1317,
    1720    -1414,   418, -1414, -1414,  6244,  1316, -1414, -1414,   978,  1314,
    1721    -1414, -1414,  1318,   589,   691,   705,  1320,  1322, -1414,  1329,
    1722    -1414, 10980, -1414, -1414, -1414, -1414, -1414,  1330, -1414, 10980,
    1723    10980, 10980, -1414, -1414,  1332, -1414,  1333,  1336,  1339,   517,
    1724     8195,  8311, -1414, -1414,   123, -1414,  1343,  1348, -1414,  8775,
    1725      755,   768,  1342,   770,  6525, -1414, -1414, -1414,   508, -1414,
    1726      777,  1352,  1353,   301,  1403,   933, -1414, -1414,  6244, -1414,
    1727    11388, 11562, -1414, -1414, -1414,  1359,  1364, -1414, -1414, -1414,
    1728     1363, -1414, -1414, -1414, -1414, -1414, -1414, 10834,   851,   273,
    1729    -1414,  1347,   851,  1168,   268, 10980, -1414, -1414, -1414, -1414,
    1730    -1414, -1414, -1414, -1414,  1365, -1414, -1414, -1414, -1414, -1414,
    1731    -1414,  1368,  1371, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
    1732     1375, -1414,  1374, -1414, -1414, 11388,    91,  6244, 11388, -1414,
    1733     1385,  6244, -1414,   288,  1402,  1405, -1414, -1414,  1390,  1393,
    1734     1376, -1414,   882, -1414, -1414, -1414,  1624,  2082,  1388,   869,
    1735      884,  4994, -1414,   803,  1394,  6244, -1414,   705,   705,  1399,
    1736     1406,  1407,  1409, -1414, -1414,  8543,  1397, -1414,  1473,  4994,
    1737     1404, -1414, -1414, 11299, -1414,   811, -1414,  1395, 11388,  1401,
    1738    -1414, -1414,  1410, -1414,  1412, -1414,  1433,  1441, -1414,  1415,
    1739    10834, -1414, -1414, -1414,   851,   705,  1429,  1417,  1436, -1414,
    1740     1446,  1261,  1261, -1414, -1414, -1414, -1414, -1414, 11388,   278,
    1741    -1414,   910, -1414, -1414,  7730, -1414, -1414,  1435,  6244, -1414,
    1742     6244,  7730,   301, 10694,   301, 10694,  1462, -1414,  1463, -1414,
    1743    -1414,  1460,   869, -1414,   812, -1414, -1414,  6244, -1414,  1465,
    1744     1466, -1414,  4994,  4994, -1414, -1414,  1007,    37, -1414, -1414,
    1745     1447, -1414,  1007, -1414, -1414,  2485,   705, -1414, -1414,   301,
    1746    10694,   301, 10694,  1472,  1450,   705, -1414, -1414, -1414, -1414,
    1747    -1414, 11299,  1468,  1007,  7847,  6244, 11210,  1475,  1007,  1477,
    1748     2485,  2994, -1414, -1414, -1414,  1495, -1414, -1414, -1414, -1414,
    1749     9069, -1414, -1414, -1414, 11077, -1414, 11299, -1414, -1414,  1476,
    1750    10984, -1414, -1414, 11210,   301,  2994,   301,  1502,  1506,   813,
    1751    -1414, 11077, -1414, -1414, -1414, 10984, -1414, -1414, -1414,   301,
    1752      301, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414
     1596    7316,  8697, -1310,    16, -1310, -1310, -1310, -1310, -1310, -1310,
     1597   -1310,    22, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1598   -1310, -1310, -1310, -1310, -1310, -1310,   101,   101,   101,  1152,
     1599     941,    64,  7548,   141, -1310, -1310, -1310, -1310, -1310,    87,
     1600   -1310, -1310, -1310,   868,   134, -1310, -1310, -1310, -1310,  9158,
     1601   -1310, -1310, -1310, -1310,   149,   144, -1310,  1337, -1310, -1310,
     1602   -1310, -1310,   139,   935,   260,   102,  2892, -1310, -1310,  9196,
     1603     790, -1310, -1310, -1310,   904,   293,  5512,   547,   778,   904,
     1604    1166, -1310, -1310,   554,   624, -1310,   904,  1343, -1310,   187,
     1605   -1310,   308,   336, -1310, -1310, -1310, -1310,   251,   144,   101,
     1606   -1310,   101, -1310, -1310, -1310, -1310,  8923,  1337, -1310, -1310,
     1607    1337, -1310,   337, -1310,  9043, -1310, -1310,  1053,  9381, -1310,
     1608    1729,  1729,  1729, -1310, -1310, -1310,   101, -1310, -1310, -1310,
     1609     410,   413,   418, -1310, -1310, -1310,   433, -1310, -1310, -1310,
     1610   -1310, -1310,   468,   477, -1310, -1310,    37,  8666,  2607,   742,
     1611     369,   496,   509,   523,   530,   535,  8584,  6836,   536,   546,
     1612   -1310,  9234, -1310, -1310, -1310, -1310,   561, -1310,   245,  4633,
     1613    4633, -1310,   562,   361, -1310, -1310, -1310, -1310,   574,   383,
     1614     408,   429,   101,   577, -1310, -1310,   935,  3015,   664, -1310,
     1615      86, -1310,   101,   101,   144, -1310, -1310,    89, -1310,   101,
     1616     101, -1310,  3541,   634,   653,  1729,  6748, -1310, -1310,   623,
     1617    9158, -1310, -1310,   904, -1310, -1310, -1310,   144, -1310,  1337,
     1618     149, -1310,  7737, -1310,  1729,  1729,  1729,   144, -1310,  1152,
     1619   -1310,  5996, -1310, -1310,   642,  1729, -1310,  1729, -1310,    87,
     1620    8666, -1310,   672, -1310,   941,   697,  1729, -1310,  1152,   699,
     1621     702, -1310,  7548,   567, -1310, -1310, -1310,  9125, -1310, -1310,
     1622    4167, -1310,   664,    10,  5116,  9381,  1053,  3541, -1310,    94,
     1623   -1310, -1310,  9043,  1337,   715, 10741, -1310, -1310,    11, -1310,
     1624   10483,   740,   772, 10231,   759, 10288, 10307, -1310,   763, -1310,
     1625   -1310, -1310, -1310, 10364, 10364,  8440,   765, -1310, -1310, -1310,
     1626   -1310, -1310, -1310,   799, -1310,   616,  2256,  8779, 10288, -1310,
     1627     475,   860,   810,   276,   913,   766,   767,   793,   832,    41,
     1628   -1310, -1310,   807,   704, -1310,   331, -1310, -1310,  2607, -1310,
     1629   -1310,   242,   835, -1310,   421,   835,   841,    87, -1310, -1310,
     1630     846,  8923, -1310,   847,   857,  8892, -1310, -1310,  1352,  2069,
     1631    8155,  6748,   904, -1310,   904,  1729,  1729, -1310, -1310, -1310,
     1632   -1310, -1310, -1310,  1729,  8923,  1337, -1310, -1310,  9419,  1457,
     1633   -1310,  7886, -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,
     1634   10098, 10288, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1635   -1310, -1310, -1310, -1310, -1310, -1310,  1053, -1310,   928,   862,
     1636     891,   893,  1023,   916,   937,   951,  3015, -1310, -1310,   942,
     1637     149,   958, -1310, -1310,   970, -1310, -1310, -1310,  9125, -1310,
     1638   -1310, -1310, -1310, -1310,  3541, -1310,  8666,  8666, -1310,  1729,
     1639    1053,  6867,  1337,  8228, -1310, -1310, -1310, -1310,  9125,    10,
     1640   -1310, -1310,   904,   144, -1310, -1310,  9125, -1310,  6513, -1310,
     1641   -1310,  1729,  1729,   382,  5342,   969,   972,   960,  1031,  1729,
     1642   -1310, -1310, -1310, -1310,  9605, -1310,   450,  6629, -1310,   144,
     1643    1033, -1310,  1053, 10565, 10155, -1310, -1310, -1310, -1310,  1039,
     1644    3541, -1310,  8301,   664,  7432, -1310, -1310, -1310,   984,   626,
     1645     807,   941, 10741,   606,  9043, -1310, 10741, -1310, -1310, -1310,
     1646   -1310,   690, -1310,  1044,   772,   255,  8440, -1310,  9457, -1310,
     1647   -1310,  8440, -1310,  8553,  8440, -1310, -1310,  1042, -1310,   722,
     1648    1047,   818,  1048, -1310, -1310,  9310,  6479, -1310,   321, -1310,
     1649   -1310,  5116, -1310,   602,  5116, -1310, -1310, -1310, -1310, -1310,
     1650   -1310, -1310, -1310, -1310, -1310, -1310,  5116, -1310, -1310, 10288,
     1651   10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,
     1652   10288, 10288, 10288, 10288, 10288, 10288, 10288,  2426,  5116, -1310,
     1653     704,   830, -1310, -1310,   101,   101, -1310, -1310,  8666, -1310,
     1654   -1310,   970,   567, -1310,   970, 10212, -1310, -1310, -1310,  4524,
     1655    6479,  1049,  1054, -1310,  9381, -1310, -1310,   561, -1310,  1056,
     1656     774,  1073,  2515,    95,   807, -1310,   101,   101,   807,    98,
     1657   -1310,   101,   101,   970, -1310, -1310,   101,   101, -1310,   835,
     1658    9490,  1337, 10710,   283,   326,  9490, -1310,  4167, -1310,   807,
     1659   -1310,  8923, -1310,    80,  7852,  7852,  7852,  1337, -1310,  4787,
     1660    1065,   875,   744,  1066,  1067, -1310,  1070,  4633,   333, -1310,
     1661    1134,  1337,  7852,   567,  1053,   567,   664,   494,   835, -1310,
     1662   -1310,   584,   835, -1310, -1310, -1310,   772, -1310,   835,   144,
     1663    9605, -1310,   737,  1083,   750,  1090, -1310,  1089,   144, -1310,
     1664   -1310,  9125,   144,  1088,  9457,  1092, -1310,  1677, -1310,   441,
     1665     448,   941, -1310,   941,  1091, 10288, -1310,   941, 10710, -1310,
     1666   -1310,  1098, -1310, -1310, -1310,   567, -1310, 10638,   857, -1310,
     1667    7852,   853,  8155, -1310, -1310,   561,  1095,  1097,   984,  3316,
     1668   -1310, -1310, 10741, -1310, -1310,  1099, -1310, -1310,  1105, -1310,
     1669    1099,  1111, 10483,  5116,    62,  1102,   167,  1113,  1121,  1129,
     1670    1130, -1310,  1131,  1132,  9348,  6598, -1310,  5116, -1310,   818,
     1671     978, -1310, -1310, -1310,   101,   101,  5540,  5116,  1135, -1310,
     1672   -1310,   757, -1310,  5116, -1310, -1310,   914, -1310, -1310, -1310,
     1673   -1310,   475,   475,   860,   860,   810,   810,   810,   810,   276,
     1674     276,   913,   766,   767,   793,   832, 10288,   282, -1310,  9605,
     1675    1136,  1137,  1140,   830, -1310, -1310, -1310, -1310, -1310,  9605,
     1676     779,  7852, -1310,  8923, -1310,  6955,  9005, -1310,  7886,  6836,
     1677   -1310, -1310,   774,  9605,  1063,  1142,  1143,  1145,  1146,  1147,
     1678    1148,  1154, -1310,  3759,  2515, -1310, -1310, -1310, -1310, -1310,
     1679   -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1680   -1310, -1310,   970, -1310, -1310, -1310,   807, -1310, -1310, -1310,
     1681   -1310, -1310, -1310, -1310, -1310,  1156, -1310,  1159,  1160, -1310,
     1682   -1310,   149,  1135,  4787, -1310, -1310, -1310, 10098,  1157, -1310,
     1683   -1310, -1310, -1310,   941,  6225,  1247, -1310, -1310, -1310, -1310,
     1684    1150,   149, -1310, -1310,   970, -1310, -1310,   970,   137,   970,
     1685   -1310, -1310, -1310, -1310, -1310, -1310,  9272, -1310,   144, -1310,
     1686   -1310,   451,   452,  9419,  7074,  2178, 10288,  3429, -1310, -1310,
     1687    1149,    39,  1149, -1310,   941, -1310,   101, -1310, -1310,  8073,
     1688     960, -1310, -1310, -1310,   972,  1168,  1169, -1310, -1310,  1170,
     1689    1172, -1310,   853,  1305, -1310,   359, -1310,  3316,   807, -1310,
     1690    1177, 10741,  9528,  8666,  1180, -1310, -1310,  1175,  1182,  1164,
     1691   -1310, 10288,    56,   233,  1179, -1310,  1183,   567,  1183, -1310,
     1692   -1310,  1183,  1184, -1310,  1189,  1190,  1192,   978, -1310, -1310,
     1693   -1310, 10098, -1310, -1310, -1310, -1310,  1188,  5116,  1193,   567,
     1694   -1310,  5116, -1310,   567, -1310, -1310,  5116, -1310,   595,   835,
     1695   -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,   857,  8892,
     1696   -1310, -1310,  7193,  1196, -1310,   622,   835, -1310,   644,   649,
     1697     835, -1310,  1729,  4053, -1310, -1310, -1310,  9605,  9605, -1310,
     1698    8228,  8228, -1310,  1194,  1195,  1198,  1199, -1310,  1200,   531,
     1699      27,  1135, -1310,   567, -1310,  4633, -1310,  5116,   453, -1310,
     1700    6359,  1213,  1217, 10041,  1222,  1223,    43,    49,   106,  5116,
     1701    1228,   144,  5116,  5116,  1208,  1237,   142,  1218, -1310, -1310,
     1702   -1310,  1236, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1703   -1310,   941,  1249,  5116, -1310,  9605,  9605,   101,  1252, -1310,
     1704    8810, -1310, -1310,   987, -1310,  3429, -1310, -1310, -1310, -1310,
     1705    1677, -1310, -1310,  1253, -1310, -1310, -1310, -1310,  1254,  1305,
     1706   -1310, -1310,  1239, -1310,  1099, -1310, -1310,  1053,  1258, -1310,
     1707   -1310, -1310,   806,  1262, -1310,   167,  1267, 10288,  1248,   167,
     1708     167,  1273,  9310,   693,   835, -1310, -1310,  1070,  5116,  1274,
     1709    1188,   208,   157,  1269, -1310, -1310,  1278,  1269, -1310, -1310,
     1710    1282, -1310, -1310,   970,  1286,  1288,  6717,  1287,  1289,  1291,
     1711   -1310, -1310,  1290, -1310, -1310,   970, -1310, -1310, -1310, -1310,
     1712     970,  5116,  5116,   857,  1292, -1310, -1310, -1310, -1310, -1310,
     1713   -1310, -1310, -1310, -1310, -1310, -1310, -1310, 10288, 10288,  1294,
     1714    1295,  1269, -1310, -1310,   941, -1310, -1310, -1310,  5073,  9528,
     1715    5116,  5116,  1370,  5116, -1310,  1298, -1310,  1299, -1310,  1302,
     1716    5116,  1306,  5116,  1123,  1307,    30,   101,  5821,  1435, -1310,
     1717   -1310,  6225,  1303,   456, -1310, -1310, -1310, -1310, -1310, -1310,
     1718   -1310, -1310, -1310,  9861, -1310,  8301,  1330, -1310, -1310,  9528,
     1719     463,   481, -1310,  1328,  1314,   772,  1341, -1310,   306, -1310,
     1720   -1310, -1310, -1310,   970,  1332, -1310, -1310,  1342,   753,   834,
     1721     567,  1345, -1310,  1350, -1310,  9605, -1310, -1310, -1310, -1310,
     1722   -1310,  1351, -1310,  9605,  9605,  9605, -1310, -1310,  1359, -1310,
     1723    1362,  1365,  1366,   557,  7925,  8040, -1310, -1310,   420, -1310,
     1724    1368,  1371, -1310,  8374,   815,   844,  1346,   866,  6094, -1310,
     1725   -1310, -1310,   485, -1310,   888,  1369,  1375,   144,  1417,  1051,
     1726   -1310, -1310,  5116, -1310, 10041,  5116, -1310, -1310, -1310,  1377,
     1727    1379, -1310, -1310, -1310,  1376, -1310, -1310, -1310, -1310, -1310,
     1728   -1310,  9528,   772,   195, -1310,  1353,   772,  9605, -1310, -1310,
     1729   -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1730   -1310, -1310,  1384,  1388, -1310, -1310, -1310, -1310, -1310, -1310,
     1731   -1310,  1394, -1310,  1397, -1310, -1310, 10041,   217,  5116, 10041,
     1732   -1310,  1400,  5116, -1310,   289,  1421,  1423, -1310, -1310,  1403,
     1733    1415,  1393, -1310,  1001, -1310, -1310, -1310,  1337,  1053,  1412,
     1734     799,   323, 10288, -1310,   953, -1310,   567,   567,  1418,  1425,
     1735    1426,  1428, -1310, -1310,  8228,  1427, -1310,  1497, 10288,  1420,
     1736   -1310, -1310,  9953, -1310,   955, -1310,  1419, 10041,  1424, -1310,
     1737   -1310,  1442, -1310,  1445, -1310,  1461,  1462, -1310,  1430,  9528,
     1738   -1310, -1310, -1310,   772,   567,  1453,  1436,  1459,  1269,  1269,
     1739   -1310, -1310, -1310, -1310, -1310, 10041,   204, -1310,   370, -1310,
     1740   -1310,  3684, -1310, -1310,  1439,  5116, -1310,  5116,  3684,   144,
     1741    9457,   144,  9457,  1463, -1310,  1465, -1310, -1310,  1464,   799,
     1742   -1310,   968, -1310, -1310, -1310,  1460,  1466, -1310, 10288, 10288,
     1743   -1310, -1310,  1075,   122, -1310, -1310,  1444, -1310,  1075, -1310,
     1744   -1310,  2191,   567, -1310, -1310,   144,  9457,   144,  9457,  1472,
     1745    1450,   567, -1310, -1310, -1310, -1310,  9953,  1469,  1075,  7664,
     1746    5116,  9865,  1470,  1075,  1479,  2191,  3509, -1310, -1310, -1310,
     1747    1482, -1310, -1310, -1310, -1310,  8666, -1310, -1310, -1310,  9732,
     1748   -1310,  9953, -1310, -1310,  1468,  9644, -1310, -1310,  9865,   144,
     1749    3509,   144,  1484,  1486,   976, -1310,  9732, -1310, -1310, -1310,
     1750    9644, -1310, -1310, -1310,   144,   144, -1310, -1310, -1310, -1310,
     1751   -1310, -1310, -1310, -1310
    17531752};
    17541753
     
    17561755static const yytype_int16 yypgoto[] =
    17571756{
    1758    -1414,  4377,  3077, -1414,  1645, -1414,   305,   958,   -11, -1414,
    1759      552,  -530,  -487,  -944,  -142,  3604,     0, -1414,  1277,   511,
    1760      529,   298,   549,  1057,  1060,  1054,  1062,  1065, -1414,  -211,
    1761     -327,  5116,  -961,  -725,  -952, -1414,  -200,  -594,   572, -1414,
    1762     1379, -1414,   397, -1413, -1414, -1414,   129, -1414, -1160,  -935,
    1763      246, -1414, -1414, -1414, -1414,    68, -1131, -1414, -1414, -1414,
    1764    -1414, -1414, -1414,   321, -1152,    33, -1414,  -696, -1414,   506,
    1765      296, -1414,   169, -1414,  -339, -1414, -1414, -1414,   558,  -728,
    1766    -1414, -1414,    19,  -974,   177,  2303, -1414, -1414, -1414,   -91,
    1767    -1414,   166,   269,  -194,  1705,  3615, -1414, -1414,    36,   224,
    1768      628,  -235,  1694, -1414,  1557, -1414, -1414,   200,  2163, -1414,
    1769     2278,   185, -1414, -1414, -1414,  -607, -1414,   956,   957,   545,
    1770      725,  -320, -1414, -1414, -1414,   950,   719,  -493, -1414,  -472,
    1771     -355,  1296, -1414, -1414,  -899,  -946,   440,   524,  1067,   168,
    1772    -1414,  1040,   317,  -281,  -198,  -141,   672,   781, -1414,  1005,
    1773    -1414,  2834,    55,  -450,   932, -1414, -1414,   712, -1414,  -228,
    1774    -1414,   104, -1414, -1414, -1414, -1285,   420, -1414, -1414, -1414,
    1775     1178, -1414,    31, -1414, -1414,  -862,   -94, -1364,  -152,  1641,
    1776    -1414,  3733, -1414,   927, -1414,  -170,   493,  -184,  -183,  -181,
    1777        7,   -42,   -36,   -33,  1610,     4,    10,    14,  -143,  -177,
    1778     -172,  -162,  -161,  -319,  -513,  -508,  -498,  -547,  -310,  -528,
    1779    -1414, -1414,  -511,  1101,  1102,  1110,  1575,  4802,  -565,  -560,
    1780     -559,  -541,  -551, -1414,  -506,  -744,  -736,  -732,  -593,  -267,
    1781     -227, -1414, -1414,   624,   294,   -85, -1414,  3753,    44,  -634,
    1782     -173
     1757   -1310,  4585,  3220, -1310,  1680, -1310,    79,   965,  -162, -1310,
     1758     542,  -525,  -472,  -928,   -58,  5006,     0, -1310,   115,   571,
     1759     588,   220,   578,  1041,  1045,  1037,  1040,  1043, -1310,   682,
     1760    -568,  4467,  -949, -1310,  -743,   627,  -136,  -680,   399, -1310,
     1761     364, -1310,   400, -1052, -1310, -1310,   143, -1310, -1280, -1058,
     1762     249, -1310, -1310, -1310, -1310,    74, -1199, -1310, -1310, -1310,
     1763   -1310, -1310, -1310,   317, -1213,    36, -1310,  -398, -1310,   501,
     1764     296, -1310,   175, -1310,  -322, -1310, -1310, -1310,   558,  -827,
     1765   -1310, -1310,    14,  -963,    60,  1949, -1310, -1310, -1310,   -66,
     1766   -1310,    19,  1219,  -202,  1852,  4238, -1310, -1310,    54,    75,
     1767     689,  -242,  1416, -1310,  1975, -1310, -1310,   158,  2131, -1310,
     1768    2701,  1038, -1310, -1310, -1310,  -621, -1310,   944,   946,   541,
     1769     713,  -254, -1310, -1310, -1310,   938,   714,  -169, -1310,  -117,
     1770    -134,  1167, -1310, -1310,  -857,  -878,   837,   910,  1055,    25,
     1771   -1310,   900,   597,   -39,  -190,  -145,   668,   773, -1310,   993,
     1772   -1310,  2728,  1561,  -434,   920, -1310, -1310,   708, -1310,  -238,
     1773   -1310,   241, -1310, -1310, -1310, -1226,   414, -1310, -1310, -1310,
     1774    1165, -1310,    35, -1310, -1310,  -830,  -111, -1309,  -151,  3288,
     1775   -1310,  3069, -1310,   921, -1310,  -170,   169,  -182,  -181,  -166,
     1776       7,   -35,   -33,   -32,   813,     2,    29,    44,  -122,  -165,
     1777    -164,  -158,  -153,  -314,  -519,  -491,  -490,  -538,  -301,  -501,
     1778   -1310, -1310,  -512,  1078,  1084,  1085,  2540,  5063,  -571,  -588,
     1779    -558,  -543,  -557, -1310,  -503,  -733,  -723,  -722,  -570,  -311,
     1780    -274, -1310, -1310,   240,   176,   -77, -1310,  3991,   136,  -632,
     1781    -222
    17831782};
    17841783
     
    17861785   positive, shift that token.  If negative, reduce the rule which
    17871786   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1788 #define YYTABLE_NINF -526
     1787#define YYTABLE_NINF -521
    17891788static const yytype_int16 yytable[] =
    17901789{
    1791       50,   115,   151,   400,   401,   771,   402,    99,   152,   973,
    1792      403,   153,   429,   454,   874,   404,   756,   974,   408,  1080,
    1793      116,   975,   262,   441,   269,   405,   406,   744,   850,   384,
    1794      385,   605,    50,    51,  1142,   982,    70,   411,   833,    99,
    1795      610,   825,   826,   727,   149,   409,   499,   732,   154,  1150,
    1796       50,    31,  1398,   836,   155,  1462,   832,   163,   156,   843,
    1797      827,   800,   282,   145,   188,    51,  1208,   211,    70,   528,
    1798       50,   195,   343,   824,   218,   567,  1200,   228,    31,   597,
    1799      671,  -235,  -235,   400,   401,  1184,   402,   926,   821,   221,
    1800      403,  1318,   170,   822,   168,   404,   520,   737,   408,  1194,
    1801      680,  1217,  1218,   823,   738,   405,   406,   115,   684,   426,
    1802      568,   476,   478,  1550,    31,   115,   171,   124,   268,   273,
    1803      283,   254,   217,   412,    31,   409,  1209,   410,   715,  1462,
    1804     1210,  1182,  1183,  1561,    31,  1419,  1420,    31,   629,   244,
    1805     1565,   955,   633,   865,   866,   151,   675,   677,   308,   149,
    1806      412,   152,  -235,  1079,   153,  1481,   163,   115,   346,   168,
    1807     1319,   884,   211,   863,   863,   863,    64,   472,   973,   374,
    1808      722,   204,   477,    31,   217,   528,   974,    57,   117,  1260,
    1809      975,   853,   863,   920,   420,   854,   412,   188,   188,  1212,
    1810     1211,   154,   328,   578,   482,   163,   412,   155,    64,   579,
    1811       78,   156,   528,   268,   834,  1421,   602,   821,   528,    57,
    1812      956,    50,   822,   669,   731,  1190,   716,   217,   163,   938,
    1813      293,   205,   823,   211,    71,   151,   179,   674,   676,  1127,
    1814      444,   152,    78,   746,   153,  1213,  1087,   666,  -113,  -113,
    1815      863,   308,  1191,   841,   212,   602,  1263,   222,   580,   958,
    1816      412,   125,   216,    50,  -113,   437,    71,   589,   825,   826,
    1817       99,   273,   144,  1466,   667,  1026,   273,   268,   268,   836,
    1818      118,  1152,   506,   115,  1264,   163,   263,   827,   217,   264,
    1819      864,   864,   864,  1025,   464,   328,    51,   343,  1001,    70,
    1820     1013,   214,  1184,   610,   108,   108,   308,  1103,   804,   864,
    1821     1090,   146,  1343,   658,   216,   821,   113,   520,   308,   378,
    1822      822,   666,   520,   148,  1004,   520,   217,   437,   725,   161,
    1823      823,   217,  1199,  1508,   572,   379,   108,   477,   472,   149,
    1824     1200,   673,  1419,  1420,   448,   863,   374,   678,   667,   855,
    1825     -470,   157,   115,   856,   905,  1184,   346,   216,   472,   569,
    1826      603,   621,   168,   461,   597,   528,   472,   864,  1537,   597,
    1827     1539,  1466,  1080,   810,   108,   626,  1466,   388,   793,   626,
    1828      930,  -470,   115,  -470,  1492,   833,   260,  -470,  -113,   825,
    1829      826,   685,  1401,   389,   161,  1405,  1466,   579,   440,  1128,
    1830      599,  1182,  1183,  1466,   715,  1551,  1129,   268,   827,  -113,
    1831      442,  1191,  1430,   557,   558,   859,   217,   188,   216,     8,
    1832        9,    10,    11,    12,   374,   173,   850,   324,   183,    64,
    1833       43,   252,  1566,   876,   473,   268,   340,   308,   308,  1247,
    1834       57,   268,   837,  1251,   626,   571,   840,   412,    31,   559,
    1835      560,   343,   484,   391,    46,    47,   216,   443,   494,   501,
    1836      495,   216,   864,    78,   877,   115,   644,   857,    78,   392,
    1837      878,   860,   393,  1451,  1452,  1214,    34,  1170,  1172,  1184,
    1838     1138,   328,   328,   268,   203,   855,   431,    71,   394,  1110,
    1839      435,   268,   716,   626,   395,    50,   929,   217,   374,   721,
    1840     1200,   112,    99,    98,   736,   115,  1079,  1200,  1114,   499,
    1841      396,   249,    41,    42,  1148,  1259,   888,   308,   875,   115,
    1842      324,  1024,   308,  -291,   308,   308,  1457,   179,    51,   917,
    1843      610,    70,   754,  -521,   921,    98,   115,   346,  1341,   217,
    1844      763,   583,   923,   412,   630,  1342,   216,   150,   634,   328,
    1845      922,   112,   435,    98,  1026,   489,   919,   108,   924,    43,
    1846     1200,  -106,    41,    42,   921,  -106,   715,   191,   328,   466,
    1847       98,  1521,   886,    98,   753,   522,   412,  1526,   923,   254,
    1848     1091,   572,   572,    46,    47,   214,  1381,   161,   265,   308,
    1849      769,   995,  1006,    43,  1092,   473,  1094,   810,  1546,  1138,
    1850      626,   346,   472,  1553,   920,   621,  1197,  1097,   939,  1097,
    1851      602,   603,   331,   603,  1197,   473,  1332,    46,    47,   332,
    1852      706,   588,  1198,   473,  1334,   594,   707,   216,   935,    78,
    1853     1324,   626,  1333,   328,   751,  1024,   626,   812,   621,  1367,
    1854     1335,  1126,   626,  1368,   627,   626,   626,   626,   631,    78,
    1855     1382,   340,    98,   889,   716,   412,  -113,    78,  -113,   713,
    1856      217,    64,  -113,   -10,   626,    98,   268,   895,  1039,   216,
    1857      723,   112,    57,   343,  -444,   851,   724,  -113,  -113,  1037,
    1858      599,   733,    41,    42,   165,  1181,   810,   734,   217,  1029,
    1859      399,   191,   288,   217,  -445,    78,   115,   254,   330,   914,
    1860     1084,   553,   554,    41,    42,   750,   324,   324,   214,   231,
    1861     1348,   751,   929,   232,    98,   892,   236,   412,   238,    71,
    1862     1379,   550,   626,   940,   621,   247,    98,   551,   552,   515,
    1863      721,   721,  1122,  1154,   689,   412,   278,   959,   400,   401,
    1864      280,   402,  1044,   555,   556,   403,  1498,   118,   281,   165,
    1865      404,   333,   597,  1498,   408,   334,    98,   929,   115,   346,
    1866      405,   406,   335,   754,   754,   217,   112,   336,   141,   142,
    1867      480,   372,   489,   112,   324,   373,   489,    41,    42,   217,
    1868      377,   409,  1111,   113,    41,    42,   522,   112,   522,   108,
    1869      216,   522,   386,   324,   522,  1151,   973,  1429,    41,    42,
    1870      852,  1392,   994,   991,   974,   340,  1547,   899,   975,   572,
    1871     1249,   390,  1350,   751,   715,   398,   867,   626,   216,   626,
    1872      901,  1009,   410,   216,   626,   346,   751,   990,   603,   743,
    1873      427,   883,    98,   991,   739,   343,   740,  1003,  1174,   741,
    1874      603,   428,   747,   707,   764,   436,  1039,   743,   433,   770,
    1875      743,   451,   231,   604,   529,   530,   531,   443,   324,   473,
    1876      112,   812,   141,   142,  1245,   781,   782,   783,   784,   808,
    1877      579,    41,    42,  1292,  1293,  1375,   217,  1166,   532,   412,
    1878      533,   751,   534,   535,  1500,   473,  1501,  -368,  1376,  -397,
    1879     1378,   308,   462,    78,   751,   216,   751,  1383,   466,   870,
    1880      849,   505,   716,   751,  1169,   594,   602,   436,   463,   216,
    1881      191,   858,   501,   626,  1195,   704,  1171,   810,   602,    78,
    1882      115,   346,   914,  1447,   914,   713,   929,    70,   485,  1444,
    1883      524,  1467,  1514,  1571,   214,   666,   115,   751,  1515,   579,
    1884      917,  1548,   165,   293,  1256,  1370,   412,   509,   214,   940,
    1885      940,   529,   530,   531,   721,   254,   330,   412,   514,   115,
    1886      308,   528,   667,   561,   562,   689,   526,   919,    49,   114,
    1887      885,   563,   887,   751,   996,   532,   346,   533,  1115,   534,
    1888     1321,   716,   565,    37,   330,   412,   754,    40,    98,   929,
    1889      929,   231,   604,   236,    41,    42,   564,   114,   114,   705,
    1890       49,  1388,  1389,   489,   328,    43,   216,  1439,   991,  1533,
    1891     1444,  1445,    49,  1300,  1301,   566,  1303,   569,    49,   346,
    1892       44,   339,   934,  1308,  -441,  1310,    49,   340,   587,    46,
    1893       47,   694,    49,  1240,   590,    49,  1493,  1494,    49,    -3,
    1894      626,   626,   420,   662,   412,   214,     2,   208,     4,     5,
    1895        6,     7,   114,   114,   482,   330,   412,    64,   639,  1138,
    1896      308,  1419,  1420,   851,   834,   330,   602,   659,    57,     8,
    1897        9,    10,    11,    12,   777,   778,    49,   217,   668,    49,
    1898      143,   231,   660,   661,  1446,   663,    49,   713,  1005,   693,
    1899      664,    78,   665,   808,   779,   780,  1202,   670,    31,   259,
    1900      115,   697,  1459,   695,   820,   914,   604,  1311,  1312,  1313,
    1901      914,    35,   699,    36,  -239,    71,   735,    49,   748,   940,
    1902      785,   786,   704,   752,   959,    49,    34,   268,   959,   959,
    1903       49,  1349,  1351,  1352,   243,   246,  1116,   760,   813,   -12,
    1904      814,   524,   817,   524,   626,   343,   524,   828,   -13,   524,
    1905     -292,   872,   873,    43,   880,    49,    49,     8,     9,    10,
    1906       11,    12,   900,   902,   724,   907,   903,   910,   571,   346,
    1907      412,    49,   928,  -418,    -3,  1519,  1459,    46,    47,    49,
    1908     -525,   943,   808,   950,   964,   108,    31,  1425,    49,   340,
    1909      952,    49,   918,   957,   963,   965,   967,   968,   114,   969,
    1910      929,   970,   986,   998,   999,   689,   705,   216,  1000,  1015,
    1911     1016,   273,   115,   114,    34,  1017,  1018,   114,   929,  1019,
    1912     1020,    49,   114,   820,   604,  1021,   473,   489,  1117,   324,
    1913      115,   221,  1032,  -406,   308,    49,    49,    57,  -405,    37,
    1914     1081,  1046,    49,    40,  1083,   704,   443,  1339,   626,    49,
    1915       41,    42,   115,   108,   913,   704,   112,  1105,   141,   240,
    1916       78,    43,   112,  1104,   141,   142,   217,    41,    42,   704,
    1917       70,  1115,  1106,    41,    42,  1107,   818,   751,   602,  1131,
    1918     1113,  1123,  1124,  1125,    71,    46,    47,  1134,   849,  1130,
    1919      980,   929,   929,   241,  1140,   458,  1135,    49,   242,   728,
    1920      626,   626,  1136,  1144,   729,  1137,   743,  1164,  1144,   273,
    1921     1143,  1187,  1185,  1442,   308,  1186,  -293,    49,    49,  1188,
    1922      693,   820,  1559,     8,     9,    10,    11,    12,  1189,   705,
    1923     1203,  1204,  1206,   604,    49,   713,  1207,  1399,    49,   705,
    1924     1215,  1399,  1219,    -3,  1220,  1222,  1227,   115,  1232,   645,
    1925     1202,  1237,    31,   705,   108,  1235,   400,   401,  1144,   402,
    1926     1241,  1246,   494,   403,   217,    49,  1115,  1248,   404,   689,
    1927     1253,   408,  1254,  1261,  1250,    49,  1268,  1270,   405,   406,
    1928       34,     2,   208,     4,     5,     6,     7,  1265,   212,   222,
    1929     1272,  1273,  1302,    49,  1274,   666,   216,  1275,   409,    49,
    1930       64,    49,  1276,  1278,  1285,  1305,  1294,   268,  1295,  1306,
    1931      230,    57,  1323,   808,   713,  1093,   131,   918,   132,   133,
    1932      134,  1532,   667,  1307,  1330,   626,  1336,    41,    42,  1116,
    1933     1309,   646,  1317,  1338,    78,   214,   114,  1340,  1344,  1346,
    1934     1347,    49,  1353,  1482,  1354,   175,    35,   604,    36,    49,
    1935      115,  1355,  1357,    49,  1363,  1364,  1365,    49,    71,  1366,
    1936      114,  1377,   114,  1068,    37,  1373,   176,   177,    40,  1115,
    1937     1374,  1384,  1385,  1313,   115,    41,    42,   704,   704,  1393,
    1938      473,   115,   645,   115,  1394,   115,   442,  1395,   255,  1402,
    1939     1413,    57,  1405,  1414,   216,  -407,  1417,   114,   151,   340,
    1940      645,   373,   114,   645,   152,  1428,   108,   153,  1432,  1436,
    1941     1202,  1434,  1437,  1443,    78,  1531,  1448,  1202,  1438,  1453,
    1942      115,  1117,   115,  1368,  1116,  1458,  1454,  1455,   108,  1456,
    1943     1472,  1463,  1474,   443,   115,   704,   704,  1468,    71,  1476,
    1944     1531,  1531,   726,  1470,   730,  -294,   108,  1478,   163,  1485,
    1945      308,   114,     8,     9,    10,    11,    12,  1480,    49,  1486,
    1946      693,   705,   705,  1487,    37,  1531,  1488,    76,    40,    49,
    1947     1202,    49,   374,   511,  1441,    41,    42,  1499,  1144,  1144,
    1948     1144,    31,  1509,  1511,   418,  1513,    43,  1517,  1518,  1525,
    1949       49,  1540,  1541,  1545,   328,   548,   549,  1554,   918,    76,
    1950     1552,   720,   112,   918,   141,   142,    49,   438,   108,    34,
    1951       46,    47,   114,    41,    42,  1556,  1117,   446,  1562,   705,
    1952      705,    49,  1569,   114,    49,   114,  1570,  1116,  1221,   789,
    1953      787,  1322,  1520,   548,   788,  1205,   743,   224,   790,  1431,
    1954      473,   108,   791,  1572,   245,  1387,  1252,   473,  1403,  1226,
    1955     1502,    57,   908,   909,  1098,  1234,  1102,    49,    57,   931,
    1956      806,   114,  1139,   114,  1045,   879,   945,   114,  1112,   548,
    1957      164,   953,  1331,   718,    78,   114,     0,   126,   129,   130,
    1958        0,    78,   796,   797,   196,   521,  1328,   219,    49,    49,
    1959      229,   798,     0,     0,   871,     0,     0,     0,    71,     0,
    1960      473,     0,    49,     0,     0,    71,    37,     0,   176,   177,
    1961       40,    57,     0,   178,     0,    67,   119,    41,    42,  1117,
    1962        0,   704,  1144,  1144,   693,   354,     0,     0,     0,   704,
    1963      704,   704,     0,     0,    78,     2,   208,     4,     5,     6,
    1964        7,     0,     0,   925,   108,   927,     0,    67,     0,   458,
    1965        0,   256,  1505,   257,  1505,     0,     0,     0,    71,     0,
    1966     1483,     0,     0,   178,     0,   162,   178,     0,   108,   164,
    1967     1329,   215,     0,     0,     0,   108,   414,     0,     0,     0,
    1968        0,   234,   375,   422,     0,   223,    49,     0,     0,  1505,
    1969        0,  1505,     0,     0,     0,   704,     0,     0,    49,   450,
    1970       35,     0,    36,     0,     0,   705,  1068,     0,   164,     0,
    1971        0,     0,   178,   705,   705,   705,     0,     0,     0,   324,
    1972       76,  1534,   261,   215,     0,    76,     0,     0,   108,     0,
    1973     1542,   164,     0,   682,   397,     0,     0,   774,   775,   776,
    1974        0,   645,     0,   445,   416,   417,     0,     0,   114,   421,
    1975        0,   423,   424,     0,     0,   414,     0,     0,    37,   708,
    1976      176,   177,    40,     0,   329,     0,   215,     0,     0,    41,
    1977       42,    49,   261,   351,     0,   178,     0,     0,     0,   705,
    1978       49,     0,    49,     0,     0,     0,     0,     0,    37,   114,
    1979      185,   186,    40,     0,     0,   377,   521,     0,     0,    41,
    1980       42,   521,  1391,   407,   521,     0,     0,     0,     0,   577,
    1981       43,     0,    49,     0,     0,     0,     0,   581,   425,   224,
    1982      584,   430,   432,   646,     0,   187,   162,   215,     0,   178,
    1983     1049,     0,   114,     0,    46,    47,   178,     0,     0,     0,
    1984        0,     0,     0,     0,     0,     0,     0,   449,   645,   375,
    1985        0,   452,     0,   453,     0,     0,   114,  1418,     0,   645,
    1986     1426,   114,   460,     0,     0,   215,     0,     0,    67,     0,
    1987      215,  1099,     0,   474,     0,     0,     0,     0,   898,     0,
    1988        0,     0,     0,   481,   414,   500,    76,     0,   422,     0,
    1989        0,   432,     0,     0,     8,     9,    10,    11,    12,     0,
    1990        0,   354,     0,     0,   178,  1465,    76,     0,     0,     0,
    1991     1469,   114,     0,     0,    76,     8,     9,    10,    11,    12,
    1992        0,   178,     0,    31,     0,   178,     0,   375,     0,     0,
    1993      646,     0,   354,   480,     0,     0,     0,     0,     0,     0,
    1994     1491,     0,     0,     0,    31,     0,     0,   981,     0,   114,
    1995      354,    34,    76,     0,     0,   215,     0,   261,     0,     0,
    1996      897,   595,     0,    49,     0,   414,     0,   623,    49,   904,
    1997        0,     0,    34,   906,     0,     0,     0,     0,    43,     0,
    1998      628,     0,     0,     0,   628,    49,     0,   261,   178,     0,
    1999        0,     0,     0,   753,   354,   412,     0,     0,     0,    43,
    2000        0,   997,    46,    47,     0,     0,     0,  1506,     0,  1506,
    2001        0,  1002,     0,     0,   939,     0,   602,     0,     0,     0,
    2002        0,     0,     0,    46,    47,  1014,  1560,     0,     0,     0,
    2003        0,  1049,  1560,     0,   474,     0,   215,     0,     0,     0,
    2004        0,     0,     0,  1560,  1506,     0,  1506,  1560,    37,   351,
    2005      185,   186,    40,   215,   474,     0,   577,   577,   354,    41,
    2006       42,     0,   474,     0,    37,   114,   185,   186,    40,     0,
    2007       43,     0,     0,    79,     0,    41,    42,     0,   215,     0,
    2008      700,     0,     0,   432,     0,   912,    43,   412,    49,     0,
    2009        0,     0,     0,   913,    46,    47,     0,     0,   714,     0,
    2010       67,   267,   354,   354,   354,    79,     0,     0,   432,     0,
    2011       46,    47,   432,     0,     0,     0,     0,     0,     0,     0,
    2012        0,   354,     0,     0,     0,     0,   801,   802,     0,     0,
    2013        0,   114,   114,   114,     0,     0,     0,     0,     0,   354,
    2014        0,   261,   351,   225,   890,   178,     0,  1298,   893,     0,
    2015       76,     0,     0,     0,     0,   835,     0,     0,   838,   839,
    2016        0,   842,     0,   844,   845,     0,     0,     0,   846,   847,
    2017        0,     0,     0,     0,     0,     0,    76,   178,     0,   354,
    2018        0,     0,     0,     0,     0,     0,     0,   799,    81,   645,
    2019        0,     0,     0,   178,  1089,     0,   548,     0,     0,   215,
    2020        0,     0,     0,     0,     0,   628,   811,     0,   178,     0,
    2021        0,     0,     0,    58,    58,     0,   354,     0,   830,     0,
    2022       81,     0,     0,     0,     0,     0,     0,   215,     0,     0,
    2023        0,   356,   215,  1179,  1180,     0,   595,   511,     0,     0,
    2024        0,   595,     0,     0,     0,    58,     0,   628,     0,     0,
    2025      351,   351,   351,     0,     0,     0,     0,     0,   226,     0,
    2026        0,     0,   354,     0,    49,    49,     0,     0,     0,   351,
    2027        0,     0,   354,     0,   354,   114,   114,     0,     0,   224,
    2028       58,     0,   354,    58,   577,     0,   354,   700,     0,   178,
    2029        0,  1229,  1230,     0,     0,     0,     0,     0,   474,     0,
    2030        0,     0,     0,     0,   215,     0,     0,     0,     0,   978,
    2031      979,     0,     0,   114,     0,     0,     0,     0,   215,     0,
    2032        0,     0,     0,     0,   474,     0,    79,   351,     0,     0,
    2033        0,    79,     0,     0,     0,     0,   944,     0,   500,   432,
    2034       37,     0,   185,   186,    40,     0,   357,     0,    76,     0,
    2035     1216,    41,    42,     0,    37,     0,   185,   186,    40,     0,
    2036        0,     0,    43,   261,   714,    41,    42,     0,     0,   976,
    2037        0,   349,     0,    49,   114,     0,    43,   601,   354,   602,
    2038        0,     0,     0,   114,     0,     0,    46,    47,     0,     0,
    2039        0,   912,     0,   412,     0,     0,     0,     0,    49,    49,
    2040       46,    47,     0,   414,     0,     0,     0,     0,     0,     0,
    2041      700,     0,     0,     0,     0,   215,     0,     0,     0,     0,
    2042      700,     0,   351,    49,   628,   225,     0,  1012,     0,   628,
    2043      811,     0,     0,   354,   700,     0,    58,     0,     0,     0,
    2044        0,    81,     0,     0,  1023,     0,    81,   536,   537,   538,
    2045      539,   540,   541,   542,   543,   544,   545,     0,   178,     0,
    2046        0,     0,     0,     0,     0,     0,    58,    37,     0,   185,
    2047      186,    40,     0,     0,  1100,     0,     0,  1356,    41,    42,
    2048        0,   546,     0,  1155,     0,  1358,  1359,  1360,     0,    43,
    2049        0,     0,    79,     0,   354,   354,    67,   354,   354,     0,
    2050     1167,     0,     0,     0,  1530,     0,   412,   356,     0,     0,
    2051        0,     0,    79,    46,    47,     0,     0,    76,   628,     0,
    2052       79,     0,     0,     0,     0,   261,   714,     0,     0,  1095,
    2053        0,     8,     9,    10,    11,    12,     0,     0,   356,     0,
    2054      226,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2055        0,  1406,   354,   354,     0,  1109,   356,     0,    79,     0,
    2056       31,     0,     0,   432,   119,     0,     0,     0,     0,     0,
    2057        0,     0,     0,     0,     0,     0,     0,     0,   414,     0,
    2058        0,   351,     0,     0,     0,     0,     0,     0,    34,     0,
    2059        0,     0,     0,    37,     0,   185,   186,    40,     0,     0,
    2060      356,     0,  1386,     0,    41,    42,     0,    81,     0,     0,
    2061        0,     0,     0,     0,     0,    43,   215,     0,     0,     0,
    2062     1257,     0,   357,     0,   595,     0,   354,    81,     0,     0,
    2063      601,     0,   602,     0,     0,    81,     0,   430,  1231,    46,
    2064       47,     0,   700,   700,     0,   351,   351,   349,     0,     0,
    2065        0,     0,     0,   357,     0,     0,     0,     0,     0,     0,
    2066        0,     0,     0,     0,   356,  1201,     0,     0,     0,   224,
    2067        0,   357,     0,    81,     0,     0,     0,     0,     0,     0,
     1790      49,   114,   453,   428,   399,   400,   268,    98,   150,   766,
     1791     151,   152,   819,   973,   868,   115,   964,   407,   752,    63,
     1792     401,   402,   403,   358,   383,   384,   965,   966,   404,   261,
     1793     440,   827,    49,   405,   596,   604,    50,   410,   498,    98,
     1794     357,   740,   820,   148,  1070,   153,   830,  1069,   609,    49,
     1795     844,    63,   837,   948,    69,  1137,   162,   821,   725,   794,
     1796      56,   116,   730,   187,   826,   408,   210,   144,    50,    49,
     1797     194,   919,   154,   217,   409,    70,   227,  1187,    31,   342,
     1798     112,   815,   178,   220,   399,   400,    69,   155,   281,  1439,
     1799     628,   425,    56,  1302,   632,  1379,   669,   407,   123,   818,
     1800     401,   402,   403,  1204,  1205,  1181,   114,    70,   404,   816,
     1801     817,   475,   477,   405,   114,  1195,   678,   267,   272,   476,
     1802     505,  1197,  1443,  1177,   682,    31,   211,   923,    31,   221,
     1803     203,   124,   262,    31,    31,   263,   566,    31,   527,   493,
     1804      31,   213,   494,  1171,   527,   408,   282,   307,   148,  1178,
     1805     411,   150,   145,   151,   152,   162,   114,   345,    77,   519,
     1806    1439,   210,  1303,  1169,  1170,  1117,  -231,  -231,   373,    97,
     1807     567,   714,   964,   143,   720,  1196,   107,   107,  1199,  1245,
     1808     204,  1198,   965,   966,   913,   167,   187,   187,   153,   476,
     1809      77,   471,   949,  1458,   162,   253,   147,   411,   419,   815,
     1810     411,    97,   267,   481,   828,   411,   601,   835,   107,   601,
     1811      49,   568,   149,  1186,   287,   154,  1443,   162,    97,   527,
     1812     667,  1443,   210,  1200,   819,    41,    42,   816,   817,   443,
     1813     155,   150,   190,   151,   152,    97,   664,  -231,    97,  1484,
     1814     307,  1443,  1248,  1139,   439,   107,   156,  1077,  1443,   292,
     1815     167,   514,    49,  1016,   820,   182,   169,   830,   172,    98,
     1816     272,  1398,  1399,   202,   588,   272,   267,   267,   723,   821,
     1817    1249,    63,   114,  1512,   162,  1514,   472,   527,   951,  1080,
     1818     170,   991,   441,   327,   665,   656,  1015,   463,    50,   164,
     1819     672,   674,  1093,   815,   342,   307,  -287,   442,   483,   358,
     1820    1468,   609,  1526,   248,  1382,   500,    69,   307,   251,   596,
     1821     664,  1003,    56,   671,   596,   804,   357,    97,  -119,   676,
     1822    -119,   816,   817,   571,  -119,  1187,  1178,    70,   148,  1541,
     1823      97,  1400,   465,  1398,  1399,   373,  -516,   527,  1084,  -119,
     1824    -119,   114,   734,  1118,   819,   345,   436,  1171,   713,   602,
     1825     620,   579,   471,   411,   164,   398,   190,   853,   665,   898,
     1826     253,   377,   827,  1119,   625,   735,   556,   557,   625,  1201,
     1827     519,   114,   471,   178,   820,   519,   327,   378,   519,    97,
     1828     471,  1070,   831,  1116,  1069,   736,   834,   673,   675,   821,
     1829     629,    97,   358,   111,   633,   847,   267,  1171,   747,   848,
     1830     510,   558,   559,  1409,    41,    42,   187,   851,   436,   357,
     1831      77,   854,   986,   373,  1496,    77,  1325,  1169,  1170,   174,
     1832    1501,    97,   547,   548,   267,   213,   307,   307,   107,   844,
     1833     267,   787,   759,   625,   714,   479,  1326,   472,   849,  1423,
     1834    1521,   577,   850,   167,   870,  1528,   642,   578,   342,  1525,
     1835     435,  1157,  1159,  1424,   114,   729,   358,   472,  1428,  1429,
     1836     547,  1362,   254,   871,  1126,   472,   859,   860,   264,  1536,
     1837     447,   849,   267,   357,   742,  1100,  1540,   387,  1187,   330,
     1838     267,   598,   625,   877,    49,  1187,  1469,   373,   719,   460,
     1839     498,    98,   683,   388,   114,  1244,   547,    97,   578,   390,
     1840    1470,   711,   869,    63,   888,   881,   307,  1104,   114,  1135,
     1841    1014,   307,   435,   307,   307,   391,  1171,   910,   603,   -10,
     1842      50,   750,  -440,   609,   392,   114,   345,  -441,  1016,   996,
     1843     582,  -467,   411,  -467,   804,   523,  1187,  1434,    69,   798,
     1844     393,   931,   277,   879,    56,   394,   112,   164,   213,  1236,
     1845    -467,     2,   207,     4,     5,     6,     7,   914,   417,    70,
     1846     704,   395,   327,   327,   916,   912,   705,   914,   916,  1184,
     1847     571,   571,  1184,   915,   952,   190,    77,   279,   307,  1316,
     1848     917,   437,  1126,  1081,  1082,  1185,   280,   913,  1308,   625,
     1849     345,   445,   549,   714,   620,  1317,    77,  1318,   550,   551,
     1850     602,   747,   602,   882,    77,   411,   331,   760,  1360,  1276,
     1851    1277,   713,   765,  1319,  1474,   471,    35,  1363,    36,   332,
     1852     625,  1474,   804,  1014,  1019,   625,   111,   620,   140,   239,
     1853     327,   625,   994,   333,   625,   625,   625,    41,    42,   111,
     1854     334,   928,    77,  -102,   806,   335,   846,  -102,   371,   327,
     1855      41,    42,   625,    97,   267,   372,  1087,   603,  1087,   520,
     1856     107,   465,   861,   240,   768,   769,   770,   342,   241,  1348,
     1857     376,  1027,  1522,  1349,   111,   358,   876,   385,   111,    -3,
     1858     140,   141,  1408,   389,   114,    41,    42,   907,   596,    41,
     1859      42,  1074,   357,   885,   691,   411,   111,   442,   140,   141,
     1860     472,   528,   529,   530,  1141,  1112,   411,    41,    42,   397,
     1861     625,   933,   620,   764,   327,   726,  1101,  1234,   719,   719,
     1862     727,  1238,  1034,   399,   400,   531,   472,   532,   409,   533,
     1863     534,  1153,   878,   411,   880,   432,   721,   407,   244,   401,
     1864     402,   403,   722,   426,   114,   345,   523,   404,   523,   750,
     1865     750,   523,   405,  1156,   523,   601,   845,   500,  1158,   230,
     1866     601,   598,   427,   231,   711,  1476,   235,  1477,   237,   814,
     1867     713,   603,   964,   213,   450,   246,   775,   776,   777,   778,
     1868    1373,  -288,   965,   966,   927,   408,  -364,   213,     8,     9,
     1869      10,    11,    12,   571,     2,   207,     4,     5,     6,     7,
     1870     731,   625,  1241,   625,   411,   999,   732,   680,   625,   345,
     1871    1161,  -393,   602,   570,  1425,   411,   111,    31,   140,   141,
     1872    1523,    45,    46,   229,   602,   111,   342,    41,    42,   484,
     1873    1436,   461,   746,   706,   462,   714,    41,    42,   747,    77,
     1874       8,     9,    10,    11,    12,    34,    37,   892,   804,   504,
     1875      40,   253,   329,   747,   292,   864,   911,    41,    42,    35,
     1876     894,    36,   163,   806,  1330,    77,   747,   980,   508,    31,
     1877     520,   972,   513,   981,   307,   520,   195,   525,   520,   218,
     1878     213,   527,   228,   812,   562,   601,  1168,   814,   603,   993,
     1879    1182,    45,    46,    63,   563,   705,   625,    34,   554,   555,
     1880    1494,  1436,   230,   114,   345,   907,   111,   907,     2,   207,
     1881       4,     5,     6,     7,   714,   664,  1232,    41,    42,   114,
     1882     910,   564,   578,   711,   691,  1356,   565,   749,    69,   411,
     1883     142,   747,   933,   933,    56,    45,    46,   719,   568,   570,
     1884      37,   411,   114,   307,    40,  1332,   338,    45,    46,    70,
     1885    -437,    41,    42,   952,  1357,   586,  1105,   952,   952,   589,
     1886     747,   163,   932,   665,   601,    48,   113,   750,   912,    -3,
     1887      45,    46,   657,    35,   374,    36,  1359,    43,  1508,   552,
     1888     553,   814,   747,   242,   245,    45,    46,   638,     8,     9,
     1889      10,    11,    12,   603,   113,   113,  1227,    48,  1364,   345,
     1890     163,   658,  1106,   659,   747,   560,   561,    37,    48,   184,
     1891     185,    40,   713,   111,    48,   140,   141,    31,    41,    42,
     1892     625,   625,    48,   163,    41,    42,   661,  1126,    48,   984,
     1893     981,    48,    77,   890,    48,   444,  1121,   253,   329,   411,
     1894     307,   230,   897,   235,   186,    34,   899,   662,   113,   113,
     1895     107,   666,    45,    46,  1284,  1285,    37,  1287,  1132,   472,
     1896      40,   663,  1132,  1426,  1292,  1444,  1294,    41,    42,  1423,
     1897     668,   747,    48,  1323,  1083,    48,   911,   442,  1490,   327,
     1898     114,   258,    48,   692,  1491,   907,  1546,   749,   693,   411,
     1899     907,   695,   578,   718,  1189,    45,    46,   329,   411,   933,
     1900      56,    45,    46,   737,   215,   738,   603,   267,   739,  1369,
     1901    1370,   743,  1132,    48,   547,    70,  1418,   981,   107,  1398,
     1902    1399,    48,   625,   771,   772,    37,    48,   184,   185,    40,
     1903     342,   230,   419,   660,   411,   845,    41,    42,   779,   780,
     1904    1351,   374,   773,   774,   457,   697,   345,  -235,   481,   329,
     1905     411,    48,    48,   733,   744,   510,   215,   748,   756,   691,
     1906    1380,   807,   266,   873,  1380,   711,   808,    48,   811,  -289,
     1907      45,    46,   828,   329,   601,    48,     8,     9,    10,    11,
     1908      12,  1295,  1296,  1297,    48,   822,   867,    48,   272,   114,
     1909    1331,  1333,  1334,   893,   113,   -12,   -13,   866,    77,   215,
     1910     895,   896,   900,   220,   903,    31,   921,   114,  -414,   113,
     1911    -520,   307,   936,   113,   943,   722,   107,    48,   113,   374,
     1912     117,   945,  1404,   956,   130,   625,   131,   132,   133,   114,
     1913      63,    48,    48,    34,   950,    41,    42,   957,    48,   958,
     1914     959,   960,   961,  1105,   711,    48,   988,   989,   211,   221,
     1915     990,   977,  1005,  1006,   911,  1007,  1008,  1009,  1010,   911,
     1916     215,  1459,  1079,   213,  1011,    69,  1022,  1421,   160,  -402,
     1917    -401,    56,  1036,  1058,   625,   625,  1071,  1534,  1094,   906,
     1918     644,  1073,  1096,   272,  1097,  1095,    70,  1103,   307,  1106,
     1919    1113,   747,  1114,    48,  1115,  1120,  1122,   971,   215,  1123,
     1920    1124,   702,  1125,   215,  1128,  1131,  1151,   472,  1174,  1175,
     1921    1172,  1173,  1176,    48,    48,     8,     9,    10,    11,    12,
     1922     691,   114,  1190,   399,   400,   259,  1191,  1132,  1132,  1132,
     1923      48,  1193,  1194,   160,    48,  1105,   407,  1202,  1206,   401,
     1924     402,   403,  1189,   441,    31,   643,  -290,   404,    56,  1207,
     1925    1209,    -3,   405,     8,     9,    10,    11,    12,   442,  1214,
     1926     664,    48,  1219,    70,  1224,   107,   323,   493,  1222,    77,
     1927    1507,    48,    34,  1228,   703,   339,  1233,   922,   267,  1235,
     1928    1237,  1106,    31,  1240,   408,  1250,  1246,   107,   215,    48,
     1929    1252,   724,  1254,   728,   625,    48,  1256,    48,  1257,  1258,
     1930    1262,  1259,  1420,  1260,  1269,   107,  1278,  1279,   665,    37,
     1931      34,   175,   176,    40,   932,  1203,   601,  1286,  1307,   114,
     1932      41,    42,    45,    46,    37,   430,   175,   176,    40,   434,
     1933    1289,  1290,   113,  1105,  1291,    41,    42,    48,  1293,  1301,
     1934    1314,   114,  1192,  1320,  1322,    48,    77,  1328,   114,    48,
     1935     114,  1324,   114,    48,  1329,  1358,   113,  1335,   113,   323,
     1936     472,   372,  1336,  1338,   107,  1132,  1132,   472,   985,   215,
     1937     150,  1344,   151,   152,  1345,  1346,  1347,  1297,  1365,  1106,
     1938    1354,  1506,   214,  1355,  1366,  1383,   114,  1374,   114,  1375,
     1939    1376,   434,   233,   113,   488,  1189,  1392,   107,   113,   114,
     1940    1393,    56,  1189,  1460,  -403,  1506,  1506,   702,    56,  1396,
     1941    1407,   215,  1415,   162,   521,   307,    70,  1411,   472,  1413,
     1942     528,   529,   530,    70,  1416,  1417,   160,  1422,  1430,    37,
     1943    1506,   175,   176,    40,   214,  1431,  1432,   373,  1433,  1435,
     1944      41,    42,   865,  1349,   531,  1029,   532,   113,   533,  1305,
     1945    1440,  1445,  1449,  1189,    48,  1451,  1447,  1453,  1455,    56,
     1946     587,  1509,  1457,  1462,   593,    48,   376,    48,  1463,  1464,
     1947    1517,  1475,  1492,  1485,    70,  1487,  1500,   214,  1493,  1489,
     1948     703,  1515,  1516,   626,  1520,  1527,    48,   630,   922,  1529,
     1949     339,   918,  1531,   920,  1544,   107,  1545,   457,  1208,    77,
     1950    1537,   783,    48,   781,  1130,   784,    77,   113,   782,   785,
     1951    1058,  1306,  1495,  1410,  1547,  1368,    48,   107,   113,    48,
     1952     113,  1239,  1384,  1478,   107,  1088,   702,   216,   901,  1213,
     1953     902,  1221,   215,   922,  1092,   924,   702,   800,   214,  1127,
     1954    1035,   872,   938,  1315,   243,   323,   323,  1102,   790,   716,
     1955     702,   327,    48,   946,   791,   792,   113,    77,   113,     0,
     1956     215,  1367,   113,     0,     0,   215,     0,     0,  1138,     0,
     1957     113,     0,     0,   687,   479,   107,   214,     0,     0,   216,
     1958       0,   214,     0,    48,    48,     0,   117,     0,     0,     0,
     1959    1482,     0,  1482,     0,     0,     0,   499,    48,     0,   703,
     1960       0,     0,     0,  1372,     0,     0,     0,     0,     0,   703,
     1961       0,   488,     0,   323,     0,   488,     0,     0,     0,  1029,
     1962       0,     0,   216,   703,     0,   521,  1482,   521,  1482,     0,
     1963     521,     0,   323,   521,     0,     0,   215,   177,     0,     8,
     1964       9,    10,    11,    12,   339,     0,     0,     0,     0,    37,
     1965     215,   184,   185,    40,     0,  1397,     0,     0,  1405,     0,
     1966      41,    42,     0,     0,     0,     0,   214,   644,    31,     0,
     1967       0,     0,     0,  1039,     0,     0,     0,    48,     0,     0,
     1968       0,     0,     0,   216,     0,     0,   905,   177,   411,    48,
     1969     177,     0,     0,     0,    45,    46,    34,   323,     0,   922,
     1970       0,  1442,     0,     0,     0,     0,  1446,   906,   802,     0,
     1971       0,     0,     0,  1479,  1089,  1483,     0,     0,     0,     0,
     1972       0,   216,     0,     0,     0,     0,   216,     0,     0,     0,
     1973       0,     0,   643,     0,  1467,     0,   177,   891,   113,   843,
     1974       0,     0,     0,   215,   593,     0,     0,   214,     0,  1511,
     1975     852,  1513,    66,   118,   702,   702,     0,     0,     0,   922,
     1976     922,    48,     0,     0,   214,     0,     0,     0,     0,     0,
     1977      48,   644,    48,     0,     0,     0,     0,     0,     0,   113,
     1978       0,     0,     0,     0,    66,     0,     0,     0,     0,   214,
     1979       0,     0,     0,  1542,     0,  1543,     0,     0,     0,   177,
     1980       0,   161,    48,   687,     0,     0,     0,     0,  1550,  1551,
     1981       0,   216,   702,   702,     0,     0,     0,     0,  1535,     0,
     1982       0,   222,   113,     0,  1535,     0,     0,   703,   703,     0,
     1983       0,     0,     0,     0,     0,  1535,   643,     0,     0,  1535,
     1984       0,   488,     0,     0,   113,     0,     0,     0,   113,    57,
     1985      57,     0,     0,   177,     0,     0,   987,     0,   260,     0,
     1986     177,     0,     0,   339,     0,     0,   992,     0,     0,     0,
     1987       0,  1039,     0,     0,     0,    75,     0,     0,     0,     0,
     1988    1004,    57,     0,     0,     0,   703,   703,     0,     0,     0,
     1989       0,     0,   216,     0,     0,     0,     0,     0,   113,     0,
     1990     328,     0,     0,     0,     0,     0,     0,    75,   260,   350,
     1991     214,     0,     0,     0,     0,    57,     0,     0,    57,     0,
     1992       0,     0,   995,     0,     0,     0,     0,   802,   177,     0,
     1993       0,     0,     0,     0,   216,     0,   113,     0,   214,   406,
     1994     215,     0,     0,   214,   223,   177,     0,     0,     0,   177,
     1995      48,     0,     0,     0,   424,    48,     0,   429,   431,     0,
     1996    1312,     0,   161,     0,   922,     0,     0,     0,     0,     0,
     1997       0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
     1998     922,     0,     0,   448,  1282,     0,     0,   451,     0,   452,
     1999       0,     0,   702,     0,     0,     0,     0,     0,   459,     0,
     2000     702,   702,   702,     0,    66,     0,   348,     0,     0,   473,
     2001       0,     0,   177,     0,   214,   802,     0,     0,     0,   480,
     2002       0,     0,   339,     0,     0,     0,     0,   431,   214,     0,
     2003       0,    78,   353,  1313,     0,     0,     0,     0,   687,     0,
     2004       0,    37,     0,   184,   185,    40,     0,     0,   499,   113,
     2005     922,   922,    41,    42,     0,   216,     0,     0,     0,     0,
     2006     488,  1107,   323,    78,   702,   703,     0,     0,     0,     0,
     2007       0,    57,    48,   703,   703,   703,     0,     0,   600,     0,
     2008     601,     0,     0,   216,  1166,  1167,    45,    46,   216,     0,
     2009       0,     0,     0,   260,     0,     0,     0,   594,     0,     0,
     2010     224,    57,     0,   622,     0,     0,   449,     0,     0,     0,
     2011       0,     0,     0,   113,   113,   113,   627,     0,   843,     0,
     2012     627,   214,     0,   260,     0,     0,   215,    75,     0,     0,
     2013       0,     0,    75,     0,     0,     0,     0,   703,     0,     0,
     2014       0,     0,  1216,  1217,     0,     0,     0,     0,     0,     0,
     2015      37,     0,   184,   185,    40,     0,     0,     0,     0,   216,
     2016       0,    41,    42,    37,     0,   184,   185,    40,     0,   177,
     2017     473,     0,     0,   216,    41,    42,     0,     0,     0,     0,
     2018       0,     0,     0,     0,     0,   350,     0,   905,   355,   411,
     2019     473,     0,     0,     0,     0,    45,    46,     0,   473,   687,
     2020    1505,   177,   411,     0,     0,     0,     0,     0,    45,    46,
     2021       0,     0,     0,     0,     0,     0,   698,   177,     0,   431,
     2022       0,   215,     0,     0,     0,     0,   223,     0,     0,     0,
     2023       0,   177,     0,     0,   712,     0,    66,     0,     0,     0,
     2024       0,   802,    48,    48,   431,     0,     0,     0,   431,     0,
     2025       0,   113,   113,   535,   536,   537,   538,   539,   540,   541,
     2026     542,   543,   544,     0,     0,     0,   216,     0,     0,     0,
     2027       0,     0,     0,     0,     0,     0,     0,   260,   350,     0,
     2028       0,     0,   348,    78,     0,     0,     0,   545,    78,   113,
     2029       0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
     2030       0,     0,     0,     0,     0,     0,     0,     0,   353,     0,
     2031       0,     0,   177,    75,     0,     0,     0,     0,   214,     0,
     2032       0,    75,  1337,   793,     0,     0,   339,     0,     0,     0,
     2033    1339,  1340,  1341,    57,     0,     0,     0,     0,     0,   353,
     2034       0,   627,   805,     0,     0,     0,    48,   113,  1107,     0,
     2035       0,     0,     0,     0,   824,     0,   113,   353,     0,    75,
     2036       0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
     2037      48,    48,   594,     0,     0,   348,     0,   594,     0,     0,
     2038       0,     0,   224,   627,     0,     0,   350,   350,   350,     0,
     2039       0,     0,   286,     0,  1385,    48,     0,     0,   287,     0,
     2040       0,   353,   288,     0,   350,   289,   290,   291,   292,    41,
     2041      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2042       0,     0,   698,     0,     0,     8,     9,    10,    11,    12,
     2043       0,     0,     0,   473,     0,   295,     0,   379,     0,   348,
     2044    1107,     0,     0,    45,    46,   297,   298,   299,   300,    78,
     2045       0,     0,     0,     0,    31,     0,   786,     0,     0,   473,
     2046       0,     0,   350,   216,   355,   353,     0,     0,     0,    78,
     2047       0,   937,     0,     0,   431,     0,   177,    78,     0,     0,
     2048       0,     0,    34,   348,   348,   348,     0,    37,     0,   184,
     2049     185,    40,     0,     0,     0,   355,   260,   712,    41,    42,
     2050       0,   348,   967,     0,   214,     0,     0,     0,     0,   353,
     2051     353,   353,     0,   355,     0,    78,     0,     8,     9,    10,
     2052      11,    12,     0,     0,   600,     0,   601,   353,     0,     0,
     2053       0,     0,    45,    46,     0,     0,     0,     0,  1107,     0,
     2054       0,   698,     0,     0,     0,   353,    31,     0,     0,     0,
     2055       0,   698,     0,   350,     0,   627,    75,   355,  1002,   348,
     2056     627,   805,     0,     0,     0,   698,     0,     0,     0,  1481,
     2057       0,  1481,     0,     0,    34,  1013,     0,     0,     0,    37,
     2058       0,     0,    75,    40,     0,   353,     0,     0,     0,     0,
     2059      41,    42,     0,     0,     0,     0,     0,     0,     0,   214,
     2060       0,    80,     0,     0,     0,  1481,     0,  1481,     0,     0,
     2061       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2062     353,   355,     0,     0,    45,    46,    66,     0,    87,     0,
     2063     413,     0,     0,    80,   323,     0,     0,   421,     0,     0,
     2064       0,     0,     0,     0,     0,     0,     0,     0,   627,   216,
     2065     348,     0,     0,     0,     0,   260,   712,     0,   348,  1085,
     2066      87,     0,     0,     0,   353,   355,   355,   355,     0,     0,
     2067     225,     0,     0,     0,   353,     0,   353,     0,     0,     0,
     2068       0,   223,     0,   355,   353,  1099,     0,     0,   353,     0,
     2069       0,     0,     0,   431,   118,     0,     0,   226,     0,     0,
     2070       0,   355,     0,     0,     0,     0,     0,     0,     0,   413,
     2071       0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
     2072       0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
     2073       0,     0,     0,     0,     0,     0,     0,     0,    78,     0,
     2074       0,   355,     0,     0,   216,     0,     0,     0,     0,    75,
     2075       0,   594,     0,     0,     0,     0,     0,     0,   356,     0,
     2076       0,     0,     0,   576,   429,     0,     0,     0,     0,   698,
     2077     698,   580,   350,   350,   583,     0,   355,     0,     0,   353,
     2078       0,     0,     0,     0,     0,   363,     0,   177,     0,     0,
     2079       0,    57,  1188,     0,     0,   206,     2,   207,     4,     5,
     2080       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2081      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2082     355,     0,    26,    27,    28,     0,     0,   698,   698,     0,
     2083     355,    31,   355,     0,     0,     0,     0,   224,   413,     0,
     2084     355,     0,   421,     0,   355,     0,     0,     0,     0,     0,
     2085       0,     0,     0,    80,     0,     0,     0,     0,    80,    34,
     2086       0,    35,     0,    36,    37,     0,   208,    39,    40,   348,
     2087     348,     0,     0,     0,   627,    41,    42,     0,     0,     0,
     2088      87,     0,     0,     0,     0,    87,     0,     0,     0,    57,
     2089       0,     0,   353,   353,     0,   353,   353,     0,   712,     0,
     2090       0,    43,     0,   209,     0,    78,     0,     0,     0,    45,
     2091      46,     0,     0,     0,     0,    75,     0,     0,     0,   413,
     2092       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     2093       0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
     2094       0,  1283,     0,     0,     0,     0,     0,     0,     0,     0,
     2095     353,   353,   225,     0,    31,     0,     0,   177,     0,   260,
     2096       0,     0,     0,    66,     0,     0,     0,     0,     0,     0,
     2097       0,     0,     0,     0,     0,   698,     0,   712,     0,   226,
     2098       0,   118,    34,     0,     0,     0,     0,    37,     0,   184,
     2099     185,    40,     0,     0,     0,   127,   127,   127,    41,    42,
     2100       0,     0,     0,     0,     0,     0,     0,   698,     0,     0,
     2101     576,   576,     0,     0,     0,   698,   698,   698,     0,    80,
     2102       0,   353,     0,     0,   186,     0,   350,   350,     0,     0,
     2103       0,     0,    45,    46,   356,     0,     0,    57,    57,    80,
     2104    1188,     0,     0,     0,     0,     0,    87,    80,   355,   355,
     2105       0,   355,   355,     0,     0,     0,     0,     0,     0,     0,
     2106      57,   363,     0,     0,   223,   356,    87,     0,   127,     0,
     2107     127,    78,     0,   118,    87,     0,     0,     0,    57,   698,
     2108       0,     0,     0,   356,     0,    80,    75,     0,     0,     0,
     2109       0,     0,   363,     0,     0,   276,     0,   883,   353,     0,
     2110     353,   886,     0,     0,     0,     0,   355,   355,     0,     0,
     2111     363,     0,    87,     0,     0,     0,     0,     0,     0,     0,
     2112       0,     0,     0,   348,   348,     0,     0,   356,     0,     0,
     2113     353,     0,    57,     0,     0,     0,     0,    57,   353,   353,
     2114     353,     0,     0,     0,     0,     0,   350,     0,     0,   353,
     2115     353,   127,     0,     0,   363,     0,     0,     0,     0,   127,
     2116       0,   127,   127,    75,     0,     0,   127,     0,   127,   127,
     2117      57,   118,     0,   168,     0,   173,     0,   355,   179,   180,
     2118     181,     0,   183,     0,     0,     0,     0,     0,     0,     0,
     2119       0,   356,     0,  1188,     0,     0,     0,   234,     0,     0,
     2120    1188,     0,   353,     0,     0,     0,     0,     0,     0,   249,
     2121     250,     0,     0,     0,   125,   128,   129,     0,   363,     0,
     2122     224,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2123      12,     0,     0,   576,     0,   356,   356,   356,   127,     0,
     2124       0,     0,    78,   348,     0,     0,     0,     0,     0,     0,
     2125       0,  1188,     0,   356,   355,    31,   355,     0,  1530,     0,
     2126       0,     0,   363,   363,   363,     0,     0,     0,    57,   353,
     2127       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2128     363,     0,    80,    34,     0,     0,   355,   255,    37,   256,
     2129      57,     0,    40,     0,   355,   355,   355,    57,   363,    41,
     2130      42,     0,     0,     0,     0,   355,   355,     0,    80,    87,
     2131       0,   356,     0,     0,     0,     0,    75,     0,     0,    78,
     2132       0,     0,     0,    75,     0,   718,     0,     0,     0,     0,
     2133       0,     0,     0,    45,    46,    87,     0,     0,   363,     8,
     2134       9,    10,    11,    12,     0,     0,   356,     0,    57,     0,
     2135       0,   413,     0,     0,     0,     0,     0,     0,   355,     0,
     2136       0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
     2137     396,     0,     0,   363,    75,     0,     0,     0,     0,     0,
     2138     415,   416,     0,     0,     0,   420,     0,   422,   423,     0,
     2139     356,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2140     356,    37,   356,   184,   185,    40,     0,   225,     0,     0,
     2141     356,     0,    41,    42,   356,     0,     0,   363,     0,     8,
     2142       9,    10,    11,    12,     0,   355,     0,   363,  1142,   363,
     2143       0,     0,     0,     0,   226,     0,     0,   363,   905,     0,
     2144     411,   363,     0,     0,     0,  1154,    45,    46,    31,     0,
     2145       0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
     2146       0,     0,     0,     0,   591,     0,   599,     0,     0,     0,
     2147       0,     0,    78,     0,     0,    80,    34,   623,   624,    78,
     2148      31,    37,     0,   184,   185,    40,     0,     0,     0,     0,
     2149       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
     2150       0,     0,    87,     0,     0,   356,     0,     0,    34,     0,
     2151       0,     0,     0,    37,     0,   184,   185,    40,  1505,     0,
     2152     411,     0,     0,   413,    41,    42,    45,    46,     0,     0,
     2153      78,     0,   363,     0,     0,     0,     0,     0,     0,     0,
     2154       0,     0,     0,   127,   127,     0,     0,     0,     0,     0,
     2155     266,     0,     0,     0,     0,     0,     0,     0,    45,    46,
     2156       0,     0,     0,  1242,     0,     0,     0,     0,     0,     0,
     2157       0,     0,   127,     0,     0,   127,   127,     0,   127,     0,
     2158     127,   127,     0,     0,     0,   127,   127,     1,     2,   207,
     2159       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2160      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2161      24,    25,  -291,     0,    26,    27,    28,    29,   356,   356,
     2162      30,   356,   356,    31,     0,     0,     0,     0,     0,     0,
    20682163       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2069        0,    76,     0,     0,     0,     0,     0,     0,    58,     0,
    2070      700,   700,     0,   354,     0,   354,     0,     0,   356,   356,
    2071      356,     0,     0,     0,     0,   357,     0,     0,     0,     0,
    2072        0,     0,     0,     0,     0,     0,     0,   356,     0,     0,
    2073        0,     0,     0,     0,     0,     0,     0,     0,   354,     0,
    2074      349,     0,     0,     0,    88,   356,   354,   354,   354,   628,
    2075        0,     0,     0,     0,     0,     0,    79,   354,   354,     0,
    2076        0,  1503,     0,  1507,     0,     0,     0,     0,     0,     0,
    2077     1320,    76,     0,     0,   714,   178,    88,     0,     0,   357,
    2078        0,     0,    79,     0,     0,   356,     0,     0,     0,     0,
    2079        8,     9,    10,    11,    12,     0,     0,     0,  1536,     0,
    2080     1538,     0,     0,     0,   349,   215,     0,     0,     0,     0,
    2081        0,     0,   354,     0,   227,     0,     0,  1299,     0,    31,
    2082        0,     0,   356,   357,   357,   357,     0,     0,     0,     0,
    2083        0,     0,     0,     0,     0,   261,     0,     0,     0,    67,
    2084        0,     0,   357,  1567,     0,  1568,     0,    34,   349,   349,
    2085      349,   700,    37,   714,   185,   186,    40,   119,  1575,  1576,
    2086      357,     0,     0,    41,    42,     0,     0,   349,   356,     0,
    2087        0,    81,     0,     0,    43,     0,     0,     0,   356,     0,
    2088      356,     0,   354,     0,     0,   225,   700,     0,   356,   912,
    2089        0,   412,   356,     0,   700,   700,   700,    81,    46,    47,
    2090      357,     0,   364,   215,     0,   351,   351,     0,     0,     0,
    2091        0,     0,     0,     0,     8,     9,    10,    11,    12,  1201,
    2092        0,     0,     0,     0,     0,   349,     0,     0,     0,     0,
    2093        0,    76,     0,     0,     0,     0,     0,   357,    76,     0,
    2094        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
    2095        0,   178,   119,     0,    79,     0,     0,     0,     0,     0,
    2096      700,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2097        0,    34,     0,     0,     0,     0,    37,     0,   185,   186,
    2098       40,     0,     0,   357,   356,     0,     0,    41,    42,     0,
    2099        0,    76,     0,   357,     0,   357,     0,    88,    43,     0,
    2100      226,     0,    88,   357,     0,     0,     0,   357,     0,     0,
    2101        0,     0,     0,  1530,     0,   412,     0,     0,     0,     0,
    2102      349,     0,    46,    47,     0,     0,     0,     0,   349,     0,
    2103      351,     0,     0,     0,     0,     0,     0,     0,     0,   356,
    2104        0,   169,     0,   174,     0,     0,   180,   181,   182,     0,
    2105      184,     0,     0,     0,     0,   119,     8,     9,    10,    11,
    2106       12,     0,     0,     0,     0,   235,     0,     0,     0,    81,
    2107        0,     0,     0,     0,     0,     0,     0,   250,   251,  1201,
    2108        0,     0,     0,     0,     0,    31,  1201,     8,     9,    10,
    2109       11,    12,     0,     0,    58,     0,   227,     0,     0,   357,
    2110      356,   356,     0,   356,   356,     0,     0,     0,     0,     0,
    2111        0,     0,     0,    34,     0,     0,    31,     0,    37,     0,
    2112      185,   186,    40,    79,     0,     0,     0,     0,     0,    41,
    2113       42,     0,     0,     0,     0,     0,     0,     0,     0,  1201,
    2114       43,     0,     0,     0,    34,     0,  1555,     0,     0,    37,
    2115        0,   185,   186,    40,   357,   187,     0,     0,   356,   356,
    2116       41,    42,    58,    88,    46,    47,     0,     0,     0,     0,
    2117        0,    43,     0,     8,     9,    10,    11,    12,   364,   349,
    2118        0,     0,     0,    88,     0,     0,   267,     0,     0,     0,
    2119        0,    88,     0,     0,     0,    46,    47,     0,     0,     0,
    2120        0,     0,    31,     0,     8,     9,    10,    11,    12,   364,
    2121        0,     0,     0,     0,     0,   357,   357,     0,   357,   357,
    2122        0,     0,     0,     0,     0,     0,     0,   364,     0,    88,
    2123       34,     0,   356,    31,     0,    37,     0,     0,    81,    40,
    2124        0,     0,     0,   349,   349,     0,    41,    42,     0,     0,
    2125        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2126        0,    34,     0,    58,     0,     0,    37,     0,     0,     0,
    2127       40,   364,    44,   357,   357,   225,     0,    41,    42,     0,
    2128        0,    46,    47,     0,     0,     0,     0,     0,    43,     0,
    2129        0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
    2130        0,     0,     0,   720,     0,     0,     0,     0,     0,   356,
    2131        0,   356,    46,    47,     8,     9,    10,    11,    12,    13,
     2164       0,    80,     0,     0,     0,   363,   363,     0,   363,   363,
     2165       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
     2166       0,     0,  -291,     0,     0,     0,  1012,     0,    87,     8,
     2167       9,    10,    11,    12,     0,     0,   356,   356,     0,     0,
     2168       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2169       0,     0,     0,     0,     0,    44,   283,   284,    31,   285,
     2170       0,    45,    46,   363,   363,     0,     0,     0,     0,     0,
     2171       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2172       0,     0,     0,   127,   127,   286,    34,     0,     0,     0,
     2173       0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
     2174     291,   292,    41,    42,     0,   293,   294,   356,     0,     0,
     2175       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2176       0,     0,   795,   796,     0,     0,     0,     0,   295,     0,
     2177     379,     0,     0,     0,   363,     0,   344,    46,   297,   298,
     2178     299,   300,     0,     0,     0,     0,     0,     0,     0,     0,
     2179     225,   829,     0,     0,   832,   833,     0,   836,     0,   838,
     2180     839,     0,     0,     0,   840,   841,     0,     0,     0,     0,
     2181       0,     0,    80,     0,     0,     0,     0,   226,     0,   925,
     2182       0,   926,     0,     0,   356,     0,   356,     0,   929,   930,
     2183       0,     0,     0,   935,     0,     0,     0,     0,     0,    87,
     2184       0,     0,     0,     0,     0,   940,     0,     0,     0,     0,
     2185     944,   363,     0,   363,     0,     0,   356,     0,     0,     0,
     2186       0,     0,     0,     0,   356,   356,   356,     0,     0,     0,
     2187       0,     0,     0,     0,     0,   356,   356,     0,   978,     0,
     2188     127,     0,     0,   363,     0,   127,     0,     0,     0,    80,
     2189       0,   363,   363,   363,     0,     0,     0,     0,     0,     0,
     2190       0,     0,   363,   363,     0,     0,     0,     0,     0,     0,
     2191       0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
     2192       0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
     2193       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2194     166,     0,   969,   970,     0,     0,     0,     0,     0,     0,
     2195       0,     0,     0,     0,     0,   363,     0,   219,     0,     0,
     2196    1162,     0,     0,     8,     9,    10,    11,    12,     0,     0,
     2197       0,     0,     0,     0,     0,     0,     0,  1023,  1024,  1025,
     2198    1026,     0,  1028,     0,     0,     0,     0,     0,     0,     0,
     2199     283,   284,    31,   285,     0,   356,     0,  1072,     0,     0,
     2200       0,     0,     0,     0,     0,   166,     0,     0,     0,   273,
     2201       0,  1078,     0,     0,     0,     0,     0,     0,     0,   286,
     2202      34,     0,   363,     0,     0,   287,     0,     0,     0,   288,
     2203       0,     0,   289,   290,   291,   292,    41,    42,   166,   293,
     2204     294,     0,    80,     0,     0,     0,   127,     0,   369,    80,
     2205       0,  1098,   375,     0,     0,     0,     0,     0,     0,     0,
     2206       0,     0,   295,     0,   379,     0,     0,     0,     0,    87,
     2207    1163,    46,   297,   298,   299,   300,    87,     8,     9,    10,
     2208      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2209      21,    22,    23,    24,    25,     0,  1129,    26,    27,    28,
     2210      80,   166,  1136,     0,  1090,     0,    31,  1140,     0,     0,
     2211       0,     0,  1144,   219,  1145,     0,     0,     0,  1147,     0,
     2212    1148,  1149,     0,     0,  1152,     0,     0,    87,     0,     0,
     2213       0,   166,     0,  1164,    34,     0,     0,     0,     0,     0,
     2214       0,   208,    39,     0,     0,     0,     0,     0,     0,     0,
     2215       0,  1179,  1180,     0,     0,     0,   375,     0,     0,     0,
     2216       0,     0,     0,   166,     0,     0,     0,     0,     0,     0,
     2217       0,     0,     0,     0,     0,   127,     0,     0,  1210,     0,
     2218       0,  1212,     0,     0,    45,    46,   524,     0,     0,     0,
     2219       0,     0,     0,     0,     0,     0,     0,     0,   166,     0,
     2220       0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
     2221       0,     0,     0,     0,   232,     0,   236,     0,   238,     0,
     2222       0,     0,     0,     0,  1226,   247,     0,     0,     0,     0,
     2223    1230,  1231,     0,     0,     0,     0,   597,     0,     0,     0,
     2224       0,   621,     0,     0,     0,     0,     0,     0,     0,     0,
     2225    1247,     0,     0,  1251,     0,     0,   212,  1253,   236,   238,
     2226     247,     0,     0,     0,     0,  1218,     0,     0,     0,     0,
     2227    1261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2228       0,     0,     0,  1268,     0,  1270,  1271,  1272,  1273,     0,
     2229       0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
     2230       0,  1280,     0,  1281,     0,     0,     0,   173,     0,     0,
     2231       0,     0,     0,     0,     0,     0,     0,   166,   166,     0,
     2232       0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
     2233       0,     0,     0,     0,     0,     0,  1309,  1310,     0,     0,
     2234       0,     0,     0,     0,     0,   524,     0,     0,     0,     0,
     2235       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2236     212,     0,   236,   238,   247,     0,     0,     0,     0,     0,
     2237       0,     0,     0,   715,     0,     0,     0,     0,     0,     0,
     2238       0,     0,     0,     0,     0,   166,  1342,  1343,     0,     0,
     2239       0,     0,     0,     0,  1304,     0,  1353,   524,   212,   524,
     2240       0,     0,   524,   212,   166,   524,     0,     0,     0,     0,
     2241       0,     0,     0,     0,     0,     0,     0,   369,   497,     0,
     2242       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2243       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    21322244      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2133       24,    25,   592,     0,   600,   364,     0,     0,     0,     0,
    2134        0,     0,     0,    31,   356,   624,   625,   357,     0,     0,
    2135        0,     0,   356,   356,   356,     0,     0,     0,     0,     0,
    2136        0,     0,     0,   356,   356,     0,     0,     0,     0,     0,
    2137        0,    34,     0,     0,     0,     0,     0,    79,     0,   364,
    2138      364,   364,     0,     0,     0,     0,     0,     0,     0,     0,
    2139      226,     0,     0,     0,     0,     0,     0,     0,   364,     0,
    2140      284,   285,     0,   286,     0,     0,     0,     0,     0,     0,
    2141        0,     0,    81,     0,    58,    58,   364,     0,   356,     0,
    2142        0,     0,     0,     0,   357,     0,   357,    88,     0,   287,
    2143        0,     0,     0,     0,     0,   288,     0,    58,     0,   289,
    2144        0,     0,   290,   291,   292,   293,    41,    42,     0,   294,
    2145      295,     0,     0,    88,     0,    58,   364,    43,     0,   357,
    2146        0,     0,     0,     0,     0,     0,     0,   357,   357,   357,
    2147        0,     0,   296,     0,   380,     0,     0,   381,   357,   357,
    2148        0,    46,    47,   298,   299,   300,   301,     0,   356,     0,
    2149        0,     0,    81,   364,     0,     0,     0,     0,     0,     0,
    2150        0,     0,     0,   349,   349,     0,     0,     0,     0,     0,
    2151        0,     0,    58,     0,     0,     0,     0,    58,     0,     0,
     2245      24,    25,  -291,     0,    26,    27,    28,  1388,     0,  1389,
     2246    1390,  1391,     0,    31,     0,     0,   212,     0,     0,   166,
     2247       0,  1395,     0,     0,     0,     0,     0,     0,     0,     0,
     2248    1406,   369,     0,     0,     0,   810,     0,     0,   212,     0,
     2249       0,    34,     0,   236,   238,     0,    37,     0,   336,   337,
     2250      40,   247,  -291,     0,     0,  1427,     0,    41,    42,     0,
     2251       0,   597,     0,     0,   321,     0,   597,     0,     0,     0,
     2252       0,     0,     0,     0,   346,   369,   369,   369,     0,   157,
     2253       0,     0,     0,   634,     0,   338,   382,   382,     0,     0,
     2254       0,    45,    46,   369,   212,     0,     0,     0,  1465,  1466,
    21522255       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2153        0,     0,     0,   357,     0,     0,     0,    79,     0,   364,
    2154        0,     0,     0,     0,    79,     0,     0,     0,     0,   364,
    2155       58,   364,     0,     0,     0,     0,   227,     0,     0,   364,
    2156        0,     0,     0,   364,     0,     8,     9,    10,    11,    12,
     2256       0,  1471,   212,     0,     0,     0,     0,   212,  1471,   212,
     2257     283,   284,     0,   285,     0,   524,     0,   252,     0,     0,
     2258       0,     0,     0,     0,     0,     0,   212,   257,     0,   212,
     2259     212,     0,     0,     0,     0,     0,     0,   212,     0,   286,
     2260    1504,   369,     0,   934,  1510,   287,     0,   321,     0,   288,
     2261       0,   212,   289,   290,   291,   292,    41,    42,   212,   293,
     2262     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2263       0,   478,  1532,     0,  1533,     0,   715,     0,     0,     0,
     2264       0,     0,   295,   157,   379,     0,     0,   380,     0,     0,
     2265      45,    46,   297,   298,   299,   300,     0,   386,     0,     0,
     2266       0,     0,  1548,  1549,     0,     0,     0,     0,     0,     0,
     2267    1552,  1553,     0,     0,     0,     0,     0,     0,     0,     0,
     2268     418,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2269       0,     0,   369,     0,   433,     0,   621,     0,     0,     0,
     2270     369,     0,     0,   438,     0,     0,     0,     0,     0,     0,
     2271       0,     0,     0,   446,     0,     0,     0,     0,     0,     0,
     2272       0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
     2273       0,     0,   212,     0,     0,     0,     0,     0,   464,     0,
     2274       0,     0,     0,   474,     0,     0,     0,   382,     0,     0,
     2275       0,     0,     0,   286,     0,     0,   482,     0,     0,   287,
     2276     212,     0,   492,   288,   496,   212,   289,   290,   291,   292,
     2277      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2278       0,   526,     0,     0,     0,     0,     0,     0,     0,     0,
     2279       0,     0,     0,     0,     0,   715,   295,     0,   379,     0,
     2280       0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
     2281     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2282       0,     0,     0,   585,     0,     0,     0,     0,   590,     0,
     2283       0,     0,     0,     0,   166,     0,   212,     0,     0,     0,
     2284       0,   709,     0,     0,     0,     0,     0,     0,     0,     0,
     2285     212,     0,     0,     0,     0,     0,     0,   635,     0,     0,
     2286       0,   636,   637,     0,   639,     0,     0,     0,     0,     0,
     2287     497,   650,   651,     0,   652,   653,     0,   654,     0,   655,
     2288     741,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2289     597,     0,     0,   758,     0,     0,   585,     0,   741,     0,
     2290       0,   741,     0,     0,   670,     0,     0,     0,     0,     0,
     2291       0,   369,   369,   767,     0,     0,     0,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,     0,     0,   681,
     2293       0,   212,     0,     0,     0,   788,     0,     0,     0,     0,
     2294       0,     0,     0,   212,     0,   797,     0,     0,     0,     0,
     2295       0,     0,   346,     0,     0,   707,     0,   758,     0,     0,
     2296       0,   710,   212,     0,     0,     0,   464,     0,     0,     0,
     2297       0,   524,     0,     0,     0,     0,   206,     2,   207,     4,
     2298       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2299      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2300      25,     0,   745,    26,    27,    28,   862,     0,     0,     0,
     2301       0,     0,    31,     0,   382,     0,     0,   763,     0,     0,
     2302       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2303       0,     0,     0,     0,     0,     0,     0,   715,     0,     0,
     2304      34,     0,    35,     0,    36,     0,     0,   208,    39,     0,
     2305       0,     0,     0,   283,   284,   789,   285,     0,     0,     0,
     2306       0,     0,     0,     0,   799,     0,     0,     0,     0,     0,
     2307       0,   801,     0,     0,     0,   212,     0,   809,     0,   219,
     2308       0,     0,   286,     0,   209,     0,   823,     0,   287,     0,
     2309      45,    46,   288,     0,     0,   289,   290,   291,   292,    41,
     2310      42,     0,   293,   294,     0,   212,     0,     0,     0,     0,
     2311       0,     0,   758,     0,   963,     0,   715,     0,     0,   341,
     2312     364,     0,     0,     0,   974,   295,   863,   379,     0,     0,
     2313     982,     0,     0,    45,    46,   297,   298,   299,   300,     0,
     2314     212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2315       0,   212,     0,   414,     0,     0,     0,     0,     0,     0,
     2316     414,     0,   809,     0,     0,   369,   369,     0,     0,     0,
     2317     904,     0,  1000,  1001,   219,     0,   346,     0,     0,     0,
     2318       0,     0,     0,     0,     0,     0,     0,     0,     0,   507,
     2319     346,   509,   512,     0,     0,     0,     0,     0,     0,   515,
     2320     516,   252,     0,     0,     0,     0,     0,     0,     0,     0,
     2321       0,   941,   942,   509,   509,     0,     0,     0,     0,     0,
     2322       0,     0,     0,   212,     0,     0,     0,     0,     0,     0,
     2323    1031,     0,   414,     0,   382,     0,     0,   212,     0,     0,
     2324       0,     0,     0,     0,   979,     0,     0,     0,     0,   983,
     2325       0,   509,     8,     9,    10,    11,    12,    13,    14,    15,
     2326      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2327       0,   346,    26,    27,    28,     0,     0,     0,     0,     0,
     2328       0,    31,   684,     0,     0,   369,   414,   509,     0,     0,
     2329       0,     0,     0,     0,   414,   581,     0,   414,   584,     0,
     2330       0,     0,     0,     0,     0,     0,     0,     0,   364,    34,
     2331     321,     0,   613,  1017,     0,     0,    38,    39,     0,     0,
     2332    1018,     0,     0,     0,     0,     0,   212,     0,     0,     0,
     2333       0,   631,     0,  1020,   341,  1021,     0,     0,   382,     0,
     2334       0,   524,     0,   524,   974,     0,     0,     0,   741,  1033,
     2335       0,     0,     0,   685,     0,  1037,     0,   686,     0,    45,
     2336      46,   414,     0,     0,     0,   414,     0,  1075,     0,  1150,
     2337    1076,     0,     0,     0,     0,     0,     0,   524,     0,   524,
     2338    1165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2339       0,     0,     0,     0,     0,     0,   364,     0,     0,     0,
     2340       0,     0,   382,     0,  1183,     0,   166,     0,     0,     0,
     2341       0,     0,     0,     0,     0,     0,     0,     0,     0,   974,
     2342     974,   212,     8,     9,    10,    11,    12,    13,    14,    15,
     2343      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2344    1215,     0,   414,     0,     0,   364,     0,   590,     0,     0,
     2345       0,    31,     0,     0,     0,   509,   509,   509,   509,   509,
     2346     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
     2347     509,   509,   509,     0,     0,     0,     0,   283,   284,    34,
     2348     285,     0,  1146,     0,   414,     0,     0,     0,   341,   364,
     2349       0,     0,     0,     0,     0,   974,     0,     0,     0,     0,
     2350       0,     0,     0,     0,     0,     0,   286,     0,     0,     0,
     2351       0,     0,   287,   862,     0,     0,   288,     0,     0,   289,
     2352     290,   291,   292,    41,    42,     0,   293,   294,  1266,  1267,
     2353       0,     0,     0,   414,   414,     0,     0,     0,     0,     0,
     2354     526,     0,     0,     0,     0,     0,  1211,     0,     0,   295,
     2355       0,   379,   803,   364,   971,     0,     0,    45,    46,   297,
     2356     298,   299,   300,   613,     0,   613,   613,     0,     0,     0,
     2357       0,     0,   613,     0,     0,     0,     0,     0,     0,     0,
     2358    1223,     0,   842,   364,     0,  1225,     0,     0,   364,     0,
     2359       0,     0,     0,  1229,     0,     0,     0,   364,   364,   364,
     2360       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
     2361       0,     0,     0,     0,     0,   364,     0,     0,     0,     0,
     2362     414,   884,     0,     0,   414,   887,  1255,     0,     0,     0,
     2363       0,   889,     0,     0,     0,     0,     0,     0,  1263,     0,
     2364       0,  1264,     0,  1265,     0,     0,     0,     0,     0,     0,
     2365     414,     0,     0,     0,     0,     0,     0,  1274,  1275,     0,
     2366       0,     0,   509,     0,     0,     0,     0,     0,   212,  1371,
     2367       0,     0,   741,   364,   613,     0,     0,     0,     0,  1288,
     2368       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2369       0,     0,   509,     0,     0,     0,     0,     0,     0,     0,
     2370       0,     0,     0,     0,     0,     0,     0,   341,   364,     0,
     2371       0,     0,   414,   414,     0,     0,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,  1327,     0,     0,     0,
     2373       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2374      17,    18,    19,    20,    21,    22,    23,    24,    25,  -291,
     2375       0,    26,    27,    28,     0,     0,   414,     0,     0,     0,
     2376      31,     0,     0,     0,   364,     0,     0,     0,     0,     0,
     2377       0,   803,   364,     0,     0,   613,     0,   613,     0,     0,
     2378       0,     0,     0,     0,     0,     0,     0,   613,    34,     0,
     2379       0,     0,     0,    37,     0,   336,   337,    40,     0,  -291,
     2380       0,  1377,     0,  1378,    41,    42,     0,     0,     0,     0,
     2381       0,     0,   509,     0,     0,  1386,     0,  1387,     0,     0,
     2382       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2383       0,     0,   338,     0,  1394,     0,     0,     0,    45,    46,
     2384       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2385    1412,  1414,     0,     0,     0,     0,     0,   509,     0,   803,
     2386       0,  1419,     0,     0,  1229,     0,   341,   364,   414,     0,
     2387     414,     0,     0,     0,   414,     0,     0,     0,     0,     0,
     2388       0,     0,   321,     0,     0,  1441,     0,     0,     0,     0,
     2389       0,     0,   509,     0,  1448,   613,   613,  1450,     0,  1452,
     2390    1454,  1456,     0,     0,     0,   509,     8,     9,    10,    11,
     2391      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2392      22,    23,    24,    25,  -291,     0,     0,     0,     0,     0,
     2393     414,     0,     0,     0,     0,    31,     0,     0,     0,  1486,
     2394       0,  1488,     0,  1229,     0,     0,   509,     0,     0,     0,
     2395       0,   414,  1143,     0,     0,     0,     0,     0,  1499,     0,
     2396       0,     0,   364,    34,     0,     0,     0,     0,   414,  1155,
     2397       0,   613,   613,  1160,  -291,     0,     0,     0,     0,     0,
     2398       0,     0,     0,   364,   364,     0,     0,     0,     0,     0,
     2399       0,     0,     0,     0,     0,     0,     0,     1,     2,   207,
     2400       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2401      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2402      24,    25,     0,   509,    26,    27,    28,    29,     0,     0,
     2403      30,   283,   284,    31,   285,     0,     0,     0,     0,     0,
     2404       0,     0,     0,     0,     0,     0,   414,     0,   414,     0,
     2405       0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
     2406     286,    34,   613,    35,     0,    36,   287,     0,    38,    39,
     2407     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2408     293,   294,     0,   509,   509,   803,   414,  1243,     0,     0,
     2409       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2410       0,     0,     0,   295,     0,  1055,     0,     0,     0,   364,
     2411       0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
     2412       0,     0,     0,     0,     0,     0,  -126,     0,     1,     2,
     2413     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    21572414      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2158       23,    24,    25,  -295,     0,    26,    27,    28,     0,     0,
    2159        0,     0,   213,     0,    31,     0,     0,    79,     0,     0,
    2160        0,     0,   233,   357,   237,     0,   239,     0,     0,     0,
    2161        0,     0,     0,   248,     0,     0,     0,     0,     0,     0,
    2162        0,     0,    34,     0,     0,    88,     0,    37,   349,   337,
    2163      338,    40,     0,  -295,     0,     0,     0,     0,    41,    42,
    2164        0,     0,     0,     0,   213,     0,   237,   239,   248,    43,
    2165        0,     0,    81,    58,     0,   364,     0,     0,     0,    81,
    2166        0,     0,     0,     0,   635,     0,   339,     0,     0,   128,
    2167      128,   128,     0,    46,    47,     0,     0,    58,     0,     0,
    2168        0,     0,   284,   285,    58,   286,     0,   213,   932,     0,
    2169      933,     0,     0,     0,     0,     0,     0,   936,   937,     0,
    2170        0,     0,   942,     0,     0,     0,     0,     0,     0,     0,
    2171      364,   287,    81,   167,   947,     0,     0,   288,     0,   951,
    2172        0,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2173      220,   294,   295,     0,     0,     0,     0,    58,     0,    43,
    2174        0,     0,     0,   128,     0,   128,     0,     0,   213,   987,
    2175      237,   239,   248,     0,   296,     0,   380,     0,     0,     0,
    2176        0,     0,   792,    46,    47,   298,   299,   300,   301,     0,
    2177      277,   364,   364,     0,   364,   364,     0,     0,   167,     0,
    2178        0,     0,   274,     0,     0,     0,   213,     0,     0,     0,
    2179        0,   213,     0,     0,    88,     0,     0,     0,   508,     0,
    2180      510,   513,     0,     0,     0,     0,   498,     0,   516,   517,
    2181        0,   167,     0,     0,     0,     0,     0,     0,     0,     0,
    2182        0,   370,   510,   510,     0,   376,   128,     0,     0,   364,
    2183      364,     0,     0,     0,   128,     0,   128,   128,     0,     0,
    2184        0,   128,     0,   128,   128,     0,     0,     0,     0,     0,
    2185     1033,  1034,  1035,  1036,   213,  1038,     0,     0,     0,     0,
    2186      510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2187        0,  1082,     0,     0,   167,     0,   213,     0,     0,     0,
    2188        0,   237,   239,     0,     0,  1088,   220,     0,     0,   248,
    2189        0,     0,     0,     0,     0,     0,   510,     0,     0,     0,
    2190        0,     0,     0,   364,   167,     0,     0,     0,     0,     0,
    2191        0,     0,     0,   128,     0,     0,     0,     0,     0,     0,
    2192        0,     0,     0,     0,     0,  1108,     0,     0,     0,   376,
    2193        0,     0,   213,     0,     0,     0,   167,     0,     0,     0,
    2194        0,     0,     0,     0,     0,     0,   227,     0,     0,     0,
    2195      213,     0,     0,     0,     0,   213,     0,   213,     0,   525,
    2196        0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
    2197        0,   167,  1141,     0,   213,     0,     0,   213,   213,  1149,
    2198      364,     0,   364,     0,  1153,   213,     0,     0,     0,  1157,
    2199        0,  1158,     0,     0,     0,  1160,     0,  1161,  1162,   213,
    2200        0,  1165,     0,     0,     0,     0,   213,     0,     0,   598,
    2201     1177,     0,     0,     0,   622,   364,     0,     0,     0,     0,
    2202        0,     0,     0,   364,   364,   364,     0,     0,  1192,  1193,
    2203        0,     0,     0,     0,   364,   364,     0,     0,     0,     0,
    2204        0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
    2205        0,     0,     0,     0,     0,  1223,     0,     0,  1225,     0,
    2206        0,     0,     0,     0,   510,   510,   510,   510,   510,   510,
    2207      510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
    2208      510,   510,     0,     0,     0,     0,     0,     0,     0,   364,
    2209      167,   167,     0,     0,     0,     0,     0,   370,     0,     0,
    2210        0,  1239,     0,     0,     0,     0,     0,  1243,  1244,     0,
    2211        0,     0,     0,     0,     0,     0,     0,     0,   525,  1255,
    2212      213,     0,     0,     0,     0,     0,     0,     0,     0,  1262,
    2213        0,     0,  1266,     0,  1267,     0,     0,  1269,     0,     0,
    2214        0,     0,     0,     0,     0,     0,   717,     0,   213,     0,
    2215     1277,     0,     0,   213,     0,     0,     0,     0,   167,   364,
    2216        0,     0,     0,  1284,     0,  1286,  1287,  1288,  1289,     0,
    2217      525,     0,   525,     0,     0,   525,     0,   167,   525,     0,
    2218        0,  1296,     0,  1297,     0,     0,     0,   174,     0,     0,
    2219      370,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2220        0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
    2221        0,   510,     0,     0,     0,    88,  1325,  1326,   128,   128,
    2222        0,     0,     0,     0,     0,   213,     0,     0,     0,     0,
    2223        0,     0,     0,     0,     0,     0,     0,     0,     0,   213,
    2224        0,     0,   167,     0,     0,     0,     0,   128,     0,     0,
    2225      128,   128,     0,   128,   370,   128,   128,     0,   816,   498,
    2226      128,   128,     0,     0,     0,     0,     0,     0,    88,  1361,
    2227     1362,     0,     0,     0,   510,     0,     0,     0,     0,  1372,
    2228        0,     0,     0,     0,   598,     0,     0,     0,     0,   598,
    2229        0,     0,     0,     0,     0,     0,     0,     0,   370,   370,
    2230      370,     0,     0,     0,     0,     0,   510,     0,     0,  1022,
    2231        0,     0,     8,     9,    10,    11,    12,   370,     0,     0,
    2232        0,     0,     0,     0,   213,     0,     0,     0,     0,     0,
    2233     1404,     0,   158,     0,     0,     0,   213,     0,     0,   284,
    2234      285,    31,   286,  1409,     0,  1410,  1411,  1412,     0,   525,
    2235        0,     0,     0,     0,     0,   213,     0,  1416,     0,     0,
    2236        0,     0,     0,     0,     0,     0,  1427,     0,   287,    34,
    2237        0,     0,     0,     0,   288,   370,     0,   941,   289,     0,
    2238      253,   290,   291,   292,   293,    41,    42,     0,   294,   295,
    2239      258,     0,     0,  1450,     0,     0,    43,     0,     0,     0,
    2240        0,   128,   128,     0,     0,     0,     0,     0,     0,     0,
    2241        0,   296,   717,   380,     0,     0,     0,     0,     0,     0,
    2242      345,    47,   298,   299,   300,   301,     0,   510,     0,     0,
    2243        0,     0,     0,     0,     0,     0,     0,     0,  1489,  1490,
    2244        0,     0,     0,     0,     0,     0,   158,     0,     0,     0,
    2245        0,  1495,     0,     0,     0,     0,     0,     0,  1495,     0,
    2246      387,     0,     0,     0,     0,     0,     0,     0,     0,   213,
    2247      370,     0,   510,     0,   622,     0,     0,     0,   370,     0,
    2248        0,     0,     0,   419,     0,     0,     0,     0,     0,     0,
    2249        0,  1529,     0,     0,     0,  1535,     0,   434,     0,     0,
    2250        0,   213,     0,     0,     0,     0,   439,     0,     0,     0,
    2251      510,     0,     0,     0,     0,     0,   447,     0,     0,     0,
    2252        0,     0,     0,   510,  1557,     0,  1558,     0,     0,     0,
    2253        0,     0,     0,     0,     0,     0,     0,   213,     0,     0,
    2254        0,   465,     0,     0,     0,     0,   475,     0,   213,     0,
    2255        0,     0,     0,     0,  1573,  1574,     0,     0,     0,   483,
    2256        0,   128,  1577,  1578,   510,   493,   128,   497,     0,     0,
    2257        0,     0,     0,     0,   717,     0,     0,     0,     0,     0,
    2258        0,     0,     0,     0,   527,     0,     0,     0,     0,   525,
     2415      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2416       0,    30,   283,   284,    31,  1040,  1041,     0,  1042,     0,
     2417     341,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
     2418       0,     0,  1051,     0,     0,     0,  1052,  1053,   364,    33,
     2419       0,   286,    34,     0,    35,     0,    36,  1054,     0,    38,
     2420      39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2421       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    22592422       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2260        0,     0,     0,     0,   284,   285,     0,   286,     0,     0,
    2261        0,     0,     0,   167,     0,     0,     0,     0,     0,     0,
    2262      213,     0,     0,     0,     0,     0,   586,     0,     0,   370,
    2263        0,   591,     0,   287,   213,     0,     0,     0,     0,   288,
    2264        0,   510,     0,   289,     0,     0,   290,   291,   292,   293,
    2265       41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
    2266      636,    43,     0,     0,   637,   638,     0,   640,     0,     0,
    2267        0,     0,   598,     0,   652,   653,   507,   654,   655,     0,
    2268      656,     0,   657,     0,     0,    46,    47,   298,   299,   300,
    2269      301,     0,     0,   370,   370,     0,     0,     0,     0,   586,
    2270        0,     0,     0,     0,   510,   510,     0,   672,     0,     0,
     2423       0,     0,     0,     0,   295,     0,  1055,   364,   364,   172,
     2424       0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
     2425       0,     0,  1056,     0,     0,     0,     0,  -126,     0,     0,
     2426       0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
     2427       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2428      19,    20,    21,    22,    23,    24,    25,     0,   509,    26,
     2429      27,    28,    29,     0,     0,    30,   283,   284,    31,   285,
     2430       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
    22712431       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2272        0,     0,     0,     0,     0,     0,   213,     0,     0,     0,
    2273      128,     0,   683,     0,     0,     0,     0,     0,     0,     0,
     2432       0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
     2433      36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
     2434     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
     2435       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
     2436       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2437      44,     0,     0,     0,   509,   509,    45,    46,   297,   298,
     2438     299,   300,     0,     2,   207,     4,     5,     6,     7,     8,
     2439       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2440      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2441      27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
     2442       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2443      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2444      25,  -292,     0,     0,   414,   286,    34,     0,    35,     0,
     2445      36,   287,    31,    38,    39,   288,     0,     0,   289,   290,
     2446     291,   292,    41,    42,     0,   293,   294,     0,   414,   414,
    22742447       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2275        0,     0,     0,   525,     0,     0,     0,     0,   709,     0,
    2276        0,     0,     0,     0,   712,     0,     0,  -520,     0,   465,
    2277        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
     2448      34,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2449     343,  -292,     0,   414,     0,   757,   344,    46,   297,   298,
     2450     299,   300,     2,   207,     4,     5,     6,     7,     8,     9,
     2451      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2452      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2453      28,     0,     0,     0,     0,   283,   284,    31,   285,     8,
     2454       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2455      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2456      27,    28,     0,     0,   286,    34,     0,    35,    31,    36,
     2457     287,     0,    38,    39,   288,     0,     0,   289,   290,   291,
     2458     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2459       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2460       0,   111,     0,    38,    39,     0,     0,   295,     0,   962,
     2461       0,     0,    41,    42,   757,   344,    46,   297,   298,   299,
     2462     300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    22782463      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    22792464      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2280       29,     0,     0,    30,     0,   749,    31,    32,     0,     0,
    2281        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2282      768,     0,   717,     0,   213,     0,     0,     0,     0,     0,
    2283        0,    33,     0,     0,    34,     0,    35,     0,    36,    37,
    2284        0,    38,    39,    40,     0,     0,     0,     0,     0,     0,
    2285       41,    42,     0,     0,     0,     0,     0,     0,   795,     0,
    2286        0,    43,   128,     0,   220,     0,     0,   805,     0,   342,
    2287      365,     0,     0,     0,   807,     0,    44,     0,    45,     0,
    2288      815,     0,     0,     0,     0,    46,    47,     0,     0,   829,
    2289        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2290        0,   717,     0,   415,     0,     0,     0,     0,     0,     0,
    2291      415,     0,     0,     0,     0,   510,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2293      869,     0,     0,   510,     0,     0,     0,     0,     0,     0,
    2294        0,   284,   285,     0,   286,     0,     0,     0,     0,     0,
    2295        0,     0,     0,   370,   370,     0,     0,     0,     0,     0,
    2296        0,     0,   220,     0,     0,     0,   815,     0,     0,     0,
    2297      287,     0,     0,     0,   911,     0,   288,     0,     0,     0,
    2298      289,     0,   415,   290,   291,   292,   293,    41,    42,     0,
    2299      294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
    2300        0,     0,     0,     0,     0,   253,   510,   510,     0,     0,
    2301        0,     0,     0,   296,     0,   948,   949,     0,     0,     0,
    2302        0,     0,    46,    47,   298,   299,   300,   301,     0,   966,
    2303        0,     0,     0,     0,     0,     0,   415,     0,     0,     0,
    2304        0,     0,     0,     0,   415,   582,     0,   415,   585,     0,
    2305      988,     0,   989,     0,     0,     0,   993,     0,   365,     0,
    2306        0,     0,   614,     0,     0,     0,     0,     0,     0,     0,
    2307        0,     0,     0,     0,     0,     0,     0,     0,   370,     0,
    2308      213,   632,     0,     0,   342,     8,     9,    10,    11,    12,
    2309       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2310       23,    24,    25,  -295,     0,    26,    27,    28,     0,     0,
    2311        0,   415,     0,     0,    31,   415,     0,     0,     0,     0,
    2312        0,  1027,     0,     0,     0,     0,     0,     0,  1028,     0,
    2313        0,     0,     0,     0,     0,     0,   525,     0,   525,     0,
    2314        0,  1030,    34,  1031,     0,     0,   365,    37,     0,   337,
    2315      338,    40,     0,  -295,     0,     0,     0,  1043,    41,    42,
    2316        0,     0,     0,     0,  1047,     0,     0,     0,     0,    43,
    2317        0,     0,     0,   525,   322,   525,  1085,     0,     0,  1086,
    2318        0,     0,     0,     0,   347,     0,   339,     0,     0,     0,
    2319        0,     0,   415,    46,    47,   365,   383,   383,     0,     0,
    2320        0,     0,     0,   167,   207,     2,   208,     4,     5,     6,
    2321        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2322       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2323        0,    26,    27,    28,   415,     0,     0,     0,   342,   365,
    2324       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2325        0,     0,     0,     0,     0,     0,     0,     0,   591,     0,
    2326        0,     0,     0,     0,     0,     0,     0,   322,    34,     0,
    2327       35,     0,    36,     0,     0,   209,    39,     0,     0,     0,
    2328        0,     0,     0,   415,   415,     0,     0,     0,     0,     0,
    2329        0,   479,     0,     0,  1159,    43,     0,     0,     0,     0,
    2330        0,     0,   809,   365,     0,     0,     0,     0,     0,     0,
    2331        0,     0,   210,   614,     0,   614,   614,     0,     0,    46,
    2332       47,     0,   614,     0,     0,     0,     0,     0,     0,     0,
    2333        0,     0,   848,   365,     0,     0,     0,     0,   365,     0,
    2334        0,     0,     0,     0,     0,     0,     0,   365,   365,   365,
    2335        0,     0,   527,     0,     0,     0,     0,     0,  1224,     0,
    2336        0,     0,     0,     0,     0,     0,   365,     0,     0,     0,
    2337        0,   415,   891,     0,     0,   415,   894,     0,     0,     0,
    2338        0,     0,   896,     0,     0,     0,     0,     0,     0,     0,
    2339        0,     0,  1236,     0,     0,     0,     0,  1238,     0,     0,
    2340        0,   415,     0,     0,     0,  1242,     0,   383,     0,     0,
    2341        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2342        0,     0,     0,     0,   365,   614,     0,     0,     0,     0,
    2343        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2344        0,  1271,     0,     0,     0,     0,     0,     0,     0,     0,
    2345        0,     0,     0,  1279,     0,     0,  1280,     0,  1281,     0,
    2346      342,   365,     0,     0,     0,   415,   415,     0,     0,     0,
    2347        0,     0,  1290,  1291,     0,     0,     0,     0,     0,     0,
    2348        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2349        0,     0,     0,     0,  1304,     0,     0,     0,     0,     0,
    2350        0,   711,   284,   285,     0,   286,     0,     0,     0,     0,
    2351        0,   415,     0,     0,     0,     0,     0,     0,     0,   365,
    2352        0,     0,     0,     0,     0,     0,   809,   365,     0,     0,
    2353      614,   287,   614,     0,     0,     0,     0,   288,     0,     0,
    2354      745,   289,   614,  1345,   290,   291,   292,   293,    41,    42,
    2355        0,   294,   295,   762,     0,     0,     0,     0,   745,    43,
    2356        0,   745,     0,     0,     0,     0,     0,     0,     0,     0,
    2357        0,     0,   772,   773,   296,     0,   380,     0,     0,     0,
    2358        0,   761,     0,    46,    47,   298,   299,   300,   301,     0,
    2359        0,     0,     0,     0,     0,   794,     0,     0,     0,     0,
    2360        0,     0,     0,     0,     0,   803,     0,     0,     0,     0,
    2361        0,     0,   347,     0,     0,   809,     0,   762,     0,  1396,
    2362        0,  1397,   342,   365,   415,     0,   415,     0,     0,     0,
    2363      415,     0,     0,     0,     0,  1407,     0,  1408,     0,     0,
    2364        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2365        0,   614,   614,     0,     0,  1415,     0,     0,     0,     0,
    2366        0,     0,     0,     0,     0,     0,   868,     0,     0,     0,
    2367        0,  1433,  1435,     0,     0,   383,     0,     0,   365,     0,
    2368        0,     0,  1440,     0,     0,  1242,     0,     0,   415,     8,
    2369        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2370       19,    20,    21,    22,    23,    24,    25,  -295,  1464,     0,
    2371      415,  1156,     0,     0,     0,     0,     0,  1471,    31,     0,
    2372     1473,   365,  1475,  1477,  1479,     0,     0,   415,  1168,     0,
    2373      614,   614,  1173,     0,     0,     0,     0,     0,     0,     0,
    2374        0,     0,   365,   365,     0,     0,    34,     0,     0,     0,
    2375        0,     0,     0,     0,     0,     0,     0,  -295,     0,     0,
    2376        0,     0,     0,     0,  1510,     0,  1512,     0,  1242,     0,
    2377        0,     0,     0,     0,     0,   762,     0,   972,     0,     0,
    2378        0,     0,     0,     0,  1524,     0,     0,   983,     0,     0,
    2379        0,     0,     0,     0,   992,     0,     0,     0,     0,     0,
    2380        0,     0,     0,     0,     0,   415,     0,   415,     0,     0,
    2381        0,     0,   415,     0,     0,     0,     0,     0,     0,     0,
    2382        0,   614,     0,     0,     0,     0,     0,     0,     0,  1175,
    2383        0,     0,     8,     9,    10,    11,    12,  1010,  1011,     0,
    2384        0,   347,     0,     0,     0,     0,   809,   415,  1258,     0,
    2385        0,     0,     0,     0,     0,   347,     0,     0,     0,   284,
    2386      285,    31,   286,     0,     0,     0,     0,     0,     0,     0,
    2387        0,   365,     0,     0,     0,     0,     0,     0,     0,     0,
    2388        0,     0,     0,     0,     0,     0,     0,     0,   287,    34,
    2389        0,     0,     0,     0,   288,  1041,     0,     0,   289,   383,
    2390        0,   290,   291,   292,   293,    41,    42,     0,   294,   295,
    2391        0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    2392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2393        0,   296,   342,   380,     0,     0,     0,   347,     0,     0,
    2394     1176,    47,   298,   299,   300,   301,     0,     0,     0,     0,
    2395      365,     2,   208,     4,     5,     6,     7,     8,     9,    10,
    2396       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2397       21,    22,    23,    24,    25,     0,   322,    26,    27,    28,
    2398        0,     0,     0,     0,   284,   285,    31,   286,     0,     0,
    2399        0,     0,  1132,  1133,     0,     0,     0,     0,     0,     0,
    2400        0,     0,   365,   365,     0,     0,   383,     0,     0,     0,
    2401        0,     0,   983,   287,    34,  1147,    35,   745,    36,   288,
    2402        0,    38,    39,   289,     0,     0,   290,   291,   292,   293,
    2403       41,    42,     0,   294,   295,     0,     0,     0,  1163,     0,
    2404        0,    43,     0,     0,     0,     0,     0,     0,     0,  1178,
    2405        0,   284,   285,     0,   286,     0,   296,     0,   344,     0,
    2406        0,     0,     0,   761,     0,   345,    47,   298,   299,   300,
    2407      301,   383,     0,  1196,     0,     0,     0,     0,     0,     0,
    2408      287,     0,     0,     0,     0,     0,   288,     0,   983,   983,
    2409      289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
    2410      294,   295,     0,     0,     0,     0,     0,     0,    43,  1228,
    2411        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2412        0,     0,     0,   296,     0,   380,     0,   365,   980,     0,
    2413        0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
    2414        0,     1,     2,     3,     4,     5,     6,     7,     8,     9,
     2465       0,     0,     0,     0,   283,   284,    31,   285,     8,     9,
    24152466      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2416       20,    21,    22,    23,    24,    25,   983,     0,    26,    27,
    2417       28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
    2418        0,     0,     0,     0,     0,   868,     0,     0,     0,     0,
    2419        0,   284,   285,     0,   286,     0,     0,     0,     0,     0,
    2420     1282,  1283,    33,     0,     0,    34,     0,    35,     0,    36,
    2421       37,     0,    38,    39,    40,     0,     0,   415,     0,     0,
    2422      287,    41,    42,     0,     0,     0,   288,     0,     0,     0,
    2423      289,     0,    43,   290,   291,   292,   293,    41,    42,     0,
    2424      294,   295,   415,   415,     0,     0,     0,    44,    43,    45,
    2425        0,     0,     0,  -524,     0,     0,    46,    47,     0,     0,
    2426        0,     0,     0,   296,     0,   380,     0,   415,     0,     0,
    2427        0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
    2428      983,     0,     1,     2,   208,     4,     5,     6,     7,     8,
    2429        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2430       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2431       27,    28,    29,     0,     0,    30,   284,   285,    31,  1050,
    2432     1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
    2433     1058,  1059,  1060,     0,     0,     0,  1061,     0,     0,     0,
    2434     1062,  1063,     0,    33,  1390,   287,    34,   745,    35,     0,
    2435       36,  1064,     0,    38,    39,   289,     0,     0,   290,   291,
    2436      292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
    2437        0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
    2438        0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
    2439     1065,     0,     0,   173,     0,     0,     0,    46,    47,   298,
    2440      299,   300,   301,     0,     0,     0,     0,  1066,     0,     0,
    2441        0,  -130,     0,     0,     0,     0,     0,     0,     0,     0,
    2442        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2443        0,  1449,     0,     0,     0,     0,     0,     0,     1,     2,
    2444      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2445       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2446       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2447        0,    30,   284,   285,    31,   286,     8,     9,    10,    11,
     2467      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2468      28,     0,     0,   286,    34,     0,    35,    31,    36,   287,
     2469       0,    38,    39,   288,     0,     0,   289,   290,   291,   292,
     2470      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2472       0,     0,    38,    39,     0,     0,   295,     0,   962,     0,
     2473       0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
     2474       2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    24482475      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    24492476      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2450        0,   287,    34,     0,    35,    31,    36,   288,     0,    38,
    2451       39,   289,     0,  1516,   290,   291,   292,   293,    41,    42,
    2452        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2453        0,     0,     0,    34,     0,     0,     0,     0,   112,     0,
    2454       38,    39,     0,     0,   296,     0,  1065,     0,     0,    41,
    2455       42,     0,     0,    46,    47,   298,   299,   300,   301,     0,
    2456        0,     0,     0,     0,     0,     0,   322,  -130,     1,     2,
    2457      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2458       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2459       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2460        0,    30,   284,   285,    31,   286,     0,     0,     0,     8,
    2461        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2462       19,    20,    21,    22,    23,    24,    25,  -296,     0,     0,
    2463        0,   287,    34,     0,    35,     0,    36,   288,    31,    38,
    2464       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2465        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2466        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2467        0,     0,     0,     0,   296,     0,    45,  -296,     0,     0,
    2468        0,     0,     0,    46,    47,   298,   299,   300,   301,     2,
    2469      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2477       0,     0,     0,   283,   284,    31,   285,     8,     9,    10,
     2478      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2479      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2480       0,     0,   286,    34,     0,    35,    31,    36,   287,     0,
     2481      38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
     2482      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2483       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
     2484       0,   208,    39,     0,     0,   295,     0,   343,     0,     0,
     2485       0,     0,     0,   344,    46,   297,   298,   299,   300,     2,
     2486     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    24702487      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    24712488      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2472        0,     0,   284,   285,    31,   286,     8,     9,    10,    11,
    2473       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2474       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2475        0,   287,    34,     0,    35,    31,    36,   288,     0,    38,
    2476       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2477        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2478        0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
    2479       38,    39,     0,     0,   296,     0,   971,     0,     0,     0,
    2480        0,   761,     0,   345,    47,   298,   299,   300,   301,     2,
    2481      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2482       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2483       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2484        0,     0,   284,   285,    31,   286,     8,     9,    10,    11,
    2485       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2486       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2487        0,   287,    34,     0,    35,    31,    36,   288,     0,    38,
    2488       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2489        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2490        0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
    2491      209,    39,     0,     0,   296,     0,   971,     0,     0,     0,
    2492        0,   761,     0,    46,    47,   298,   299,   300,   301,     2,
    2493      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2494       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2495       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2496        0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2489       0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
    24972490       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24982491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2499        0,   287,    34,     0,    35,     0,    36,   288,     0,    38,
    2500       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2501        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2492       0,   286,    34,     0,    35,     0,    36,   287,     0,   208,
     2493      39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2494       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    25022495       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2503        0,     0,     0,     0,   296,     0,   344,     0,     0,     0,
    2504        0,     0,     0,   345,    47,   298,   299,   300,   301,     2,
    2505      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2506       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2507       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2508        0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2496       0,     0,     0,     0,   295,     0,   997,     0,     0,     0,
     2497       0,     0,   998,    46,   297,   298,   299,   300,     2,   207,
     2498       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2499      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2500      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2501       0,   283,   284,    31,   285,     0,     0,     0,     0,     0,
    25092502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25102503       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2511        0,   287,    34,     0,    35,     0,    36,   288,     0,   209,
    2512       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2513        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2504     286,    34,     0,    35,     0,    36,   287,     0,    38,    39,
     2505     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2506     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    25142507       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2515        0,     0,     0,     0,   296,     0,  1007,     0,     0,     0,
    2516        0,     0,     0,  1008,    47,   298,   299,   300,   301,     2,
    2517      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2518       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2519       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2520        0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2508       0,     0,     0,   295,     0,   962,     0,     0,     0,     0,
     2509       0,   344,    46,   297,   298,   299,   300,     2,   207,     4,
     2510       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2511      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2512      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2513     283,   284,    31,   285,     0,     0,     0,     0,     0,     0,
    25212514       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
     2516      34,     0,    35,     0,    36,   287,     0,   208,    39,   288,
     2517       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
     2518     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25222519       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2523        0,   287,    34,     0,    35,     0,    36,   288,     0,    38,
    2524       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2525        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2526        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2527        0,     0,     0,     0,   296,     0,   971,     0,     0,     0,
    2528        0,     0,     0,   345,    47,   298,   299,   300,   301,     2,
    2529      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2530       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2531       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2532        0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
    2533        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2534        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2535        0,   287,    34,     0,    35,     0,    36,   288,     0,   209,
    2536       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2537        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2538        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,     0,   296,     0,   380,     0,     0,     0,
    2540        0,     0,     0,    46,    47,   298,   299,   300,   301,     1,
     2520       0,     0,   295,     0,   379,     0,     0,     0,     0,     0,
     2521      45,    46,   297,   298,   299,   300,  -515,     0,     0,     1,
    25412522       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    25422523      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     
    25482529      38,    39,    40,     0,     0,     0,     0,     0,     0,    41,
    25492530      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550       43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2551        0,     0,     0,     0,     0,    44,     0,    45,     0,     0,
    2552        0,     0,     0,     0,    46,    47,   207,     2,   208,     4,
     2531       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2532       0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
     2533       0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
     2534       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2535      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2536       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2537       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
     2538       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2539       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2540       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
     2541       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2543       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2544       0,    43,     0,    44,     0,     0,     0,  -519,     0,    45,
     2545      46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
     2546      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2547      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2548      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
     2549       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2550       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2551       0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
     2552      37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
     2553       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2554       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2555       0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
     2556       0,     0,     0,     0,     0,    45,    46,     1,     2,   207,
     2557       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2558      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2559      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
     2560      30,     0,     0,    31,     0,     0,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2562       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2563       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
     2564       0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2565      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2566      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2567       0,     0,     0,     0,     0,    44,    31,     0,     0,     0,
     2568       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2570       0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
     2571       0,   208,    39,    40,     0,     0,     0,     0,     0,     0,
     2572      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2573       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2574       0,     0,     0,     0,     0,     0,    43,     0,   209,     0,
     2575       0,     0,     0,     0,    45,    46,     2,   207,     4,     5,
     2576       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2577      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2578       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2579       0,    31,     0,     0,     0,     0,     8,     9,    10,    11,
     2580      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2581      22,    23,    24,    25,     0,     0,    26,    27,    28,    34,
     2582       0,    35,     0,    36,     0,    31,    38,    39,     0,     2,
     2583     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2584      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2585      23,    24,    25,    34,     0,    26,    27,    28,     0,     0,
     2586      38,    39,  -399,   677,    31,     0,     0,     0,     0,    45,
     2587      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2588       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2589       0,     0,    34,     0,    35,   634,    36,   338,     0,    38,
     2590      39,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2591       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2592       0,  1350,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,     0,     0,     0,     0,     0,   677,     0,     0,     0,
     2594       0,     0,    45,    46,     2,   207,     4,     5,     6,     7,
     2595       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2596      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2597      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2598       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2599      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2600      25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
     2601       0,    36,    31,   684,    38,    39,     0,     0,     0,     0,
     2602       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2603       0,     0,     0,     0,     0,     0,  1352,     0,     0,     0,
     2604      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2605       0,   677,     0,     0,     0,     0,     0,    45,    46,     2,
     2606     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2607      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2608      23,    24,    25,     0,   685,    26,    27,    28,  1091,     0,
     2609      45,    46,     0,     0,    31,     0,     0,     0,     0,     0,
     2610       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2611       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2612       0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
     2613      39,     0,     2,   207,     4,     5,     6,     7,     8,     9,
     2614      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2615      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2616      28,     0,     0,     0,     0,     0,   271,    31,     0,     0,
     2617       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2618       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2619       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2620       0,     0,    38,    39,     0,     2,   207,     4,     5,     6,
     2621       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2622      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2623       0,    26,    27,    28,     0,     0,     0,     0,     0,   677,
     2624      31,     0,     0,     0,     0,    45,    46,     0,     0,     0,
     2625       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2626       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2627      35,     0,    36,     0,     0,    38,    39,     0,     2,   207,
     2628       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2629      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2630      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2631       0,     0,   592,    31,     0,     0,     0,     0,    45,    46,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2634       0,    34,     0,    35,     0,    36,     0,     0,   208,    39,
     2635       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2636      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2637      26,    27,    28,     0,     0,     0,     0,   283,   284,    31,
     2638     285,     0,     0,     0,     0,   209,     0,     0,     0,     0,
     2639       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2640       0,     0,     0,     0,     0,     0,   286,    34,     0,     0,
     2641       0,     0,   287,     0,    38,    39,   288,     0,     0,   289,
     2642     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2643       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2644       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
     2645       0,   517,     0,     0,   172,     0,     0,    45,    46,   297,
     2646     298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
     2647      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2648      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2649     283,   284,    31,   285,     8,     9,    10,    11,    12,    13,
     2650      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2651      24,    25,     0,     0,    26,    27,    28,     0,     0,   286,
     2652      34,     0,     0,    31,     0,   287,     0,    38,    39,   288,
     2653       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
     2654     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2655       0,    34,     0,     0,     0,     0,    37,     0,   336,   337,
     2656      40,     0,   295,   -35,   296,     0,     0,    41,    42,     0,
     2657      45,    46,   297,   298,   299,   300,     8,     9,    10,    11,
     2658      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2659      22,    23,    24,    25,     0,   338,    26,    27,    28,     0,
     2660       0,    45,    46,   283,   284,    31,   285,     8,     9,    10,
     2661      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2662      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2663       0,     0,   286,    34,     0,     0,    31,     0,   287,     0,
     2664      38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
     2665      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2666       0,     0,     0,     0,    34,     0,     0,     0,     0,   111,
     2667       0,    38,    39,     0,     0,   295,     0,   296,     0,     0,
     2668      41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
     2669       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2670      19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
     2671      27,    28,     0,     0,    45,    46,   283,   284,    31,   285,
     2672       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2673      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2674      26,    27,    28,     0,     0,   286,    34,     0,     0,    31,
     2675     684,   287,     0,    38,    39,   288,     0,     0,   289,   290,
     2676     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
     2677       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2678       0,     0,     0,     0,    38,    39,     0,     0,   295,     0,
     2679     158,     0,     0,     0,     0,     0,    45,    46,   297,   298,
     2680     299,   300,     8,     9,    10,    11,    12,    13,    14,    15,
     2681      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2682       0,   685,    26,    27,    28,  1220,     0,    45,    46,   283,
     2683     284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
     2684      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2685      25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
     2686       0,     0,    31,     0,   287,     0,    38,    39,   288,     0,
     2687       0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2688       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2689      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2690       0,   295,     0,   592,     0,     0,     0,     0,     0,    45,
     2691      46,   297,   298,   299,   300,     8,     9,    10,    11,    12,
     2692      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2693      23,    24,    25,     0,   258,    26,    27,    28,     0,     0,
     2694      45,    46,   283,   284,    31,   285,     0,     0,     0,     0,
     2695       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2696      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2697      25,   286,    34,    26,    27,    28,     0,   287,     0,    38,
     2698      39,   288,    31,     0,   289,   290,   291,   292,    41,    42,
     2699       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
     2700       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2701      34,     0,     0,     0,   295,     0,   379,    38,    39,     0,
     2702       0,     0,    45,    46,   297,   298,   299,   300,   467,     2,
     2703     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2704      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2705      23,    24,    25,     0,   158,    26,    27,    28,     0,     0,
     2706      45,    46,     0,     0,    31,     0,     0,     0,     8,     9,
     2707      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2708      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2709      28,     0,    34,     0,    35,     0,    36,    31,     0,    38,
     2710      39,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2711      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2712      22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
     2713      37,     0,    38,    39,    40,    31,     0,     0,     0,    -3,
     2714       0,    41,    42,     0,     8,     9,    10,    11,    12,    13,
     2715      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2716      24,    25,     0,    34,    26,    27,    28,    43,    37,   158,
     2717      38,    39,    40,    31,     0,    45,    46,     0,     0,    41,
     2718      42,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2719      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2720       0,    34,    26,    27,    28,    43,    37,    44,   208,    39,
     2721      40,    31,     0,    45,    46,     0,     0,    41,    42,     0,
     2722       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2723      18,    19,    20,    21,    22,    23,    24,    25,  -291,    34,
     2724      26,    27,    28,    43,    37,   271,   336,   337,    40,    31,
     2725       0,    45,    46,     0,     0,    41,    42,     0,     8,     9,
     2726      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2727      20,    21,    22,    23,    24,    25,  -291,    34,    26,    27,
     2728      28,   634,     0,   338,    38,    39,     0,    31,  -291,    45,
     2729      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2730      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2731       0,    26,    27,    28,     0,    34,     0,     0,     0,   634,
     2732      31,   338,    38,    39,     0,     0,  -291,    45,    46,     8,
     2733       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2734      19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
     2735      27,    28,     0,     0,     0,   208,    39,     0,    31,   338,
     2736       0,     0,     0,     0,     0,    45,    46,     8,     9,    10,
     2737      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2738      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
     2739       0,     0,   271,    38,    39,     0,    31,     0,    45,    46,
     2740       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2741      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2742      26,    27,    28,     0,    34,     0,     0,     0,     0,    31,
     2743     338,    38,    39,     0,     0,     0,    45,    46,     8,     9,
     2744      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2745      20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
     2746      28,     0,     0,     0,    38,    39,     0,    31,   685,     0,
     2747       0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
     2748       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2749       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2750       0,   592,    38,    39,     0,     0,     0,    45,    46,     2,
     2751     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2752      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2753      23,    24,    25,     0,     0,    26,    27,    28,     0,    44,
     2754       0,     0,     0,     0,    31,    45,    46,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2756       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2757       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
     2758      39,   283,   284,     0,   285,  1041,     0,  1042,     0,     0,
     2759    1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,
     2760    1524,  1051,     0,     0,     0,  1052,  1053,     0,    33,     0,
     2761     286,     0,     0,     0,     0,  -412,  1054,     0,     0,     0,
     2762     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2763     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
     2764       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2765       0,     0,     0,   295,     0,   379,     0,     0,   172,     0,
     2766       0,    45,    46,   297,   298,   299,   300,     0,     0,   283,
     2767     284,  1056,   285,  1041,     0,  1042,  -126,     0,  1043,  1044,
     2768    1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,
     2769       0,     0,     0,  1052,  1053,     0,    33,     0,   286,     0,
     2770       0,     0,     0,     0,  1054,     0,     0,     0,   288,     0,
     2771       0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2772       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2773       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2774       0,   295,     0,   379,     0,     0,   172,     0,     0,    45,
     2775      46,   297,   298,   299,   300,     0,     0,     0,     0,  1056,
     2776       0,     0,     0,     0,  -126,     2,   207,     4,     5,     6,
     2777       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2778      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2779       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2780      31,     0,   283,   284,     0,   285,  1041,     0,  1042,  1398,
     2781    1399,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
     2782       0,  1524,  1051,     0,     0,     0,  1052,  1053,    34,    33,
     2783      35,   286,    36,     0,     0,    38,    39,  1054,     0,     0,
     2784       0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2785       0,   293,   294,     0,     0,     0,     0,  1311,     0,     0,
     2786       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2787       0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
     2788       0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
     2789     283,   284,  1056,   285,  1041,     0,  1042,  1398,  1399,  1043,
     2790    1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,
     2791    1051,     0,     0,     0,  1052,  1053,     0,    33,     0,   286,
     2792       0,     0,     0,     0,     0,  1054,     0,     0,     0,   288,
     2793       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
     2794     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2795       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2796       0,     0,   295,     0,   379,     0,     0,   172,     0,     0,
     2797      45,    46,   297,   298,   299,   300,     0,     0,   283,   284,
     2798    1056,   285,  1041,     0,  1042,     0,     0,  1043,  1044,  1045,
     2799    1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,     0,
     2800       0,     0,  1052,  1053,     0,    33,     0,   286,     0,     0,
     2801       0,     0,     0,  1054,     0,     0,     0,   288,     0,     0,
     2802     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2803       0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
     2804       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2805     295,     0,   379,     0,     0,   172,     0,     0,    45,    46,
     2806     297,   298,   299,   300,   286,     0,     0,     0,  1056,     0,
     2807     640,     0,   140,   141,   288,     0,     0,   289,   290,   291,
     2808     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2809       0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
     2810       0,     0,     0,     0,     0,     0,     0,   295,     0,   641,
     2811       0,   642,   380,     0,     0,    45,    46,   297,   298,   299,
     2812     300,   286,     0,     0,     0,     0,     0,   287,     0,     0,
     2813       0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2814       0,   293,   294,     0,     0,     0,     0,     0,     0,   283,
     2815     284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
     2816       0,     0,     0,     0,   295,     0,   379,     0,   283,   284,
     2817       0,   285,   708,    46,   297,   298,   299,   300,   286,     0,
     2818       0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
     2819       0,   289,   290,   291,   292,    41,    42,   286,   293,   294,
     2820       0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
     2821     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2822       0,   295,     0,   379,     0,   283,   284,     0,   285,   344,
     2823      46,   297,   298,   299,   300,     0,     0,     0,     0,     0,
     2824     506,     0,     0,     0,   283,   284,     0,   285,    45,    46,
     2825     297,   298,   299,   300,   286,     0,     0,     0,     0,     0,
     2826     287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
     2827     292,    41,    42,   286,   293,   294,     0,     0,     0,   287,
     2828       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2829      41,    42,     0,   293,   294,     0,     0,   295,     0,     0,
     2830       0,   283,   284,     0,   285,    45,    46,   297,   298,   299,
     2831     300,     0,     0,     0,     0,     0,   511,     0,     0,     0,
     2832       0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
     2833     286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
     2834     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2835     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
     2836       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2837       0,     0,     0,   514,     0,     0,     0,     0,     0,     0,
     2838       0,    45,    46,   297,   298,   299,   300,     2,   207,     4,
    25532839       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25542840      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2555       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2556        0,     0,    31,     0,     8,     9,    10,    11,    12,    13,
    2557       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2558       24,    25,     0,     0,    26,    27,    28,   486,   487,   488,
    2559       34,     0,    35,    31,    36,    37,     0,   209,    39,    40,
    2560        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
    2561        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2562        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2563        0,     0,    44,     0,   210,     0,     0,     0,     0,     0,
    2564        0,    46,    47,     1,     2,   208,     4,     5,     6,     7,
    2565        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2566       18,    19,    20,    21,    22,    23,    24,    25,  -295,     0,
    2567       26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
    2568        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2571        0,    36,     0,     0,    38,    39,     0,     0,  -295,     0,
    2572        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2573        0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2575        0,    45,     0,     0,     0,     0,     0,     0,    46,    47,
    2576        1,     2,   208,     4,     5,     6,     7,     8,     9,    10,
    2577       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2578       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2579       29,     0,     0,    30,     0,     0,    31,     0,     0,     0,
    2580        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2581        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2582        0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
    2583        0,    38,    39,     0,     0,     0,     0,     0,     0,     0,
    2584        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2585        0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,     0,     0,     0,     0,     0,    45,     0,
    2587        0,     0,     0,     0,     0,    46,    47,     2,   208,     4,
    2588        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2589       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2590       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2841      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25912842       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    25922843       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25932844       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2594       34,     0,    35,     0,    36,    37,     0,   209,    39,    40,
    2595        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
    2596        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2597        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2598        0,     0,    44,     0,   210,     0,     0,     0,     0,     0,
    2599        0,    46,    47,     2,   208,     4,     5,     6,     7,     8,
    2600        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2601       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2602       27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
    2603        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2604        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2606       36,     0,     0,    38,    39,     0,     0,     0,     0,     0,
    2607        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2608        0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
    2609        0,     0,     0,     0,     0,     0,     0,     0,     0,  -403,
    2610      679,     0,     0,     0,     0,     0,     0,    46,    47,     2,
    2611      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2845      34,     0,    35,     0,    36,    37,     0,   175,   176,    40,
     2846       0,     0,     0,     0,     0,     0,    41,    42,   206,     2,
     2847     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    26122848      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    26132849      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     
    26152851       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26162852       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2617        0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
    2618       39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2619        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2620        0,  1369,     0,     0,     0,     0,     0,     0,     0,     0,
    2621        0,     0,     0,     0,     0,     0,   679,     0,     0,     0,
    2622        0,     0,     0,    46,    47,     2,   208,     4,     5,     6,
    2623        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2624       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2625        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2626       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2627        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2628        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2629       35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
    2630        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2631        0,     0,     0,     0,     0,    43,     0,  1371,     0,     0,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,   679,     0,     0,     0,     0,     0,     0,    46,
    2634       47,     2,   208,     4,     5,     6,     7,     8,     9,    10,
    2635       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2636       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2637        0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2853       0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
     2854      39,   467,     2,   207,     4,     5,     6,     7,     8,     9,
     2855      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2856      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2857      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    26382858       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26392859       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
    2641        0,   209,    39,     0,     0,     0,     0,     0,     0,     0,
    2642        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2643        0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
    2644        0,     0,     0,     0,     0,     0,     0,     0,   272,     0,
    2645        0,     0,     0,     0,     0,    46,    47,     2,   208,     4,
    2646        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2647       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2648       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2649        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2650        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2651        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2652       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2653        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2654        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2655        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2656        0,     0,     0,     0,   679,     0,     0,     0,     0,     0,
    2657        0,    46,    47,     2,   208,     4,     5,     6,     7,     8,
    2658        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2659       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2660       27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
    2661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2662        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2663        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2664       36,     0,     0,    38,    39,     0,     0,     0,     0,     0,
    2665        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
    2667        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2668      593,     0,     0,     0,     0,     0,     0,    46,    47,     2,
    2669      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2670       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2671       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2672        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
    2673        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2674        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2675        0,     0,    34,     0,    35,     0,    36,     0,     0,   209,
    2676       39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2677       17,    18,    19,    20,    21,    22,    23,    24,    25,    43,
    2678        0,    26,    27,    28,     0,     0,     0,     0,   284,   285,
    2679       31,   286,     0,     0,     0,     0,   210,     0,     0,     0,
    2680        0,     0,     0,    46,    47,     0,     0,     0,     0,     0,
    2681        0,     0,     0,     0,     0,     0,     0,   287,    34,     0,
    2682        0,     0,     0,   288,     0,    38,    39,   289,     0,     0,
    2683      290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
    2684        0,     0,     0,     0,     0,    43,     0,     0,     0,     0,
    2685        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2686      296,     0,   518,     0,     0,   173,     0,     0,     0,    46,
    2687       47,   298,   299,   300,   301,     8,     9,    10,    11,    12,
    2688       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2689       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2690        0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
    2691        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2692        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2693        0,   287,    34,     0,     0,     0,     0,   641,     0,    38,
    2694       39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
    2695        0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
    2696        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2697        0,     0,     0,     0,   296,   -35,   742,     0,     0,     0,
    2698        0,     0,     0,    46,    47,   298,   299,   300,   301,     8,
    2699        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2700       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2701       27,    28,     0,     0,     0,     0,   284,   285,    31,   286,
    2702        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2703        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2704        0,     0,     0,     0,     0,   287,    34,     0,     0,     0,
    2705        0,   288,     0,    38,    39,   289,     0,     0,   290,   291,
    2706      292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
    2707        0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
    2708        0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
    2709      297,     0,     0,     0,     0,     0,     0,    46,    47,   298,
    2710      299,   300,   301,     8,     9,    10,    11,    12,    13,    14,
    2711       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2712       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2713      284,   285,    31,   286,     0,     0,     0,     0,     0,     0,
    2714        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,     0,     0,     0,     0,     0,     0,     0,     0,   287,
    2716       34,     0,     0,     0,     0,   288,     0,    38,    39,   289,
    2717        0,     0,   290,   291,   292,   293,    41,    42,     0,   294,
    2718      295,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2719        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2720        0,     0,   296,     0,   159,     0,     0,     0,     0,     0,
    2721        0,    46,    47,   298,   299,   300,   301,     8,     9,    10,
    2722       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2723       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2724        0,     0,     0,     0,   284,   285,    31,   286,     0,     0,
    2725        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2726        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2727        0,     0,     0,   287,    34,     0,     0,     0,     0,   288,
    2728        0,    38,    39,   289,     0,     0,   290,   291,   292,   293,
    2729       41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
    2730        0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
    2731        0,     0,     0,     0,     0,     0,   296,     0,   593,     0,
    2732        0,     0,     0,     0,     0,    46,    47,   298,   299,   300,
    2733      301,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2734       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2735        0,    26,    27,    28,     0,     0,     0,     0,   284,   285,
    2736       31,   286,     0,     0,     0,     0,     0,     0,     0,     0,
    2737        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2738        0,     0,     0,     0,     0,     0,     0,   287,    34,     0,
    2739        0,     0,     0,   288,     0,    38,    39,   289,     0,     0,
    2740      290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
    2741        0,     0,     0,     0,     0,    43,     0,     0,     0,     0,
    2742        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2743      296,     0,   380,     0,     0,     0,     0,     0,     0,    46,
    2744       47,   298,   299,   300,   301,   468,     2,   208,     4,     5,
    2745        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2746       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2747        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2748        0,    31,     0,     0,     0,     8,     9,    10,    11,    12,
    2749       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2750       23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
    2751        0,    35,     0,    36,    31,     0,    38,    39,     0,     0,
    2752        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2753       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2754       25,     0,    34,    26,    27,    28,     0,    37,     0,    38,
    2755       39,    40,    31,     0,     0,     0,    -3,     0,    41,    42,
    2756        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2757        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2758       34,     0,     0,     0,    44,    37,   159,    38,    39,    40,
    2759        0,     0,     0,    46,    47,     0,    41,    42,     0,     0,
    2760        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2761        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2762        0,     0,    44,     0,    45,     0,     0,     0,     0,     0,
    2763        0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
    2764       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2765       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2766        0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
    2767       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2768       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2769       34,     0,    31,     0,     0,    37,     0,   209,    39,    40,
    2770        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
    2771        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2772       34,     0,     0,     0,     0,    37,     0,   337,   338,    40,
    2773        0,     0,    44,     0,   272,     0,    41,    42,     0,     0,
    2774        0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
    2775        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2776        0,     0,   635,     0,   339,     0,     0,     0,     0,     0,
    2777        0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
    2778       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2779       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2780        0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
    2781       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2782       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2783       34,     0,    31,     0,     0,    37,     0,   337,   338,    40,
    2784        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
    2785        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2786       34,     0,     0,     0,     0,   112,     0,    38,    39,     0,
    2787        0,     0,     0,     0,   339,     0,    41,    42,     0,     0,
    2788        0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
    2789        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2790        0,     0,     0,     0,    45,     0,     0,     0,     0,     0,
    2791        0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
    2792       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2793       25,  -295,     0,    26,    27,    28,     0,     0,     0,     0,
    2794        0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
    2795       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2796       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2797       34,     0,    31,   686,     0,     0,     0,    38,    39,     0,
    2798        0,  -295,     0,     0,     0,     0,     0,     0,     0,     0,
    2799        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2800       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2801        0,     0,   635,     0,   339,     0,     0,     0,     0,     0,
    2802        0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
    2803        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2804        0,     0,     0,     0,   687,     0,     0,     0,   688,     0,
    2805        0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
    2806       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2807       25,  -295,     0,    26,    27,    28,     0,     0,     0,     0,
    2808        0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
    2809       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2810       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2811       34,     0,    31,   686,     0,     0,     0,    38,    39,     0,
    2812        0,  -295,     0,     0,     0,     0,     0,     0,     0,     0,
    2813        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2814       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2815        0,     0,     0,     0,   339,     0,     0,     0,     0,     0,
    2816        0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
    2817        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2818        0,     0,     0,     0,   687,     0,     0,     0,  1101,     0,
    2819        0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
    2820       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2821       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2822        0,     0,    31,   686,     8,     9,    10,    11,    12,    13,
    2823       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2824       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2825       34,     0,     0,    31,     0,     0,     0,    38,    39,     0,
    2826        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2827        0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
    2828        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2829        0,     0,     0,     0,   687,     0,     0,     0,  1233,     0,
    2830        0,    46,    47,     0,     0,     0,     0,     0,    43,     0,
    2831        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2832        0,     0,     0,   635,     0,   339,     0,     0,     0,     0,
    2833        0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
    2834       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2835       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2836        0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
    2837       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2838       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2839        0,    34,     0,    31,     0,     0,     0,     0,    38,    39,
    2840        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2841        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
    2842        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2843        0,     0,     0,     0,     0,   259,     0,     0,     0,     0,
    2844        0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
    2845        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2846        0,     0,     0,     0,     0,   159,     0,     0,     0,     0,
    2847        0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
    2848       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2849       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2850        0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
    2851       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2852       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2853        0,    34,     0,    31,     0,     0,     0,     0,   209,    39,
    2854        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2855        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
    2856        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2857        0,     0,     0,     0,     0,   272,     0,     0,     0,     0,
    2858        0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
    2859        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2860        0,     0,     0,     0,     0,   339,     0,     0,     0,     0,
    2861        0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
    2862       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2863       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2864        0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
    2865       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2866       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2867        0,    34,     0,    31,     0,     0,     0,     0,    38,    39,
    2868        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2869        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
    2870        0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
    2871        0,     0,     0,     0,     0,   687,     0,     0,     0,     0,
    2872        0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
    2873        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2874        0,     0,     0,     0,     0,   593,     0,     0,     0,     0,
    2875        0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
    2876       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2877       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2878        0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
    2879       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2880       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2881        0,    34,     0,    31,     0,     0,     0,     0,    38,    39,
    2882        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2883        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
    2884        0,    34,     0,     0,     0,     0,     0,     0,   209,    39,
    2885        0,     0,     0,     0,     0,    45,     0,     0,     0,     0,
    2886        0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
    2887        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2888        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2889        0,     0,    46,    47,     2,   208,     4,     5,     6,     7,
     2860       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2861       0,     0,    38,    39,     2,   207,     4,     5,     6,     7,
    28902862       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    28912863      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    28922864      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2893        0,   284,   285,     0,   286,  1051,     0,  1052,     0,     0,
    2894     1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,     0,
    2895     1549,  1061,     0,     0,     0,  1062,  1063,    34,    33,    35,
    2896      287,    36,     0,     0,    38,    39,  1064,     0,     0,     0,
    2897      289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
    2898      294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2865       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2866      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2867       0,    26,    27,    28,   485,   486,   487,    34,     0,    35,
     2868      31,    36,     0,     0,   208,    39,     0,     0,     0,     0,
    28992869       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2900     -416,     0,     0,   296,     0,   380,     0,     0,   173,     0,
    2901        0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
    2902        0,     0,  1066,     0,   284,   285,  -130,   286,  1051,     0,
    2903     1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,  1059,
    2904     1060,     0,     0,     0,  1061,     0,     0,     0,  1062,  1063,
    2905        0,    33,     0,   287,     0,     0,     0,     0,     0,  1064,
    2906        0,     0,     0,   289,     0,     0,   290,   291,   292,   293,
    2907       41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
    2908        0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
    2909        0,     0,     0,     0,     0,     0,   296,     0,   380,     0,
    2910        0,   173,     0,     0,     0,    46,    47,   298,   299,   300,
    2911      301,     0,     0,     0,     0,  1066,     0,     0,     0,  -130,
    2912        2,   208,     4,     5,     6,     7,     8,     9,    10,    11,
    2913       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2914       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2915        0,     0,     0,     0,     0,    31,     0,   284,   285,     0,
    2916      286,  1051,     0,  1052,  1419,  1420,  1053,  1054,  1055,  1056,
    2917     1057,  1058,  1059,  1060,     0,     0,  1549,  1061,     0,     0,
    2918        0,  1062,  1063,    34,    33,    35,   287,    36,     0,     0,
    2919       38,    39,  1064,     0,     0,     0,   289,     0,     0,   290,
    2920      291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
    2921        0,     0,  1327,     0,    43,     0,     0,     0,     0,     0,
    2922        0,     0,     0,     0,     0,     0,     0,     0,     0,   296,
    2923        0,   380,     0,     0,   173,     0,     0,     0,    46,    47,
    2924      298,   299,   300,   301,     0,     0,   284,   285,  1066,   286,
    2925     1051,     0,  1052,  1419,  1420,  1053,  1054,  1055,  1056,  1057,
    2926     1058,  1059,  1060,     0,     0,     0,  1061,     0,     0,     0,
    2927     1062,  1063,     0,    33,     0,   287,     0,     0,     0,     0,
    2928        0,  1064,     0,     0,     0,   289,     0,     0,   290,   291,
    2929      292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
    2930        0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
    2931        0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
    2932      380,     0,     0,   173,     0,     0,     0,    46,    47,   298,
    2933      299,   300,   301,     0,     0,   284,   285,  1066,   286,  1051,
    2934        0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
    2935     1059,  1060,     0,     0,     0,  1061,     0,     0,     0,  1062,
    2936     1063,     0,    33,     0,   287,     0,     0,     0,     0,     0,
    2937     1064,     0,     0,     0,   289,     0,     0,   290,   291,   292,
    2938      293,    41,    42,     0,   294,   295,     0,     0,     0,     0,
    2939        0,     0,    43,   284,   285,     0,   286,     0,     0,     0,
    2940        0,     0,     0,     0,     0,     0,     0,   296,     0,   380,
    2941        0,     0,   173,     0,     0,     0,    46,    47,   298,   299,
    2942      300,   301,   287,     0,     0,     0,  1066,     0,   641,     0,
    2943      141,   142,   289,     0,     0,   290,   642,   292,   293,    41,
    2944       42,     0,   294,   295,     0,     0,     0,     0,     0,     0,
    2945       43,   284,   285,     0,   286,     0,     0,     0,     0,     0,
    2946        0,     0,     0,     0,     0,   296,     0,   643,     0,   644,
    2947      381,     0,     0,     0,    46,    47,   298,   299,   300,   301,
    2948      287,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2949      289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
    2950      294,   295,     0,     0,     0,     0,     0,     0,    43,   284,
    2951      285,     0,   286,     0,     0,     0,     0,     0,     0,     0,
    2952        0,     0,     0,   296,     0,   380,     0,     0,   284,   285,
    2953        0,   286,   710,    47,   298,   299,   300,   301,   287,     0,
    2954        0,     0,     0,     0,   641,     0,     0,     0,   289,     0,
    2955        0,   290,   291,   292,   293,    41,    42,   287,   294,   295,
    2956        0,     0,     0,   288,     0,     0,    43,   289,     0,     0,
    2957      290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
    2958        0,   296,     0,   765,     0,    43,   284,   285,     0,   286,
    2959       46,    47,   298,   299,   300,   301,     0,     0,     0,     0,
    2960      296,     0,   380,     0,     0,   284,   285,     0,   286,   345,
    2961       47,   298,   299,   300,   301,   287,     0,     0,     0,     0,
    2962        0,   288,     0,     0,     0,   289,     0,     0,   290,   291,
    2963      292,   293,    41,    42,   287,   294,   295,     0,     0,     0,
    2964      288,     0,     0,    43,   289,     0,     0,   290,   291,   292,
    2965      293,    41,    42,     0,   294,   295,     0,     0,   512,     0,
    2966        0,     0,    43,     0,     0,     0,     0,    46,    47,   298,
    2967      299,   300,   301,     0,     0,     0,     0,   515,     0,     0,
    2968        0,     0,     0,     0,     0,     0,    46,    47,   298,   299,
    2969      300,   301,     2,   208,     4,     5,     6,     7,     8,     9,
    2970       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2971       20,    21,    22,    23,    24,    25,     0,     0,     0,     0,
    2972        0,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2973        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2974        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2975        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2976       37,     0,   176,   177,    40,     0,     0,     0,     0,     0,
    2977        0,    41,    42,   207,     2,   208,     4,     5,     6,     7,
    2978        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2979       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2980       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2981        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2982        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2983        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2984        0,    36,     0,     0,   209,    39,   468,     2,   208,     4,
    2985        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2986       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2987       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2988        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2989        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2990        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2991       34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
    2992      208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2993       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2994       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2995        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
    2996        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2997        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2998        0,     0,    34,     0,    35,     0,    36,     0,     0,   209,
    2999       39
     2870       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2871       0,     0,     0,     0,     0,    38,    39
    30002872};
    30012873
    30022874#define yypact_value_is_default(yystate) \
    3003   ((yystate) == (-1414))
     2875  ((yystate) == (-1310))
    30042876
    30052877#define yytable_value_is_error(yytable_value) \
     
    30082880static const yytype_int16 yycheck[] =
    30092881{
    3010        0,     1,    44,   187,   187,   535,   187,     0,    44,   753,
    3011      187,    44,   206,   241,   648,   187,   522,   753,   188,   881,
    3012        1,   753,   107,   221,   118,   187,   187,   514,   621,   170,
    3013      171,   350,    32,     0,   986,   760,     0,   189,   603,    32,
    3014      350,   601,   601,   493,    44,   188,   281,   497,    44,   993,
    3015       50,    39,  1337,   604,    44,  1419,   603,    50,    44,   610,
    3016      601,   572,    51,    32,    64,    32,    72,    67,    32,    82,
    3017       70,    64,   157,   601,    67,    95,  1050,    70,    39,   346,
    3018      419,    44,    45,   267,   267,  1031,   267,   694,   601,    70,
    3019      267,    63,   107,   601,    50,   267,   296,   110,   268,  1043,
    3020      439,  1062,  1063,   601,   117,   267,   267,   107,   447,   203,
    3021      130,   263,   264,  1526,    39,   115,   131,    82,   118,   119,
    3022      109,   109,    67,   111,    39,   268,   132,    64,   483,  1493,
    3023       72,  1030,  1031,  1546,    39,    44,    45,    39,   365,    84,
    3024     1553,   735,   369,   636,   637,   187,   427,   428,   148,   149,
    3025      111,   187,   115,   881,   187,  1440,   149,   157,   158,   115,
    3026      132,   654,   162,   635,   636,   637,     0,   258,   912,   162,
    3027      489,    28,   109,    39,   119,    82,   912,     0,     1,  1140,
    3028      912,   112,   654,   689,   109,   116,   111,   187,   188,    72,
    3029      132,   187,   148,   110,   109,   188,   111,   187,    32,   116,
    3030        0,   187,    82,   203,   109,   114,   111,   720,    82,    32,
    3031      117,   211,   720,   411,   495,    96,   483,   162,   211,   712,
    3032       82,    78,   720,   223,     0,   267,    58,   427,   428,   109,
    3033      223,   267,    32,   514,   267,   118,   110,   407,   115,   116,
    3034      712,   241,   123,   109,    67,   111,    85,    70,   109,   111,
    3035      111,   109,    67,   253,   131,   211,    32,   342,   818,   818,
    3036      253,   261,   109,  1423,   407,   830,   266,   267,   268,   820,
    3037        1,   996,   283,   273,   113,   268,   108,   818,   223,   111,
    3038      635,   636,   637,   830,   253,   241,   253,   372,   799,   253,
    3039      818,    67,  1238,   603,     0,     1,   296,   931,   579,   654,
    3040      907,    11,  1254,   397,   119,   818,     1,   507,   308,   116,
    3041      818,   481,   512,   109,   807,   515,   261,   273,   491,    50,
    3042      818,   266,  1050,  1475,   324,   132,    32,   109,   419,   329,
    3043     1304,   425,    44,    45,   230,   807,   329,   431,   481,   112,
    3044       80,   112,   342,   116,   683,  1291,   346,   162,   439,   131,
    3045      350,   351,   308,   249,   621,    82,   447,   712,  1510,   626,
    3046     1512,  1521,  1224,   590,    70,   365,  1526,   116,   568,   369,
    3047      697,   111,   372,   113,    96,   940,   107,   117,   110,   939,
    3048      939,   110,   109,   132,   115,   117,  1546,   116,   220,   110,
    3049      346,  1290,  1291,  1553,   749,  1526,   117,   397,   939,   131,
    3050      223,   123,   114,    90,    91,   632,   351,   407,   223,    10,
    3051       11,    12,    13,    14,   407,   114,  1009,   148,   116,   253,
    3052       94,     0,  1553,    80,   258,   425,   157,   427,   428,  1125,
    3053      253,   431,   605,  1129,   434,   109,   609,   111,    39,   126,
    3054      127,   526,   274,   116,   118,   119,   261,   223,   129,   281,
    3055      131,   266,   807,   253,   111,   455,   113,   630,   258,   132,
    3056      117,   634,   116,  1407,  1408,  1059,    67,  1018,  1019,  1415,
    3057      976,   427,   428,   473,     3,   112,   207,   253,   132,   116,
    3058      211,   481,   749,   483,   116,   485,   697,   432,   481,   489,
    3059     1464,    72,   485,     0,   505,   495,  1224,  1471,   948,   734,
    3060      132,   116,    83,    84,   991,  1139,   658,   507,   649,   509,
    3061      241,   830,   512,     3,   514,   515,  1415,   349,   485,   689,
    3062      830,   485,   522,     0,   116,    32,   526,   527,   110,   474,
    3063      111,   109,   116,   111,   366,   117,   351,    44,   370,   495,
    3064      132,    72,   273,    50,  1109,   276,   689,   253,   132,    94,
    3065     1524,   112,    83,    84,   116,   116,   911,    64,   514,   254,
    3066       67,  1496,   656,    70,   109,   296,   111,  1502,   116,   109,
    3067      132,   571,   572,   118,   119,   351,  1304,   308,   131,   579,
    3068      111,   792,   809,    94,   132,   419,   913,   814,  1523,  1095,
    3069      590,   591,   683,  1528,  1100,   595,   116,   917,   109,   919,
    3070      111,   601,   110,   603,   116,   439,   116,   118,   119,   110,
    3071      110,   342,   132,   447,   116,   346,   116,   432,   709,   419,
    3072      132,   621,   132,   579,   116,   944,   626,   591,   628,   112,
    3073      132,   958,   632,   116,   365,   635,   636,   637,   369,   439,
    3074      132,   372,   149,   109,   911,   111,   110,   447,   112,   483,
    3075      595,   485,   116,   109,   654,   162,   656,   668,   869,   474,
    3076      110,    72,   485,   748,   109,   621,   116,   131,   132,   867,
    3077      626,   110,    83,    84,    50,  1030,   903,   116,   623,   852,
    3078      187,   188,    72,   628,   109,   485,   686,   109,   110,   689,
    3079      888,   120,   121,    83,    84,   110,   427,   428,   474,    71,
    3080      111,   116,   913,    75,   211,   109,    78,   111,    80,   485,
    3081     1304,   118,   712,   713,   714,    87,   223,   124,   125,   109,
    3082      720,   721,   950,   109,   455,   111,   109,   738,   912,   912,
    3083      109,   912,   873,    88,    89,   912,  1464,   468,   109,   115,
    3084      912,   110,  1009,  1471,   914,   110,   253,   958,   748,   749,
    3085      912,   912,   110,   753,   754,   700,    72,   110,    74,    75,
    3086      267,   112,   493,    72,   495,   109,   497,    83,    84,   714,
    3087      109,   914,   945,   468,    83,    84,   507,    72,   509,   485,
    3088      595,   512,   115,   514,   515,   996,  1530,  1381,    83,    84,
    3089      622,  1321,   115,   116,  1530,   526,  1524,   110,  1530,   799,
    3090     1127,   109,   111,   116,  1159,   132,   638,   807,   623,   809,
    3091      110,   811,    64,   628,   814,   815,   116,   110,   818,   514,
    3092      109,   653,   329,   116,   507,   910,   509,   110,  1022,   512,
    3093      830,   109,   515,   116,   529,   211,  1047,   532,   112,   534,
    3094      535,   132,   214,   350,    85,    86,    87,   623,   579,   683,
    3095       72,   815,    74,    75,   110,   557,   558,   559,   560,   590,
    3096      116,    83,    84,  1190,  1191,   110,   811,   109,   109,   111,
    3097      111,   116,   113,   114,  1468,   709,  1470,   114,   110,   114,
    3098      110,   881,   132,   683,   116,   700,   116,   110,   583,   111,
    3099      621,   109,  1159,   116,   109,   626,   111,   273,   132,   714,
    3100      407,   632,   734,   903,  1045,   465,   109,  1134,   111,   709,
    3101      910,   911,   912,   110,   914,   749,  1127,   881,   114,   116,
    3102      296,   110,   110,   110,   700,  1095,   926,   116,   116,   116,
    3103     1100,  1525,   308,    82,   109,  1290,   111,   109,   714,   939,
    3104      940,    85,    86,    87,   944,   109,   110,   111,   109,   949,
    3105      950,    82,  1095,    92,    93,   686,   112,  1100,     0,     1,
    3106      655,   119,   657,   116,   117,   109,   966,   111,   949,   113,
    3107      114,  1238,   129,    72,   110,   111,   976,    76,   485,  1190,
    3108     1191,   353,   489,   355,    83,    84,   128,    29,    30,   465,
    3109       32,    58,    59,   724,   950,    94,   811,   115,   116,  1505,
    3110      116,   117,    44,  1203,  1204,    94,  1206,   131,    50,  1009,
    3111      109,   111,   707,  1213,   109,  1215,    58,   748,   109,   118,
    3112      119,   114,    64,  1117,   112,    67,   116,   117,    70,   112,
    3113     1030,  1031,   109,   110,   111,   811,     4,     5,     6,     7,
    3114        8,     9,    84,    85,   109,   110,   111,   881,   112,  1555,
    3115     1050,    44,    45,  1009,   109,   110,   111,   110,   881,    10,
    3116       11,    12,    13,    14,   553,   554,   108,  1012,   109,   111,
    3117       30,   443,   110,   110,  1401,   110,   118,   911,   809,   455,
    3118      110,   881,   110,   814,   555,   556,  1050,   112,    39,   111,
    3119     1090,   131,  1419,   116,   601,  1095,   603,    58,    59,    60,
    3120     1100,    69,   114,    71,   114,   881,   109,   149,   112,  1109,
    3121      561,   562,   672,   110,  1125,   157,    67,  1117,  1129,  1130,
    3122      162,  1263,  1264,  1265,    84,    85,   949,   110,   112,   117,
    3123      112,   507,   112,   509,  1134,  1220,   512,   112,   117,   515,
    3124        3,   117,   116,    94,    29,   187,   188,    10,    11,    12,
    3125       13,    14,   110,   110,   116,   114,   112,   112,   109,  1159,
    3126      111,   203,   115,   110,   132,  1492,  1493,   118,   119,   211,
    3127      115,   115,   903,   109,   116,   881,    39,  1377,   220,   910,
    3128      110,   223,   689,   132,   110,   110,   117,   110,   230,   110,
    3129     1401,   110,   116,   110,   110,   926,   672,  1012,   110,   110,
    3130      110,  1201,  1202,   245,    67,   110,   110,   249,  1419,   110,
    3131      110,   253,   254,   720,   721,   110,  1050,   948,   949,   950,
    3132     1220,  1202,   110,   110,  1224,   267,   268,  1050,   110,    72,
    3133       29,   115,   274,    76,   131,   795,  1012,  1248,  1238,   281,
    3134       83,    84,  1242,   949,   117,   805,    72,   116,    74,    75,
    3135     1050,    94,    72,   110,    74,    75,  1201,    83,    84,   819,
    3136     1224,  1242,   112,    83,    84,   112,   109,   116,   111,   964,
    3137      110,   110,   110,   117,  1050,   118,   119,   112,  1009,   116,
    3138      114,  1492,  1493,   109,   116,   245,   110,   329,   114,   109,
    3139     1290,  1291,   110,   988,   114,   110,   991,   110,   993,  1299,
    3140      112,   110,   116,  1397,  1304,   116,     3,   349,   350,   110,
    3141      686,   818,  1540,    10,    11,    12,    13,    14,   112,   795,
    3142      109,   109,   109,   830,   366,  1159,   109,  1338,   370,   805,
    3143      109,  1342,   117,   115,   112,   132,   110,  1337,   110,   381,
    3144     1304,   110,    39,   819,  1050,   115,  1530,  1530,  1043,  1530,
    3145      115,   114,   129,  1530,  1299,   397,  1337,   112,  1530,  1090,
    3146      110,  1531,   116,   112,   132,   407,   112,   110,  1530,  1530,
    3147       67,     4,     5,     6,     7,     8,     9,   116,  1201,  1202,
    3148      110,   110,    47,   425,   112,  1555,  1201,   112,  1531,   431,
    3149     1224,   433,   112,   110,   112,   132,   112,  1397,   112,   132,
    3150       33,  1224,   115,  1134,  1238,   912,    72,   914,    74,    75,
    3151       76,  1505,  1555,   132,   110,  1415,   115,    83,    84,  1242,
    3152      132,   381,   132,   117,  1224,  1201,   468,   110,   112,   115,
    3153      112,   473,   112,  1444,   112,    56,    69,   944,    71,   481,
    3154     1440,   112,   112,   485,   112,   112,   110,   489,  1224,   110,
    3155      492,   109,   494,   881,    72,   112,    74,    75,    76,  1440,
    3156      112,   109,   109,    60,  1464,    83,    84,  1027,  1028,   110,
    3157     1304,  1471,   514,  1473,   110,  1475,  1299,   114,    99,   132,
    3158      112,  1304,   117,   112,  1299,   110,   112,   529,  1530,  1220,
    3159      532,   109,   534,   535,  1530,   110,  1202,  1530,    96,   109,
    3160     1464,    96,   109,   115,  1304,  1505,   112,  1471,   132,   110,
    3161     1510,  1242,  1512,   116,  1337,    42,   110,   110,  1224,   110,
    3162      110,   117,   110,  1299,  1524,  1085,  1086,   132,  1304,    96,
    3163     1530,  1531,   492,   132,   494,     3,  1242,    96,  1531,   110,
    3164     1540,   583,    10,    11,    12,    13,    14,   132,   590,   132,
    3165      926,  1027,  1028,   117,    72,  1555,   110,     0,    76,   601,
    3166     1524,   603,  1555,   286,  1396,    83,    84,   132,  1263,  1264,
    3167     1265,    39,   110,   110,   195,   115,    94,   112,   112,   132,
    3168      622,   109,   132,   115,  1540,   308,   309,   110,  1095,    32,
    3169      115,   109,    72,  1100,    74,    75,   638,   218,  1304,    67,
    3170      118,   119,   644,    83,    84,   110,  1337,   228,   132,  1085,
    3171     1086,   653,   110,   655,   656,   657,   110,  1440,  1066,   565,
    3172      563,  1224,  1493,   346,   564,  1053,  1321,    70,   566,  1383,
    3173     1464,  1337,   567,  1565,   114,  1314,  1130,  1471,  1342,  1081,
    3174     1471,  1464,   686,   686,   919,  1100,   927,   689,  1471,   699,
    3175      583,   693,   980,   695,   873,   650,   724,   699,   946,   382,
    3176       50,   734,  1242,   485,  1464,   707,    -1,    26,    27,    28,
    3177       -1,  1471,   571,   571,    64,   296,  1236,    67,   720,   721,
    3178       70,   571,    -1,    -1,   644,    -1,    -1,    -1,  1464,    -1,
    3179     1524,    -1,   734,    -1,    -1,  1471,    72,    -1,    74,    75,
    3180       76,  1524,    -1,    58,    -1,     0,     1,    83,    84,  1440,
    3181       -1,  1271,  1407,  1408,  1090,   158,    -1,    -1,    -1,  1279,
    3182     1280,  1281,    -1,    -1,  1524,     4,     5,     6,     7,     8,
    3183        9,    -1,    -1,   693,  1440,   695,    -1,    32,    -1,   699,
    3184       -1,   100,  1473,   102,  1475,    -1,    -1,    -1,  1524,    -1,
    3185     1445,    -1,    -1,   108,    -1,    50,   111,    -1,  1464,   149,
    3186     1236,    67,    -1,    -1,    -1,  1471,   191,    -1,    -1,    -1,
    3187       -1,    77,   162,   198,    -1,    70,   818,    -1,    -1,  1510,
    3188       -1,  1512,    -1,    -1,    -1,  1345,    -1,    -1,   830,   232,
    3189       69,    -1,    71,    -1,    -1,  1271,  1224,    -1,   188,    -1,
    3190       -1,    -1,   157,  1279,  1280,  1281,    -1,    -1,    -1,  1540,
    3191      253,  1506,   107,   119,    -1,   258,    -1,    -1,  1524,    -1,
    3192     1515,   211,    -1,   444,   183,    -1,    -1,   550,   551,   552,
    3193       -1,   873,    -1,   223,   193,   194,    -1,    -1,   880,   198,
    3194       -1,   200,   201,    -1,    -1,   270,    -1,    -1,    72,   470,
    3195       74,    75,    76,    -1,   149,    -1,   162,    -1,    -1,    83,
    3196       84,   903,   157,   158,    -1,   220,    -1,    -1,    -1,  1345,
    3197      912,    -1,   914,    -1,    -1,    -1,    -1,    -1,    72,   921,
    3198       74,    75,    76,    -1,    -1,   109,   507,    -1,    -1,    83,
    3199       84,   512,  1320,   188,   515,    -1,    -1,    -1,    -1,   324,
    3200       94,    -1,   944,    -1,    -1,    -1,    -1,   332,   203,   352,
    3201      335,   206,   207,   873,    -1,   109,   211,   223,    -1,   274,
    3202      880,    -1,   964,    -1,   118,   119,   281,    -1,    -1,    -1,
    3203       -1,    -1,    -1,    -1,    -1,    -1,    -1,   232,   980,   329,
    3204       -1,   236,    -1,   238,    -1,    -1,   988,  1375,    -1,   991,
    3205     1378,   993,   247,    -1,    -1,   261,    -1,    -1,   253,    -1,
    3206      266,   921,    -1,   258,    -1,    -1,    -1,    -1,   672,    -1,
    3207       -1,    -1,    -1,   268,   399,   281,   419,    -1,   403,    -1,
    3208       -1,   276,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3209       -1,   434,    -1,    -1,   349,  1423,   439,    -1,    -1,    -1,
    3210     1428,  1043,    -1,    -1,   447,    10,    11,    12,    13,    14,
    3211       -1,   366,    -1,    39,    -1,   370,    -1,   407,    -1,    -1,
    3212      980,    -1,   465,  1530,    -1,    -1,    -1,    -1,    -1,    -1,
    3213     1458,    -1,    -1,    -1,    39,    -1,    -1,   760,    -1,  1081,
    3214      483,    67,   485,    -1,    -1,   351,    -1,   342,    -1,    -1,
    3215      671,   346,    -1,  1095,    -1,   480,    -1,   352,  1100,   680,
    3216       -1,    -1,    67,   684,    -1,    -1,    -1,    -1,    94,    -1,
    3217      365,    -1,    -1,    -1,   369,  1117,    -1,   372,   433,    -1,
    3218       -1,    -1,    -1,   109,   527,   111,    -1,    -1,    -1,    94,
    3219       -1,   795,   118,   119,    -1,    -1,    -1,  1473,    -1,  1475,
    3220       -1,   805,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3221       -1,    -1,    -1,   118,   119,   819,  1544,    -1,    -1,    -1,
    3222       -1,  1081,  1550,    -1,   419,    -1,   432,    -1,    -1,    -1,
    3223       -1,    -1,    -1,  1561,  1510,    -1,  1512,  1565,    72,   434,
    3224       74,    75,    76,   449,   439,    -1,   571,   572,   591,    83,
    3225       84,    -1,   447,    -1,    72,  1197,    74,    75,    76,    -1,
    3226       94,    -1,    -1,     0,    -1,    83,    84,    -1,   474,    -1,
    3227      465,    -1,    -1,   468,    -1,   109,    94,   111,  1220,    -1,
    3228       -1,    -1,    -1,   117,   118,   119,    -1,    -1,   483,    -1,
    3229      485,   109,   635,   636,   637,    32,    -1,    -1,   493,    -1,
    3230      118,   119,   497,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3231       -1,   654,    -1,    -1,    -1,    -1,   575,   576,    -1,    -1,
    3232       -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,   672,
    3233       -1,   526,   527,    70,   659,   590,    -1,  1197,   663,    -1,
    3234      683,    -1,    -1,    -1,    -1,   604,    -1,    -1,   607,   608,
    3235       -1,   610,    -1,   612,   613,    -1,    -1,    -1,   617,   618,
    3236       -1,    -1,    -1,    -1,    -1,    -1,   709,   622,    -1,   712,
    3237       -1,    -1,    -1,    -1,    -1,    -1,    -1,   572,     0,  1321,
    3238       -1,    -1,    -1,   638,   905,    -1,  1009,    -1,    -1,   595,
    3239       -1,    -1,    -1,    -1,    -1,   590,   591,    -1,   653,    -1,
    3240       -1,    -1,    -1,     0,     1,    -1,   749,    -1,   603,    -1,
    3241       32,    -1,    -1,    -1,    -1,    -1,    -1,   623,    -1,    -1,
    3242       -1,   158,   628,  1027,  1028,    -1,   621,  1050,    -1,    -1,
    3243       -1,   626,    -1,    -1,    -1,    32,    -1,   632,    -1,    -1,
    3244      635,   636,   637,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3245       -1,    -1,   795,    -1,  1396,  1397,    -1,    -1,    -1,   654,
    3246       -1,    -1,   805,    -1,   807,  1407,  1408,    -1,    -1,   812,
    3247       67,    -1,   815,    70,   799,    -1,   819,   672,    -1,   734,
    3248       -1,  1085,  1086,    -1,    -1,    -1,    -1,    -1,   683,    -1,
    3249       -1,    -1,    -1,    -1,   700,    -1,    -1,    -1,    -1,   758,
    3250      759,    -1,    -1,  1445,    -1,    -1,    -1,    -1,   714,    -1,
    3251       -1,    -1,    -1,    -1,   709,    -1,   253,   712,    -1,    -1,
    3252       -1,   258,    -1,    -1,    -1,    -1,   721,    -1,   734,   724,
    3253       72,    -1,    74,    75,    76,    -1,   158,    -1,   881,    -1,
    3254     1061,    83,    84,    -1,    72,    -1,    74,    75,    76,    -1,
    3255       -1,    -1,    94,   748,   749,    83,    84,    -1,    -1,   754,
    3256       -1,   158,    -1,  1505,  1506,    -1,    94,   109,   911,   111,
    3257       -1,    -1,    -1,  1515,    -1,    -1,   118,   119,    -1,    -1,
    3258       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1530,  1531,
    3259      118,   119,    -1,   918,    -1,    -1,    -1,    -1,    -1,    -1,
    3260      795,    -1,    -1,    -1,    -1,   811,    -1,    -1,    -1,    -1,
    3261      805,    -1,   807,  1555,   809,   352,    -1,   812,    -1,   814,
    3262      815,    -1,    -1,   966,   819,    -1,   223,    -1,    -1,    -1,
    3263       -1,   253,    -1,    -1,   829,    -1,   258,    97,    98,    99,
    3264      100,   101,   102,   103,   104,   105,   106,    -1,   903,    -1,
    3265       -1,    -1,    -1,    -1,    -1,    -1,   253,    72,    -1,    74,
    3266       75,    76,    -1,    -1,   923,    -1,    -1,  1271,    83,    84,
    3267       -1,   131,    -1,   998,    -1,  1279,  1280,  1281,    -1,    94,
    3268       -1,    -1,   419,    -1,  1027,  1028,   881,  1030,  1031,    -1,
    3269     1015,    -1,    -1,    -1,   109,    -1,   111,   434,    -1,    -1,
    3270       -1,    -1,   439,   118,   119,    -1,    -1,  1050,   903,    -1,
    3271      447,    -1,    -1,    -1,    -1,   910,   911,    -1,    -1,   914,
    3272       -1,    10,    11,    12,    13,    14,    -1,    -1,   465,    -1,
    3273      352,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3274       -1,  1345,  1085,  1086,    -1,   940,   483,    -1,   485,    -1,
    3275       39,    -1,    -1,   948,   949,    -1,    -1,    -1,    -1,    -1,
    3276       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1093,    -1,
    3277       -1,   966,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3278       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3279      527,    -1,  1313,    -1,    83,    84,    -1,   419,    -1,    -1,
    3280       -1,    -1,    -1,    -1,    -1,    94,  1012,    -1,    -1,    -1,
    3281     1135,    -1,   434,    -1,  1009,    -1,  1159,   439,    -1,    -1,
    3282      109,    -1,   111,    -1,    -1,   447,    -1,  1022,  1087,   118,
    3283      119,    -1,  1027,  1028,    -1,  1030,  1031,   434,    -1,    -1,
    3284       -1,    -1,    -1,   465,    -1,    -1,    -1,    -1,    -1,    -1,
    3285       -1,    -1,    -1,    -1,   591,  1050,    -1,    -1,    -1,  1202,
    3286       -1,   483,    -1,   485,    -1,    -1,    -1,    -1,    -1,    -1,
     2882       0,     1,   240,   205,   186,   186,   117,     0,    43,   534,
     2883      43,    43,   600,   756,   646,     1,   749,   187,   521,     0,
     2884     186,   186,   186,   157,   169,   170,   749,   749,   186,   106,
     2885     220,   602,    32,   186,   345,   349,     0,   188,   280,    32,
     2886     157,   513,   600,    43,   874,    43,   603,   874,   349,    49,
     2887     620,    32,   609,   733,     0,   983,    49,   600,   492,   571,
     2888       0,     1,   496,    63,   602,   187,    66,    32,    32,    69,
     2889      63,   692,    43,    66,    64,     0,    69,  1040,    39,   156,
     2890       1,   600,    57,    69,   266,   266,    32,    43,    51,  1398,
     2891     364,   202,    32,    63,   368,  1321,   418,   267,    82,   600,
     2892     266,   266,   266,  1052,  1053,  1033,   106,    32,   266,   600,
     2893     600,   262,   263,   266,   114,    72,   438,   117,   118,   109,
     2894     282,    72,  1402,    96,   446,    39,    66,   695,    39,    69,
     2895      28,   109,   107,    39,    39,   110,    95,    39,    82,   128,
     2896      39,    66,   131,  1021,    82,   267,   109,   147,   148,   122,
     2897     111,   186,    11,   186,   186,   148,   156,   157,     0,   295,
     2898    1469,   161,   132,  1020,  1021,   109,    44,    45,   161,     0,
     2899     129,   482,   905,   109,   488,   132,     0,     1,    72,  1128,
     2900      78,   132,   905,   905,   687,    49,   186,   187,   186,   109,
     2901      32,   257,   130,  1419,   187,   109,   109,   111,   109,   718,
     2902     111,    32,   202,   109,   109,   111,   111,   109,    32,   111,
     2903     210,   131,    43,  1040,    72,   186,  1496,   210,    49,    82,
     2904     410,  1501,   222,   117,   812,    83,    84,   718,   718,   222,
     2905     186,   266,    63,   266,   266,    66,   406,   115,    69,  1452,
     2906     240,  1521,    85,   986,   219,    69,   112,   110,  1528,    82,
     2907     114,   109,   252,   824,   812,   116,   107,   814,   114,   252,
     2908     260,    44,    45,     3,   341,   265,   266,   267,   490,   812,
     2909     113,   252,   272,  1486,   267,  1488,   257,    82,   111,   900,
     2910     131,   793,   222,   147,   406,   396,   824,   252,   252,    49,
     2911     426,   427,   924,   812,   371,   295,     3,   222,   273,   433,
     2912      96,   602,  1501,   116,   109,   280,   252,   307,     0,   620,
     2913     480,   812,   252,   424,   625,   589,   433,   148,   110,   430,
     2914     112,   812,   812,   323,   116,  1288,   122,   252,   328,  1528,
     2915     161,   114,   253,    44,    45,   328,     0,    82,   906,   131,
     2916     132,   341,   504,   110,   932,   345,   210,  1225,   482,   349,
     2917     350,   109,   418,   111,   114,   186,   187,   631,   480,   681,
     2918     109,   116,   933,   130,   364,   110,    90,    91,   368,  1049,
     2919     506,   371,   438,   348,   932,   511,   240,   132,   514,   210,
     2920     446,  1211,   604,   951,  1211,   130,   608,   426,   427,   932,
     2921     365,   222,   526,    72,   369,   112,   396,  1275,   116,   116,
     2922     285,   125,   126,   114,    83,    84,   406,   629,   272,   526,
     2923     252,   633,   130,   406,  1472,   257,   110,  1274,  1275,    55,
     2924    1478,   252,   307,   308,   424,   350,   426,   427,   252,   999,
     2925     430,   567,   111,   433,   745,   266,   130,   418,   112,   116,
     2926    1498,   110,   116,   307,   111,  1503,   113,   116,   525,  1501,
     2927     210,  1008,  1009,   130,   454,   494,   590,   438,  1386,  1387,
     2928     345,  1288,    98,   130,   967,   446,   635,   636,   131,  1521,
     2929     229,   112,   472,   590,   513,   116,  1528,   116,  1441,   110,
     2930     480,   345,   482,   652,   484,  1448,   116,   480,   488,   248,
     2931     732,   484,   110,   132,   494,  1127,   381,   328,   116,   116,
     2932     130,   482,   647,   484,   666,   656,   506,   941,   508,   981,
     2933     824,   511,   272,   513,   514,   132,  1394,   687,   349,   109,
     2934     484,   521,   109,   824,   116,   525,   526,   109,  1099,   803,
     2935     109,   111,   111,   113,   808,   295,  1499,  1394,   484,   578,
     2936     132,   710,   109,   654,   484,   116,   467,   307,   473,  1117,
     2937     130,     4,     5,     6,     7,     8,     9,   116,   194,   484,
     2938     110,   132,   426,   427,   116,   687,   116,   116,   116,   116,
     2939     570,   571,   116,   132,   736,   406,   418,   109,   578,   116,
     2940     132,   217,  1085,   132,   132,   132,   109,  1090,   132,   589,
     2941     590,   227,   117,   904,   594,   132,   438,   116,   123,   124,
     2942     600,   116,   602,   109,   446,   111,   110,   528,  1288,  1177,
     2943    1178,   745,   533,   132,  1441,   681,    69,   132,    71,   110,
     2944     620,  1448,   896,   937,   846,   625,    72,   627,    74,    75,
     2945     494,   631,   801,   110,   634,   635,   636,    83,    84,    72,
     2946     110,   707,   484,   112,   590,   110,   621,   116,   112,   513,
     2947      83,    84,   652,   484,   654,   109,   910,   488,   912,   295,
     2948     484,   582,   637,   109,   549,   550,   551,   744,   114,   112,
     2949     109,   861,  1499,   116,    72,   809,   651,   115,    72,   132,
     2950      74,    75,  1362,   109,   684,    83,    84,   687,   999,    83,
     2951      84,   881,   809,   109,   454,   111,    72,   622,    74,    75,
     2952     681,    85,    86,    87,   109,   943,   111,    83,    84,   132,
     2953     710,   711,   712,   111,   578,   109,   938,  1115,   718,   719,
     2954     114,  1119,   867,   905,   905,   109,   707,   111,    64,   113,
     2955     114,   109,   653,   111,   655,   112,   110,   907,   114,   905,
     2956     905,   905,   116,   109,   744,   745,   506,   905,   508,   749,
     2957     750,   511,   905,   109,   514,   111,   620,   732,   109,    70,
     2958     111,   625,   109,    74,   745,  1445,    77,  1447,    79,   600,
     2959     904,   602,  1505,   698,   132,    86,   556,   557,   558,   559,
     2960    1305,     3,  1505,  1505,   705,   907,   114,   712,    10,    11,
     2961      12,    13,    14,   793,     4,     5,     6,     7,     8,     9,
     2962     110,   801,   109,   803,   111,   805,   116,   443,   808,   809,
     2963    1012,   114,   812,   109,  1382,   111,    72,    39,    74,    75,
     2964    1500,   117,   118,    33,   824,    72,   903,    83,    84,   114,
     2965    1398,   132,   110,   469,   132,  1146,    83,    84,   116,   681,
     2966      10,    11,    12,    13,    14,    67,    72,   110,  1122,   109,
     2967      76,   109,   110,   116,    82,   111,   687,    83,    84,    69,
     2968     110,    71,    49,   809,   111,   707,   116,   110,   109,    39,
     2969     506,   756,   109,   116,   874,   511,    63,   112,   514,    66,
     2970     805,    82,    69,   109,   118,   111,  1020,   718,   719,   110,
     2971    1035,   117,   118,   874,   127,   116,   896,    67,    88,    89,
     2972    1468,  1469,   213,   903,   904,   905,    72,   907,     4,     5,
     2973       6,     7,     8,     9,  1225,  1085,   110,    83,    84,   919,
     2974    1090,   128,   116,   904,   684,   110,    94,   109,   874,   111,
     2975      30,   116,   932,   933,   874,   117,   118,   937,   131,   109,
     2976      72,   111,   942,   943,    76,   111,   111,   117,   118,   874,
     2977     109,    83,    84,  1115,   110,   109,   942,  1119,  1120,   112,
     2978     116,   148,   109,  1085,   111,     0,     1,   967,  1090,   112,
     2979     117,   118,   110,    69,   161,    71,   110,   109,  1481,   119,
     2980     120,   812,   116,    83,    84,   117,   118,   112,    10,    11,
     2981      12,    13,    14,   824,    29,    30,  1107,    32,   110,   999,
     2982     187,   110,   942,   110,   116,    92,    93,    72,    43,    74,
     2983      75,    76,  1146,    72,    49,    74,    75,    39,    83,    84,
     2984    1020,  1021,    57,   210,    83,    84,   110,  1530,    63,   115,
     2985     116,    66,   874,   669,    69,   222,   957,   109,   110,   111,
     2986    1040,   352,   678,   354,   109,    67,   682,   110,    83,    84,
     2987     874,   109,   117,   118,  1190,  1191,    72,  1193,   979,  1040,
     2988      76,   110,   983,   110,  1200,   110,  1202,    83,    84,   116,
     2989     112,   116,   107,  1235,   905,   110,   907,  1002,   110,   943,
     2990    1080,   111,   117,   114,   116,  1085,   110,   109,   116,   111,
     2991    1090,   131,   116,   109,  1040,   117,   118,   110,   111,  1099,
     2992    1040,   117,   118,   506,    66,   508,   937,  1107,   511,    58,
     2993      59,   514,  1033,   148,   999,  1040,   115,   116,   942,    44,
     2994      45,   156,  1122,   552,   553,    72,   161,    74,    75,    76,
     2995    1207,   442,   109,   110,   111,   999,    83,    84,   560,   561,
     2996    1274,   328,   554,   555,   244,   114,  1146,   114,   109,   110,
     2997     111,   186,   187,   109,   112,  1040,   118,   110,   110,   919,
     2998    1322,   112,   109,    29,  1326,  1146,   112,   202,   112,     3,
     2999     117,   118,   109,   110,   111,   210,    10,    11,    12,    13,
     3000      14,    58,    59,    60,   219,   112,   116,   222,  1188,  1189,
     3001    1248,  1249,  1250,   110,   229,   130,   130,   130,  1040,   161,
     3002     110,   112,   114,  1189,   112,    39,   115,  1207,   110,   244,
     3003     115,  1211,   115,   248,   109,   116,  1040,   252,   253,   406,
     3004       1,   110,  1358,   110,    72,  1225,    74,    75,    76,  1229,
     3005    1211,   266,   267,    67,   132,    83,    84,   116,   273,   110,
     3006     110,   110,   110,  1229,  1225,   280,   110,   110,  1188,  1189,
     3007     110,   116,   110,   110,  1085,   110,   110,   110,   110,  1090,
     3008     222,  1423,   898,  1188,   110,  1211,   110,  1378,    49,   110,
     3009     110,  1211,   115,   874,  1274,  1275,    29,  1515,   110,   130,
     3010     380,   131,   112,  1283,   112,   116,  1211,   110,  1288,  1229,
     3011     110,   116,   110,   328,   130,   116,   112,   114,   260,   110,
     3012     110,   464,   110,   265,   116,   112,   110,  1288,   110,   110,
     3013     116,   116,   112,   348,   349,    10,    11,    12,    13,    14,
     3014    1080,  1321,   109,  1505,  1505,   106,   109,  1248,  1249,  1250,
     3015     365,   109,   109,   114,   369,  1321,  1506,   109,   130,  1505,
     3016    1505,  1505,  1288,  1283,    39,   380,     3,  1505,  1288,   112,
     3017     132,   115,  1505,    10,    11,    12,    13,    14,  1283,   110,
     3018    1530,   396,   110,  1288,   110,  1189,   147,   128,   115,  1211,
     3019    1481,   406,    67,   115,   464,   156,   114,   695,  1378,   112,
     3020     132,  1321,    39,   110,  1506,   116,   112,  1211,   350,   424,
     3021     112,   491,   110,   493,  1394,   430,   110,   432,   110,   112,
     3022     110,   112,  1377,   112,   112,  1229,   112,   112,  1530,    72,
     3023      67,    74,    75,    76,   109,  1051,   111,    47,   115,  1419,
     3024      83,    84,   117,   118,    72,   206,    74,    75,    76,   210,
     3025     132,   132,   467,  1419,   132,    83,    84,   472,   132,   132,
     3026     110,  1441,  1043,   115,   130,   480,  1288,   115,  1448,   484,
     3027    1450,   110,  1452,   488,   112,   109,   491,   112,   493,   240,
     3028    1441,   109,   112,   112,  1288,  1386,  1387,  1448,   786,   431,
     3029    1505,   112,  1505,  1505,   112,   110,   110,    60,   109,  1419,
     3030     112,  1481,    66,   112,   109,   132,  1486,   110,  1488,   110,
     3031     114,   272,    76,   528,   275,  1441,   112,  1321,   533,  1499,
     3032     112,  1441,  1448,  1424,   110,  1505,  1506,   670,  1448,   112,
     3033     110,   473,   109,  1506,   295,  1515,  1441,    96,  1499,    96,
     3034      85,    86,    87,  1448,   109,   132,   307,   115,   110,    72,
     3035    1530,    74,    75,    76,   118,   110,   110,  1530,   110,    42,
     3036      83,    84,   642,   116,   109,   863,   111,   582,   113,   114,
     3037     130,   132,   110,  1499,   589,   110,   132,    96,    96,  1499,
     3038     341,  1482,   132,   110,   345,   600,   109,   602,   132,   110,
     3039    1491,   132,   112,   110,  1499,   110,   132,   161,   112,   115,
     3040     670,   109,   132,   364,   115,   115,   621,   368,   906,   110,
     3041     371,   691,   110,   693,   110,  1419,   110,   697,  1056,  1441,
     3042     132,   564,   637,   562,   977,   565,  1448,   642,   563,   566,
     3043    1211,  1211,  1469,  1364,  1540,  1298,   651,  1441,   653,   654,
     3044     655,  1120,  1326,  1448,  1448,   912,   789,    66,   684,  1071,
     3045     684,  1090,   594,   951,   920,   697,   799,   582,   222,   971,
     3046     867,   648,   722,  1229,    83,   426,   427,   939,   570,   484,
     3047     813,  1515,   687,   732,   570,   570,   691,  1499,   693,    -1,
     3048     622,  1297,   697,    -1,    -1,   627,    -1,    -1,   986,    -1,
     3049     705,    -1,    -1,   454,  1505,  1499,   260,    -1,    -1,   118,
     3050      -1,   265,    -1,   718,   719,    -1,   467,    -1,    -1,    -1,
     3051    1450,    -1,  1452,    -1,    -1,    -1,   280,   732,    -1,   789,
     3052      -1,    -1,    -1,  1304,    -1,    -1,    -1,    -1,    -1,   799,
     3053      -1,   492,    -1,   494,    -1,   496,    -1,    -1,    -1,  1037,
     3054      -1,    -1,   161,   813,    -1,   506,  1486,   508,  1488,    -1,
     3055     511,    -1,   513,   514,    -1,    -1,   698,    57,    -1,    10,
     3056      11,    12,    13,    14,   525,    -1,    -1,    -1,    -1,    72,
     3057     712,    74,    75,    76,    -1,  1356,    -1,    -1,  1359,    -1,
     3058      83,    84,    -1,    -1,    -1,    -1,   350,   867,    39,    -1,
     3059      -1,    -1,    -1,   873,    -1,    -1,    -1,   812,    -1,    -1,
     3060      -1,    -1,    -1,   222,    -1,    -1,   109,   107,   111,   824,
     3061     110,    -1,    -1,    -1,   117,   118,    67,   578,    -1,  1117,
     3062      -1,  1402,    -1,    -1,    -1,    -1,  1407,   130,   589,    -1,
     3063      -1,    -1,    -1,  1449,   914,  1451,    -1,    -1,    -1,    -1,
     3064      -1,   260,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,
     3065      -1,    -1,   867,    -1,  1435,    -1,   156,   670,   873,   620,
     3066      -1,    -1,    -1,   805,   625,    -1,    -1,   431,    -1,  1485,
     3067     631,  1487,     0,     1,  1017,  1018,    -1,    -1,    -1,  1177,
     3068    1178,   896,    -1,    -1,   448,    -1,    -1,    -1,    -1,    -1,
     3069     905,   971,   907,    -1,    -1,    -1,    -1,    -1,    -1,   914,
     3070      -1,    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,   473,
     3071      -1,    -1,    -1,  1529,    -1,  1531,    -1,    -1,    -1,   219,
     3072      -1,    49,   937,   684,    -1,    -1,    -1,    -1,  1544,  1545,
     3073      -1,   350,  1075,  1076,    -1,    -1,    -1,    -1,  1519,    -1,
     3074      -1,    69,   957,    -1,  1525,    -1,    -1,  1017,  1018,    -1,
     3075      -1,    -1,    -1,    -1,    -1,  1536,   971,    -1,    -1,  1540,
     3076      -1,   722,    -1,    -1,   979,    -1,    -1,    -1,   983,     0,
     3077       1,    -1,    -1,   273,    -1,    -1,   789,    -1,   106,    -1,
     3078     280,    -1,    -1,   744,    -1,    -1,   799,    -1,    -1,    -1,
     3079      -1,  1071,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
     3080     813,    32,    -1,    -1,    -1,  1075,  1076,    -1,    -1,    -1,
     3081      -1,    -1,   431,    -1,    -1,    -1,    -1,    -1,  1033,    -1,
     3082     148,    -1,    -1,    -1,    -1,    -1,    -1,    32,   156,   157,
     3083     594,    -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,
     3084      -1,    -1,   803,    -1,    -1,    -1,    -1,   808,   348,    -1,
     3085      -1,    -1,    -1,    -1,   473,    -1,  1071,    -1,   622,   187,
     3086    1002,    -1,    -1,   627,    69,   365,    -1,    -1,    -1,   369,
     3087    1085,    -1,    -1,    -1,   202,  1090,    -1,   205,   206,    -1,
     3088    1223,    -1,   210,    -1,  1382,    -1,    -1,    -1,    -1,    -1,
     3089      -1,    -1,  1107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3090    1398,    -1,    -1,   231,  1184,    -1,    -1,   235,    -1,   237,
     3091      -1,    -1,  1255,    -1,    -1,    -1,    -1,    -1,   246,    -1,
     3092    1263,  1264,  1265,    -1,   252,    -1,   157,    -1,    -1,   257,
     3093      -1,    -1,   432,    -1,   698,   896,    -1,    -1,    -1,   267,
     3094      -1,    -1,   903,    -1,    -1,    -1,    -1,   275,   712,    -1,
     3095      -1,     0,   157,  1223,    -1,    -1,    -1,    -1,   919,    -1,
     3096      -1,    72,    -1,    74,    75,    76,    -1,    -1,   732,  1184,
     3097    1468,  1469,    83,    84,    -1,   594,    -1,    -1,    -1,    -1,
     3098     941,   942,   943,    32,  1327,  1255,    -1,    -1,    -1,    -1,
     3099      -1,   222,  1207,  1263,  1264,  1265,    -1,    -1,   109,    -1,
     3100     111,    -1,    -1,   622,  1017,  1018,   117,   118,   627,    -1,
     3101      -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
     3102      69,   252,    -1,   351,    -1,    -1,   231,    -1,    -1,    -1,
     3103      -1,    -1,    -1,  1248,  1249,  1250,   364,    -1,   999,    -1,
     3104     368,   805,    -1,   371,    -1,    -1,  1188,   252,    -1,    -1,
     3105      -1,    -1,   257,    -1,    -1,    -1,    -1,  1327,    -1,    -1,
     3106      -1,    -1,  1075,  1076,    -1,    -1,    -1,    -1,    -1,    -1,
     3107      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   698,
     3108      -1,    83,    84,    72,    -1,    74,    75,    76,    -1,   589,
     3109     418,    -1,    -1,   712,    83,    84,    -1,    -1,    -1,    -1,
     3110      -1,    -1,    -1,    -1,    -1,   433,    -1,   109,   157,   111,
     3111     438,    -1,    -1,    -1,    -1,   117,   118,    -1,   446,  1080,
     3112     109,   621,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3113      -1,    -1,    -1,    -1,    -1,    -1,   464,   637,    -1,   467,
     3114      -1,  1283,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,
     3115      -1,   651,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
     3116      -1,  1122,  1377,  1378,   492,    -1,    -1,    -1,   496,    -1,
     3117      -1,  1386,  1387,    97,    98,    99,   100,   101,   102,   103,
     3118     104,   105,   106,    -1,    -1,    -1,   805,    -1,    -1,    -1,
     3119      -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,   526,    -1,
     3120      -1,    -1,   433,   252,    -1,    -1,    -1,   131,   257,  1424,
     3121      -1,    -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,
     3122      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,
     3123      -1,    -1,   732,   438,    -1,    -1,    -1,    -1,  1002,    -1,
     3124      -1,   446,  1255,   571,    -1,    -1,  1207,    -1,    -1,    -1,
     3125    1263,  1264,  1265,   484,    -1,    -1,    -1,    -1,    -1,   464,
     3126      -1,   589,   590,    -1,    -1,    -1,  1481,  1482,  1229,    -1,
     3127      -1,    -1,    -1,    -1,   602,    -1,  1491,   482,    -1,   484,
     3128      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     3129    1505,  1506,   620,    -1,    -1,   526,    -1,   625,    -1,    -1,
     3130      -1,    -1,   351,   631,    -1,    -1,   634,   635,   636,    -1,
     3131      -1,    -1,    66,    -1,  1327,  1530,    -1,    -1,    72,    -1,
     3132      -1,   526,    76,    -1,   652,    79,    80,    81,    82,    83,
     3133      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3134      -1,    -1,   670,    -1,    -1,    10,    11,    12,    13,    14,
     3135      -1,    -1,    -1,   681,    -1,   109,    -1,   111,    -1,   590,
     3136    1321,    -1,    -1,   117,   118,   119,   120,   121,   122,   418,
     3137      -1,    -1,    -1,    -1,    39,    -1,   130,    -1,    -1,   707,
     3138      -1,    -1,   710,  1002,   433,   590,    -1,    -1,    -1,   438,
     3139      -1,   719,    -1,    -1,   722,    -1,   896,   446,    -1,    -1,
     3140      -1,    -1,    67,   634,   635,   636,    -1,    72,    -1,    74,
     3141      75,    76,    -1,    -1,    -1,   464,   744,   745,    83,    84,
     3142      -1,   652,   750,    -1,  1188,    -1,    -1,    -1,    -1,   634,
     3143     635,   636,    -1,   482,    -1,   484,    -1,    10,    11,    12,
     3144      13,    14,    -1,    -1,   109,    -1,   111,   652,    -1,    -1,
     3145      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,  1419,    -1,
     3146      -1,   789,    -1,    -1,    -1,   670,    39,    -1,    -1,    -1,
     3147      -1,   799,    -1,   801,    -1,   803,   681,   526,   806,   710,
     3148     808,   809,    -1,    -1,    -1,   813,    -1,    -1,    -1,  1450,
     3149      -1,  1452,    -1,    -1,    67,   823,    -1,    -1,    -1,    72,
     3150      -1,    -1,   707,    76,    -1,   710,    -1,    -1,    -1,    -1,
     3151      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1283,
     3152      -1,     0,    -1,    -1,    -1,  1486,    -1,  1488,    -1,    -1,
     3153      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3154     745,   590,    -1,    -1,   117,   118,   874,    -1,     0,    -1,
     3155     190,    -1,    -1,    32,  1515,    -1,    -1,   197,    -1,    -1,
     3156      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   896,  1188,
     3157     801,    -1,    -1,    -1,    -1,   903,   904,    -1,   809,   907,
     3158      32,    -1,    -1,    -1,   789,   634,   635,   636,    -1,    -1,
     3159      69,    -1,    -1,    -1,   799,    -1,   801,    -1,    -1,    -1,
     3160      -1,   806,    -1,   652,   809,   933,    -1,    -1,   813,    -1,
     3161      -1,    -1,    -1,   941,   942,    -1,    -1,    69,    -1,    -1,
     3162      -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,
     3163      -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3164      -1,    -1,    -1,   874,    -1,    -1,    -1,    -1,    -1,    -1,
     3165      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   707,    -1,
     3166      -1,   710,    -1,    -1,  1283,    -1,    -1,    -1,    -1,   874,
     3167      -1,   999,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
     3168      -1,    -1,    -1,   323,  1012,    -1,    -1,    -1,    -1,  1017,
     3169    1018,   331,  1020,  1021,   334,    -1,   745,    -1,    -1,   904,
     3170      -1,    -1,    -1,    -1,    -1,   157,    -1,  1207,    -1,    -1,
     3171      -1,   942,  1040,    -1,    -1,     3,     4,     5,     6,     7,
     3172       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3173      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3174     789,    -1,    30,    31,    32,    -1,    -1,  1075,  1076,    -1,
     3175     799,    39,   801,    -1,    -1,    -1,    -1,   806,   398,    -1,
     3176     809,    -1,   402,    -1,   813,    -1,    -1,    -1,    -1,    -1,
     3177      -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,   257,    67,
     3178      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,  1020,
     3179    1021,    -1,    -1,    -1,  1122,    83,    84,    -1,    -1,    -1,
     3180     252,    -1,    -1,    -1,    -1,   257,    -1,    -1,    -1,  1040,
     3181      -1,    -1,  1017,  1018,    -1,  1020,  1021,    -1,  1146,    -1,
     3182      -1,   109,    -1,   111,    -1,   874,    -1,    -1,    -1,   117,
     3183     118,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,   479,
     3184      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3185      -1,    -1,    -1,    -1,    -1,   904,    -1,    -1,    -1,    -1,
     3186      -1,  1189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3187    1075,  1076,   351,    -1,    39,    -1,    -1,  1377,    -1,  1207,
     3188      -1,    -1,    -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,
     3189      -1,    -1,    -1,    -1,    -1,  1223,    -1,  1225,    -1,   351,
     3190      -1,  1229,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3191      75,    76,    -1,    -1,    -1,    26,    27,    28,    83,    84,
     3192      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1255,    -1,    -1,
     3193     570,   571,    -1,    -1,    -1,  1263,  1264,  1265,    -1,   418,
     3194      -1,  1146,    -1,    -1,   109,    -1,  1274,  1275,    -1,    -1,
     3195      -1,    -1,   117,   118,   433,    -1,    -1,  1188,  1189,   438,
     3196    1288,    -1,    -1,    -1,    -1,    -1,   418,   446,  1017,  1018,
     3197      -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3198    1211,   433,    -1,    -1,  1189,   464,   438,    -1,    99,    -1,
     3199     101,  1040,    -1,  1321,   446,    -1,    -1,    -1,  1229,  1327,
     3200      -1,    -1,    -1,   482,    -1,   484,  1211,    -1,    -1,    -1,
     3201      -1,    -1,   464,    -1,    -1,   126,    -1,   657,  1223,    -1,
     3202    1225,   661,    -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,
     3203     482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3204      -1,    -1,    -1,  1274,  1275,    -1,    -1,   526,    -1,    -1,
     3205    1255,    -1,  1283,    -1,    -1,    -1,    -1,  1288,  1263,  1264,
     3206    1265,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,  1274,
     3207    1275,   182,    -1,    -1,   526,    -1,    -1,    -1,    -1,   190,
     3208      -1,   192,   193,  1288,    -1,    -1,   197,    -1,   199,   200,
     3209    1321,  1419,    -1,    53,    -1,    55,    -1,  1146,    58,    59,
     3210      60,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3211      -1,   590,    -1,  1441,    -1,    -1,    -1,    77,    -1,    -1,
     3212    1448,    -1,  1327,    -1,    -1,    -1,    -1,    -1,    -1,    89,
     3213      90,    -1,    -1,    -1,    26,    27,    28,    -1,   590,    -1,
     3214    1189,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3215      14,    -1,    -1,   793,    -1,   634,   635,   636,   269,    -1,
     3216      -1,    -1,  1211,  1394,    -1,    -1,    -1,    -1,    -1,    -1,
     3217      -1,  1499,    -1,   652,  1223,    39,  1225,    -1,  1506,    -1,
     3218      -1,    -1,   634,   635,   636,    -1,    -1,    -1,  1419,  1394,
     3219      -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3220     652,    -1,   681,    67,    -1,    -1,  1255,    99,    72,   101,
     3221    1441,    -1,    76,    -1,  1263,  1264,  1265,  1448,   670,    83,
     3222      84,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   707,   681,
     3223      -1,   710,    -1,    -1,    -1,    -1,  1441,    -1,    -1,  1288,
     3224      -1,    -1,    -1,  1448,    -1,   109,    -1,    -1,    -1,    -1,
     3225      -1,    -1,    -1,   117,   118,   707,    -1,    -1,   710,    10,
     3226      11,    12,    13,    14,    -1,    -1,   745,    -1,  1499,    -1,
     3227      -1,   911,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
     3228      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3229     182,    -1,    -1,   745,  1499,    -1,    -1,    -1,    -1,    -1,
     3230     192,   193,    -1,    -1,    -1,   197,    -1,   199,   200,    -1,
     3231     789,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3232     799,    72,   801,    74,    75,    76,    -1,   806,    -1,    -1,
     3233     809,    -1,    83,    84,   813,    -1,    -1,   789,    -1,    10,
     3234      11,    12,    13,    14,    -1,  1394,    -1,   799,   988,   801,
     3235      -1,    -1,    -1,    -1,   806,    -1,    -1,   809,   109,    -1,
     3236     111,   813,    -1,    -1,    -1,  1005,   117,   118,    39,    -1,
     3237      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,   344,    -1,   346,    -1,    -1,    -1,
     3239      -1,    -1,  1441,    -1,    -1,   874,    67,   357,   358,  1448,
     3240      39,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3241      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3242      -1,    -1,   874,    -1,    -1,   904,    -1,    -1,    67,    -1,
     3243      -1,    -1,    -1,    72,    -1,    74,    75,    76,   109,    -1,
     3244     111,    -1,    -1,  1083,    83,    84,   117,   118,    -1,    -1,
     3245    1499,    -1,   904,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3246      -1,    -1,    -1,   574,   575,    -1,    -1,    -1,    -1,    -1,
     3247     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3248      -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,    -1,
     3249      -1,    -1,   603,    -1,    -1,   606,   607,    -1,   609,    -1,
     3250     611,   612,    -1,    -1,    -1,   616,   617,     3,     4,     5,
     3251       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3252      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3253      26,    27,    28,    -1,    30,    31,    32,    33,  1017,  1018,
     3254      36,  1020,  1021,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    32873255      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3288       -1,  1224,    -1,    -1,    -1,    -1,    -1,    -1,   485,    -1,
    3289     1085,  1086,    -1,  1236,    -1,  1238,    -1,    -1,   635,   636,
    3290      637,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
    3291       -1,    -1,    -1,    -1,    -1,    -1,    -1,   654,    -1,    -1,
    3292       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1271,    -1,
    3293      527,    -1,    -1,    -1,     0,   672,  1279,  1280,  1281,  1134,
    3294       -1,    -1,    -1,    -1,    -1,    -1,   683,  1290,  1291,    -1,
    3295       -1,  1472,    -1,  1474,    -1,    -1,    -1,    -1,    -1,    -1,
    3296     1219,  1304,    -1,    -1,  1159,  1220,    32,    -1,    -1,   591,
    3297       -1,    -1,   709,    -1,    -1,   712,    -1,    -1,    -1,    -1,
    3298       10,    11,    12,    13,    14,    -1,    -1,    -1,  1509,    -1,
    3299     1511,    -1,    -1,    -1,   591,  1201,    -1,    -1,    -1,    -1,
    3300       -1,    -1,  1345,    -1,    70,    -1,    -1,  1202,    -1,    39,
    3301       -1,    -1,   749,   635,   636,   637,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,    -1,    -1,  1220,    -1,    -1,    -1,  1224,
    3303       -1,    -1,   654,  1554,    -1,  1556,    -1,    67,   635,   636,
    3304      637,  1236,    72,  1238,    74,    75,    76,  1242,  1569,  1570,
    3305      672,    -1,    -1,    83,    84,    -1,    -1,   654,   795,    -1,
    3306       -1,   683,    -1,    -1,    94,    -1,    -1,    -1,   805,    -1,
    3307      807,    -1,  1415,    -1,    -1,   812,  1271,    -1,   815,   109,
    3308       -1,   111,   819,    -1,  1279,  1280,  1281,   709,   118,   119,
    3309      712,    -1,   158,  1299,    -1,  1290,  1291,    -1,    -1,    -1,
    3310       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,  1304,
    3311       -1,    -1,    -1,    -1,    -1,   712,    -1,    -1,    -1,    -1,
    3312       -1,  1464,    -1,    -1,    -1,    -1,    -1,   749,  1471,    -1,
    3313       -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3314       -1,  1396,  1337,    -1,   881,    -1,    -1,    -1,    -1,    -1,
    3315     1345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3316       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3317       76,    -1,    -1,   795,   911,    -1,    -1,    83,    84,    -1,
    3318       -1,  1524,    -1,   805,    -1,   807,    -1,   253,    94,    -1,
    3319      812,    -1,   258,   815,    -1,    -1,    -1,   819,    -1,    -1,
    3320       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    3321      807,    -1,   118,   119,    -1,    -1,    -1,    -1,   815,    -1,
    3322     1415,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   966,
    3323       -1,    54,    -1,    56,    -1,    -1,    59,    60,    61,    -1,
    3324       63,    -1,    -1,    -1,    -1,  1440,    10,    11,    12,    13,
    3325       14,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,   881,
    3326       -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,  1464,
    3327       -1,    -1,    -1,    -1,    -1,    39,  1471,    10,    11,    12,
    3328       13,    14,    -1,    -1,   881,    -1,   352,    -1,    -1,   911,
    3329     1027,  1028,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    67,    -1,    -1,    39,    -1,    72,    -1,
    3331       74,    75,    76,  1050,    -1,    -1,    -1,    -1,    -1,    83,
    3332       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1524,
    3333       94,    -1,    -1,    -1,    67,    -1,  1531,    -1,    -1,    72,
    3334       -1,    74,    75,    76,   966,   109,    -1,    -1,  1085,  1086,
    3335       83,    84,   949,   419,   118,   119,    -1,    -1,    -1,    -1,
    3336       -1,    94,    -1,    10,    11,    12,    13,    14,   434,   966,
    3337       -1,    -1,    -1,   439,    -1,    -1,   109,    -1,    -1,    -1,
    3338       -1,   447,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,
    3339       -1,    -1,    39,    -1,    10,    11,    12,    13,    14,   465,
    3340       -1,    -1,    -1,    -1,    -1,  1027,  1028,    -1,  1030,  1031,
    3341       -1,    -1,    -1,    -1,    -1,    -1,    -1,   483,    -1,   485,
    3342       67,    -1,  1159,    39,    -1,    72,    -1,    -1,  1050,    76,
    3343       -1,    -1,    -1,  1030,  1031,    -1,    83,    84,    -1,    -1,
    3344       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3345       -1,    67,    -1,  1050,    -1,    -1,    72,    -1,    -1,    -1,
    3346       76,   527,   109,  1085,  1086,  1202,    -1,    83,    84,    -1,
    3347       -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    3348       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1224,    -1,    -1,
    3349       -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,  1236,
    3350       -1,  1238,   118,   119,    10,    11,    12,    13,    14,    15,
     3256      -1,  1040,    -1,    -1,    -1,  1017,  1018,    -1,  1020,  1021,
     3257      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3258      -1,    -1,    78,    -1,    -1,    -1,     7,    -1,  1040,    10,
     3259      11,    12,    13,    14,    -1,    -1,  1075,  1076,    -1,    -1,
     3260      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      -1,    -1,    -1,    -1,    -1,   111,    37,    38,    39,    40,
     3262      -1,   117,   118,  1075,  1076,    -1,    -1,    -1,    -1,    -1,
     3263      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,   754,   755,    66,    67,    -1,    -1,    -1,
     3265      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     3266      81,    82,    83,    84,    -1,    86,    87,  1146,    -1,    -1,
     3267      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3268      -1,    -1,   574,   575,    -1,    -1,    -1,    -1,   109,    -1,
     3269     111,    -1,    -1,    -1,  1146,    -1,   117,   118,   119,   120,
     3270     121,   122,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3271    1189,   603,    -1,    -1,   606,   607,    -1,   609,    -1,   611,
     3272     612,    -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,
     3273      -1,    -1,  1211,    -1,    -1,    -1,    -1,  1189,    -1,   699,
     3274      -1,   701,    -1,    -1,  1223,    -1,  1225,    -1,   708,   709,
     3275      -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,  1211,
     3276      -1,    -1,    -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,
     3277     730,  1223,    -1,  1225,    -1,    -1,  1255,    -1,    -1,    -1,
     3278      -1,    -1,    -1,    -1,  1263,  1264,  1265,    -1,    -1,    -1,
     3279      -1,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   758,    -1,
     3280     911,    -1,    -1,  1255,    -1,   916,    -1,    -1,    -1,  1288,
     3281      -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,    -1,
     3282      -1,    -1,  1274,  1275,    -1,    -1,    -1,    -1,    -1,    -1,
     3283      -1,    -1,    -1,    -1,    -1,    -1,  1288,    -1,    -1,    -1,
     3284      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
     3285      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3286      49,    -1,   754,   755,    -1,    -1,    -1,    -1,    -1,    -1,
     3287      -1,    -1,    -1,    -1,    -1,  1327,    -1,    66,    -1,    -1,
     3288       7,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
     3289      -1,    -1,    -1,    -1,    -1,    -1,    -1,   857,   858,   859,
     3290     860,    -1,   862,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3291      37,    38,    39,    40,    -1,  1394,    -1,   877,    -1,    -1,
     3292      -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,   118,
     3293      -1,   891,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3294      67,    -1,  1394,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3295      -1,    -1,    79,    80,    81,    82,    83,    84,   147,    86,
     3296      87,    -1,  1441,    -1,    -1,    -1,  1077,    -1,   157,  1448,
     3297      -1,   931,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3298      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1441,
     3299     117,   118,   119,   120,   121,   122,  1448,    10,    11,    12,
     3300      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3301      23,    24,    25,    26,    27,    -1,   976,    30,    31,    32,
     3302    1499,   210,   982,    -1,   916,    -1,    39,   987,    -1,    -1,
     3303      -1,    -1,   992,   222,   994,    -1,    -1,    -1,   998,    -1,
     3304    1000,  1001,    -1,    -1,  1004,    -1,    -1,  1499,    -1,    -1,
     3305      -1,   240,    -1,  1013,    67,    -1,    -1,    -1,    -1,    -1,
     3306      -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3307      -1,  1031,  1032,    -1,    -1,    -1,   265,    -1,    -1,    -1,
     3308      -1,    -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,
     3309      -1,    -1,    -1,    -1,    -1,  1206,    -1,    -1,  1058,    -1,
     3310      -1,  1061,    -1,    -1,   117,   118,   295,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,    -1,
     3312      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     3313      -1,    -1,    -1,    -1,    76,    -1,    78,    -1,    80,    -1,
     3314      -1,    -1,    -1,    -1,  1104,    87,    -1,    -1,    -1,    -1,
     3315    1110,  1111,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,
     3316      -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317    1130,    -1,    -1,  1133,    -1,    -1,   118,  1137,   120,   121,
     3318     122,    -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,
     3319    1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3320      -1,    -1,    -1,  1163,    -1,  1165,  1166,  1167,  1168,    -1,
     3321      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
     3322      -1,  1181,    -1,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
     3323      -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,   427,    -1,
     3324      -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,
     3325      -1,    -1,    -1,    -1,    -1,    -1,  1216,  1217,    -1,    -1,
     3326      -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,
     3327      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3328     222,    -1,   224,   225,   226,    -1,    -1,    -1,    -1,    -1,
     3329      -1,    -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    -1,   494,  1266,  1267,    -1,    -1,
     3331      -1,    -1,    -1,    -1,  1206,    -1,  1276,   506,   260,   508,
     3332      -1,    -1,   511,   265,   513,   514,    -1,    -1,    -1,    -1,
     3333      -1,    -1,    -1,    -1,    -1,    -1,    -1,   526,   280,    -1,
     3334      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3335      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    33513336      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3352       26,    27,   345,    -1,   347,   591,    -1,    -1,    -1,    -1,
    3353       -1,    -1,    -1,    39,  1271,   358,   359,  1159,    -1,    -1,
    3354       -1,    -1,  1279,  1280,  1281,    -1,    -1,    -1,    -1,    -1,
    3355       -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,    -1,
    3356       -1,    67,    -1,    -1,    -1,    -1,    -1,  1304,    -1,   635,
    3357      636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3358     1202,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   654,    -1,
    3359       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3360       -1,    -1,  1224,    -1,  1201,  1202,   672,    -1,  1345,    -1,
    3361       -1,    -1,    -1,    -1,  1236,    -1,  1238,   683,    -1,    66,
    3362       -1,    -1,    -1,    -1,    -1,    72,    -1,  1224,    -1,    76,
    3363       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3364       87,    -1,    -1,   709,    -1,  1242,   712,    94,    -1,  1271,
    3365       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1279,  1280,  1281,
    3366       -1,    -1,   109,    -1,   111,    -1,    -1,   114,  1290,  1291,
    3367       -1,   118,   119,   120,   121,   122,   123,    -1,  1415,    -1,
    3368       -1,    -1,  1304,   749,    -1,    -1,    -1,    -1,    -1,    -1,
    3369       -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,    -1,
    3370       -1,    -1,  1299,    -1,    -1,    -1,    -1,  1304,    -1,    -1,
     3337      26,    27,    28,    -1,    30,    31,    32,  1337,    -1,  1339,
     3338    1340,  1341,    -1,    39,    -1,    -1,   328,    -1,    -1,   578,
     3339      -1,  1351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3340    1360,   590,    -1,    -1,    -1,   594,    -1,    -1,   350,    -1,
     3341      -1,    67,    -1,   355,   356,    -1,    72,    -1,    74,    75,
     3342      76,   363,    78,    -1,    -1,  1385,    -1,    83,    84,    -1,
     3343      -1,   620,    -1,    -1,   147,    -1,   625,    -1,    -1,    -1,
     3344      -1,    -1,    -1,    -1,   157,   634,   635,   636,    -1,    44,
     3345      -1,    -1,    -1,   109,    -1,   111,   169,   170,    -1,    -1,
     3346      -1,   117,   118,   652,   406,    -1,    -1,    -1,  1428,  1429,
    33713347      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3372       -1,    -1,    -1,  1345,    -1,    -1,    -1,  1464,    -1,   795,
    3373       -1,    -1,    -1,    -1,  1471,    -1,    -1,    -1,    -1,   805,
    3374     1337,   807,    -1,    -1,    -1,    -1,   812,    -1,    -1,   815,
    3375       -1,    -1,    -1,   819,    -1,    10,    11,    12,    13,    14,
    3376       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3377       25,    26,    27,    28,    -1,    30,    31,    32,    -1,    -1,
    3378       -1,    -1,    67,    -1,    39,    -1,    -1,  1524,    -1,    -1,
    3379       -1,    -1,    77,  1415,    79,    -1,    81,    -1,    -1,    -1,
    3380       -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,
    3381       -1,    -1,    67,    -1,    -1,   881,    -1,    72,  1415,    74,
    3382       75,    76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,
    3383       -1,    -1,    -1,    -1,   119,    -1,   121,   122,   123,    94,
    3384       -1,    -1,  1464,  1440,    -1,   911,    -1,    -1,    -1,  1471,
    3385       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    26,
    3386       27,    28,    -1,   118,   119,    -1,    -1,  1464,    -1,    -1,
    3387       -1,    -1,    37,    38,  1471,    40,    -1,   162,   701,    -1,
    3388      703,    -1,    -1,    -1,    -1,    -1,    -1,   710,   711,    -1,
    3389       -1,    -1,   715,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3390      966,    66,  1524,    50,   727,    -1,    -1,    72,    -1,   732,
    3391       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3392       67,    86,    87,    -1,    -1,    -1,    -1,  1524,    -1,    94,
    3393       -1,    -1,    -1,   100,    -1,   102,    -1,    -1,   223,   762,
    3394      225,   226,   227,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3395       -1,    -1,   117,   118,   119,   120,   121,   122,   123,    -1,
    3396      127,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   115,    -1,
    3397       -1,    -1,   119,    -1,    -1,    -1,   261,    -1,    -1,    -1,
    3398       -1,   266,    -1,    -1,  1050,    -1,    -1,    -1,   284,    -1,
    3399      286,   287,    -1,    -1,    -1,    -1,   281,    -1,   294,   295,
    3400       -1,   148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3401       -1,   158,   308,   309,    -1,   162,   183,    -1,    -1,  1085,
    3402     1086,    -1,    -1,    -1,   191,    -1,   193,   194,    -1,    -1,
    3403       -1,   198,    -1,   200,   201,    -1,    -1,    -1,    -1,    -1,
    3404      863,   864,   865,   866,   329,   868,    -1,    -1,    -1,    -1,
    3405      346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3406       -1,   884,    -1,    -1,   211,    -1,   351,    -1,    -1,    -1,
    3407       -1,   356,   357,    -1,    -1,   898,   223,    -1,    -1,   364,
    3408       -1,    -1,    -1,    -1,    -1,    -1,   382,    -1,    -1,    -1,
    3409       -1,    -1,    -1,  1159,   241,    -1,    -1,    -1,    -1,    -1,
    3410       -1,    -1,    -1,   270,    -1,    -1,    -1,    -1,    -1,    -1,
    3411       -1,    -1,    -1,    -1,    -1,   938,    -1,    -1,    -1,   266,
    3412       -1,    -1,   407,    -1,    -1,    -1,   273,    -1,    -1,    -1,
    3413       -1,    -1,    -1,    -1,    -1,    -1,  1202,    -1,    -1,    -1,
    3414      425,    -1,    -1,    -1,    -1,   430,    -1,   432,    -1,   296,
    3415       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1224,    -1,
    3416       -1,   308,   985,    -1,   449,    -1,    -1,   452,   453,   992,
    3417     1236,    -1,  1238,    -1,   997,   460,    -1,    -1,    -1,  1002,
    3418       -1,  1004,    -1,    -1,    -1,  1008,    -1,  1010,  1011,   474,
    3419       -1,  1014,    -1,    -1,    -1,    -1,   481,    -1,    -1,   346,
    3420     1023,    -1,    -1,    -1,   351,  1271,    -1,    -1,    -1,    -1,
    3421       -1,    -1,    -1,  1279,  1280,  1281,    -1,    -1,  1041,  1042,
    3422       -1,    -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,
    3423       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1304,    -1,
    3424       -1,    -1,    -1,    -1,    -1,  1068,    -1,    -1,  1071,    -1,
    3425       -1,    -1,    -1,    -1,   550,   551,   552,   553,   554,   555,
    3426      556,   557,   558,   559,   560,   561,   562,   563,   564,   565,
    3427      566,   567,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1345,
    3428      427,   428,    -1,    -1,    -1,    -1,    -1,   434,    -1,    -1,
    3429       -1,  1114,    -1,    -1,    -1,    -1,    -1,  1120,  1121,    -1,
    3430       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   455,  1132,
    3431      595,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1142,
    3432       -1,    -1,  1145,    -1,  1147,    -1,    -1,  1150,    -1,    -1,
    3433       -1,    -1,    -1,    -1,    -1,    -1,   483,    -1,   623,    -1,
    3434     1163,    -1,    -1,   628,    -1,    -1,    -1,    -1,   495,  1415,
    3435       -1,    -1,    -1,  1176,    -1,  1178,  1179,  1180,  1181,    -1,
    3436      507,    -1,   509,    -1,    -1,   512,    -1,   514,   515,    -1,
    3437       -1,  1194,    -1,  1196,    -1,    -1,    -1,  1200,    -1,    -1,
    3438      527,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3439       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1464,    -1,
    3440       -1,   697,    -1,    -1,    -1,  1471,  1229,  1230,   575,   576,
    3441       -1,    -1,    -1,    -1,    -1,   700,    -1,    -1,    -1,    -1,
    3442       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   714,
    3443       -1,    -1,   579,    -1,    -1,    -1,    -1,   604,    -1,    -1,
    3444      607,   608,    -1,   610,   591,   612,   613,    -1,   595,   734,
    3445      617,   618,    -1,    -1,    -1,    -1,    -1,    -1,  1524,  1282,
    3446     1283,    -1,    -1,    -1,   760,    -1,    -1,    -1,    -1,  1292,
    3447       -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,    -1,   626,
    3448       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
    3449      637,    -1,    -1,    -1,    -1,    -1,   792,    -1,    -1,     7,
    3450       -1,    -1,    10,    11,    12,    13,    14,   654,    -1,    -1,
    3451       -1,    -1,    -1,    -1,   799,    -1,    -1,    -1,    -1,    -1,
    3452     1343,    -1,    45,    -1,    -1,    -1,   811,    -1,    -1,    37,
    3453       38,    39,    40,  1356,    -1,  1358,  1359,  1360,    -1,   686,
    3454       -1,    -1,    -1,    -1,    -1,   830,    -1,  1370,    -1,    -1,
    3455       -1,    -1,    -1,    -1,    -1,    -1,  1379,    -1,    66,    67,
    3456       -1,    -1,    -1,    -1,    72,   712,    -1,   714,    76,    -1,
    3457       93,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3458      103,    -1,    -1,  1406,    -1,    -1,    94,    -1,    -1,    -1,
    3459       -1,   758,   759,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3460       -1,   109,   749,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3461      118,   119,   120,   121,   122,   123,    -1,   913,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1451,  1452,
    3463       -1,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,    -1,
    3464       -1,  1464,    -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,
    3465      173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   944,
    3466      807,    -1,   958,    -1,   811,    -1,    -1,    -1,   815,    -1,
    3467       -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,    -1,
    3468       -1,  1504,    -1,    -1,    -1,  1508,    -1,   210,    -1,    -1,
    3469       -1,   976,    -1,    -1,    -1,    -1,   219,    -1,    -1,    -1,
    3470      996,    -1,    -1,    -1,    -1,    -1,   229,    -1,    -1,    -1,
    3471       -1,    -1,    -1,  1009,  1537,    -1,  1539,    -1,    -1,    -1,
    3472       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1012,    -1,    -1,
    3473       -1,   254,    -1,    -1,    -1,    -1,   259,    -1,  1023,    -1,
    3474       -1,    -1,    -1,    -1,  1567,  1568,    -1,    -1,    -1,   272,
    3475       -1,   918,  1575,  1576,  1050,   278,   923,   280,    -1,    -1,
    3476       -1,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
    3477       -1,    -1,    -1,    -1,   297,    -1,    -1,    -1,    -1,   926,
     3348      -1,  1441,   424,    -1,    -1,    -1,    -1,   429,  1448,   431,
     3349      37,    38,    -1,    40,    -1,   684,    -1,    92,    -1,    -1,
     3350      -1,    -1,    -1,    -1,    -1,    -1,   448,   102,    -1,   451,
     3351     452,    -1,    -1,    -1,    -1,    -1,    -1,   459,    -1,    66,
     3352    1480,   710,    -1,   712,  1484,    72,    -1,   240,    -1,    76,
     3353      -1,   473,    79,    80,    81,    82,    83,    84,   480,    86,
     3354      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3355      -1,   264,  1512,    -1,  1514,    -1,   745,    -1,    -1,    -1,
     3356      -1,    -1,   109,   158,   111,    -1,    -1,   114,    -1,    -1,
     3357     117,   118,   119,   120,   121,   122,    -1,   172,    -1,    -1,
     3358      -1,    -1,  1542,  1543,    -1,    -1,    -1,    -1,    -1,    -1,
     3359    1550,  1551,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3360     195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,    -1,   801,    -1,   209,    -1,   805,    -1,    -1,    -1,
     3362     809,    -1,    -1,   218,    -1,    -1,    -1,    -1,    -1,    -1,
     3363      -1,    -1,    -1,   228,    -1,    -1,    -1,    -1,    -1,    -1,
     3364      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3365      -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   253,    -1,
     3366      -1,    -1,    -1,   258,    -1,    -1,    -1,   380,    -1,    -1,
     3367      -1,    -1,    -1,    66,    -1,    -1,   271,    -1,    -1,    72,
     3368     622,    -1,   277,    76,   279,   627,    79,    80,    81,    82,
     3369      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3370      -1,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3371      -1,    -1,    -1,    -1,    -1,   904,   109,    -1,   111,    -1,
     3372      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
     3373     919,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3374      -1,    -1,    -1,   338,    -1,    -1,    -1,    -1,   343,    -1,
     3375      -1,    -1,    -1,    -1,   943,    -1,   698,    -1,    -1,    -1,
     3376      -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3377     712,    -1,    -1,    -1,    -1,    -1,    -1,   372,    -1,    -1,
     3378      -1,   376,   377,    -1,   379,    -1,    -1,    -1,    -1,    -1,
     3379     732,   386,   387,    -1,   389,   390,    -1,   392,    -1,   394,
     3380     513,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3381     999,    -1,    -1,   526,    -1,    -1,   411,    -1,   531,    -1,
     3382      -1,   534,    -1,    -1,   419,    -1,    -1,    -1,    -1,    -1,
     3383      -1,  1020,  1021,   546,    -1,    -1,    -1,    -1,    -1,    -1,
     3384      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
     3385      -1,   793,    -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,
     3386      -1,    -1,    -1,   805,    -1,   578,    -1,    -1,    -1,    -1,
     3387      -1,    -1,   585,    -1,    -1,   470,    -1,   590,    -1,    -1,
     3388      -1,   476,   824,    -1,    -1,    -1,   481,    -1,    -1,    -1,
     3389      -1,  1080,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
     3390       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3391      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3392      27,    -1,   517,    30,    31,    32,   639,    -1,    -1,    -1,
     3393      -1,    -1,    39,    -1,   647,    -1,    -1,   532,    -1,    -1,
    34783394      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3479       -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
    3480       -1,    -1,    -1,   950,    -1,    -1,    -1,    -1,    -1,    -1,
    3481     1095,    -1,    -1,    -1,    -1,    -1,   339,    -1,    -1,   966,
    3482       -1,   344,    -1,    66,  1109,    -1,    -1,    -1,    -1,    72,
    3483       -1,  1127,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3484       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3485      373,    94,    -1,    -1,   377,   378,    -1,   380,    -1,    -1,
    3486       -1,    -1,  1009,    -1,   387,   388,   109,   390,   391,    -1,
    3487      393,    -1,   395,    -1,    -1,   118,   119,   120,   121,   122,
    3488      123,    -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,   412,
    3489       -1,    -1,    -1,    -1,  1190,  1191,    -1,   420,    -1,    -1,
     3395      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1146,    -1,    -1,
     3396      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3397      -1,    -1,    -1,    37,    38,   570,    40,    -1,    -1,    -1,
     3398      -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,    -1,
     3399      -1,   586,    -1,    -1,    -1,   937,    -1,   592,    -1,  1188,
     3400      -1,    -1,    66,    -1,   111,    -1,   601,    -1,    72,    -1,
     3401     117,   118,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3402      84,    -1,    86,    87,    -1,   967,    -1,    -1,    -1,    -1,
     3403      -1,    -1,   745,    -1,   747,    -1,  1225,    -1,    -1,   156,
     3404     157,    -1,    -1,    -1,   757,   109,   641,   111,    -1,    -1,
     3405     763,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     3406    1002,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3407      -1,  1013,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
     3408     197,    -1,   677,    -1,    -1,  1274,  1275,    -1,    -1,    -1,
     3409     685,    -1,   805,   806,  1283,    -1,   809,    -1,    -1,    -1,
     3410      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
     3411     823,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,   293,
     3412     294,   716,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3413      -1,   726,   727,   307,   308,    -1,    -1,    -1,    -1,    -1,
     3414      -1,    -1,    -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,
     3415     863,    -1,   269,    -1,   867,    -1,    -1,  1099,    -1,    -1,
     3416      -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,    -1,   764,
     3417      -1,   345,    10,    11,    12,    13,    14,    15,    16,    17,
     3418      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3419      -1,   904,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3420      -1,    39,    40,    -1,    -1,  1394,   323,   381,    -1,    -1,
     3421      -1,    -1,    -1,    -1,   331,   332,    -1,   334,   335,    -1,
     3422      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    67,
     3423     943,    -1,   349,   828,    -1,    -1,    74,    75,    -1,    -1,
     3424     835,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
     3425      -1,   368,    -1,   848,   371,   850,    -1,    -1,   971,    -1,
     3426      -1,  1450,    -1,  1452,   977,    -1,    -1,    -1,   981,   864,
     3427      -1,    -1,    -1,   111,    -1,   870,    -1,   115,    -1,   117,
     3428     118,   398,    -1,    -1,    -1,   402,    -1,   882,    -1,  1002,
     3429     885,    -1,    -1,    -1,    -1,    -1,    -1,  1486,    -1,  1488,
     3430    1013,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3431      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
     3432      -1,    -1,  1035,    -1,  1037,    -1,  1515,    -1,    -1,    -1,
     3433      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1052,
     3434    1053,  1283,    10,    11,    12,    13,    14,    15,    16,    17,
     3435      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3436    1073,    -1,   479,    -1,    -1,   482,    -1,   962,    -1,    -1,
     3437      -1,    39,    -1,    -1,    -1,   549,   550,   551,   552,   553,
     3438     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3439     564,   565,   566,    -1,    -1,    -1,    -1,    37,    38,    67,
     3440      40,    -1,   997,    -1,   521,    -1,    -1,    -1,   525,   526,
     3441      -1,    -1,    -1,    -1,    -1,  1128,    -1,    -1,    -1,    -1,
     3442      -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,
     3443      -1,    -1,    72,  1146,    -1,    -1,    76,    -1,    -1,    79,
     3444      80,    81,    82,    83,    84,    -1,    86,    87,  1161,  1162,
     3445      -1,    -1,    -1,   570,   571,    -1,    -1,    -1,    -1,    -1,
     3446    1055,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,   109,
     3447      -1,   111,   589,   590,   114,    -1,    -1,   117,   118,   119,
     3448     120,   121,   122,   600,    -1,   602,   603,    -1,    -1,    -1,
     3449      -1,    -1,   609,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3450    1095,    -1,   619,   620,    -1,  1100,    -1,    -1,   625,    -1,
     3451      -1,    -1,    -1,  1108,    -1,    -1,    -1,   634,   635,   636,
     3452      -1,   695,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3453      -1,    -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,
     3454     657,   658,    -1,    -1,   661,   662,  1141,    -1,    -1,    -1,
     3455      -1,   668,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
     3456      -1,  1156,    -1,  1158,    -1,    -1,    -1,    -1,    -1,    -1,
     3457     687,    -1,    -1,    -1,    -1,    -1,    -1,  1172,  1173,    -1,
     3458      -1,    -1,   756,    -1,    -1,    -1,    -1,    -1,  1530,  1302,
     3459      -1,    -1,  1305,   710,   711,    -1,    -1,    -1,    -1,  1194,
    34903460      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3491       -1,    -1,    -1,    -1,    -1,    -1,  1201,    -1,    -1,    -1,
    3492     1087,    -1,   445,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3462      -1,    -1,    -1,    -1,    -1,    -1,    -1,   744,   745,    -1,
     3463      -1,    -1,   749,   750,    -1,    -1,    -1,    -1,    -1,    -1,
     3464      -1,    -1,    -1,    -1,    -1,    -1,  1241,    -1,    -1,    -1,
     3465      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3466      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3467      -1,    30,    31,    32,    -1,    -1,   793,    -1,    -1,    -1,
     3468      39,    -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,
     3469      -1,   808,   809,    -1,    -1,   812,    -1,   814,    -1,    -1,
     3470      -1,    -1,    -1,    -1,    -1,    -1,    -1,   824,    67,    -1,
     3471      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,
     3472      -1,  1316,    -1,  1318,    83,    84,    -1,    -1,    -1,    -1,
     3473      -1,    -1,   906,    -1,    -1,  1330,    -1,  1332,    -1,    -1,
    34933474      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,   471,    -1,
    3495       -1,    -1,    -1,    -1,   477,    -1,    -1,     0,    -1,   482,
    3496        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3497       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3498       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3499       33,    -1,    -1,    36,    -1,   518,    39,    40,    -1,    -1,
     3475      -1,    -1,   111,    -1,  1349,    -1,    -1,    -1,   117,   118,
    35003476      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3501      533,    -1,  1159,    -1,  1299,    -1,    -1,    -1,    -1,    -1,
    3502       -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
    3503       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3504       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,   571,    -1,
    3505       -1,    94,  1219,    -1,  1201,    -1,    -1,   580,    -1,   157,
    3506      158,    -1,    -1,    -1,   587,    -1,   109,    -1,   111,    -1,
    3507      593,    -1,    -1,    -1,    -1,   118,   119,    -1,    -1,   602,
     3477    1365,  1366,    -1,    -1,    -1,    -1,    -1,   951,    -1,   896,
     3478      -1,  1376,    -1,    -1,  1379,    -1,   903,   904,   905,    -1,
     3479     907,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
     3480      -1,    -1,  1515,    -1,    -1,  1400,    -1,    -1,    -1,    -1,
     3481      -1,    -1,   986,    -1,  1409,   932,   933,  1412,    -1,  1414,
     3482    1415,  1416,    -1,    -1,    -1,   999,    10,    11,    12,    13,
     3483      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3484      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
     3485     967,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,  1454,
     3486      -1,  1456,    -1,  1458,    -1,    -1,  1040,    -1,    -1,    -1,
     3487      -1,   988,   989,    -1,    -1,    -1,    -1,    -1,  1473,    -1,
     3488      -1,    -1,   999,    67,    -1,    -1,    -1,    -1,  1005,  1006,
     3489      -1,  1008,  1009,  1010,    78,    -1,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,
     3491      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
     3492       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3493      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3494      26,    27,    -1,  1117,    30,    31,    32,    33,    -1,    -1,
     3495      36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3496      -1,    -1,    -1,    -1,    -1,    -1,  1083,    -1,  1085,    -1,
     3497      -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,    -1,    -1,
     3498      66,    67,  1099,    69,    -1,    71,    72,    -1,    74,    75,
     3499      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3500      86,    87,    -1,  1177,  1178,  1122,  1123,  1124,    -1,    -1,
    35083501      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3509       -1,  1238,    -1,   191,    -1,    -1,    -1,    -1,    -1,    -1,
    3510      198,    -1,    -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,
    3511       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3512      643,    -1,    -1,  1419,    -1,    -1,    -1,    -1,    -1,    -1,
    3513       -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    3514       -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,    -1,
    3515       -1,    -1,  1299,    -1,    -1,    -1,   679,    -1,    -1,    -1,
    3516       66,    -1,    -1,    -1,   687,    -1,    72,    -1,    -1,    -1,
    3517       76,    -1,   270,    79,    80,    81,    82,    83,    84,    -1,
    3518       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    3519       -1,    -1,    -1,    -1,    -1,   718,  1492,  1493,    -1,    -1,
    3520       -1,    -1,    -1,   109,    -1,   728,   729,    -1,    -1,    -1,
    3521       -1,    -1,   118,   119,   120,   121,   122,   123,    -1,   742,
    3522       -1,    -1,    -1,    -1,    -1,    -1,   324,    -1,    -1,    -1,
    3523       -1,    -1,    -1,    -1,   332,   333,    -1,   335,   336,    -1,
    3524      763,    -1,   765,    -1,    -1,    -1,   769,    -1,   346,    -1,
    3525       -1,    -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3526       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1415,    -1,
    3527     1555,   369,    -1,    -1,   372,    10,    11,    12,    13,    14,
    3528       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3529       25,    26,    27,    28,    -1,    30,    31,    32,    -1,    -1,
    3530       -1,   399,    -1,    -1,    39,   403,    -1,    -1,    -1,    -1,
    3531       -1,   834,    -1,    -1,    -1,    -1,    -1,    -1,   841,    -1,
    3532       -1,    -1,    -1,    -1,    -1,    -1,  1473,    -1,  1475,    -1,
    3533       -1,   854,    67,   856,    -1,    -1,   434,    72,    -1,    74,
    3534       75,    76,    -1,    78,    -1,    -1,    -1,   870,    83,    84,
    3535       -1,    -1,    -1,    -1,   877,    -1,    -1,    -1,    -1,    94,
    3536       -1,    -1,    -1,  1510,   148,  1512,   889,    -1,    -1,   892,
    3537       -1,    -1,    -1,    -1,   158,    -1,   111,    -1,    -1,    -1,
    3538       -1,    -1,   480,   118,   119,   483,   170,   171,    -1,    -1,
    3539       -1,    -1,    -1,  1540,     3,     4,     5,     6,     7,     8,
    3540        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3541       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3542       -1,    30,    31,    32,   522,    -1,    -1,    -1,   526,   527,
    3543       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3544       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   971,    -1,
    3545       -1,    -1,    -1,    -1,    -1,    -1,    -1,   241,    67,    -1,
    3546       69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
    3547       -1,    -1,    -1,   571,   572,    -1,    -1,    -1,    -1,    -1,
    3548       -1,   265,    -1,    -1,  1007,    94,    -1,    -1,    -1,    -1,
    3549       -1,    -1,   590,   591,    -1,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,   111,   601,    -1,   603,   604,    -1,    -1,   118,
    3551      119,    -1,   610,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3552       -1,    -1,   620,   621,    -1,    -1,    -1,    -1,   626,    -1,
    3553       -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,   637,
    3554       -1,    -1,  1065,    -1,    -1,    -1,    -1,    -1,  1071,    -1,
    3555       -1,    -1,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
    3556       -1,   659,   660,    -1,    -1,   663,   664,    -1,    -1,    -1,
    3557       -1,    -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3558       -1,    -1,  1105,    -1,    -1,    -1,    -1,  1110,    -1,    -1,
    3559       -1,   689,    -1,    -1,    -1,  1118,    -1,   381,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3561       -1,    -1,    -1,    -1,   712,   713,    -1,    -1,    -1,    -1,
    3562       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3563       -1,  1154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    -1,  1166,    -1,    -1,  1169,    -1,  1171,    -1,
    3565      748,   749,    -1,    -1,    -1,   753,   754,    -1,    -1,    -1,
    3566       -1,    -1,  1185,  1186,    -1,    -1,    -1,    -1,    -1,    -1,
    3567       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       -1,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,    -1,
    3569       -1,   475,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3570       -1,   799,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   807,
    3571       -1,    -1,    -1,    -1,    -1,    -1,   814,   815,    -1,    -1,
    3572      818,    66,   820,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3573      514,    76,   830,  1256,    79,    80,    81,    82,    83,    84,
    3574       -1,    86,    87,   527,    -1,    -1,    -1,    -1,   532,    94,
    3575       -1,   535,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    -1,   546,   547,   109,    -1,   111,    -1,    -1,    -1,
    3577       -1,   116,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3578       -1,    -1,    -1,    -1,    -1,   569,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,
    3580       -1,    -1,   586,    -1,    -1,   903,    -1,   591,    -1,  1332,
    3581       -1,  1334,   910,   911,   912,    -1,   914,    -1,    -1,    -1,
    3582      918,    -1,    -1,    -1,    -1,  1348,    -1,  1350,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,   939,   940,    -1,    -1,  1368,    -1,    -1,    -1,    -1,
    3585       -1,    -1,    -1,    -1,    -1,    -1,   640,    -1,    -1,    -1,
    3586       -1,  1384,  1385,    -1,    -1,   649,    -1,    -1,   966,    -1,
    3587       -1,    -1,  1395,    -1,    -1,  1398,    -1,    -1,   976,    10,
    3588       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3589       21,    22,    23,    24,    25,    26,    27,    28,  1421,    -1,
    3590      998,   999,    -1,    -1,    -1,    -1,    -1,  1430,    39,    -1,
    3591     1433,  1009,  1435,  1436,  1437,    -1,    -1,  1015,  1016,    -1,
    3592     1018,  1019,  1020,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3593       -1,    -1,  1030,  1031,    -1,    -1,    67,    -1,    -1,    -1,
    3594       -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,
    3595       -1,    -1,    -1,    -1,  1477,    -1,  1479,    -1,  1481,    -1,
    3596       -1,    -1,    -1,    -1,    -1,   749,    -1,   751,    -1,    -1,
    3597       -1,    -1,    -1,    -1,  1497,    -1,    -1,   761,    -1,    -1,
    3598       -1,    -1,    -1,    -1,   768,    -1,    -1,    -1,    -1,    -1,
    3599       -1,    -1,    -1,    -1,    -1,  1093,    -1,  1095,    -1,    -1,
    3600       -1,    -1,  1100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3601       -1,  1109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,
    3602       -1,    -1,    10,    11,    12,    13,    14,   811,   812,    -1,
    3603       -1,   815,    -1,    -1,    -1,    -1,  1134,  1135,  1136,    -1,
    3604       -1,    -1,    -1,    -1,    -1,   829,    -1,    -1,    -1,    37,
    3605       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3606       -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3608       -1,    -1,    -1,    -1,    72,   869,    -1,    -1,    76,   873,
    3609       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3610       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,   109,  1220,   111,    -1,    -1,    -1,   911,    -1,    -1,
    3613      118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
    3614     1238,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3615       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3616       23,    24,    25,    26,    27,    -1,   950,    30,    31,    32,
    3617       -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
    3618       -1,    -1,   966,   967,    -1,    -1,    -1,    -1,    -1,    -1,
    3619       -1,    -1,  1290,  1291,    -1,    -1,   980,    -1,    -1,    -1,
    3620       -1,    -1,   986,    66,    67,   989,    69,   991,    71,    72,
    3621       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3622       83,    84,    -1,    86,    87,    -1,    -1,    -1,  1012,    -1,
    3623       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,
    3624       -1,    37,    38,    -1,    40,    -1,   109,    -1,   111,    -1,
    3625       -1,    -1,    -1,   116,    -1,   118,   119,   120,   121,   122,
    3626      123,  1045,    -1,  1047,    -1,    -1,    -1,    -1,    -1,    -1,
    3627       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,  1062,  1063,
    3628       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3629       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,  1083,
    3630       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,   109,    -1,   111,    -1,  1415,   114,    -1,
    3632       -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
    3633       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3634       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3635       22,    23,    24,    25,    26,    27,  1140,    -1,    30,    31,
    3636       32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
    3637       -1,    -1,    -1,    -1,    -1,  1159,    -1,    -1,    -1,    -1,
    3638       -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    3639     1174,  1175,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
    3640       72,    -1,    74,    75,    76,    -1,    -1,  1505,    -1,    -1,
    3641       66,    83,    84,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    3642       76,    -1,    94,    79,    80,    81,    82,    83,    84,    -1,
    3643       86,    87,  1530,  1531,    -1,    -1,    -1,   109,    94,   111,
    3644       -1,    -1,    -1,   115,    -1,    -1,   118,   119,    -1,    -1,
    3645       -1,    -1,    -1,   109,    -1,   111,    -1,  1555,    -1,    -1,
    3646       -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
    3647     1254,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3648       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3649       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3650       31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
    3651       41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
    3652       51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
    3653       61,    62,    -1,    64,  1318,    66,    67,  1321,    69,    -1,
    3654       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3655       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3656       -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
    3657       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3658      111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,
    3659      121,   122,   123,    -1,    -1,    -1,    -1,   128,    -1,    -1,
    3660       -1,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       -1,  1405,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
     3502      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,  1146,
     3503      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3504      -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,     3,     4,
    36633505       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36643506      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    36653507      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3666       -1,    36,    37,    38,    39,    40,    10,    11,    12,    13,
     3508      -1,    36,    37,    38,    39,    40,    41,    -1,    43,    -1,
     3509    1207,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3510      -1,    -1,    57,    -1,    -1,    -1,    61,    62,  1225,    64,
     3511      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3512      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3513      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3514      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,   109,    -1,   111,  1274,  1275,   114,
     3516      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3517      -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,
     3518      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3519      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3520      21,    22,    23,    24,    25,    26,    27,    -1,  1382,    30,
     3521      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
     3522      -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,    -1,
     3523      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3524      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3525      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3526      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3527      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,
     3528      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3529     111,    -1,    -1,    -1,  1468,  1469,   117,   118,   119,   120,
     3530     121,   122,    -1,     4,     5,     6,     7,     8,     9,    10,
     3531      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3532      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3533      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3534      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3535      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3536      27,    28,    -1,    -1,  1481,    66,    67,    -1,    69,    -1,
     3537      71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
     3538      81,    82,    83,    84,    -1,    86,    87,    -1,  1505,  1506,
     3539      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3540      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3541     111,    78,    -1,  1530,    -1,   116,   117,   118,   119,   120,
     3542     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
     3543      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3544      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3545      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
     3546      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3547      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3548      31,    32,    -1,    -1,    66,    67,    -1,    69,    39,    71,
     3549      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3550      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3551      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3552      -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,
     3553      -1,    -1,    83,    84,   116,   117,   118,   119,   120,   121,
     3554     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3555      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3556      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3557      -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,    11,
     3558      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3559      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3560      32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
     3561      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3562      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3563      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3564      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3565      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
     3566       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    36673567      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    36683568      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3669       -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
    3670       75,    76,    -1,  1487,    79,    80,    81,    82,    83,    84,
    3671       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3672       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,
    3673       74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,    83,
    3674       84,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3675       -1,    -1,    -1,    -1,    -1,    -1,  1540,   132,     3,     4,
    3676        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3677       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3678       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3679       -1,    36,    37,    38,    39,    40,    -1,    -1,    -1,    10,
    3680       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3681       21,    22,    23,    24,    25,    26,    27,    28,    -1,    -1,
    3682       -1,    66,    67,    -1,    69,    -1,    71,    72,    39,    74,
    3683       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3684       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3686       -1,    -1,    -1,    -1,   109,    -1,   111,    78,    -1,    -1,
    3687       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
    3688        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3689       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3690       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3691       -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
    3692       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3693       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3694       -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
    3695       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3696       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3697       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
    3698       74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3699       -1,   116,    -1,   118,   119,   120,   121,   122,   123,     4,
    3700        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3701       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3702       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3703       -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
    3704       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3705       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3706       -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
    3707       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3708       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3709       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3711       -1,   116,    -1,   118,   119,   120,   121,   122,   123,     4,
     3569      -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
     3570      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3571      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3572      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
     3573      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3574      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3575      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3577      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
    37123578       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    37133579      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    37183584      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    37193585      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3720       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3586      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37213587      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37223588      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3723       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
    3724        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3725       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3726       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3727       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3589      -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
     3590       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3591      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3592      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3593      -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    37283594      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37293595      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3730       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3731       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3732       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3596      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3597      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3598      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37333599      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3734       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3735       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
    3736        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3737       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3738       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3739       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3600      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3601      -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
     3602       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3603      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3604      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3605      37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    37403606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3607      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3608      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
     3609      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3610      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37413611      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3743       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3744       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3745       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3746       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3747       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
    3748        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3749       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3750       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3751       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3752       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3753       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3754       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3755       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3756       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3757       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3759       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     3,
     3612      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3613     117,   118,   119,   120,   121,   122,     0,    -1,    -1,     3,
    37603614       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    37613615      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    37673621      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    37683622      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769       94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37703624      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3771       -1,    -1,    -1,    -1,   118,   119,     3,     4,     5,     6,
     3625      -1,    -1,    -1,   117,   118,     3,     4,     5,     6,     7,
     3626       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3627      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3628      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3629      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3630      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3631      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
     3632      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3633      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
     3634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3636      -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,
     3637     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3638      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3639      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3640      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
     3641      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3643      -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
     3644      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
     3645      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3646      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3647      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3648      -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
     3649       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3650      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3651      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
     3652      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3653      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3654      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3655      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3656      -1,     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,   111,    39,    -1,    -1,    -1,
     3660      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3661      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3662      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    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,    -1,    -1,    -1,    -1,    -1,
     3666      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3667      -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,     7,
     3668       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3669      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3670      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3671      -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3672      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3673      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    67,
     3674      -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,     4,
     3675       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3676      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3677      25,    26,    27,    67,    -1,    30,    31,    32,    -1,    -1,
     3678      74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,   117,
     3679     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3681      -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,    74,
     3682      75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3683      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3684      -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3685      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3686      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3687      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3688      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3689      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3690      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3691      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3692      27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
     3693      -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,    -1,
     3694      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3695      -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
     3696      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3697      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
     3698       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3699      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3700      25,    26,    27,    -1,   111,    30,    31,    32,   115,    -1,
     3701     117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     3702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3703      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3704      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3705      75,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
     3706      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3707      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3708      32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,
     3709      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
     3710      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3711      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3712      -1,    -1,    74,    75,    -1,     4,     5,     6,     7,     8,
     3713       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3714      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3715      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,
     3716      39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3718      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3719      69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,
     3720       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3721      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3722      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3723      -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,
     3724      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3725      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3726      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3727      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3728      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3729      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3730      40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3731      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3732      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
     3733      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3734      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3735      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3736      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3737      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
     3738     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
     3739      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3740      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3741      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3742      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3743      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3744      67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,
     3745      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3746      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3747      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3748      76,    -1,   109,   110,   111,    -1,    -1,    83,    84,    -1,
     3749     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
     3750      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3751      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
     3752      -1,   117,   118,    37,    38,    39,    40,    10,    11,    12,
     3753      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3754      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3755      -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,    -1,
     3756      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3757      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3758      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
     3759      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3760      83,    84,    -1,   117,   118,   119,   120,   121,   122,    10,
     3761      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3762      21,    22,    23,    24,    25,    26,    27,    -1,   111,    30,
     3763      31,    32,    -1,    -1,   117,   118,    37,    38,    39,    40,
     3764      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3765      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3766      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3767      40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3768      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3769      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3770      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3771     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3772     121,   122,    10,    11,    12,    13,    14,    15,    16,    17,
     3773      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3774      -1,   111,    30,    31,    32,   115,    -1,   117,   118,    37,
     3775      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
     3776      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3777      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
     3778      -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,
     3779      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3780      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3781      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3782      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3783     118,   119,   120,   121,   122,    10,    11,    12,    13,    14,
     3784      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3785      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
     3786     117,   118,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3787      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3788      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3789      27,    66,    67,    30,    31,    32,    -1,    72,    -1,    74,
     3790      75,    76,    39,    -1,    79,    80,    81,    82,    83,    84,
     3791      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3792      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3793      67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,
     3794      -1,    -1,   117,   118,   119,   120,   121,   122,     3,     4,
     3795       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3796      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3797      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
     3798     117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
     3799      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3800      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3801      32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,
     3802      75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3803      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3804      24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
     3805      72,    -1,    74,    75,    76,    39,    -1,    -1,    -1,   114,
     3806      -1,    83,    84,    -1,    10,    11,    12,    13,    14,    15,
     3807      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3808      26,    27,    -1,    67,    30,    31,    32,   109,    72,   111,
     3809      74,    75,    76,    39,    -1,   117,   118,    -1,    -1,    83,
     3810      84,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3811      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3812      -1,    67,    30,    31,    32,   109,    72,   111,    74,    75,
     3813      76,    39,    -1,   117,   118,    -1,    -1,    83,    84,    -1,
     3814      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3815      20,    21,    22,    23,    24,    25,    26,    27,    28,    67,
     3816      30,    31,    32,   109,    72,   111,    74,    75,    76,    39,
     3817      -1,   117,   118,    -1,    -1,    83,    84,    -1,    10,    11,
     3818      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3819      22,    23,    24,    25,    26,    27,    28,    67,    30,    31,
     3820      32,   109,    -1,   111,    74,    75,    -1,    39,    78,   117,
     3821     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3822      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3823      -1,    30,    31,    32,    -1,    67,    -1,    -1,    -1,   109,
     3824      39,   111,    74,    75,    -1,    -1,    78,   117,   118,    10,
     3825      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3826      21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
     3827      31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,
     3828      -1,    -1,    -1,    -1,    -1,   117,   118,    10,    11,    12,
     3829      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3830      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
     3831      -1,    -1,   111,    74,    75,    -1,    39,    -1,   117,   118,
     3832      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3833      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3834      30,    31,    32,    -1,    67,    -1,    -1,    -1,    -1,    39,
     3835     111,    74,    75,    -1,    -1,    -1,   117,   118,    10,    11,
     3836      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3837      22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
     3838      32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,    -1,
     3839      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3840      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3841      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3842      -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,     4,
     3843       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3844      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3845      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   111,
     3846      -1,    -1,    -1,    -1,    39,   117,   118,    -1,    -1,    -1,
     3847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3848      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3849      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3850      75,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
     3851      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     3852      56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
     3853      66,    -1,    -1,    -1,    -1,   110,    72,    -1,    -1,    -1,
     3854      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3855      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3856      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3857      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3858      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
     3859      38,   127,    40,    41,    -1,    43,   132,    -1,    46,    47,
     3860      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
     3861      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
     3862      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3863      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3864      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3865      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3866      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
     3867     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,
     3868      -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,     8,
     3869       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3870      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3871      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3872      39,    -1,    37,    38,    -1,    40,    41,    -1,    43,    44,
     3873      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3874      -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,    64,
     3875      69,    66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,
     3876      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3877      -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,
     3878      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3879      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3880      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3881      37,    38,   127,    40,    41,    -1,    43,    44,    45,    46,
     3882      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
     3883      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
     3884      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3885      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3886      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3888      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
     3889     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
     3890     127,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
     3891      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
     3892      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
     3893      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3894      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3895      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
     3896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3897     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3898     119,   120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,
     3899      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3900      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3901      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3902      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3903      -1,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3904     122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3905      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3906      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3907      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3908      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
     3909      -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
     3910      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3911      -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
     3912      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3913      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3914      -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,   117,
     3915     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
     3916     109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
     3917     119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
     3918      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     3919      82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
     3920      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3921      83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
     3922      -1,    37,    38,    -1,    40,   117,   118,   119,   120,   121,
     3923     122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3924      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3925      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3926      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3927      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3928      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3929      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     3930      -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    37723931       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    37733932      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3774       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3775       -1,    -1,    39,    -1,    10,    11,    12,    13,    14,    15,
    3776       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3777       26,    27,    -1,    -1,    30,    31,    32,    33,    34,    35,
    3778       67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
    3779       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
    3780       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3781       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    3782       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3783       -1,   118,   119,     3,     4,     5,     6,     7,     8,     9,
    3784       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3785       20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
    3786       30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
    3787       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3788       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3789       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3790       -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,    -1,
    3791       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3792       -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3794       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
    3795        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3796       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3797       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3798       33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,
    3799       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3801       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
    3802       -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3803       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3804       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3805       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3806       -1,    -1,    -1,    -1,    -1,   118,   119,     4,     5,     6,
    3807        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3808       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3809       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3933      27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38103934      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38113935      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38123936      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38133937      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3814       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
    3815       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3816       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3817       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3818       -1,   118,   119,     4,     5,     6,     7,     8,     9,    10,
    3819       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3820       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3821       31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3822       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3823       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3824       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3825       71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
    3826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3827       -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
    3828       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3829      111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     4,
     3938      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,     3,     4,
    38303939       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    38313940      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    38353944      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38363945      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3837       75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3838       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3839       -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3840       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3841       -1,    -1,    -1,   118,   119,     4,     5,     6,     7,     8,
    3842        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3843       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3844       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3845       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3846       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3848       69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
    3849       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3850       -1,    -1,    -1,    -1,    -1,    94,    -1,    96,    -1,    -1,
    3851       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3852       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,
    3853      119,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3854       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3855       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3856       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
     3946      75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3947      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3948      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3949      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    38573950      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38583951      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3859       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
    3860       -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3861       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3862       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3863       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3864       -1,    -1,    -1,    -1,    -1,   118,   119,     4,     5,     6,
    3865        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3866       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3867       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3868       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3869       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3870       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3871       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3872       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3873       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3874       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3875       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3876       -1,   118,   119,     4,     5,     6,     7,     8,     9,    10,
    3877       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3878       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3879       31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3880       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3881       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3883       71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
    3884       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3885       -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
    3886       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3887      111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     4,
    3888        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3889       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3890       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3891       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    3892       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3893       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3894       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3895       75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3896       19,    20,    21,    22,    23,    24,    25,    26,    27,    94,
    3897       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
    3898       39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3899       -1,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,
    3900       -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
    3901       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3902       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3903       -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
    3904       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3905      109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3906      119,   120,   121,   122,   123,    10,    11,    12,    13,    14,
    3907       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3908       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3909       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3910       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3911       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3912       -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3913       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3914       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3915       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3916       -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,
    3917       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    10,
    3918       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3919       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3920       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3921       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3922       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3923       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
    3924       -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3925       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3926       -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
    3927       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3928      111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
    3929      121,   122,   123,    10,    11,    12,    13,    14,    15,    16,
    3930       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3931       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3932       37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3933       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3934       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3935       67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
    3936       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3937       87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3938       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3939       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3940       -1,   118,   119,   120,   121,   122,   123,    10,    11,    12,
    3941       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3942       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3943       -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
    3944       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3945       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3946       -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    72,
    3947       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3948       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3949       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3950       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3951       -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3952      123,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3953       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3954       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
    3955       39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3956       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3957       -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
    3958       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3959       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3960       -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
    3961       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3962      109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,
    3963      119,   120,   121,   122,   123,     3,     4,     5,     6,     7,
    3964        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3965       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3966       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3967       -1,    39,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3968       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3969       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
    3970       -1,    69,    -1,    71,    39,    -1,    74,    75,    -1,    -1,
    3971       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3972       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3973       27,    -1,    67,    30,    31,    32,    -1,    72,    -1,    74,
    3974       75,    76,    39,    -1,    -1,    -1,   114,    -1,    83,    84,
    3975       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3976       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3977       67,    -1,    -1,    -1,   109,    72,   111,    74,    75,    76,
    3978       -1,    -1,    -1,   118,   119,    -1,    83,    84,    -1,    -1,
    3979       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3980       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3981       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3982       -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
    3983       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3984       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3985       -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
    3986       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3987       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3988       67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
    3989       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
    3990       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3991       67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
    3992       -1,    -1,   109,    -1,   111,    -1,    83,    84,    -1,    -1,
    3993       -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    3994       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3995       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3996       -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
    3997       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3998       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3999       -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
    4000       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4001       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4002       67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
    4003       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
    4004       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4005       67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,
    4006       -1,    -1,    -1,    -1,   111,    -1,    83,    84,    -1,    -1,
    4007       -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4008       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4009       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    4010       -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
    4011       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4012       27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4013       -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
    4014       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4015       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4016       67,    -1,    39,    40,    -1,    -1,    -1,    74,    75,    -1,
    4017       -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4018       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4019       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    4020       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    4021       -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4022       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4023       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
    4024       -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
    4025       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4026       27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4027       -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
    4028       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4029       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4030       67,    -1,    39,    40,    -1,    -1,    -1,    74,    75,    -1,
    4031       -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4032       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4033       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    4034       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    4035       -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4036       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4037       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
    4038       -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
    4039       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4040       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4041       -1,    -1,    39,    40,    10,    11,    12,    13,    14,    15,
    4042       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4043       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4044       67,    -1,    -1,    39,    -1,    -1,    -1,    74,    75,    -1,
    4045       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4046       -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
    4047       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    4048       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
    4049       -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    4050       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4051       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    4052       -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
    4053       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4054       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4055       -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
    4056       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4057       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4058       -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
    4059       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4060       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    4061       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    4062       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4063       -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
    4064       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4065       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4066       -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
    4067       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4068       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4069       -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
    4070       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4071       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4072       -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
    4073       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4074       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    4075       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    4076       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4077       -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
    4078       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4079       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4080       -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
    4081       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4082       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4083       -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
    4084       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4085       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4086       -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
    4087       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4088       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    4089       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    4090       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4091       -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
    4092       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4093       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4094       -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
    4095       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4096       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4097       -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
    4098       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4099       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4100       -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
    4101       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4102       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    4103       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    4104       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4105       -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
    4106       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4107       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4108       -1,    -1,   118,   119,     4,     5,     6,     7,     8,     9,
     3952      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3953      -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
    41093954      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    41103955      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    41113956      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    4112       -1,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
    4113       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    4114       56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
    4115       66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
    4116       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    4117       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3957      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3958      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3959      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
     3960      39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
    41183961      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4119      110,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    4120       -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
    4121       -1,    -1,   128,    -1,    37,    38,   132,    40,    41,    -1,
    4122       43,    -1,    -1,    46,    47,    48,    49,    50,    51,    52,
    4123       53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,
    4124       -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,
    4125       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    4126       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    4127       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4128       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    4129       -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    4130      123,    -1,    -1,    -1,    -1,   128,    -1,    -1,    -1,   132,
    4131        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    4132       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4133       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    4134       -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,    -1,
    4135       40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
    4136       50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    -1,
    4137       -1,    61,    62,    67,    64,    69,    66,    71,    -1,    -1,
    4138       74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    4139       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    4140       -1,    -1,    96,    -1,    94,    -1,    -1,    -1,    -1,    -1,
    4141       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    4142       -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,
    4143      120,   121,   122,   123,    -1,    -1,    37,    38,   128,    40,
    4144       41,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
    4145       51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
    4146       61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,
    4147       -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
    4148       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    4149       -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
    4150       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    4151      111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,
    4152      121,   122,   123,    -1,    -1,    37,    38,   128,    40,    41,
    4153       -1,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
    4154       52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,
    4155       62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,
    4156       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    4157       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    4158       -1,    -1,    94,    37,    38,    -1,    40,    -1,    -1,    -1,
    4159       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    4160       -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,
    4161      122,   123,    66,    -1,    -1,    -1,   128,    -1,    72,    -1,
    4162       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    4163       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    4164       94,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    4165       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,   113,
    4166      114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    4167       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    4168       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    4169       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    37,
    4170       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4171       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    37,    38,
    4172       -1,    40,   118,   119,   120,   121,   122,   123,    66,    -1,
    4173       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    4174       -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
    4175       -1,    -1,    -1,    72,    -1,    -1,    94,    76,    -1,    -1,
    4176       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    4177       -1,   109,    -1,   111,    -1,    94,    37,    38,    -1,    40,
    4178      118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
    4179      109,    -1,   111,    -1,    -1,    37,    38,    -1,    40,   118,
    4180      119,   120,   121,   122,   123,    66,    -1,    -1,    -1,    -1,
    4181       -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
    4182       81,    82,    83,    84,    66,    86,    87,    -1,    -1,    -1,
    4183       72,    -1,    -1,    94,    76,    -1,    -1,    79,    80,    81,
    4184       82,    83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,
    4185       -1,    -1,    94,    -1,    -1,    -1,    -1,   118,   119,   120,
    4186      121,   122,   123,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    4187       -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    4188      122,   123,     4,     5,     6,     7,     8,     9,    10,    11,
    4189       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4190       22,    23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,
    4191       -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    4192       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4193       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4194       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    4195       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
    4196       -1,    83,    84,     3,     4,     5,     6,     7,     8,     9,
    4197       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4198       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    4199       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    4200       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4201       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4202       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    4203       -1,    71,    -1,    -1,    74,    75,     3,     4,     5,     6,
    4204        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    4205       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4206       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4207       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4208       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4209       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4210       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
    4211        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    4212       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4213       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    4214       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    4215       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4216       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4217       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    4218       75
     3962      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3963      -1,    -1,    -1,    -1,    -1,    74,    75
    42193964};
    42203965
     
    42273972      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    42283973      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    4229       76,    83,    84,    94,   109,   111,   118,   119,   137,   140,
    4230      149,   198,   212,   213,   214,   215,   216,   217,   218,   219,
    4231      220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
    4232      231,   232,   233,   234,   235,   236,   237,   238,   240,   241,
    4233      242,   243,   244,   245,   247,   255,   256,   283,   284,   285,
    4234      293,   296,   302,   303,   305,   307,   308,   314,   319,   323,
    4235      324,   325,   326,   327,   328,   329,   330,   350,   367,   368,
    4236      369,   370,    72,   139,   140,   149,   215,   217,   225,   227,
    4237      237,   241,   243,   284,    82,   109,   312,   313,   314,   312,
    4238      312,    72,    74,    75,    76,   138,   139,   273,   274,   294,
    4239      295,    74,    75,   274,   109,   305,    11,   199,   109,   149,
    4240      319,   324,   325,   326,   328,   329,   330,   112,   134,   111,
    4241      218,   225,   227,   323,   327,   366,   367,   370,   371,   135,
    4242      107,   131,   277,   114,   135,   173,    74,    75,   137,   272,
    4243      135,   135,   135,   116,   135,    74,    75,   109,   149,   309,
    4244      318,   319,   320,   321,   322,   323,   327,   331,   332,   333,
    4245      334,   335,   341,     3,    28,    78,   239,     3,     5,    74,
    4246      111,   149,   217,   228,   232,   235,   244,   285,   323,   327,
    4247      370,   215,   217,   227,   237,   241,   243,   284,   323,   327,
    4248       33,   233,   233,   228,   235,   135,   233,   228,   233,   228,
    4249       75,   109,   114,   274,   285,   114,   274,   233,   228,   116,
    4250      135,   135,     0,   134,   109,   173,   312,   312,   134,   111,
    4251      225,   227,   368,   272,   272,   131,   227,   109,   149,   309,
    4252      319,   323,   111,   149,   370,   306,   230,   314,   109,   290,
    4253      109,   109,    51,   109,    37,    38,    40,    66,    72,    76,
    4254       79,    80,    81,    82,    86,    87,   109,   111,   120,   121,
    4255      122,   123,   136,   140,   141,   142,   143,   148,   149,   150,
    4256      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    4257      161,   162,   164,   166,   225,   276,   292,   366,   371,   227,
    4258      110,   110,   110,   110,   110,   110,   110,    74,    75,   111,
    4259      225,   272,   350,   368,   111,   118,   149,   164,   217,   218,
    4260      224,   227,   231,   232,   237,   240,   241,   243,   262,   263,
    4261      267,   268,   269,   270,   284,   350,   362,   363,   364,   365,
    4262      370,   371,   112,   109,   323,   327,   370,   109,   116,   132,
    4263      111,   114,   149,   164,   278,   278,   115,   134,   116,   132,
    4264      109,   116,   132,   116,   132,   116,   132,   312,   132,   319,
    4265      320,   321,   322,   332,   333,   334,   335,   227,   318,   331,
    4266       64,   311,   111,   312,   349,   350,   312,   312,   173,   134,
    4267      109,   312,   349,   312,   312,   227,   309,   109,   109,   226,
    4268      227,   225,   227,   112,   134,   225,   366,   371,   173,   134,
    4269      272,   277,   217,   232,   323,   327,   173,   134,   294,   227,
    4270      237,   132,   227,   227,   292,   248,   246,   258,   274,   257,
    4271      227,   294,   132,   132,   305,   134,   139,   271,     3,   135,
    4272      207,   208,   222,   224,   227,   134,   311,   109,   311,   164,
    4273      319,   227,   109,   134,   272,   114,    33,    34,    35,   225,
    4274      286,   287,   289,   134,   129,   131,   291,   134,   228,   234,
    4275      235,   272,   315,   316,   317,   109,   141,   109,   148,   109,
    4276      148,   151,   109,   148,   109,   109,   148,   148,   111,   164,
    4277      169,   173,   225,   275,   366,   370,   112,   134,    82,    85,
    4278       86,    87,   109,   111,   113,   114,    97,    98,    99,   100,
    4279      101,   102,   103,   104,   105,   106,   131,   168,   151,   151,
    4280      118,   124,   125,   120,   121,    88,    89,    90,    91,   126,
    4281      127,    92,    93,   119,   128,   129,    94,    95,   130,   131,
    4282      373,   109,   149,   345,   346,   347,   348,   349,   110,   116,
    4283      109,   349,   350,   109,   349,   350,   134,   109,   225,   368,
    4284      112,   134,   135,   111,   225,   227,   361,   362,   370,   371,
    4285      135,   109,   111,   149,   319,   336,   337,   338,   339,   340,
    4286      341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
    4287      356,   149,   370,   227,   135,   135,   149,   225,   227,   363,
    4288      272,   225,   350,   363,   272,   109,   134,   134,   134,   112,
    4289      134,    72,    80,   111,   113,   140,   274,   278,   279,   280,
    4290      281,   282,   134,   134,   134,   134,   134,   134,   309,   110,
    4291      110,   110,   110,   110,   110,   110,   318,   331,   109,   277,
    4292      112,   207,   134,   309,   169,   276,   169,   276,   309,   111,
    4293      207,   311,   173,   134,   207,   110,    40,   111,   115,   225,
    4294      249,   250,   251,   366,   114,   116,   372,   131,   259,   114,
    4295      227,   264,   265,   266,   269,   270,   110,   116,   173,   134,
    4296      118,   164,   134,   224,   227,   263,   362,   370,   303,   304,
    4297      109,   149,   336,   110,   116,   373,   274,   286,   109,   114,
    4298      274,   276,   286,   110,   116,   109,   141,   110,   117,   275,
    4299      275,   275,   111,   139,   145,   164,   276,   275,   112,   134,
    4300      110,   116,   110,   109,   149,   349,   357,   358,   359,   360,
    4301      110,   116,   164,   111,   139,   111,   144,   145,   134,   111,
    4302      139,   144,   164,   164,   151,   151,   151,   152,   152,   153,
    4303      153,   154,   154,   154,   154,   155,   155,   156,   157,   158,
    4304      159,   160,   117,   169,   164,   134,   346,   347,   348,   227,
    4305      345,   312,   312,   164,   276,   134,   271,   134,   225,   350,
    4306      363,   227,   231,   112,   112,   134,   370,   112,   109,   134,
    4307      319,   337,   338,   339,   342,   352,   353,   354,   112,   134,
    4308      227,   336,   340,   351,   109,   312,   355,   373,   312,   312,
    4309      373,   109,   312,   355,   312,   312,   312,   312,   350,   225,
    4310      361,   371,   272,   112,   116,   112,   116,   373,   225,   363,
    4311      373,   260,   261,   262,   263,   260,   260,   272,   164,   134,
    4312      111,   274,   117,   116,   372,   278,    80,   111,   117,   282,
    4313       29,   209,   210,   272,   260,   139,   309,   139,   311,   109,
    4314      349,   350,   109,   349,   350,   141,   350,   173,   264,   110,
    4315      110,   110,   110,   112,   173,   207,   173,   114,   250,   251,
    4316      112,   134,   109,   117,   149,   252,   254,   318,   319,   331,
    4317      357,   116,   132,   116,   132,   274,   248,   274,   115,   162,
    4318      163,   258,   135,   135,   139,   222,   135,   135,   260,   109,
    4319      149,   370,   135,   115,   227,   287,   288,   135,   134,   134,
    4320      109,   135,   110,   316,   169,   170,   117,   132,   111,   141,
    4321      200,   201,   202,   110,   116,   110,   134,   117,   110,   110,
    4322      110,   111,   164,   358,   359,   360,   227,   357,   312,   312,
    4323      114,   151,   166,   164,   165,   167,   116,   135,   134,   134,
    4324      110,   116,   164,   134,   115,   162,   117,   264,   110,   110,
    4325      110,   345,   264,   110,   260,   225,   363,   111,   118,   149,
     3974      76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
     3975     198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     3976     221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
     3977     232,   233,   234,   235,   236,   237,   238,   240,   241,   242,
     3978     243,   244,   245,   247,   255,   256,   283,   284,   285,   293,
     3979     296,   302,   303,   305,   307,   308,   314,   319,   323,   324,
     3980     325,   326,   327,   328,   329,   330,   350,   367,   368,   369,
     3981     370,    72,   139,   140,   149,   215,   217,   225,   227,   237,
     3982     241,   243,   284,    82,   109,   312,   313,   314,   312,   312,
     3983      72,    74,    75,    76,   138,   139,   273,   274,   294,   295,
     3984      74,    75,   274,   109,   305,    11,   199,   109,   149,   319,
     3985     324,   325,   326,   328,   329,   330,   112,   134,   111,   218,
     3986     225,   227,   323,   327,   366,   367,   370,   371,   135,   107,
     3987     131,   277,   114,   135,   173,    74,    75,   137,   272,   135,
     3988     135,   135,   116,   135,    74,    75,   109,   149,   309,   318,
     3989     319,   320,   321,   322,   323,   327,   331,   332,   333,   334,
     3990     335,   341,     3,    28,    78,   239,     3,     5,    74,   111,
     3991     149,   217,   228,   232,   235,   244,   285,   323,   327,   370,
     3992     215,   217,   227,   237,   241,   243,   284,   323,   327,    33,
     3993     233,   233,   228,   235,   135,   233,   228,   233,   228,    75,
     3994     109,   114,   274,   285,   114,   274,   233,   228,   116,   135,
     3995     135,     0,   134,   109,   173,   312,   312,   134,   111,   225,
     3996     227,   368,   272,   272,   131,   227,   109,   149,   309,   319,
     3997     323,   111,   149,   370,   306,   230,   314,   109,   290,   109,
     3998     109,    51,   109,    37,    38,    40,    66,    72,    76,    79,
     3999      80,    81,    82,    86,    87,   109,   111,   119,   120,   121,
     4000     122,   136,   140,   141,   142,   143,   148,   149,   150,   151,
     4001     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
     4002     162,   164,   167,   225,   276,   292,   366,   371,   227,   110,
     4003     110,   110,   110,   110,   110,   110,    74,    75,   111,   225,
     4004     272,   350,   368,   111,   117,   149,   164,   217,   218,   224,
     4005     227,   231,   232,   237,   240,   241,   243,   262,   263,   267,
     4006     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
     4007     371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
     4008     114,   149,   164,   278,   278,   115,   134,   116,   132,   109,
     4009     116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
     4010     321,   322,   332,   333,   334,   335,   227,   318,   331,    64,
     4011     311,   111,   312,   349,   350,   312,   312,   173,   134,   109,
     4012     312,   349,   312,   312,   227,   309,   109,   109,   226,   227,
     4013     225,   227,   112,   134,   225,   366,   371,   173,   134,   272,
     4014     277,   217,   232,   323,   327,   173,   134,   294,   227,   237,
     4015     132,   227,   227,   292,   248,   246,   258,   274,   257,   227,
     4016     294,   132,   132,   305,   134,   139,   271,     3,   135,   207,
     4017     208,   222,   224,   227,   134,   311,   109,   311,   164,   319,
     4018     227,   109,   134,   272,   114,    33,    34,    35,   225,   286,
     4019     287,   289,   134,   128,   131,   291,   134,   228,   234,   235,
     4020     272,   315,   316,   317,   109,   141,   109,   148,   109,   148,
     4021     151,   109,   148,   109,   109,   148,   148,   111,   164,   169,
     4022     173,   225,   275,   366,   370,   112,   134,    82,    85,    86,
     4023      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
     4024     102,   103,   104,   105,   106,   131,   166,   151,   151,   117,
     4025     123,   124,   119,   120,    88,    89,    90,    91,   125,   126,
     4026      92,    93,   118,   127,   128,    94,    95,   129,   131,   373,
     4027     109,   149,   345,   346,   347,   348,   349,   110,   116,   109,
     4028     349,   350,   109,   349,   350,   134,   109,   225,   368,   112,
     4029     134,   135,   111,   225,   227,   361,   362,   370,   371,   135,
     4030     109,   111,   149,   319,   336,   337,   338,   339,   340,   341,
     4031     342,   343,   344,   350,   351,   352,   353,   354,   355,   356,
     4032     149,   370,   227,   135,   135,   149,   225,   227,   363,   272,
     4033     225,   350,   363,   272,   109,   134,   134,   134,   112,   134,
     4034      72,   111,   113,   140,   274,   278,   279,   280,   281,   282,
     4035     134,   134,   134,   134,   134,   134,   309,   110,   110,   110,
     4036     110,   110,   110,   110,   318,   331,   109,   277,   112,   207,
     4037     134,   309,   169,   276,   169,   276,   309,   111,   207,   311,
     4038     173,   134,   207,   110,    40,   111,   115,   225,   249,   250,
     4039     251,   366,   114,   116,   372,   131,   259,   114,   227,   264,
     4040     265,   266,   269,   270,   110,   116,   173,   134,   117,   164,
     4041     134,   224,   227,   263,   362,   370,   303,   304,   109,   149,
     4042     336,   110,   116,   373,   274,   286,   109,   114,   274,   276,
     4043     286,   110,   116,   109,   141,   110,   130,   275,   275,   275,
     4044     145,   164,   276,   275,   112,   134,   110,   116,   110,   109,
     4045     149,   349,   357,   358,   359,   360,   110,   116,   164,   111,
     4046     139,   144,   145,   134,   111,   139,   144,   164,   151,   151,
     4047     151,   152,   152,   153,   153,   154,   154,   154,   154,   155,
     4048     155,   156,   157,   158,   159,   160,   130,   169,   164,   134,
     4049     346,   347,   348,   227,   345,   312,   312,   164,   276,   134,
     4050     271,   134,   225,   350,   363,   227,   231,   112,   112,   134,
     4051     370,   112,   109,   134,   319,   337,   338,   339,   342,   352,
     4052     353,   354,   112,   134,   227,   336,   340,   351,   109,   312,
     4053     355,   373,   312,   312,   373,   109,   312,   355,   312,   312,
     4054     312,   312,   350,   225,   361,   371,   272,   112,   116,   112,
     4055     116,   373,   225,   363,   373,   260,   261,   262,   263,   260,
     4056     260,   272,   164,   134,   111,   274,   130,   116,   372,   278,
     4057     111,   130,   282,    29,   209,   210,   272,   260,   139,   309,
     4058     139,   311,   109,   349,   350,   109,   349,   350,   141,   350,
     4059     173,   264,   110,   110,   110,   110,   112,   173,   207,   173,
     4060     114,   250,   251,   112,   134,   109,   130,   149,   252,   254,
     4061     318,   319,   331,   357,   116,   132,   116,   132,   274,   248,
     4062     274,   115,   162,   163,   258,   135,   135,   139,   222,   135,
     4063     135,   260,   109,   149,   370,   135,   115,   227,   287,   288,
     4064     135,   134,   134,   109,   135,   110,   316,   169,   170,   130,
     4065     132,   111,   141,   200,   201,   202,   110,   116,   110,   110,
     4066     110,   110,   111,   164,   358,   359,   360,   227,   357,   312,
     4067     312,   114,   151,   167,   164,   165,   168,   116,   135,   134,
     4068     110,   116,   164,   134,   115,   162,   130,   264,   110,   110,
     4069     110,   345,   264,   110,   260,   225,   363,   111,   117,   149,
    43264070     164,   164,   227,   342,   264,   110,   110,   110,   110,   110,
    43274071     110,   110,     7,   227,   336,   340,   351,   134,   134,   373,
     
    43294073     163,   164,   310,   134,   278,   280,   115,   134,   211,   274,
    43304074      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
    4331       53,    57,    61,    62,    72,   111,   128,   170,   171,   172,
     4075      53,    57,    61,    62,    72,   111,   127,   170,   171,   172,
    43324076     173,   174,   175,   177,   178,   190,   192,   193,   198,   212,
    43334077     308,    29,   135,   131,   277,   134,   134,   110,   135,   173,
     
    43354079     312,   115,   259,   372,   110,   116,   112,   112,   135,   227,
    43364080     116,   373,   290,   110,   286,   215,   217,   225,   298,   299,
    4337      300,   301,   292,   110,   110,   117,   163,   109,   110,   117,
    4338      116,   139,   164,   164,   112,   110,   110,   110,   357,   279,
    4339      116,   135,   167,   112,   139,   146,   147,   164,   145,   135,
    4340      146,   162,   166,   135,   109,   349,   350,   135,   135,   134,
    4341      135,   135,   135,   164,   110,   135,   109,   349,   350,   109,
    4342      355,   109,   355,   350,   226,     7,   118,   135,   164,   264,
    4343      264,   263,   267,   267,   268,   116,   116,   110,   110,   112,
    4344       96,   123,   135,   135,   146,   278,   164,   116,   132,   212,
    4345      216,   227,   231,   109,   109,   171,   109,   109,    72,   132,
    4346       72,   132,    72,   118,   170,   109,   173,   165,   165,   117,
    4347      112,   143,   132,   135,   134,   135,   211,   110,   164,   264,
    4348      264,   312,   110,   115,   252,   115,   134,   110,   134,   135,
    4349      309,   115,   134,   135,   135,   110,   114,   200,   112,   163,
    4350      132,   200,   202,   110,   116,   135,   109,   349,   350,   372,
    4351      165,   112,   135,    85,   113,   116,   135,   135,   112,   135,
    4352      110,   134,   110,   110,   112,   112,   112,   135,   110,   134,
    4353      134,   134,   164,   164,   135,   112,   135,   135,   135,   135,
    4354      134,   134,   163,   163,   112,   112,   135,   135,   274,   227,
    4355      169,   169,    47,   169,   134,   132,   132,   132,   169,   132,
    4356      169,    58,    59,    60,   194,   195,   196,   132,    63,   132,
    4357      312,   114,   175,   115,   132,   135,   135,    96,   269,   270,
    4358      110,   299,   116,   132,   116,   132,   115,   297,   117,   141,
    4359      110,   110,   117,   167,   112,   134,   115,   112,   111,   147,
    4360      111,   147,   147,   112,   112,   112,   264,   112,   264,   264,
    4361      264,   135,   135,   112,   112,   110,   110,   112,   116,    96,
    4362      263,    96,   135,   112,   112,   110,   110,   109,   110,   170,
    4363      191,   212,   132,   110,   109,   109,   173,   196,    58,    59,
    4364      164,   171,   144,   110,   110,   114,   134,   134,   298,   141,
    4365      203,   109,   132,   203,   135,   117,   264,   134,   134,   135,
    4366      135,   135,   135,   112,   112,   134,   135,   112,   171,    44,
    4367       45,   114,   181,   182,   183,   169,   171,   135,   110,   170,
    4368      114,   183,    96,   134,    96,   134,   109,   109,   132,   115,
    4369      134,   272,   309,   115,   116,   117,   163,   110,   112,   164,
    4370      135,   146,   146,   110,   110,   110,   110,   267,    42,   163,
    4371      179,   180,   310,   117,   134,   171,   181,   110,   132,   171,
    4372      132,   134,   110,   134,   110,   134,    96,   134,    96,   134,
    4373      132,   298,   141,   139,   204,   110,   132,   117,   110,   135,
    4374      135,   171,    96,   116,   117,   135,   205,   206,   212,   132,
    4375      170,   170,   205,   173,   197,   225,   366,   173,   197,   110,
    4376      134,   110,   134,   115,   110,   116,   164,   112,   112,   163,
    4377      179,   182,   184,   185,   134,   132,   182,   186,   187,   135,
    4378      109,   149,   309,   357,   139,   135,   173,   197,   173,   197,
    4379      109,   132,   139,   171,   176,   115,   182,   212,   170,    56,
    4380      176,   189,   115,   182,   110,   227,   110,   135,   135,   292,
    4381      171,   176,   132,   188,   189,   176,   189,   173,   173,   110,
    4382      110,   110,   188,   135,   135,   173,   173,   135,   135
     4081     300,   301,   292,   110,   110,   130,   163,   109,   110,   130,
     4082     116,   139,   112,   110,   110,   110,   357,   279,   116,   135,
     4083     168,   112,   139,   146,   147,   145,   135,   146,   162,   167,
     4084     135,   109,   349,   350,   135,   135,   134,   135,   135,   135,
     4085     164,   110,   135,   109,   349,   350,   109,   355,   109,   355,
     4086     350,   226,     7,   117,   135,   164,   264,   264,   263,   267,
     4087     267,   268,   116,   116,   110,   110,   112,    96,   122,   135,
     4088     135,   146,   278,   164,   116,   132,   212,   216,   227,   231,
     4089     109,   109,   171,   109,   109,    72,   132,    72,   132,    72,
     4090     117,   170,   109,   173,   165,   165,   130,   112,   143,   132,
     4091     135,   134,   135,   211,   110,   164,   264,   264,   312,   110,
     4092     115,   252,   115,   134,   110,   134,   135,   309,   115,   134,
     4093     135,   135,   110,   114,   200,   112,   163,   132,   200,   202,
     4094     110,   109,   349,   350,   372,   165,   112,   135,    85,   113,
     4095     116,   135,   112,   135,   110,   134,   110,   110,   112,   112,
     4096     112,   135,   110,   134,   134,   134,   164,   164,   135,   112,
     4097     135,   135,   135,   135,   134,   134,   163,   163,   112,   112,
     4098     135,   135,   274,   227,   169,   169,    47,   169,   134,   132,
     4099     132,   132,   169,   132,   169,    58,    59,    60,   194,   195,
     4100     196,   132,    63,   132,   312,   114,   175,   115,   132,   135,
     4101     135,    96,   269,   270,   110,   299,   116,   132,   116,   132,
     4102     115,   297,   130,   141,   110,   110,   130,   134,   115,   112,
     4103     111,   147,   111,   147,   147,   112,   112,   264,   112,   264,
     4104     264,   264,   135,   135,   112,   112,   110,   110,   112,   116,
     4105      96,   263,    96,   135,   112,   112,   110,   110,   109,   110,
     4106     170,   191,   212,   132,   110,   109,   109,   173,   196,    58,
     4107      59,   164,   171,   144,   110,   110,   114,   134,   134,   298,
     4108     141,   203,   109,   132,   203,   264,   134,   134,   135,   135,
     4109     135,   135,   112,   112,   134,   135,   112,   171,    44,    45,
     4110     114,   181,   182,   183,   169,   171,   135,   110,   170,   114,
     4111     183,    96,   134,    96,   134,   109,   109,   132,   115,   134,
     4112     272,   309,   115,   116,   130,   163,   110,   135,   146,   146,
     4113     110,   110,   110,   110,   267,    42,   163,   179,   180,   310,
     4114     130,   134,   171,   181,   110,   132,   171,   132,   134,   110,
     4115     134,   110,   134,    96,   134,    96,   134,   132,   298,   141,
     4116     139,   204,   110,   132,   110,   135,   135,   171,    96,   116,
     4117     130,   135,   205,   206,   212,   132,   170,   170,   205,   173,
     4118     197,   225,   366,   173,   197,   110,   134,   110,   134,   115,
     4119     110,   116,   112,   112,   163,   179,   182,   184,   185,   134,
     4120     132,   182,   186,   187,   135,   109,   149,   309,   357,   139,
     4121     135,   173,   197,   173,   197,   109,   132,   139,   171,   176,
     4122     115,   182,   212,   170,    56,   176,   189,   115,   182,   110,
     4123     227,   110,   135,   135,   292,   171,   176,   132,   188,   189,
     4124     176,   189,   173,   173,   110,   110,   110,   188,   135,   135,
     4125     173,   173,   135,   135
    43834126};
    43844127
     
    52174960
    52184961/* Line 1806 of yacc.c  */
    5219 #line 292 "parser.yy"
     4962#line 299 "parser.yy"
    52204963    {
    52214964                        typedefTable.enterScope();
     
    52264969
    52274970/* Line 1806 of yacc.c  */
    5228 #line 298 "parser.yy"
     4971#line 305 "parser.yy"
    52294972    {
    52304973                        typedefTable.leaveScope();
     
    52354978
    52364979/* Line 1806 of yacc.c  */
    5237 #line 307 "parser.yy"
    5238     { (yyval.constant) = makeConstantInteger( *(yyvsp[(1) - (1)].tok) ); }
     4980#line 314 "parser.yy"
     4981    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    52394982    break;
    52404983
     
    52424985
    52434986/* Line 1806 of yacc.c  */
    5244 #line 308 "parser.yy"
    5245     { (yyval.constant) = makeConstantFloat( *(yyvsp[(1) - (1)].tok) ); }
     4987#line 315 "parser.yy"
     4988    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    52464989    break;
    52474990
     
    52494992
    52504993/* Line 1806 of yacc.c  */
    5251 #line 309 "parser.yy"
    5252     { (yyval.constant) = makeConstantChar( *(yyvsp[(1) - (1)].tok) ); }
     4994#line 316 "parser.yy"
     4995    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    52534996    break;
    52544997
     
    52564999
    52575000/* Line 1806 of yacc.c  */
    5258 #line 334 "parser.yy"
    5259     { (yyval.constant) = makeConstantStr( *(yyvsp[(1) - (1)].tok) ); }
     5001#line 341 "parser.yy"
     5002    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
    52605003    break;
    52615004
     
    52635006
    52645007/* Line 1806 of yacc.c  */
    5265 #line 335 "parser.yy"
    5266     { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
     5008#line 343 "parser.yy"
     5009    {
     5010                        appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
     5011                        delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
     5012                        (yyval.constant) = (yyvsp[(1) - (2)].constant);
     5013                }
    52675014    break;
    52685015
     
    52705017
    52715018/* Line 1806 of yacc.c  */
    5272 #line 342 "parser.yy"
    5273     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5019#line 354 "parser.yy"
     5020    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    52745021    break;
    52755022
     
    52775024
    52785025/* Line 1806 of yacc.c  */
    5279 #line 344 "parser.yy"
    5280     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5026#line 356 "parser.yy"
     5027    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    52815028    break;
    52825029
     
    52845031
    52855032/* Line 1806 of yacc.c  */
    5286 #line 346 "parser.yy"
     5033#line 358 "parser.yy"
    52875034    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    52885035    break;
     
    52915038
    52925039/* Line 1806 of yacc.c  */
    5293 #line 348 "parser.yy"
    5294     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     5040#line 360 "parser.yy"
     5041    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    52955042    break;
    52965043
     
    52985045
    52995046/* Line 1806 of yacc.c  */
    5300 #line 358 "parser.yy"
    5301     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     5047#line 370 "parser.yy"
     5048    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    53025049    break;
    53035050
     
    53055052
    53065053/* Line 1806 of yacc.c  */
    5307 #line 360 "parser.yy"
    5308     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
     5054#line 372 "parser.yy"
     5055    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    53095056    break;
    53105057
     
    53125059
    53135060/* Line 1806 of yacc.c  */
    5314 #line 364 "parser.yy"
    5315     { (yyval.en) = new CompositeExprNode2( build_fieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     5061#line 376 "parser.yy"
     5062    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    53165063    break;
    53175064
     
    53195066
    53205067/* Line 1806 of yacc.c  */
    5321 #line 367 "parser.yy"
    5322     { (yyval.en) = new CompositeExprNode2( build_pfieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     5068#line 379 "parser.yy"
     5069    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    53235070    break;
    53245071
     
    53265073
    53275074/* Line 1806 of yacc.c  */
    5328 #line 370 "parser.yy"
    5329     { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     5075#line 382 "parser.yy"
     5076    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    53305077    break;
    53315078
     
    53335080
    53345081/* Line 1806 of yacc.c  */
    5335 #line 372 "parser.yy"
    5336     { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     5082#line 384 "parser.yy"
     5083    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    53375084    break;
    53385085
     
    53405087
    53415088/* Line 1806 of yacc.c  */
    5342 #line 374 "parser.yy"
    5343     { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
     5089#line 386 "parser.yy"
     5090    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    53445091    break;
    53455092
     
    53475094
    53485095/* Line 1806 of yacc.c  */
    5349 #line 376 "parser.yy"
     5096#line 388 "parser.yy"
    53505097    {
    5351                         Token fn; fn.str = new std::string( "?{}" ); // location undefined
    5352                         (yyval.en) = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) );
     5098                        Token fn;
     5099                        fn.str = new std::string( "?{}" ); // location undefined
     5100                        (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ) );
    53535101                }
    53545102    break;
     
    53575105
    53585106/* Line 1806 of yacc.c  */
    5359 #line 385 "parser.yy"
     5107#line 398 "parser.yy"
    53605108    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    53615109    break;
     
    53645112
    53655113/* Line 1806 of yacc.c  */
    5366 #line 390 "parser.yy"
     5114#line 403 "parser.yy"
    53675115    { (yyval.en) = 0; }
    53685116    break;
    53695117
    5370   case 37:
    5371 
    5372 /* Line 1806 of yacc.c  */
    5373 #line 393 "parser.yy"
    5374     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    5375     break;
    5376 
    53775118  case 38:
    53785119
    53795120/* Line 1806 of yacc.c  */
    5380 #line 398 "parser.yy"
    5381     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5121#line 409 "parser.yy"
     5122    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    53825123    break;
    53835124
     
    53855126
    53865127/* Line 1806 of yacc.c  */
    5387 #line 400 "parser.yy"
    5388     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     5128#line 414 "parser.yy"
     5129    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     5130    break;
     5131
     5132  case 40:
     5133
     5134/* Line 1806 of yacc.c  */
     5135#line 418 "parser.yy"
     5136    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    53895137    break;
    53905138
     
    53925140
    53935141/* Line 1806 of yacc.c  */
    5394 #line 405 "parser.yy"
     5142#line 420 "parser.yy"
     5143    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     5144    break;
     5145
     5146  case 42:
     5147
     5148/* Line 1806 of yacc.c  */
     5149#line 422 "parser.yy"
     5150    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     5151    break;
     5152
     5153  case 43:
     5154
     5155/* Line 1806 of yacc.c  */
     5156#line 424 "parser.yy"
     5157    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     5158    break;
     5159
     5160  case 45:
     5161
     5162/* Line 1806 of yacc.c  */
     5163#line 432 "parser.yy"
     5164    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5165    break;
     5166
     5167  case 46:
     5168
     5169/* Line 1806 of yacc.c  */
     5170#line 434 "parser.yy"
     5171    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     5172    break;
     5173
     5174  case 47:
     5175
     5176/* Line 1806 of yacc.c  */
     5177#line 436 "parser.yy"
     5178    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     5179    break;
     5180
     5181  case 48:
     5182
     5183/* Line 1806 of yacc.c  */
     5184#line 441 "parser.yy"
     5185    {
     5186                        switch ( (yyvsp[(1) - (2)].op) ) {
     5187                          case OperKinds::AddressOf:
     5188                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
     5189                                break;
     5190                          case OperKinds::PointTo:
     5191                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
     5192                                break;
     5193                          default:
     5194                                assert( false );
     5195                        }
     5196                }
     5197    break;
     5198
     5199  case 49:
     5200
     5201/* Line 1806 of yacc.c  */
     5202#line 454 "parser.yy"
     5203    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     5204    break;
     5205
     5206  case 50:
     5207
     5208/* Line 1806 of yacc.c  */
     5209#line 456 "parser.yy"
     5210    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     5211    break;
     5212
     5213  case 51:
     5214
     5215/* Line 1806 of yacc.c  */
     5216#line 458 "parser.yy"
     5217    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     5218    break;
     5219
     5220  case 52:
     5221
     5222/* Line 1806 of yacc.c  */
     5223#line 460 "parser.yy"
     5224    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     5225    break;
     5226
     5227  case 53:
     5228
     5229/* Line 1806 of yacc.c  */
     5230#line 462 "parser.yy"
     5231    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     5232    break;
     5233
     5234  case 54:
     5235
     5236/* Line 1806 of yacc.c  */
     5237#line 464 "parser.yy"
     5238    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     5239    break;
     5240
     5241  case 55:
     5242
     5243/* Line 1806 of yacc.c  */
     5244#line 466 "parser.yy"
     5245    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     5246    break;
     5247
     5248  case 56:
     5249
     5250/* Line 1806 of yacc.c  */
     5251#line 468 "parser.yy"
     5252    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     5253    break;
     5254
     5255  case 57:
     5256
     5257/* Line 1806 of yacc.c  */
     5258#line 470 "parser.yy"
     5259    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     5260    break;
     5261
     5262  case 58:
     5263
     5264/* Line 1806 of yacc.c  */
     5265#line 472 "parser.yy"
     5266    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     5267    break;
     5268
     5269  case 59:
     5270
     5271/* Line 1806 of yacc.c  */
     5272#line 474 "parser.yy"
     5273    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     5274    break;
     5275
     5276  case 60:
     5277
     5278/* Line 1806 of yacc.c  */
     5279#line 480 "parser.yy"
     5280    { (yyval.op) = OperKinds::PointTo; }
     5281    break;
     5282
     5283  case 61:
     5284
     5285/* Line 1806 of yacc.c  */
     5286#line 481 "parser.yy"
     5287    { (yyval.op) = OperKinds::AddressOf; }
     5288    break;
     5289
     5290  case 62:
     5291
     5292/* Line 1806 of yacc.c  */
     5293#line 487 "parser.yy"
     5294    { (yyval.op) = OperKinds::UnPlus; }
     5295    break;
     5296
     5297  case 63:
     5298
     5299/* Line 1806 of yacc.c  */
     5300#line 488 "parser.yy"
     5301    { (yyval.op) = OperKinds::UnMinus; }
     5302    break;
     5303
     5304  case 64:
     5305
     5306/* Line 1806 of yacc.c  */
     5307#line 489 "parser.yy"
     5308    { (yyval.op) = OperKinds::Neg; }
     5309    break;
     5310
     5311  case 65:
     5312
     5313/* Line 1806 of yacc.c  */
     5314#line 490 "parser.yy"
     5315    { (yyval.op) = OperKinds::BitNeg; }
     5316    break;
     5317
     5318  case 67:
     5319
     5320/* Line 1806 of yacc.c  */
     5321#line 496 "parser.yy"
     5322    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     5323    break;
     5324
     5325  case 68:
     5326
     5327/* Line 1806 of yacc.c  */
     5328#line 498 "parser.yy"
     5329    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     5330    break;
     5331
     5332  case 70:
     5333
     5334/* Line 1806 of yacc.c  */
     5335#line 504 "parser.yy"
     5336    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5337    break;
     5338
     5339  case 71:
     5340
     5341/* Line 1806 of yacc.c  */
     5342#line 506 "parser.yy"
     5343    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5344    break;
     5345
     5346  case 72:
     5347
     5348/* Line 1806 of yacc.c  */
     5349#line 508 "parser.yy"
     5350    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5351    break;
     5352
     5353  case 74:
     5354
     5355/* Line 1806 of yacc.c  */
     5356#line 514 "parser.yy"
     5357    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5358    break;
     5359
     5360  case 75:
     5361
     5362/* Line 1806 of yacc.c  */
     5363#line 516 "parser.yy"
     5364    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5365    break;
     5366
     5367  case 77:
     5368
     5369/* Line 1806 of yacc.c  */
     5370#line 522 "parser.yy"
     5371    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5372    break;
     5373
     5374  case 78:
     5375
     5376/* Line 1806 of yacc.c  */
     5377#line 524 "parser.yy"
     5378    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5379    break;
     5380
     5381  case 80:
     5382
     5383/* Line 1806 of yacc.c  */
     5384#line 530 "parser.yy"
     5385    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5386    break;
     5387
     5388  case 81:
     5389
     5390/* Line 1806 of yacc.c  */
     5391#line 532 "parser.yy"
     5392    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5393    break;
     5394
     5395  case 82:
     5396
     5397/* Line 1806 of yacc.c  */
     5398#line 534 "parser.yy"
     5399    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5400    break;
     5401
     5402  case 83:
     5403
     5404/* Line 1806 of yacc.c  */
     5405#line 536 "parser.yy"
     5406    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5407    break;
     5408
     5409  case 85:
     5410
     5411/* Line 1806 of yacc.c  */
     5412#line 542 "parser.yy"
     5413    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5414    break;
     5415
     5416  case 86:
     5417
     5418/* Line 1806 of yacc.c  */
     5419#line 544 "parser.yy"
     5420    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5421    break;
     5422
     5423  case 88:
     5424
     5425/* Line 1806 of yacc.c  */
     5426#line 550 "parser.yy"
     5427    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5428    break;
     5429
     5430  case 90:
     5431
     5432/* Line 1806 of yacc.c  */
     5433#line 556 "parser.yy"
     5434    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5435    break;
     5436
     5437  case 92:
     5438
     5439/* Line 1806 of yacc.c  */
     5440#line 562 "parser.yy"
     5441    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5442    break;
     5443
     5444  case 94:
     5445
     5446/* Line 1806 of yacc.c  */
     5447#line 568 "parser.yy"
     5448    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     5449    break;
     5450
     5451  case 96:
     5452
     5453/* Line 1806 of yacc.c  */
     5454#line 574 "parser.yy"
     5455    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     5456    break;
     5457
     5458  case 98:
     5459
     5460/* Line 1806 of yacc.c  */
     5461#line 580 "parser.yy"
     5462    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     5463    break;
     5464
     5465  case 99:
     5466
     5467/* Line 1806 of yacc.c  */
     5468#line 583 "parser.yy"
     5469    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     5470    break;
     5471
     5472  case 100:
     5473
     5474/* Line 1806 of yacc.c  */
     5475#line 585 "parser.yy"
     5476    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     5477    break;
     5478
     5479  case 103:
     5480
     5481/* Line 1806 of yacc.c  */
     5482#line 596 "parser.yy"
     5483    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5484    break;
     5485
     5486  case 104:
     5487
     5488/* Line 1806 of yacc.c  */
     5489#line 598 "parser.yy"
     5490    { (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) ) ); }
     5491    break;
     5492
     5493  case 105:
     5494
     5495/* Line 1806 of yacc.c  */
     5496#line 603 "parser.yy"
     5497    { (yyval.en) = nullptr; }
     5498    break;
     5499
     5500  case 107:
     5501
     5502/* Line 1806 of yacc.c  */
     5503#line 608 "parser.yy"
     5504    { (yyval.op) = OperKinds::Assign; }
     5505    break;
     5506
     5507  case 108:
     5508
     5509/* Line 1806 of yacc.c  */
     5510#line 609 "parser.yy"
     5511    { (yyval.op) = OperKinds::MulAssn; }
     5512    break;
     5513
     5514  case 109:
     5515
     5516/* Line 1806 of yacc.c  */
     5517#line 610 "parser.yy"
     5518    { (yyval.op) = OperKinds::DivAssn; }
     5519    break;
     5520
     5521  case 110:
     5522
     5523/* Line 1806 of yacc.c  */
     5524#line 611 "parser.yy"
     5525    { (yyval.op) = OperKinds::ModAssn; }
     5526    break;
     5527
     5528  case 111:
     5529
     5530/* Line 1806 of yacc.c  */
     5531#line 612 "parser.yy"
     5532    { (yyval.op) = OperKinds::PlusAssn; }
     5533    break;
     5534
     5535  case 112:
     5536
     5537/* Line 1806 of yacc.c  */
     5538#line 613 "parser.yy"
     5539    { (yyval.op) = OperKinds::MinusAssn; }
     5540    break;
     5541
     5542  case 113:
     5543
     5544/* Line 1806 of yacc.c  */
     5545#line 614 "parser.yy"
     5546    { (yyval.op) = OperKinds::LSAssn; }
     5547    break;
     5548
     5549  case 114:
     5550
     5551/* Line 1806 of yacc.c  */
     5552#line 615 "parser.yy"
     5553    { (yyval.op) = OperKinds::RSAssn; }
     5554    break;
     5555
     5556  case 115:
     5557
     5558/* Line 1806 of yacc.c  */
     5559#line 616 "parser.yy"
     5560    { (yyval.op) = OperKinds::AndAssn; }
     5561    break;
     5562
     5563  case 116:
     5564
     5565/* Line 1806 of yacc.c  */
     5566#line 617 "parser.yy"
     5567    { (yyval.op) = OperKinds::ERAssn; }
     5568    break;
     5569
     5570  case 117:
     5571
     5572/* Line 1806 of yacc.c  */
     5573#line 618 "parser.yy"
     5574    { (yyval.op) = OperKinds::OrAssn; }
     5575    break;
     5576
     5577  case 118:
     5578
     5579/* Line 1806 of yacc.c  */
     5580#line 625 "parser.yy"
     5581    { (yyval.en) = new ExpressionNode( build_tuple() ); }
     5582    break;
     5583
     5584  case 119:
     5585
     5586/* Line 1806 of yacc.c  */
     5587#line 627 "parser.yy"
     5588    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     5589    break;
     5590
     5591  case 120:
     5592
     5593/* Line 1806 of yacc.c  */
     5594#line 629 "parser.yy"
     5595    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( (yyvsp[(4) - (6)].en) ) ) ); }
     5596    break;
     5597
     5598  case 121:
     5599
     5600/* Line 1806 of yacc.c  */
     5601#line 631 "parser.yy"
     5602    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); }
     5603    break;
     5604
     5605  case 123:
     5606
     5607/* Line 1806 of yacc.c  */
     5608#line 637 "parser.yy"
    53955609    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    53965610    break;
    53975611
    5398   case 42:
    5399 
    5400 /* Line 1806 of yacc.c  */
    5401 #line 410 "parser.yy"
    5402     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5403     break;
    5404 
    5405   case 43:
    5406 
    5407 /* Line 1806 of yacc.c  */
    5408 #line 414 "parser.yy"
    5409     { (yyval.en) = new CompositeExprNode2( build_fieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
    5410     break;
    5411 
    5412   case 44:
    5413 
    5414 /* Line 1806 of yacc.c  */
    5415 #line 416 "parser.yy"
    5416     { (yyval.en) = new CompositeExprNode2( build_fieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
    5417     break;
    5418 
    5419   case 45:
    5420 
    5421 /* Line 1806 of yacc.c  */
    5422 #line 418 "parser.yy"
    5423     { (yyval.en) = new CompositeExprNode2( build_pfieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
    5424     break;
    5425 
    5426   case 46:
    5427 
    5428 /* Line 1806 of yacc.c  */
    5429 #line 420 "parser.yy"
    5430     { (yyval.en) = new CompositeExprNode2( build_pfieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
    5431     break;
    5432 
    5433   case 48:
    5434 
    5435 /* Line 1806 of yacc.c  */
    5436 #line 428 "parser.yy"
    5437     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5438     break;
    5439 
    5440   case 49:
    5441 
    5442 /* Line 1806 of yacc.c  */
    5443 #line 430 "parser.yy"
    5444     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5445     break;
    5446 
    5447   case 50:
    5448 
    5449 /* Line 1806 of yacc.c  */
    5450 #line 432 "parser.yy"
    5451     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    5452     break;
    5453 
    5454   case 51:
    5455 
    5456 /* Line 1806 of yacc.c  */
    5457 #line 437 "parser.yy"
    5458     { (yyval.en) = (yyvsp[(1) - (2)].op) == OperatorNode::AddressOf ? (ExpressionNode*) new CompositeExprNode2( build_addressOf( (yyvsp[(2) - (2)].en) ) )
    5459                                                                                         : (ExpressionNode*)new CompositeExprNode( new OperatorNode ( (yyvsp[(1) - (2)].op) ), (yyvsp[(2) - (2)].en) ); }
    5460     break;
    5461 
    5462   case 52:
    5463 
    5464 /* Line 1806 of yacc.c  */
    5465 #line 440 "parser.yy"
    5466     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5467     break;
    5468 
    5469   case 53:
    5470 
    5471 /* Line 1806 of yacc.c  */
    5472 #line 442 "parser.yy"
    5473     { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::Incr, (yyvsp[(2) - (2)].en) ) ); }
    5474     break;
    5475 
    5476   case 54:
    5477 
    5478 /* Line 1806 of yacc.c  */
    5479 #line 444 "parser.yy"
    5480     { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::Decr, (yyvsp[(2) - (2)].en) ) ); }
    5481     break;
    5482 
    5483   case 55:
    5484 
    5485 /* Line 1806 of yacc.c  */
    5486 #line 446 "parser.yy"
    5487     { (yyval.en) = new CompositeExprNode2( build_sizeOf( (yyvsp[(2) - (2)].en) ) ); }
    5488     break;
    5489 
    5490   case 56:
    5491 
    5492 /* Line 1806 of yacc.c  */
    5493 #line 448 "parser.yy"
    5494     { (yyval.en) = new CompositeExprNode2( build_sizeOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
    5495     break;
    5496 
    5497   case 57:
    5498 
    5499 /* Line 1806 of yacc.c  */
    5500 #line 450 "parser.yy"
    5501     { (yyval.en) = new CompositeExprNode2( build_offsetOf( new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) ) ) ); }
    5502     break;
    5503 
    5504   case 58:
    5505 
    5506 /* Line 1806 of yacc.c  */
    5507 #line 452 "parser.yy"
    5508     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    5509     break;
    5510 
    5511   case 59:
    5512 
    5513 /* Line 1806 of yacc.c  */
    5514 #line 454 "parser.yy"
    5515     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    5516     break;
    5517 
    5518   case 60:
    5519 
    5520 /* Line 1806 of yacc.c  */
    5521 #line 456 "parser.yy"
    5522     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    5523     break;
    5524 
    5525   case 61:
    5526 
    5527 /* Line 1806 of yacc.c  */
    5528 #line 458 "parser.yy"
    5529     { (yyval.en) = new CompositeExprNode2( build_alignOf( (yyvsp[(2) - (2)].en) ) ); }
    5530     break;
    5531 
    5532   case 62:
    5533 
    5534 /* Line 1806 of yacc.c  */
    5535 #line 460 "parser.yy"
    5536     { (yyval.en) = new CompositeExprNode2( build_alignOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
    5537     break;
    5538 
    5539   case 63:
    5540 
    5541 /* Line 1806 of yacc.c  */
    5542 #line 466 "parser.yy"
    5543     { (yyval.op) = OperatorNode::PointTo; }
    5544     break;
    5545 
    5546   case 64:
    5547 
    5548 /* Line 1806 of yacc.c  */
    5549 #line 467 "parser.yy"
    5550     { (yyval.op) = OperatorNode::AddressOf; }
    5551     break;
    5552 
    5553   case 65:
    5554 
    5555 /* Line 1806 of yacc.c  */
    5556 #line 469 "parser.yy"
    5557     { (yyval.op) = OperatorNode::And; }
    5558     break;
    5559 
    5560   case 66:
    5561 
    5562 /* Line 1806 of yacc.c  */
    5563 #line 473 "parser.yy"
    5564     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5565     break;
    5566 
    5567   case 67:
    5568 
    5569 /* Line 1806 of yacc.c  */
    5570 #line 474 "parser.yy"
    5571     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5572     break;
    5573 
    5574   case 68:
    5575 
    5576 /* Line 1806 of yacc.c  */
    5577 #line 475 "parser.yy"
    5578     { (yyval.en) = new OperatorNode( OperatorNode::Neg ); }
    5579     break;
    5580 
    5581   case 69:
    5582 
    5583 /* Line 1806 of yacc.c  */
    5584 #line 476 "parser.yy"
    5585     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5586     break;
    5587 
    5588   case 71:
    5589 
    5590 /* Line 1806 of yacc.c  */
    5591 #line 482 "parser.yy"
    5592     { (yyval.en) = new CompositeExprNode2( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
    5593     break;
    5594 
    5595   case 72:
    5596 
    5597 /* Line 1806 of yacc.c  */
    5598 #line 484 "parser.yy"
    5599     { (yyval.en) = new CompositeExprNode2( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
    5600     break;
    5601 
    5602   case 74:
    5603 
    5604 /* Line 1806 of yacc.c  */
    5605 #line 490 "parser.yy"
    5606     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5607     break;
    5608 
    5609   case 75:
    5610 
    5611 /* Line 1806 of yacc.c  */
    5612 #line 492 "parser.yy"
    5613     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5614     break;
    5615 
    5616   case 76:
    5617 
    5618 /* Line 1806 of yacc.c  */
    5619 #line 494 "parser.yy"
    5620     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5621     break;
    5622 
    5623   case 78:
    5624 
    5625 /* Line 1806 of yacc.c  */
    5626 #line 500 "parser.yy"
    5627     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5628     break;
    5629 
    5630   case 79:
    5631 
    5632 /* Line 1806 of yacc.c  */
    5633 #line 502 "parser.yy"
    5634     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5635     break;
    5636 
    5637   case 81:
    5638 
    5639 /* Line 1806 of yacc.c  */
    5640 #line 508 "parser.yy"
    5641     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5642     break;
    5643 
    5644   case 82:
    5645 
    5646 /* Line 1806 of yacc.c  */
    5647 #line 510 "parser.yy"
    5648     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5649     break;
    5650 
    5651   case 84:
    5652 
    5653 /* Line 1806 of yacc.c  */
    5654 #line 516 "parser.yy"
    5655     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5656     break;
    5657 
    5658   case 85:
    5659 
    5660 /* Line 1806 of yacc.c  */
    5661 #line 518 "parser.yy"
    5662     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5663     break;
    5664 
    5665   case 86:
    5666 
    5667 /* Line 1806 of yacc.c  */
    5668 #line 520 "parser.yy"
    5669     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5670     break;
    5671 
    5672   case 87:
    5673 
    5674 /* Line 1806 of yacc.c  */
    5675 #line 522 "parser.yy"
    5676     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5677     break;
    5678 
    5679   case 89:
    5680 
    5681 /* Line 1806 of yacc.c  */
    5682 #line 528 "parser.yy"
    5683     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5684     break;
    5685 
    5686   case 90:
    5687 
    5688 /* Line 1806 of yacc.c  */
    5689 #line 530 "parser.yy"
    5690     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5691     break;
    5692 
    5693   case 92:
    5694 
    5695 /* Line 1806 of yacc.c  */
    5696 #line 536 "parser.yy"
    5697     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5698     break;
    5699 
    5700   case 94:
    5701 
    5702 /* Line 1806 of yacc.c  */
    5703 #line 542 "parser.yy"
    5704     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5705     break;
    5706 
    5707   case 96:
    5708 
    5709 /* Line 1806 of yacc.c  */
    5710 #line 548 "parser.yy"
    5711     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5712     break;
    5713 
    5714   case 98:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 554 "parser.yy"
    5718     { (yyval.en) = new CompositeExprNode2( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    5719     break;
    5720 
    5721   case 100:
    5722 
    5723 /* Line 1806 of yacc.c  */
    5724 #line 560 "parser.yy"
    5725     { (yyval.en) = new CompositeExprNode2( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    5726     break;
    5727 
    5728   case 102:
    5729 
    5730 /* Line 1806 of yacc.c  */
    5731 #line 567 "parser.yy"
    5732     { (yyval.en) = new CompositeExprNode2( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5733     break;
    5734 
    5735   case 103:
    5736 
    5737 /* Line 1806 of yacc.c  */
    5738 #line 569 "parser.yy"
    5739     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5740     break;
    5741 
    5742   case 104:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 571 "parser.yy"
    5746     { (yyval.en) = new CompositeExprNode2( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5747     break;
    5748 
    5749   case 107:
    5750 
    5751 /* Line 1806 of yacc.c  */
    5752 #line 582 "parser.yy"
    5753     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5754     break;
    5755 
    5756   case 108:
    5757 
    5758 /* Line 1806 of yacc.c  */
    5759 #line 584 "parser.yy"
    5760     { (yyval.en) = new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5761     break;
    5762 
    5763   case 109:
    5764 
    5765 /* Line 1806 of yacc.c  */
    5766 #line 586 "parser.yy"
    5767     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5768     break;
    5769 
    5770   case 110:
    5771 
    5772 /* Line 1806 of yacc.c  */
    5773 #line 591 "parser.yy"
    5774     { (yyval.en) = new NullExprNode; }
    5775     break;
    5776 
    5777   case 112:
    5778 
    5779 /* Line 1806 of yacc.c  */
    5780 #line 599 "parser.yy"
    5781     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5782     break;
    5783 
    5784   case 113:
    5785 
    5786 /* Line 1806 of yacc.c  */
    5787 #line 601 "parser.yy"
    5788     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    5789     break;
    5790 
    5791   case 114:
    5792 
    5793 /* Line 1806 of yacc.c  */
    5794 #line 603 "parser.yy"
    5795     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5796     break;
    5797 
    5798   case 115:
    5799 
    5800 /* Line 1806 of yacc.c  */
    5801 #line 605 "parser.yy"
    5802     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    5803     break;
    5804 
    5805   case 117:
    5806 
    5807 /* Line 1806 of yacc.c  */
    5808 #line 611 "parser.yy"
    5809     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5810     break;
    5811 
    5812   case 118:
    5813 
    5814 /* Line 1806 of yacc.c  */
    5815 #line 615 "parser.yy"
    5816     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5817     break;
    5818 
    5819   case 119:
    5820 
    5821 /* Line 1806 of yacc.c  */
    5822 #line 616 "parser.yy"
    5823     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5824     break;
    5825 
    5826   case 120:
    5827 
    5828 /* Line 1806 of yacc.c  */
    5829 #line 617 "parser.yy"
    5830     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5831     break;
    5832 
    5833   case 121:
    5834 
    5835 /* Line 1806 of yacc.c  */
    5836 #line 618 "parser.yy"
    5837     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5838     break;
    5839 
    5840   case 122:
    5841 
    5842 /* Line 1806 of yacc.c  */
    5843 #line 619 "parser.yy"
    5844     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5845     break;
    5846 
    5847   case 123:
    5848 
    5849 /* Line 1806 of yacc.c  */
    5850 #line 620 "parser.yy"
    5851     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5852     break;
    5853 
    5854   case 124:
    5855 
    5856 /* Line 1806 of yacc.c  */
    5857 #line 621 "parser.yy"
    5858     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5859     break;
    5860 
    58615612  case 125:
    58625613
    58635614/* Line 1806 of yacc.c  */
    5864 #line 622 "parser.yy"
    5865     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5615#line 643 "parser.yy"
     5616    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    58665617    break;
    58675618
     
    58695620
    58705621/* Line 1806 of yacc.c  */
    5871 #line 623 "parser.yy"
    5872     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5873     break;
    5874 
    5875   case 127:
    5876 
    5877 /* Line 1806 of yacc.c  */
    5878 #line 624 "parser.yy"
    5879     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    5880     break;
    5881 
    5882   case 129:
    5883 
    5884 /* Line 1806 of yacc.c  */
    5885 #line 631 "parser.yy"
    5886     { (yyval.en) = new CompositeExprNode2( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5622#line 648 "parser.yy"
     5623    { (yyval.en) = 0; }
    58875624    break;
    58885625
     
    58905627
    58915628/* Line 1806 of yacc.c  */
    5892 #line 636 "parser.yy"
    5893     { (yyval.en) = 0; }
    5894     break;
    5895 
    5896   case 134:
    5897 
    5898 /* Line 1806 of yacc.c  */
    5899 #line 645 "parser.yy"
     5629#line 657 "parser.yy"
    59005630    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    59015631    break;
    59025632
    5903   case 140:
    5904 
    5905 /* Line 1806 of yacc.c  */
    5906 #line 652 "parser.yy"
     5633  case 136:
     5634
     5635/* Line 1806 of yacc.c  */
     5636#line 664 "parser.yy"
    59075637    {
    5908                         Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    5909                         (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    5910                                 (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
     5638                        Token fn;
     5639                        fn.str = new std::string( "^?{}" ); // location undefined
     5640                        (yyval.sn) = new StatementNode( StatementNode::Exp, new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ), 0 );
    59115641                }
    59125642    break;
    59135643
    5914   case 141:
    5915 
    5916 /* Line 1806 of yacc.c  */
    5917 #line 662 "parser.yy"
     5644  case 137:
     5645
     5646/* Line 1806 of yacc.c  */
     5647#line 674 "parser.yy"
    59185648    {
    59195649                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    59215651    break;
    59225652
     5653  case 138:
     5654
     5655/* Line 1806 of yacc.c  */
     5656#line 681 "parser.yy"
     5657    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5658    break;
     5659
     5660  case 139:
     5661
     5662/* Line 1806 of yacc.c  */
     5663#line 688 "parser.yy"
     5664    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     5665    break;
     5666
     5667  case 141:
     5668
     5669/* Line 1806 of yacc.c  */
     5670#line 694 "parser.yy"
     5671    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5672    break;
     5673
    59235674  case 142:
    59245675
    59255676/* Line 1806 of yacc.c  */
    5926 #line 669 "parser.yy"
    5927     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5677#line 699 "parser.yy"
     5678    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    59285679    break;
    59295680
     
    59315682
    59325683/* Line 1806 of yacc.c  */
    5933 #line 676 "parser.yy"
    5934     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    5935     break;
    5936 
    5937   case 145:
    5938 
    5939 /* Line 1806 of yacc.c  */
    5940 #line 682 "parser.yy"
    5941     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5942     break;
    5943 
    5944   case 146:
    5945 
    5946 /* Line 1806 of yacc.c  */
    5947 #line 687 "parser.yy"
    5948     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    5949     break;
    5950 
    5951   case 147:
    5952 
    5953 /* Line 1806 of yacc.c  */
    5954 #line 689 "parser.yy"
     5684#line 701 "parser.yy"
    59555685    {   // mark all fields in list
    59565686                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    59605690    break;
    59615691
     5692  case 144:
     5693
     5694/* Line 1806 of yacc.c  */
     5695#line 707 "parser.yy"
     5696    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5697    break;
     5698
     5699  case 147:
     5700
     5701/* Line 1806 of yacc.c  */
     5702#line 714 "parser.yy"
     5703    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5704    break;
     5705
    59625706  case 148:
    59635707
    59645708/* Line 1806 of yacc.c  */
    5965 #line 695 "parser.yy"
    5966     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5709#line 719 "parser.yy"
     5710    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5711    break;
     5712
     5713  case 149:
     5714
     5715/* Line 1806 of yacc.c  */
     5716#line 726 "parser.yy"
     5717    { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     5718    break;
     5719
     5720  case 150:
     5721
     5722/* Line 1806 of yacc.c  */
     5723#line 729 "parser.yy"
     5724    { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    59675725    break;
    59685726
     
    59705728
    59715729/* Line 1806 of yacc.c  */
    5972 #line 702 "parser.yy"
    5973     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5730#line 732 "parser.yy"
     5731    { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59745732    break;
    59755733
     
    59775735
    59785736/* Line 1806 of yacc.c  */
    5979 #line 707 "parser.yy"
    5980     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    5981     break;
    5982 
    5983   case 153:
    5984 
    5985 /* Line 1806 of yacc.c  */
    5986 #line 713 "parser.yy"
    5987     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5988     break;
    5989 
    5990   case 154:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 715 "parser.yy"
    5994     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    5995     break;
    5996 
    5997   case 155:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 717 "parser.yy"
    6001     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    6002     break;
    6003 
    6004   case 156:
    6005 
    6006 /* Line 1806 of yacc.c  */
    6007 #line 719 "parser.yy"
     5737#line 734 "parser.yy"
    60085738    {
    6009                         StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     5739                        StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    60105740                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    60115741                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    60175747    break;
    60185748
    6019   case 157:
    6020 
    6021 /* Line 1806 of yacc.c  */
    6022 #line 729 "parser.yy"
    6023     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    6024     break;
    6025 
    6026   case 158:
    6027 
    6028 /* Line 1806 of yacc.c  */
    6029 #line 731 "parser.yy"
     5749  case 153:
     5750
     5751/* Line 1806 of yacc.c  */
     5752#line 745 "parser.yy"
     5753    { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5754    break;
     5755
     5756  case 154:
     5757
     5758/* Line 1806 of yacc.c  */
     5759#line 747 "parser.yy"
    60305760    {
    6031                         StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     5761                        //StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     5762                        StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    60325763                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
    60335764                }
    60345765    break;
    60355766
     5767  case 155:
     5768
     5769/* Line 1806 of yacc.c  */
     5770#line 758 "parser.yy"
     5771    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5772    break;
     5773
     5774  case 156:
     5775
     5776/* Line 1806 of yacc.c  */
     5777#line 760 "parser.yy"
     5778    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5779    break;
     5780
     5781  case 158:
     5782
     5783/* Line 1806 of yacc.c  */
     5784#line 765 "parser.yy"
     5785    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
     5786    break;
     5787
    60365788  case 159:
    60375789
    60385790/* Line 1806 of yacc.c  */
    6039 #line 741 "parser.yy"
    6040     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5791#line 767 "parser.yy"
     5792    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
    60415793    break;
    60425794
     
    60445796
    60455797/* Line 1806 of yacc.c  */
    6046 #line 743 "parser.yy"
    6047     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Range, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    6048     break;
    6049 
    6050   case 162:
    6051 
    6052 /* Line 1806 of yacc.c  */
    6053 #line 748 "parser.yy"
    6054     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
     5798#line 771 "parser.yy"
     5799    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5800    break;
     5801
     5802  case 161:
     5803
     5804/* Line 1806 of yacc.c  */
     5805#line 772 "parser.yy"
     5806    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    60555807    break;
    60565808
     
    60585810
    60595811/* Line 1806 of yacc.c  */
    6060 #line 750 "parser.yy"
    6061     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
     5812#line 778 "parser.yy"
     5813    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    60625814    break;
    60635815
     
    60655817
    60665818/* Line 1806 of yacc.c  */
    6067 #line 754 "parser.yy"
    6068     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5819#line 782 "parser.yy"
     5820    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    60695821    break;
    60705822
     
    60725824
    60735825/* Line 1806 of yacc.c  */
    6074 #line 755 "parser.yy"
    6075     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     5826#line 787 "parser.yy"
     5827    { (yyval.sn) = 0; }
    60765828    break;
    60775829
     
    60795831
    60805832/* Line 1806 of yacc.c  */
    6081 #line 761 "parser.yy"
    6082     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5833#line 793 "parser.yy"
     5834    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    60835835    break;
    60845836
     
    60865838
    60875839/* Line 1806 of yacc.c  */
    6088 #line 765 "parser.yy"
    6089     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     5840#line 795 "parser.yy"
     5841    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    60905842    break;
    60915843
     
    60935845
    60945846/* Line 1806 of yacc.c  */
    6095 #line 770 "parser.yy"
     5847#line 800 "parser.yy"
    60965848    { (yyval.sn) = 0; }
    60975849    break;
     
    61005852
    61015853/* Line 1806 of yacc.c  */
    6102 #line 776 "parser.yy"
    6103     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     5854#line 806 "parser.yy"
     5855    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    61045856    break;
    61055857
     
    61075859
    61085860/* Line 1806 of yacc.c  */
    6109 #line 778 "parser.yy"
    6110     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5861#line 808 "parser.yy"
     5862    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    61115863    break;
    61125864
     
    61145866
    61155867/* Line 1806 of yacc.c  */
    6116 #line 783 "parser.yy"
     5868#line 810 "parser.yy"
     5869    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5870    break;
     5871
     5872  case 174:
     5873
     5874/* Line 1806 of yacc.c  */
     5875#line 812 "parser.yy"
     5876    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5877    break;
     5878
     5879  case 175:
     5880
     5881/* Line 1806 of yacc.c  */
     5882#line 817 "parser.yy"
     5883    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     5884    break;
     5885
     5886  case 177:
     5887
     5888/* Line 1806 of yacc.c  */
     5889#line 823 "parser.yy"
    61175890    { (yyval.sn) = 0; }
    61185891    break;
    61195892
    6120   case 175:
    6121 
    6122 /* Line 1806 of yacc.c  */
    6123 #line 789 "parser.yy"
    6124     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    6125     break;
    6126 
    6127   case 176:
    6128 
    6129 /* Line 1806 of yacc.c  */
    6130 #line 791 "parser.yy"
    6131     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    6132     break;
    6133 
    6134   case 177:
    6135 
    6136 /* Line 1806 of yacc.c  */
    6137 #line 793 "parser.yy"
    6138     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    6139     break;
    6140 
    61415893  case 178:
    61425894
    61435895/* Line 1806 of yacc.c  */
    6144 #line 795 "parser.yy"
    6145     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5896#line 825 "parser.yy"
     5897    { (yyval.sn) = 0; }
    61465898    break;
    61475899
     
    61495901
    61505902/* Line 1806 of yacc.c  */
    6151 #line 800 "parser.yy"
     5903#line 830 "parser.yy"
     5904    { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5905    break;
     5906
     5907  case 180:
     5908
     5909/* Line 1806 of yacc.c  */
     5910#line 832 "parser.yy"
     5911    { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
     5912    break;
     5913
     5914  case 181:
     5915
     5916/* Line 1806 of yacc.c  */
     5917#line 834 "parser.yy"
     5918    { (yyval.sn) = new StatementNode2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5919    break;
     5920
     5921  case 182:
     5922
     5923/* Line 1806 of yacc.c  */
     5924#line 839 "parser.yy"
     5925    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5926    break;
     5927
     5928  case 183:
     5929
     5930/* Line 1806 of yacc.c  */
     5931#line 841 "parser.yy"
     5932    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5933    break;
     5934
     5935  case 184:
     5936
     5937/* Line 1806 of yacc.c  */
     5938#line 846 "parser.yy"
     5939    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     5940    break;
     5941
     5942  case 185:
     5943
     5944/* Line 1806 of yacc.c  */
     5945#line 850 "parser.yy"
     5946    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     5947    break;
     5948
     5949  case 186:
     5950
     5951/* Line 1806 of yacc.c  */
     5952#line 853 "parser.yy"
     5953    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     5954    break;
     5955
     5956  case 187:
     5957
     5958/* Line 1806 of yacc.c  */
     5959#line 857 "parser.yy"
     5960    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     5961    break;
     5962
     5963  case 188:
     5964
     5965/* Line 1806 of yacc.c  */
     5966#line 860 "parser.yy"
    61525967    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    61535968    break;
    61545969
    6155   case 181:
    6156 
    6157 /* Line 1806 of yacc.c  */
    6158 #line 806 "parser.yy"
    6159     { (yyval.sn) = 0; }
    6160     break;
    6161 
    6162   case 182:
    6163 
    6164 /* Line 1806 of yacc.c  */
    6165 #line 808 "parser.yy"
    6166     { (yyval.sn) = 0; }
    6167     break;
    6168 
    6169   case 183:
    6170 
    6171 /* Line 1806 of yacc.c  */
    6172 #line 813 "parser.yy"
    6173     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    6174     break;
    6175 
    6176   case 184:
    6177 
    6178 /* Line 1806 of yacc.c  */
    6179 #line 815 "parser.yy"
    6180     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    6181     break;
    6182 
    6183   case 185:
    6184 
    6185 /* Line 1806 of yacc.c  */
    6186 #line 817 "parser.yy"
    6187     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    6188     break;
    6189 
    6190   case 186:
    6191 
    6192 /* Line 1806 of yacc.c  */
    6193 #line 822 "parser.yy"
    6194     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    6195     break;
    6196 
    6197   case 187:
    6198 
    6199 /* Line 1806 of yacc.c  */
    6200 #line 824 "parser.yy"
    6201     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    6202     break;
    6203 
    6204   case 188:
    6205 
    6206 /* Line 1806 of yacc.c  */
    6207 #line 829 "parser.yy"
    6208     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    6209     break;
    6210 
    62115970  case 189:
    62125971
    62135972/* Line 1806 of yacc.c  */
    6214 #line 833 "parser.yy"
    6215     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     5973#line 864 "parser.yy"
     5974    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    62165975    break;
    62175976
     
    62195978
    62205979/* Line 1806 of yacc.c  */
    6221 #line 836 "parser.yy"
    6222     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     5980#line 866 "parser.yy"
     5981    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    62235982    break;
    62245983
     
    62265985
    62275986/* Line 1806 of yacc.c  */
    6228 #line 840 "parser.yy"
    6229     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     5987#line 868 "parser.yy"
     5988    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    62305989    break;
    62315990
     
    62335992
    62345993/* Line 1806 of yacc.c  */
    6235 #line 843 "parser.yy"
    6236     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     5994#line 872 "parser.yy"
     5995    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    62375996    break;
    62385997
     
    62405999
    62416000/* Line 1806 of yacc.c  */
    6242 #line 847 "parser.yy"
    6243     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     6001#line 874 "parser.yy"
     6002    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    62446003    break;
    62456004
     
    62476006
    62486007/* Line 1806 of yacc.c  */
    6249 #line 849 "parser.yy"
    6250     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     6008#line 881 "parser.yy"
     6009    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    62516010    break;
    62526011
     
    62546013
    62556014/* Line 1806 of yacc.c  */
    6256 #line 851 "parser.yy"
    6257     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6015#line 883 "parser.yy"
     6016    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    62586017    break;
    62596018
     
    62616020
    62626021/* Line 1806 of yacc.c  */
    6263 #line 855 "parser.yy"
    6264     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    6265     break;
    6266 
    6267   case 197:
    6268 
    6269 /* Line 1806 of yacc.c  */
    6270 #line 857 "parser.yy"
    6271     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    6272     break;
    6273 
    6274   case 198:
    6275 
    6276 /* Line 1806 of yacc.c  */
    6277 #line 864 "parser.yy"
    6278     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6279     break;
    6280 
    6281   case 199:
    6282 
    6283 /* Line 1806 of yacc.c  */
    6284 #line 866 "parser.yy"
    6285     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6286     break;
    6287 
    6288   case 200:
    6289 
    6290 /* Line 1806 of yacc.c  */
    6291 #line 868 "parser.yy"
     6022#line 885 "parser.yy"
    62926023    {
    62936024                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    62966027    break;
    62976028
     6029  case 198:
     6030
     6031/* Line 1806 of yacc.c  */
     6032#line 896 "parser.yy"
     6033    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6034    break;
     6035
     6036  case 199:
     6037
     6038/* Line 1806 of yacc.c  */
     6039#line 898 "parser.yy"
     6040    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6041    break;
     6042
     6043  case 200:
     6044
     6045/* Line 1806 of yacc.c  */
     6046#line 900 "parser.yy"
     6047    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6048    break;
     6049
     6050  case 201:
     6051
     6052/* Line 1806 of yacc.c  */
     6053#line 902 "parser.yy"
     6054    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6055    break;
     6056
    62986057  case 202:
    62996058
    63006059/* Line 1806 of yacc.c  */
    6301 #line 879 "parser.yy"
    6302     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6060#line 907 "parser.yy"
     6061    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    63036062    break;
    63046063
     
    63066065
    63076066/* Line 1806 of yacc.c  */
    6308 #line 881 "parser.yy"
    6309     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6067#line 909 "parser.yy"
     6068    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    63106069    break;
    63116070
     
    63136072
    63146073/* Line 1806 of yacc.c  */
    6315 #line 883 "parser.yy"
    6316     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6074#line 911 "parser.yy"
     6075    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    63176076    break;
    63186077
     
    63206079
    63216080/* Line 1806 of yacc.c  */
    6322 #line 885 "parser.yy"
    6323     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6081#line 913 "parser.yy"
     6082    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    63246083    break;
    63256084
     
    63276086
    63286087/* Line 1806 of yacc.c  */
    6329 #line 890 "parser.yy"
    6330     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6331     break;
    6332 
    6333   case 207:
    6334 
    6335 /* Line 1806 of yacc.c  */
    6336 #line 892 "parser.yy"
    6337     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6338     break;
    6339 
    6340   case 208:
    6341 
    6342 /* Line 1806 of yacc.c  */
    6343 #line 894 "parser.yy"
    6344     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6345     break;
    6346 
    6347   case 209:
    6348 
    6349 /* Line 1806 of yacc.c  */
    6350 #line 896 "parser.yy"
    6351     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6352     break;
    6353 
    6354   case 210:
    6355 
    6356 /* Line 1806 of yacc.c  */
    6357 #line 901 "parser.yy"
     6088#line 918 "parser.yy"
    63586089    {
    63596090                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    63626093    break;
    63636094
    6364   case 212:
    6365 
    6366 /* Line 1806 of yacc.c  */
    6367 #line 915 "parser.yy"
     6095  case 208:
     6096
     6097/* Line 1806 of yacc.c  */
     6098#line 932 "parser.yy"
    63686099    {
    63696100                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63726103    break;
    63736104
    6374   case 213:
    6375 
    6376 /* Line 1806 of yacc.c  */
    6377 #line 920 "parser.yy"
     6105  case 209:
     6106
     6107/* Line 1806 of yacc.c  */
     6108#line 937 "parser.yy"
    63786109    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    63796110    break;
    63806111
    6381   case 214:
    6382 
    6383 /* Line 1806 of yacc.c  */
    6384 #line 922 "parser.yy"
     6112  case 210:
     6113
     6114/* Line 1806 of yacc.c  */
     6115#line 939 "parser.yy"
    63856116    {
    63866117                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63896120    break;
    63906121
     6122  case 212:
     6123
     6124/* Line 1806 of yacc.c  */
     6125#line 948 "parser.yy"
     6126    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6127    break;
     6128
     6129  case 213:
     6130
     6131/* Line 1806 of yacc.c  */
     6132#line 950 "parser.yy"
     6133    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6134    break;
     6135
     6136  case 214:
     6137
     6138/* Line 1806 of yacc.c  */
     6139#line 952 "parser.yy"
     6140    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6141    break;
     6142
     6143  case 215:
     6144
     6145/* Line 1806 of yacc.c  */
     6146#line 954 "parser.yy"
     6147    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ); }
     6148    break;
     6149
    63916150  case 216:
    63926151
    63936152/* Line 1806 of yacc.c  */
    6394 #line 931 "parser.yy"
    6395     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6153#line 956 "parser.yy"
     6154    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
    63966155    break;
    63976156
     
    63996158
    64006159/* Line 1806 of yacc.c  */
    6401 #line 933 "parser.yy"
    6402     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6160#line 961 "parser.yy"
     6161    { (yyval.flag) = false; }
    64036162    break;
    64046163
     
    64066165
    64076166/* Line 1806 of yacc.c  */
    6408 #line 935 "parser.yy"
    6409     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6167#line 963 "parser.yy"
     6168    { (yyval.flag) = true; }
    64106169    break;
    64116170
     
    64136172
    64146173/* Line 1806 of yacc.c  */
    6415 #line 937 "parser.yy"
    6416     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
    6417     break;
    6418 
    6419   case 220:
    6420 
    6421 /* Line 1806 of yacc.c  */
    6422 #line 939 "parser.yy"
    6423     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
    6424     break;
    6425 
    6426   case 221:
    6427 
    6428 /* Line 1806 of yacc.c  */
    6429 #line 944 "parser.yy"
    6430     { (yyval.flag) = false; }
     6174#line 968 "parser.yy"
     6175    { (yyval.en) = 0; }
    64316176    break;
    64326177
     
    64346179
    64356180/* Line 1806 of yacc.c  */
    6436 #line 946 "parser.yy"
    6437     { (yyval.flag) = true; }
     6181#line 975 "parser.yy"
     6182    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    64386183    break;
    64396184
     
    64416186
    64426187/* Line 1806 of yacc.c  */
    6443 #line 951 "parser.yy"
     6188#line 980 "parser.yy"
     6189    { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     6190    break;
     6191
     6192  case 224:
     6193
     6194/* Line 1806 of yacc.c  */
     6195#line 982 "parser.yy"
     6196    { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6197    break;
     6198
     6199  case 225:
     6200
     6201/* Line 1806 of yacc.c  */
     6202#line 987 "parser.yy"
    64446203    { (yyval.en) = 0; }
    64456204    break;
     
    64486207
    64496208/* Line 1806 of yacc.c  */
    6450 #line 958 "parser.yy"
    6451     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6209#line 989 "parser.yy"
     6210    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    64526211    break;
    64536212
     
    64556214
    64566215/* Line 1806 of yacc.c  */
    6457 #line 963 "parser.yy"
    6458     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6216#line 991 "parser.yy"
     6217    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    64596218    break;
    64606219
     
    64626221
    64636222/* Line 1806 of yacc.c  */
    6464 #line 965 "parser.yy"
    6465     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     6223#line 996 "parser.yy"
     6224    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    64666225    break;
    64676226
     
    64696228
    64706229/* Line 1806 of yacc.c  */
    6471 #line 970 "parser.yy"
    6472     { (yyval.constant) = 0; }
     6230#line 998 "parser.yy"
     6231    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    64736232    break;
    64746233
     
    64766235
    64776236/* Line 1806 of yacc.c  */
    6478 #line 972 "parser.yy"
    6479     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    6480     break;
    6481 
    6482   case 231:
    6483 
    6484 /* Line 1806 of yacc.c  */
    6485 #line 974 "parser.yy"
    6486     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    6487     break;
    6488 
    6489   case 232:
    6490 
    6491 /* Line 1806 of yacc.c  */
    6492 #line 979 "parser.yy"
    6493     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     6237#line 1005 "parser.yy"
     6238    { (yyval.decl) = 0; }
    64946239    break;
    64956240
     
    64976242
    64986243/* Line 1806 of yacc.c  */
    6499 #line 981 "parser.yy"
    6500     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6244#line 1012 "parser.yy"
     6245    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    65016246    break;
    65026247
     
    65046249
    65056250/* Line 1806 of yacc.c  */
    6506 #line 988 "parser.yy"
     6251#line 1017 "parser.yy"
    65076252    { (yyval.decl) = 0; }
    65086253    break;
     
    65116256
    65126257/* Line 1806 of yacc.c  */
    6513 #line 995 "parser.yy"
     6258#line 1024 "parser.yy"
    65146259    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    65156260    break;
    65166261
    6517   case 238:
    6518 
    6519 /* Line 1806 of yacc.c  */
    6520 #line 1000 "parser.yy"
    6521     { (yyval.decl) = 0; }
    6522     break;
    6523 
    6524   case 241:
    6525 
    6526 /* Line 1806 of yacc.c  */
    6527 #line 1007 "parser.yy"
    6528     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6529     break;
    6530 
    6531   case 246:
    6532 
    6533 /* Line 1806 of yacc.c  */
    6534 #line 1021 "parser.yy"
     6262  case 242:
     6263
     6264/* Line 1806 of yacc.c  */
     6265#line 1038 "parser.yy"
    65356266    {}
    65366267    break;
    65376268
    6538   case 247:
    6539 
    6540 /* Line 1806 of yacc.c  */
    6541 #line 1022 "parser.yy"
     6269  case 243:
     6270
     6271/* Line 1806 of yacc.c  */
     6272#line 1039 "parser.yy"
    65426273    {}
    65436274    break;
    65446275
    6545   case 255:
    6546 
    6547 /* Line 1806 of yacc.c  */
    6548 #line 1051 "parser.yy"
     6276  case 251:
     6277
     6278/* Line 1806 of yacc.c  */
     6279#line 1068 "parser.yy"
    65496280    {
    65506281                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65536284    break;
    65546285
    6555   case 256:
    6556 
    6557 /* Line 1806 of yacc.c  */
    6558 #line 1058 "parser.yy"
     6286  case 252:
     6287
     6288/* Line 1806 of yacc.c  */
     6289#line 1075 "parser.yy"
    65596290    {
    65606291                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65636294    break;
    65646295
    6565   case 257:
    6566 
    6567 /* Line 1806 of yacc.c  */
    6568 #line 1063 "parser.yy"
     6296  case 253:
     6297
     6298/* Line 1806 of yacc.c  */
     6299#line 1080 "parser.yy"
    65696300    {
    65706301                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    65736304    break;
    65746305
    6575   case 258:
    6576 
    6577 /* Line 1806 of yacc.c  */
    6578 #line 1073 "parser.yy"
     6306  case 254:
     6307
     6308/* Line 1806 of yacc.c  */
     6309#line 1090 "parser.yy"
    65796310    {
    65806311                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    65836314    break;
    65846315
    6585   case 259:
    6586 
    6587 /* Line 1806 of yacc.c  */
    6588 #line 1078 "parser.yy"
     6316  case 255:
     6317
     6318/* Line 1806 of yacc.c  */
     6319#line 1095 "parser.yy"
    65896320    {
    65906321                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    65936324    break;
    65946325
    6595   case 260:
    6596 
    6597 /* Line 1806 of yacc.c  */
    6598 #line 1083 "parser.yy"
     6326  case 256:
     6327
     6328/* Line 1806 of yacc.c  */
     6329#line 1100 "parser.yy"
    65996330    {
    66006331                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    66036334    break;
    66046335
    6605   case 261:
    6606 
    6607 /* Line 1806 of yacc.c  */
    6608 #line 1091 "parser.yy"
     6336  case 257:
     6337
     6338/* Line 1806 of yacc.c  */
     6339#line 1108 "parser.yy"
    66096340    {
    66106341                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66136344    break;
    66146345
    6615   case 262:
    6616 
    6617 /* Line 1806 of yacc.c  */
    6618 #line 1096 "parser.yy"
     6346  case 258:
     6347
     6348/* Line 1806 of yacc.c  */
     6349#line 1113 "parser.yy"
    66196350    {
    66206351                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66236354    break;
    66246355
    6625   case 263:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1101 "parser.yy"
     6356  case 259:
     6357
     6358/* Line 1806 of yacc.c  */
     6359#line 1118 "parser.yy"
    66296360    {
    66306361                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66336364    break;
    66346365
    6635   case 264:
    6636 
    6637 /* Line 1806 of yacc.c  */
    6638 #line 1106 "parser.yy"
     6366  case 260:
     6367
     6368/* Line 1806 of yacc.c  */
     6369#line 1123 "parser.yy"
    66396370    {
    66406371                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66436374    break;
    66446375
    6645   case 265:
    6646 
    6647 /* Line 1806 of yacc.c  */
    6648 #line 1111 "parser.yy"
     6376  case 261:
     6377
     6378/* Line 1806 of yacc.c  */
     6379#line 1128 "parser.yy"
    66496380    {
    66506381                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    66536384    break;
    66546385
    6655   case 266:
    6656 
    6657 /* Line 1806 of yacc.c  */
    6658 #line 1119 "parser.yy"
     6386  case 262:
     6387
     6388/* Line 1806 of yacc.c  */
     6389#line 1136 "parser.yy"
    66596390    {
    66606391                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    66626393    break;
    66636394
    6664   case 267:
    6665 
    6666 /* Line 1806 of yacc.c  */
    6667 #line 1142 "parser.yy"
     6395  case 263:
     6396
     6397/* Line 1806 of yacc.c  */
     6398#line 1159 "parser.yy"
    66686399    {
    66696400                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    66716402    break;
    66726403
    6673   case 268:
    6674 
    6675 /* Line 1806 of yacc.c  */
    6676 #line 1146 "parser.yy"
     6404  case 264:
     6405
     6406/* Line 1806 of yacc.c  */
     6407#line 1163 "parser.yy"
    66776408    {
    66786409                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    66806411    break;
    66816412
    6682   case 269:
    6683 
    6684 /* Line 1806 of yacc.c  */
    6685 #line 1153 "parser.yy"
     6413  case 265:
     6414
     6415/* Line 1806 of yacc.c  */
     6416#line 1170 "parser.yy"
    66866417    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    66876418    break;
    66886419
    6689   case 270:
    6690 
    6691 /* Line 1806 of yacc.c  */
    6692 #line 1157 "parser.yy"
     6420  case 266:
     6421
     6422/* Line 1806 of yacc.c  */
     6423#line 1174 "parser.yy"
    66936424    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    66946425    break;
    66956426
    6696   case 271:
    6697 
    6698 /* Line 1806 of yacc.c  */
    6699 #line 1162 "parser.yy"
     6427  case 267:
     6428
     6429/* Line 1806 of yacc.c  */
     6430#line 1179 "parser.yy"
    67006431    {
    67016432                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67046435    break;
    67056436
    6706   case 272:
    6707 
    6708 /* Line 1806 of yacc.c  */
    6709 #line 1167 "parser.yy"
     6437  case 268:
     6438
     6439/* Line 1806 of yacc.c  */
     6440#line 1184 "parser.yy"
    67106441    {
    67116442                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67146445    break;
    67156446
    6716   case 273:
    6717 
    6718 /* Line 1806 of yacc.c  */
    6719 #line 1172 "parser.yy"
     6447  case 269:
     6448
     6449/* Line 1806 of yacc.c  */
     6450#line 1189 "parser.yy"
    67206451    {
    67216452                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    67246455    break;
    67256456
    6726   case 274:
    6727 
    6728 /* Line 1806 of yacc.c  */
    6729 #line 1183 "parser.yy"
     6457  case 270:
     6458
     6459/* Line 1806 of yacc.c  */
     6460#line 1200 "parser.yy"
    67306461    {
    67316462                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67346465    break;
    67356466
    6736   case 275:
    6737 
    6738 /* Line 1806 of yacc.c  */
    6739 #line 1188 "parser.yy"
     6467  case 271:
     6468
     6469/* Line 1806 of yacc.c  */
     6470#line 1205 "parser.yy"
    67406471    {
    67416472                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67446475    break;
    67456476
    6746   case 276:
    6747 
    6748 /* Line 1806 of yacc.c  */
    6749 #line 1193 "parser.yy"
     6477  case 272:
     6478
     6479/* Line 1806 of yacc.c  */
     6480#line 1210 "parser.yy"
    67506481    {
    67516482                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67546485    break;
    67556486
    6756   case 277:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1198 "parser.yy"
     6487  case 273:
     6488
     6489/* Line 1806 of yacc.c  */
     6490#line 1215 "parser.yy"
    67606491    {
    67616492                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67646495    break;
    67656496
    6766   case 278:
    6767 
    6768 /* Line 1806 of yacc.c  */
    6769 #line 1203 "parser.yy"
     6497  case 274:
     6498
     6499/* Line 1806 of yacc.c  */
     6500#line 1220 "parser.yy"
    67706501    {
    67716502                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67746505    break;
    67756506
    6776   case 279:
    6777 
    6778 /* Line 1806 of yacc.c  */
    6779 #line 1212 "parser.yy"
     6507  case 275:
     6508
     6509/* Line 1806 of yacc.c  */
     6510#line 1229 "parser.yy"
    67806511    {
    67816512                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    67846515    break;
    67856516
    6786   case 280:
    6787 
    6788 /* Line 1806 of yacc.c  */
    6789 #line 1217 "parser.yy"
     6517  case 276:
     6518
     6519/* Line 1806 of yacc.c  */
     6520#line 1234 "parser.yy"
    67906521    {
    67916522                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    67946525    break;
    67956526
    6796   case 285:
    6797 
    6798 /* Line 1806 of yacc.c  */
    6799 #line 1234 "parser.yy"
     6527  case 281:
     6528
     6529/* Line 1806 of yacc.c  */
     6530#line 1251 "parser.yy"
    68006531    {
    68016532                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    68046535    break;
    68056536
    6806   case 286:
    6807 
    6808 /* Line 1806 of yacc.c  */
    6809 #line 1239 "parser.yy"
     6537  case 282:
     6538
     6539/* Line 1806 of yacc.c  */
     6540#line 1256 "parser.yy"
    68106541    {
    68116542                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    68146545    break;
    68156546
    6816   case 295:
    6817 
    6818 /* Line 1806 of yacc.c  */
    6819 #line 1261 "parser.yy"
     6547  case 291:
     6548
     6549/* Line 1806 of yacc.c  */
     6550#line 1278 "parser.yy"
    68206551    { (yyval.decl) = 0; }
    68216552    break;
    68226553
     6554  case 294:
     6555
     6556/* Line 1806 of yacc.c  */
     6557#line 1290 "parser.yy"
     6558    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6559    break;
     6560
     6561  case 297:
     6562
     6563/* Line 1806 of yacc.c  */
     6564#line 1301 "parser.yy"
     6565    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6566    break;
     6567
    68236568  case 298:
    68246569
    68256570/* Line 1806 of yacc.c  */
    6826 #line 1273 "parser.yy"
    6827     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6571#line 1303 "parser.yy"
     6572    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6573    break;
     6574
     6575  case 299:
     6576
     6577/* Line 1806 of yacc.c  */
     6578#line 1305 "parser.yy"
     6579    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6580    break;
     6581
     6582  case 300:
     6583
     6584/* Line 1806 of yacc.c  */
     6585#line 1307 "parser.yy"
     6586    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    68286587    break;
    68296588
     
    68316590
    68326591/* Line 1806 of yacc.c  */
    6833 #line 1284 "parser.yy"
    6834     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6592#line 1309 "parser.yy"
     6593    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    68356594    break;
    68366595
     
    68386597
    68396598/* Line 1806 of yacc.c  */
    6840 #line 1286 "parser.yy"
    6841     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    6842     break;
    6843 
    6844   case 303:
    6845 
    6846 /* Line 1806 of yacc.c  */
    6847 #line 1288 "parser.yy"
    6848     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6849     break;
    6850 
    6851   case 304:
    6852 
    6853 /* Line 1806 of yacc.c  */
    6854 #line 1290 "parser.yy"
    6855     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6856     break;
    6857 
    6858   case 305:
    6859 
    6860 /* Line 1806 of yacc.c  */
    6861 #line 1292 "parser.yy"
    6862     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6863     break;
    6864 
    6865   case 306:
    6866 
    6867 /* Line 1806 of yacc.c  */
    6868 #line 1294 "parser.yy"
     6599#line 1311 "parser.yy"
    68696600    {
    68706601                        typedefTable.enterScope();
     
    68726603    break;
    68736604
    6874   case 307:
    6875 
    6876 /* Line 1806 of yacc.c  */
    6877 #line 1298 "parser.yy"
     6605  case 303:
     6606
     6607/* Line 1806 of yacc.c  */
     6608#line 1315 "parser.yy"
    68786609    {
    68796610                        typedefTable.leaveScope();
     
    68826613    break;
    68836614
    6884   case 309:
    6885 
    6886 /* Line 1806 of yacc.c  */
    6887 #line 1307 "parser.yy"
     6615  case 305:
     6616
     6617/* Line 1806 of yacc.c  */
     6618#line 1324 "parser.yy"
    68886619    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68896620    break;
    68906621
     6622  case 306:
     6623
     6624/* Line 1806 of yacc.c  */
     6625#line 1326 "parser.yy"
     6626    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6627    break;
     6628
     6629  case 308:
     6630
     6631/* Line 1806 of yacc.c  */
     6632#line 1337 "parser.yy"
     6633    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6634    break;
     6635
    68916636  case 310:
    68926637
    68936638/* Line 1806 of yacc.c  */
    6894 #line 1309 "parser.yy"
     6639#line 1346 "parser.yy"
     6640    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6641    break;
     6642
     6643  case 311:
     6644
     6645/* Line 1806 of yacc.c  */
     6646#line 1348 "parser.yy"
     6647    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6648    break;
     6649
     6650  case 312:
     6651
     6652/* Line 1806 of yacc.c  */
     6653#line 1350 "parser.yy"
     6654    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6655    break;
     6656
     6657  case 313:
     6658
     6659/* Line 1806 of yacc.c  */
     6660#line 1352 "parser.yy"
     6661    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6662    break;
     6663
     6664  case 314:
     6665
     6666/* Line 1806 of yacc.c  */
     6667#line 1354 "parser.yy"
     6668    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6669    break;
     6670
     6671  case 315:
     6672
     6673/* Line 1806 of yacc.c  */
     6674#line 1356 "parser.yy"
     6675    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6676    break;
     6677
     6678  case 316:
     6679
     6680/* Line 1806 of yacc.c  */
     6681#line 1358 "parser.yy"
     6682    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6683    break;
     6684
     6685  case 317:
     6686
     6687/* Line 1806 of yacc.c  */
     6688#line 1360 "parser.yy"
     6689    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6690    break;
     6691
     6692  case 318:
     6693
     6694/* Line 1806 of yacc.c  */
     6695#line 1365 "parser.yy"
     6696    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6697    break;
     6698
     6699  case 319:
     6700
     6701/* Line 1806 of yacc.c  */
     6702#line 1367 "parser.yy"
     6703    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6704    break;
     6705
     6706  case 320:
     6707
     6708/* Line 1806 of yacc.c  */
     6709#line 1369 "parser.yy"
     6710    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6711    break;
     6712
     6713  case 321:
     6714
     6715/* Line 1806 of yacc.c  */
     6716#line 1371 "parser.yy"
     6717    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6718    break;
     6719
     6720  case 322:
     6721
     6722/* Line 1806 of yacc.c  */
     6723#line 1373 "parser.yy"
     6724    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6725    break;
     6726
     6727  case 323:
     6728
     6729/* Line 1806 of yacc.c  */
     6730#line 1375 "parser.yy"
     6731    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6732    break;
     6733
     6734  case 324:
     6735
     6736/* Line 1806 of yacc.c  */
     6737#line 1377 "parser.yy"
     6738    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6739    break;
     6740
     6741  case 325:
     6742
     6743/* Line 1806 of yacc.c  */
     6744#line 1379 "parser.yy"
     6745    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6746    break;
     6747
     6748  case 326:
     6749
     6750/* Line 1806 of yacc.c  */
     6751#line 1381 "parser.yy"
     6752    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6753    break;
     6754
     6755  case 327:
     6756
     6757/* Line 1806 of yacc.c  */
     6758#line 1383 "parser.yy"
     6759    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6760    break;
     6761
     6762  case 328:
     6763
     6764/* Line 1806 of yacc.c  */
     6765#line 1385 "parser.yy"
     6766    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6767    break;
     6768
     6769  case 329:
     6770
     6771/* Line 1806 of yacc.c  */
     6772#line 1387 "parser.yy"
     6773    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6774    break;
     6775
     6776  case 330:
     6777
     6778/* Line 1806 of yacc.c  */
     6779#line 1389 "parser.yy"
     6780    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6781    break;
     6782
     6783  case 332:
     6784
     6785/* Line 1806 of yacc.c  */
     6786#line 1396 "parser.yy"
     6787    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6788    break;
     6789
     6790  case 333:
     6791
     6792/* Line 1806 of yacc.c  */
     6793#line 1398 "parser.yy"
     6794    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6795    break;
     6796
     6797  case 334:
     6798
     6799/* Line 1806 of yacc.c  */
     6800#line 1400 "parser.yy"
    68956801    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68966802    break;
    68976803
    6898   case 312:
    6899 
    6900 /* Line 1806 of yacc.c  */
    6901 #line 1320 "parser.yy"
     6804  case 335:
     6805
     6806/* Line 1806 of yacc.c  */
     6807#line 1402 "parser.yy"
     6808    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6809    break;
     6810
     6811  case 337:
     6812
     6813/* Line 1806 of yacc.c  */
     6814#line 1408 "parser.yy"
     6815    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6816    break;
     6817
     6818  case 339:
     6819
     6820/* Line 1806 of yacc.c  */
     6821#line 1415 "parser.yy"
     6822    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6823    break;
     6824
     6825  case 340:
     6826
     6827/* Line 1806 of yacc.c  */
     6828#line 1417 "parser.yy"
    69026829    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69036830    break;
    69046831
    6905   case 314:
    6906 
    6907 /* Line 1806 of yacc.c  */
    6908 #line 1329 "parser.yy"
    6909     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6910     break;
    6911 
    6912   case 315:
    6913 
    6914 /* Line 1806 of yacc.c  */
    6915 #line 1331 "parser.yy"
    6916     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6917     break;
    6918 
    6919   case 316:
    6920 
    6921 /* Line 1806 of yacc.c  */
    6922 #line 1333 "parser.yy"
    6923     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6924     break;
    6925 
    6926   case 317:
    6927 
    6928 /* Line 1806 of yacc.c  */
    6929 #line 1335 "parser.yy"
    6930     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6931     break;
    6932 
    6933   case 318:
    6934 
    6935 /* Line 1806 of yacc.c  */
    6936 #line 1337 "parser.yy"
    6937     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6938     break;
    6939 
    6940   case 319:
    6941 
    6942 /* Line 1806 of yacc.c  */
    6943 #line 1339 "parser.yy"
    6944     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6945     break;
    6946 
    6947   case 320:
    6948 
    6949 /* Line 1806 of yacc.c  */
    6950 #line 1341 "parser.yy"
    6951     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6952     break;
    6953 
    6954   case 321:
    6955 
    6956 /* Line 1806 of yacc.c  */
    6957 #line 1343 "parser.yy"
    6958     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6959     break;
    6960 
    6961   case 322:
    6962 
    6963 /* Line 1806 of yacc.c  */
    6964 #line 1348 "parser.yy"
    6965     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6966     break;
    6967 
    6968   case 323:
    6969 
    6970 /* Line 1806 of yacc.c  */
    6971 #line 1350 "parser.yy"
    6972     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6973     break;
    6974 
    6975   case 324:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1352 "parser.yy"
    6979     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6980     break;
    6981 
    6982   case 325:
    6983 
    6984 /* Line 1806 of yacc.c  */
    6985 #line 1354 "parser.yy"
    6986     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6987     break;
    6988 
    6989   case 326:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1356 "parser.yy"
    6993     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6994     break;
    6995 
    6996   case 327:
    6997 
    6998 /* Line 1806 of yacc.c  */
    6999 #line 1358 "parser.yy"
    7000     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    7001     break;
    7002 
    7003   case 328:
    7004 
    7005 /* Line 1806 of yacc.c  */
    7006 #line 1360 "parser.yy"
    7007     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    7008     break;
    7009 
    7010   case 329:
    7011 
    7012 /* Line 1806 of yacc.c  */
    7013 #line 1362 "parser.yy"
    7014     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    7015     break;
    7016 
    7017   case 330:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1364 "parser.yy"
    7021     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    7022     break;
    7023 
    7024   case 331:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1366 "parser.yy"
    7028     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    7029     break;
    7030 
    7031   case 332:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1368 "parser.yy"
    7035     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    7036     break;
    7037 
    7038   case 333:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1370 "parser.yy"
    7042     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    7043     break;
    7044 
    7045   case 334:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1372 "parser.yy"
    7049     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    7050     break;
    7051 
    7052   case 336:
    7053 
    7054 /* Line 1806 of yacc.c  */
    7055 #line 1379 "parser.yy"
     6832  case 341:
     6833
     6834/* Line 1806 of yacc.c  */
     6835#line 1419 "parser.yy"
     6836    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6837    break;
     6838
     6839  case 342:
     6840
     6841/* Line 1806 of yacc.c  */
     6842#line 1424 "parser.yy"
     6843    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6844    break;
     6845
     6846  case 343:
     6847
     6848/* Line 1806 of yacc.c  */
     6849#line 1426 "parser.yy"
     6850    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6851    break;
     6852
     6853  case 344:
     6854
     6855/* Line 1806 of yacc.c  */
     6856#line 1428 "parser.yy"
     6857    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6858    break;
     6859
     6860  case 345:
     6861
     6862/* Line 1806 of yacc.c  */
     6863#line 1430 "parser.yy"
     6864    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6865    break;
     6866
     6867  case 347:
     6868
     6869/* Line 1806 of yacc.c  */
     6870#line 1436 "parser.yy"
    70566871    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70576872    break;
    70586873
    7059   case 337:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1381 "parser.yy"
     6874  case 348:
     6875
     6876/* Line 1806 of yacc.c  */
     6877#line 1438 "parser.yy"
    70636878    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70646879    break;
    70656880
    7066   case 338:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1383 "parser.yy"
     6881  case 349:
     6882
     6883/* Line 1806 of yacc.c  */
     6884#line 1440 "parser.yy"
    70706885    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    70716886    break;
    70726887
    7073   case 339:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1385 "parser.yy"
    7077     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    7078     break;
    7079 
    7080   case 341:
    7081 
    7082 /* Line 1806 of yacc.c  */
    7083 #line 1391 "parser.yy"
    7084     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7085     break;
    7086 
    7087   case 343:
    7088 
    7089 /* Line 1806 of yacc.c  */
    7090 #line 1398 "parser.yy"
     6888  case 351:
     6889
     6890/* Line 1806 of yacc.c  */
     6891#line 1446 "parser.yy"
    70916892    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70926893    break;
    70936894
    7094   case 344:
    7095 
    7096 /* Line 1806 of yacc.c  */
    7097 #line 1400 "parser.yy"
     6895  case 352:
     6896
     6897/* Line 1806 of yacc.c  */
     6898#line 1448 "parser.yy"
    70986899    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70996900    break;
    71006901
    7101   case 345:
    7102 
    7103 /* Line 1806 of yacc.c  */
    7104 #line 1402 "parser.yy"
    7105     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    7106     break;
    7107 
    7108   case 346:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1407 "parser.yy"
    7112     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    7113     break;
    7114 
    7115   case 347:
    7116 
    7117 /* Line 1806 of yacc.c  */
    7118 #line 1409 "parser.yy"
    7119     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    7120     break;
    7121 
    7122   case 348:
    7123 
    7124 /* Line 1806 of yacc.c  */
    7125 #line 1411 "parser.yy"
    7126     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    7127     break;
    7128 
    7129   case 349:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1413 "parser.yy"
    7133     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7134     break;
    7135 
    7136   case 351:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1419 "parser.yy"
     6902  case 354:
     6903
     6904/* Line 1806 of yacc.c  */
     6905#line 1454 "parser.yy"
    71406906    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71416907    break;
    71426908
    7143   case 352:
    7144 
    7145 /* Line 1806 of yacc.c  */
    7146 #line 1421 "parser.yy"
     6909  case 355:
     6910
     6911/* Line 1806 of yacc.c  */
     6912#line 1456 "parser.yy"
    71476913    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71486914    break;
    71496915
    7150   case 353:
    7151 
    7152 /* Line 1806 of yacc.c  */
    7153 #line 1423 "parser.yy"
     6916  case 356:
     6917
     6918/* Line 1806 of yacc.c  */
     6919#line 1458 "parser.yy"
    71546920    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    71556921    break;
    71566922
    7157   case 355:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1429 "parser.yy"
    7161     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7162     break;
    7163 
    7164   case 356:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1431 "parser.yy"
     6923  case 357:
     6924
     6925/* Line 1806 of yacc.c  */
     6926#line 1463 "parser.yy"
     6927    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6928    break;
     6929
     6930  case 358:
     6931
     6932/* Line 1806 of yacc.c  */
     6933#line 1465 "parser.yy"
     6934    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6935    break;
     6936
     6937  case 359:
     6938
     6939/* Line 1806 of yacc.c  */
     6940#line 1467 "parser.yy"
    71686941    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71696942    break;
    71706943
    7171   case 358:
    7172 
    7173 /* Line 1806 of yacc.c  */
    7174 #line 1437 "parser.yy"
    7175     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7176     break;
    7177 
    7178   case 359:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1439 "parser.yy"
    7182     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7183     break;
    7184 
    7185   case 360:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1441 "parser.yy"
    7189     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7190     break;
    7191 
    7192   case 361:
    7193 
    7194 /* Line 1806 of yacc.c  */
    7195 #line 1446 "parser.yy"
    7196     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    7197     break;
    7198 
    71996944  case 362:
    72006945
    72016946/* Line 1806 of yacc.c  */
    7202 #line 1448 "parser.yy"
    7203     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6947#line 1477 "parser.yy"
     6948    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
    72046949    break;
    72056950
     
    72076952
    72086953/* Line 1806 of yacc.c  */
    7209 #line 1450 "parser.yy"
    7210     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7211     break;
    7212 
    7213   case 366:
    7214 
    7215 /* Line 1806 of yacc.c  */
    7216 #line 1460 "parser.yy"
    7217     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
    7218     break;
    7219 
    7220   case 367:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1462 "parser.yy"
     6954#line 1479 "parser.yy"
    72246955    {
    72256956                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    72286959    break;
    72296960
     6961  case 364:
     6962
     6963/* Line 1806 of yacc.c  */
     6964#line 1484 "parser.yy"
     6965    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6966    break;
     6967
     6968  case 365:
     6969
     6970/* Line 1806 of yacc.c  */
     6971#line 1486 "parser.yy"
     6972    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     6973    break;
     6974
     6975  case 366:
     6976
     6977/* Line 1806 of yacc.c  */
     6978#line 1488 "parser.yy"
     6979    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     6980    break;
     6981
     6982  case 367:
     6983
     6984/* Line 1806 of yacc.c  */
     6985#line 1490 "parser.yy"
     6986    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     6987    break;
     6988
    72306989  case 368:
    72316990
    72326991/* Line 1806 of yacc.c  */
    7233 #line 1467 "parser.yy"
    7234     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6992#line 1495 "parser.yy"
     6993    { (yyval.aggKey) = DeclarationNode::Struct; }
    72356994    break;
    72366995
     
    72386997
    72396998/* Line 1806 of yacc.c  */
    7240 #line 1469 "parser.yy"
    7241     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     6999#line 1497 "parser.yy"
     7000    { (yyval.aggKey) = DeclarationNode::Union; }
    72427001    break;
    72437002
     
    72457004
    72467005/* Line 1806 of yacc.c  */
    7247 #line 1471 "parser.yy"
    7248     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7006#line 1502 "parser.yy"
     7007    { (yyval.decl) = 0; }
    72497008    break;
    72507009
     
    72527011
    72537012/* Line 1806 of yacc.c  */
    7254 #line 1473 "parser.yy"
    7255     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7256     break;
    7257 
    7258   case 372:
    7259 
    7260 /* Line 1806 of yacc.c  */
    7261 #line 1478 "parser.yy"
    7262     { (yyval.aggKey) = DeclarationNode::Struct; }
     7013#line 1504 "parser.yy"
     7014    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    72637015    break;
    72647016
     
    72667018
    72677019/* Line 1806 of yacc.c  */
    7268 #line 1480 "parser.yy"
    7269     { (yyval.aggKey) = DeclarationNode::Union; }
    7270     break;
    7271 
    7272   case 374:
    7273 
    7274 /* Line 1806 of yacc.c  */
    7275 #line 1485 "parser.yy"
    7276     { (yyval.decl) = 0; }
     7020#line 1510 "parser.yy"
     7021    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    72777022    break;
    72787023
     
    72807025
    72817026/* Line 1806 of yacc.c  */
    7282 #line 1487 "parser.yy"
    7283     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7284     break;
    7285 
    7286   case 377:
    7287 
    7288 /* Line 1806 of yacc.c  */
    7289 #line 1493 "parser.yy"
    7290     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7291     break;
    7292 
    7293   case 379:
    7294 
    7295 /* Line 1806 of yacc.c  */
    7296 #line 1496 "parser.yy"
     7027#line 1513 "parser.yy"
    72977028    {   // mark all fields in list
    72987029                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    73027033    break;
    73037034
     7035  case 377:
     7036
     7037/* Line 1806 of yacc.c  */
     7038#line 1523 "parser.yy"
     7039    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7040    break;
     7041
     7042  case 378:
     7043
     7044/* Line 1806 of yacc.c  */
     7045#line 1525 "parser.yy"
     7046    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7047    break;
     7048
     7049  case 379:
     7050
     7051/* Line 1806 of yacc.c  */
     7052#line 1527 "parser.yy"
     7053    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7054    break;
     7055
     7056  case 380:
     7057
     7058/* Line 1806 of yacc.c  */
     7059#line 1532 "parser.yy"
     7060    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7061    break;
     7062
    73047063  case 381:
    73057064
    73067065/* Line 1806 of yacc.c  */
    7307 #line 1506 "parser.yy"
    7308     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7066#line 1534 "parser.yy"
     7067    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    73097068    break;
    73107069
     
    73127071
    73137072/* Line 1806 of yacc.c  */
    7314 #line 1508 "parser.yy"
    7315     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7073#line 1539 "parser.yy"
     7074    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    73167075    break;
    73177076
     
    73197078
    73207079/* Line 1806 of yacc.c  */
    7321 #line 1510 "parser.yy"
    7322     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7080#line 1541 "parser.yy"
     7081    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    73237082    break;
    73247083
     
    73267085
    73277086/* Line 1806 of yacc.c  */
    7328 #line 1515 "parser.yy"
    7329     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7087#line 1544 "parser.yy"
     7088    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    73307089    break;
    73317090
     
    73337092
    73347093/* Line 1806 of yacc.c  */
    7335 #line 1517 "parser.yy"
    7336     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7337     break;
    7338 
    7339   case 386:
    7340 
    7341 /* Line 1806 of yacc.c  */
    7342 #line 1522 "parser.yy"
    7343     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7094#line 1547 "parser.yy"
     7095    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    73447096    break;
    73457097
     
    73477099
    73487100/* Line 1806 of yacc.c  */
    7349 #line 1524 "parser.yy"
    7350     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7101#line 1553 "parser.yy"
     7102    { (yyval.en) = 0; }
    73517103    break;
    73527104
     
    73547106
    73557107/* Line 1806 of yacc.c  */
    7356 #line 1527 "parser.yy"
    7357     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7108#line 1555 "parser.yy"
     7109    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    73587110    break;
    73597111
     
    73617113
    73627114/* Line 1806 of yacc.c  */
    7363 #line 1530 "parser.yy"
    7364     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7115#line 1560 "parser.yy"
     7116    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    73657117    break;
    73667118
     
    73687120
    73697121/* Line 1806 of yacc.c  */
    7370 #line 1536 "parser.yy"
    7371     { (yyval.en) = 0; }
     7122#line 1569 "parser.yy"
     7123    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    73727124    break;
    73737125
     
    73757127
    73767128/* Line 1806 of yacc.c  */
    7377 #line 1538 "parser.yy"
    7378     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7379     break;
    7380 
    7381   case 393:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1543 "parser.yy"
    7385     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7386     break;
    7387 
    7388   case 395:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1552 "parser.yy"
    7392     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7393     break;
    7394 
    7395   case 396:
    7396 
    7397 /* Line 1806 of yacc.c  */
    7398 #line 1554 "parser.yy"
     7129#line 1571 "parser.yy"
    73997130    {
    74007131                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    74037134    break;
    74047135
     7136  case 393:
     7137
     7138/* Line 1806 of yacc.c  */
     7139#line 1576 "parser.yy"
     7140    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7141    break;
     7142
     7143  case 394:
     7144
     7145/* Line 1806 of yacc.c  */
     7146#line 1578 "parser.yy"
     7147    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7148    break;
     7149
     7150  case 395:
     7151
     7152/* Line 1806 of yacc.c  */
     7153#line 1583 "parser.yy"
     7154    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7155    break;
     7156
     7157  case 396:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1585 "parser.yy"
     7161    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7162    break;
     7163
    74057164  case 397:
    74067165
    74077166/* Line 1806 of yacc.c  */
    7408 #line 1559 "parser.yy"
    7409     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7167#line 1590 "parser.yy"
     7168    { (yyval.en) = 0; }
    74107169    break;
    74117170
     
    74137172
    74147173/* Line 1806 of yacc.c  */
    7415 #line 1561 "parser.yy"
    7416     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7174#line 1592 "parser.yy"
     7175    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    74177176    break;
    74187177
     
    74207179
    74217180/* Line 1806 of yacc.c  */
    7422 #line 1566 "parser.yy"
    7423     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7424     break;
    7425 
    7426   case 400:
    7427 
    7428 /* Line 1806 of yacc.c  */
    7429 #line 1568 "parser.yy"
    7430     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7431     break;
    7432 
    7433   case 401:
    7434 
    7435 /* Line 1806 of yacc.c  */
    7436 #line 1573 "parser.yy"
    7437     { (yyval.en) = 0; }
    7438     break;
    7439 
    7440   case 402:
    7441 
    7442 /* Line 1806 of yacc.c  */
    7443 #line 1575 "parser.yy"
    7444     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7181#line 1599 "parser.yy"
     7182    { (yyval.decl) = 0; }
    74457183    break;
    74467184
     
    74487186
    74497187/* Line 1806 of yacc.c  */
    7450 #line 1582 "parser.yy"
     7188#line 1607 "parser.yy"
     7189    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7190    break;
     7191
     7192  case 404:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1609 "parser.yy"
     7196    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7197    break;
     7198
     7199  case 405:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1611 "parser.yy"
     7203    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7204    break;
     7205
     7206  case 407:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1619 "parser.yy"
     7210    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7211    break;
     7212
     7213  case 408:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1621 "parser.yy"
     7217    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7218    break;
     7219
     7220  case 409:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1623 "parser.yy"
     7224    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7225    break;
     7226
     7227  case 411:
     7228
     7229/* Line 1806 of yacc.c  */
     7230#line 1629 "parser.yy"
     7231    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7232    break;
     7233
     7234  case 412:
     7235
     7236/* Line 1806 of yacc.c  */
     7237#line 1634 "parser.yy"
    74517238    { (yyval.decl) = 0; }
    74527239    break;
    74537240
    7454   case 407:
    7455 
    7456 /* Line 1806 of yacc.c  */
    7457 #line 1590 "parser.yy"
     7241  case 415:
     7242
     7243/* Line 1806 of yacc.c  */
     7244#line 1641 "parser.yy"
     7245    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7246    break;
     7247
     7248  case 418:
     7249
     7250/* Line 1806 of yacc.c  */
     7251#line 1648 "parser.yy"
    74587252    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    74597253    break;
    74607254
    7461   case 408:
    7462 
    7463 /* Line 1806 of yacc.c  */
    7464 #line 1592 "parser.yy"
    7465     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7466     break;
    7467 
    7468   case 409:
    7469 
    7470 /* Line 1806 of yacc.c  */
    7471 #line 1594 "parser.yy"
    7472     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7473     break;
    7474 
    7475   case 411:
    7476 
    7477 /* Line 1806 of yacc.c  */
    7478 #line 1602 "parser.yy"
     7255  case 419:
     7256
     7257/* Line 1806 of yacc.c  */
     7258#line 1650 "parser.yy"
    74797259    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    74807260    break;
    74817261
    7482   case 412:
    7483 
    7484 /* Line 1806 of yacc.c  */
    7485 #line 1604 "parser.yy"
    7486     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7487     break;
    7488 
    7489   case 413:
    7490 
    7491 /* Line 1806 of yacc.c  */
    7492 #line 1606 "parser.yy"
    7493     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7494     break;
    7495 
    7496   case 415:
    7497 
    7498 /* Line 1806 of yacc.c  */
    7499 #line 1612 "parser.yy"
    7500     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7501     break;
    7502 
    7503   case 416:
    7504 
    7505 /* Line 1806 of yacc.c  */
    7506 #line 1617 "parser.yy"
    7507     { (yyval.decl) = 0; }
    7508     break;
    7509 
    7510   case 419:
    7511 
    7512 /* Line 1806 of yacc.c  */
    7513 #line 1624 "parser.yy"
    7514     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7262  case 421:
     7263
     7264/* Line 1806 of yacc.c  */
     7265#line 1659 "parser.yy"
     7266    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    75157267    break;
    75167268
     
    75187270
    75197271/* Line 1806 of yacc.c  */
    7520 #line 1631 "parser.yy"
    7521     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7272#line 1662 "parser.yy"
     7273    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    75227274    break;
    75237275
     
    75257277
    75267278/* Line 1806 of yacc.c  */
    7527 #line 1633 "parser.yy"
    7528     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7529     break;
    7530 
    7531   case 425:
    7532 
    7533 /* Line 1806 of yacc.c  */
    7534 #line 1642 "parser.yy"
    7535     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7536     break;
    7537 
    7538   case 426:
    7539 
    7540 /* Line 1806 of yacc.c  */
    7541 #line 1645 "parser.yy"
    7542     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7543     break;
    7544 
    7545   case 427:
    7546 
    7547 /* Line 1806 of yacc.c  */
    7548 #line 1647 "parser.yy"
     7279#line 1664 "parser.yy"
    75497280    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    75507281    break;
    75517282
    7552   case 432:
    7553 
    7554 /* Line 1806 of yacc.c  */
    7555 #line 1657 "parser.yy"
     7283  case 428:
     7284
     7285/* Line 1806 of yacc.c  */
     7286#line 1674 "parser.yy"
    75567287    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75577288    break;
    75587289
    7559   case 434:
    7560 
    7561 /* Line 1806 of yacc.c  */
    7562 #line 1663 "parser.yy"
     7290  case 430:
     7291
     7292/* Line 1806 of yacc.c  */
     7293#line 1680 "parser.yy"
    75637294    {
    75647295                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    75677298    break;
    75687299
    7569   case 435:
    7570 
    7571 /* Line 1806 of yacc.c  */
    7572 #line 1668 "parser.yy"
     7300  case 431:
     7301
     7302/* Line 1806 of yacc.c  */
     7303#line 1685 "parser.yy"
    75737304    {
    75747305                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    75777308    break;
    75787309
    7579   case 437:
    7580 
    7581 /* Line 1806 of yacc.c  */
    7582 #line 1677 "parser.yy"
     7310  case 433:
     7311
     7312/* Line 1806 of yacc.c  */
     7313#line 1694 "parser.yy"
    75837314    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    75847315    break;
    75857316
    7586   case 438:
    7587 
    7588 /* Line 1806 of yacc.c  */
    7589 #line 1686 "parser.yy"
     7317  case 434:
     7318
     7319/* Line 1806 of yacc.c  */
     7320#line 1703 "parser.yy"
    75907321    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    75917322    break;
    75927323
    7593   case 439:
    7594 
    7595 /* Line 1806 of yacc.c  */
    7596 #line 1688 "parser.yy"
     7324  case 435:
     7325
     7326/* Line 1806 of yacc.c  */
     7327#line 1705 "parser.yy"
    75977328    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    75987329    break;
    75997330
     7331  case 447:
     7332
     7333/* Line 1806 of yacc.c  */
     7334#line 1730 "parser.yy"
     7335    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7336    break;
     7337
    76007338  case 451:
    76017339
    76027340/* Line 1806 of yacc.c  */
    7603 #line 1713 "parser.yy"
     7341#line 1738 "parser.yy"
    76047342    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    76057343    break;
    76067344
     7345  case 452:
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1743 "parser.yy"
     7349    { (yyval.in) = 0; }
     7350    break;
     7351
     7352  case 453:
     7353
     7354/* Line 1806 of yacc.c  */
     7355#line 1745 "parser.yy"
     7356    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7357    break;
     7358
     7359  case 454:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1747 "parser.yy"
     7363    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     7364    break;
     7365
    76077366  case 455:
    76087367
    76097368/* Line 1806 of yacc.c  */
    7610 #line 1721 "parser.yy"
    7611     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7369#line 1751 "parser.yy"
     7370    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    76127371    break;
    76137372
     
    76157374
    76167375/* Line 1806 of yacc.c  */
    7617 #line 1726 "parser.yy"
     7376#line 1752 "parser.yy"
     7377    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7378    break;
     7379
     7380  case 457:
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1757 "parser.yy"
    76187384    { (yyval.in) = 0; }
    76197385    break;
    76207386
    7621   case 457:
    7622 
    7623 /* Line 1806 of yacc.c  */
    7624 #line 1728 "parser.yy"
    7625     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7626     break;
    7627 
    7628   case 458:
    7629 
    7630 /* Line 1806 of yacc.c  */
    7631 #line 1730 "parser.yy"
    7632     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7633     break;
    7634 
    76357387  case 459:
    76367388
    76377389/* Line 1806 of yacc.c  */
    7638 #line 1734 "parser.yy"
    7639     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7390#line 1759 "parser.yy"
     7391    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    76407392    break;
    76417393
     
    76437395
    76447396/* Line 1806 of yacc.c  */
    7645 #line 1735 "parser.yy"
    7646     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7397#line 1760 "parser.yy"
     7398    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    76477399    break;
    76487400
     
    76507402
    76517403/* Line 1806 of yacc.c  */
    7652 #line 1740 "parser.yy"
    7653     { (yyval.in) = 0; }
     7404#line 1762 "parser.yy"
     7405    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    76547406    break;
    76557407
     
    76577409
    76587410/* Line 1806 of yacc.c  */
    7659 #line 1742 "parser.yy"
    7660     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7661     break;
    7662 
    7663   case 464:
    7664 
    7665 /* Line 1806 of yacc.c  */
    7666 #line 1743 "parser.yy"
    7667     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7411#line 1778 "parser.yy"
     7412    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    76687413    break;
    76697414
     
    76717416
    76727417/* Line 1806 of yacc.c  */
    7673 #line 1745 "parser.yy"
    7674     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7418#line 1784 "parser.yy"
     7419    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) ) ); }
     7420    break;
     7421
     7422  case 466:
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1790 "parser.yy"
     7426    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    76757427    break;
    76767428
     
    76787430
    76797431/* Line 1806 of yacc.c  */
    7680 #line 1761 "parser.yy"
    7681     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     7432#line 1793 "parser.yy"
     7433    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7434    break;
     7435
     7436  case 468:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1795 "parser.yy"
     7440    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    76827441    break;
    76837442
     
    76857444
    76867445/* Line 1806 of yacc.c  */
    7687 #line 1767 "parser.yy"
    7688     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7446#line 1797 "parser.yy"
     7447    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    76897448    break;
    76907449
     
    76927451
    76937452/* Line 1806 of yacc.c  */
    7694 #line 1775 "parser.yy"
    7695     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    7696     break;
    7697 
    7698   case 471:
    7699 
    7700 /* Line 1806 of yacc.c  */
    7701 #line 1777 "parser.yy"
    7702     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     7453#line 1799 "parser.yy"
     7454    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    77037455    break;
    77047456
     
    77067458
    77077459/* Line 1806 of yacc.c  */
    7708 #line 1780 "parser.yy"
    7709     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7460#line 1823 "parser.yy"
     7461    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    77107462    break;
    77117463
     
    77137465
    77147466/* Line 1806 of yacc.c  */
    7715 #line 1782 "parser.yy"
    7716     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7467#line 1825 "parser.yy"
     7468    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    77177469    break;
    77187470
     
    77207472
    77217473/* Line 1806 of yacc.c  */
    7722 #line 1784 "parser.yy"
    7723     { (yyval.en) = new DesignatorNode( new CompositeExprNode2( build_opr2( OperatorNode::Range, (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ), true ); }
    7724     break;
    7725 
    7726   case 475:
    7727 
    7728 /* Line 1806 of yacc.c  */
    7729 #line 1786 "parser.yy"
    7730     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7474#line 1827 "parser.yy"
     7475    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7476    break;
     7477
     7478  case 476:
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1833 "parser.yy"
     7482    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    77317483    break;
    77327484
     
    77347486
    77357487/* Line 1806 of yacc.c  */
    7736 #line 1810 "parser.yy"
    7737     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7488#line 1835 "parser.yy"
     7489    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    77387490    break;
    77397491
     
    77417493
    77427494/* Line 1806 of yacc.c  */
    7743 #line 1812 "parser.yy"
    7744     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7745     break;
    7746 
    7747   case 479:
    7748 
    7749 /* Line 1806 of yacc.c  */
    7750 #line 1814 "parser.yy"
    7751     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7495#line 1840 "parser.yy"
     7496    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7497    break;
     7498
     7499  case 480:
     7500
     7501/* Line 1806 of yacc.c  */
     7502#line 1846 "parser.yy"
     7503    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    77527504    break;
    77537505
     
    77557507
    77567508/* Line 1806 of yacc.c  */
    7757 #line 1820 "parser.yy"
    7758     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7509#line 1851 "parser.yy"
     7510    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    77597511    break;
    77607512
     
    77627514
    77637515/* Line 1806 of yacc.c  */
    7764 #line 1822 "parser.yy"
    7765     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7766     break;
    7767 
    7768   case 483:
    7769 
    7770 /* Line 1806 of yacc.c  */
    7771 #line 1827 "parser.yy"
    7772     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7516#line 1853 "parser.yy"
     7517    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7518    break;
     7519
     7520  case 484:
     7521
     7522/* Line 1806 of yacc.c  */
     7523#line 1859 "parser.yy"
     7524    { (yyval.tclass) = DeclarationNode::Type; }
    77737525    break;
    77747526
     
    77767528
    77777529/* Line 1806 of yacc.c  */
    7778 #line 1833 "parser.yy"
    7779     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7530#line 1861 "parser.yy"
     7531    { (yyval.tclass) = DeclarationNode::Ftype; }
    77807532    break;
    77817533
     
    77837535
    77847536/* Line 1806 of yacc.c  */
    7785 #line 1838 "parser.yy"
    7786     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7537#line 1863 "parser.yy"
     7538    { (yyval.tclass) = DeclarationNode::Dtype; }
    77877539    break;
    77887540
     
    77907542
    77917543/* Line 1806 of yacc.c  */
    7792 #line 1840 "parser.yy"
    7793     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7544#line 1868 "parser.yy"
     7545    { (yyval.decl) = 0; }
     7546    break;
     7547
     7548  case 488:
     7549
     7550/* Line 1806 of yacc.c  */
     7551#line 1870 "parser.yy"
     7552    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    77947553    break;
    77957554
     
    77977556
    77987557/* Line 1806 of yacc.c  */
    7799 #line 1846 "parser.yy"
    7800     { (yyval.tclass) = DeclarationNode::Type; }
    7801     break;
    7802 
    7803   case 490:
    7804 
    7805 /* Line 1806 of yacc.c  */
    7806 #line 1848 "parser.yy"
    7807     { (yyval.tclass) = DeclarationNode::Ftype; }
    7808     break;
    7809 
    7810   case 491:
    7811 
    7812 /* Line 1806 of yacc.c  */
    7813 #line 1850 "parser.yy"
    7814     { (yyval.tclass) = DeclarationNode::Dtype; }
    7815     break;
    7816 
    7817   case 492:
    7818 
    7819 /* Line 1806 of yacc.c  */
    7820 #line 1855 "parser.yy"
    7821     { (yyval.decl) = 0; }
    7822     break;
    7823 
    7824   case 493:
    7825 
    7826 /* Line 1806 of yacc.c  */
    7827 #line 1857 "parser.yy"
    7828     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7829     break;
    7830 
    7831   case 494:
    7832 
    7833 /* Line 1806 of yacc.c  */
    7834 #line 1862 "parser.yy"
     7558#line 1875 "parser.yy"
    78357559    {
    78367560                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    78397563    break;
    78407564
     7565  case 490:
     7566
     7567/* Line 1806 of yacc.c  */
     7568#line 1880 "parser.yy"
     7569    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7570    break;
     7571
     7572  case 491:
     7573
     7574/* Line 1806 of yacc.c  */
     7575#line 1882 "parser.yy"
     7576    { (yyval.decl) = 0; }
     7577    break;
     7578
     7579  case 492:
     7580
     7581/* Line 1806 of yacc.c  */
     7582#line 1887 "parser.yy"
     7583    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7584    break;
     7585
     7586  case 494:
     7587
     7588/* Line 1806 of yacc.c  */
     7589#line 1890 "parser.yy"
     7590    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7591    break;
     7592
    78417593  case 495:
    78427594
    78437595/* Line 1806 of yacc.c  */
    7844 #line 1867 "parser.yy"
    7845     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7596#line 1892 "parser.yy"
     7597    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    78467598    break;
    78477599
     
    78497601
    78507602/* Line 1806 of yacc.c  */
    7851 #line 1869 "parser.yy"
    7852     { (yyval.decl) = 0; }
     7603#line 1897 "parser.yy"
     7604    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    78537605    break;
    78547606
     
    78567608
    78577609/* Line 1806 of yacc.c  */
    7858 #line 1874 "parser.yy"
    7859     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7610#line 1899 "parser.yy"
     7611    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7612    break;
     7613
     7614  case 498:
     7615
     7616/* Line 1806 of yacc.c  */
     7617#line 1901 "parser.yy"
     7618    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    78607619    break;
    78617620
     
    78637622
    78647623/* Line 1806 of yacc.c  */
    7865 #line 1877 "parser.yy"
    7866     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7624#line 1906 "parser.yy"
     7625    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    78677626    break;
    78687627
     
    78707629
    78717630/* Line 1806 of yacc.c  */
    7872 #line 1879 "parser.yy"
    7873     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7631#line 1908 "parser.yy"
     7632    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    78747633    break;
    78757634
     
    78777636
    78787637/* Line 1806 of yacc.c  */
    7879 #line 1884 "parser.yy"
    7880     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7881     break;
    7882 
    7883   case 502:
    7884 
    7885 /* Line 1806 of yacc.c  */
    7886 #line 1886 "parser.yy"
    7887     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7888     break;
    7889 
    7890   case 503:
    7891 
    7892 /* Line 1806 of yacc.c  */
    7893 #line 1888 "parser.yy"
    7894     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7895     break;
    7896 
    7897   case 504:
    7898 
    7899 /* Line 1806 of yacc.c  */
    7900 #line 1893 "parser.yy"
    7901     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7902     break;
    7903 
    7904   case 505:
    7905 
    7906 /* Line 1806 of yacc.c  */
    7907 #line 1895 "parser.yy"
    7908     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7909     break;
    7910 
    7911   case 506:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 1900 "parser.yy"
     7638#line 1913 "parser.yy"
    79157639    {
    79167640                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    79197643    break;
    79207644
    7921   case 507:
    7922 
    7923 /* Line 1806 of yacc.c  */
    7924 #line 1905 "parser.yy"
     7645  case 502:
     7646
     7647/* Line 1806 of yacc.c  */
     7648#line 1918 "parser.yy"
    79257649    {
    79267650                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    79297653    break;
    79307654
    7931   case 508:
    7932 
    7933 /* Line 1806 of yacc.c  */
    7934 #line 1913 "parser.yy"
     7655  case 503:
     7656
     7657/* Line 1806 of yacc.c  */
     7658#line 1926 "parser.yy"
    79357659    {
    79367660                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    79397663    break;
    79407664
    7941   case 509:
    7942 
    7943 /* Line 1806 of yacc.c  */
    7944 #line 1918 "parser.yy"
     7665  case 504:
     7666
     7667/* Line 1806 of yacc.c  */
     7668#line 1931 "parser.yy"
    79457669    {
    79467670                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    79497673    break;
    79507674
    7951   case 510:
    7952 
    7953 /* Line 1806 of yacc.c  */
    7954 #line 1923 "parser.yy"
     7675  case 505:
     7676
     7677/* Line 1806 of yacc.c  */
     7678#line 1936 "parser.yy"
    79557679    {
    79567680                        typedefTable.leaveTrait();
     
    79607684    break;
    79617685
    7962   case 512:
    7963 
    7964 /* Line 1806 of yacc.c  */
    7965 #line 1933 "parser.yy"
     7686  case 507:
     7687
     7688/* Line 1806 of yacc.c  */
     7689#line 1946 "parser.yy"
    79667690    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    79677691    break;
    79687692
    7969   case 515:
    7970 
    7971 /* Line 1806 of yacc.c  */
    7972 #line 1943 "parser.yy"
     7693  case 510:
     7694
     7695/* Line 1806 of yacc.c  */
     7696#line 1956 "parser.yy"
    79737697    {
    79747698                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79777701    break;
    79787702
    7979   case 516:
    7980 
    7981 /* Line 1806 of yacc.c  */
    7982 #line 1948 "parser.yy"
     7703  case 511:
     7704
     7705/* Line 1806 of yacc.c  */
     7706#line 1961 "parser.yy"
    79837707    {
    79847708                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79877711    break;
    79887712
    7989   case 517:
    7990 
    7991 /* Line 1806 of yacc.c  */
    7992 #line 1953 "parser.yy"
     7713  case 512:
     7714
     7715/* Line 1806 of yacc.c  */
     7716#line 1966 "parser.yy"
    79937717    {
    79947718                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    79977721    break;
    79987722
    7999   case 518:
    8000 
    8001 /* Line 1806 of yacc.c  */
    8002 #line 1961 "parser.yy"
     7723  case 513:
     7724
     7725/* Line 1806 of yacc.c  */
     7726#line 1974 "parser.yy"
    80037727    {
    80047728                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    80077731    break;
    80087732
    8009   case 519:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 1966 "parser.yy"
     7733  case 514:
     7734
     7735/* Line 1806 of yacc.c  */
     7736#line 1979 "parser.yy"
    80137737    {
    80147738                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    80177741    break;
    80187742
    8019   case 520:
    8020 
    8021 /* Line 1806 of yacc.c  */
    8022 #line 1976 "parser.yy"
     7743  case 515:
     7744
     7745/* Line 1806 of yacc.c  */
     7746#line 1989 "parser.yy"
    80237747    {}
    80247748    break;
    80257749
    8026   case 521:
    8027 
    8028 /* Line 1806 of yacc.c  */
    8029 #line 1978 "parser.yy"
     7750  case 516:
     7751
     7752/* Line 1806 of yacc.c  */
     7753#line 1991 "parser.yy"
    80307754    {
    80317755                        if ( theTree ) {
     
    80377761    break;
    80387762
     7763  case 518:
     7764
     7765/* Line 1806 of yacc.c  */
     7766#line 2003 "parser.yy"
     7767    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7768    break;
     7769
     7770  case 519:
     7771
     7772/* Line 1806 of yacc.c  */
     7773#line 2008 "parser.yy"
     7774    { (yyval.decl) = 0; }
     7775    break;
     7776
    80397777  case 523:
    80407778
    80417779/* Line 1806 of yacc.c  */
    8042 #line 1990 "parser.yy"
    8043     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7780#line 2016 "parser.yy"
     7781    {}
    80447782    break;
    80457783
     
    80477785
    80487786/* Line 1806 of yacc.c  */
    8049 #line 1995 "parser.yy"
    8050     { (yyval.decl) = 0; }
    8051     break;
    8052 
    8053   case 528:
    8054 
    8055 /* Line 1806 of yacc.c  */
    8056 #line 2003 "parser.yy"
    8057     {}
    8058     break;
    8059 
    8060   case 529:
    8061 
    8062 /* Line 1806 of yacc.c  */
    8063 #line 2005 "parser.yy"
     7787#line 2018 "parser.yy"
    80647788    {
    80657789                        linkageStack.push( linkage );
     
    80687792    break;
    80697793
    8070   case 530:
    8071 
    8072 /* Line 1806 of yacc.c  */
    8073 #line 2010 "parser.yy"
     7794  case 525:
     7795
     7796/* Line 1806 of yacc.c  */
     7797#line 2023 "parser.yy"
    80747798    {
    80757799                        linkage = linkageStack.top();
     
    80797803    break;
    80807804
    8081   case 531:
    8082 
    8083 /* Line 1806 of yacc.c  */
    8084 #line 2016 "parser.yy"
     7805  case 526:
     7806
     7807/* Line 1806 of yacc.c  */
     7808#line 2029 "parser.yy"
    80857809    {   // mark all fields in list
    80867810                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    80907814    break;
    80917815
    8092   case 533:
    8093 
    8094 /* Line 1806 of yacc.c  */
    8095 #line 2031 "parser.yy"
     7816  case 528:
     7817
     7818/* Line 1806 of yacc.c  */
     7819#line 2044 "parser.yy"
    80967820    {
    80977821                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81017825    break;
    81027826
    8103   case 534:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2037 "parser.yy"
     7827  case 529:
     7828
     7829/* Line 1806 of yacc.c  */
     7830#line 2050 "parser.yy"
    81077831    {
    81087832                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81127836    break;
    81137837
    8114   case 535:
    8115 
    8116 /* Line 1806 of yacc.c  */
    8117 #line 2046 "parser.yy"
     7838  case 530:
     7839
     7840/* Line 1806 of yacc.c  */
     7841#line 2059 "parser.yy"
    81187842    {
    81197843                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81237847    break;
    81247848
    8125   case 536:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2052 "parser.yy"
     7849  case 531:
     7850
     7851/* Line 1806 of yacc.c  */
     7852#line 2065 "parser.yy"
    81297853    {
    81307854                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81347858    break;
    81357859
    8136   case 537:
    8137 
    8138 /* Line 1806 of yacc.c  */
    8139 #line 2058 "parser.yy"
     7860  case 532:
     7861
     7862/* Line 1806 of yacc.c  */
     7863#line 2071 "parser.yy"
    81407864    {
    81417865                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81457869    break;
    81467870
    8147   case 538:
    8148 
    8149 /* Line 1806 of yacc.c  */
    8150 #line 2064 "parser.yy"
     7871  case 533:
     7872
     7873/* Line 1806 of yacc.c  */
     7874#line 2077 "parser.yy"
    81517875    {
    81527876                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81567880    break;
    81577881
    8158   case 539:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2070 "parser.yy"
     7882  case 534:
     7883
     7884/* Line 1806 of yacc.c  */
     7885#line 2083 "parser.yy"
    81627886    {
    81637887                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81677891    break;
    81687892
    8169   case 540:
    8170 
    8171 /* Line 1806 of yacc.c  */
    8172 #line 2078 "parser.yy"
     7893  case 535:
     7894
     7895/* Line 1806 of yacc.c  */
     7896#line 2091 "parser.yy"
    81737897    {
    81747898                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81787902    break;
    81797903
    8180   case 541:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2084 "parser.yy"
     7904  case 536:
     7905
     7906/* Line 1806 of yacc.c  */
     7907#line 2097 "parser.yy"
    81847908    {
    81857909                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81897913    break;
    81907914
    8191   case 542:
    8192 
    8193 /* Line 1806 of yacc.c  */
    8194 #line 2092 "parser.yy"
     7915  case 537:
     7916
     7917/* Line 1806 of yacc.c  */
     7918#line 2105 "parser.yy"
    81957919    {
    81967920                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82007924    break;
    82017925
    8202   case 543:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2098 "parser.yy"
     7926  case 538:
     7927
     7928/* Line 1806 of yacc.c  */
     7929#line 2111 "parser.yy"
    82067930    {
    82077931                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82117935    break;
    82127936
    8213   case 547:
    8214 
    8215 /* Line 1806 of yacc.c  */
    8216 #line 2113 "parser.yy"
    8217     { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Range, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    8218     break;
    8219 
    8220   case 550:
    8221 
    8222 /* Line 1806 of yacc.c  */
    8223 #line 2123 "parser.yy"
    8224     { (yyval.decl) = 0; }
    8225     break;
    8226 
    8227   case 553:
    8228 
    8229 /* Line 1806 of yacc.c  */
    8230 #line 2130 "parser.yy"
    8231     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8232     break;
    8233 
    8234   case 554:
     7937  case 542:
     7938
     7939/* Line 1806 of yacc.c  */
     7940#line 2126 "parser.yy"
     7941    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7942    break;
     7943
     7944  case 545:
    82357945
    82367946/* Line 1806 of yacc.c  */
     
    82397949    break;
    82407950
    8241   case 560:
    8242 
    8243 /* Line 1806 of yacc.c  */
    8244 #line 2151 "parser.yy"
     7951  case 548:
     7952
     7953/* Line 1806 of yacc.c  */
     7954#line 2143 "parser.yy"
     7955    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7956    break;
     7957
     7958  case 549:
     7959
     7960/* Line 1806 of yacc.c  */
     7961#line 2149 "parser.yy"
     7962    { (yyval.decl) = 0; }
     7963    break;
     7964
     7965  case 555:
     7966
     7967/* Line 1806 of yacc.c  */
     7968#line 2164 "parser.yy"
    82457969    {}
    82467970    break;
    82477971
     7972  case 556:
     7973
     7974/* Line 1806 of yacc.c  */
     7975#line 2165 "parser.yy"
     7976    {}
     7977    break;
     7978
     7979  case 557:
     7980
     7981/* Line 1806 of yacc.c  */
     7982#line 2166 "parser.yy"
     7983    {}
     7984    break;
     7985
     7986  case 558:
     7987
     7988/* Line 1806 of yacc.c  */
     7989#line 2167 "parser.yy"
     7990    {}
     7991    break;
     7992
     7993  case 559:
     7994
     7995/* Line 1806 of yacc.c  */
     7996#line 2202 "parser.yy"
     7997    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7998    break;
     7999
    82488000  case 561:
    82498001
    82508002/* Line 1806 of yacc.c  */
    8251 #line 2152 "parser.yy"
    8252     {}
     8003#line 2205 "parser.yy"
     8004    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82538005    break;
    82548006
     
    82568008
    82578009/* Line 1806 of yacc.c  */
    8258 #line 2153 "parser.yy"
    8259     {}
     8010#line 2207 "parser.yy"
     8011    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82608012    break;
    82618013
     
    82638015
    82648016/* Line 1806 of yacc.c  */
    8265 #line 2154 "parser.yy"
    8266     {}
    8267     break;
    8268 
    8269   case 564:
    8270 
    8271 /* Line 1806 of yacc.c  */
    8272 #line 2189 "parser.yy"
    8273     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8274     break;
    8275 
    8276   case 566:
    8277 
    8278 /* Line 1806 of yacc.c  */
    8279 #line 2192 "parser.yy"
    8280     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8281     break;
    8282 
    8283   case 567:
    8284 
    8285 /* Line 1806 of yacc.c  */
    8286 #line 2194 "parser.yy"
    8287     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8288     break;
    8289 
    8290   case 568:
    8291 
    8292 /* Line 1806 of yacc.c  */
    8293 #line 2199 "parser.yy"
     8017#line 2212 "parser.yy"
    82948018    {
    82958019                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    82988022    break;
    82998023
     8024  case 564:
     8025
     8026/* Line 1806 of yacc.c  */
     8027#line 2217 "parser.yy"
     8028    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8029    break;
     8030
     8031  case 565:
     8032
     8033/* Line 1806 of yacc.c  */
     8034#line 2222 "parser.yy"
     8035    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8036    break;
     8037
     8038  case 566:
     8039
     8040/* Line 1806 of yacc.c  */
     8041#line 2224 "parser.yy"
     8042    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8043    break;
     8044
     8045  case 567:
     8046
     8047/* Line 1806 of yacc.c  */
     8048#line 2226 "parser.yy"
     8049    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8050    break;
     8051
     8052  case 568:
     8053
     8054/* Line 1806 of yacc.c  */
     8055#line 2231 "parser.yy"
     8056    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8057    break;
     8058
    83008059  case 569:
    83018060
    83028061/* Line 1806 of yacc.c  */
    8303 #line 2204 "parser.yy"
     8062#line 2233 "parser.yy"
     8063    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8064    break;
     8065
     8066  case 570:
     8067
     8068/* Line 1806 of yacc.c  */
     8069#line 2235 "parser.yy"
     8070    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8071    break;
     8072
     8073  case 571:
     8074
     8075/* Line 1806 of yacc.c  */
     8076#line 2237 "parser.yy"
    83048077    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83058078    break;
    83068079
    8307   case 570:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2209 "parser.yy"
     8080  case 572:
     8081
     8082/* Line 1806 of yacc.c  */
     8083#line 2242 "parser.yy"
     8084    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8085    break;
     8086
     8087  case 573:
     8088
     8089/* Line 1806 of yacc.c  */
     8090#line 2244 "parser.yy"
     8091    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8092    break;
     8093
     8094  case 574:
     8095
     8096/* Line 1806 of yacc.c  */
     8097#line 2253 "parser.yy"
     8098    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8099    break;
     8100
     8101  case 576:
     8102
     8103/* Line 1806 of yacc.c  */
     8104#line 2256 "parser.yy"
     8105    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8106    break;
     8107
     8108  case 577:
     8109
     8110/* Line 1806 of yacc.c  */
     8111#line 2261 "parser.yy"
     8112    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8113    break;
     8114
     8115  case 578:
     8116
     8117/* Line 1806 of yacc.c  */
     8118#line 2263 "parser.yy"
     8119    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8120    break;
     8121
     8122  case 579:
     8123
     8124/* Line 1806 of yacc.c  */
     8125#line 2265 "parser.yy"
     8126    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8127    break;
     8128
     8129  case 580:
     8130
     8131/* Line 1806 of yacc.c  */
     8132#line 2270 "parser.yy"
    83118133    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83128134    break;
    83138135
    8314   case 571:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2211 "parser.yy"
     8136  case 581:
     8137
     8138/* Line 1806 of yacc.c  */
     8139#line 2272 "parser.yy"
    83188140    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83198141    break;
    83208142
    8321   case 572:
    8322 
    8323 /* Line 1806 of yacc.c  */
    8324 #line 2213 "parser.yy"
     8143  case 582:
     8144
     8145/* Line 1806 of yacc.c  */
     8146#line 2274 "parser.yy"
    83258147    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83268148    break;
    83278149
    8328   case 573:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2218 "parser.yy"
     8150  case 583:
     8151
     8152/* Line 1806 of yacc.c  */
     8153#line 2279 "parser.yy"
     8154    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8155    break;
     8156
     8157  case 584:
     8158
     8159/* Line 1806 of yacc.c  */
     8160#line 2281 "parser.yy"
     8161    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8162    break;
     8163
     8164  case 585:
     8165
     8166/* Line 1806 of yacc.c  */
     8167#line 2283 "parser.yy"
     8168    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8169    break;
     8170
     8171  case 589:
     8172
     8173/* Line 1806 of yacc.c  */
     8174#line 2298 "parser.yy"
     8175    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8176    break;
     8177
     8178  case 590:
     8179
     8180/* Line 1806 of yacc.c  */
     8181#line 2300 "parser.yy"
     8182    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8183    break;
     8184
     8185  case 591:
     8186
     8187/* Line 1806 of yacc.c  */
     8188#line 2302 "parser.yy"
     8189    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8190    break;
     8191
     8192  case 592:
     8193
     8194/* Line 1806 of yacc.c  */
     8195#line 2307 "parser.yy"
     8196    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8197    break;
     8198
     8199  case 593:
     8200
     8201/* Line 1806 of yacc.c  */
     8202#line 2309 "parser.yy"
     8203    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8204    break;
     8205
     8206  case 594:
     8207
     8208/* Line 1806 of yacc.c  */
     8209#line 2311 "parser.yy"
     8210    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8211    break;
     8212
     8213  case 595:
     8214
     8215/* Line 1806 of yacc.c  */
     8216#line 2316 "parser.yy"
     8217    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8218    break;
     8219
     8220  case 596:
     8221
     8222/* Line 1806 of yacc.c  */
     8223#line 2318 "parser.yy"
     8224    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8225    break;
     8226
     8227  case 597:
     8228
     8229/* Line 1806 of yacc.c  */
     8230#line 2320 "parser.yy"
     8231    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8232    break;
     8233
     8234  case 598:
     8235
     8236/* Line 1806 of yacc.c  */
     8237#line 2335 "parser.yy"
     8238    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8239    break;
     8240
     8241  case 600:
     8242
     8243/* Line 1806 of yacc.c  */
     8244#line 2338 "parser.yy"
     8245    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8246    break;
     8247
     8248  case 601:
     8249
     8250/* Line 1806 of yacc.c  */
     8251#line 2340 "parser.yy"
     8252    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8253    break;
     8254
     8255  case 603:
     8256
     8257/* Line 1806 of yacc.c  */
     8258#line 2346 "parser.yy"
     8259    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8260    break;
     8261
     8262  case 604:
     8263
     8264/* Line 1806 of yacc.c  */
     8265#line 2351 "parser.yy"
     8266    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8267    break;
     8268
     8269  case 605:
     8270
     8271/* Line 1806 of yacc.c  */
     8272#line 2353 "parser.yy"
     8273    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8274    break;
     8275
     8276  case 606:
     8277
     8278/* Line 1806 of yacc.c  */
     8279#line 2355 "parser.yy"
     8280    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8281    break;
     8282
     8283  case 607:
     8284
     8285/* Line 1806 of yacc.c  */
     8286#line 2360 "parser.yy"
    83328287    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83338288    break;
    83348289
    8335   case 574:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2220 "parser.yy"
     8290  case 608:
     8291
     8292/* Line 1806 of yacc.c  */
     8293#line 2362 "parser.yy"
    83398294    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83408295    break;
    83418296
    8342   case 575:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2222 "parser.yy"
     8297  case 609:
     8298
     8299/* Line 1806 of yacc.c  */
     8300#line 2364 "parser.yy"
    83468301    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83478302    break;
    83488303
    8349   case 576:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2224 "parser.yy"
     8304  case 610:
     8305
     8306/* Line 1806 of yacc.c  */
     8307#line 2366 "parser.yy"
    83538308    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83548309    break;
    83558310
    8356   case 577:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2229 "parser.yy"
     8311  case 611:
     8312
     8313/* Line 1806 of yacc.c  */
     8314#line 2371 "parser.yy"
     8315    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8316    break;
     8317
     8318  case 612:
     8319
     8320/* Line 1806 of yacc.c  */
     8321#line 2373 "parser.yy"
    83608322    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83618323    break;
    83628324
    8363   case 578:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2231 "parser.yy"
     8325  case 613:
     8326
     8327/* Line 1806 of yacc.c  */
     8328#line 2375 "parser.yy"
    83678329    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83688330    break;
    83698331
    8370   case 579:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2240 "parser.yy"
     8332  case 614:
     8333
     8334/* Line 1806 of yacc.c  */
     8335#line 2385 "parser.yy"
    83748336    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83758337    break;
    83768338
    8377   case 581:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2243 "parser.yy"
     8339  case 616:
     8340
     8341/* Line 1806 of yacc.c  */
     8342#line 2388 "parser.yy"
    83818343    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83828344    break;
    83838345
    8384   case 582:
    8385 
    8386 /* Line 1806 of yacc.c  */
    8387 #line 2248 "parser.yy"
     8346  case 617:
     8347
     8348/* Line 1806 of yacc.c  */
     8349#line 2390 "parser.yy"
     8350    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8351    break;
     8352
     8353  case 618:
     8354
     8355/* Line 1806 of yacc.c  */
     8356#line 2395 "parser.yy"
     8357    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8358    break;
     8359
     8360  case 619:
     8361
     8362/* Line 1806 of yacc.c  */
     8363#line 2397 "parser.yy"
     8364    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8365    break;
     8366
     8367  case 620:
     8368
     8369/* Line 1806 of yacc.c  */
     8370#line 2399 "parser.yy"
     8371    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8372    break;
     8373
     8374  case 621:
     8375
     8376/* Line 1806 of yacc.c  */
     8377#line 2404 "parser.yy"
     8378    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8379    break;
     8380
     8381  case 622:
     8382
     8383/* Line 1806 of yacc.c  */
     8384#line 2406 "parser.yy"
     8385    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8386    break;
     8387
     8388  case 623:
     8389
     8390/* Line 1806 of yacc.c  */
     8391#line 2408 "parser.yy"
     8392    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8393    break;
     8394
     8395  case 624:
     8396
     8397/* Line 1806 of yacc.c  */
     8398#line 2410 "parser.yy"
     8399    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8400    break;
     8401
     8402  case 625:
     8403
     8404/* Line 1806 of yacc.c  */
     8405#line 2415 "parser.yy"
    83888406    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83898407    break;
    83908408
    8391   case 583:
    8392 
    8393 /* Line 1806 of yacc.c  */
    8394 #line 2250 "parser.yy"
     8409  case 626:
     8410
     8411/* Line 1806 of yacc.c  */
     8412#line 2417 "parser.yy"
    83958413    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83968414    break;
    83978415
    8398   case 584:
    8399 
    8400 /* Line 1806 of yacc.c  */
    8401 #line 2252 "parser.yy"
     8416  case 627:
     8417
     8418/* Line 1806 of yacc.c  */
     8419#line 2419 "parser.yy"
    84028420    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84038421    break;
    84048422
    8405   case 585:
    8406 
    8407 /* Line 1806 of yacc.c  */
    8408 #line 2257 "parser.yy"
    8409     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8410     break;
    8411 
    8412   case 586:
    8413 
    8414 /* Line 1806 of yacc.c  */
    8415 #line 2259 "parser.yy"
    8416     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8417     break;
    8418 
    8419   case 587:
    8420 
    8421 /* Line 1806 of yacc.c  */
    8422 #line 2261 "parser.yy"
    8423     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8424     break;
    8425 
    8426   case 588:
    8427 
    8428 /* Line 1806 of yacc.c  */
    8429 #line 2266 "parser.yy"
    8430     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8431     break;
    8432 
    8433   case 589:
    8434 
    8435 /* Line 1806 of yacc.c  */
    8436 #line 2268 "parser.yy"
    8437     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8438     break;
    8439 
    8440   case 590:
    8441 
    8442 /* Line 1806 of yacc.c  */
    8443 #line 2270 "parser.yy"
    8444     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8445     break;
    8446 
    8447   case 594:
    8448 
    8449 /* Line 1806 of yacc.c  */
    8450 #line 2285 "parser.yy"
    8451     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8452     break;
    8453 
    8454   case 595:
    8455 
    8456 /* Line 1806 of yacc.c  */
    8457 #line 2287 "parser.yy"
    8458     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8459     break;
    8460 
    8461   case 596:
    8462 
    8463 /* Line 1806 of yacc.c  */
    8464 #line 2289 "parser.yy"
    8465     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8466     break;
    8467 
    8468   case 597:
    8469 
    8470 /* Line 1806 of yacc.c  */
    8471 #line 2294 "parser.yy"
    8472     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8473     break;
    8474 
    8475   case 598:
    8476 
    8477 /* Line 1806 of yacc.c  */
    8478 #line 2296 "parser.yy"
    8479     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8480     break;
    8481 
    8482   case 599:
    8483 
    8484 /* Line 1806 of yacc.c  */
    8485 #line 2298 "parser.yy"
    8486     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8487     break;
    8488 
    8489   case 600:
    8490 
    8491 /* Line 1806 of yacc.c  */
    8492 #line 2303 "parser.yy"
    8493     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8494     break;
    8495 
    8496   case 601:
    8497 
    8498 /* Line 1806 of yacc.c  */
    8499 #line 2305 "parser.yy"
    8500     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8501     break;
    8502 
    8503   case 602:
    8504 
    8505 /* Line 1806 of yacc.c  */
    8506 #line 2307 "parser.yy"
    8507     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8508     break;
    8509 
    8510   case 603:
    8511 
    8512 /* Line 1806 of yacc.c  */
    8513 #line 2322 "parser.yy"
     8423  case 628:
     8424
     8425/* Line 1806 of yacc.c  */
     8426#line 2450 "parser.yy"
    85148427    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85158428    break;
    85168429
    8517   case 605:
    8518 
    8519 /* Line 1806 of yacc.c  */
    8520 #line 2325 "parser.yy"
     8430  case 630:
     8431
     8432/* Line 1806 of yacc.c  */
     8433#line 2453 "parser.yy"
    85218434    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85228435    break;
    85238436
    8524   case 606:
    8525 
    8526 /* Line 1806 of yacc.c  */
    8527 #line 2327 "parser.yy"
     8437  case 631:
     8438
     8439/* Line 1806 of yacc.c  */
     8440#line 2455 "parser.yy"
    85288441    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85298442    break;
    85308443
    8531   case 608:
    8532 
    8533 /* Line 1806 of yacc.c  */
    8534 #line 2333 "parser.yy"
    8535     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8536     break;
    8537 
    8538   case 609:
    8539 
    8540 /* Line 1806 of yacc.c  */
    8541 #line 2338 "parser.yy"
    8542     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8543     break;
    8544 
    8545   case 610:
    8546 
    8547 /* Line 1806 of yacc.c  */
    8548 #line 2340 "parser.yy"
    8549     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8550     break;
    8551 
    8552   case 611:
    8553 
    8554 /* Line 1806 of yacc.c  */
    8555 #line 2342 "parser.yy"
    8556     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8557     break;
    8558 
    8559   case 612:
    8560 
    8561 /* Line 1806 of yacc.c  */
    8562 #line 2347 "parser.yy"
    8563     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8564     break;
    8565 
    8566   case 613:
    8567 
    8568 /* Line 1806 of yacc.c  */
    8569 #line 2349 "parser.yy"
    8570     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8571     break;
    8572 
    8573   case 614:
    8574 
    8575 /* Line 1806 of yacc.c  */
    8576 #line 2351 "parser.yy"
    8577     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8578     break;
    8579 
    8580   case 615:
    8581 
    8582 /* Line 1806 of yacc.c  */
    8583 #line 2353 "parser.yy"
    8584     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8585     break;
    8586 
    8587   case 616:
    8588 
    8589 /* Line 1806 of yacc.c  */
    8590 #line 2358 "parser.yy"
    8591     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8592     break;
    8593 
    8594   case 617:
    8595 
    8596 /* Line 1806 of yacc.c  */
    8597 #line 2360 "parser.yy"
    8598     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8599     break;
    8600 
    8601   case 618:
    8602 
    8603 /* Line 1806 of yacc.c  */
    8604 #line 2362 "parser.yy"
    8605     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8606     break;
    8607 
    8608   case 619:
    8609 
    8610 /* Line 1806 of yacc.c  */
    8611 #line 2372 "parser.yy"
    8612     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8613     break;
    8614 
    8615   case 621:
    8616 
    8617 /* Line 1806 of yacc.c  */
    8618 #line 2375 "parser.yy"
    8619     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8620     break;
    8621 
    8622   case 622:
    8623 
    8624 /* Line 1806 of yacc.c  */
    8625 #line 2377 "parser.yy"
    8626     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8627     break;
    8628 
    8629   case 623:
    8630 
    8631 /* Line 1806 of yacc.c  */
    8632 #line 2382 "parser.yy"
    8633     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8634     break;
    8635 
    8636   case 624:
    8637 
    8638 /* Line 1806 of yacc.c  */
    8639 #line 2384 "parser.yy"
    8640     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8641     break;
    8642 
    8643   case 625:
    8644 
    8645 /* Line 1806 of yacc.c  */
    8646 #line 2386 "parser.yy"
    8647     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8648     break;
    8649 
    8650   case 626:
    8651 
    8652 /* Line 1806 of yacc.c  */
    8653 #line 2391 "parser.yy"
    8654     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8655     break;
    8656 
    8657   case 627:
    8658 
    8659 /* Line 1806 of yacc.c  */
    8660 #line 2393 "parser.yy"
    8661     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8662     break;
    8663 
    8664   case 628:
    8665 
    8666 /* Line 1806 of yacc.c  */
    8667 #line 2395 "parser.yy"
    8668     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8669     break;
    8670 
    8671   case 629:
    8672 
    8673 /* Line 1806 of yacc.c  */
    8674 #line 2397 "parser.yy"
    8675     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8676     break;
    8677 
    8678   case 630:
    8679 
    8680 /* Line 1806 of yacc.c  */
    8681 #line 2402 "parser.yy"
    8682     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8683     break;
    8684 
    8685   case 631:
    8686 
    8687 /* Line 1806 of yacc.c  */
    8688 #line 2404 "parser.yy"
    8689     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8690     break;
    8691 
    86928444  case 632:
    86938445
    86948446/* Line 1806 of yacc.c  */
    8695 #line 2406 "parser.yy"
    8696     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8697     break;
    8698 
    8699   case 633:
    8700 
    8701 /* Line 1806 of yacc.c  */
    8702 #line 2437 "parser.yy"
    8703     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8704     break;
    8705 
    8706   case 635:
    8707 
    8708 /* Line 1806 of yacc.c  */
    8709 #line 2440 "parser.yy"
    8710     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8711     break;
    8712 
    8713   case 636:
    8714 
    8715 /* Line 1806 of yacc.c  */
    8716 #line 2442 "parser.yy"
    8717     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8718     break;
    8719 
    8720   case 637:
    8721 
    8722 /* Line 1806 of yacc.c  */
    8723 #line 2447 "parser.yy"
     8447#line 2460 "parser.yy"
    87248448    {
    87258449                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    87288452    break;
    87298453
    8730   case 638:
    8731 
    8732 /* Line 1806 of yacc.c  */
    8733 #line 2452 "parser.yy"
     8454  case 633:
     8455
     8456/* Line 1806 of yacc.c  */
     8457#line 2465 "parser.yy"
    87348458    {
    87358459                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    87388462    break;
    87398463
     8464  case 634:
     8465
     8466/* Line 1806 of yacc.c  */
     8467#line 2473 "parser.yy"
     8468    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8469    break;
     8470
     8471  case 635:
     8472
     8473/* Line 1806 of yacc.c  */
     8474#line 2475 "parser.yy"
     8475    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8476    break;
     8477
     8478  case 636:
     8479
     8480/* Line 1806 of yacc.c  */
     8481#line 2477 "parser.yy"
     8482    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8483    break;
     8484
     8485  case 637:
     8486
     8487/* Line 1806 of yacc.c  */
     8488#line 2482 "parser.yy"
     8489    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8490    break;
     8491
     8492  case 638:
     8493
     8494/* Line 1806 of yacc.c  */
     8495#line 2484 "parser.yy"
     8496    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8497    break;
     8498
    87408499  case 639:
    87418500
    87428501/* Line 1806 of yacc.c  */
    8743 #line 2460 "parser.yy"
     8502#line 2489 "parser.yy"
     8503    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8504    break;
     8505
     8506  case 640:
     8507
     8508/* Line 1806 of yacc.c  */
     8509#line 2491 "parser.yy"
     8510    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8511    break;
     8512
     8513  case 642:
     8514
     8515/* Line 1806 of yacc.c  */
     8516#line 2506 "parser.yy"
     8517    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8518    break;
     8519
     8520  case 643:
     8521
     8522/* Line 1806 of yacc.c  */
     8523#line 2508 "parser.yy"
     8524    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8525    break;
     8526
     8527  case 644:
     8528
     8529/* Line 1806 of yacc.c  */
     8530#line 2513 "parser.yy"
     8531    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8532    break;
     8533
     8534  case 645:
     8535
     8536/* Line 1806 of yacc.c  */
     8537#line 2515 "parser.yy"
     8538    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8539    break;
     8540
     8541  case 646:
     8542
     8543/* Line 1806 of yacc.c  */
     8544#line 2517 "parser.yy"
    87448545    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87458546    break;
    87468547
    8747   case 640:
    8748 
    8749 /* Line 1806 of yacc.c  */
    8750 #line 2462 "parser.yy"
     8548  case 647:
     8549
     8550/* Line 1806 of yacc.c  */
     8551#line 2519 "parser.yy"
    87518552    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87528553    break;
    87538554
    8754   case 641:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2464 "parser.yy"
     8555  case 648:
     8556
     8557/* Line 1806 of yacc.c  */
     8558#line 2521 "parser.yy"
    87588559    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87598560    break;
    87608561
    8761   case 642:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2469 "parser.yy"
     8562  case 650:
     8563
     8564/* Line 1806 of yacc.c  */
     8565#line 2527 "parser.yy"
     8566    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8567    break;
     8568
     8569  case 651:
     8570
     8571/* Line 1806 of yacc.c  */
     8572#line 2529 "parser.yy"
     8573    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8574    break;
     8575
     8576  case 652:
     8577
     8578/* Line 1806 of yacc.c  */
     8579#line 2531 "parser.yy"
     8580    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8581    break;
     8582
     8583  case 653:
     8584
     8585/* Line 1806 of yacc.c  */
     8586#line 2536 "parser.yy"
     8587    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8588    break;
     8589
     8590  case 654:
     8591
     8592/* Line 1806 of yacc.c  */
     8593#line 2538 "parser.yy"
     8594    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8595    break;
     8596
     8597  case 655:
     8598
     8599/* Line 1806 of yacc.c  */
     8600#line 2540 "parser.yy"
     8601    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8602    break;
     8603
     8604  case 656:
     8605
     8606/* Line 1806 of yacc.c  */
     8607#line 2546 "parser.yy"
     8608    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8609    break;
     8610
     8611  case 657:
     8612
     8613/* Line 1806 of yacc.c  */
     8614#line 2548 "parser.yy"
     8615    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8616    break;
     8617
     8618  case 659:
     8619
     8620/* Line 1806 of yacc.c  */
     8621#line 2554 "parser.yy"
     8622    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8623    break;
     8624
     8625  case 660:
     8626
     8627/* Line 1806 of yacc.c  */
     8628#line 2556 "parser.yy"
     8629    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8630    break;
     8631
     8632  case 661:
     8633
     8634/* Line 1806 of yacc.c  */
     8635#line 2558 "parser.yy"
     8636    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8637    break;
     8638
     8639  case 662:
     8640
     8641/* Line 1806 of yacc.c  */
     8642#line 2560 "parser.yy"
     8643    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8644    break;
     8645
     8646  case 664:
     8647
     8648/* Line 1806 of yacc.c  */
     8649#line 2575 "parser.yy"
     8650    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8651    break;
     8652
     8653  case 665:
     8654
     8655/* Line 1806 of yacc.c  */
     8656#line 2577 "parser.yy"
     8657    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8658    break;
     8659
     8660  case 666:
     8661
     8662/* Line 1806 of yacc.c  */
     8663#line 2582 "parser.yy"
     8664    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8665    break;
     8666
     8667  case 667:
     8668
     8669/* Line 1806 of yacc.c  */
     8670#line 2584 "parser.yy"
     8671    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8672    break;
     8673
     8674  case 668:
     8675
     8676/* Line 1806 of yacc.c  */
     8677#line 2586 "parser.yy"
     8678    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8679    break;
     8680
     8681  case 669:
     8682
     8683/* Line 1806 of yacc.c  */
     8684#line 2588 "parser.yy"
     8685    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8686    break;
     8687
     8688  case 670:
     8689
     8690/* Line 1806 of yacc.c  */
     8691#line 2590 "parser.yy"
     8692    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8693    break;
     8694
     8695  case 672:
     8696
     8697/* Line 1806 of yacc.c  */
     8698#line 2596 "parser.yy"
     8699    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8700    break;
     8701
     8702  case 673:
     8703
     8704/* Line 1806 of yacc.c  */
     8705#line 2598 "parser.yy"
     8706    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8707    break;
     8708
     8709  case 674:
     8710
     8711/* Line 1806 of yacc.c  */
     8712#line 2600 "parser.yy"
     8713    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8714    break;
     8715
     8716  case 675:
     8717
     8718/* Line 1806 of yacc.c  */
     8719#line 2605 "parser.yy"
     8720    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8721    break;
     8722
     8723  case 676:
     8724
     8725/* Line 1806 of yacc.c  */
     8726#line 2607 "parser.yy"
     8727    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8728    break;
     8729
     8730  case 677:
     8731
     8732/* Line 1806 of yacc.c  */
     8733#line 2609 "parser.yy"
     8734    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8735    break;
     8736
     8737  case 679:
     8738
     8739/* Line 1806 of yacc.c  */
     8740#line 2616 "parser.yy"
    87658741    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87668742    break;
    87678743
    8768   case 643:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2471 "parser.yy"
     8744  case 681:
     8745
     8746/* Line 1806 of yacc.c  */
     8747#line 2627 "parser.yy"
     8748    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8749    break;
     8750
     8751  case 682:
     8752
     8753/* Line 1806 of yacc.c  */
     8754#line 2630 "parser.yy"
     8755    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8756    break;
     8757
     8758  case 683:
     8759
     8760/* Line 1806 of yacc.c  */
     8761#line 2632 "parser.yy"
     8762    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8763    break;
     8764
     8765  case 684:
     8766
     8767/* Line 1806 of yacc.c  */
     8768#line 2635 "parser.yy"
     8769    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8770    break;
     8771
     8772  case 685:
     8773
     8774/* Line 1806 of yacc.c  */
     8775#line 2637 "parser.yy"
     8776    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8777    break;
     8778
     8779  case 686:
     8780
     8781/* Line 1806 of yacc.c  */
     8782#line 2639 "parser.yy"
     8783    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8784    break;
     8785
     8786  case 688:
     8787
     8788/* Line 1806 of yacc.c  */
     8789#line 2653 "parser.yy"
     8790    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8791    break;
     8792
     8793  case 689:
     8794
     8795/* Line 1806 of yacc.c  */
     8796#line 2655 "parser.yy"
     8797    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8798    break;
     8799
     8800  case 690:
     8801
     8802/* Line 1806 of yacc.c  */
     8803#line 2660 "parser.yy"
     8804    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8805    break;
     8806
     8807  case 691:
     8808
     8809/* Line 1806 of yacc.c  */
     8810#line 2662 "parser.yy"
     8811    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8812    break;
     8813
     8814  case 692:
     8815
     8816/* Line 1806 of yacc.c  */
     8817#line 2664 "parser.yy"
     8818    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8819    break;
     8820
     8821  case 693:
     8822
     8823/* Line 1806 of yacc.c  */
     8824#line 2666 "parser.yy"
     8825    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8826    break;
     8827
     8828  case 694:
     8829
     8830/* Line 1806 of yacc.c  */
     8831#line 2668 "parser.yy"
     8832    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8833    break;
     8834
     8835  case 696:
     8836
     8837/* Line 1806 of yacc.c  */
     8838#line 2674 "parser.yy"
    87728839    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87738840    break;
    87748841
    8775   case 644:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2476 "parser.yy"
    8779     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8780     break;
    8781 
    8782   case 645:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2478 "parser.yy"
     8842  case 697:
     8843
     8844/* Line 1806 of yacc.c  */
     8845#line 2676 "parser.yy"
     8846    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8847    break;
     8848
     8849  case 698:
     8850
     8851/* Line 1806 of yacc.c  */
     8852#line 2678 "parser.yy"
     8853    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8854    break;
     8855
     8856  case 699:
     8857
     8858/* Line 1806 of yacc.c  */
     8859#line 2683 "parser.yy"
    87868860    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87878861    break;
    87888862
    8789   case 647:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2493 "parser.yy"
    8793     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8794     break;
    8795 
    8796   case 648:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2495 "parser.yy"
    8800     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8801     break;
    8802 
    8803   case 649:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2500 "parser.yy"
    8807     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8808     break;
    8809 
    8810   case 650:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2502 "parser.yy"
    8814     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8815     break;
    8816 
    8817   case 651:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2504 "parser.yy"
    8821     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8822     break;
    8823 
    8824   case 652:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2506 "parser.yy"
    8828     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8829     break;
    8830 
    8831   case 653:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2508 "parser.yy"
     8863  case 700:
     8864
     8865/* Line 1806 of yacc.c  */
     8866#line 2685 "parser.yy"
    88358867    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88368868    break;
    88378869
    8838   case 655:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2514 "parser.yy"
    8842     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8843     break;
    8844 
    8845   case 656:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2516 "parser.yy"
    8849     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8850     break;
    8851 
    8852   case 657:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2518 "parser.yy"
    8856     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8857     break;
    8858 
    8859   case 658:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2523 "parser.yy"
    8863     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8864     break;
    8865 
    8866   case 659:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2525 "parser.yy"
    8870     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8871     break;
    8872 
    8873   case 660:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2527 "parser.yy"
    8877     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8878     break;
    8879 
    8880   case 661:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2533 "parser.yy"
    8884     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8885     break;
    8886 
    8887   case 662:
    8888 
    8889 /* Line 1806 of yacc.c  */
    8890 #line 2535 "parser.yy"
    8891     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8892     break;
    8893 
    8894   case 664:
    8895 
    8896 /* Line 1806 of yacc.c  */
    8897 #line 2541 "parser.yy"
    8898     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8899     break;
    8900 
    8901   case 665:
    8902 
    8903 /* Line 1806 of yacc.c  */
    8904 #line 2543 "parser.yy"
    8905     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8906     break;
    8907 
    8908   case 666:
    8909 
    8910 /* Line 1806 of yacc.c  */
    8911 #line 2545 "parser.yy"
    8912     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8913     break;
    8914 
    8915   case 667:
    8916 
    8917 /* Line 1806 of yacc.c  */
    8918 #line 2547 "parser.yy"
    8919     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8920     break;
    8921 
    8922   case 669:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2562 "parser.yy"
    8926     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8927     break;
    8928 
    8929   case 670:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2564 "parser.yy"
    8933     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8934     break;
    8935 
    8936   case 671:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2569 "parser.yy"
    8940     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8941     break;
    8942 
    8943   case 672:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2571 "parser.yy"
    8947     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8948     break;
    8949 
    8950   case 673:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2573 "parser.yy"
    8954     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8955     break;
    8956 
    8957   case 674:
    8958 
    8959 /* Line 1806 of yacc.c  */
    8960 #line 2575 "parser.yy"
    8961     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8962     break;
    8963 
    8964   case 675:
    8965 
    8966 /* Line 1806 of yacc.c  */
    8967 #line 2577 "parser.yy"
    8968     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8969     break;
    8970 
    8971   case 677:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2583 "parser.yy"
    8975     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8976     break;
    8977 
    8978   case 678:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2585 "parser.yy"
    8982     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8983     break;
    8984 
    8985   case 679:
    8986 
    8987 /* Line 1806 of yacc.c  */
    8988 #line 2587 "parser.yy"
    8989     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8990     break;
    8991 
    8992   case 680:
    8993 
    8994 /* Line 1806 of yacc.c  */
    8995 #line 2592 "parser.yy"
    8996     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8997     break;
    8998 
    8999   case 681:
    9000 
    9001 /* Line 1806 of yacc.c  */
    9002 #line 2594 "parser.yy"
    9003     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    9004     break;
    9005 
    9006   case 682:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2596 "parser.yy"
    9010     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9011     break;
    9012 
    9013   case 684:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2603 "parser.yy"
    9017     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    9018     break;
    9019 
    9020   case 686:
    9021 
    9022 /* Line 1806 of yacc.c  */
    9023 #line 2614 "parser.yy"
    9024     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    9025     break;
    9026 
    9027   case 687:
    9028 
    9029 /* Line 1806 of yacc.c  */
    9030 #line 2617 "parser.yy"
     8870  case 703:
     8871
     8872/* Line 1806 of yacc.c  */
     8873#line 2695 "parser.yy"
     8874    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8875    break;
     8876
     8877  case 706:
     8878
     8879/* Line 1806 of yacc.c  */
     8880#line 2705 "parser.yy"
     8881    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8882    break;
     8883
     8884  case 707:
     8885
     8886/* Line 1806 of yacc.c  */
     8887#line 2707 "parser.yy"
     8888    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8889    break;
     8890
     8891  case 708:
     8892
     8893/* Line 1806 of yacc.c  */
     8894#line 2709 "parser.yy"
     8895    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8896    break;
     8897
     8898  case 709:
     8899
     8900/* Line 1806 of yacc.c  */
     8901#line 2711 "parser.yy"
     8902    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8903    break;
     8904
     8905  case 710:
     8906
     8907/* Line 1806 of yacc.c  */
     8908#line 2713 "parser.yy"
     8909    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8910    break;
     8911
     8912  case 711:
     8913
     8914/* Line 1806 of yacc.c  */
     8915#line 2715 "parser.yy"
     8916    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8917    break;
     8918
     8919  case 712:
     8920
     8921/* Line 1806 of yacc.c  */
     8922#line 2722 "parser.yy"
     8923    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8924    break;
     8925
     8926  case 713:
     8927
     8928/* Line 1806 of yacc.c  */
     8929#line 2724 "parser.yy"
     8930    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8931    break;
     8932
     8933  case 714:
     8934
     8935/* Line 1806 of yacc.c  */
     8936#line 2726 "parser.yy"
     8937    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8938    break;
     8939
     8940  case 715:
     8941
     8942/* Line 1806 of yacc.c  */
     8943#line 2728 "parser.yy"
     8944    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8945    break;
     8946
     8947  case 716:
     8948
     8949/* Line 1806 of yacc.c  */
     8950#line 2730 "parser.yy"
     8951    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8952    break;
     8953
     8954  case 717:
     8955
     8956/* Line 1806 of yacc.c  */
     8957#line 2732 "parser.yy"
     8958    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8959    break;
     8960
     8961  case 718:
     8962
     8963/* Line 1806 of yacc.c  */
     8964#line 2734 "parser.yy"
     8965    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8966    break;
     8967
     8968  case 719:
     8969
     8970/* Line 1806 of yacc.c  */
     8971#line 2736 "parser.yy"
     8972    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8973    break;
     8974
     8975  case 720:
     8976
     8977/* Line 1806 of yacc.c  */
     8978#line 2738 "parser.yy"
     8979    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8980    break;
     8981
     8982  case 721:
     8983
     8984/* Line 1806 of yacc.c  */
     8985#line 2740 "parser.yy"
     8986    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8987    break;
     8988
     8989  case 722:
     8990
     8991/* Line 1806 of yacc.c  */
     8992#line 2745 "parser.yy"
    90318993    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90328994    break;
    90338995
    9034   case 688:
    9035 
    9036 /* Line 1806 of yacc.c  */
    9037 #line 2619 "parser.yy"
    9038     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    9039     break;
    9040 
    9041   case 689:
    9042 
    9043 /* Line 1806 of yacc.c  */
    9044 #line 2622 "parser.yy"
     8996  case 723:
     8997
     8998/* Line 1806 of yacc.c  */
     8999#line 2747 "parser.yy"
    90459000    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90469001    break;
    90479002
    9048   case 690:
    9049 
    9050 /* Line 1806 of yacc.c  */
    9051 #line 2624 "parser.yy"
    9052     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    9053     break;
    9054 
    9055   case 691:
    9056 
    9057 /* Line 1806 of yacc.c  */
    9058 #line 2626 "parser.yy"
    9059     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    9060     break;
    9061 
    9062   case 693:
    9063 
    9064 /* Line 1806 of yacc.c  */
    9065 #line 2640 "parser.yy"
    9066     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    9067     break;
    9068 
    9069   case 694:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2642 "parser.yy"
    9073     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    9074     break;
    9075 
    9076   case 695:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2647 "parser.yy"
    9080     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    9081     break;
    9082 
    9083   case 696:
    9084 
    9085 /* Line 1806 of yacc.c  */
    9086 #line 2649 "parser.yy"
    9087     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    9088     break;
    9089 
    9090   case 697:
    9091 
    9092 /* Line 1806 of yacc.c  */
    9093 #line 2651 "parser.yy"
    9094     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    9095     break;
    9096 
    9097   case 698:
    9098 
    9099 /* Line 1806 of yacc.c  */
    9100 #line 2653 "parser.yy"
    9101     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    9102     break;
    9103 
    9104   case 699:
    9105 
    9106 /* Line 1806 of yacc.c  */
    9107 #line 2655 "parser.yy"
    9108     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9109     break;
    9110 
    9111   case 701:
    9112 
    9113 /* Line 1806 of yacc.c  */
    9114 #line 2661 "parser.yy"
    9115     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    9116     break;
    9117 
    9118   case 702:
    9119 
    9120 /* Line 1806 of yacc.c  */
    9121 #line 2663 "parser.yy"
    9122     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    9123     break;
    9124 
    9125   case 703:
    9126 
    9127 /* Line 1806 of yacc.c  */
    9128 #line 2665 "parser.yy"
    9129     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9130     break;
    9131 
    9132   case 704:
    9133 
    9134 /* Line 1806 of yacc.c  */
    9135 #line 2670 "parser.yy"
    9136     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    9137     break;
    9138 
    9139   case 705:
    9140 
    9141 /* Line 1806 of yacc.c  */
    9142 #line 2672 "parser.yy"
    9143     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9144     break;
    9145 
    9146   case 708:
    9147 
    9148 /* Line 1806 of yacc.c  */
    9149 #line 2682 "parser.yy"
     9003  case 724:
     9004
     9005/* Line 1806 of yacc.c  */
     9006#line 2752 "parser.yy"
     9007    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9008    break;
     9009
     9010  case 725:
     9011
     9012/* Line 1806 of yacc.c  */
     9013#line 2754 "parser.yy"
     9014    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9015    break;
     9016
     9017  case 727:
     9018
     9019/* Line 1806 of yacc.c  */
     9020#line 2781 "parser.yy"
    91509021    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    91519022    break;
    91529023
    9153   case 711:
    9154 
    9155 /* Line 1806 of yacc.c  */
    9156 #line 2692 "parser.yy"
     9024  case 731:
     9025
     9026/* Line 1806 of yacc.c  */
     9027#line 2792 "parser.yy"
    91579028    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91589029    break;
    91599030
    9160   case 712:
    9161 
    9162 /* Line 1806 of yacc.c  */
    9163 #line 2694 "parser.yy"
     9031  case 732:
     9032
     9033/* Line 1806 of yacc.c  */
     9034#line 2794 "parser.yy"
    91649035    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91659036    break;
    91669037
    9167   case 713:
    9168 
    9169 /* Line 1806 of yacc.c  */
    9170 #line 2696 "parser.yy"
     9038  case 733:
     9039
     9040/* Line 1806 of yacc.c  */
     9041#line 2796 "parser.yy"
    91719042    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91729043    break;
    91739044
    9174   case 714:
    9175 
    9176 /* Line 1806 of yacc.c  */
    9177 #line 2698 "parser.yy"
     9045  case 734:
     9046
     9047/* Line 1806 of yacc.c  */
     9048#line 2798 "parser.yy"
    91789049    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91799050    break;
    91809051
    9181   case 715:
    9182 
    9183 /* Line 1806 of yacc.c  */
    9184 #line 2700 "parser.yy"
     9052  case 735:
     9053
     9054/* Line 1806 of yacc.c  */
     9055#line 2800 "parser.yy"
    91859056    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91869057    break;
    91879058
    9188   case 716:
    9189 
    9190 /* Line 1806 of yacc.c  */
    9191 #line 2702 "parser.yy"
     9059  case 736:
     9060
     9061/* Line 1806 of yacc.c  */
     9062#line 2802 "parser.yy"
    91929063    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91939064    break;
    91949065
    9195   case 717:
    9196 
    9197 /* Line 1806 of yacc.c  */
    9198 #line 2709 "parser.yy"
     9066  case 737:
     9067
     9068/* Line 1806 of yacc.c  */
     9069#line 2809 "parser.yy"
    91999070    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    92009071    break;
    92019072
    9202   case 718:
    9203 
    9204 /* Line 1806 of yacc.c  */
    9205 #line 2711 "parser.yy"
     9073  case 738:
     9074
     9075/* Line 1806 of yacc.c  */
     9076#line 2811 "parser.yy"
     9077    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9078    break;
     9079
     9080  case 739:
     9081
     9082/* Line 1806 of yacc.c  */
     9083#line 2813 "parser.yy"
    92069084    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    92079085    break;
    92089086
    9209   case 719:
    9210 
    9211 /* Line 1806 of yacc.c  */
    9212 #line 2713 "parser.yy"
     9087  case 740:
     9088
     9089/* Line 1806 of yacc.c  */
     9090#line 2815 "parser.yy"
     9091    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9092    break;
     9093
     9094  case 741:
     9095
     9096/* Line 1806 of yacc.c  */
     9097#line 2817 "parser.yy"
    92139098    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    92149099    break;
    92159100
    9216   case 720:
    9217 
    9218 /* Line 1806 of yacc.c  */
    9219 #line 2715 "parser.yy"
    9220     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9221     break;
    9222 
    9223   case 721:
    9224 
    9225 /* Line 1806 of yacc.c  */
    9226 #line 2717 "parser.yy"
     9101  case 742:
     9102
     9103/* Line 1806 of yacc.c  */
     9104#line 2819 "parser.yy"
    92279105    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    92289106    break;
    92299107
    9230   case 722:
    9231 
    9232 /* Line 1806 of yacc.c  */
    9233 #line 2719 "parser.yy"
    9234     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9235     break;
    9236 
    9237   case 723:
    9238 
    9239 /* Line 1806 of yacc.c  */
    9240 #line 2721 "parser.yy"
    9241     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9242     break;
    9243 
    9244   case 724:
    9245 
    9246 /* Line 1806 of yacc.c  */
    9247 #line 2723 "parser.yy"
    9248     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9249     break;
    9250 
    9251   case 725:
    9252 
    9253 /* Line 1806 of yacc.c  */
    9254 #line 2725 "parser.yy"
    9255     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9256     break;
    9257 
    9258   case 726:
    9259 
    9260 /* Line 1806 of yacc.c  */
    9261 #line 2727 "parser.yy"
    9262     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9263     break;
    9264 
    9265   case 727:
    9266 
    9267 /* Line 1806 of yacc.c  */
    9268 #line 2732 "parser.yy"
    9269     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9270     break;
    9271 
    9272   case 728:
    9273 
    9274 /* Line 1806 of yacc.c  */
    9275 #line 2734 "parser.yy"
    9276     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9277     break;
    9278 
    9279   case 729:
    9280 
    9281 /* Line 1806 of yacc.c  */
    9282 #line 2739 "parser.yy"
    9283     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9284     break;
    9285 
    9286   case 730:
    9287 
    9288 /* Line 1806 of yacc.c  */
    9289 #line 2741 "parser.yy"
    9290     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9291     break;
    9292 
    9293   case 732:
    9294 
    9295 /* Line 1806 of yacc.c  */
    9296 #line 2768 "parser.yy"
    9297     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9298     break;
    9299 
    9300   case 736:
    9301 
    9302 /* Line 1806 of yacc.c  */
    9303 #line 2779 "parser.yy"
    9304     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9305     break;
    9306 
    9307   case 737:
    9308 
    9309 /* Line 1806 of yacc.c  */
    9310 #line 2781 "parser.yy"
    9311     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9312     break;
    9313 
    9314   case 738:
    9315 
    9316 /* Line 1806 of yacc.c  */
    9317 #line 2783 "parser.yy"
    9318     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9319     break;
    9320 
    9321   case 739:
    9322 
    9323 /* Line 1806 of yacc.c  */
    9324 #line 2785 "parser.yy"
    9325     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9326     break;
    9327 
    9328   case 740:
    9329 
    9330 /* Line 1806 of yacc.c  */
    9331 #line 2787 "parser.yy"
    9332     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9333     break;
    9334 
    9335   case 741:
    9336 
    9337 /* Line 1806 of yacc.c  */
    9338 #line 2789 "parser.yy"
    9339     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9340     break;
    9341 
    9342   case 742:
    9343 
    9344 /* Line 1806 of yacc.c  */
    9345 #line 2796 "parser.yy"
    9346     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9347     break;
    9348 
    93499108  case 743:
    93509109
    93519110/* Line 1806 of yacc.c  */
    9352 #line 2798 "parser.yy"
    9353     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9111#line 2824 "parser.yy"
     9112    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    93549113    break;
    93559114
     
    93579116
    93589117/* Line 1806 of yacc.c  */
    9359 #line 2800 "parser.yy"
    9360     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9118#line 2829 "parser.yy"
     9119    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    93619120    break;
    93629121
     
    93649123
    93659124/* Line 1806 of yacc.c  */
    9366 #line 2802 "parser.yy"
    9367     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9125#line 2831 "parser.yy"
     9126    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    93689127    break;
    93699128
     
    93719130
    93729131/* Line 1806 of yacc.c  */
    9373 #line 2804 "parser.yy"
    9374     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9375     break;
    9376 
    9377   case 747:
    9378 
    9379 /* Line 1806 of yacc.c  */
    9380 #line 2806 "parser.yy"
    9381     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9382     break;
    9383 
    9384   case 748:
    9385 
    9386 /* Line 1806 of yacc.c  */
    9387 #line 2811 "parser.yy"
    9388     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     9132#line 2833 "parser.yy"
     9133    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    93899134    break;
    93909135
     
    93929137
    93939138/* Line 1806 of yacc.c  */
    9394 #line 2816 "parser.yy"
    9395     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     9139#line 2857 "parser.yy"
     9140    { (yyval.en) = 0; }
    93969141    break;
    93979142
     
    93999144
    94009145/* Line 1806 of yacc.c  */
    9401 #line 2818 "parser.yy"
    9402     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9403     break;
    9404 
    9405   case 751:
    9406 
    9407 /* Line 1806 of yacc.c  */
    9408 #line 2820 "parser.yy"
    9409     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9410     break;
    9411 
    9412   case 754:
    9413 
    9414 /* Line 1806 of yacc.c  */
    9415 #line 2844 "parser.yy"
    9416     { (yyval.en) = 0; }
    9417     break;
    9418 
    9419   case 755:
    9420 
    9421 /* Line 1806 of yacc.c  */
    9422 #line 2846 "parser.yy"
     9146#line 2859 "parser.yy"
    94239147    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    94249148    break;
     
    94279151
    94289152/* Line 1806 of yacc.c  */
    9429 #line 9430 "Parser/parser.cc"
     9153#line 9154 "Parser/parser.cc"
    94309154      default: break;
    94319155    }
     
    96589382
    96599383/* Line 2067 of yacc.c  */
    9660 #line 2849 "parser.yy"
     9384#line 2862 "parser.yy"
    96619385
    96629386// ----end of grammar----
  • src/Parser/parser.h

    rf18a711 r3078643  
    262262
    263263/* Line 2068 of yacc.c  */
    264 #line 110 "parser.yy"
     264#line 115 "parser.yy"
    265265
    266266        Token tok;
     
    271271        DeclarationNode::TypeClass tclass;
    272272        StatementNode *sn;
    273         ConstantNode *constant;
     273        ConstantExpr *constant;
     274        ForCtl *fctl;
    274275        LabelNode *label;
    275276        InitializerNode *in;
    276         OperatorNode::Type op;
     277        OperKinds op;
    277278        bool flag;
    278279
     
    280281
    281282/* Line 2068 of yacc.c  */
    282 #line 283 "Parser/parser.h"
     283#line 284 "Parser/parser.h"
    283284} YYSTYPE;
    284285# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    rf18a711 r3078643  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Aug  5 08:15:57 2016
    13 // Update Count     : 1721
     12// Last Modified On : Wed Aug 10 13:09:53 2016
     13// Update Count     : 1844
    1414//
    1515
     
    6060std::stack< LinkageSpec::Type > linkageStack;
    6161TypedefTable typedefTable;
     62
     63void appendStr( std::string &to, std::string *from ) {
     64        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
     65        to.insert( to.length() - 1, from->substr( 1, from->length() - 2 ) );
     66} // appendStr
    6267%}
    6368
     
    116121        DeclarationNode::TypeClass tclass;
    117122        StatementNode *sn;
    118         ConstantNode *constant;
     123        ConstantExpr *constant;
     124        ForCtl *fctl;
    119125        LabelNode *label;
    120126        InitializerNode *in;
    121         OperatorNode::Type op;
     127        OperKinds op;
    122128        bool flag;
    123129}
     
    128134
    129135// expressions
    130 %type<constant> constant
     136%type<en> constant
    131137%type<en> tuple                                                 tuple_expression_list
    132 %type<op> ptrref_operator
    133 %type<en> unary_operator                                assignment_operator
     138%type<op> ptrref_operator                               unary_operator                          assignment_operator
    134139%type<en> primary_expression                    postfix_expression                      unary_expression
    135140%type<en> cast_expression                               multiplicative_expression       additive_expression                     shift_expression
     
    138143%type<en> constant_expression                   assignment_expression           assignment_expression_opt
    139144%type<en> comma_expression                              comma_expression_opt
    140 %type<en> argument_expression_list              argument_expression                     for_control_expression          assignment_opt
     145//%type<en> argument_expression_list            argument_expression                     for_control_expression          assignment_opt
     146%type<en> argument_expression_list              argument_expression                     assignment_opt
     147%type<fctl> for_control_expression
    141148%type<en> subrange
    142149%type<en> asm_operands_opt asm_operands_list asm_operand
    143150%type<label> label_list
    144 %type<constant> asm_clobbers_list_opt
     151%type<en> asm_clobbers_list_opt
    145152%type<flag> asm_volatile_opt
    146153
     
    305312constant:
    306313                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    307 INTEGERconstant                                                                 { $$ = makeConstantInteger( *$1 ); }
    308         | FLOATINGconstant                                                      { $$ = makeConstantFloat( *$1 ); }
    309         | CHARACTERconstant                                                     { $$ = makeConstantChar( *$1 ); }
     314INTEGERconstant                                                                 { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
     315        | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
     316        | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( *$1 ) ); }
    310317        ;
    311318
     
    332339
    333340string_literal_list:                                                                    // juxtaposed strings are concatenated
    334         STRINGliteral                                                           { $$ = makeConstantStr( *$1 ); }
    335         | string_literal_list STRINGliteral                     { $$ = $1->appendstr( $2 ); }
     341        STRINGliteral                                                           { $$ = build_constantStr( *$1 ); }
     342        | string_literal_list STRINGliteral
     343                {
     344                        appendStr( $1->get_constant()->get_value(), $2 );
     345                        delete $2;                                                                      // allocated by lexer
     346                        $$ = $1;
     347                }
    336348        ;
    337349
     
    340352primary_expression:
    341353        IDENTIFIER                                                                                      // typedef name cannot be used as a variable name
    342                 { $$ = new VarRefNode( $1 ); }
     354                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    343355        | zero_one
    344                 { $$ = new VarRefNode( $1 ); }
     356                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    345357        | '(' comma_expression ')'
    346358                { $$ = $2; }
    347359        | '(' compound_statement ')'                                            // GCC, lambda expression
    348                 { $$ = new ValofExprNode( $2 ); }
     360        { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
    349361        ;
    350362
     
    356368                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
    357369                // equivalent to the old x[i,j].
    358                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Index, $1, $4 ) ); }
     370                { $$ = new ExpressionNode( build_binary_val( OperKinds::Index, $1, $4 ) ); }
    359371        | postfix_expression '(' argument_expression_list ')'
    360                 { $$ = new CompositeExprNode( $1, $3 ); }
     372                { $$ = new ExpressionNode( build_func( $1, $3 ) ); }
    361373        // ambiguity with .0 so space required after field-selection, e.g.
    362374                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    363375        | postfix_expression '.' no_attr_identifier
    364                 { $$ = new CompositeExprNode2( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }
     376                { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
    365377        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    366378        | postfix_expression ARROW no_attr_identifier
    367                 { $$ = new CompositeExprNode2( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }
     379                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
    368380        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    369381        | postfix_expression ICR
    370                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::IncrPost, $1 ) ); }
     382                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }
    371383        | postfix_expression DECR
    372                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::DecrPost, $1 ) ); }
     384                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
    373385        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    374                 { $$ = new CompoundLiteralNode( $2, new InitializerNode( $5, true ) ); }
     386                { $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
    375387        | postfix_expression '{' argument_expression_list '}' // CFA
    376388                {
    377                         Token fn; fn.str = new std::string( "?{}" ); // location undefined
    378                         $$ = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) );
     389                        Token fn;
     390                        fn.str = new std::string( "?{}" ); // location undefined
     391                        $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_link( $3 ) ) );
    379392                }
    380393        ;
     
    390403                { $$ = 0; }                                                                             // use default argument
    391404        | assignment_expression
    392         | no_attr_identifier ':' assignment_expression
    393                 { $$ = $3->set_argName( $1 ); }
    394                 // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient
    395                 // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    396                 // with an appropriate semantic check.
    397         | '[' push assignment_expression pop ']' ':' assignment_expression
    398                 { $$ = $7->set_argName( $3 ); }
    399         | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    400                 { $$ = $9->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
    401405        ;
    402406
     
    408412field:                                                                                                  // CFA, tuple field selector
    409413        no_attr_identifier
    410                 { $$ = new VarRefNode( $1 ); }
     414                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    411415        // ambiguity with .0 so space required after field-selection, e.g.
    412416                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    413417        | no_attr_identifier '.' field
    414                 { $$ = new CompositeExprNode2( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }
     418                { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); }
    415419        | no_attr_identifier '.' '[' push field_list pop ']'
    416                 { $$ = new CompositeExprNode2( build_fieldSel( $5, new VarRefNode( $1 ) ) ); }
     420                { $$ = new ExpressionNode( build_fieldSel( $5, build_varref( $1 ) ) ); }
    417421        | no_attr_identifier ARROW field
    418                 { $$ = new CompositeExprNode2( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }
     422                { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); }
    419423        | no_attr_identifier ARROW '[' push field_list pop ']'
    420                 { $$ = new CompositeExprNode2( build_pfieldSel( $5, new VarRefNode( $1 ) ) ); }
     424                { $$ = new ExpressionNode( build_pfieldSel( $5, build_varref( $1 ) ) ); }
    421425        ;
    422426
     
    428432                { $$ = $1; }
    429433        | string_literal_list
    430                 { $$ = $1; }
     434                { $$ = new ExpressionNode( $1 ); }
    431435        | EXTENSION cast_expression                                                     // GCC
    432436                { $$ = $2->set_extension( true ); }
     
    435439                //              { * int X; } // CFA declaration of pointer to int
    436440        | ptrref_operator cast_expression                                       // CFA
    437                 { $$ = $1 == OperatorNode::AddressOf ? (ExpressionNode*) new CompositeExprNode2( build_addressOf( $2 ) )
    438                                                                                         : (ExpressionNode*)new CompositeExprNode( new OperatorNode ( $1 ), $2 ); }
     441                {
     442                        switch ( $1 ) {
     443                          case OperKinds::AddressOf:
     444                                $$ = new ExpressionNode( build_addressOf( $2 ) );
     445                                break;
     446                          case OperKinds::PointTo:
     447                                $$ = new ExpressionNode( build_unary_val( $1, $2 ) );
     448                                break;
     449                          default:
     450                                assert( false );
     451                        }
     452                }
    439453        | unary_operator cast_expression
    440                 { $$ = new CompositeExprNode( $1, $2 ); }
     454                { $$ = new ExpressionNode( build_unary_val( $1, $2 ) ); }
    441455        | ICR unary_expression
    442                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::Incr, $2 ) ); }
     456                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Incr, $2 ) ); }
    443457        | DECR unary_expression
    444                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::Decr, $2 ) ); }
     458                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }
    445459        | SIZEOF unary_expression
    446                 { $$ = new CompositeExprNode2( build_sizeOf( $2 ) ); }
     460                { $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); }
    447461        | SIZEOF '(' type_name_no_function ')'
    448                 { $$ = new CompositeExprNode2( build_sizeOf( new TypeValueNode( $3 ) ) ); }
     462                { $$ = new ExpressionNode( build_sizeOftype( $3 ) ); }
     463        | ALIGNOF unary_expression                                                      // GCC, variable alignment
     464                { $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); }
     465        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
     466                { $$ = new ExpressionNode( build_alignOftype( $3 ) ); }
    449467        | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
    450                 { $$ = new CompositeExprNode2( build_offsetOf( new TypeValueNode( $3 ), new VarRefNode( $5 ) ) ); }
     468                { $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
    451469        | ATTR_IDENTIFIER
    452                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ) ); }
     470                { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), nullptr ) ); }
     471        | ATTR_IDENTIFIER '(' argument_expression ')'
     472                { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), $3 ) ); }
    453473        | ATTR_IDENTIFIER '(' type_name ')'
    454                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 ) ); }
    455         | ATTR_IDENTIFIER '(' argument_expression ')'
    456                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
    457         | ALIGNOF unary_expression                                                      // GCC, variable alignment
    458                 { $$ = new CompositeExprNode2( build_alignOf( $2 ) ); }
    459         | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    460                 { $$ = new CompositeExprNode2( build_alignOf( new TypeValueNode( $3 ) ) ); }
     474                { $$ = new ExpressionNode( build_attrtype( build_varref( $1 ), $3 ) ); }
    461475//      | ANDAND IDENTIFIER                                                                     // GCC, address of label
    462 //              { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
     476//              { $$ = new ExpressionNode( new OperatorNode( OperKinds::LabelAddress ), new ExpressionNode( build_varref( $2, true ) ); }
    463477        ;
    464478
    465479ptrref_operator:
    466         '*'                                                                                     { $$ = OperatorNode::PointTo; }
    467         | '&'                                                                           { $$ = OperatorNode::AddressOf; }
     480        '*'                                                                                     { $$ = OperKinds::PointTo; }
     481        | '&'                                                                           { $$ = OperKinds::AddressOf; }
    468482                // GCC, address of label must be handled by semantic check for ref,ref,label
    469         | ANDAND                                                                        { $$ = OperatorNode::And; }
     483//      | ANDAND                                                                        { $$ = OperKinds::And; }
    470484        ;
    471485
    472486unary_operator:
    473         '+'                                                                                     { $$ = new OperatorNode( OperatorNode::UnPlus ); }
    474         | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
    475         | '!'                                                                           { $$ = new OperatorNode( OperatorNode::Neg ); }
    476         | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
     487        '+'                                                                                     { $$ = OperKinds::UnPlus; }
     488        | '-'                                                                           { $$ = OperKinds::UnMinus; }
     489        | '!'                                                                           { $$ = OperKinds::Neg; }
     490        | '~'                                                                           { $$ = OperKinds::BitNeg; }
    477491        ;
    478492
     
    480494        unary_expression
    481495        | '(' type_name_no_function ')' cast_expression
    482                 { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     496                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    483497        | '(' type_name_no_function ')' tuple
    484                 { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     498                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    485499        ;
    486500
     
    488502        cast_expression
    489503        | multiplicative_expression '*' cast_expression
    490                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Mul, $1, $3 ) ); }
     504                { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); }
    491505        | multiplicative_expression '/' cast_expression
    492                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Div, $1, $3 ) ); }
     506                { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); }
    493507        | multiplicative_expression '%' cast_expression
    494                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Mod, $1, $3 ) ); }
     508                { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }
    495509        ;
    496510
     
    498512        multiplicative_expression
    499513        | additive_expression '+' multiplicative_expression
    500                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Plus, $1, $3 ) ); }
     514                { $$ = new ExpressionNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); }
    501515        | additive_expression '-' multiplicative_expression
    502                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Minus, $1, $3 ) ); }
     516                { $$ = new ExpressionNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); }
    503517        ;
    504518
     
    506520        additive_expression
    507521        | shift_expression LS additive_expression
    508                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LShift, $1, $3 ) ); }
     522                { $$ = new ExpressionNode( build_binary_val( OperKinds::LShift, $1, $3 ) ); }
    509523        | shift_expression RS additive_expression
    510                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::RShift, $1, $3 ) ); }
     524                { $$ = new ExpressionNode( build_binary_val( OperKinds::RShift, $1, $3 ) ); }
    511525        ;
    512526
     
    514528        shift_expression
    515529        | relational_expression '<' shift_expression
    516                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LThan, $1, $3 ) ); }
     530                { $$ = new ExpressionNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); }
    517531        | relational_expression '>' shift_expression
    518                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::GThan, $1, $3 ) ); }
     532                { $$ = new ExpressionNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); }
    519533        | relational_expression LE shift_expression
    520                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LEThan, $1, $3 ) ); }
     534                { $$ = new ExpressionNode( build_binary_val( OperKinds::LEThan, $1, $3 ) ); }
    521535        | relational_expression GE shift_expression
    522                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::GEThan, $1, $3 ) ); }
     536                { $$ = new ExpressionNode( build_binary_val( OperKinds::GEThan, $1, $3 ) ); }
    523537        ;
    524538
     
    526540        relational_expression
    527541        | equality_expression EQ relational_expression
    528                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Eq, $1, $3 ) ); }
     542                { $$ = new ExpressionNode( build_binary_val( OperKinds::Eq, $1, $3 ) ); }
    529543        | equality_expression NE relational_expression
    530                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Neq, $1, $3 ) ); }
     544                { $$ = new ExpressionNode( build_binary_val( OperKinds::Neq, $1, $3 ) ); }
    531545        ;
    532546
     
    534548        equality_expression
    535549        | AND_expression '&' equality_expression
    536                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::BitAnd, $1, $3 ) ); }
     550                { $$ = new ExpressionNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); }
    537551        ;
    538552
     
    540554        AND_expression
    541555        | exclusive_OR_expression '^' AND_expression
    542                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Xor, $1, $3 ) ); }
     556                { $$ = new ExpressionNode( build_binary_val( OperKinds::Xor, $1, $3 ) ); }
    543557        ;
    544558
     
    546560        exclusive_OR_expression
    547561        | inclusive_OR_expression '|' exclusive_OR_expression
    548                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::BitOr, $1, $3 ) ); }
     562                { $$ = new ExpressionNode( build_binary_val( OperKinds::BitOr, $1, $3 ) ); }
    549563        ;
    550564
     
    552566        inclusive_OR_expression
    553567        | logical_AND_expression ANDAND inclusive_OR_expression
    554                 { $$ = new CompositeExprNode2( build_and_or( $1, $3, true ) ); }
     568                { $$ = new ExpressionNode( build_and_or( $1, $3, true ) ); }
    555569        ;
    556570
     
    558572        logical_AND_expression
    559573        | logical_OR_expression OROR logical_AND_expression
    560                 { $$ = new CompositeExprNode2( build_and_or( $1, $3, false ) ); }
     574                { $$ = new ExpressionNode( build_and_or( $1, $3, false ) ); }
    561575        ;
    562576
     
    564578        logical_OR_expression
    565579        | logical_OR_expression '?' comma_expression ':' conditional_expression
    566                 { $$ = new CompositeExprNode2( build_cond( $1, $3, $5 ) ); }
     580                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
     581                // FIX ME: this hack computes $1 twice
    567582        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    568                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
     583                { $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
    569584        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    570                 { $$ = new CompositeExprNode2( build_cond( $1, $3, $5 ) ); }
     585                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    571586        ;
    572587
     
    578593                // CFA, assignment is separated from assignment_operator to ensure no assignment operations for tuples
    579594        conditional_expression
    580         | unary_expression '=' assignment_expression
    581                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
    582595        | unary_expression assignment_operator assignment_expression
    583                 { $$ = new CompositeExprNode( $2, $1, $3 ); }
     596                { $$ = new ExpressionNode( build_binary_ptr( $2, $1, $3 ) ); }
    584597        | tuple assignment_opt                                                          // CFA, tuple expression
    585                 { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
     598                { $$ = ( $2 == 0 ) ? $1 : new ExpressionNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
    586599        ;
    587600
    588601assignment_expression_opt:
    589602        // empty
    590                 { $$ = new NullExprNode; }
     603                { $$ = nullptr; }
    591604        | assignment_expression
     605        ;
     606
     607assignment_operator:
     608        '='                                                                                     { $$ = OperKinds::Assign; }
     609        | MULTassign                                                            { $$ = OperKinds::MulAssn; }
     610        | DIVassign                                                                     { $$ = OperKinds::DivAssn; }
     611        | MODassign                                                                     { $$ = OperKinds::ModAssn; }
     612        | PLUSassign                                                            { $$ = OperKinds::PlusAssn; }
     613        | MINUSassign                                                           { $$ = OperKinds::MinusAssn; }
     614        | LSassign                                                                      { $$ = OperKinds::LSAssn; }
     615        | RSassign                                                                      { $$ = OperKinds::RSAssn; }
     616        | ANDassign                                                                     { $$ = OperKinds::AndAssn; }
     617        | ERassign                                                                      { $$ = OperKinds::ERAssn; }
     618        | ORassign                                                                      { $$ = OperKinds::OrAssn; }
    592619        ;
    593620
     
    596623                // comma_expression in new_identifier_parameter_array and new_abstract_array
    597624        '[' ']'
    598                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     625                { $$ = new ExpressionNode( build_tuple() ); }
    599626        | '[' push assignment_expression pop ']'
    600                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), $3 ); }
     627                { $$ = new ExpressionNode( build_tuple( $3 ) ); }
    601628        | '[' push ',' tuple_expression_list pop ']'
    602                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( $4 ) ); }
     629                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( $4 ) ) ); }
    603630        | '[' push assignment_expression ',' tuple_expression_list pop ']'
    604                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 ) ) ); }
     631                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ); }
    605632        ;
    606633
     
    611638        ;
    612639
    613 assignment_operator:
    614         MULTassign                                                                      { $$ = new OperatorNode( OperatorNode::MulAssn ); }
    615         | DIVassign                                                                     { $$ = new OperatorNode( OperatorNode::DivAssn ); }
    616         | MODassign                                                                     { $$ = new OperatorNode( OperatorNode::ModAssn ); }
    617         | PLUSassign                                                            { $$ = new OperatorNode( OperatorNode::PlusAssn ); }
    618         | MINUSassign                                                           { $$ = new OperatorNode( OperatorNode::MinusAssn ); }
    619         | LSassign                                                                      { $$ = new OperatorNode( OperatorNode::LSAssn ); }
    620         | RSassign                                                                      { $$ = new OperatorNode( OperatorNode::RSAssn ); }
    621         | ANDassign                                                                     { $$ = new OperatorNode( OperatorNode::AndAssn ); }
    622         | ERassign                                                                      { $$ = new OperatorNode( OperatorNode::ERAssn ); }
    623         | ORassign                                                                      { $$ = new OperatorNode( OperatorNode::OrAssn ); }
    624         ;
    625 
    626640comma_expression:
    627641        assignment_expression
    628         | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list( $3 ); }
    629         //{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
    630                 { $$ = new CompositeExprNode2( build_comma( $1, $3 ) ); }
     642        | comma_expression ',' assignment_expression
     643                { $$ = new ExpressionNode( build_comma( $1, $3 ) ); }
    631644        ;
    632645
     
    650663        | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA
    651664                {
    652                         Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    653                         $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    654                                 (ExpressionNode *)( $2 )->set_link( $4 ) ), 0 );
     665                        Token fn;
     666                        fn.str = new std::string( "^?{}" ); // location undefined
     667                        $$ = new StatementNode( StatementNode::Exp, new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ), 0 );
    655668                }
    656669        ;
     
    710723        IF '(' comma_expression ')' statement                           %prec THEN
    711724                // explicitly deal with the shift/reduce conflict on if/else
    712                 { $$ = new StatementNode( StatementNode::If, $3, $5 ); }
     725                //{ $$ = new StatementNode( StatementNode::If, $3, $5 ); }
     726                { $$ = new StatementNode2( build_if( $3, $5, nullptr ) ); }
    713727        | IF '(' comma_expression ')' statement ELSE statement
    714                 { $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }
     728                //{ $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }
     729                { $$ = new StatementNode2( build_if( $3, $5, $7 ) ); }
    715730        | SWITCH '(' comma_expression ')' case_clause           // CFA
    716                 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     731                //{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     732                { $$ = new StatementNode2( build_switch( $3, $5 ) ); }
    717733        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    718734                {
    719                         StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     735                        StatementNode *sw = new StatementNode2( build_switch( $3, $8 ) );
    720736                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    721737                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    726742                }
    727743        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    728                 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     744                //{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     745                { $$ = new StatementNode2( build_switch( $3, $5 ) ); }
    729746        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    730747                {
    731                         StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     748                        //StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     749                        StatementNode *sw = new StatementNode2( build_switch( $3, $8 ) );
    732750                        $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
    733751                }
     
    740758        constant_expression                                                     { $$ = $1; }
    741759        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    742                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Range, $1, $3 ) ); }
     760                { $$ = new ExpressionNode( build_range( $1, $3 ) ); }
    743761        | subrange                                                                                      // CFA, subrange
    744762        ;
     
    810828iteration_statement:
    811829        WHILE '(' comma_expression ')' statement
    812                 { $$ = new StatementNode( StatementNode::While, $3, $5 ); }
     830                { $$ = new StatementNode2( build_while( $3, $5 ) ); }
    813831        | DO statement WHILE '(' comma_expression ')' ';'
    814                 { $$ = new StatementNode( StatementNode::Do, $5, $2 ); }
     832                { $$ = new StatementNode2( build_while( $5, $2 ) ); }
    815833        | FOR '(' push for_control_expression ')' statement
    816                 { $$ = new StatementNode( StatementNode::For, $4, $6 ); }
     834                { $$ = new StatementNode2( build_for( $4, $6 ) ); }
    817835        ;
    818836
    819837for_control_expression:
    820838        comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt
    821                 { $$ = new ForCtlExprNode( $1, $4, $6 ); }
     839                { $$ = new ForCtl( $1, $4, $6 ); }
    822840        | declaration comma_expression_opt ';' comma_expression_opt // C99
    823                 { $$ = new ForCtlExprNode( $1, $2, $4 ); }
    824         ;
     841                { $$ = new ForCtl( $1, $2, $4 ); }
     842        ;
    825843
    826844jump_statement:
     
    936954                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
    937955        | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
    938         { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
     956                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
    939957        ;
    940958
     
    960978asm_operand:                                                                                    // GCC
    961979        string_literal_list '(' constant_expression ')'
    962                 { $$ = new AsmExprNode( 0, $1, $3 ); }
     980                { $$ = new ExpressionNode( build_asm( 0, $1, $3 ) ); }
    963981        | '[' constant_expression ']' string_literal_list '(' constant_expression ')'
    964                 { $$ = new AsmExprNode( $2, $4, $6 ); }
     982        { $$ = new ExpressionNode( build_asm( $2, $4, $6 ) ); }
    965983        ;
    966984
     
    969987                { $$ = 0; }                                                                             // use default argument
    970988        | string_literal_list
    971                 { $$ = $1; }
     989                { $$ = new ExpressionNode( $1 ); }
    972990        | asm_clobbers_list_opt ',' string_literal_list
    973                 { $$ = (ConstantNode *)$1->set_link( $3 ); }
     991        { $$ = (ExpressionNode *)$1->set_link( new ExpressionNode( $3 ) ); }
    974992        ;
    975993
     
    17581776        designator_list ':'                                                                     // C99, CFA uses ":" instead of "="
    17591777        | no_attr_identifier_or_type_name ':'                           // GCC, field name
    1760                 { $$ = new VarRefNode( $1 ); }
     1778                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    17611779        ;
    17621780
     
    17641782        designator
    17651783        | designator_list designator
    1766                 { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
    1767         //| designator_list designator                                          { $$ = new CompositeExprNode( $1, $2 ); }
     1784                { $$ = (ExpressionNode *)( $1->set_link( $2 ) ); }
     1785        //| designator_list designator                                          { $$ = new ExpressionNode( $1, $2 ); }
    17681786        ;
    17691787
    17701788designator:
    1771                 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
    1772                 // allowed => semantic check
    1773         FLOATINGconstant
    1774                 { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
    1775         | '.' no_attr_identifier_or_type_name                           // C99, field name
    1776                 { $$ = new DesignatorNode( new VarRefNode( $2 ) ); }
     1789        '.' no_attr_identifier_or_type_name                                     // C99, field name
     1790                { $$ = new ExpressionNode( build_varref( $2 ) ); }
    17771791        | '[' push assignment_expression pop ']'                        // C99, single array element
    17781792                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
    1779                 { $$ = new DesignatorNode( $3, true ); }
     1793                { $$ = $3; }
    17801794        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    1781                 { $$ = new DesignatorNode( $3, true ); }
     1795                { $$ = $3; }
    17821796        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1783                 { $$ = new DesignatorNode( new CompositeExprNode2( build_opr2( OperatorNode::Range, $3, $5 ) ), true ); }
     1797                { $$ = new ExpressionNode( build_range( $3, $5 ) ); }
    17841798        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    1785                 { $$ = new DesignatorNode( $4 ); }
     1799                { $$ = $4; }
    17861800        ;
    17871801
     
    18711885type_name_list:                                                                                 // CFA
    18721886        type_name
    1873                 { $$ = new TypeValueNode( $1 ); }
     1887                { $$ = new ExpressionNode( build_typevalue( $1 ) ); }
    18741888        | assignment_expression
    18751889        | type_name_list ',' type_name
    1876                 { $$ = (ExpressionNode *)( $1->set_link( new TypeValueNode( $3 ))); }
     1890                { $$ = (ExpressionNode *)( $1->set_link( new ExpressionNode( build_typevalue( $3 ) ) ) ); }
    18771891        | type_name_list ',' assignment_expression
    18781892                { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     
    21102124subrange:
    21112125        constant_expression '~' constant_expression                     // CFA, integer subrange
    2112                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Range, $1, $3 ) ); }
     2126                { $$ = new ExpressionNode( build_range( $1, $3 ) ); }
    21132127        ;
    21142128
  • src/SynTree/Expression.cc

    rf18a711 r3078643  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug  3 17:06:51 2016
    13 // Update Count     : 45
     12// Last Modified On : Fri Aug  5 14:23:56 2016
     13// Update Count     : 49
    1414//
    1515
     
    529529}
    530530
    531 RangeExpr::RangeExpr( ConstantExpr *low, ConstantExpr *high ) : low( low ), high( high ) {}
     531RangeExpr::RangeExpr( Expression *low, Expression *high ) : low( low ), high( high ) {}
    532532RangeExpr::RangeExpr( const RangeExpr &other ) : low( other.low->clone() ), high( other.high->clone() ) {}
    533533void RangeExpr::print( std::ostream &os, int indent ) const {
  • src/SynTree/Expression.h

    rf18a711 r3078643  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug  3 17:08:44 2016
    13 // Update Count     : 27
     12// Last Modified On : Sat Aug  6 08:52:53 2016
     13// Update Count     : 35
    1414//
    1515
     
    2828class Expression {
    2929  public:
    30         Expression(Expression *_aname = 0 );
     30        Expression( Expression *_aname = nullptr );
    3131        Expression( const Expression &other );
    3232        virtual ~Expression();
     
    7070typedef std::map< UniqueId, ParamEntry > InferredParams;
    7171
    72 /// ApplicationExpr represents the application of a function to a set of parameters.  This is the
    73 /// result of running an UntypedExpr through the expression analyzer.
     72/// ApplicationExpr represents the application of a function to a set of parameters.  This is the result of running an
     73/// UntypedExpr through the expression analyzer.
    7474class ApplicationExpr : public Expression {
    7575  public:
     
    9393};
    9494
    95 /// UntypedExpr represents the application of a function to a set of parameters, but where the
    96 /// particular overload for the function name has not yet been determined.  Most operators are
    97 /// converted into functional form automatically, to permit operator overloading.
     95/// UntypedExpr represents the application of a function to a set of parameters, but where the particular overload for
     96/// the function name has not yet been determined.  Most operators are converted into functional form automatically, to
     97/// permit operator overloading.
    9898class UntypedExpr : public Expression {
    9999  public:
    100         UntypedExpr( Expression *function, Expression *_aname = 0 );
     100        UntypedExpr( Expression *function, Expression *_aname = nullptr );
    101101        UntypedExpr( const UntypedExpr &other );
    102         UntypedExpr( Expression *function, std::list<Expression *> &args, Expression *_aname = 0 );
     102        UntypedExpr( Expression *function, std::list<Expression *> &args, Expression *_aname = nullptr );
    103103        virtual ~UntypedExpr();
    104104
     
    124124class NameExpr : public Expression {
    125125  public:
    126         NameExpr( std::string name, Expression *_aname = 0 );
     126        NameExpr( std::string name, Expression *_aname = nullptr );
    127127        NameExpr( const NameExpr &other );
    128128        virtual ~NameExpr();
     
    145145class AddressExpr : public Expression {
    146146  public:
    147         AddressExpr( Expression *arg, Expression *_aname = 0 );
     147        AddressExpr( Expression *arg, Expression *_aname = nullptr );
    148148        AddressExpr( const AddressExpr &other );
    149149        virtual ~AddressExpr();
     
    181181class CastExpr : public Expression {
    182182  public:
    183         CastExpr( Expression *arg, Expression *_aname = 0 );
    184         CastExpr( Expression *arg, Type *toType, Expression *_aname = 0 );
     183        CastExpr( Expression *arg, Expression *_aname = nullptr );
     184        CastExpr( Expression *arg, Type *toType, Expression *_aname = nullptr );
    185185        CastExpr( const CastExpr &other );
    186186        virtual ~CastExpr();
     
    200200class UntypedMemberExpr : public Expression {
    201201  public:
    202         UntypedMemberExpr( std::string member, Expression *aggregate, Expression *_aname = 0 );
     202        UntypedMemberExpr( std::string member, Expression *aggregate, Expression *_aname = nullptr );
    203203        UntypedMemberExpr( const UntypedMemberExpr &other );
    204204        virtual ~UntypedMemberExpr();
     
    221221class MemberExpr : public Expression {
    222222  public:
    223         MemberExpr( DeclarationWithType *member, Expression *aggregate, Expression *_aname = 0 );
     223        MemberExpr( DeclarationWithType *member, Expression *aggregate, Expression *_aname = nullptr );
    224224        MemberExpr( const MemberExpr &other );
    225225        virtual ~MemberExpr();
     
    242242class VariableExpr : public Expression {
    243243  public:
    244         VariableExpr( DeclarationWithType *var, Expression *_aname = 0 );
     244        VariableExpr( DeclarationWithType *var, Expression *_aname = nullptr );
    245245        VariableExpr( const VariableExpr &other );
    246246        virtual ~VariableExpr();
     
    260260class ConstantExpr : public Expression {
    261261  public:
    262         ConstantExpr( Constant constant, Expression *_aname = 0 );
     262        ConstantExpr( Constant constant, Expression *_aname = nullptr );
    263263        ConstantExpr( const ConstantExpr &other );
    264264        virtual ~ConstantExpr();
     
    278278class SizeofExpr : public Expression {
    279279  public:
    280         SizeofExpr( Expression *expr, Expression *_aname = 0 );
     280        SizeofExpr( Expression *expr, Expression *_aname = nullptr );
    281281        SizeofExpr( const SizeofExpr &other );
    282         SizeofExpr( Type *type, Expression *_aname = 0 );
     282        SizeofExpr( Type *type, Expression *_aname = nullptr );
    283283        virtual ~SizeofExpr();
    284284
     
    303303class AlignofExpr : public Expression {
    304304  public:
    305         AlignofExpr( Expression *expr, Expression *_aname = 0 );
     305        AlignofExpr( Expression *expr, Expression *_aname = nullptr );
    306306        AlignofExpr( const AlignofExpr &other );
    307         AlignofExpr( Type *type, Expression *_aname = 0 );
     307        AlignofExpr( Type *type, Expression *_aname = nullptr );
    308308        virtual ~AlignofExpr();
    309309
     
    328328class UntypedOffsetofExpr : public Expression {
    329329  public:
    330         UntypedOffsetofExpr( Type *type, const std::string &member, Expression *_aname = 0 );
     330        UntypedOffsetofExpr( Type *type, const std::string &member, Expression *_aname = nullptr );
    331331        UntypedOffsetofExpr( const UntypedOffsetofExpr &other );
    332332        virtual ~UntypedOffsetofExpr();
     
    349349class OffsetofExpr : public Expression {
    350350  public:
    351         OffsetofExpr( Type *type, DeclarationWithType *member, Expression *_aname = 0 );
     351        OffsetofExpr( Type *type, DeclarationWithType *member, Expression *_aname = nullptr );
    352352        OffsetofExpr( const OffsetofExpr &other );
    353353        virtual ~OffsetofExpr();
     
    390390class AttrExpr : public Expression {
    391391  public:
    392         AttrExpr(Expression *attr, Expression *expr, Expression *_aname = 0 );
     392        AttrExpr(Expression *attr, Expression *expr, Expression *_aname = nullptr );
    393393        AttrExpr( const AttrExpr &other );
    394         AttrExpr( Expression *attr, Type *type, Expression *_aname = 0 );
     394        AttrExpr( Expression *attr, Type *type, Expression *_aname = nullptr );
    395395        virtual ~AttrExpr();
    396396
     
    418418class LogicalExpr : public Expression {
    419419  public:
    420         LogicalExpr( Expression *arg1, Expression *arg2, bool andp = true, Expression *_aname = 0 );
     420        LogicalExpr( Expression *arg1, Expression *arg2, bool andp = true, Expression *_aname = nullptr );
    421421        LogicalExpr( const LogicalExpr &other );
    422422        virtual ~LogicalExpr();
     
    441441class ConditionalExpr : public Expression {
    442442  public:
    443         ConditionalExpr( Expression *arg1, Expression *arg2, Expression *arg3, Expression *_aname = 0 );
     443        ConditionalExpr( Expression *arg1, Expression *arg2, Expression *arg3, Expression *_aname = nullptr );
    444444        ConditionalExpr( const ConditionalExpr &other );
    445445        virtual ~ConditionalExpr();
     
    465465class CommaExpr : public Expression {
    466466  public:
    467         CommaExpr( Expression *arg1, Expression *arg2, Expression *_aname = 0 );
     467        CommaExpr( Expression *arg1, Expression *arg2, Expression *_aname = nullptr );
    468468        CommaExpr( const CommaExpr &other );
    469469        virtual ~CommaExpr();
     
    486486class TupleExpr : public Expression {
    487487  public:
    488         TupleExpr( Expression *_aname = 0 );
     488        TupleExpr( Expression *_aname = nullptr );
    489489        TupleExpr( const TupleExpr &other );
    490490        virtual ~TupleExpr();
     
    504504class SolvedTupleExpr : public Expression {
    505505  public:
    506         SolvedTupleExpr( Expression *_aname = 0 ) : Expression( _aname ) {}
    507         SolvedTupleExpr( std::list<Expression *> &, Expression *_aname = 0 );
     506        SolvedTupleExpr( Expression *_aname = nullptr ) : Expression( _aname ) {}
     507        SolvedTupleExpr( std::list<Expression *> &, Expression *_aname = nullptr );
    508508        SolvedTupleExpr( const SolvedTupleExpr &other );
    509509        virtual ~SolvedTupleExpr() {}
     
    598598class UntypedValofExpr : public Expression {
    599599  public:
    600         UntypedValofExpr( Statement *_body, Expression *_aname = 0 ) : Expression( _aname ), body ( _body ) {}
     600        UntypedValofExpr( Statement *_body, Expression *_aname = nullptr ) : Expression( _aname ), body ( _body ) {}
    601601        UntypedValofExpr( const UntypedValofExpr & other );
    602602        virtual ~UntypedValofExpr();
     
    637637class RangeExpr : public Expression {
    638638  public:
    639         RangeExpr( ConstantExpr *low, ConstantExpr *high );
     639        RangeExpr( Expression *low, Expression *high );
    640640        RangeExpr( const RangeExpr &other );
    641641
    642         ConstantExpr * get_low() const { return low.get(); }
    643         ConstantExpr * get_high() const { return high.get(); }
    644         RangeExpr * set_low( ConstantExpr *low ) { RangeExpr::low.reset( low ); return this; }
    645         RangeExpr * set_high( ConstantExpr *high ) { RangeExpr::high.reset( high ); return this; }
     642        Expression * get_low() const { return low; }
     643        Expression * get_high() const { return high; }
     644        RangeExpr * set_low( Expression *low ) { RangeExpr::low = low; return this; }
     645        RangeExpr * set_high( Expression *high ) { RangeExpr::high = high; return this; }
    646646
    647647        virtual RangeExpr *clone() const { return new RangeExpr( *this ); }
     
    650650        virtual void print( std::ostream &os, int indent = 0 ) const;
    651651  private:
    652         std::unique_ptr<ConstantExpr> low, high;
     652        Expression *low, *high;
    653653};
    654654
  • src/SynTree/Label.h

    rf18a711 r3078643  
    99// Author           : Rob Schluntz
    1010// Created On       : Wed Jun 8 12:53:12 2016
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 8 12:53:28 2016
    13 // Update Count     : 1
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Aug  7 14:44:29 2016
     13// Update Count     : 2
    1414//
    1515
  • src/driver/cfa.cc

    rf18a711 r3078643  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug  2 12:23:11 2016
    13 // Update Count     : 147
     12// Last Modified On : Sat Aug  6 16:14:55 2016
     13// Update Count     : 148
    1414//
    1515
     
    8787        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    8888        bool std_flag = false;                                                          // -std= flag
    89         bool noincstd_flag = false;                                                     // -no-include-std= flag
     89        bool noincstd_flag = false;                                                     // -no-include-stdhdr= flag
    9090        bool debugging __attribute(( unused )) = false;         // -g flag
    9191
     
    145145                        } else if ( arg == "-nohelp" ) {
    146146                                help = false;                                                   // strip the nohelp flag
    147                         } else if ( arg == "-no-include-std" ) {
    148                                 noincstd_flag = true;                                   // strip the no-include-std flag
     147                        } else if ( arg == "-no-include-stdhdr" ) {
     148                                noincstd_flag = true;                                   // strip the no-include-stdhdr flag
    149149                        } else if ( arg == "-compiler" ) {
    150150                                // use the user specified compiler
  • src/examples/gc_no_raii/src/gc.h

    rf18a711 r3078643  
    77static inline gcpointer(T) gcmalloc()
    88{
    9     gcpointer(T) ptr;
    10     void* address = gc_allocate(sizeof(T));
    11     (&ptr){ address };
    12     ctor(&ptr, address);
     9    gcpointer(T) ptr = { gc_allocate(sizeof(T)) };
     10    ptr{};
    1311    gc_conditional_collect();
    1412    return ptr;
    1513}
     14
     15forall(otype T)
     16static inline void gcmalloc(gcpointer(T)* ptr)
     17{
     18        ptr{ gc_allocate(sizeof(T)) };
     19      (*ptr){};
     20      gc_conditional_collect();
     21}
  • src/examples/gc_no_raii/test/gctest.c

    rf18a711 r3078643  
    88        sout | "Bonjour au monde!\n";
    99
    10         gcpointer(int) anInt = gcmalloc();
     10        for(int i = 0; i < 1000000; i++) {
     11                gcpointer(int) anInt;
     12                gcmalloc(&anInt);
     13        }
    1114}
  • src/libcfa/Makefile.am

    rf18a711 r3078643  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Tue Aug  2 12:17:23 2016
    14 ## Update Count     : 196
     13## Last Modified On : Sat Aug  6 16:15:15 2016
     14## Update Count     : 197
    1515###############################################################################
    1616
     
    5353         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    5454
    55 CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     55CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    5656CC = ${abs_top_srcdir}/src/driver/cfa
    5757
  • src/libcfa/Makefile.in

    rf18a711 r3078643  
    136136CFA_LIBDIR = @CFA_LIBDIR@
    137137CFA_PREFIX = @CFA_PREFIX@
    138 CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     138CFLAGS = -quiet -no-include-stdhdr -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    139139CPP = @CPP@
    140140CPPFLAGS = @CPPFLAGS@
  • src/main.cc

    rf18a711 r3078643  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul  5 15:23:11 2016
    13 // Update Count     : 209
     12// Last Modified On : Sat Aug  6 16:17:41 2016
     13// Update Count     : 210
    1414//
    1515
     
    193193                        input = fopen( argv[ optind ], "r" );
    194194                        if ( ! input ) {
    195                                 std::cout << "Error: can't open " << argv[ optind ] << std::endl;
     195                                std::cout << "Error: cannot open " << argv[ optind ] << std::endl;
    196196                                exit( EXIT_FAILURE );
    197197                        } // if
     
    219219                        FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
    220220                        if ( builtins == NULL ) {
    221                                 std::cerr << "Error: can't open builtins.cf" << std::endl;
     221                                std::cerr << "Error: cannot open builtins.cf" << std::endl;
    222222                                exit( EXIT_FAILURE );
    223223                        } // if
     
    227227                        FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
    228228                        if ( extras == NULL ) {
    229                                 std::cerr << "Error: can't open extras.cf" << std::endl;
     229                                std::cerr << "Error: cannot open extras.cf" << std::endl;
    230230                                exit( EXIT_FAILURE );
    231231                        } // if
     
    236236                                FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
    237237                                if ( prelude == NULL ) {
    238                                         std::cerr << "Error: can't open prelude.cf" << std::endl;
     238                                        std::cerr << "Error: cannot open prelude.cf" << std::endl;
    239239                                        exit( EXIT_FAILURE );
    240240                                } // if
  • src/tests/Makefile.am

    rf18a711 r3078643  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Jul  9 11:23:24 2016
    14 ## Update Count     : 35
     13## Last Modified On : Tue Aug  9 15:34:57 2016
     14## Update Count     : 38
    1515###############################################################################
    1616
     
    2727
    2828all-local :
    29         +python test.py vector_test avl_test operators numericConstants expression enum asmName array typeof cast dtor-early-exit init_once
     29        @+python test.py vector_test avl_test operators numericConstants expression enum asmName array typeof cast dtor-early-exit init_once
    3030
    3131all-tests :
    32         +python test.py --all
     32        @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    3333
    3434clean-local :
    35         -rm -f ${EXTRA_PROGRAMS}
     35        rm -f ${EXTRA_PROGRAMS}
    3636
    3737list :
    38         +python test.py --list
     38        @+python test.py --list
    3939
    4040constant0-1DP : constant0-1.c
  • src/tests/Makefile.in

    rf18a711 r3078643  
    635635
    636636all-local :
    637         +python test.py vector_test avl_test operators numericConstants expression enum asmName array typeof cast dtor-early-exit init_once
     637        @+python test.py vector_test avl_test operators numericConstants expression enum asmName array typeof cast dtor-early-exit init_once
    638638
    639639all-tests :
    640         +python test.py --all
     640        @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    641641
    642642clean-local :
    643         -rm -f ${EXTRA_PROGRAMS}
     643        rm -f ${EXTRA_PROGRAMS}
    644644
    645645list :
    646         +python test.py --list
     646        @+python test.py --list
    647647
    648648constant0-1DP : constant0-1.c
  • src/tests/labelledExit.c

    rf18a711 r3078643  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// labelledExit.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 10 07:29:39 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 10 07:30:15 2016
     13// Update Count     : 1
     14//
     15
    116int foo() {
    217        int i;
     
    136151        else
    137152                i += 1;
    138 
    139153}
    140154
    141 int main(int argc, char const *argv[]) {
     155int main( int argc, char const *argv[] ) {
    142156        /* code */
    143         return 0;
    144157}
    145158
    146159// Local Variables: //
    147160// tab-width: 4 //
    148 // compile-command: "cfa LabelledExit.c" //
     161// compile-command: "cfa labelledExit.c" //
    149162// End: //
Note: See TracChangeset for help on using the changeset viewer.