Changeset d1625f8


Ignore:
Timestamp:
Aug 9, 2016, 2:02:22 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
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:
a6dd5b0, e297ceb
Parents:
7bf7fb9
Message:

more refactoring of parser code

Location:
src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r7bf7fb9 rd1625f8  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 08:01:55 2016
    13 // Update Count     : 165
     12// Last Modified On : Tue Aug  9 08:39:20 2016
     13// Update Count     : 169
    1414//
    1515
     
    284284        newnode->type->array->dimension = size;
    285285        newnode->type->array->isStatic = isStatic;
    286         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() ) ) {
    287287                newnode->type->array->isVarLen = false;
    288288        } else {
  • src/Parser/ExpressionNode.cc

    r7bf7fb9 rd1625f8  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 09:23:12 2016
    13 // Update Count     : 437
     12// Last Modified On : Tue Aug  9 12:28:40 2016
     13// Update Count     : 482
    1414//
    1515
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode() : ParseNode() {}
    35 
    36 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
    37 
    38 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
    39         if ( other.argName ) {
    40                 std::cout << "ExpressionNode" << std::endl;
    41                 argName = other.argName->clone();
    42         } else {
    43                 argName = 0;
    44         } // if
    45 }
    46 
    47 ExpressionNode * ExpressionNode::set_argName( const std::string *aName ) {
    48         argName = new VarRefNode( aName );
    49         return this;
    50 }
    51 
    52 ExpressionNode * ExpressionNode::set_argName( ExpressionNode *aDesignator ) {
    53         argName = aDesignator;
    54         return this;
    55 }
    56 
    57 void ExpressionNode::printDesignation( std::ostream &os, int indent ) const {
    58         if ( argName ) {
    59                 os << string( indent, ' ' ) << "(designated by:  ";
    60                 argName->printOneLine( os, indent );
    61                 os << ")" << std::endl;
    62         } // if
    63 }
    64 
    65 //##############################################################################
    66 
    67 NullExprNode::NullExprNode() {}
    68 
    69 NullExprNode *NullExprNode::clone() const {
    70         return new NullExprNode();
    71 }
    72 
    73 void NullExprNode::print( std::ostream & os, int indent ) const {
    74         printDesignation( os );
    75         os << "null expression";
    76 }
    77 
    78 void NullExprNode::printOneLine( std::ostream & os, int indent ) const {
    79         printDesignation( os );
    80         os << "null";
    81 }
    82 
    83 Expression *NullExprNode::build() const {
    84         return 0;
    85 }
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
    8635
    8736//##############################################################################
     
    10857static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    10958
    110 ConstantNode *build_constantInteger( std::string & str ) {
     59Expression *build_constantInteger( std::string & str ) {
    11160        static const BasicType::Kind kind[2][3] = {
    11261                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     
    171120        } // if
    172121
    173         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) ) );
     122        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
    174123} // build_constantInteger
    175124
    176 ConstantNode *build_constantFloat( std::string & str ) {
     125Expression *build_constantFloat( std::string & str ) {
    177126        static const BasicType::Kind kind[2][3] = {
    178127                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     
    201150        } // if
    202151
    203         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) ) );
     152        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
    204153} // build_constantFloat
    205154
    206 ConstantNode *build_constantChar( std::string & str ) {
    207         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ) );
     155Expression *build_constantChar( std::string & str ) {
     156        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
    208157} // build_constantChar
    209158
    210 ConstantNode *build_constantStr( std::string & str ) {
     159ConstantExpr *build_constantStr( std::string & str ) {
    211160        // string should probably be a primitive type
    212161        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     
    214163                                                                                        toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
    215164                                                                   false, false );
    216         return new ConstantNode( new ConstantExpr( Constant( at, str ) ) );
     165        return new ConstantExpr( Constant( at, str ) );
    217166} // build_constantStr
    218167
     
    223172//}
    224173
    225 VarRefNode::VarRefNode( const string *name, bool labelp ) : ExpressionNode( name ), isLabel( labelp ) {}
    226 
    227 VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {
    228 }
    229 
    230 Expression *VarRefNode::build() const {
    231         return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
    232 }
    233 
    234 void VarRefNode::printOneLine( std::ostream &os, int indent ) const {
    235         printDesignation( os );
    236         os << get_name() << ' ';
    237 }
    238 
    239 void VarRefNode::print( std::ostream &os, int indent ) const {
    240         printDesignation( os );
    241         os << string( indent, ' ' ) << "Referencing: ";
    242         os << "Variable: " << get_name();
    243         os << endl;
    244 }
    245 
    246 //##############################################################################
    247 
    248 DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
    249         set_argName( expr );
    250         assert( get_argName() );
    251 
    252         if ( ! isArrayIndex ) {
    253                 if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
    254 
    255                         stringstream ss( var->get_name() );
    256                         double value;
    257                         if ( ss >> value ) {
    258                                 // this is a floating point constant. It MUST be ".0" or ".1", otherwise the program is invalid
    259                                 if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
    260                                         throw SemanticError( "invalid designator name: " + var->get_name() );
    261                                 } // if
    262                                 var->set_name( var->get_name().substr(1) );
    263                         } // if
    264                 } // if
    265         } // if
    266 }
    267 
    268 DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {
    269 }
    270 
    271 class DesignatorFixer : public Mutator {
    272 public:
    273         virtual Expression* mutate( NameExpr *nameExpr ) {
    274                 if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
    275                         Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
    276                         delete nameExpr;
    277                         return new ConstantExpr( val );
    278                 }
    279                 return nameExpr;
    280         }
    281 };
    282 
    283 Expression *DesignatorNode::build() const {
    284         Expression * ret = maybeBuild<Expression>(get_argName());
    285 
    286         if ( isArrayIndex ) {
    287                 // need to traverse entire structure and change any instances of 0 or 1 to ConstantExpr
    288                 DesignatorFixer fixer;
    289                 ret = ret->acceptMutator( fixer );
    290         } // if
    291 
    292         return ret;
    293 }
    294 
    295 void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {
    296         if ( get_argName() ) {
    297                 if ( isArrayIndex ) {
    298                         os << "[";
    299                         get_argName()->printOneLine( os, indent );
    300                         os << "]";
    301                 } else {
    302                         os << ".";
    303                         get_argName()->printOneLine( os, indent );
    304                 }
    305         } // if
    306 }
    307 
    308 void DesignatorNode::print( std::ostream &os, int indent ) const {
    309         if ( get_argName() ) {
    310                 if ( isArrayIndex ) {
    311                         os << "[";
    312                         get_argName()->print( os, indent );
    313                         os << "]";
    314                 } else {
    315                         os << ".";
    316                         get_argName()->print( os, indent );
    317                 }
    318         } // if
    319 }
     174// VarRefNode::VarRefNode( const string *name, bool labelp ) : ExpressionNode( nullptr, name ), isLabel( labelp ) {}
     175
     176// VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {}
     177
     178// Expression *VarRefNode::build() const {
     179//      return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
     180// }
     181
     182// void VarRefNode::printOneLine( std::ostream &os, int indent ) const {
     183//      printDesignation( os );
     184//      os << get_name() << ' ';
     185// }
     186
     187// void VarRefNode::print( std::ostream &os, int indent ) const {
     188//      printDesignation( os );
     189//      os << string( indent, ' ' ) << "Referencing: ";
     190//      os << "Variable: " << get_name();
     191//      os << endl;
     192// }
     193
     194NameExpr * build_varref( const string *name, bool labelp ) {
     195        return new NameExpr( *name, nullptr );
     196}
     197
     198//##############################################################################
     199
     200// DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex, bool isVarRef ) : isArrayIndex( isArrayIndex ) {
     201//      set_argName( expr );
     202// }
     203
     204// DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {}
     205
     206// class DesignatorFixer : public Mutator {
     207//   public:
     208//      virtual Expression* mutate( NameExpr *nameExpr ) {
     209//              if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
     210//                      Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
     211//                      delete nameExpr;
     212//                      return new ConstantExpr( val );
     213//              }
     214//              return nameExpr;
     215//      }
     216// };
     217
     218// Expression *DesignatorNode::build() const {
     219//      return maybeBuild<Expression>(get_argName());
     220// }
     221
     222// void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {
     223//      if ( get_argName() ) {
     224//              if ( isArrayIndex ) {
     225//                      os << "[";
     226//                      get_argName()->printOneLine( os, indent );
     227//                      os << "]";
     228//              } else {
     229//                      os << ".";
     230//                      get_argName()->printOneLine( os, indent );
     231//              }
     232//      } // if
     233// }
     234
     235// void DesignatorNode::print( std::ostream &os, int indent ) const {
     236//      if ( get_argName() ) {
     237//              if ( isArrayIndex ) {
     238//                      os << "[";
     239//                      get_argName()->print( os, indent );
     240//                      os << "]";
     241//              } else {
     242//                      os << ".";
     243//                      get_argName()->print( os, indent );
     244//              }
     245//      } // if
     246// }
    320247
    321248//##############################################################################
     
    333260//##############################################################################
    334261
    335 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node ) {
    336         DeclarationNode *decl_node = arg->get_decl();
    337 
     262Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    338263        Type *targetType = decl_node->buildType();
    339         if ( dynamic_cast< VoidType* >( targetType ) ) {
     264        if ( dynamic_cast< VoidType * >( targetType ) ) {
    340265                delete targetType;
    341266                return new CastExpr( maybeBuild<Expression>(expr_node) );
     
    345270}
    346271
    347 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
    348         NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
    349         assert( memberExpr );
    350         UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), maybeBuild<Expression>(expr_node) );
     272Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
     273        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
    351274        delete member;
    352275        return ret;
    353276}
    354277
    355 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
    356         NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
    357         assert( memberExpr );
     278Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    358279        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    359280        deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
    360         UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), deref );
     281        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    361282        delete member;
    362283        return ret;
     
    366287                return new AddressExpr( maybeBuild<Expression>(expr_node) );
    367288}
    368 Expression *build_sizeOf( ExpressionNode *expr_node ) {
    369         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
    370                 return new SizeofExpr( arg->get_decl()->buildType() );
    371         } else {
    372                 return new SizeofExpr( maybeBuild<Expression>(expr_node) );
    373         } // if
    374 }
    375 Expression *build_alignOf( ExpressionNode *expr_node ) {
    376         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
    377                 return new AlignofExpr( arg->get_decl()->buildType() );
    378         } else {
    379                 return new AlignofExpr( maybeBuild<Expression>(expr_node) );
    380         } // if
    381 }
    382 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member ) {
    383         NameExpr *memberExpr = dynamic_cast<NameExpr *>( maybeBuild<Expression>( member ) );
    384         assert( memberExpr );
    385         return new UntypedOffsetofExpr( arg->get_decl()->buildType(), memberExpr->get_name() );
     289Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
     290        return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     291}
     292Expression *build_sizeOftype( DeclarationNode *decl_node ) {
     293        return new SizeofExpr( decl_node->buildType() );
     294}
     295Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
     296        return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     297}
     298Expression *build_alignOftype( DeclarationNode *decl_node ) {
     299        return new AlignofExpr( decl_node->buildType() );
     300}
     301Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
     302        return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
    386303}
    387304
     
    421338}
    422339
    423 Expression *build_attr( VarRefNode *var, ExpressionNode * expr ) {
    424         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr ) ) {
    425                 return new AttrExpr( maybeBuild<Expression>(var), arg->get_decl()->buildType() );
    426         } else {
    427                 return new AttrExpr( maybeBuild<Expression>(var), maybeBuild<Expression>(expr) );
    428         } // if
    429 }
    430 
    431 Expression *build_tuple( ExpressionNode * expr ) {
     340Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
     341        return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
     342}
     343Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     344        return new AttrExpr( var, decl_node->buildType() );
     345}
     346
     347Expression *build_tuple( ExpressionNode * expr_node ) {
    432348        TupleExpr *ret = new TupleExpr();
    433         buildList( expr, ret->get_exprs() );
     349        buildList( expr_node, ret->get_exprs() );
    434350        return ret;
    435351}
    436352
    437 Expression *build_func( ExpressionNode * function, ExpressionNode * expr ) {
     353Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
    438354        std::list<Expression *> args;
    439355
    440         buildList( expr, args );
     356        buildList( expr_node, args );
    441357        return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
    442358}
     
    450366//##############################################################################
    451367
    452 Expression *AsmExprNode::build() const {
    453         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
    454 }
    455 
    456 void AsmExprNode::print( std::ostream &os, int indent ) const {
    457         os << string( indent, ' ' ) << "Assembler Expression:" << endl;
    458         if ( inout ) {
    459                 os << string( indent, ' ' ) << "inout: " << std::endl;
    460                 inout->print( os, indent + 2 );
    461         } // if
    462         if ( constraint ) {
    463                 os << string( indent, ' ' ) << "constraint: " << std::endl;
    464                 constraint->print( os, indent + 2 );
    465         } // if
    466         if ( operand ) {
    467                 os << string( indent, ' ' ) << "operand: " << std::endl;
    468                 operand->print( os, indent + 2 );
    469         } // if
    470 }
    471 
    472 void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {
    473         printDesignation( os );
    474         os << "( ";
    475         if ( inout ) inout->printOneLine( os, indent + 2 );
    476         os << ", ";
    477         if ( constraint ) constraint->printOneLine( os, indent + 2 );
    478         os << ", ";
    479         if ( operand ) operand->printOneLine( os, indent + 2 );
    480         os << ") ";
     368// Expression *AsmExprNode::build() const {
     369//      return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
     370// }
     371
     372// void AsmExprNode::print( std::ostream &os, int indent ) const {
     373//      os << string( indent, ' ' ) << "Assembler Expression:" << endl;
     374//      if ( inout ) {
     375//              os << string( indent, ' ' ) << "inout: " << std::endl;
     376//              inout->print( os, indent + 2 );
     377//      } // if
     378//      if ( constraint ) {
     379//              os << string( indent, ' ' ) << "constraint: " << std::endl;
     380//              constraint->print( os, indent + 2 );
     381//      } // if
     382//      if ( operand ) {
     383//              os << string( indent, ' ' ) << "operand: " << std::endl;
     384//              operand->print( os, indent + 2 );
     385//      } // if
     386// }
     387
     388// void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {
     389//      printDesignation( os );
     390//      os << "( ";
     391//      if ( inout ) inout->printOneLine( os, indent + 2 );
     392//      os << ", ";
     393//      if ( constraint ) constraint->printOneLine( os, indent + 2 );
     394//      os << ", ";
     395//      if ( operand ) operand->printOneLine( os, indent + 2 );
     396//      os << ") ";
     397// }
     398
     399Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
     400        return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) );
    481401}
    482402
     
    489409//##############################################################################
    490410
    491 ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
    492 
    493 ValofExprNode::ValofExprNode( const ValofExprNode &other ) : ExpressionNode( other ), body( maybeClone( body ) ) {
    494 }
    495 
    496 ValofExprNode::~ValofExprNode() {
    497         delete body;
    498 }
    499 
    500 void ValofExprNode::print( std::ostream &os, int indent ) const {
    501         printDesignation( os );
    502         os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
    503         get_body()->print( os, indent + 4);
    504 }
    505 
    506 void ValofExprNode::printOneLine( std::ostream &, int indent ) const {
    507         assert( false );
    508 }
    509 
    510 Expression *ValofExprNode::build() const {
    511         return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
     411// ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
     412
     413// ValofExprNode::ValofExprNode( const ValofExprNode &other ) : ExpressionNode( other ), body( maybeClone( body ) ) {
     414// }
     415
     416// ValofExprNode::~ValofExprNode() {
     417//      delete body;
     418// }
     419
     420// void ValofExprNode::print( std::ostream &os, int indent ) const {
     421//      os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
     422//      get_body()->print( os, indent + 4);
     423// }
     424
     425// void ValofExprNode::printOneLine( std::ostream &, int indent ) const {
     426//      assert( false );
     427// }
     428
     429// Expression *ValofExprNode::build() const {
     430//      return new UntypedValofExpr( maybeBuild<Statement>(get_body()), nullptr );
     431// }
     432
     433Expression *build_valexpr( StatementNode *s ) {
     434        return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr );
    512435}
    513436
     
    567490//##############################################################################
    568491
    569 TypeValueNode::TypeValueNode( DeclarationNode *decl ) : decl( decl ) {
    570 }
    571 
    572 TypeValueNode::TypeValueNode( const TypeValueNode &other ) : ExpressionNode( other ), decl( maybeClone( other.decl ) ) {
    573 }
    574 
    575 Expression *TypeValueNode::build() const {
     492// TypeValueNode::TypeValueNode( DeclarationNode *decl ) : decl( decl ) {
     493// }
     494
     495// TypeValueNode::TypeValueNode( const TypeValueNode &other ) : ExpressionNode( other ), decl( maybeClone( other.decl ) ) {
     496// }
     497
     498// Expression *TypeValueNode::build() const {
     499//      return new TypeExpr( decl->buildType() );
     500// }
     501
     502// void TypeValueNode::print( std::ostream &os, int indent ) const {
     503//      os << std::string( indent, ' ' ) << "Type:";
     504//      get_decl()->print( os, indent + 2);
     505// }
     506
     507// void TypeValueNode::printOneLine( std::ostream &os, int indent ) const {
     508//      os << "Type:";
     509//      get_decl()->print( os, indent + 2);
     510// }
     511
     512Expression *build_typevalue( DeclarationNode *decl ) {
    576513        return new TypeExpr( decl->buildType() );
    577514}
    578515
    579 void TypeValueNode::print( std::ostream &os, int indent ) const {
    580         os << std::string( indent, ' ' ) << "Type:";
    581         get_decl()->print( os, indent + 2);
    582 }
    583 
    584 void TypeValueNode::printOneLine( std::ostream &os, int indent ) const {
    585         os << "Type:";
    586         get_decl()->print( os, indent + 2);
    587 }
    588 
    589 
    590 CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}
    591 CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}
    592 
    593 CompoundLiteralNode::~CompoundLiteralNode() {
    594         delete kids;
    595         delete type;
    596 }
    597 
    598 CompoundLiteralNode *CompoundLiteralNode::clone() const {
    599         return new CompoundLiteralNode( *this );
    600 }
    601 
    602 void CompoundLiteralNode::print( std::ostream &os, int indent ) const {
    603         os << string( indent,' ' ) << "CompoundLiteralNode:" << endl;
    604 
    605         os << string( indent + 2, ' ' ) << "type:" << endl;
    606         if ( type != 0 )
    607                 type->print( os, indent + 4 );
    608 
    609         os << string( indent + 2, ' ' ) << "initialization:" << endl;
    610         if ( kids != 0 )
    611                 kids->printList( os, indent + 4 );
    612 }
    613 
    614 void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const {
    615         os << "( ";
    616         if ( type ) type->print( os );
    617         os << ", ";
    618         if ( kids ) kids->printOneLine( os );
    619         os << ") ";
    620 }
    621 
    622 Expression *CompoundLiteralNode::build() const {
    623         Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
     516//##############################################################################
     517
     518// CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}
     519// CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}
     520
     521// CompoundLiteralNode::~CompoundLiteralNode() {
     522//      delete kids;
     523//      delete type;
     524// }
     525
     526// CompoundLiteralNode *CompoundLiteralNode::clone() const {
     527//      return new CompoundLiteralNode( *this );
     528// }
     529
     530// void CompoundLiteralNode::print( std::ostream &os, int indent ) const {
     531//      os << string( indent,' ' ) << "CompoundLiteralNode:" << endl;
     532
     533//      os << string( indent + 2, ' ' ) << "type:" << endl;
     534//      if ( type != 0 )
     535//              type->print( os, indent + 4 );
     536
     537//      os << string( indent + 2, ' ' ) << "initialization:" << endl;
     538//      if ( kids != 0 )
     539//              kids->printList( os, indent + 4 );
     540// }
     541
     542// void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const {
     543//      os << "( ";
     544//      if ( type ) type->print( os );
     545//      os << ", ";
     546//      if ( kids ) kids->printOneLine( os );
     547//      os << ") ";
     548// }
     549
     550// Expression *CompoundLiteralNode::build() const {
     551//      Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
     552//      if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
     553//              return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     554//      // these types do not have associated type information
     555//      } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
     556//              return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     557//      } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
     558//              return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     559//      } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
     560//              return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     561//      } else {
     562//              assert( false );
     563//      } // if
     564// }
     565
     566Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
     567        Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
    624568        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    625569                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
  • src/Parser/ParseNode.cc

    r7bf7fb9 rd1625f8  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug  6 08:26:11 2016
    13 // Update Count     : 93
     12// Last Modified On : Sun Aug  7 23:32:47 2016
     13// Update Count     : 94
    1414//
    1515
  • src/Parser/ParseNode.h

    r7bf7fb9 rd1625f8  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 09:37:16 2016
    13 // Update Count     : 333
     12// Last Modified On : Tue Aug  9 12:28:12 2016
     13// Update Count     : 389
    1414//
    1515
     
    3333class CompoundStmtNode;
    3434class DeclarationNode;
     35class ExpressionNode;
    3536class InitializerNode;
    3637
     
    6768//##############################################################################
    6869
     70class InitializerNode : public ParseNode {
     71  public:
     72        InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode *des = 0 );
     73        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
     74        ~InitializerNode();
     75
     76        ExpressionNode *get_expression() const { return expr; }
     77
     78        InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
     79        ExpressionNode *get_designators() const { return designator; }
     80
     81        InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
     82        bool get_maybeConstructed() const { return maybeConstructed; }
     83
     84        InitializerNode *next_init() const { return kids; }
     85
     86        void print( std::ostream &os, int indent = 0 ) const;
     87        void printOneLine( std::ostream & ) const;
     88
     89        virtual Initializer *build() const;
     90  private:
     91        ExpressionNode *expr;
     92        bool aggregate;
     93        ExpressionNode *designator; // may be list
     94        InitializerNode *kids;
     95        bool maybeConstructed;
     96};
     97
     98//##############################################################################
     99
    69100class ExpressionNode : public ParseNode {
    70101  public:
    71         ExpressionNode();
    72         ExpressionNode( const std::string * );
     102        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     103        ExpressionNode( Expression * expr, const std::string *name ) : ParseNode( name ), expr( expr ) {}
    73104        ExpressionNode( const ExpressionNode &other );
    74         virtual ~ExpressionNode() { delete argName; }
    75 
    76         virtual ExpressionNode *clone() const = 0;
    77 
    78         ExpressionNode *get_argName() const { return argName; }
    79         ExpressionNode *set_argName( const std::string *aName );
    80         ExpressionNode *set_argName( ExpressionNode *aDesignator );
     105        virtual ~ExpressionNode() {}
     106
     107        virtual ExpressionNode *clone() const { return 0; }
     108
    81109        bool get_extension() const { return extension; }
    82110        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    83111
    84         virtual void print( std::ostream &os, int indent = 0) const = 0;
    85         virtual void printOneLine( std::ostream &os, int indent = 0) const = 0;
    86 
    87         virtual Expression *build() const = 0;
    88   protected:
    89         void printDesignation ( std::ostream &os, int indent = 0) const;
    90   private:
    91         ExpressionNode *argName = 0;
     112        virtual void print( std::ostream &os, int indent = 0 ) const {}
     113        virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
     114
     115        virtual Expression *build() const { return expr; }
     116  private:
    92117        bool extension = false;
     118        Expression *expr;
    93119};
    94120
     
    109135
    110136// NullExprNode is used in tuples as a place-holder where a tuple component is omitted e.g., [ 2, , 3 ]
    111 class NullExprNode : public ExpressionNode {
    112   public:
    113         NullExprNode();
    114 
    115         virtual NullExprNode *clone() const;
    116 
    117         virtual void print( std::ostream &os, int indent = 0) const;
    118         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    119 
    120         virtual Expression *build() const;
    121 };
    122 
    123 //##############################################################################
    124 
    125 class ConstantNode : public ExpressionNode {
    126   public:
    127         ConstantNode( ConstantExpr *expr ) : expr( expr ) {}
    128         ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {}
    129         virtual ~ConstantNode() {}
    130 
    131         virtual ConstantNode *clone() const { assert( false ); return new ConstantNode( *this ); }
    132 
    133         ConstantExpr *get_expr() const { return expr; }
    134 
    135         virtual void print( std::ostream &os, int indent = 0 ) const {}
    136         virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
    137 
    138         Expression *build() const { return expr; }
    139   private:
    140         ConstantExpr *expr;
    141 };
    142 
    143 ConstantNode *build_constantInteger( std::string &str );
    144 ConstantNode *build_constantFloat( std::string &str );
    145 ConstantNode *build_constantChar( std::string &str );
    146 ConstantNode *build_constantStr( std::string &str );
    147 
    148 //##############################################################################
    149 
    150 class VarRefNode : public ExpressionNode {
    151   public:
    152         VarRefNode( const std::string *, bool isLabel = false );
    153         VarRefNode( const VarRefNode &other );
    154 
    155         virtual Expression *build() const ;
    156 
    157         virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
    158 
    159         virtual void print( std::ostream &os, int indent = 0 ) const;
    160         virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
    161   private:
    162         bool isLabel;
    163 };
    164 
    165 //##############################################################################
    166 
    167 class DesignatorNode : public ExpressionNode {
    168   public:
    169         DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );
    170         DesignatorNode( const DesignatorNode &other );
    171 
    172         virtual Expression *build() const ;
    173         virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }
    174 
    175         virtual void print( std::ostream &os, int indent = 0 ) const;
    176         virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
    177   private:
    178         bool isArrayIndex;
    179 };
    180 
    181 //##############################################################################
    182 
    183 class TypeValueNode : public ExpressionNode {
    184   public:
    185         TypeValueNode( DeclarationNode * );
    186         TypeValueNode( const TypeValueNode &other );
    187 
    188         DeclarationNode *get_decl() const { return decl; }
    189 
    190         virtual Expression *build() const ;
    191 
    192         virtual TypeValueNode *clone() const { return new TypeValueNode( *this ); }
    193 
    194         virtual void print( std::ostream &os, int indent = 0) const;
    195         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    196   private:
    197         DeclarationNode *decl;
    198 };
    199 
    200 //##############################################################################
    201 
    202 class CompositeExprNode : public ExpressionNode {
    203   public:
    204         CompositeExprNode( Expression *expr ) : expr( expr ) {}
    205         CompositeExprNode( const CompositeExprNode &other ) : expr( other.expr->clone() ) {}
    206         virtual ~CompositeExprNode() {}
    207 
    208         CompositeExprNode *clone() const { assert( false ); return new CompositeExprNode( *this ); }
    209 
    210         Expression *build() const { return expr; }
    211 
    212         void print( std::ostream &os, int indent = 0 ) const {}
    213         void printOneLine( std::ostream &os, int indent = 0 ) const {}
    214   private:
    215         Expression *expr;
    216 };
     137// class NullExprNode : public ExpressionNode {
     138//   public:
     139//      NullExprNode() {}
     140
     141//      virtual NullExprNode *clone() const { assert( false ); }
     142
     143//      virtual void print( std::ostream &os, int indent = 0) const {}
     144//      virtual void printOneLine( std::ostream &os, int indent = 0) const {}
     145
     146//      virtual Expression *build() const { assert( false ); return 0; }
     147// };
     148
     149//##############################################################################
     150
     151// class ConstantNode : public ExpressionNode {
     152//   public:
     153//      ConstantNode( ConstantExpr *expr ) : expr( expr ) {}
     154//      ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {}
     155//      virtual ~ConstantNode() {}
     156
     157//      virtual ConstantNode *clone() const { assert( false ); return new ConstantNode( *this ); }
     158
     159//      ConstantExpr *get_expr() const { return expr; }
     160
     161//      virtual void print( std::ostream &os, int indent = 0 ) const {}
     162//      virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
     163
     164//      Expression *build() const { return expr; }
     165//   private:
     166//      ConstantExpr *expr;
     167// };
     168
     169Expression *build_constantInteger( std::string &str );
     170Expression *build_constantFloat( std::string &str );
     171Expression *build_constantChar( std::string &str );
     172ConstantExpr *build_constantStr( std::string &str );
     173
     174//##############################################################################
     175
     176// class VarRefNode : public ExpressionNode {
     177//   public:
     178//      VarRefNode( const std::string *, bool isLabel = false );
     179//      VarRefNode( const VarRefNode &other );
     180
     181//      virtual Expression *build() const ;
     182
     183//      virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
     184
     185//      virtual void print( std::ostream &os, int indent = 0 ) const;
     186//      virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
     187//   private:
     188//      bool isLabel;
     189// };
     190
     191NameExpr *build_varref( const std::string *name, bool labelp = false );
     192
     193//##############################################################################
     194
     195// class DesignatorNode : public ExpressionNode {
     196//   public:
     197//      DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );
     198//      DesignatorNode( const DesignatorNode &other );
     199
     200//      virtual Expression *build() const ;
     201//      virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }
     202
     203//      virtual void print( std::ostream &os, int indent = 0 ) const;
     204//      virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
     205//   private:
     206//      bool isArrayIndex;
     207// };
     208
     209//##############################################################################
     210
     211// class TypeValueNode : public ExpressionNode {
     212//   public:
     213//      TypeValueNode( DeclarationNode * );
     214//      TypeValueNode( const TypeValueNode &other );
     215
     216//      DeclarationNode *get_decl() const { return decl; }
     217
     218//      virtual Expression *build() const ;
     219
     220//      virtual TypeValueNode *clone() const { return new TypeValueNode( *this ); }
     221
     222//      virtual void print( std::ostream &os, int indent = 0) const;
     223//      virtual void printOneLine( std::ostream &os, int indent = 0) const;
     224//   private:
     225//      DeclarationNode *decl;
     226// };
     227
     228Expression *build_typevalue( DeclarationNode *decl );
     229
     230//##############################################################################
     231
     232// class CompositeExprNode : public ExpressionNode {
     233//   public:
     234//      CompositeExprNode( Expression *expr ) : expr( expr ) {}
     235//      CompositeExprNode( const CompositeExprNode &other ) : expr( other.expr->clone() ) {}
     236//      virtual ~CompositeExprNode() {}
     237
     238//      CompositeExprNode *clone() const { assert( false ); return new CompositeExprNode( *this ); }
     239
     240//      Expression *build() const { return expr; }
     241
     242//      void print( std::ostream &os, int indent = 0 ) const {}
     243//      void printOneLine( std::ostream &os, int indent = 0 ) const {}
     244//   private:
     245//      Expression *expr;
     246// };
    217247
    218248enum class OperKinds {
     
    227257};
    228258
    229 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node );
    230 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member );
    231 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member );
     259Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node );
     260Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member );
     261Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member );
    232262Expression *build_addressOf( ExpressionNode *expr_node );
    233 Expression *build_sizeOf( ExpressionNode *expr_node );
    234 Expression *build_alignOf( ExpressionNode *expr_node );
    235 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member );
     263Expression *build_sizeOfexpr( ExpressionNode *expr_node );
     264Expression *build_sizeOftype( DeclarationNode *decl_node );
     265Expression *build_alignOfexpr( ExpressionNode *expr_node );
     266Expression *build_alignOftype( DeclarationNode *decl_node );
     267Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member );
    236268Expression *build_and( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    237269Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind );
     
    242274Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 );
    243275Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    244 Expression *build_attr( VarRefNode *var, ExpressionNode * expr = 0 );
    245 Expression *build_tuple( ExpressionNode * expr = 0 );
    246 Expression *build_func( ExpressionNode * function, ExpressionNode * expr );
     276Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node );
     277Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node );
     278Expression *build_tuple( ExpressionNode * expr_node = 0 );
     279Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node );
    247280Expression *build_range( ExpressionNode * low, ExpressionNode *high );
    248281
    249282//##############################################################################
    250283
    251 class AsmExprNode : public ExpressionNode {
    252   public:
    253         AsmExprNode();
    254         AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
    255         virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }
    256 
    257         virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }
    258         virtual Expression *build() const;
     284// class AsmExprNode : public ExpressionNode {
     285//   public:
     286//      AsmExprNode();
     287//      AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     288//      virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }
     289
     290//      virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }
     291//      virtual Expression *build() const;
     292
     293//      virtual void print( std::ostream &os, int indent = 0) const;
     294//      virtual void printOneLine( std::ostream &os, int indent = 0) const;
     295
     296//      ExpressionNode *get_inout() const { return inout; };
     297//      void set_inout( ExpressionNode *newValue ) { inout = newValue; }
     298
     299//      ConstantNode *get_constraint() const { return constraint; };
     300//      void set_constraint( ConstantNode *newValue ) { constraint = newValue; }
     301
     302//      ExpressionNode *get_operand() const { return operand; };
     303//      void set_operand( ExpressionNode *newValue ) { operand = newValue; }
     304//   private:
     305//      ExpressionNode *inout;
     306//      ConstantNode *constraint;
     307//      ExpressionNode *operand;
     308// };
     309
     310Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand );
     311
     312//##############################################################################
     313
     314class LabelNode : public ExpressionNode {
     315  public:
     316        virtual Expression *build() const { return NULL; }
     317        virtual LabelNode *clone() const { assert( false ); return new LabelNode( *this ); }
    259318
    260319        virtual void print( std::ostream &os, int indent = 0) const;
    261320        virtual void printOneLine( std::ostream &os, int indent = 0) const;
    262321
    263         ExpressionNode *get_inout() const { return inout; };
    264         void set_inout( ExpressionNode *newValue ) { inout = newValue; }
    265 
    266         ConstantNode *get_constraint() const { return constraint; };
    267         void set_constraint( ConstantNode *newValue ) { constraint = newValue; }
    268 
    269         ExpressionNode *get_operand() const { return operand; };
    270         void set_operand( ExpressionNode *newValue ) { operand = newValue; }
    271   private:
    272         ExpressionNode *inout;
    273         ConstantNode *constraint;
    274         ExpressionNode *operand;
    275 };
    276 
    277 //##############################################################################
    278 
    279 class LabelNode : public ExpressionNode {
    280   public:
    281         virtual Expression *build() const { return NULL; }
    282         virtual LabelNode *clone() const { return new LabelNode( *this ); }
    283 
    284         virtual void print( std::ostream &os, int indent = 0) const;
    285         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    286 
    287322        const std::list< Label > &get_labels() const { return labels; };
    288         void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
     323        void append_label( std::string * label ) { labels.push_back( *label ); delete label; }
    289324  private:
    290325        std::list< Label > labels;
     
    316351//##############################################################################
    317352
    318 class ValofExprNode : public ExpressionNode {
    319   public:
    320         ValofExprNode();
    321         ValofExprNode( StatementNode *s = 0 );
    322         ValofExprNode( const ValofExprNode &other );
    323         ~ValofExprNode();
    324 
    325         virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }
    326 
    327         StatementNode *get_body() const { return body; }
    328         void print( std::ostream &os, int indent = 0 ) const;
    329         void printOneLine( std::ostream &os, int indent = 0 ) const;
    330         Expression *build() const;
    331 
    332   private:
    333         StatementNode *body;
    334 };
     353// class ValofExprNode : public ExpressionNode {
     354//   public:
     355//      ValofExprNode();
     356//      ValofExprNode( StatementNode *s = 0 );
     357//      ValofExprNode( const ValofExprNode &other );
     358//      ~ValofExprNode();
     359
     360//      virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }
     361
     362//      StatementNode *get_body() const { return body; }
     363//      void print( std::ostream &os, int indent = 0 ) const;
     364//      void printOneLine( std::ostream &os, int indent = 0 ) const;
     365//      Expression *build() const;
     366
     367//   private:
     368//      StatementNode *body;
     369// };
     370
     371Expression *build_valexpr( StatementNode *s );
     372
     373//##############################################################################
     374
     375// class CompoundLiteralNode : public ExpressionNode {
     376//   public:
     377//      CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );
     378//      CompoundLiteralNode( const CompoundLiteralNode &type );
     379//      ~CompoundLiteralNode();
     380
     381//      virtual CompoundLiteralNode *clone() const;
     382
     383//      DeclarationNode *get_type() const { return type; }
     384//      CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }
     385
     386//      InitializerNode *get_initializer() const { return kids; }
     387//      CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }
     388
     389//      void print( std::ostream &os, int indent = 0 ) const;
     390//      void printOneLine( std::ostream &os, int indent = 0 ) const;
     391
     392//      virtual Expression *build() const;
     393//   private:
     394//      DeclarationNode *type;
     395//      InitializerNode *kids;
     396// };
     397
     398Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids );
    335399
    336400//##############################################################################
     
    444508}; // DeclarationNode
    445509
     510Type *buildType( TypeData *type );
     511
    446512//##############################################################################
    447513
     
    520586class AsmStmtNode : public StatementNode {
    521587  public:
    522         AsmStmtNode( Type, bool voltile, ConstantNode *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ConstantNode *clobber = 0, LabelNode *gotolabels = 0 );
     588        AsmStmtNode( Type, bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
    523589        ~AsmStmtNode();
    524590
     
    527593  private:
    528594        bool voltile;
    529         ConstantNode *instruction;
     595        ConstantExpr *instruction;
    530596        ExpressionNode *output, *input;
    531         ConstantNode *clobber;
     597        ExpressionNode *clobber;
    532598        std::list< Label > gotolabels;
    533599};
    534600
    535601//##############################################################################
    536 
    537 class InitializerNode : public ParseNode {
    538   public:
    539         InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode *des = 0 );
    540         InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
    541         ~InitializerNode();
    542 
    543         ExpressionNode *get_expression() const { return expr; }
    544 
    545         InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
    546         ExpressionNode *get_designators() const { return designator; }
    547 
    548         InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
    549         bool get_maybeConstructed() const { return maybeConstructed; }
    550 
    551         InitializerNode *next_init() const { return kids; }
    552 
    553         void print( std::ostream &os, int indent = 0 ) const;
    554         void printOneLine( std::ostream & ) const;
    555 
    556         virtual Initializer *build() const;
    557   private:
    558         ExpressionNode *expr;
    559         bool aggregate;
    560         ExpressionNode *designator; // may be list
    561         InitializerNode *kids;
    562         bool maybeConstructed;
    563 };
    564 
    565 //##############################################################################
    566 
    567 class CompoundLiteralNode : public ExpressionNode {
    568   public:
    569         CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );
    570         CompoundLiteralNode( const CompoundLiteralNode &type );
    571         ~CompoundLiteralNode();
    572 
    573         virtual CompoundLiteralNode *clone() const;
    574 
    575         DeclarationNode *get_type() const { return type; }
    576         CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }
    577 
    578         InitializerNode *get_initializer() const { return kids; }
    579         CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }
    580 
    581         void print( std::ostream &os, int indent = 0 ) const;
    582         void printOneLine( std::ostream &os, int indent = 0 ) const;
    583 
    584         virtual Expression *build() const;
    585   private:
    586         DeclarationNode *type;
    587         InitializerNode *kids;
    588 };
    589602
    590603template< typename SynTreeType, typename NodeType >
  • src/Parser/StatementNode.cc

    r7bf7fb9 rd1625f8  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 06:42:38 2016
    13 // Update Count     : 135
     12// Last Modified On : Tue Aug  9 10:14:33 2016
     13// Update Count     : 141
    1414//
    1515
     
    350350
    351351
    352 AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantNode *instruction, ExpressionNode *output, ExpressionNode *input, ConstantNode *clobber, LabelNode *gotolabels ) :
     352AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
    353353        StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
    354354        if ( gotolabels ) {
     
    359359
    360360AsmStmtNode::~AsmStmtNode() {
    361         delete instruction; delete output; delete input; delete clobber;
     361        delete output; delete input; delete clobber;
    362362}
    363363
     
    367367        if ( instruction ) {
    368368                os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
    369                 instruction->printList( os, indent + 2 * ParseNode::indent_by );
     369//              instruction->printList( os, indent + 2 * ParseNode::indent_by );
    370370        } // if
    371371        if ( output ) {
     
    379379        if ( clobber ) {
    380380                os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
    381                 clobber->printList( os, indent + 2 * ParseNode::indent_by );
     381//              clobber->printList( os, indent + 2 * ParseNode::indent_by );
    382382        } // if
    383383        if ( ! gotolabels.empty() ) {
     
    408408        buildList( clobber, clob );
    409409        std::list< Label > gotolabs = gotolabels;
    410         return new AsmStmt( labs, voltile, (ConstantExpr *)maybeBuild< Expression >( instruction ), out, in, clob, gotolabs );
     410        return new AsmStmt( labs, voltile, instruction, out, in, clob, gotolabs );
    411411}
    412412
  • src/Parser/parser.cc

    r7bf7fb9 rd1625f8  
    356356        DeclarationNode::TypeClass tclass;
    357357        StatementNode *sn;
    358         ConstantNode *constant;
     358        ConstantExpr *constant;
    359359        LabelNode *label;
    360360        InitializerNode *in;
     
    596596#define YYFINAL  251
    597597/* YYLAST -- Last index in YYTABLE.  */
    598 #define YYLAST   10969
     598#define YYLAST   10816
    599599
    600600/* YYNTOKENS -- Number of terminals.  */
     
    603603#define YYNNTS  241
    604604/* YYNRULES -- Number of rules.  */
    605 #define YYNRULES  754
     605#define YYNRULES  750
    606606/* YYNRULES -- Number of states.  */
    607 #define YYNSTATES  1577
     607#define YYNSTATES  1554
    608608
    609609/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    620620       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    621621       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622        2,     2,     2,   122,     2,     2,     2,   125,   119,     2,
    623      109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
    624        2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
    625      126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
     622       2,     2,     2,   121,     2,     2,     2,   124,   118,     2,
     623     109,   110,   117,   119,   116,   120,   113,   123,     2,     2,
     624       2,     2,     2,     2,     2,     2,     2,     2,   130,   132,
     625     125,   131,   126,   129,     2,     2,     2,     2,     2,     2,
    626626       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    627627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    628        2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
     628       2,   111,     2,   112,   127,     2,     2,     2,     2,     2,
    629629       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    630630       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    631        2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
     631       2,     2,     2,   114,   128,   115,   122,     2,     2,     2,
    632632       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    633633       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    664664      17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
    665665      38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
    666       87,    90,    98,   103,   105,   109,   110,   112,   116,   124,
    667      134,   136,   140,   142,   146,   154,   158,   166,   168,   170,
    668      172,   175,   178,   181,   184,   187,   190,   195,   202,   204,
    669      209,   214,   217,   222,   224,   226,   228,   230,   232,   234,
    670      236,   241,   246,   248,   252,   256,   260,   262,   266,   270,
    671      272,   276,   280,   282,   286,   290,   294,   298,   300,   304,
    672      308,   310,   314,   316,   320,   322,   326,   328,   332,   334,
    673      338,   340,   346,   351,   357,   359,   361,   365,   368,   369,
    674      371,   373,   375,   377,   379,   381,   383,   385,   387,   389,
    675      391,   393,   396,   402,   409,   417,   419,   423,   425,   429,
    676      430,   432,   434,   436,   438,   440,   442,   444,   446,   448,
    677      455,   460,   463,   471,   473,   477,   479,   482,   484,   487,
    678      489,   492,   495,   501,   509,   515,   525,   531,   541,   543,
    679      547,   549,   551,   555,   559,   562,   564,   567,   570,   571,
    680      573,   576,   580,   581,   583,   586,   590,   594,   599,   600,
    681      602,   604,   607,   613,   621,   628,   635,   640,   644,   649,
    682      652,   656,   659,   663,   667,   671,   675,   681,   685,   689,
    683      694,   696,   702,   709,   715,   722,   732,   743,   753,   764,
    684      767,   769,   772,   775,   778,   780,   787,   796,   807,   820,
    685      835,   836,   838,   839,   841,   843,   847,   852,   860,   861,
    686      863,   867,   869,   873,   875,   877,   879,   883,   885,   887,
    687      889,   893,   894,   896,   900,   905,   907,   911,   913,   915,
    688      919,   923,   927,   931,   935,   938,   942,   949,   953,   957,
    689      962,   964,   967,   970,   974,   980,   989,   997,  1005,  1011,
    690     1021,  1024,  1027,  1033,  1037,  1043,  1048,  1052,  1057,  1062,
    691     1070,  1074,  1078,  1082,  1086,  1091,  1098,  1100,  1102,  1104,
    692     1106,  1108,  1110,  1112,  1114,  1115,  1117,  1119,  1122,  1124,
    693     1126,  1128,  1130,  1132,  1134,  1136,  1137,  1143,  1145,  1148,
    694     1152,  1154,  1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,
    695     1173,  1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,
    696     1193,  1195,  1197,  1199,  1201,  1203,  1206,  1209,  1213,  1217,
    697     1219,  1223,  1225,  1228,  1231,  1234,  1239,  1244,  1249,  1254,
    698     1256,  1259,  1262,  1266,  1268,  1271,  1274,  1276,  1279,  1282,
    699     1286,  1288,  1291,  1294,  1296,  1298,  1303,  1306,  1307,  1314,
    700     1322,  1325,  1328,  1331,  1332,  1335,  1338,  1342,  1345,  1349,
    701     1351,  1354,  1358,  1361,  1364,  1369,  1370,  1372,  1375,  1378,
    702     1380,  1381,  1383,  1386,  1389,  1395,  1398,  1399,  1407,  1410,
    703     1415,  1416,  1419,  1420,  1422,  1424,  1426,  1432,  1438,  1444,
    704     1446,  1452,  1458,  1468,  1470,  1476,  1477,  1479,  1481,  1487,
    705     1489,  1491,  1497,  1503,  1505,  1509,  1513,  1518,  1520,  1522,
    706     1524,  1526,  1529,  1531,  1535,  1539,  1541,  1544,  1546,  1550,
    707     1552,  1554,  1556,  1558,  1560,  1562,  1564,  1566,  1568,  1570,
    708     1572,  1575,  1577,  1579,  1581,  1584,  1585,  1588,  1591,  1593,
    709     1598,  1599,  1601,  1604,  1608,  1613,  1616,  1619,  1621,  1624,
    710     1626,  1629,  1635,  1641,  1649,  1656,  1658,  1661,  1664,  1668,
    711     1670,  1673,  1676,  1681,  1684,  1689,  1690,  1695,  1698,  1700,
    712     1702,  1704,  1705,  1708,  1714,  1720,  1734,  1736,  1738,  1742,
    713     1746,  1749,  1753,  1757,  1760,  1765,  1767,  1774,  1784,  1785,
    714     1797,  1799,  1803,  1807,  1811,  1813,  1815,  1821,  1824,  1830,
    715     1831,  1833,  1835,  1839,  1840,  1842,  1844,  1846,  1848,  1849,
    716     1856,  1859,  1861,  1864,  1869,  1872,  1876,  1880,  1884,  1889,
    717     1895,  1901,  1907,  1914,  1916,  1918,  1920,  1924,  1925,  1931,
    718     1932,  1934,  1936,  1939,  1946,  1948,  1952,  1953,  1955,  1960,
    719     1962,  1964,  1966,  1968,  1971,  1973,  1976,  1979,  1981,  1985,
    720     1988,  1992,  1996,  1999,  2004,  2009,  2013,  2022,  2026,  2029,
    721     2031,  2034,  2041,  2050,  2054,  2057,  2061,  2065,  2070,  2075,
    722     2079,  2081,  2083,  2085,  2090,  2097,  2101,  2104,  2108,  2112,
    723     2117,  2122,  2126,  2129,  2131,  2134,  2137,  2139,  2143,  2146,
    724     2150,  2154,  2157,  2162,  2167,  2171,  2178,  2187,  2191,  2194,
    725     2196,  2199,  2202,  2205,  2209,  2213,  2216,  2221,  2226,  2230,
    726     2237,  2246,  2250,  2253,  2255,  2258,  2261,  2263,  2265,  2268,
    727     2272,  2276,  2279,  2284,  2291,  2300,  2302,  2305,  2308,  2310,
    728     2313,  2316,  2320,  2324,  2326,  2331,  2336,  2340,  2346,  2355,
    729     2359,  2362,  2366,  2368,  2374,  2380,  2387,  2394,  2396,  2399,
    730     2402,  2404,  2407,  2410,  2414,  2418,  2420,  2425,  2430,  2434,
    731     2440,  2449,  2453,  2455,  2458,  2460,  2463,  2470,  2476,  2483,
    732     2491,  2499,  2501,  2504,  2507,  2509,  2512,  2515,  2519,  2523,
    733     2525,  2530,  2535,  2539,  2548,  2552,  2554,  2556,  2559,  2561,
    734     2563,  2566,  2570,  2573,  2577,  2580,  2584,  2588,  2591,  2596,
    735     2600,  2603,  2607,  2610,  2615,  2619,  2622,  2629,  2636,  2643,
    736     2651,  2653,  2656,  2658,  2660,  2662,  2665,  2669,  2672,  2676,
    737     2679,  2683,  2687,  2692,  2695,  2699,  2704,  2707,  2713,  2719,
    738     2726,  2733,  2734,  2736,  2737
     666      87,    90,    98,   103,   105,   109,   110,   112,   114,   118,
     667     120,   124,   132,   136,   144,   146,   148,   150,   153,   156,
     668     159,   162,   165,   168,   173,   176,   181,   188,   190,   195,
     669     200,   202,   204,   206,   208,   210,   212,   214,   219,   224,
     670     226,   230,   234,   238,   240,   244,   248,   250,   254,   258,
     671     260,   264,   268,   272,   276,   278,   282,   286,   288,   292,
     672     294,   298,   300,   304,   306,   310,   312,   316,   318,   324,
     673     329,   335,   337,   339,   343,   346,   347,   349,   351,   353,
     674     355,   357,   359,   361,   363,   365,   367,   369,   371,   374,
     675     380,   387,   395,   397,   401,   403,   407,   408,   410,   412,
     676     414,   416,   418,   420,   422,   424,   426,   433,   438,   441,
     677     449,   451,   455,   457,   460,   462,   465,   467,   470,   473,
     678     479,   487,   493,   503,   509,   519,   521,   525,   527,   529,
     679     533,   537,   540,   542,   545,   548,   549,   551,   554,   558,
     680     559,   561,   564,   568,   572,   577,   578,   580,   582,   585,
     681     591,   599,   606,   613,   618,   622,   627,   630,   634,   637,
     682     641,   645,   649,   653,   659,   663,   667,   672,   674,   680,
     683     687,   693,   700,   710,   721,   731,   742,   745,   747,   750,
     684     753,   756,   758,   765,   774,   785,   798,   813,   814,   816,
     685     817,   819,   821,   825,   830,   838,   839,   841,   845,   847,
     686     851,   853,   855,   857,   861,   863,   865,   867,   871,   872,
     687     874,   878,   883,   885,   889,   891,   893,   897,   901,   905,
     688     909,   913,   916,   920,   927,   931,   935,   940,   942,   945,
     689     948,   952,   958,   967,   975,   983,   989,   999,  1002,  1005,
     690    1011,  1015,  1021,  1026,  1030,  1035,  1040,  1048,  1052,  1056,
     691    1060,  1064,  1069,  1076,  1078,  1080,  1082,  1084,  1086,  1088,
     692    1090,  1092,  1093,  1095,  1097,  1100,  1102,  1104,  1106,  1108,
     693    1110,  1112,  1114,  1115,  1121,  1123,  1126,  1130,  1132,  1135,
     694    1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
     695    1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
     696    1177,  1179,  1181,  1184,  1187,  1191,  1195,  1197,  1201,  1203,
     697    1206,  1209,  1212,  1217,  1222,  1227,  1232,  1234,  1237,  1240,
     698    1244,  1246,  1249,  1252,  1254,  1257,  1260,  1264,  1266,  1269,
     699    1272,  1274,  1276,  1281,  1284,  1285,  1292,  1300,  1303,  1306,
     700    1309,  1310,  1313,  1316,  1320,  1323,  1327,  1329,  1332,  1336,
     701    1339,  1342,  1347,  1348,  1350,  1353,  1356,  1358,  1359,  1361,
     702    1364,  1367,  1373,  1376,  1377,  1385,  1388,  1393,  1394,  1397,
     703    1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
     704    1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
     705    1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
     706    1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
     707    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1553,  1555,
     708    1557,  1559,  1562,  1563,  1566,  1569,  1571,  1576,  1577,  1579,
     709    1582,  1586,  1591,  1594,  1597,  1599,  1602,  1605,  1611,  1617,
     710    1625,  1632,  1634,  1637,  1640,  1644,  1646,  1649,  1652,  1657,
     711    1660,  1665,  1666,  1671,  1674,  1676,  1678,  1680,  1681,  1684,
     712    1690,  1696,  1710,  1712,  1714,  1718,  1722,  1725,  1729,  1733,
     713    1736,  1741,  1743,  1750,  1760,  1761,  1773,  1775,  1779,  1783,
     714    1787,  1789,  1791,  1797,  1800,  1806,  1807,  1809,  1811,  1815,
     715    1816,  1818,  1820,  1822,  1824,  1825,  1832,  1835,  1837,  1840,
     716    1845,  1848,  1852,  1856,  1860,  1865,  1871,  1877,  1883,  1890,
     717    1892,  1894,  1896,  1900,  1901,  1907,  1908,  1910,  1912,  1915,
     718    1922,  1924,  1928,  1929,  1931,  1936,  1938,  1940,  1942,  1944,
     719    1947,  1949,  1952,  1955,  1957,  1961,  1964,  1968,  1972,  1975,
     720    1980,  1985,  1989,  1998,  2002,  2005,  2007,  2010,  2017,  2026,
     721    2030,  2033,  2037,  2041,  2046,  2051,  2055,  2057,  2059,  2061,
     722    2066,  2073,  2077,  2080,  2084,  2088,  2093,  2098,  2102,  2105,
     723    2107,  2110,  2113,  2115,  2119,  2122,  2126,  2130,  2133,  2138,
     724    2143,  2147,  2154,  2163,  2167,  2170,  2172,  2175,  2178,  2181,
     725    2185,  2189,  2192,  2197,  2202,  2206,  2213,  2222,  2226,  2229,
     726    2231,  2234,  2237,  2239,  2241,  2244,  2248,  2252,  2255,  2260,
     727    2267,  2276,  2278,  2281,  2284,  2286,  2289,  2292,  2296,  2300,
     728    2302,  2307,  2312,  2316,  2322,  2331,  2335,  2338,  2342,  2344,
     729    2350,  2356,  2363,  2370,  2372,  2375,  2378,  2380,  2383,  2386,
     730    2390,  2394,  2396,  2401,  2406,  2410,  2416,  2425,  2429,  2431,
     731    2434,  2436,  2439,  2446,  2452,  2459,  2467,  2475,  2477,  2480,
     732    2483,  2485,  2488,  2491,  2495,  2499,  2501,  2506,  2511,  2515,
     733    2524,  2528,  2530,  2532,  2535,  2537,  2539,  2542,  2546,  2549,
     734    2553,  2556,  2560,  2564,  2567,  2572,  2576,  2579,  2583,  2586,
     735    2591,  2595,  2598,  2605,  2612,  2619,  2627,  2629,  2632,  2634,
     736    2636,  2638,  2641,  2645,  2648,  2652,  2655,  2659,  2663,  2668,
     737    2671,  2675,  2680,  2683,  2689,  2695,  2702,  2709,  2710,  2712,
     738    2713
    739739};
    740740
     
    753753     109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
    754754     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    755      164,    -1,   139,   117,   164,    -1,   111,   134,   164,   135,
    756      112,   117,   164,    -1,   111,   134,   164,   116,   168,   135,
    757      112,   117,   164,    -1,   147,    -1,   146,   116,   147,    -1,
    758      139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
    759      146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
    760      111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
    761      141,    -1,    40,   151,    -1,   149,   151,    -1,   150,   151,
    762       -1,    86,   148,    -1,    87,   148,    -1,    37,   148,    -1,
    763       37,   109,   275,   110,    -1,    38,   109,   275,   116,   139,
    764      110,    -1,    76,    -1,    76,   109,   276,   110,    -1,    76,
    765      109,   145,   110,    -1,    66,   148,    -1,    66,   109,   275,
    766      110,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
    767      122,    -1,   123,    -1,   148,    -1,   109,   275,   110,   151,
    768       -1,   109,   275,   110,   167,    -1,   151,    -1,   152,   118,
    769      151,    -1,   152,   124,   151,    -1,   152,   125,   151,    -1,
    770      152,    -1,   153,   120,   152,    -1,   153,   121,   152,    -1,
    771      153,    -1,   154,    88,   153,    -1,   154,    89,   153,    -1,
    772      154,    -1,   155,   126,   154,    -1,   155,   127,   154,    -1,
    773      155,    90,   154,    -1,   155,    91,   154,    -1,   155,    -1,
    774      156,    92,   155,    -1,   156,    93,   155,    -1,   156,    -1,
    775      157,   119,   156,    -1,   157,    -1,   158,   128,   157,    -1,
    776      158,    -1,   159,   129,   158,    -1,   159,    -1,   160,    94,
    777      159,    -1,   160,    -1,   161,    95,   160,    -1,   161,    -1,
    778      161,   130,   169,   117,   162,    -1,   161,   130,   117,   162,
    779       -1,   161,   130,   169,   117,   167,    -1,   162,    -1,   162,
    780       -1,   148,   166,   164,    -1,   167,   373,    -1,    -1,   164,
    781       -1,   131,    -1,    97,    -1,    98,    -1,    99,    -1,   100,
    782       -1,   101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
    783       -1,   106,    -1,   111,   112,    -1,   111,   134,   164,   135,
    784      112,    -1,   111,   134,   116,   168,   135,   112,    -1,   111,
    785      134,   164,   116,   168,   135,   112,    -1,   165,    -1,   168,
    786      116,   165,    -1,   164,    -1,   169,   116,   164,    -1,    -1,
    787      169,    -1,   172,    -1,   173,    -1,   177,    -1,   178,    -1,
    788      190,    -1,   192,    -1,   193,    -1,   198,    -1,   128,   143,
    789      114,   144,   115,   132,    -1,    72,   117,   312,   171,    -1,
    790      114,   115,    -1,   114,   134,   134,   209,   174,   135,   115,
    791       -1,   175,    -1,   174,   134,   175,    -1,   212,    -1,    40,
    792      212,    -1,   308,    -1,   171,   135,    -1,   171,    -1,   176,
    793      171,    -1,   170,   132,    -1,    41,   109,   169,   110,   171,
    794       -1,    41,   109,   169,   110,   171,    42,   171,    -1,    43,
    795      109,   169,   110,   183,    -1,    43,   109,   169,   110,   114,
    796      134,   205,   184,   115,    -1,    53,   109,   169,   110,   183,
    797       -1,    53,   109,   169,   110,   114,   134,   205,   186,   115,
    798       -1,   163,    -1,   163,    96,   163,    -1,   310,    -1,   179,
    799       -1,   180,   116,   179,    -1,    44,   180,   117,    -1,    45,
    800      117,    -1,   181,    -1,   182,   181,    -1,   182,   171,    -1,
    801       -1,   185,    -1,   182,   176,    -1,   185,   182,   176,    -1,
    802       -1,   187,    -1,   182,   189,    -1,   182,   176,   188,    -1,
    803      187,   182,   189,    -1,   187,   182,   176,   188,    -1,    -1,
    804      189,    -1,    56,    -1,    56,   132,    -1,    47,   109,   169,
    805      110,   171,    -1,    46,   171,    47,   109,   169,   110,   132,
    806       -1,    48,   109,   134,   191,   110,   171,    -1,   170,   135,
    807      132,   170,   132,   170,    -1,   212,   170,   132,   170,    -1,
    808       51,    72,   132,    -1,    51,   118,   169,   132,    -1,    50,
    809      132,    -1,    50,    72,   132,    -1,    49,   132,    -1,    49,
    810       72,   132,    -1,    52,   170,   132,    -1,    61,   165,   132,
    811       -1,    62,   165,   132,    -1,    62,   165,    63,   164,   132,
    812       -1,    57,   173,   194,    -1,    57,   173,   196,    -1,    57,
    813      173,   194,   196,    -1,   195,    -1,    58,   109,    96,   110,
    814      173,    -1,   195,    58,   109,    96,   110,   173,    -1,    59,
    815      109,    96,   110,   173,    -1,   195,    59,   109,    96,   110,
    816      173,    -1,    58,   109,   134,   134,   197,   135,   110,   173,
    817      135,    -1,   195,    58,   109,   134,   134,   197,   135,   110,
    818      173,   135,    -1,    59,   109,   134,   134,   197,   135,   110,
    819      173,   135,    -1,   195,    59,   109,   134,   134,   197,   135,
    820      110,   173,   135,    -1,    60,   173,    -1,   225,    -1,   225,
    821      309,    -1,   225,   357,    -1,   366,   139,    -1,   366,    -1,
    822       64,   199,   109,   141,   110,   132,    -1,    64,   199,   109,
    823      141,   117,   200,   110,   132,    -1,    64,   199,   109,   141,
    824      117,   200,   117,   200,   110,   132,    -1,    64,   199,   109,
    825      141,   117,   200,   117,   200,   117,   203,   110,   132,    -1,
    826       64,   199,    51,   109,   141,   117,   117,   200,   117,   203,
    827      117,   204,   110,   132,    -1,    -1,    11,    -1,    -1,   201,
    828       -1,   202,    -1,   201,   116,   202,    -1,   141,   109,   163,
    829      110,    -1,   111,   163,   112,   141,   109,   163,   110,    -1,
    830       -1,   141,    -1,   203,   116,   141,    -1,   139,    -1,   204,
    831      116,   139,    -1,   135,    -1,   206,    -1,   212,    -1,   206,
    832      134,   212,    -1,   135,    -1,   208,    -1,   222,    -1,   208,
    833      134,   222,    -1,    -1,   210,    -1,    29,   211,   132,    -1,
    834      210,    29,   211,   132,    -1,   274,    -1,   211,   116,   274,
    835       -1,   213,    -1,   222,    -1,   214,   135,   132,    -1,   219,
    836      135,   132,    -1,   216,   135,   132,    -1,   293,   135,   132,
    837       -1,   296,   135,   132,    -1,   215,   277,    -1,   231,   215,
    838      277,    -1,   214,   135,   116,   134,   272,   277,    -1,   367,
    839      272,   311,    -1,   370,   272,   311,    -1,   227,   370,   272,
    840      311,    -1,   217,    -1,   227,   217,    -1,   231,   217,    -1,
    841      231,   227,   217,    -1,   216,   135,   116,   134,   272,    -1,
    842      111,   112,   272,   109,   134,   260,   135,   110,    -1,   370,
    843      272,   109,   134,   260,   135,   110,    -1,   218,   272,   109,
    844      134,   260,   135,   110,    -1,   111,   134,   262,   135,   112,
    845       -1,   111,   134,   262,   135,   116,   134,   263,   135,   112,
    846       -1,     3,   215,    -1,     3,   217,    -1,   219,   135,   116,
    847      134,   139,    -1,     3,   225,   309,    -1,   220,   135,   116,
    848      134,   309,    -1,   227,     3,   225,   309,    -1,   225,     3,
    849      309,    -1,   225,     3,   227,   309,    -1,     3,   139,   131,
    850      164,    -1,   221,   135,   116,   134,   139,   131,   164,    -1,
    851      223,   135,   132,    -1,   220,   135,   132,    -1,   221,   135,
    852      132,    -1,   240,   135,   132,    -1,   224,   309,   311,   277,
    853       -1,   223,   116,   312,   309,   311,   277,    -1,   236,    -1,
    854      240,    -1,   242,    -1,   283,    -1,   237,    -1,   241,    -1,
    855      243,    -1,   284,    -1,    -1,   227,    -1,   228,    -1,   227,
    856      228,    -1,   229,    -1,   314,    -1,    10,    -1,    12,    -1,
    857       11,    -1,    14,    -1,    67,    -1,    -1,    13,   109,   230,
    858      286,   110,    -1,   232,    -1,   227,   232,    -1,   231,   227,
    859      232,    -1,   233,    -1,   232,   233,    -1,   234,    -1,     5,
    860       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    861       -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
    862       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    863       -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
    864       -1,   237,    -1,   231,   237,    -1,   236,   233,    -1,   236,
    865      233,   227,    -1,   236,   233,   237,    -1,   238,    -1,   226,
    866      239,   226,    -1,   235,    -1,   227,   235,    -1,   238,   228,
    867       -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
    868      109,   169,   110,    -1,    78,   109,   276,   110,    -1,    78,
    869      109,   169,   110,    -1,   241,    -1,   231,   241,    -1,   240,
    870      233,    -1,   240,   233,   227,    -1,   244,    -1,   227,   244,
    871       -1,   241,   228,    -1,   243,    -1,   231,   243,    -1,   242,
    872      233,    -1,   242,   233,   227,    -1,    74,    -1,   227,    74,
    873       -1,   243,   228,    -1,   245,    -1,   256,    -1,   247,   114,
    874      248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
    875      114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
    876      115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
    877       -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
    878      132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
    879       -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
    880       -1,   225,   252,    -1,   251,   116,   312,   252,    -1,    -1,
    881      254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
    882       -1,   254,    -1,   117,   163,    -1,    30,   312,    -1,   255,
    883      114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
    884      274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
    885      258,   116,   274,   259,    -1,    -1,   131,   163,    -1,    -1,
    886      261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
    887      263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
    888      116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
    889      267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
    890      116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
    891      263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
    892       -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
    893       -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
    894      134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
    895      272,   373,    -1,   227,   370,   272,   373,    -1,   217,    -1,
    896      270,    -1,   362,    -1,   370,    -1,   227,   370,    -1,   371,
    897       -1,   224,   336,   373,    -1,   224,   340,   373,    -1,   224,
    898       -1,   224,   351,    -1,   139,    -1,   271,   116,   139,    -1,
    899      137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
    900       75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
    901      225,    -1,   225,   357,    -1,   366,    -1,   371,    -1,   225,
    902       -1,   225,   345,    -1,    -1,   131,   278,    -1,   107,   278,
    903       -1,   164,    -1,   114,   279,   372,   115,    -1,    -1,   278,
    904       -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
    905      280,   278,    -1,   281,   117,    -1,   274,   117,    -1,   282,
    906       -1,   281,   282,    -1,    80,    -1,   113,   274,    -1,   111,
    907      134,   164,   135,   112,    -1,   111,   134,   310,   135,   112,
    908       -1,   111,   134,   163,    96,   163,   135,   112,    -1,   113,
    909      111,   134,   146,   135,   112,    -1,   284,    -1,   231,   284,
    910       -1,   283,   233,    -1,   283,   233,   227,    -1,   285,    -1,
    911      227,   285,    -1,   284,   228,    -1,    75,   109,   292,   110,
    912       -1,   287,   373,    -1,   286,   116,   287,   373,    -1,    -1,
    913      289,   274,   288,   290,    -1,   225,   336,    -1,    33,    -1,
    914       35,    -1,    34,    -1,    -1,   290,   291,    -1,   129,   274,
    915      109,   292,   110,    -1,   129,   114,   134,   298,   115,    -1,
    916      129,   109,   134,   286,   135,   110,   114,   134,   298,   115,
    917      109,   292,   110,    -1,   276,    -1,   164,    -1,   292,   116,
    918      276,    -1,   292,   116,   164,    -1,    33,   294,    -1,   232,
    919       33,   294,    -1,   293,   116,   294,    -1,   295,   290,    -1,
    920      295,   290,   131,   276,    -1,   274,    -1,   273,   109,   134,
    921      286,   135,   110,    -1,    36,   274,   109,   134,   286,   135,
    922      110,   114,   115,    -1,    -1,    36,   274,   109,   134,   286,
    923      135,   110,   114,   297,   298,   115,    -1,   299,    -1,   298,
    924      134,   299,    -1,   300,   135,   132,    -1,   301,   135,   132,
    925       -1,   215,    -1,   217,    -1,   300,   135,   116,   134,   272,
    926       -1,   225,   309,    -1,   301,   135,   116,   134,   309,    -1,
    927       -1,   303,    -1,   305,    -1,   303,   134,   305,    -1,    -1,
    928      303,    -1,   212,    -1,   307,    -1,   198,    -1,    -1,     5,
    929       82,   306,   114,   304,   115,    -1,    40,   305,    -1,   308,
    930       -1,   323,   173,    -1,   327,   134,   207,   173,    -1,   216,
    931      173,    -1,   224,   323,   173,    -1,   227,   323,   173,    -1,
    932      231,   323,   173,    -1,   231,   227,   323,   173,    -1,   224,
    933      327,   134,   207,   173,    -1,   227,   327,   134,   207,   173,
    934       -1,   231,   327,   134,   207,   173,    -1,   231,   227,   327,
    935      134,   207,   173,    -1,   318,    -1,   331,    -1,   323,    -1,
    936      163,   123,   163,    -1,    -1,    64,   109,   141,   110,   312,
    937       -1,    -1,   313,    -1,   314,    -1,   313,   314,    -1,    39,
    938      109,   109,   315,   110,   110,    -1,   316,    -1,   315,   116,
    939      316,    -1,    -1,   317,    -1,   317,   109,   170,   110,    -1,
    940      272,    -1,   234,    -1,   235,    -1,   228,    -1,   319,   312,
    941       -1,   320,    -1,   321,   312,    -1,   322,   312,    -1,   137,
    942       -1,   109,   319,   110,    -1,   149,   318,    -1,   149,   227,
    943      318,    -1,   109,   320,   110,    -1,   319,   349,    -1,   109,
    944      320,   110,   349,    -1,   109,   321,   110,   350,    -1,   109,
    945      321,   110,    -1,   109,   320,   110,   109,   134,   264,   135,
    946      110,    -1,   109,   322,   110,    -1,   324,   312,    -1,   325,
    947       -1,   326,   312,    -1,   319,   109,   134,   264,   135,   110,
    948       -1,   109,   325,   110,   109,   134,   264,   135,   110,    -1,
    949      109,   324,   110,    -1,   149,   323,    -1,   149,   227,   323,
    950       -1,   109,   325,   110,    -1,   109,   325,   110,   349,    -1,
    951      109,   326,   110,   350,    -1,   109,   326,   110,    -1,   328,
    952       -1,   329,    -1,   330,    -1,   319,   109,   271,   110,    -1,
    953      109,   329,   110,   109,   271,   110,    -1,   109,   328,   110,
    954       -1,   149,   327,    -1,   149,   227,   327,    -1,   109,   329,
    955      110,    -1,   109,   329,   110,   349,    -1,   109,   330,   110,
    956      350,    -1,   109,   330,   110,    -1,   332,   312,    -1,   333,
    957       -1,   334,   312,    -1,   335,   312,    -1,   341,    -1,   109,
    958      332,   110,    -1,   149,   331,    -1,   149,   227,   331,    -1,
    959      109,   333,   110,    -1,   332,   349,    -1,   109,   333,   110,
    960      349,    -1,   109,   334,   110,   350,    -1,   109,   334,   110,
    961       -1,   332,   109,   134,   264,   135,   110,    -1,   109,   333,
    962      110,   109,   134,   264,   135,   110,    -1,   109,   335,   110,
    963       -1,   319,   312,    -1,   337,    -1,   338,   312,    -1,   339,
    964      312,    -1,   149,   336,    -1,   149,   227,   336,    -1,   109,
    965      337,   110,    -1,   319,   355,    -1,   109,   337,   110,   349,
    966       -1,   109,   338,   110,   350,    -1,   109,   338,   110,    -1,
    967      319,   109,   134,   264,   135,   110,    -1,   109,   337,   110,
    968      109,   134,   264,   135,   110,    -1,   109,   339,   110,    -1,
    969      341,   312,    -1,   342,    -1,   343,   312,    -1,   344,   312,
    970       -1,    74,    -1,    75,    -1,   149,   340,    -1,   149,   227,
    971      340,    -1,   109,   342,   110,    -1,   341,   355,    -1,   109,
    972      342,   110,   355,    -1,   341,   109,   134,   264,   135,   110,
    973       -1,   109,   342,   110,   109,   134,   264,   135,   110,    -1,
    974      346,    -1,   347,   312,    -1,   348,   312,    -1,   149,    -1,
    975      149,   227,    -1,   149,   345,    -1,   149,   227,   345,    -1,
    976      109,   346,   110,    -1,   349,    -1,   109,   346,   110,   349,
    977       -1,   109,   347,   110,   350,    -1,   109,   347,   110,    -1,
    978      109,   134,   264,   135,   110,    -1,   109,   346,   110,   109,
    979      134,   264,   135,   110,    -1,   109,   348,   110,    -1,   111,
    980      112,    -1,   111,   112,   350,    -1,   350,    -1,   111,   134,
    981      164,   135,   112,    -1,   111,   134,   118,   135,   112,    -1,
    982      350,   111,   134,   164,   135,   112,    -1,   350,   111,   134,
    983      118,   135,   112,    -1,   352,    -1,   353,   312,    -1,   354,
    984      312,    -1,   149,    -1,   149,   227,    -1,   149,   351,    -1,
    985      149,   227,   351,    -1,   109,   352,   110,    -1,   355,    -1,
    986      109,   352,   110,   355,    -1,   109,   353,   110,   350,    -1,
    987      109,   353,   110,    -1,   109,   134,   264,   135,   110,    -1,
    988      109,   352,   110,   109,   134,   264,   135,   110,    -1,   109,
    989      354,   110,    -1,   356,    -1,   356,   350,    -1,   350,    -1,
    990      111,   112,    -1,   111,   134,   227,   118,   135,   112,    -1,
    991      111,   134,   227,   135,   112,    -1,   111,   134,   227,   164,
    992      135,   112,    -1,   111,   134,     7,   226,   164,   135,   112,
    993       -1,   111,   134,   227,     7,   164,   135,   112,    -1,   358,
    994       -1,   359,   312,    -1,   360,   312,    -1,   149,    -1,   149,
    995      227,    -1,   149,   357,    -1,   149,   227,   357,    -1,   109,
    996      358,   110,    -1,   349,    -1,   109,   358,   110,   349,    -1,
    997      109,   359,   110,   350,    -1,   109,   359,   110,    -1,   109,
    998      358,   110,   109,   134,   264,   135,   110,    -1,   109,   360,
    999      110,    -1,   362,    -1,   370,    -1,   227,   370,    -1,   363,
    1000       -1,   364,    -1,   149,   225,    -1,   227,   149,   225,    -1,
    1001      149,   371,    -1,   227,   149,   371,    -1,   149,   361,    -1,
    1002      227,   149,   361,    -1,   111,   112,   225,    -1,   365,   225,
    1003       -1,   111,   112,   350,   225,    -1,   365,   350,   225,    -1,
    1004      350,   225,    -1,   111,   112,   363,    -1,   365,   363,    -1,
    1005      111,   112,   350,   363,    -1,   365,   350,   363,    -1,   350,
    1006      363,    -1,   111,   134,   227,   118,   135,   112,    -1,   111,
    1007      134,   227,   164,   135,   112,    -1,   111,   134,   231,   164,
    1008      135,   112,    -1,   111,   134,   231,   227,   164,   135,   112,
    1009       -1,   370,    -1,   227,   370,    -1,   367,    -1,   368,    -1,
    1010      369,    -1,   149,   225,    -1,   227,   149,   225,    -1,   149,
    1011      371,    -1,   227,   149,   371,    -1,   149,   366,    -1,   227,
    1012      149,   366,    -1,   111,   112,   225,    -1,   111,   112,   350,
    1013      225,    -1,   350,   225,    -1,   111,   112,   368,    -1,   111,
    1014      112,   350,   368,    -1,   350,   368,    -1,   111,   134,   263,
    1015      135,   112,    -1,   111,   112,   109,   260,   110,    -1,   370,
    1016      109,   134,   260,   135,   110,    -1,   218,   109,   134,   260,
    1017      135,   110,    -1,    -1,   116,    -1,    -1,   131,   164,    -1
     755     164,    -1,   147,    -1,   146,   116,   147,    -1,   139,    -1,
     756     139,   113,   147,    -1,   139,   113,   111,   134,   146,   135,
     757     112,    -1,   139,    85,   147,    -1,   139,    85,   111,   134,
     758     146,   135,   112,    -1,   143,    -1,   136,    -1,   141,    -1,
     759      40,   151,    -1,   149,   151,    -1,   150,   151,    -1,    86,
     760     148,    -1,    87,   148,    -1,    37,   148,    -1,    37,   109,
     761     275,   110,    -1,    66,   148,    -1,    66,   109,   275,   110,
     762      -1,    38,   109,   275,   116,   139,   110,    -1,    76,    -1,
     763      76,   109,   145,   110,    -1,    76,   109,   276,   110,    -1,
     764     117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
     765     122,    -1,   148,    -1,   109,   275,   110,   151,    -1,   109,
     766     275,   110,   167,    -1,   151,    -1,   152,   117,   151,    -1,
     767     152,   123,   151,    -1,   152,   124,   151,    -1,   152,    -1,
     768     153,   119,   152,    -1,   153,   120,   152,    -1,   153,    -1,
     769     154,    88,   153,    -1,   154,    89,   153,    -1,   154,    -1,
     770     155,   125,   154,    -1,   155,   126,   154,    -1,   155,    90,
     771     154,    -1,   155,    91,   154,    -1,   155,    -1,   156,    92,
     772     155,    -1,   156,    93,   155,    -1,   156,    -1,   157,   118,
     773     156,    -1,   157,    -1,   158,   127,   157,    -1,   158,    -1,
     774     159,   128,   158,    -1,   159,    -1,   160,    94,   159,    -1,
     775     160,    -1,   161,    95,   160,    -1,   161,    -1,   161,   129,
     776     169,   130,   162,    -1,   161,   129,   130,   162,    -1,   161,
     777     129,   169,   130,   167,    -1,   162,    -1,   162,    -1,   148,
     778     166,   164,    -1,   167,   373,    -1,    -1,   164,    -1,   131,
     779      -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,   101,
     780      -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
     781      -1,   111,   112,    -1,   111,   134,   164,   135,   112,    -1,
     782     111,   134,   116,   168,   135,   112,    -1,   111,   134,   164,
     783     116,   168,   135,   112,    -1,   165,    -1,   168,   116,   165,
     784      -1,   164,    -1,   169,   116,   164,    -1,    -1,   169,    -1,
     785     172,    -1,   173,    -1,   177,    -1,   178,    -1,   190,    -1,
     786     192,    -1,   193,    -1,   198,    -1,   127,   143,   114,   144,
     787     115,   132,    -1,    72,   130,   312,   171,    -1,   114,   115,
     788      -1,   114,   134,   134,   209,   174,   135,   115,    -1,   175,
     789      -1,   174,   134,   175,    -1,   212,    -1,    40,   212,    -1,
     790     308,    -1,   171,   135,    -1,   171,    -1,   176,   171,    -1,
     791     170,   132,    -1,    41,   109,   169,   110,   171,    -1,    41,
     792     109,   169,   110,   171,    42,   171,    -1,    43,   109,   169,
     793     110,   183,    -1,    43,   109,   169,   110,   114,   134,   205,
     794     184,   115,    -1,    53,   109,   169,   110,   183,    -1,    53,
     795     109,   169,   110,   114,   134,   205,   186,   115,    -1,   163,
     796      -1,   163,    96,   163,    -1,   310,    -1,   179,    -1,   180,
     797     116,   179,    -1,    44,   180,   130,    -1,    45,   130,    -1,
     798     181,    -1,   182,   181,    -1,   182,   171,    -1,    -1,   185,
     799      -1,   182,   176,    -1,   185,   182,   176,    -1,    -1,   187,
     800      -1,   182,   189,    -1,   182,   176,   188,    -1,   187,   182,
     801     189,    -1,   187,   182,   176,   188,    -1,    -1,   189,    -1,
     802      56,    -1,    56,   132,    -1,    47,   109,   169,   110,   171,
     803      -1,    46,   171,    47,   109,   169,   110,   132,    -1,    48,
     804     109,   134,   191,   110,   171,    -1,   170,   135,   132,   170,
     805     132,   170,    -1,   212,   170,   132,   170,    -1,    51,    72,
     806     132,    -1,    51,   117,   169,   132,    -1,    50,   132,    -1,
     807      50,    72,   132,    -1,    49,   132,    -1,    49,    72,   132,
     808      -1,    52,   170,   132,    -1,    61,   165,   132,    -1,    62,
     809     165,   132,    -1,    62,   165,    63,   164,   132,    -1,    57,
     810     173,   194,    -1,    57,   173,   196,    -1,    57,   173,   194,
     811     196,    -1,   195,    -1,    58,   109,    96,   110,   173,    -1,
     812     195,    58,   109,    96,   110,   173,    -1,    59,   109,    96,
     813     110,   173,    -1,   195,    59,   109,    96,   110,   173,    -1,
     814      58,   109,   134,   134,   197,   135,   110,   173,   135,    -1,
     815     195,    58,   109,   134,   134,   197,   135,   110,   173,   135,
     816      -1,    59,   109,   134,   134,   197,   135,   110,   173,   135,
     817      -1,   195,    59,   109,   134,   134,   197,   135,   110,   173,
     818     135,    -1,    60,   173,    -1,   225,    -1,   225,   309,    -1,
     819     225,   357,    -1,   366,   139,    -1,   366,    -1,    64,   199,
     820     109,   141,   110,   132,    -1,    64,   199,   109,   141,   130,
     821     200,   110,   132,    -1,    64,   199,   109,   141,   130,   200,
     822     130,   200,   110,   132,    -1,    64,   199,   109,   141,   130,
     823     200,   130,   200,   130,   203,   110,   132,    -1,    64,   199,
     824      51,   109,   141,   130,   130,   200,   130,   203,   130,   204,
     825     110,   132,    -1,    -1,    11,    -1,    -1,   201,    -1,   202,
     826      -1,   201,   116,   202,    -1,   141,   109,   163,   110,    -1,
     827     111,   163,   112,   141,   109,   163,   110,    -1,    -1,   141,
     828      -1,   203,   116,   141,    -1,   139,    -1,   204,   116,   139,
     829      -1,   135,    -1,   206,    -1,   212,    -1,   206,   134,   212,
     830      -1,   135,    -1,   208,    -1,   222,    -1,   208,   134,   222,
     831      -1,    -1,   210,    -1,    29,   211,   132,    -1,   210,    29,
     832     211,   132,    -1,   274,    -1,   211,   116,   274,    -1,   213,
     833      -1,   222,    -1,   214,   135,   132,    -1,   219,   135,   132,
     834      -1,   216,   135,   132,    -1,   293,   135,   132,    -1,   296,
     835     135,   132,    -1,   215,   277,    -1,   231,   215,   277,    -1,
     836     214,   135,   116,   134,   272,   277,    -1,   367,   272,   311,
     837      -1,   370,   272,   311,    -1,   227,   370,   272,   311,    -1,
     838     217,    -1,   227,   217,    -1,   231,   217,    -1,   231,   227,
     839     217,    -1,   216,   135,   116,   134,   272,    -1,   111,   112,
     840     272,   109,   134,   260,   135,   110,    -1,   370,   272,   109,
     841     134,   260,   135,   110,    -1,   218,   272,   109,   134,   260,
     842     135,   110,    -1,   111,   134,   262,   135,   112,    -1,   111,
     843     134,   262,   135,   116,   134,   263,   135,   112,    -1,     3,
     844     215,    -1,     3,   217,    -1,   219,   135,   116,   134,   139,
     845      -1,     3,   225,   309,    -1,   220,   135,   116,   134,   309,
     846      -1,   227,     3,   225,   309,    -1,   225,     3,   309,    -1,
     847     225,     3,   227,   309,    -1,     3,   139,   131,   164,    -1,
     848     221,   135,   116,   134,   139,   131,   164,    -1,   223,   135,
     849     132,    -1,   220,   135,   132,    -1,   221,   135,   132,    -1,
     850     240,   135,   132,    -1,   224,   309,   311,   277,    -1,   223,
     851     116,   312,   309,   311,   277,    -1,   236,    -1,   240,    -1,
     852     242,    -1,   283,    -1,   237,    -1,   241,    -1,   243,    -1,
     853     284,    -1,    -1,   227,    -1,   228,    -1,   227,   228,    -1,
     854     229,    -1,   314,    -1,    10,    -1,    12,    -1,    11,    -1,
     855      14,    -1,    67,    -1,    -1,    13,   109,   230,   286,   110,
     856      -1,   232,    -1,   227,   232,    -1,   231,   227,   232,    -1,
     857     233,    -1,   232,   233,    -1,   234,    -1,     5,    -1,     7,
     858      -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
     859      -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
     860      -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
     861      -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   237,
     862      -1,   231,   237,    -1,   236,   233,    -1,   236,   233,   227,
     863      -1,   236,   233,   237,    -1,   238,    -1,   226,   239,   226,
     864      -1,   235,    -1,   227,   235,    -1,   238,   228,    -1,   238,
     865     235,    -1,    28,   109,   276,   110,    -1,    28,   109,   169,
     866     110,    -1,    78,   109,   276,   110,    -1,    78,   109,   169,
     867     110,    -1,   241,    -1,   231,   241,    -1,   240,   233,    -1,
     868     240,   233,   227,    -1,   244,    -1,   227,   244,    -1,   241,
     869     228,    -1,   243,    -1,   231,   243,    -1,   242,   233,    -1,
     870     242,   233,   227,    -1,    74,    -1,   227,    74,    -1,   243,
     871     228,    -1,   245,    -1,   256,    -1,   247,   114,   248,   115,
     872      -1,   247,   274,    -1,    -1,   247,   274,   246,   114,   248,
     873     115,    -1,   247,   109,   292,   110,   114,   248,   115,    -1,
     874     247,   285,    -1,    31,   312,    -1,    32,   312,    -1,    -1,
     875     248,   249,    -1,   250,   132,    -1,    40,   250,   132,    -1,
     876     251,   132,    -1,    40,   251,   132,    -1,   366,    -1,   366,
     877     274,    -1,   250,   116,   274,    -1,   250,   116,    -1,   225,
     878     252,    -1,   251,   116,   312,   252,    -1,    -1,   254,    -1,
     879     318,   253,    -1,   331,   253,    -1,   357,    -1,    -1,   254,
     880      -1,   130,   163,    -1,    30,   312,    -1,   255,   114,   258,
     881     372,   115,    -1,   255,   274,    -1,    -1,   255,   274,   257,
     882     114,   258,   372,   115,    -1,   274,   259,    -1,   258,   116,
     883     274,   259,    -1,    -1,   131,   163,    -1,    -1,   261,    -1,
     884     263,    -1,   262,    -1,   262,   135,   116,   134,   263,    -1,
     885     263,   135,   116,   134,    96,    -1,   262,   135,   116,   134,
     886      96,    -1,   267,    -1,   263,   135,   116,   134,   267,    -1,
     887     262,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
     888     263,   135,   116,   134,   267,    -1,   268,    -1,   263,   135,
     889     116,   134,   268,    -1,    -1,   265,    -1,   266,    -1,   266,
     890     135,   116,   134,    96,    -1,   270,    -1,   269,    -1,   266,
     891     135,   116,   134,   270,    -1,   266,   135,   116,   134,   269,
     892      -1,   269,    -1,   362,   272,   373,    -1,   370,   272,   373,
     893      -1,   227,   370,   272,   373,    -1,   217,    -1,   270,    -1,
     894     362,    -1,   370,    -1,   227,   370,    -1,   371,    -1,   224,
     895     336,   373,    -1,   224,   340,   373,    -1,   224,    -1,   224,
     896     351,    -1,   139,    -1,   271,   116,   139,    -1,   137,    -1,
     897      74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
     898     139,    -1,    74,    -1,    75,    -1,   366,    -1,   225,    -1,
     899     225,   357,    -1,   366,    -1,   371,    -1,   225,    -1,   225,
     900     345,    -1,    -1,   131,   278,    -1,   107,   278,    -1,   164,
     901      -1,   114,   279,   372,   115,    -1,    -1,   278,    -1,   280,
     902     278,    -1,   279,   116,   278,    -1,   279,   116,   280,   278,
     903      -1,   281,   130,    -1,   274,   130,    -1,   282,    -1,   281,
     904     282,    -1,   113,   274,    -1,   111,   134,   164,   135,   112,
     905      -1,   111,   134,   310,   135,   112,    -1,   111,   134,   163,
     906      96,   163,   135,   112,    -1,   113,   111,   134,   146,   135,
     907     112,    -1,   284,    -1,   231,   284,    -1,   283,   233,    -1,
     908     283,   233,   227,    -1,   285,    -1,   227,   285,    -1,   284,
     909     228,    -1,    75,   109,   292,   110,    -1,   287,   373,    -1,
     910     286,   116,   287,   373,    -1,    -1,   289,   274,   288,   290,
     911      -1,   225,   336,    -1,    33,    -1,    35,    -1,    34,    -1,
     912      -1,   290,   291,    -1,   128,   274,   109,   292,   110,    -1,
     913     128,   114,   134,   298,   115,    -1,   128,   109,   134,   286,
     914     135,   110,   114,   134,   298,   115,   109,   292,   110,    -1,
     915     276,    -1,   164,    -1,   292,   116,   276,    -1,   292,   116,
     916     164,    -1,    33,   294,    -1,   232,    33,   294,    -1,   293,
     917     116,   294,    -1,   295,   290,    -1,   295,   290,   131,   276,
     918      -1,   274,    -1,   273,   109,   134,   286,   135,   110,    -1,
     919      36,   274,   109,   134,   286,   135,   110,   114,   115,    -1,
     920      -1,    36,   274,   109,   134,   286,   135,   110,   114,   297,
     921     298,   115,    -1,   299,    -1,   298,   134,   299,    -1,   300,
     922     135,   132,    -1,   301,   135,   132,    -1,   215,    -1,   217,
     923      -1,   300,   135,   116,   134,   272,    -1,   225,   309,    -1,
     924     301,   135,   116,   134,   309,    -1,    -1,   303,    -1,   305,
     925      -1,   303,   134,   305,    -1,    -1,   303,    -1,   212,    -1,
     926     307,    -1,   198,    -1,    -1,     5,    82,   306,   114,   304,
     927     115,    -1,    40,   305,    -1,   308,    -1,   323,   173,    -1,
     928     327,   134,   207,   173,    -1,   216,   173,    -1,   224,   323,
     929     173,    -1,   227,   323,   173,    -1,   231,   323,   173,    -1,
     930     231,   227,   323,   173,    -1,   224,   327,   134,   207,   173,
     931      -1,   227,   327,   134,   207,   173,    -1,   231,   327,   134,
     932     207,   173,    -1,   231,   227,   327,   134,   207,   173,    -1,
     933     318,    -1,   331,    -1,   323,    -1,   163,   122,   163,    -1,
     934      -1,    64,   109,   141,   110,   312,    -1,    -1,   313,    -1,
     935     314,    -1,   313,   314,    -1,    39,   109,   109,   315,   110,
     936     110,    -1,   316,    -1,   315,   116,   316,    -1,    -1,   317,
     937      -1,   317,   109,   170,   110,    -1,   272,    -1,   234,    -1,
     938     235,    -1,   228,    -1,   319,   312,    -1,   320,    -1,   321,
     939     312,    -1,   322,   312,    -1,   137,    -1,   109,   319,   110,
     940      -1,   149,   318,    -1,   149,   227,   318,    -1,   109,   320,
     941     110,    -1,   319,   349,    -1,   109,   320,   110,   349,    -1,
     942     109,   321,   110,   350,    -1,   109,   321,   110,    -1,   109,
     943     320,   110,   109,   134,   264,   135,   110,    -1,   109,   322,
     944     110,    -1,   324,   312,    -1,   325,    -1,   326,   312,    -1,
     945     319,   109,   134,   264,   135,   110,    -1,   109,   325,   110,
     946     109,   134,   264,   135,   110,    -1,   109,   324,   110,    -1,
     947     149,   323,    -1,   149,   227,   323,    -1,   109,   325,   110,
     948      -1,   109,   325,   110,   349,    -1,   109,   326,   110,   350,
     949      -1,   109,   326,   110,    -1,   328,    -1,   329,    -1,   330,
     950      -1,   319,   109,   271,   110,    -1,   109,   329,   110,   109,
     951     271,   110,    -1,   109,   328,   110,    -1,   149,   327,    -1,
     952     149,   227,   327,    -1,   109,   329,   110,    -1,   109,   329,
     953     110,   349,    -1,   109,   330,   110,   350,    -1,   109,   330,
     954     110,    -1,   332,   312,    -1,   333,    -1,   334,   312,    -1,
     955     335,   312,    -1,   341,    -1,   109,   332,   110,    -1,   149,
     956     331,    -1,   149,   227,   331,    -1,   109,   333,   110,    -1,
     957     332,   349,    -1,   109,   333,   110,   349,    -1,   109,   334,
     958     110,   350,    -1,   109,   334,   110,    -1,   332,   109,   134,
     959     264,   135,   110,    -1,   109,   333,   110,   109,   134,   264,
     960     135,   110,    -1,   109,   335,   110,    -1,   319,   312,    -1,
     961     337,    -1,   338,   312,    -1,   339,   312,    -1,   149,   336,
     962      -1,   149,   227,   336,    -1,   109,   337,   110,    -1,   319,
     963     355,    -1,   109,   337,   110,   349,    -1,   109,   338,   110,
     964     350,    -1,   109,   338,   110,    -1,   319,   109,   134,   264,
     965     135,   110,    -1,   109,   337,   110,   109,   134,   264,   135,
     966     110,    -1,   109,   339,   110,    -1,   341,   312,    -1,   342,
     967      -1,   343,   312,    -1,   344,   312,    -1,    74,    -1,    75,
     968      -1,   149,   340,    -1,   149,   227,   340,    -1,   109,   342,
     969     110,    -1,   341,   355,    -1,   109,   342,   110,   355,    -1,
     970     341,   109,   134,   264,   135,   110,    -1,   109,   342,   110,
     971     109,   134,   264,   135,   110,    -1,   346,    -1,   347,   312,
     972      -1,   348,   312,    -1,   149,    -1,   149,   227,    -1,   149,
     973     345,    -1,   149,   227,   345,    -1,   109,   346,   110,    -1,
     974     349,    -1,   109,   346,   110,   349,    -1,   109,   347,   110,
     975     350,    -1,   109,   347,   110,    -1,   109,   134,   264,   135,
     976     110,    -1,   109,   346,   110,   109,   134,   264,   135,   110,
     977      -1,   109,   348,   110,    -1,   111,   112,    -1,   111,   112,
     978     350,    -1,   350,    -1,   111,   134,   164,   135,   112,    -1,
     979     111,   134,   117,   135,   112,    -1,   350,   111,   134,   164,
     980     135,   112,    -1,   350,   111,   134,   117,   135,   112,    -1,
     981     352,    -1,   353,   312,    -1,   354,   312,    -1,   149,    -1,
     982     149,   227,    -1,   149,   351,    -1,   149,   227,   351,    -1,
     983     109,   352,   110,    -1,   355,    -1,   109,   352,   110,   355,
     984      -1,   109,   353,   110,   350,    -1,   109,   353,   110,    -1,
     985     109,   134,   264,   135,   110,    -1,   109,   352,   110,   109,
     986     134,   264,   135,   110,    -1,   109,   354,   110,    -1,   356,
     987      -1,   356,   350,    -1,   350,    -1,   111,   112,    -1,   111,
     988     134,   227,   117,   135,   112,    -1,   111,   134,   227,   135,
     989     112,    -1,   111,   134,   227,   164,   135,   112,    -1,   111,
     990     134,     7,   226,   164,   135,   112,    -1,   111,   134,   227,
     991       7,   164,   135,   112,    -1,   358,    -1,   359,   312,    -1,
     992     360,   312,    -1,   149,    -1,   149,   227,    -1,   149,   357,
     993      -1,   149,   227,   357,    -1,   109,   358,   110,    -1,   349,
     994      -1,   109,   358,   110,   349,    -1,   109,   359,   110,   350,
     995      -1,   109,   359,   110,    -1,   109,   358,   110,   109,   134,
     996     264,   135,   110,    -1,   109,   360,   110,    -1,   362,    -1,
     997     370,    -1,   227,   370,    -1,   363,    -1,   364,    -1,   149,
     998     225,    -1,   227,   149,   225,    -1,   149,   371,    -1,   227,
     999     149,   371,    -1,   149,   361,    -1,   227,   149,   361,    -1,
     1000     111,   112,   225,    -1,   365,   225,    -1,   111,   112,   350,
     1001     225,    -1,   365,   350,   225,    -1,   350,   225,    -1,   111,
     1002     112,   363,    -1,   365,   363,    -1,   111,   112,   350,   363,
     1003      -1,   365,   350,   363,    -1,   350,   363,    -1,   111,   134,
     1004     227,   117,   135,   112,    -1,   111,   134,   227,   164,   135,
     1005     112,    -1,   111,   134,   231,   164,   135,   112,    -1,   111,
     1006     134,   231,   227,   164,   135,   112,    -1,   370,    -1,   227,
     1007     370,    -1,   367,    -1,   368,    -1,   369,    -1,   149,   225,
     1008      -1,   227,   149,   225,    -1,   149,   371,    -1,   227,   149,
     1009     371,    -1,   149,   366,    -1,   227,   149,   366,    -1,   111,
     1010     112,   225,    -1,   111,   112,   350,   225,    -1,   350,   225,
     1011      -1,   111,   112,   368,    -1,   111,   112,   350,   368,    -1,
     1012     350,   368,    -1,   111,   134,   263,   135,   112,    -1,   111,
     1013     112,   109,   260,   110,    -1,   370,   109,   134,   260,   135,
     1014     110,    -1,   218,   109,   134,   260,   135,   110,    -1,    -1,
     1015     116,    -1,    -1,   131,   164,    -1
    10181016};
    10191017
     
    10241022     323,   324,   328,   329,   333,   334,   338,   339,   350,   352,
    10251023     354,   356,   361,   362,   368,   372,   374,   375,   377,   378,
    1026      380,   382,   384,   393,   394,   400,   401,   402,   407,   409,
    1027      414,   415,   419,   423,   425,   427,   429,   434,   437,   439,
    1028      441,   446,   459,   461,   463,   465,   467,   469,   471,   473,
    1029      475,   477,   479,   486,   487,   493,   494,   495,   496,   500,
    1030      501,   503,   508,   509,   511,   513,   518,   519,   521,   526,
    1031      527,   529,   534,   535,   537,   539,   541,   546,   547,   549,
    1032      554,   555,   560,   561,   566,   567,   572,   573,   578,   579,
    1033      584,   585,   588,   590,   595,   600,   601,   603,   609,   610,
    1034      614,   615,   616,   617,   618,   619,   620,   621,   622,   623,
    1035      624,   630,   632,   634,   636,   641,   642,   647,   648,   654,
    1036      655,   661,   662,   663,   664,   665,   666,   667,   668,   669,
    1037      679,   686,   688,   698,   699,   704,   706,   712,   714,   718,
    1038      719,   724,   729,   732,   734,   736,   746,   748,   759,   760,
    1039      762,   766,   768,   772,   773,   778,   779,   783,   788,   789,
    1040      793,   795,   801,   802,   806,   808,   810,   812,   818,   819,
    1041      823,   825,   830,   832,   834,   839,   841,   846,   848,   852,
    1042      855,   859,   862,   866,   868,   872,   874,   881,   883,   885,
    1043      894,   896,   898,   900,   902,   907,   909,   911,   913,   918,
    1044      931,   932,   937,   939,   944,   948,   950,   952,   954,   956,
    1045      962,   963,   969,   970,   974,   975,   980,   982,   988,   989,
    1046      991,   996,   998,  1005,  1007,  1011,  1012,  1017,  1019,  1023,
    1047     1024,  1028,  1030,  1034,  1035,  1039,  1040,  1044,  1045,  1060,
    1048     1061,  1062,  1063,  1064,  1068,  1073,  1080,  1090,  1095,  1100,
    1049     1108,  1113,  1118,  1123,  1128,  1136,  1158,  1163,  1170,  1172,
    1050     1179,  1184,  1189,  1200,  1205,  1210,  1215,  1220,  1229,  1234,
    1051     1242,  1243,  1244,  1245,  1251,  1256,  1264,  1265,  1266,  1267,
    1052     1271,  1272,  1273,  1274,  1279,  1280,  1289,  1290,  1295,  1296,
    1053     1301,  1303,  1305,  1307,  1309,  1312,  1311,  1323,  1324,  1326,
    1054     1336,  1337,  1342,  1346,  1348,  1350,  1352,  1354,  1356,  1358,
    1055     1360,  1365,  1367,  1369,  1371,  1373,  1375,  1377,  1379,  1381,
    1056     1383,  1385,  1387,  1389,  1395,  1396,  1398,  1400,  1402,  1407,
    1057     1408,  1414,  1415,  1417,  1419,  1424,  1426,  1428,  1430,  1435,
    1058     1436,  1438,  1440,  1445,  1446,  1448,  1453,  1454,  1456,  1458,
    1059     1463,  1465,  1467,  1472,  1473,  1477,  1479,  1485,  1484,  1488,
    1060     1490,  1495,  1497,  1503,  1504,  1509,  1510,  1512,  1513,  1522,
    1061     1523,  1525,  1527,  1532,  1534,  1540,  1541,  1543,  1546,  1549,
    1062     1554,  1555,  1560,  1565,  1569,  1571,  1577,  1576,  1583,  1585,
    1063     1591,  1592,  1600,  1601,  1605,  1606,  1607,  1609,  1611,  1618,
    1064     1619,  1621,  1623,  1628,  1629,  1635,  1636,  1640,  1641,  1646,
    1065     1647,  1648,  1650,  1658,  1659,  1661,  1664,  1666,  1670,  1671,
    1066     1672,  1674,  1676,  1680,  1685,  1693,  1694,  1703,  1705,  1710,
    1067     1711,  1712,  1716,  1717,  1718,  1722,  1723,  1724,  1728,  1729,
    1068     1730,  1735,  1736,  1737,  1738,  1744,  1745,  1747,  1752,  1753,
    1069     1758,  1759,  1760,  1761,  1762,  1777,  1778,  1783,  1784,  1792,
    1070     1794,  1796,  1799,  1801,  1803,  1826,  1827,  1829,  1831,  1836,
    1071     1837,  1839,  1844,  1849,  1850,  1856,  1855,  1859,  1863,  1865,
    1072     1867,  1873,  1874,  1879,  1884,  1886,  1891,  1893,  1894,  1896,
    1073     1901,  1903,  1905,  1910,  1912,  1917,  1922,  1930,  1936,  1935,
    1074     1949,  1950,  1955,  1956,  1960,  1965,  1970,  1978,  1983,  1994,
    1075     1995,  2006,  2007,  2013,  2014,  2018,  2019,  2020,  2023,  2022,
    1076     2033,  2042,  2048,  2054,  2063,  2069,  2075,  2081,  2087,  2095,
    1077     2101,  2109,  2115,  2124,  2125,  2126,  2130,  2134,  2136,  2141,
    1078     2142,  2146,  2147,  2152,  2158,  2159,  2162,  2164,  2165,  2169,
    1079     2170,  2171,  2172,  2206,  2208,  2209,  2211,  2216,  2221,  2226,
    1080     2228,  2230,  2235,  2237,  2239,  2241,  2246,  2248,  2257,  2259,
    1081     2260,  2265,  2267,  2269,  2274,  2276,  2278,  2283,  2285,  2287,
    1082     2296,  2297,  2298,  2302,  2304,  2306,  2311,  2313,  2315,  2320,
    1083     2322,  2324,  2339,  2341,  2342,  2344,  2349,  2350,  2355,  2357,
    1084     2359,  2364,  2366,  2368,  2370,  2375,  2377,  2379,  2389,  2391,
    1085     2392,  2394,  2399,  2401,  2403,  2408,  2410,  2412,  2414,  2419,
    1086     2421,  2423,  2454,  2456,  2457,  2459,  2464,  2469,  2477,  2479,
    1087     2481,  2486,  2488,  2493,  2495,  2509,  2510,  2512,  2517,  2519,
    1088     2521,  2523,  2525,  2530,  2531,  2533,  2535,  2540,  2542,  2544,
    1089     2550,  2552,  2554,  2558,  2560,  2562,  2564,  2578,  2579,  2581,
    1090     2586,  2588,  2590,  2592,  2594,  2599,  2600,  2602,  2604,  2609,
    1091     2611,  2613,  2619,  2620,  2622,  2631,  2634,  2636,  2639,  2641,
    1092     2643,  2656,  2657,  2659,  2664,  2666,  2668,  2670,  2672,  2677,
    1093     2678,  2680,  2682,  2687,  2689,  2697,  2698,  2699,  2704,  2705,
    1094     2709,  2711,  2713,  2715,  2717,  2719,  2726,  2728,  2730,  2732,
    1095     2734,  2736,  2738,  2740,  2742,  2744,  2749,  2751,  2753,  2758,
    1096     2784,  2785,  2787,  2791,  2792,  2796,  2798,  2800,  2802,  2804,
    1097     2806,  2813,  2815,  2817,  2819,  2821,  2823,  2828,  2833,  2835,
    1098     2837,  2855,  2857,  2862,  2863
     1024     380,   382,   384,   393,   394,   400,   401,   405,   406,   410,
     1025     414,   416,   418,   420,   425,   428,   430,   432,   437,   450,
     1026     452,   454,   456,   458,   460,   462,   464,   466,   468,   470,
     1027     477,   478,   484,   485,   486,   487,   491,   492,   494,   499,
     1028     500,   502,   504,   509,   510,   512,   517,   518,   520,   525,
     1029     526,   528,   530,   532,   537,   538,   540,   545,   546,   551,
     1030     552,   557,   558,   563,   564,   569,   570,   575,   576,   579,
     1031     581,   586,   591,   592,   594,   600,   601,   605,   606,   607,
     1032     608,   609,   610,   611,   612,   613,   614,   615,   621,   623,
     1033     625,   627,   632,   633,   638,   639,   645,   646,   652,   653,
     1034     654,   655,   656,   657,   658,   659,   660,   670,   677,   679,
     1035     689,   690,   695,   697,   703,   705,   709,   710,   715,   720,
     1036     723,   725,   727,   737,   739,   750,   751,   753,   757,   759,
     1037     763,   764,   769,   770,   774,   779,   780,   784,   786,   792,
     1038     793,   797,   799,   801,   803,   809,   810,   814,   816,   821,
     1039     823,   825,   830,   832,   837,   839,   843,   846,   850,   853,
     1040     857,   859,   863,   865,   872,   874,   876,   885,   887,   889,
     1041     891,   893,   898,   900,   902,   904,   909,   922,   923,   928,
     1042     930,   935,   939,   941,   943,   945,   947,   953,   954,   960,
     1043     961,   965,   966,   971,   973,   979,   980,   982,   987,   989,
     1044     996,   998,  1002,  1003,  1008,  1010,  1014,  1015,  1019,  1021,
     1045    1025,  1026,  1030,  1031,  1035,  1036,  1051,  1052,  1053,  1054,
     1046    1055,  1059,  1064,  1071,  1081,  1086,  1091,  1099,  1104,  1109,
     1047    1114,  1119,  1127,  1149,  1154,  1161,  1163,  1170,  1175,  1180,
     1048    1191,  1196,  1201,  1206,  1211,  1220,  1225,  1233,  1234,  1235,
     1049    1236,  1242,  1247,  1255,  1256,  1257,  1258,  1262,  1263,  1264,
     1050    1265,  1270,  1271,  1280,  1281,  1286,  1287,  1292,  1294,  1296,
     1051    1298,  1300,  1303,  1302,  1314,  1315,  1317,  1327,  1328,  1333,
     1052    1337,  1339,  1341,  1343,  1345,  1347,  1349,  1351,  1356,  1358,
     1053    1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
     1054    1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,  1406,
     1055    1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,  1431,
     1056    1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,  1458,
     1057    1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,  1488,
     1058    1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,  1518,
     1059    1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,  1551,
     1060    1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,  1591,
     1061    1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,  1614,
     1062    1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,  1641,
     1063    1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,  1667,
     1064    1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,  1707,
     1065    1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,  1727,
     1066    1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,  1751,
     1067    1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,  1788,
     1068    1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,  1836,
     1069    1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,  1866,
     1070    1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,  1897,
     1071    1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,  1943,
     1072    1947,  1952,  1957,  1965,  1970,  1981,  1982,  1993,  1994,  2000,
     1073    2001,  2005,  2006,  2007,  2010,  2009,  2020,  2029,  2035,  2041,
     1074    2050,  2056,  2062,  2068,  2074,  2082,  2088,  2096,  2102,  2111,
     1075    2112,  2113,  2117,  2121,  2123,  2128,  2129,  2133,  2134,  2139,
     1076    2145,  2146,  2149,  2151,  2152,  2156,  2157,  2158,  2159,  2193,
     1077    2195,  2196,  2198,  2203,  2208,  2213,  2215,  2217,  2222,  2224,
     1078    2226,  2228,  2233,  2235,  2244,  2246,  2247,  2252,  2254,  2256,
     1079    2261,  2263,  2265,  2270,  2272,  2274,  2283,  2284,  2285,  2289,
     1080    2291,  2293,  2298,  2300,  2302,  2307,  2309,  2311,  2326,  2328,
     1081    2329,  2331,  2336,  2337,  2342,  2344,  2346,  2351,  2353,  2355,
     1082    2357,  2362,  2364,  2366,  2376,  2378,  2379,  2381,  2386,  2388,
     1083    2390,  2395,  2397,  2399,  2401,  2406,  2408,  2410,  2441,  2443,
     1084    2444,  2446,  2451,  2456,  2464,  2466,  2468,  2473,  2475,  2480,
     1085    2482,  2496,  2497,  2499,  2504,  2506,  2508,  2510,  2512,  2517,
     1086    2518,  2520,  2522,  2527,  2529,  2531,  2537,  2539,  2541,  2545,
     1087    2547,  2549,  2551,  2565,  2566,  2568,  2573,  2575,  2577,  2579,
     1088    2581,  2586,  2587,  2589,  2591,  2596,  2598,  2600,  2606,  2607,
     1089    2609,  2618,  2621,  2623,  2626,  2628,  2630,  2643,  2644,  2646,
     1090    2651,  2653,  2655,  2657,  2659,  2664,  2665,  2667,  2669,  2674,
     1091    2676,  2684,  2685,  2686,  2691,  2692,  2696,  2698,  2700,  2702,
     1092    2704,  2706,  2713,  2715,  2717,  2719,  2721,  2723,  2725,  2727,
     1093    2729,  2731,  2736,  2738,  2740,  2745,  2771,  2772,  2774,  2778,
     1094    2779,  2783,  2785,  2787,  2789,  2791,  2793,  2800,  2802,  2804,
     1095    2806,  2808,  2810,  2815,  2820,  2822,  2824,  2842,  2844,  2849,
     1096    2850
    10991097};
    11001098#endif
     
    11221120  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    11231121  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1124   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'*'",
    1125   "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    1126   "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
     1122  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'",
     1123  "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'",
     1124  "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
    11271125  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    11281126  "string_literal_list", "primary_expression", "postfix_expression",
     
    12291227     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12301228     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
    1231       41,    91,    93,    46,   123,   125,    44,    58,    42,    38,
    1232       43,    45,    33,   126,    47,    37,    60,    62,    94,   124,
    1233       63,    61,    59
     1229      41,    91,    93,    46,   123,   125,    44,    42,    38,    43,
     1230      45,    33,   126,    47,    37,    60,    62,    94,   124,    63,
     1231      58,    61,    59
    12341232};
    12351233# endif
     
    12411239     138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
    12421240     142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
    1243      143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
    1244      146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
     1241     143,   143,   143,   144,   144,   145,   145,   146,   146,   147,
     1242     147,   147,   147,   147,   148,   148,   148,   148,   148,   148,
    12451243     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
    1246      148,   148,   148,   149,   149,   150,   150,   150,   150,   151,
    1247      151,   151,   152,   152,   152,   152,   153,   153,   153,   154,
    1248      154,   154,   155,   155,   155,   155,   155,   156,   156,   156,
    1249      157,   157,   158,   158,   159,   159,   160,   160,   161,   161,
    1250      162,   162,   162,   162,   163,   164,   164,   164,   165,   165,
    1251      166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
    1252      166,   167,   167,   167,   167,   168,   168,   169,   169,   170,
    1253      170,   171,   171,   171,   171,   171,   171,   171,   171,   171,
    1254      172,   173,   173,   174,   174,   175,   175,   175,   175,   176,
    1255      176,   177,   178,   178,   178,   178,   178,   178,   179,   179,
    1256      179,   180,   180,   181,   181,   182,   182,   183,   184,   184,
    1257      185,   185,   186,   186,   187,   187,   187,   187,   188,   188,
    1258      189,   189,   190,   190,   190,   191,   191,   192,   192,   192,
    1259      192,   192,   192,   192,   192,   192,   192,   193,   193,   193,
    1260      194,   194,   194,   194,   194,   195,   195,   195,   195,   196,
    1261      197,   197,   197,   197,   197,   198,   198,   198,   198,   198,
    1262      199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
    1263      203,   204,   204,   205,   205,   206,   206,   207,   207,   208,
    1264      208,   209,   209,   210,   210,   211,   211,   212,   212,   213,
    1265      213,   213,   213,   213,   214,   214,   214,   215,   215,   215,
    1266      216,   216,   216,   216,   216,   217,   217,   217,   218,   218,
    1267      219,   219,   219,   220,   220,   220,   220,   220,   221,   221,
    1268      222,   222,   222,   222,   223,   223,   224,   224,   224,   224,
    1269      225,   225,   225,   225,   226,   226,   227,   227,   228,   228,
    1270      229,   229,   229,   229,   229,   230,   229,   231,   231,   231,
    1271      232,   232,   233,   234,   234,   234,   234,   234,   234,   234,
    1272      234,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1273      235,   235,   235,   235,   236,   236,   236,   236,   236,   237,
    1274      237,   238,   238,   238,   238,   239,   239,   239,   239,   240,
    1275      240,   240,   240,   241,   241,   241,   242,   242,   242,   242,
    1276      243,   243,   243,   244,   244,   245,   245,   246,   245,   245,
    1277      245,   247,   247,   248,   248,   249,   249,   249,   249,   250,
    1278      250,   250,   250,   251,   251,   252,   252,   252,   252,   252,
    1279      253,   253,   254,   255,   256,   256,   257,   256,   258,   258,
    1280      259,   259,   260,   260,   261,   261,   261,   261,   261,   262,
    1281      262,   262,   262,   263,   263,   264,   264,   265,   265,   266,
    1282      266,   266,   266,   267,   267,   267,   267,   267,   268,   268,
    1283      268,   268,   268,   269,   269,   270,   270,   271,   271,   272,
    1284      272,   272,   273,   273,   273,   274,   274,   274,   275,   275,
    1285      275,   276,   276,   276,   276,   277,   277,   277,   278,   278,
    1286      279,   279,   279,   279,   279,   280,   280,   281,   281,   282,
    1287      282,   282,   282,   282,   282,   283,   283,   283,   283,   284,
    1288      284,   284,   285,   286,   286,   288,   287,   287,   289,   289,
    1289      289,   290,   290,   291,   291,   291,   292,   292,   292,   292,
    1290      293,   293,   293,   294,   294,   295,   295,   296,   297,   296,
    1291      298,   298,   299,   299,   300,   300,   300,   301,   301,   302,
    1292      302,   303,   303,   304,   304,   305,   305,   305,   306,   305,
    1293      305,   307,   307,   307,   308,   308,   308,   308,   308,   308,
    1294      308,   308,   308,   309,   309,   309,   310,   311,   311,   312,
    1295      312,   313,   313,   314,   315,   315,   316,   316,   316,   317,
    1296      317,   317,   317,   318,   318,   318,   318,   319,   319,   320,
    1297      320,   320,   321,   321,   321,   321,   322,   322,   323,   323,
    1298      323,   324,   324,   324,   325,   325,   325,   326,   326,   326,
    1299      327,   327,   327,   328,   328,   328,   329,   329,   329,   330,
    1300      330,   330,   331,   331,   331,   331,   332,   332,   333,   333,
    1301      333,   334,   334,   334,   334,   335,   335,   335,   336,   336,
    1302      336,   336,   337,   337,   337,   338,   338,   338,   338,   339,
    1303      339,   339,   340,   340,   340,   340,   341,   341,   342,   342,
    1304      342,   343,   343,   344,   344,   345,   345,   345,   346,   346,
    1305      346,   346,   346,   347,   347,   347,   347,   348,   348,   348,
    1306      349,   349,   349,   350,   350,   350,   350,   351,   351,   351,
    1307      352,   352,   352,   352,   352,   353,   353,   353,   353,   354,
    1308      354,   354,   355,   355,   355,   356,   356,   356,   356,   356,
    1309      356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
    1310      359,   359,   359,   360,   360,   361,   361,   361,   362,   362,
    1311      363,   363,   363,   363,   363,   363,   364,   364,   364,   364,
    1312      364,   364,   364,   364,   364,   364,   365,   365,   365,   365,
    1313      366,   366,   366,   367,   367,   368,   368,   368,   368,   368,
    1314      368,   369,   369,   369,   369,   369,   369,   370,   371,   371,
    1315      371,   372,   372,   373,   373
     1244     149,   149,   150,   150,   150,   150,   151,   151,   151,   152,
     1245     152,   152,   152,   153,   153,   153,   154,   154,   154,   155,
     1246     155,   155,   155,   155,   156,   156,   156,   157,   157,   158,
     1247     158,   159,   159,   160,   160,   161,   161,   162,   162,   162,
     1248     162,   163,   164,   164,   164,   165,   165,   166,   166,   166,
     1249     166,   166,   166,   166,   166,   166,   166,   166,   167,   167,
     1250     167,   167,   168,   168,   169,   169,   170,   170,   171,   171,
     1251     171,   171,   171,   171,   171,   171,   171,   172,   173,   173,
     1252     174,   174,   175,   175,   175,   175,   176,   176,   177,   178,
     1253     178,   178,   178,   178,   178,   179,   179,   179,   180,   180,
     1254     181,   181,   182,   182,   183,   184,   184,   185,   185,   186,
     1255     186,   187,   187,   187,   187,   188,   188,   189,   189,   190,
     1256     190,   190,   191,   191,   192,   192,   192,   192,   192,   192,
     1257     192,   192,   192,   192,   193,   193,   193,   194,   194,   194,
     1258     194,   194,   195,   195,   195,   195,   196,   197,   197,   197,
     1259     197,   197,   198,   198,   198,   198,   198,   199,   199,   200,
     1260     200,   201,   201,   202,   202,   203,   203,   203,   204,   204,
     1261     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
     1262     210,   210,   211,   211,   212,   212,   213,   213,   213,   213,
     1263     213,   214,   214,   214,   215,   215,   215,   216,   216,   216,
     1264     216,   216,   217,   217,   217,   218,   218,   219,   219,   219,
     1265     220,   220,   220,   220,   220,   221,   221,   222,   222,   222,
     1266     222,   223,   223,   224,   224,   224,   224,   225,   225,   225,
     1267     225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
     1268     229,   229,   230,   229,   231,   231,   231,   232,   232,   233,
     1269     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
     1270     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
     1271     235,   236,   236,   236,   236,   236,   237,   237,   238,   238,
     1272     238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
     1273     241,   241,   241,   242,   242,   242,   242,   243,   243,   243,
     1274     244,   244,   245,   245,   246,   245,   245,   245,   247,   247,
     1275     248,   248,   249,   249,   249,   249,   250,   250,   250,   250,
     1276     251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
     1277     255,   256,   256,   257,   256,   258,   258,   259,   259,   260,
     1278     260,   261,   261,   261,   261,   261,   262,   262,   262,   262,
     1279     263,   263,   264,   264,   265,   265,   266,   266,   266,   266,
     1280     267,   267,   267,   267,   267,   268,   268,   268,   268,   268,
     1281     269,   269,   270,   270,   271,   271,   272,   272,   272,   273,
     1282     273,   273,   274,   274,   274,   275,   275,   275,   276,   276,
     1283     276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
     1284     279,   279,   280,   280,   281,   281,   282,   282,   282,   282,
     1285     282,   283,   283,   283,   283,   284,   284,   284,   285,   286,
     1286     286,   288,   287,   287,   289,   289,   289,   290,   290,   291,
     1287     291,   291,   292,   292,   292,   292,   293,   293,   293,   294,
     1288     294,   295,   295,   296,   297,   296,   298,   298,   299,   299,
     1289     300,   300,   300,   301,   301,   302,   302,   303,   303,   304,
     1290     304,   305,   305,   305,   306,   305,   305,   307,   307,   307,
     1291     308,   308,   308,   308,   308,   308,   308,   308,   308,   309,
     1292     309,   309,   310,   311,   311,   312,   312,   313,   313,   314,
     1293     315,   315,   316,   316,   316,   317,   317,   317,   317,   318,
     1294     318,   318,   318,   319,   319,   320,   320,   320,   321,   321,
     1295     321,   321,   322,   322,   323,   323,   323,   324,   324,   324,
     1296     325,   325,   325,   326,   326,   326,   327,   327,   327,   328,
     1297     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
     1298     331,   331,   332,   332,   333,   333,   333,   334,   334,   334,
     1299     334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
     1300     337,   338,   338,   338,   338,   339,   339,   339,   340,   340,
     1301     340,   340,   341,   341,   342,   342,   342,   343,   343,   344,
     1302     344,   345,   345,   345,   346,   346,   346,   346,   346,   347,
     1303     347,   347,   347,   348,   348,   348,   349,   349,   349,   350,
     1304     350,   350,   350,   351,   351,   351,   352,   352,   352,   352,
     1305     352,   353,   353,   353,   353,   354,   354,   354,   355,   355,
     1306     355,   356,   356,   356,   356,   356,   356,   357,   357,   357,
     1307     358,   358,   358,   358,   358,   359,   359,   359,   359,   360,
     1308     360,   361,   361,   361,   362,   362,   363,   363,   363,   363,
     1309     363,   363,   364,   364,   364,   364,   364,   364,   364,   364,
     1310     364,   364,   365,   365,   365,   365,   366,   366,   366,   367,
     1311     367,   368,   368,   368,   368,   368,   368,   369,   369,   369,
     1312     369,   369,   369,   370,   371,   371,   371,   372,   372,   373,
     1313     373
    13161314};
    13171315
     
    13221320       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    13231321       3,     3,     1,     6,     4,     3,     7,     3,     7,     2,
    1324        2,     7,     4,     1,     3,     0,     1,     3,     7,     9,
    1325        1,     3,     1,     3,     7,     3,     7,     1,     1,     1,
    1326        2,     2,     2,     2,     2,     2,     4,     6,     1,     4,
    1327        4,     2,     4,     1,     1,     1,     1,     1,     1,     1,
    1328        4,     4,     1,     3,     3,     3,     1,     3,     3,     1,
    1329        3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
    1330        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
    1331        1,     5,     4,     5,     1,     1,     3,     2,     0,     1,
     1322       2,     7,     4,     1,     3,     0,     1,     1,     3,     1,
     1323       3,     7,     3,     7,     1,     1,     1,     2,     2,     2,
     1324       2,     2,     2,     4,     2,     4,     6,     1,     4,     4,
     1325       1,     1,     1,     1,     1,     1,     1,     4,     4,     1,
     1326       3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
     1327       3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
     1328       3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
     1329       5,     1,     1,     3,     2,     0,     1,     1,     1,     1,
     1330       1,     1,     1,     1,     1,     1,     1,     1,     2,     5,
     1331       6,     7,     1,     3,     1,     3,     0,     1,     1,     1,
     1332       1,     1,     1,     1,     1,     1,     6,     4,     2,     7,
     1333       1,     3,     1,     2,     1,     2,     1,     2,     2,     5,
     1334       7,     5,     9,     5,     9,     1,     3,     1,     1,     3,
     1335       3,     2,     1,     2,     2,     0,     1,     2,     3,     0,
     1336       1,     2,     3,     3,     4,     0,     1,     1,     2,     5,
     1337       7,     6,     6,     4,     3,     4,     2,     3,     2,     3,
     1338       3,     3,     3,     5,     3,     3,     4,     1,     5,     6,
     1339       5,     6,     9,    10,     9,    10,     2,     1,     2,     2,
     1340       2,     1,     6,     8,    10,    12,    14,     0,     1,     0,
     1341       1,     1,     3,     4,     7,     0,     1,     3,     1,     3,
     1342       1,     1,     1,     3,     1,     1,     1,     3,     0,     1,
     1343       3,     4,     1,     3,     1,     1,     3,     3,     3,     3,
     1344       3,     2,     3,     6,     3,     3,     4,     1,     2,     2,
     1345       3,     5,     8,     7,     7,     5,     9,     2,     2,     5,
     1346       3,     5,     4,     3,     4,     4,     7,     3,     3,     3,
     1347       3,     4,     6,     1,     1,     1,     1,     1,     1,     1,
     1348       1,     0,     1,     1,     2,     1,     1,     1,     1,     1,
     1349       1,     1,     0,     5,     1,     2,     3,     1,     2,     1,
    13321350       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1333        1,     2,     5,     6,     7,     1,     3,     1,     3,     0,
    1334        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
    1335        4,     2,     7,     1,     3,     1,     2,     1,     2,     1,
    1336        2,     2,     5,     7,     5,     9,     5,     9,     1,     3,
    1337        1,     1,     3,     3,     2,     1,     2,     2,     0,     1,
    1338        2,     3,     0,     1,     2,     3,     3,     4,     0,     1,
    1339        1,     2,     5,     7,     6,     6,     4,     3,     4,     2,
    1340        3,     2,     3,     3,     3,     3,     5,     3,     3,     4,
    1341        1,     5,     6,     5,     6,     9,    10,     9,    10,     2,
    1342        1,     2,     2,     2,     1,     6,     8,    10,    12,    14,
    1343        0,     1,     0,     1,     1,     3,     4,     7,     0,     1,
    1344        3,     1,     3,     1,     1,     1,     3,     1,     1,     1,
    1345        3,     0,     1,     3,     4,     1,     3,     1,     1,     3,
    1346        3,     3,     3,     3,     2,     3,     6,     3,     3,     4,
    1347        1,     2,     2,     3,     5,     8,     7,     7,     5,     9,
    1348        2,     2,     5,     3,     5,     4,     3,     4,     4,     7,
    1349        3,     3,     3,     3,     4,     6,     1,     1,     1,     1,
    1350        1,     1,     1,     1,     0,     1,     1,     2,     1,     1,
    1351        1,     1,     1,     1,     1,     0,     5,     1,     2,     3,
    1352        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
    13531351       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1354        1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
    1355        3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
    1356        2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
    1357        1,     2,     2,     1,     1,     4,     2,     0,     6,     7,
    1358        2,     2,     2,     0,     2,     2,     3,     2,     3,     1,
    1359        2,     3,     2,     2,     4,     0,     1,     2,     2,     1,
    1360        0,     1,     2,     2,     5,     2,     0,     7,     2,     4,
    1361        0,     2,     0,     1,     1,     1,     5,     5,     5,     1,
    1362        5,     5,     9,     1,     5,     0,     1,     1,     5,     1,
    1363        1,     5,     5,     1,     3,     3,     4,     1,     1,     1,
    1364        1,     2,     1,     3,     3,     1,     2,     1,     3,     1,
    1365        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1366        2,     1,     1,     1,     2,     0,     2,     2,     1,     4,
    1367        0,     1,     2,     3,     4,     2,     2,     1,     2,     1,
    1368        2,     5,     5,     7,     6,     1,     2,     2,     3,     1,
    1369        2,     2,     4,     2,     4,     0,     4,     2,     1,     1,
    1370        1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
    1371        2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
    1372        1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
    1373        1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
    1374        2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
    1375        5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
    1376        1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
    1377        1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
    1378        3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
    1379        2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
    1380        1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
    1381        4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
     1352       1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
     1353       2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
     1354       1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
     1355       1,     1,     4,     2,     0,     6,     7,     2,     2,     2,
     1356       0,     2,     2,     3,     2,     3,     1,     2,     3,     2,
     1357       2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
     1358       2,     5,     2,     0,     7,     2,     4,     0,     2,     0,
     1359       1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
     1360       1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
     1361       1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
     1362       3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
     1363       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
     1364       1,     2,     0,     2,     2,     1,     4,     0,     1,     2,
     1365       3,     4,     2,     2,     1,     2,     2,     5,     5,     7,
     1366       6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
     1367       4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
     1368       5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
     1369       4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
     1370       1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
     1371       1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
     1372       2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
     1373       1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
     1374       1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
     1375       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     1376       4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
     1377       2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
     1378       6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
     1379       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
     1380       3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
    13821381       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1383        2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
    1384        8,     3,     2,     1,     2,     2,     1,     1,     2,     3,
    1385        3,     2,     4,     6,     8,     1,     2,     2,     1,     2,
    1386        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1387        2,     3,     1,     5,     5,     6,     6,     1,     2,     2,
    1388        1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
    1389        8,     3,     1,     2,     1,     2,     6,     5,     6,     7,
    1390        7,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1391        4,     4,     3,     8,     3,     1,     1,     2,     1,     1,
    1392        2,     3,     2,     3,     2,     3,     3,     2,     4,     3,
    1393        2,     3,     2,     4,     3,     2,     6,     6,     6,     7,
    1394        1,     2,     1,     1,     1,     2,     3,     2,     3,     2,
    1395        3,     3,     4,     2,     3,     4,     2,     5,     5,     6,
    1396        6,     0,     1,     0,     2
     1382       2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
     1383       8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1384       4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
     1385       5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
     1386       3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
     1387       1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
     1388       1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
     1389       3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
     1390       2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
     1391       3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
     1392       1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
     1393       3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
     1394       2
    13971395};
    13981396
     
    14021400static const yytype_uint16 yydefact[] =
    14031401{
    1404      294,   294,   315,   313,   316,   314,   317,   318,   300,   302,
    1405      301,     0,   303,   329,   321,   326,   324,   325,   323,   322,
    1406      327,   328,   333,   330,   331,   332,   549,   549,   549,     0,
    1407        0,     0,   294,   220,   304,   319,   320,     7,   360,     0,
    1408        8,    14,    15,     0,     2,    63,    64,   567,     9,   294,
    1409      527,   525,   247,     3,   455,     3,   260,     0,     3,     3,
    1410        3,   248,     3,     0,     0,     0,   295,   296,   298,   294,
    1411      307,   310,   312,   341,   286,   334,   339,   287,   349,   288,
    1412      356,   353,   363,     0,     0,   364,   289,   475,   479,     3,
    1413        3,     0,     2,   521,   526,   531,   299,     0,     0,   549,
    1414      579,   549,     2,   590,   591,   592,   294,     0,   733,   734,
    1415        0,    12,     0,    13,   294,   270,   271,     0,   295,   290,
    1416      291,   292,   293,   528,   305,   393,   550,   551,   371,   372,
    1417       12,   446,   447,    11,   442,   445,     0,   505,   500,   491,
    1418      446,   447,     0,     0,   530,   221,     0,   294,     0,     0,
    1419        0,     0,     0,     0,     0,     0,   294,   294,     2,     0,
    1420      735,   295,   584,   596,   739,   732,   730,   737,     0,     0,
    1421        0,   254,     2,     0,   534,   440,   441,   439,     0,     0,
    1422        0,     0,   549,     0,   636,   637,     0,     0,   547,   543,
    1423      549,   564,   549,   549,   545,     2,   544,   549,   603,   549,
    1424      549,   606,     0,     0,     0,   294,   294,   313,   361,     2,
    1425      294,   261,   297,   308,   342,   354,   480,     0,     2,     0,
    1426      455,   262,   295,   335,   350,   357,   476,     0,     2,     0,
    1427      311,   336,   343,   344,     0,   351,   355,   358,   362,   447,
    1428      294,   373,   366,   370,     0,   395,   477,   481,     0,     0,
    1429        0,     1,   294,     2,   532,   578,   580,   294,     2,   743,
    1430      295,   746,   547,   547,     0,   295,     0,     0,   273,   549,
    1431      545,     2,   294,     0,     0,   294,   552,     2,   503,     2,
    1432      556,     0,     0,     0,     0,     0,     0,    18,    58,     4,
    1433        5,     6,    16,     0,     0,   294,     2,    65,    66,    67,
    1434       68,    48,    19,    49,    22,    47,    69,   294,     0,    72,
    1435       76,    79,    82,    87,    90,    92,    94,    96,    98,   100,
    1436      105,   497,   753,   453,   496,     0,   451,   452,     0,   568,
    1437      583,   586,   589,   595,   598,   601,   360,     0,     2,   741,
    1438        0,   294,   744,     2,    63,   294,     3,   427,     0,   435,
    1439      295,   294,   307,   334,   287,   349,   356,     3,     3,   409,
    1440      413,   423,   428,   475,   294,   429,   708,   709,   294,   430,
    1441      432,   294,     2,   585,   597,   731,     2,     2,   249,     2,
    1442      460,     0,   458,   457,   456,   141,     2,     2,   251,     2,
    1443        2,   250,     2,   281,     2,   282,     0,   280,     0,     0,
    1444        0,     0,     0,     0,     0,     0,     0,   569,   608,     0,
    1445      455,     2,   563,   572,   662,   565,   566,   535,   294,     2,
    1446      602,   611,   604,   605,     0,   276,   294,   294,   340,   295,
    1447        0,   295,     0,   294,   736,   740,   738,   536,   294,   547,
    1448      255,   263,   309,     0,     2,   537,   294,   501,   337,   338,
    1449      283,   352,   359,     0,   294,     0,   751,   400,     0,   478,
    1450      502,   252,   253,   522,   294,   437,     0,   294,   237,     0,
    1451        2,   239,     0,   295,     0,   257,     2,   258,   278,     0,
    1452        0,     2,   294,   547,   294,   488,   490,   489,     0,     0,
    1453      753,     0,   294,     0,   294,   492,   294,   562,   560,   561,
    1454      559,     0,   554,   557,     0,     0,   294,    55,   294,    69,
    1455       50,   294,    61,   294,   294,    53,    54,     2,   127,     0,
    1456        0,   449,     0,   448,   730,   121,   294,    17,     0,    29,
    1457       30,    35,     2,     0,    35,   111,   112,   113,   114,   115,
    1458      116,   117,   118,   119,   120,   110,     0,    51,    52,     0,
     1402     291,   291,   312,   310,   313,   311,   314,   315,   297,   299,
     1403     298,     0,   300,   326,   318,   323,   321,   322,   320,   319,
     1404     324,   325,   330,   327,   328,   329,   545,   545,   545,     0,
     1405       0,     0,   291,   217,   301,   316,   317,     7,   357,     0,
     1406       8,    14,    15,     0,     2,    60,    61,   563,     9,   291,
     1407     523,   521,   244,     3,   452,     3,   257,     0,     3,     3,
     1408       3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
     1409     304,   307,   309,   338,   283,   331,   336,   284,   346,   285,
     1410     353,   350,   360,     0,     0,   361,   286,   471,   475,     3,
     1411       3,     0,     2,   517,   522,   527,   296,     0,     0,   545,
     1412     575,   545,     2,   586,   587,   588,   291,     0,   729,   730,
     1413       0,    12,     0,    13,   291,   267,   268,     0,   292,   287,
     1414     288,   289,   290,   524,   302,   390,   546,   547,   368,   369,
     1415      12,   443,   444,    11,   439,   442,     0,   501,   496,   487,
     1416     443,   444,     0,     0,   526,   218,     0,   291,     0,     0,
     1417       0,     0,     0,     0,     0,     0,   291,   291,     2,     0,
     1418     731,   292,   580,   592,   735,   728,   726,   733,     0,     0,
     1419       0,   251,     2,     0,   530,   437,   438,   436,     0,     0,
     1420       0,     0,   545,     0,   632,   633,     0,     0,   543,   539,
     1421     545,   560,   545,   545,   541,     2,   540,   545,   599,   545,
     1422     545,   602,     0,     0,     0,   291,   291,   310,   358,     2,
     1423     291,   258,   294,   305,   339,   351,   476,     0,     2,     0,
     1424     452,   259,   292,   332,   347,   354,   472,     0,     2,     0,
     1425     308,   333,   340,   341,     0,   348,   352,   355,   359,   444,
     1426     291,   370,   363,   367,     0,   392,   473,   477,     0,     0,
     1427       0,     1,   291,     2,   528,   574,   576,   291,     2,   739,
     1428     292,   742,   543,   543,     0,   292,     0,     0,   270,   545,
     1429     541,     2,   291,     0,     0,   291,   548,     2,   499,     2,
     1430     552,     0,     0,     0,     0,     0,     0,    18,    57,     4,
     1431       5,     6,    16,     0,     0,   291,     2,    62,    63,    64,
     1432      65,    45,    19,    46,    22,    44,    66,   291,     0,    69,
     1433      73,    76,    79,    84,    87,    89,    91,    93,    95,    97,
     1434     102,   493,   749,   450,   492,     0,   448,   449,     0,   564,
     1435     579,   582,   585,   591,   594,   597,   357,     0,     2,   737,
     1436       0,   291,   740,     2,    60,   291,     3,   424,     0,   432,
     1437     292,   291,   304,   331,   284,   346,   353,     3,     3,   406,
     1438     410,   420,   425,   471,   291,   426,   704,   705,   291,   427,
     1439     429,   291,     2,   581,   593,   727,     2,     2,   246,     2,
     1440     457,     0,   455,   454,   453,   138,     2,     2,   248,     2,
     1441       2,   247,     2,   278,     2,   279,     0,   277,     0,     0,
     1442       0,     0,     0,     0,     0,     0,     0,   565,   604,     0,
     1443     452,     2,   559,   568,   658,   561,   562,   531,   291,     2,
     1444     598,   607,   600,   601,     0,   273,   291,   291,   337,   292,
     1445       0,   292,     0,   291,   732,   736,   734,   532,   291,   543,
     1446     252,   260,   306,     0,     2,   533,   291,   497,   334,   335,
     1447     280,   349,   356,     0,   291,     0,   747,   397,     0,   474,
     1448     498,   249,   250,   518,   291,   434,     0,   291,   234,     0,
     1449       2,   236,     0,   292,     0,   254,     2,   255,   275,     0,
     1450       0,     2,   291,   543,   291,   484,   486,   485,     0,     0,
     1451     749,     0,   291,     0,   291,   488,   291,   558,   556,   557,
     1452     555,     0,   550,   553,     0,     0,   291,    52,   291,    66,
     1453      47,   291,    54,   291,   291,    50,    51,     2,   124,     0,
     1454       0,   446,     0,   445,   726,   118,   291,    17,     0,    29,
     1455      30,    35,     2,     0,    35,   108,   109,   110,   111,   112,
     1456     113,   114,   115,   116,   117,   107,     0,    48,    49,     0,
    14591457       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1460        0,     0,     0,     0,     0,     0,     0,     0,     0,   107,
    1461        2,   648,   454,   645,   549,   549,   653,   482,   294,     2,
    1462      587,   588,     0,   599,   600,     0,     2,   742,   745,   121,
    1463      294,     0,     2,   710,   295,   714,   705,   706,   712,     0,
    1464        2,     2,   670,   549,   753,   619,   549,   549,   753,   549,
    1465      633,   549,   549,   684,   436,   667,   549,   549,   675,   682,
    1466      294,   431,   295,     0,     0,   294,   720,   295,   725,   753,
    1467      717,   294,   722,   753,   294,   294,   294,     0,   121,     0,
    1468       18,     5,     2,     0,    19,     0,   461,   751,     0,     0,
    1469      467,   241,     0,   294,     0,     0,     0,   547,   571,   575,
    1470      577,   607,   610,   614,   617,   570,   609,     0,   284,   660,
    1471        0,   294,   277,     0,     0,     0,     0,   275,     2,     0,
    1472      259,   538,   294,     0,     0,   294,     2,   365,   385,   374,
    1473        0,     0,   379,   373,   752,     0,     0,   398,     0,   295,
    1474        3,   416,     3,   420,   419,   593,     0,   533,   294,    63,
    1475        3,   294,   435,   295,     3,   429,   430,     2,     0,     0,
    1476        0,   487,   306,   294,   483,   485,     3,     2,     2,     0,
    1477      504,     3,     0,   556,   129,     0,     0,   222,     0,     0,
    1478        0,     2,     0,     0,    36,     0,     0,   121,   294,    20,
    1479        0,    21,     0,   694,   699,   450,   691,   549,   549,     0,
    1480      108,     3,     2,    27,     2,     0,    33,     0,     2,    25,
    1481        0,   106,    73,    74,    75,    77,    78,    80,    81,    85,
    1482       86,    83,    84,    88,    89,    91,    93,    95,    97,    99,
    1483        0,     0,   754,   294,     0,     0,     0,   649,   650,   646,
    1484      647,   499,   498,   294,     0,   294,   716,   294,   721,   295,
    1485      294,   664,   294,   294,   707,   663,     2,   294,     0,     0,
    1486        0,     0,     0,     0,     0,     0,   685,     0,   671,   622,
    1487      638,   672,     2,   618,   625,   433,   620,   621,   434,     2,
    1488      632,   641,   634,   635,   668,   669,   683,   711,   715,   713,
    1489      753,   268,     2,   747,     2,   424,   719,   724,   425,     0,
    1490      403,     3,     3,     3,     3,   455,     3,     0,     2,   470,
    1491      466,   752,     0,   462,   469,     2,   465,   468,     0,   294,
    1492      242,   264,     3,   272,   274,     0,   455,     2,   573,   574,
    1493        2,   612,   613,     0,   661,   539,     3,   346,   345,   348,
    1494      347,   294,   540,     0,   541,   373,     0,     0,   294,   294,
    1495        0,     0,   694,   383,   386,   390,   549,   390,   389,   382,
    1496      375,   549,   377,   380,   294,   400,   394,   104,   401,   751,
    1497        0,     0,   438,   240,     0,     0,     3,     2,   670,   431,
    1498        0,   529,     0,   753,   491,     0,   294,   294,   294,     0,
    1499      553,   555,   130,     0,     0,   215,     0,     0,     0,   223,
    1500      224,    56,     0,    62,   294,     0,    60,    59,     0,     2,
    1501      128,     0,     0,     0,   695,   696,   692,   693,   460,    70,
    1502       71,   109,   125,     3,   108,     0,     0,     0,    24,    35,
    1503        3,     0,    32,   102,     0,     3,   652,   656,   659,   651,
    1504        3,   594,     3,   718,   723,     2,    63,   294,     3,     3,
    1505      295,     0,     3,   624,   628,   631,   640,   674,   678,   681,
    1506      294,     3,   623,   639,   673,   294,   294,   426,   294,   294,
    1507      748,     0,     0,     0,     0,   256,     0,   104,     0,     3,
    1508        3,     0,   463,     0,   459,     0,     0,   245,   294,     0,
    1509        0,   129,     0,     0,     0,     0,     0,   129,     0,     0,
    1510      108,   108,    18,     2,     0,     0,     3,   131,   132,     2,
    1511      143,   133,   134,   135,   136,   137,   138,   145,   147,     0,
    1512        0,     0,   285,   294,   294,   549,     0,   542,   294,   376,
    1513      378,     0,   392,   695,   387,   391,   388,   381,   385,   368,
    1514      399,     0,   581,     2,   666,   665,     0,   671,     2,   484,
    1515      486,   506,     3,   514,   515,     0,     2,   510,     3,     3,
    1516        0,     0,   558,   222,     0,     0,     0,   222,     0,     0,
    1517        3,    37,   121,   698,   702,   704,   697,   751,   108,     0,
    1518        3,   663,    42,     3,    40,     3,    34,     0,     3,   101,
    1519      103,     0,     2,   654,   655,     0,     0,   294,     0,     0,
    1520        0,     3,   640,     0,     2,   626,   627,     2,   642,     2,
    1521      676,   677,     0,     0,    63,     0,     3,     3,     3,     3,
    1522      411,   410,   414,     2,     2,   750,   749,   122,     0,     0,
    1523        0,     0,     3,   464,     3,     0,   243,   146,     3,   295,
    1524      294,     0,     0,     0,     0,     2,     0,   191,     0,   189,
    1525        0,     0,     0,     0,     0,     0,     0,   549,   121,     0,
    1526      151,   148,   294,     0,     0,   267,   279,     3,     3,   548,
    1527      615,   369,   384,   397,   294,   266,   294,     0,   517,   494,
    1528      294,     0,     0,   493,   508,     0,     0,     0,   216,     0,
    1529      225,    57,   108,     0,     2,   700,   701,     0,   126,   123,
    1530        0,     0,     0,     0,     0,     0,    23,     0,   657,   294,
    1531      582,   265,   726,   727,   728,     0,   679,   294,   294,   294,
    1532        3,     3,     0,   687,     0,     0,     0,     0,   294,   294,
    1533        3,   546,   471,   472,     0,     0,   246,   295,     0,     0,
    1534        0,     0,   294,   192,   190,   187,     0,   193,     0,     0,
    1535        0,     0,   197,   200,   198,   194,     0,   195,   129,    35,
    1536      144,   142,   244,     0,     0,   418,   422,   421,     0,   511,
    1537        2,   512,     2,   513,   507,   294,   228,     0,   226,     0,
    1538      228,     3,   663,   294,    31,   124,     2,    45,     2,    43,
    1539       41,    28,   122,    26,     3,   729,     3,     3,     3,     0,
    1540        0,   686,   688,   629,   643,   269,     2,   408,     3,   407,
    1541        0,   474,   471,   129,     0,     0,   129,     3,     0,   129,
    1542      188,     0,     2,     2,   209,   199,     0,     0,     0,   140,
    1543        0,   576,   616,     2,     0,     0,     2,   229,     0,     0,
    1544      217,     0,     0,     0,     3,     0,     0,     0,     0,     0,
    1545        0,   689,   690,   294,     0,   473,   152,     0,     0,     2,
    1546      165,   129,   154,     0,   182,     0,   129,     0,     2,   156,
    1547        0,     2,     0,     2,     2,     2,   196,    32,   294,   516,
    1548      518,   509,     0,     0,     0,     0,   124,    38,     0,     3,
    1549        3,   658,   630,   644,   680,   412,   129,   158,   161,     0,
    1550      160,   164,     3,   167,   166,     0,   129,   184,   129,     3,
    1551        0,   294,     0,   294,     0,     2,     0,     2,   139,     2,
    1552      230,   231,     0,   227,   218,     0,   703,     0,     0,   153,
    1553        0,     0,   163,   233,   168,     2,   235,   183,     0,   186,
    1554      172,   201,     3,   210,   214,   203,     3,     0,   294,     0,
    1555      294,     0,     0,     0,    39,    46,    44,   159,   162,   129,
    1556        0,   169,   294,   129,   129,     0,   173,     0,     0,   694,
    1557      211,   212,   213,     0,   202,     3,   204,     3,   294,   219,
    1558      232,   149,   170,   155,   129,   236,   185,   180,   178,   174,
    1559      157,   129,     0,   695,     0,     0,     0,     0,   150,   171,
    1560      181,   175,   179,   178,   176,     3,     3,     0,     0,   495,
    1561      177,   205,   207,     3,     3,   206,   208
     1458       0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
     1459       2,   644,   451,   641,   545,   545,   649,   478,   291,     2,
     1460     583,   584,     0,   595,   596,     0,     2,   738,   741,   118,
     1461     291,     0,     2,   706,   292,   710,   701,   702,   708,     0,
     1462       2,     2,   666,   545,   749,   615,   545,   545,   749,   545,
     1463     629,   545,   545,   680,   433,   663,   545,   545,   671,   678,
     1464     291,   428,   292,     0,     0,   291,   716,   292,   721,   749,
     1465     713,   291,   718,   749,   291,   291,   291,     0,   118,     0,
     1466      18,     2,     0,    19,     0,   458,   747,     0,     0,   464,
     1467     238,     0,   291,     0,     0,     0,   543,   567,   571,   573,
     1468     603,   606,   610,   613,   566,   605,     0,   281,   656,     0,
     1469     291,   274,     0,     0,     0,     0,   272,     2,     0,   256,
     1470     534,   291,     0,     0,   291,     2,   362,   382,   371,     0,
     1471       0,   376,   370,   748,     0,     0,   395,     0,   292,     3,
     1472     413,     3,   417,   416,   589,     0,   529,   291,    60,     3,
     1473     291,   432,   292,     3,   426,   427,     2,     0,     0,     0,
     1474     483,   303,   291,   479,   481,     3,     2,     2,     0,   500,
     1475       3,     0,   552,   126,     0,     0,   219,     0,     0,     0,
     1476       0,    36,     0,     0,   118,   291,    20,     0,    21,     0,
     1477     690,   695,   447,   687,   545,   545,     0,   105,     3,     2,
     1478      27,     0,    33,     0,     2,    25,     0,   103,    70,    71,
     1479      72,    74,    75,    77,    78,    82,    83,    80,    81,    85,
     1480      86,    88,    90,    92,    94,    96,     0,     0,   750,   291,
     1481       0,     0,     0,   645,   646,   642,   643,   495,   494,   291,
     1482       0,   291,   712,   291,   717,   292,   291,   660,   291,   291,
     1483     703,   659,     2,   291,     0,     0,     0,     0,     0,     0,
     1484       0,     0,   681,     0,   667,   618,   634,   668,     2,   614,
     1485     621,   430,   616,   617,   431,     2,   628,   637,   630,   631,
     1486     664,   665,   679,   707,   711,   709,   749,   265,     2,   743,
     1487       2,   421,   715,   720,   422,     0,   400,     3,     3,     3,
     1488       3,   452,     3,     0,     2,   466,   463,   748,     0,   459,
     1489       2,   462,   465,     0,   291,   239,   261,     3,   269,   271,
     1490       0,   452,     2,   569,   570,     2,   608,   609,     0,   657,
     1491     535,     3,   343,   342,   345,   344,   291,   536,     0,   537,
     1492     370,     0,     0,   291,   291,     0,     0,   690,   380,   383,
     1493     387,   545,   387,   386,   379,   372,   545,   374,   377,   291,
     1494     397,   391,   101,   398,   747,     0,     0,   435,   237,     0,
     1495       0,     3,     2,   666,   428,     0,   525,     0,   749,   487,
     1496       0,   291,   291,   291,     0,   549,   551,   127,     0,     0,
     1497     212,     0,     0,     0,   220,   221,    53,     0,    55,    58,
     1498      59,     0,     2,   125,     0,     0,     0,   691,   692,   688,
     1499     689,   457,    67,    68,   106,   122,     3,   105,     0,     0,
     1500      24,    35,     3,     0,    32,    99,     0,     3,   648,   652,
     1501     655,   647,     3,   590,     3,   714,   719,     2,    60,   291,
     1502       3,     3,   292,     0,     3,   620,   624,   627,   636,   670,
     1503     674,   677,   291,     3,   619,   635,   669,   291,   291,   423,
     1504     291,   291,   744,     0,     0,     0,     0,   253,     0,   101,
     1505       0,     3,     3,     0,   460,     0,   456,     0,     0,   242,
     1506     291,     0,     0,   126,     0,     0,     0,     0,     0,   126,
     1507       0,     0,   105,   105,    18,     2,     0,     0,     3,   128,
     1508     129,     2,   140,   130,   131,   132,   133,   134,   135,   142,
     1509     144,     0,     0,     0,   282,   291,   291,   545,     0,   538,
     1510     291,   373,   375,     0,   389,   691,   384,   388,   385,   378,
     1511     382,   365,   396,     0,   577,     2,   662,   661,     0,   667,
     1512       2,   480,   482,   502,     3,   510,   511,     0,     2,   506,
     1513       3,     3,     0,     0,   554,   219,     0,     0,     0,   219,
     1514       0,     0,   118,   694,   698,   700,   693,   747,   105,     0,
     1515       3,   659,    39,     3,    37,    34,     0,     3,    98,   100,
     1516       0,     2,   650,   651,     0,     0,   291,     0,     0,     0,
     1517       3,   636,     0,     2,   622,   623,     2,   638,     2,   672,
     1518     673,     0,     0,    60,     0,     3,     3,     3,     3,   408,
     1519     407,   411,     2,     2,   746,   745,   119,     0,     0,     0,
     1520       0,     3,   461,     3,     0,   240,   143,     3,   292,   291,
     1521       0,     0,     0,     0,     2,     0,   188,     0,   186,     0,
     1522       0,     0,     0,     0,     0,     0,   545,   118,     0,   148,
     1523     145,   291,     0,     0,   264,   276,     3,     3,   544,   611,
     1524     366,   381,   394,   291,   263,   291,     0,   513,   490,   291,
     1525       0,     0,   489,   504,     0,     0,     0,   213,     0,   222,
     1526      56,     2,   696,   697,     0,   123,   120,     0,     0,     0,
     1527       0,     0,    23,     0,   653,   291,   578,   262,   722,   723,
     1528     724,     0,   675,   291,   291,   291,     3,     3,     0,   683,
     1529       0,     0,     0,     0,   291,   291,     3,   542,   119,   468,
     1530       0,     0,   243,   292,     0,     0,     0,     0,   291,   189,
     1531     187,   184,     0,   190,     0,     0,     0,     0,   194,   197,
     1532     195,   191,     0,   192,   126,    35,   141,   139,   241,     0,
     1533       0,   415,   419,   418,     0,   507,     2,   508,     2,   509,
     1534     503,   291,   225,     0,   223,     0,   225,   291,    31,   121,
     1535       2,    42,     2,    40,    38,    28,    26,     3,   725,     3,
     1536       3,     3,     0,     0,   682,   684,   625,   639,   266,     2,
     1537     405,     3,   404,     0,   470,   467,   126,     0,     0,   126,
     1538       3,     0,   126,   185,     0,     2,     2,   206,   196,     0,
     1539       0,     0,   137,     0,   572,   612,     2,     0,     0,     2,
     1540     226,     0,     0,   214,     0,     3,     0,     0,     0,     0,
     1541       0,     0,   685,   686,   291,     0,   469,   149,     0,     0,
     1542       2,   162,   126,   151,     0,   179,     0,   126,     0,     2,
     1543     153,     0,     2,     0,     2,     2,     2,   193,    32,   291,
     1544     512,   514,   505,     0,     0,     0,     0,     0,     3,     3,
     1545     654,   626,   640,   676,   409,   126,   155,   158,     0,   157,
     1546     161,     3,   164,   163,     0,   126,   181,   126,     3,     0,
     1547     291,     0,   291,     0,     2,     0,     2,   136,     2,   227,
     1548     228,     0,   224,   215,   699,     0,     0,   150,     0,     0,
     1549     160,   230,   165,     2,   232,   180,     0,   183,   169,   198,
     1550       3,   207,   211,   200,     3,     0,   291,     0,   291,     0,
     1551       0,     0,    43,    41,   156,   159,   126,     0,   166,   291,
     1552     126,   126,     0,   170,     0,     0,   690,   208,   209,   210,
     1553       0,   199,     3,   201,     3,   291,   216,   229,   146,   167,
     1554     152,   126,   233,   182,   177,   175,   171,   154,   126,     0,
     1555     691,     0,     0,     0,     0,   147,   168,   178,   172,   176,
     1556     175,   173,     3,     3,     0,     0,   491,   174,   202,   204,
     1557       3,     3,   203,   205
    15621558};
    15631559
     
    15651561static const yytype_int16 yydefgoto[] =
    15661562{
    1567       -1,   817,   468,   301,    47,   134,   135,   302,   303,   304,
    1568      305,   765,   766,  1143,  1144,   306,   381,   308,   309,   310,
     1563      -1,   813,   468,   301,    47,   134,   135,   302,   303,   304,
     1564     305,   761,   762,  1133,  1134,   306,   381,   308,   309,   310,
    15691565     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1570     1038,   518,   982,   546,   322,   983,   952,  1065,  1541,  1067,
    1571     1068,  1069,  1070,  1542,  1071,  1072,  1458,  1459,  1420,  1421,
    1572     1422,  1520,  1521,  1525,  1526,  1561,  1562,  1073,  1378,  1074,
    1573     1075,  1312,  1313,  1314,  1502,  1076,   146,   958,   959,   960,
    1574     1398,  1482,  1494,  1495,   469,   470,   879,   880,  1046,    51,
     1566    1030,   518,   975,   546,   322,   976,   947,  1057,  1518,  1059,
     1567    1060,  1061,  1062,  1519,  1063,  1064,  1437,  1438,  1401,  1402,
     1568    1403,  1497,  1498,  1502,  1503,  1538,  1539,  1065,  1361,  1066,
     1569    1067,  1298,  1299,  1300,  1480,  1068,   146,   953,   954,   955,
     1570    1381,  1461,  1472,  1473,   469,   470,   874,   875,  1038,    51,
    15751571      52,    53,    54,    55,   347,   159,    58,    59,    60,    61,
    15761572      62,   349,    64,    65,   265,    67,    68,   275,   351,   352,
    15771573      71,    72,    73,    74,   119,    76,   205,   354,   120,    79,
    1578      121,    81,    82,   455,    83,   454,   689,   690,   691,   913,
    1579     1094,   914,    84,    85,   458,   456,   697,   859,   860,   357,
    1580      358,   700,   701,   702,   359,   360,   361,   362,   466,   340,
    1581      136,   137,   522,   324,   171,   646,   647,   648,   649,   650,
    1582       86,   122,    88,   489,   490,   944,   491,   278,   495,   325,
    1583       89,   138,   139,    90,  1335,  1116,  1117,  1118,  1119,    91,
    1584       92,   718,    93,   274,    94,    95,   188,  1040,   680,   412,
     1574     121,    81,    82,   455,    83,   454,   688,   689,   690,   908,
     1575    1086,   909,    84,    85,   458,   456,   696,   855,   856,   857,
     1576     858,   699,   700,   701,   359,   360,   361,   362,   466,   340,
     1577     136,   137,   522,   324,   171,   645,   646,   647,   648,   649,
     1578      86,   122,    88,   489,   490,   939,   491,   278,   495,   325,
     1579      89,   138,   139,    90,  1321,  1108,  1109,  1110,  1111,    91,
     1580      92,   717,    93,   274,    94,    95,   188,  1032,   679,   412,
    15851581     126,    96,   501,   502,   503,   189,   269,   191,   192,   193,
    15861582     270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
    1587      198,   199,   200,   829,   605,   606,   607,   608,   201,   610,
    1588      611,   612,   572,   573,   574,   575,   754,   106,   614,   615,
    1589      616,   617,   618,   619,   975,   756,   757,   758,   595,   365,
    1590      366,   367,   368,   326,   165,   108,   109,   110,   370,   695,
     1583     198,   199,   200,   825,   605,   606,   607,   608,   201,   610,
     1584     611,   612,   572,   573,   574,   575,   751,   106,   614,   615,
     1585     616,   617,   618,   619,   968,   753,   754,   755,   595,   365,
     1586     366,   367,   368,   326,   165,   108,   109,   110,   370,   694,
    15911587     569
    15921588};
     
    15941590/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15951591   STATE-NUM.  */
    1596 #define YYPACT_NINF -1315
     1592#define YYPACT_NINF -1310
    15971593static const yytype_int16 yypact[] =
    15981594{
    1599     5006,  8237, -1315,    89, -1315, -1315, -1315, -1315, -1315, -1315,
    1600    -1315,   194, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
    1601    -1315, -1315, -1315, -1315, -1315, -1315,   314,   314,   314,   792,
    1602      787,   234,  7780,   219, -1315, -1315, -1315, -1315, -1315,   257,
    1603    -1315, -1315, -1315,   912,   264, -1315, -1315, -1315, -1315,  6920,
    1604    -1315, -1315, -1315, -1315,   120,   272, -1315,   823, -1315, -1315,
    1605    -1315, -1315,   302,  1619,   420,   112,  3706, -1315, -1315,  9405,
    1606     1262, -1315, -1315, -1315,   675,   440,  7333,  1133,  1444,   675,
    1607     1669, -1315, -1315,   482,   771, -1315,   675,  1807, -1315,   386,
    1608    -1315,   507,   517, -1315, -1315, -1315, -1315,   426,   272,   314,
    1609    -1315,   314, -1315, -1315, -1315, -1315,  8871,   823, -1315, -1315,
    1610      823, -1315,   415, -1315,  8985, -1315, -1315,  1777,  9099, -1315,
    1611      428,   428,   428, -1315, -1315, -1315,   314, -1315, -1315, -1315,
    1612      454,   468,   490, -1315, -1315, -1315,   500, -1315, -1315, -1315,
    1613    -1315, -1315,   504,   509, -1315, -1315,    76,  8833,  2235,   669,
    1614      439,   450,   519,   522,   537,   567,  8121,  7182,   529,   581,
    1615    -1315,  9443, -1315, -1315, -1315, -1315,   595, -1315,   216,  3771,
    1616     3771, -1315,   603,   313, -1315, -1315, -1315, -1315,   605,   316,
    1617      320,   345,   314,   589, -1315, -1315,  1619,  2809,   664, -1315,
    1618       49, -1315,   314,   314,   272, -1315, -1315,    87, -1315,   314,
    1619      314, -1315,  3249,   632,   636,   428,  7093, -1315, -1315,   646,
    1620     6920, -1315, -1315,   675, -1315, -1315, -1315,   272, -1315,   823,
    1621      120, -1315,  7972, -1315,   428,   428,   428,   272, -1315,   792,
    1622    -1315,  5155, -1315, -1315,   635,   428, -1315,   428, -1315,   257,
    1623     8833, -1315,   657, -1315,   787,   660,   428, -1315,   792,   679,
    1624      704, -1315,  7780,   574, -1315, -1315, -1315,  9296, -1315, -1315,
    1625     6389, -1315,   664,    74,  5169,  9099,  1777,  3249, -1315,    97,
    1626    -1315, -1315,  8985,   823,   708,  9849, -1315, -1315,   539, -1315,
    1627    10667,   680,   762, 10451,   751, 10470, 10528, -1315,   764, -1315,
    1628    -1315, -1315, -1315, 10547, 10547,  8605,   778, -1315, -1315, -1315,
    1629    -1315, -1315, -1315,   801, -1315,   969,  2181,  8947, 10470, -1315,
    1630      339,   731,   846,   265,   890,   795,   797,   810,   836,    33,
    1631    -1315, -1315,   812,   497, -1315,    59, -1315, -1315,  2235, -1315,
    1632    -1315,   588,   835, -1315,   622,   835,   847,   257, -1315, -1315,
    1633      863,  8871, -1315,   854,   878,  9061, -1315, -1315,   765,  1714,
    1634     8320,  7093,   675, -1315,   675,   428,   428, -1315, -1315, -1315,
    1635    -1315, -1315, -1315,   428,  8871,   823, -1315, -1315,  9213,   843,
    1636    -1315,  8757, -1315, -1315, -1315, -1315, -1315, -1315, -1315,   886,
    1637     3575, 10470, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
    1638    -1315, -1315, -1315, -1315, -1315, -1315,  1777, -1315,   793,   865,
    1639      884,   894,   869,   902,   905,   909,  2809, -1315, -1315,   918,
    1640      120,   935, -1315, -1315,   927, -1315, -1315, -1315,  9296, -1315,
    1641    -1315, -1315, -1315, -1315,  3249, -1315,  8833,  8833, -1315,   428,
    1642     1777,  7213,   823,  8393, -1315, -1315, -1315, -1315,  9296,    74,
    1643    -1315, -1315,   675,   272, -1315, -1315,  9296, -1315,  6557, -1315,
    1644    -1315,   428,   428,   295,  9519,   937,   942,   934,   955,   428,
    1645    -1315, -1315, -1315, -1315,  9927, -1315,   540,  6680, -1315,   272,
    1646      963, -1315,  1777, 10749,  5888, -1315, -1315, -1315, -1315,   899,
    1647     3249, -1315,  8466,   664,  7663, -1315, -1315, -1315,  1232,   551,
    1648      812,   787,  9849,   591,  8985, -1315,  9849, -1315, -1315, -1315,
    1649    -1315,   576, -1315,   980,   762,   283,  8605, -1315,  9699, -1315,
    1650    -1315,  8605, -1315,  8719,  8605, -1315, -1315,   987, -1315,   599,
    1651      996,   706,   999, -1315, -1315,  6048,  6769, -1315,   137, -1315,
    1652    -1315,  6053, -1315,   286,  6053, -1315, -1315, -1315, -1315, -1315,
    1653    -1315, -1315, -1315, -1315, -1315, -1315,  5169, -1315, -1315, 10470,
    1654    10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470,
    1655    10470, 10470, 10470, 10470, 10470, 10470, 10470,  4672,  5169, -1315,
    1656      497,  1307, -1315, -1315,   314,   314, -1315, -1315,  8833, -1315,
    1657    -1315,   927,   574, -1315,   927, 10393, -1315, -1315, -1315,  9329,
    1658     6769,  1002,  1007, -1315,  9099, -1315, -1315,   595, -1315,  1019,
    1659      941,  1024,  1647,   103,   812, -1315,   314,   314,   812,   133,
    1660    -1315,   314,   314,   927, -1315, -1315,   314,   314, -1315,   835,
    1661     9781,   823, 10894,   412,   469,  9781, -1315,  6389, -1315,   812,
    1662    -1315,  8871, -1315,   191,  5383,  5383,  5383,   823, -1315,  4873,
    1663      979,   513,   886,   151,  1028,  1030, -1315,  1036,  3771,   531,
    1664    -1315,  1124,   823,  5383,   574,  1777,   574,   664,   782,   835,
    1665    -1315, -1315,   802,   835, -1315, -1315, -1315,   762, -1315,   835,
    1666      272,  9927, -1315,   606,  1050,   616,  1051, -1315,  1052,   272,
    1667    -1315, -1315,  9296,   272,  1054,  9699,  1053, -1315,  1508, -1315,
    1668      360,   367,   787, -1315,   787,  1056, 10470, -1315,   787, 10894,
    1669    -1315, -1315,  1059, -1315, -1315, -1315,   574, -1315, 10822,   878,
    1670    -1315,  5383,   769,  8320, -1315, -1315,   595,  1057,  1058,  1232,
    1671     3288, -1315, -1315,  9849, -1315, -1315,  1065, -1315, -1315,  1066,
    1672    -1315,  1065,  1064, 10667,  5169,   121,  1034,   100,  1074,  1071,
    1673     1075,   778,  1072,  1078, -1315,  1080,  1082,  9557,  6889, -1315,
    1674     5169, -1315,   706,  2222, -1315, -1315, -1315,   314,   314,  5021,
    1675     5169,  1079, -1315, -1315,   886,   619, -1315,  5169, -1315, -1315,
    1676      971, -1315, -1315, -1315, -1315,   339,   339,   731,   731,   846,
    1677      846,   846,   846,   265,   265,   890,   795,   797,   810,   836,
    1678    10470,   975, -1315,  9927,  1084,  1086,  1087,  1307, -1315, -1315,
    1679    -1315, -1315, -1315,  9927,   639,  5383, -1315,  8871, -1315,  7302,
    1680     9175, -1315,  8757,  7182, -1315, -1315,   941,  9927,   923,  1093,
    1681     1097,  1098,  1101,  1104,  1109,  1110, -1315,  3448,  1647, -1315,
    1682    -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
    1683    -1315, -1315, -1315, -1315, -1315, -1315,   927, -1315, -1315, -1315,
    1684      812, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,  1111,
    1685    -1315,  1115,  1116, -1315, -1315,   120,  1079,  4873, -1315, -1315,
    1686    -1315,  3575,  1113, -1315, -1315, -1315, -1315, -1315,   787,  6479,
    1687     1200, -1315, -1315, -1315, -1315,  1100,   120, -1315, -1315,   927,
    1688    -1315, -1315,   927,   146,   927, -1315, -1315, -1315, -1315, -1315,
    1689    -1315,  9481, -1315,   272, -1315, -1315,   380,   387,  9213,  7422,
    1690     1947, 10470,  2081, -1315, -1315,  1121,    77,  1121, -1315,   787,
    1691    -1315,   314, -1315, -1315,  9630,   934, -1315, -1315, -1315,   942,
    1692     1122,  1117, -1315, -1315,  1129,  1130, -1315,   769,  2444, -1315,
    1693      476, -1315,  3288,   812, -1315,  1135,  9849,  9811,  8833,  1136,
    1694    -1315, -1315,  1127,  1137,  1131, -1315, 10470,   134,   293,  1138,
    1695    -1315,  1142,   574,  1142,  6769,  5169, -1315, -1315,  1142,  1139,
    1696    -1315,  1150,  1152,  1153,  2222, -1315, -1315, -1315,  3575, -1315,
    1697    -1315, -1315, -1315,  1156,  5169,  1140,   574,  4873, -1315,  6053,
    1698    -1315,   574, -1315, -1315,  5169, -1315,   842,   835, -1315, -1315,
    1699    -1315, -1315, -1315, -1315, -1315,   886,   878,  9061, -1315, -1315,
    1700     7542,  1163, -1315,   882,   835, -1315,   892,   926,   835, -1315,
    1701      428,  4553, -1315, -1315, -1315,  9927,  9927, -1315,  8393,  8393,
    1702    -1315,  1161,  1164,  1169,  1172, -1315,  1171,   527,    41,  1079,
    1703    -1315,   574, -1315,  3771, -1315,  5169,   423, -1315,  6649,  1175,
    1704     1177, 10335,  1178,  1181,     9,    73,    48,  5169,  1182,   272,
    1705     5169,  5169,  1132,  1180,   489,  1162, -1315, -1315, -1315,  1184,
    1706    -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,   787,
    1707     1183,  5169, -1315,  9927,  9927,   314,  1186, -1315,  9668, -1315,
    1708    -1315,   984, -1315,  2081, -1315, -1315, -1315, -1315,  1508, -1315,
    1709    -1315,  1188, -1315, -1315, -1315, -1315,  1191,  2444, -1315, -1315,
    1710     1185, -1315,  1065, -1315, -1315,  1777,  1194, -1315, -1315, -1315,
    1711      640,  1198, -1315,   100,  1201, 10470,  1195,   100,   100,  1213,
    1712     1214, -1315,  6048,   959,   835, -1315, -1315,  1036,  5169,  1217,
    1713     1156,   654,    46,  1216, -1315,  1214, -1315,  1222,  1216, -1315,
    1714    -1315,  1226, -1315, -1315,   927,  1229,  1230,  7062,  1231,  1235,
    1715     1237, -1315, -1315,  1242, -1315, -1315,   927, -1315, -1315, -1315,
    1716    -1315,   927,  5169,  5169,   878,  1244, -1315, -1315, -1315, -1315,
    1717    -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 10470, 10470,
    1718     1246,  1253,  1216, -1315, -1315,   787, -1315, -1315, -1315,  4813,
    1719     9811,  5169,  5169,  1321,  5169, -1315,  1239, -1315,  1247, -1315,
    1720     1248,  5169,  1250,  5169,   986,  1252,    81,   314,  9367,  1069,
    1721    -1315, -1315,  6479,  1261,   436, -1315, -1315, -1315, -1315, -1315,
    1722    -1315, -1315, -1315, -1315, 10153, -1315,  8466,  1268, -1315, -1315,
    1723     9811,   437,   451, -1315,  1270,  1271,   762,  1280, -1315,   352,
    1724    -1315, -1315,  5169,  1281, -1315, -1315,   927,  1277, -1315, -1315,
    1725     1284,   301,   375,   574,  1285,  1288, -1315,  1290, -1315,  9927,
    1726    -1315, -1315, -1315, -1315, -1315,  1291, -1315,  9927,  9927,  9927,
    1727    -1315, -1315,  1293, -1315,  1295,  1298,  1299,   590,  8088,  8204,
    1728    -1315, -1315,   304, -1315,  1302,  1303, -1315,  8539,   652,   671,
    1729     1308,   690,  6255, -1315, -1315, -1315,   471, -1315,   711,  1310,
    1730     1311,   272,  1363,  1043, -1315, -1315,  5169, -1315, 10335,  6053,
    1731    -1315, -1315, -1315,  1317,  1318, -1315, -1315, -1315,  1316, -1315,
    1732    -1315, -1315, -1315, -1315, -1315,  9811,   762,   155, -1315,  1300,
    1733      762,  1156,   297,  9927, -1315, -1315, -1315, -1315, -1315, -1315,
    1734    -1315, -1315,  1314, -1315, -1315, -1315, -1315, -1315, -1315,  1323,
    1735     1324, -1315, -1315, -1315, -1315, -1315, -1315, -1315,  1329, -1315,
    1736     1330, -1315, -1315, 10335,   135,  5169, 10335, -1315,  1333,  5169,
    1737    -1315,   281,  1344,  1348, -1315, -1315,  1340,  1343,  1331, -1315,
    1738      988, -1315, -1315, -1315,   823,  1777,  1338,   801,   995, 10470,
    1739    -1315,   713,  1349,  5169, -1315,   574,   574,  1350,  1355,  1356,
    1740     1358, -1315, -1315,  8393,  1359, -1315,  1430, 10470,  1360, -1315,
    1741    -1315, 10246, -1315,   722, -1315,  1347, 10335,  1352, -1315, -1315,
    1742     1366, -1315,  1370, -1315,  1385,  1386, -1315,  1354,  9811, -1315,
    1743    -1315, -1315,   762,   574,  1382,  1364,  1381, -1315,  1389,  1216,
    1744     1216, -1315, -1315, -1315, -1315, -1315, 10335,   197, -1315,  1000,
    1745    -1315, -1315,  7897, -1315, -1315,  1368,  5169, -1315,  5169,  7897,
    1746      272,  9699,   272,  9699,  1391, -1315,  1392, -1315, -1315,  1390,
    1747      801, -1315,   776, -1315, -1315,  5169, -1315,  1394,  1395, -1315,
    1748    10470, 10470, -1315, -1315,  1077,    85, -1315, -1315,  1372, -1315,
    1749     1077, -1315, -1315,  2494,   574, -1315, -1315,   272,  9699,   272,
    1750     9699,  1403,  1383,   574, -1315, -1315, -1315, -1315, -1315, 10246,
    1751     1401,  1077,  5739,  5169, 10157,  1402,  1077,  1408,  2494,  2404,
    1752    -1315, -1315, -1315,  1409, -1315, -1315, -1315, -1315,  8833, -1315,
    1753    -1315, -1315, 10024, -1315, 10246, -1315, -1315,  1388,  9931, -1315,
    1754    -1315, 10157,   272,  2404,   272,  1413,  1414,   857, -1315, 10024,
    1755    -1315, -1315, -1315,  9931, -1315, -1315, -1315,   272,   272, -1315,
    1756    -1315, -1315, -1315, -1315, -1315, -1315, -1315
     1595    7316,  8697, -1310,    16, -1310, -1310, -1310, -1310, -1310, -1310,
     1596   -1310,    22, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1597   -1310, -1310, -1310, -1310, -1310, -1310,   101,   101,   101,  1152,
     1598     941,    64,  7548,   141, -1310, -1310, -1310, -1310, -1310,    87,
     1599   -1310, -1310, -1310,   868,   134, -1310, -1310, -1310, -1310,  9158,
     1600   -1310, -1310, -1310, -1310,   149,   144, -1310,  1337, -1310, -1310,
     1601   -1310, -1310,   139,   935,   260,   102,  2892, -1310, -1310,  9196,
     1602     790, -1310, -1310, -1310,   904,   293,  5512,   547,   778,   904,
     1603    1166, -1310, -1310,   554,   624, -1310,   904,  1343, -1310,   187,
     1604   -1310,   308,   336, -1310, -1310, -1310, -1310,   251,   144,   101,
     1605   -1310,   101, -1310, -1310, -1310, -1310,  8923,  1337, -1310, -1310,
     1606    1337, -1310,   337, -1310,  9043, -1310, -1310,  1053,  9381, -1310,
     1607    1729,  1729,  1729, -1310, -1310, -1310,   101, -1310, -1310, -1310,
     1608     410,   413,   418, -1310, -1310, -1310,   433, -1310, -1310, -1310,
     1609   -1310, -1310,   468,   477, -1310, -1310,    37,  8666,  2607,   742,
     1610     369,   496,   509,   523,   530,   535,  8584,  6836,   536,   546,
     1611   -1310,  9234, -1310, -1310, -1310, -1310,   561, -1310,   245,  4633,
     1612    4633, -1310,   562,   361, -1310, -1310, -1310, -1310,   574,   383,
     1613     408,   429,   101,   577, -1310, -1310,   935,  3015,   664, -1310,
     1614      86, -1310,   101,   101,   144, -1310, -1310,    89, -1310,   101,
     1615     101, -1310,  3541,   634,   653,  1729,  6748, -1310, -1310,   623,
     1616    9158, -1310, -1310,   904, -1310, -1310, -1310,   144, -1310,  1337,
     1617     149, -1310,  7737, -1310,  1729,  1729,  1729,   144, -1310,  1152,
     1618   -1310,  5996, -1310, -1310,   642,  1729, -1310,  1729, -1310,    87,
     1619    8666, -1310,   672, -1310,   941,   697,  1729, -1310,  1152,   699,
     1620     702, -1310,  7548,   567, -1310, -1310, -1310,  9125, -1310, -1310,
     1621    4167, -1310,   664,    10,  5116,  9381,  1053,  3541, -1310,    94,
     1622   -1310, -1310,  9043,  1337,   715, 10741, -1310, -1310,    11, -1310,
     1623   10483,   740,   772, 10231,   759, 10288, 10307, -1310,   763, -1310,
     1624   -1310, -1310, -1310, 10364, 10364,  8440,   765, -1310, -1310, -1310,
     1625   -1310, -1310, -1310,   799, -1310,   616,  2256,  8779, 10288, -1310,
     1626     475,   860,   810,   276,   913,   766,   767,   793,   832,    41,
     1627   -1310, -1310,   807,   704, -1310,   331, -1310, -1310,  2607, -1310,
     1628   -1310,   242,   835, -1310,   421,   835,   841,    87, -1310, -1310,
     1629     846,  8923, -1310,   847,   857,  8892, -1310, -1310,  1352,  2069,
     1630    8155,  6748,   904, -1310,   904,  1729,  1729, -1310, -1310, -1310,
     1631   -1310, -1310, -1310,  1729,  8923,  1337, -1310, -1310,  9419,  1457,
     1632   -1310,  7886, -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,
     1633   10098, 10288, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1634   -1310, -1310, -1310, -1310, -1310, -1310,  1053, -1310,   928,   862,
     1635     891,   893,  1023,   916,   937,   951,  3015, -1310, -1310,   942,
     1636     149,   958, -1310, -1310,   970, -1310, -1310, -1310,  9125, -1310,
     1637   -1310, -1310, -1310, -1310,  3541, -1310,  8666,  8666, -1310,  1729,
     1638    1053,  6867,  1337,  8228, -1310, -1310, -1310, -1310,  9125,    10,
     1639   -1310, -1310,   904,   144, -1310, -1310,  9125, -1310,  6513, -1310,
     1640   -1310,  1729,  1729,   382,  5342,   969,   972,   960,  1031,  1729,
     1641   -1310, -1310, -1310, -1310,  9605, -1310,   450,  6629, -1310,   144,
     1642    1033, -1310,  1053, 10565, 10155, -1310, -1310, -1310, -1310,  1039,
     1643    3541, -1310,  8301,   664,  7432, -1310, -1310, -1310,   984,   626,
     1644     807,   941, 10741,   606,  9043, -1310, 10741, -1310, -1310, -1310,
     1645   -1310,   690, -1310,  1044,   772,   255,  8440, -1310,  9457, -1310,
     1646   -1310,  8440, -1310,  8553,  8440, -1310, -1310,  1042, -1310,   722,
     1647    1047,   818,  1048, -1310, -1310,  9310,  6479, -1310,   321, -1310,
     1648   -1310,  5116, -1310,   602,  5116, -1310, -1310, -1310, -1310, -1310,
     1649   -1310, -1310, -1310, -1310, -1310, -1310,  5116, -1310, -1310, 10288,
     1650   10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,
     1651   10288, 10288, 10288, 10288, 10288, 10288, 10288,  2426,  5116, -1310,
     1652     704,   830, -1310, -1310,   101,   101, -1310, -1310,  8666, -1310,
     1653   -1310,   970,   567, -1310,   970, 10212, -1310, -1310, -1310,  4524,
     1654    6479,  1049,  1054, -1310,  9381, -1310, -1310,   561, -1310,  1056,
     1655     774,  1073,  2515,    95,   807, -1310,   101,   101,   807,    98,
     1656   -1310,   101,   101,   970, -1310, -1310,   101,   101, -1310,   835,
     1657    9490,  1337, 10710,   283,   326,  9490, -1310,  4167, -1310,   807,
     1658   -1310,  8923, -1310,    80,  7852,  7852,  7852,  1337, -1310,  4787,
     1659    1065,   875,   744,  1066,  1067, -1310,  1070,  4633,   333, -1310,
     1660    1134,  1337,  7852,   567,  1053,   567,   664,   494,   835, -1310,
     1661   -1310,   584,   835, -1310, -1310, -1310,   772, -1310,   835,   144,
     1662    9605, -1310,   737,  1083,   750,  1090, -1310,  1089,   144, -1310,
     1663   -1310,  9125,   144,  1088,  9457,  1092, -1310,  1677, -1310,   441,
     1664     448,   941, -1310,   941,  1091, 10288, -1310,   941, 10710, -1310,
     1665   -1310,  1098, -1310, -1310, -1310,   567, -1310, 10638,   857, -1310,
     1666    7852,   853,  8155, -1310, -1310,   561,  1095,  1097,   984,  3316,
     1667   -1310, -1310, 10741, -1310, -1310,  1099, -1310, -1310,  1105, -1310,
     1668    1099,  1111, 10483,  5116,    62,  1102,   167,  1113,  1121,  1129,
     1669    1130, -1310,  1131,  1132,  9348,  6598, -1310,  5116, -1310,   818,
     1670     978, -1310, -1310, -1310,   101,   101,  5540,  5116,  1135, -1310,
     1671   -1310,   757, -1310,  5116, -1310, -1310,   914, -1310, -1310, -1310,
     1672   -1310,   475,   475,   860,   860,   810,   810,   810,   810,   276,
     1673     276,   913,   766,   767,   793,   832, 10288,   282, -1310,  9605,
     1674    1136,  1137,  1140,   830, -1310, -1310, -1310, -1310, -1310,  9605,
     1675     779,  7852, -1310,  8923, -1310,  6955,  9005, -1310,  7886,  6836,
     1676   -1310, -1310,   774,  9605,  1063,  1142,  1143,  1145,  1146,  1147,
     1677    1148,  1154, -1310,  3759,  2515, -1310, -1310, -1310, -1310, -1310,
     1678   -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1679   -1310, -1310,   970, -1310, -1310, -1310,   807, -1310, -1310, -1310,
     1680   -1310, -1310, -1310, -1310, -1310,  1156, -1310,  1159,  1160, -1310,
     1681   -1310,   149,  1135,  4787, -1310, -1310, -1310, 10098,  1157, -1310,
     1682   -1310, -1310, -1310,   941,  6225,  1247, -1310, -1310, -1310, -1310,
     1683    1150,   149, -1310, -1310,   970, -1310, -1310,   970,   137,   970,
     1684   -1310, -1310, -1310, -1310, -1310, -1310,  9272, -1310,   144, -1310,
     1685   -1310,   451,   452,  9419,  7074,  2178, 10288,  3429, -1310, -1310,
     1686    1149,    39,  1149, -1310,   941, -1310,   101, -1310, -1310,  8073,
     1687     960, -1310, -1310, -1310,   972,  1168,  1169, -1310, -1310,  1170,
     1688    1172, -1310,   853,  1305, -1310,   359, -1310,  3316,   807, -1310,
     1689    1177, 10741,  9528,  8666,  1180, -1310, -1310,  1175,  1182,  1164,
     1690   -1310, 10288,    56,   233,  1179, -1310,  1183,   567,  1183, -1310,
     1691   -1310,  1183,  1184, -1310,  1189,  1190,  1192,   978, -1310, -1310,
     1692   -1310, 10098, -1310, -1310, -1310, -1310,  1188,  5116,  1193,   567,
     1693   -1310,  5116, -1310,   567, -1310, -1310,  5116, -1310,   595,   835,
     1694   -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,   857,  8892,
     1695   -1310, -1310,  7193,  1196, -1310,   622,   835, -1310,   644,   649,
     1696     835, -1310,  1729,  4053, -1310, -1310, -1310,  9605,  9605, -1310,
     1697    8228,  8228, -1310,  1194,  1195,  1198,  1199, -1310,  1200,   531,
     1698      27,  1135, -1310,   567, -1310,  4633, -1310,  5116,   453, -1310,
     1699    6359,  1213,  1217, 10041,  1222,  1223,    43,    49,   106,  5116,
     1700    1228,   144,  5116,  5116,  1208,  1237,   142,  1218, -1310, -1310,
     1701   -1310,  1236, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1702   -1310,   941,  1249,  5116, -1310,  9605,  9605,   101,  1252, -1310,
     1703    8810, -1310, -1310,   987, -1310,  3429, -1310, -1310, -1310, -1310,
     1704    1677, -1310, -1310,  1253, -1310, -1310, -1310, -1310,  1254,  1305,
     1705   -1310, -1310,  1239, -1310,  1099, -1310, -1310,  1053,  1258, -1310,
     1706   -1310, -1310,   806,  1262, -1310,   167,  1267, 10288,  1248,   167,
     1707     167,  1273,  9310,   693,   835, -1310, -1310,  1070,  5116,  1274,
     1708    1188,   208,   157,  1269, -1310, -1310,  1278,  1269, -1310, -1310,
     1709    1282, -1310, -1310,   970,  1286,  1288,  6717,  1287,  1289,  1291,
     1710   -1310, -1310,  1290, -1310, -1310,   970, -1310, -1310, -1310, -1310,
     1711     970,  5116,  5116,   857,  1292, -1310, -1310, -1310, -1310, -1310,
     1712   -1310, -1310, -1310, -1310, -1310, -1310, -1310, 10288, 10288,  1294,
     1713    1295,  1269, -1310, -1310,   941, -1310, -1310, -1310,  5073,  9528,
     1714    5116,  5116,  1370,  5116, -1310,  1298, -1310,  1299, -1310,  1302,
     1715    5116,  1306,  5116,  1123,  1307,    30,   101,  5821,  1435, -1310,
     1716   -1310,  6225,  1303,   456, -1310, -1310, -1310, -1310, -1310, -1310,
     1717   -1310, -1310, -1310,  9861, -1310,  8301,  1330, -1310, -1310,  9528,
     1718     463,   481, -1310,  1328,  1314,   772,  1341, -1310,   306, -1310,
     1719   -1310, -1310, -1310,   970,  1332, -1310, -1310,  1342,   753,   834,
     1720     567,  1345, -1310,  1350, -1310,  9605, -1310, -1310, -1310, -1310,
     1721   -1310,  1351, -1310,  9605,  9605,  9605, -1310, -1310,  1359, -1310,
     1722    1362,  1365,  1366,   557,  7925,  8040, -1310, -1310,   420, -1310,
     1723    1368,  1371, -1310,  8374,   815,   844,  1346,   866,  6094, -1310,
     1724   -1310, -1310,   485, -1310,   888,  1369,  1375,   144,  1417,  1051,
     1725   -1310, -1310,  5116, -1310, 10041,  5116, -1310, -1310, -1310,  1377,
     1726    1379, -1310, -1310, -1310,  1376, -1310, -1310, -1310, -1310, -1310,
     1727   -1310,  9528,   772,   195, -1310,  1353,   772,  9605, -1310, -1310,
     1728   -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
     1729   -1310, -1310,  1384,  1388, -1310, -1310, -1310, -1310, -1310, -1310,
     1730   -1310,  1394, -1310,  1397, -1310, -1310, 10041,   217,  5116, 10041,
     1731   -1310,  1400,  5116, -1310,   289,  1421,  1423, -1310, -1310,  1403,
     1732    1415,  1393, -1310,  1001, -1310, -1310, -1310,  1337,  1053,  1412,
     1733     799,   323, 10288, -1310,   953, -1310,   567,   567,  1418,  1425,
     1734    1426,  1428, -1310, -1310,  8228,  1427, -1310,  1497, 10288,  1420,
     1735   -1310, -1310,  9953, -1310,   955, -1310,  1419, 10041,  1424, -1310,
     1736   -1310,  1442, -1310,  1445, -1310,  1461,  1462, -1310,  1430,  9528,
     1737   -1310, -1310, -1310,   772,   567,  1453,  1436,  1459,  1269,  1269,
     1738   -1310, -1310, -1310, -1310, -1310, 10041,   204, -1310,   370, -1310,
     1739   -1310,  3684, -1310, -1310,  1439,  5116, -1310,  5116,  3684,   144,
     1740    9457,   144,  9457,  1463, -1310,  1465, -1310, -1310,  1464,   799,
     1741   -1310,   968, -1310, -1310, -1310,  1460,  1466, -1310, 10288, 10288,
     1742   -1310, -1310,  1075,   122, -1310, -1310,  1444, -1310,  1075, -1310,
     1743   -1310,  2191,   567, -1310, -1310,   144,  9457,   144,  9457,  1472,
     1744    1450,   567, -1310, -1310, -1310, -1310,  9953,  1469,  1075,  7664,
     1745    5116,  9865,  1470,  1075,  1479,  2191,  3509, -1310, -1310, -1310,
     1746    1482, -1310, -1310, -1310, -1310,  8666, -1310, -1310, -1310,  9732,
     1747   -1310,  9953, -1310, -1310,  1468,  9644, -1310, -1310,  9865,   144,
     1748    3509,   144,  1484,  1486,   976, -1310,  9732, -1310, -1310, -1310,
     1749    9644, -1310, -1310, -1310,   144,   144, -1310, -1310, -1310, -1310,
     1750   -1310, -1310, -1310, -1310
    17571751};
    17581752
     
    17601754static const yytype_int16 yypgoto[] =
    17611755{
    1762    -1315,  4470,  3041, -1315,    39, -1315,  2507,   957,  -207, -1315,
    1763      461,  -523,  -489,  -955,  -200,  5636,     0, -1315,    72,   572,
    1764      580,   245,   566,   964,   967,   968,   966,   976, -1315,  1601,
    1765     -609,  5067,  -949, -1315,  -712,  -938,   430,  -728,   512, -1315,
    1766     1697, -1315,   311, -1200, -1315, -1315,    43, -1315, -1142, -1154,
    1767      154, -1315, -1315, -1315, -1315,   -26, -1161, -1315, -1315, -1315,
    1768    -1315, -1315, -1315,   231, -1202,    53, -1315,  -908, -1315,   416,
    1769      205, -1315,    78, -1315,  -367, -1315, -1315, -1315,   470,  -824,
    1770    -1315, -1315,    13,  -940,   465,  2639, -1315, -1315, -1315,  -107,
    1771    -1315,   102,   269,  -201,  1635,  4179, -1315, -1315,     5,   449,
    1772      756,  -259,  1489, -1315,  1725, -1315, -1315,    52,  2057, -1315,
    1773     2147,   612, -1315, -1315, -1315,  -616, -1315,   866,   867,   456,
    1774      631,   158, -1315, -1315, -1315,   858,   633,  -514, -1315,  -544,
    1775     -359,  1913, -1315, -1315,  -928,  -991,  1380,  1398,   990,   324,
    1776    -1315,   171,   457,  -332,  -192,  -147,   584,   695, -1315,   919,
    1777    -1315,  2794,  1328,  -442,   850, -1315, -1315,   625, -1315,  -238,
    1778    -1315,   -94, -1315, -1315, -1315, -1246,   330, -1315, -1315, -1315,
    1779     1091, -1315,    35, -1315, -1315,  -834,   -97, -1314,  -130,  1985,
    1780    -1315,  3026, -1315,   844, -1315,  -170,  1212,  -183,  -173,  -167,
    1781        7,   -35,   -34,   -33,   936,    18,    55,    61,  -143,  -159,
    1782     -156,  -153,  -151,  -323,  -535,  -528,  -526,  -542,  -318,  -520,
    1783    -1315, -1315,  -512,  1006,  1009,  1011,  2067,  4895,  -560,  -543,
    1784     -538,  -536,  -484, -1315,  -481,  -740,  -737,  -736,  -586,  -304,
    1785     -339, -1315, -1315,   856,   707,   -88, -1315,  3848,    29,  -599,
    1786     -291
     1756   -1310,  4585,  3220, -1310,  1680, -1310,    79,   965,  -162, -1310,
     1757     542,  -525,  -472,  -928,   -58,  5006,     0, -1310,   115,   571,
     1758     588,   220,   578,  1041,  1045,  1037,  1040,  1043, -1310,   682,
     1759    -568,  4467,  -949, -1310,  -743,   627,  -136,  -680,   399, -1310,
     1760     364, -1310,   400, -1052, -1310, -1310,   143, -1310, -1280, -1058,
     1761     249, -1310, -1310, -1310, -1310,    74, -1199, -1310, -1310, -1310,
     1762   -1310, -1310, -1310,   317, -1213,    36, -1310,  -398, -1310,   501,
     1763     296, -1310,   175, -1310,  -322, -1310, -1310, -1310,   558,  -827,
     1764   -1310, -1310,    14,  -963,    60,  1949, -1310, -1310, -1310,   -66,
     1765   -1310,    19,  1219,  -202,  1852,  4238, -1310, -1310,    54,    75,
     1766     689,  -242,  1416, -1310,  1975, -1310, -1310,   158,  2131, -1310,
     1767    2701,  1038, -1310, -1310, -1310,  -621, -1310,   944,   946,   541,
     1768     713,  -254, -1310, -1310, -1310,   938,   714,  -169, -1310,  -117,
     1769    -134,  1167, -1310, -1310,  -857,  -878,   837,   910,  1055,    25,
     1770   -1310,   900,   597,   -39,  -190,  -145,   668,   773, -1310,   993,
     1771   -1310,  2728,  1561,  -434,   920, -1310, -1310,   708, -1310,  -238,
     1772   -1310,   241, -1310, -1310, -1310, -1226,   414, -1310, -1310, -1310,
     1773    1165, -1310,    35, -1310, -1310,  -830,  -111, -1309,  -151,  3288,
     1774   -1310,  3069, -1310,   921, -1310,  -170,   169,  -182,  -181,  -166,
     1775       7,   -35,   -33,   -32,   813,     2,    29,    44,  -122,  -165,
     1776    -164,  -158,  -153,  -314,  -519,  -491,  -490,  -538,  -301,  -501,
     1777   -1310, -1310,  -512,  1078,  1084,  1085,  2540,  5063,  -571,  -588,
     1778    -558,  -543,  -557, -1310,  -503,  -733,  -723,  -722,  -570,  -311,
     1779    -274, -1310, -1310,   240,   176,   -77, -1310,  3991,   136,  -632,
     1780    -222
    17871781};
    17881782
     
    17901784   positive, shift that token.  If negative, reduce the rule which
    17911785   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1792 #define YYTABLE_NINF -525
     1786#define YYTABLE_NINF -521
    17931787static const yytype_int16 yytable[] =
    17941788{
    1795       49,   114,   453,   399,   428,    69,   953,    98,   150,   151,
    1796      152,   770,   971,   400,   115,   972,   973,   407,   261,   401,
    1797      268,   498,   383,   384,   743,   628,   604,   402,   440,   632,
    1798      403,   609,    49,   404,   848,   405,  1148,    69,  1182,    98,
    1799      755,   596,   831,   148,   408,  1078,  1140,   980,   872,    49,
    1800      726,   670,    77,    50,   731,  1077,   162,   823,   410,   798,
    1801      830,   153,   824,   187,   825,   819,   210,   144,   342,    49,
    1802      194,   679,   820,   217,   821,   505,   227,   924,   167,   683,
    1803      822,  1206,   220,   399,    77,    50,  1192,   928,    31,  1396,
    1804      861,   861,   861,   400,   674,   676,   177,   407,   154,   401,
    1805     1180,  1181,    63,  1460,   155,   425,   114,   402,  1198,   861,
    1806      403,  1215,  1216,   404,   114,   405,    31,   267,   272,   834,
    1807     1210,   863,   864,   714,   408,   841,    31,   281,   566,  -234,
    1808     -234,  1261,   475,   477,    63,   447,    31,  1188,   409,   882,
    1809      203,  1207,    31,   167,  1316,  1208,   177,   307,   148,   177,
    1810      471,   150,   151,   152,   460,   162,   114,   345,   253,  1262,
    1811      411,   210,   730,   567,  1189,   721,  1211,   861,   373,   577,
    1812      971,   123,    31,   972,   973,   578,   327,  1460,   715,  1417,
    1813     1418,   745,   292,   476,   819,   282,   187,   187,   411,  1258,
    1814      204,   820,  1479,   821,   162,   177,   419,   936,   411,   724,
    1815     -234,   142,   267,   527,   153,  1209,   481,   918,   411,   111,
    1816       49,   956,   832,  1317,   601,  1245,   527,   162,   668,  1249,
    1817       41,    42,   210,   111,  1197,   140,   141,   169,   527,   443,
    1818      145,   150,   151,   152,    41,    42,   665,   527,   954,   436,
    1819      307,   154,   839,  1125,   601,  1182,   802,   155,   762,  1419,
    1820      808,   170,    49,   588,   242,   245,  1085,    69,   177,    98,
    1821      272,   861,   868,   666,  1399,   272,   267,   267,  1024,   327,
    1822      117,  1506,   114,   823,   162,   862,   862,   862,   824,  1464,
    1823      825,   819,  1150,   342,   609,   999,  1023,   463,   820,  1088,
    1824      821,  1002,   857,  1490,   862,   307,  1011,   735,  1182,   657,
    1825      476,   436,  1092,   124,    77,    50,  1535,   307,  1537,    77,
    1826      665,   471,   177,   835,  1341,   903,   596,   838,   160,   177,
    1827     1189,   596,   568,   571,  1548,  1417,  1418,   672,   148,  1212,
    1828     1101,   471,   377,   677,   834,   373,   167,   666,   855,   471,
    1829     1519,   114,   858,   143,  1559,   345,  1524,  1124,   378,   602,
    1830      620,  1563,   862,    31,    63,   556,   557,   510,   111,   472,
    1831     1180,  1181,  1198,  1549,   625,   527,   147,  1544,   625,    41,
    1832       42,   114,  1551,   111,   598,   259,   156,  1464,   831,   547,
    1833      548,   178,  1464,   160,    41,    42,   172,   177,  1078,   714,
    1834     1564,   558,   559,   736,   823,  1428,   267,   768,  1077,   824,
    1835      737,   825,  1464,  1126,   177,   684,   187,  -122,   177,  1464,
    1836     1127,   578,  1346,   373,  1403,   457,   323,   547,   182,  -122,
    1837     -122,   848,  1182,   202,   267,   339,   307,   307,  -122,   387,
    1838      267,   262,   390,   625,   263,  -122,   392,   342,     8,     9,
    1839       10,    11,    12,  -290,   715,   388,   862,   111,   391,    70,
    1840     1449,  1450,   393,   547,   114,   327,   327,   549,    41,    42,
    1841      893,   394,  1339,   550,   551,    56,   116,    31,  1004,  1340,
    1842       77,   177,   267,   808,   498,   430,   919,   395,  1379,   434,
    1843      267,    70,   625,   921,    49,  1455,  1348,   373,   720,    69,
    1844       77,    98,   920,  1136,   114,    34,   919,    56,    77,   922,
    1845     1146,   873,   248,   921,  1112,  1022,   307,   251,   114,   323,
    1846      609,   307,  1089,   307,   307,   213,  1247,  -520,   915,  1090,
    1847      472,   753,  1198,   327,   851,   114,   345,   886,   852,  1198,
    1848      957,   211,  1168,  1170,   221,   253,    77,    50,  1257,  1195,
    1849      472,   434,   327,   439,   488,   917,   264,  1024,   472,   330,
    1850      714,   645,  1195,  1330,   111,  1196,   140,   239,   884,  1027,
    1851      331,   287,   808,   -10,   521,    41,    42,  1332,  1322,  1331,
    1852      571,   571,    41,    42,  1377,   471,   160,  -443,   307,  1290,
    1853     1291,   853,  1198,  1333,   712,   854,    63,   750,   853,   625,
    1854      345,   240,  1108,  -469,   620,   810,   241,   483,   514,  -444,
    1855      602,   933,   602,  1380,   500,   715,   570,   327,   411,   277,
    1856      587,   874,  1136,   279,   593,    45,    46,   918,   280,  1022,
    1857      625,   772,   773,   774,  -469,   625,  -469,   620,   177,   332,
    1858     -469,   625,   333,   626,   625,   625,   625,   630,  1496,  -105,
    1859      339,   371,   875,  -105,   643,  1496,   111,   334,   876,   849,
    1860      705,  1427,  1109,   625,   598,   267,   706,    41,    42,   342,
    1861      177,   722,   725,   111,   729,   140,   141,   723,   493,  1179,
    1862      494,   442,   178,  1035,    41,    42,   177,   335,   215,     2,
    1863      207,     4,     5,     6,     7,   114,   732,   441,   912,   629,
    1864      372,   177,   733,   633,  1082,   323,   323,   579,  1545,   411,
    1865      727,    70,  1365,   596,   376,   728,  1366,   107,   107,   749,
    1866     1120,   625,   938,   620,   389,   750,   897,    56,   385,   720,
    1867      720,   397,   750,   688,  1042,   519,   899,   399,   409,   988,
    1868      215,   582,   750,   411,    77,   989,   117,   400,  1498,   107,
    1869     1499,   426,   407,   401,    35,   427,    36,   114,   345,  1001,
    1870     1243,   402,   753,   753,   403,   706,   578,   404,   432,   405,
    1871       77,   488,  1373,   323,  -122,   488,  -122,   450,   750,   408,
    1872     -122,  -367,   177,   215,  -396,   521,   107,   521,   253,   329,
    1873      521,  1374,   323,   521,   472,  -122,  -122,   750,   971,   504,
    1874     1444,   972,   973,   808,   339,  1546,  1390,   571,   714,   213,
    1875     1376,   779,   780,   781,   782,   625,   750,   625,  1457,  1007,
    1876      472,   461,   625,   345,   869,   752,   602,   411,   810,  1172,
    1877      342,  1381,   484,  1445,    45,    46,   230,   750,   602,  1442,
    1878      231,   979,  1465,   235,   215,   237,   462,    37,   750,   175,
    1879      176,    40,   246,   111,   292,   140,   141,   323,    41,    42,
    1880      712,   552,   553,   715,    41,    42,   673,   675,   806,   111,
    1881      508,   140,   141,   923,   130,   925,   131,   132,   133,   457,
    1882       41,    42,   215,   513,   372,    41,    42,   215,   937,   307,
    1883      601,  1517,  1457,   527,    69,   244,  1512,    45,    46,   847,
    1884      525,   887,  1513,   411,   593,    37,  1193,   175,   176,    40,
    1885      856,   625,   253,   329,   411,   164,    41,    42,   114,   345,
    1886      912,   890,   912,   411,   562,    37,   957,   175,   176,    40,
    1887      957,   957,   213,   665,   114,   563,    41,    42,   915,  1368,
    1888      565,    77,   715,    70,   554,   555,   519,   938,   938,   564,
    1889      177,   519,   720,   568,   519,   850,   338,   114,   307,    56,
    1890      666,  1152,   376,   411,   688,   917,  -440,    48,   113,   107,
    1891     1113,   865,   215,   738,   345,   739,   589,  1569,   740,   230,
    1892      164,   746,   586,   578,   753,   658,   881,   327,   419,   661,
    1893      411,    63,   560,   561,    37,   163,   113,   113,    40,    48,
    1894       -3,  1164,   488,   411,   659,    41,    42,   791,   638,   195,
    1895       48,  1167,   218,   601,   660,   228,    48,   345,   481,   329,
    1896      411,   712,   662,    37,    48,   663,   339,    40,  1238,   664,
    1897       48,    43,  1531,    48,    41,    42,    48,   667,   625,   625,
    1898       45,    46,   832,   329,   601,  1169,   849,   601,   258,  1337,
    1899      113,   113,   645,   215,  1309,  1310,  1311,   669,   307,  1047,
    1900      816,   693,   601,  1200,   528,   529,   530,   500,   694,    45,
    1901       46,  1347,  1349,  1350,    48,   696,   435,    48,  1254,   698,
    1902      411,   442,  1136,  1095,    48,  1095,  1003,  -238,   531,   547,
    1903      532,   806,   533,   534,   163,   215,   992,   989,   114,   734,
    1904     1097,   750,   994,   912,   329,   411,   -12,   374,   912,   747,
    1905       77,  1386,  1387,  1437,   989,    48,   751,   938,   230,   759,
    1906      235,  1442,  1443,    48,   811,   267,  1491,  1492,    48,   812,
    1907      510,  1417,  1418,   163,   775,   776,   783,   784,   435,  1397,
    1908      342,   815,   625,  1397,   777,   778,   826,     2,   207,     4,
    1909        5,     6,     7,    48,    48,   -13,   163,   870,   213,   645,
    1910      472,   523,   871,   878,   528,   529,   530,   345,   444,    48,
    1911      898,   900,   213,   164,   901,   908,   955,    48,   905,  -417,
    1912      806,   926,  -524,   941,   950,   948,    48,   339,   531,    48,
    1913      532,   723,   533,  1319,   961,   963,   113,   962,   966,   965,
    1914      967,   107,   968,   688,   996,   984,   997,   998,   230,   272,
    1915      114,   113,    35,  1013,    36,   113,   215,  1014,  1015,    48,
    1916      113,  1016,    97,   220,  1017,   488,  1115,   323,   114,  1018,
    1917     1019,  1030,   307,    48,    48,  -405,  -404,    69,  1044,  1079,
    1918       48,  1081,  1102,  1103,   215,  1480,   625,    48,   911,   215,
    1919      114,  1104,  1105,   750,    97,  1111,  1121,  1122,  1123,  1217,
    1920     1047,  1132,  1141,  1113,  1128,   149,   978,   177,   213,   712,
    1921     1133,    97,  1134,  1135,   374,    -3,     2,   207,     4,     5,
    1922        6,     7,  1138,  1162,    77,   190,   847,  1183,    97,  1185,
    1923     1184,    97,  1186,  1187,  1201,    48,  1202,  1204,   625,   625,
    1924     1205,  1213,  1218,  1225,  1220,   229,  1230,   272,  1440,    -3,
    1925     1557,  1235,   307,  1233,    37,    48,    48,  1200,    40,  1239,
    1926      692,   215,  1244,  1246,   493,    41,    42,     8,     9,    10,
    1927       11,    12,    48,  1251,    63,   215,    48,  1248,    70,  1259,
    1928     1252,    35,  1263,    36,  1266,   114,  1268,   644,   712,  1270,
    1929     1271,   719,   374,  1272,    56,   399,    31,  1273,  1113,  1274,
    1930       45,    46,  1276,    48,    77,   400,  1283,   688,  1292,   407,
    1931       97,   401,   523,    48,   523,  1293,  1296,   523,  1300,   402,
    1932      523,  1303,   403,    97,    34,   404,  1321,   405,  1328,  1304,
    1933     1305,    48,  1307,   665,  1315,  1334,   408,    48,  1336,    48,
    1934     1338,  1066,  1344,  1342,   216,   267,  1345,  1351,   398,   190,
    1935     1352,   806,  1353,  1355,   472,  1361,  1530,  1362,  1363,  1364,
    1936      666,   243,  1114,   625,  1371,  1372,   570,  1375,   411,  1382,
    1937     1383,   215,    97,  1311,   113,    45,    46,  1391,  1392,    48,
    1938     1393,  1403,  1400,   177,    97,  1411,  1412,    48,   114,  -406,
    1939     1430,    48,  1415,  1426,  1432,    48,   216,  -291,   113,  1434,
    1940      113,  1113,  1435,  1441,     8,     9,    10,    11,    12,   442,
    1941     1451,  1446,   114,  1436,    97,  1452,  1453,  1200,  1454,   114,
    1942      644,   114,  1456,   114,  1200,  1366,  1470,  1461,   479,  1466,
    1943     1472,  1474,  1476,    31,  1468,   113,  1478,   339,   644,   216,
    1944      113,   644,  1483,   150,   151,   152,  1484,    70,  1485,  1486,
    1945     1497,  1507,  1509,  1529,  1523,  1511,  1515,  1516,   114,  1115,
    1946      114,    34,  1538,    56,    77,  1539,  1543,  1550,  1552,  1554,
    1947     1560,    77,   114,  1567,  1568,  1219,   785,  1200,  1529,  1529,
    1948      786,   788,   787,  1320,  1518,  1429,   162,  1570,   307,   113,
    1949       97,   692,   789,  1385,  1250,  1401,    48,  1500,  1096,  1224,
    1950      216,   906,   907,  1529,  1232,   214,   929,    48,  1100,    48,
    1951      373,   603,  1137,  1203,   472,   233,  1043,   327,   877,  1110,
    1952     1329,   472,   804,   943,    77,   717,   794,   951,    48,   795,
    1953       37,   796,   184,   185,    40,     0,   107,     0,   216,     0,
    1954        0,    41,    42,   216,    48,     0,     0,     0,     0,     0,
    1955      113,     0,     0,     0,  1115,     0,     0,   214,     0,    48,
    1956        0,   113,    48,   113,     0,     0,     0,   910,   190,   411,
    1957        0,     0,   215,     0,   472,   911,    45,    46,     0,     0,
    1958        0,  1298,  1299,     0,  1301,    66,   118,     0,     0,     0,
    1959        0,  1306,     0,  1308,     0,    48,     0,     0,   213,   113,
    1960      214,   113,     0,     0,   107,   113,     0,     8,     9,    10,
    1961       11,    12,     0,   113,   211,   221,     0,    66,     0,     0,
    1962        0,    70,  -292,     0,     0,     0,    48,    48,   216,     8,
    1963        9,    10,    11,    12,   161,     0,    31,    56,     0,     0,
    1964       48,    37,     0,   184,   185,    40,    97,     0,     0,     0,
    1965      603,     0,    41,    42,   222,  1114,     0,  1115,    31,     0,
    1966        0,   214,     0,     0,    34,     0,     0,     0,  1439,    37,
    1967        0,   184,   185,    40,     0,    75,     0,     0,   186,     0,
    1968       41,    42,     0,     0,  1066,     0,    34,    45,    46,     0,
    1969     1503,   260,  1503,     0,     0,     0,   442,     0,     0,   214,
    1970        0,    70,   174,     0,   214,   107,   600,    75,   601,   216,
    1971        0,     0,   441,     0,     0,    45,    46,    56,     0,   499,
    1972        0,     0,     0,    48,     0,     0,     0,  1503,     0,  1503,
    1973      692,     0,     0,   328,     0,    48,    37,     0,   184,   185,
    1974       40,   260,   350,     0,   223,   254,     0,    41,    42,     0,
    1975     1114,   216,     0,     0,     0,  1423,     0,   323,     0,     0,
    1976     -293,   215,   818,     0,   603,     0,     0,     8,     9,    10,
    1977       11,    12,   406,   600,     0,   601,     0,     0,   644,     0,
    1978     1389,     0,    45,    46,     0,   113,     0,   424,     0,   214,
    1979      429,   431,     0,     0,   703,   161,    31,     0,     0,    37,
    1980        0,   184,   185,    40,     0,     0,     0,     0,    48,     0,
    1981       41,    42,   704,     0,     0,     0,   448,    48,     0,    48,
    1982      451,     0,   452,     0,    34,     0,   113,     0,     0,     0,
    1983        0,   459,   353,     0,     0,  1416,   266,    66,  1424,     0,
    1984        0,   417,   473,     0,     0,    45,    46,     0,     0,    48,
    1985      916,     0,   480,  1114,     0,     0,     0,   107,     0,   215,
    1986      431,    70,     0,     0,   437,     0,     0,     0,    70,   113,
    1987      214,     0,   216,     0,   445,     0,     0,    56,     0,   107,
    1988        0,   818,   603,  1463,    56,   644,     0,   214,  1467,     0,
    1989        0,     0,     0,   113,   692,     0,   644,   107,   113,     0,
    1990      216,     0,     0,     0,     0,   216,   449,     0,     0,     0,
    1991        0,     0,   214,     0,     0,     0,     0,     0,  1489,     0,
    1992        0,    70,     0,     0,     0,     0,   260,    75,     0,     0,
    1993      594,     0,    75,     0,     0,     0,   622,    56,     0,     0,
    1994        0,     0,   520,     0,     0,     0,     0,     0,   113,   627,
    1995        0,     0,     0,   627,     0,     0,   260,     0,     0,   107,
    1996        0,   125,   128,   129,     0,     0,     0,     0,     0,    37,
    1997        0,   184,   185,    40,     0,     0,     0,   216,   818,     0,
    1998       41,    42,     0,     0,     0,     0,   113,     0,     0,     0,
    1999      603,   216,   107,     0,     0,     0,     0,     0,     0,     0,
    2000       48,   703,     0,   473,  1558,    48,   910,    78,   411,     0,
    2001     1558,     0,     0,     0,     0,    45,    46,     0,   350,   704,
    2002        0,  1558,    48,   473,     0,  1558,   223,     0,     0,     0,
    2003        0,   473,     0,   214,   255,     0,   256,     0,     0,    78,
    2004        0,     8,     9,    10,    11,    12,     0,     0,     0,   699,
    2005        0,     0,   431,     0,     0,     0,     0,     0,     0,     0,
    2006        0,   214,     0,     0,     0,     0,   214,   713,     0,    66,
    2007       31,     0,  1091,     0,   916,     0,   224,   431,     0,     0,
    2008        0,   431,     0,     0,     0,     0,     0,   216,     0,     0,
    2009      681,     0,     0,    75,     0,   107,     0,    80,    34,     0,
    2010        0,     0,   113,    37,   603,   184,   185,    40,   353,     0,
    2011      260,   350,     0,    75,    41,    42,   707,   396,     0,   107,
    2012        0,    75,     0,   703,     0,    48,   107,   415,   416,    80,
    2013        0,     0,   420,   703,   422,   423,     0,     0,   214,   353,
    2014      910,   704,   411,     0,     0,     0,     0,   703,     0,    45,
    2015       46,   704,   214,   520,     0,     0,   797,   353,   520,    75,
    2016        0,   520,     0,     0,   355,   704,   225,     0,   113,   113,
    2017      113,     0,   499,     0,   627,   809,     0,     0,     0,   107,
    2018        0,     0,     8,     9,    10,    11,    12,   828,     0,     0,
     1789      49,   114,   453,   428,   399,   400,   268,    98,   150,   766,
     1790     151,   152,   819,   973,   868,   115,   964,   407,   752,    63,
     1791     401,   402,   403,   358,   383,   384,   965,   966,   404,   261,
     1792     440,   827,    49,   405,   596,   604,    50,   410,   498,    98,
     1793     357,   740,   820,   148,  1070,   153,   830,  1069,   609,    49,
     1794     844,    63,   837,   948,    69,  1137,   162,   821,   725,   794,
     1795      56,   116,   730,   187,   826,   408,   210,   144,    50,    49,
     1796     194,   919,   154,   217,   409,    70,   227,  1187,    31,   342,
     1797     112,   815,   178,   220,   399,   400,    69,   155,   281,  1439,
     1798     628,   425,    56,  1302,   632,  1379,   669,   407,   123,   818,
     1799     401,   402,   403,  1204,  1205,  1181,   114,    70,   404,   816,
     1800     817,   475,   477,   405,   114,  1195,   678,   267,   272,   476,
     1801     505,  1197,  1443,  1177,   682,    31,   211,   923,    31,   221,
     1802     203,   124,   262,    31,    31,   263,   566,    31,   527,   493,
     1803      31,   213,   494,  1171,   527,   408,   282,   307,   148,  1178,
     1804     411,   150,   145,   151,   152,   162,   114,   345,    77,   519,
     1805    1439,   210,  1303,  1169,  1170,  1117,  -231,  -231,   373,    97,
     1806     567,   714,   964,   143,   720,  1196,   107,   107,  1199,  1245,
     1807     204,  1198,   965,   966,   913,   167,   187,   187,   153,   476,
     1808      77,   471,   949,  1458,   162,   253,   147,   411,   419,   815,
     1809     411,    97,   267,   481,   828,   411,   601,   835,   107,   601,
     1810      49,   568,   149,  1186,   287,   154,  1443,   162,    97,   527,
     1811     667,  1443,   210,  1200,   819,    41,    42,   816,   817,   443,
     1812     155,   150,   190,   151,   152,    97,   664,  -231,    97,  1484,
     1813     307,  1443,  1248,  1139,   439,   107,   156,  1077,  1443,   292,
     1814     167,   514,    49,  1016,   820,   182,   169,   830,   172,    98,
     1815     272,  1398,  1399,   202,   588,   272,   267,   267,   723,   821,
     1816    1249,    63,   114,  1512,   162,  1514,   472,   527,   951,  1080,
     1817     170,   991,   441,   327,   665,   656,  1015,   463,    50,   164,
     1818     672,   674,  1093,   815,   342,   307,  -287,   442,   483,   358,
     1819    1468,   609,  1526,   248,  1382,   500,    69,   307,   251,   596,
     1820     664,  1003,    56,   671,   596,   804,   357,    97,  -119,   676,
     1821    -119,   816,   817,   571,  -119,  1187,  1178,    70,   148,  1541,
     1822      97,  1400,   465,  1398,  1399,   373,  -516,   527,  1084,  -119,
     1823    -119,   114,   734,  1118,   819,   345,   436,  1171,   713,   602,
     1824     620,   579,   471,   411,   164,   398,   190,   853,   665,   898,
     1825     253,   377,   827,  1119,   625,   735,   556,   557,   625,  1201,
     1826     519,   114,   471,   178,   820,   519,   327,   378,   519,    97,
     1827     471,  1070,   831,  1116,  1069,   736,   834,   673,   675,   821,
     1828     629,    97,   358,   111,   633,   847,   267,  1171,   747,   848,
     1829     510,   558,   559,  1409,    41,    42,   187,   851,   436,   357,
     1830      77,   854,   986,   373,  1496,    77,  1325,  1169,  1170,   174,
     1831    1501,    97,   547,   548,   267,   213,   307,   307,   107,   844,
     1832     267,   787,   759,   625,   714,   479,  1326,   472,   849,  1423,
     1833    1521,   577,   850,   167,   870,  1528,   642,   578,   342,  1525,
     1834     435,  1157,  1159,  1424,   114,   729,   358,   472,  1428,  1429,
     1835     547,  1362,   254,   871,  1126,   472,   859,   860,   264,  1536,
     1836     447,   849,   267,   357,   742,  1100,  1540,   387,  1187,   330,
     1837     267,   598,   625,   877,    49,  1187,  1469,   373,   719,   460,
     1838     498,    98,   683,   388,   114,  1244,   547,    97,   578,   390,
     1839    1470,   711,   869,    63,   888,   881,   307,  1104,   114,  1135,
     1840    1014,   307,   435,   307,   307,   391,  1171,   910,   603,   -10,
     1841      50,   750,  -440,   609,   392,   114,   345,  -441,  1016,   996,
     1842     582,  -467,   411,  -467,   804,   523,  1187,  1434,    69,   798,
     1843     393,   931,   277,   879,    56,   394,   112,   164,   213,  1236,
     1844    -467,     2,   207,     4,     5,     6,     7,   914,   417,    70,
     1845     704,   395,   327,   327,   916,   912,   705,   914,   916,  1184,
     1846     571,   571,  1184,   915,   952,   190,    77,   279,   307,  1316,
     1847     917,   437,  1126,  1081,  1082,  1185,   280,   913,  1308,   625,
     1848     345,   445,   549,   714,   620,  1317,    77,  1318,   550,   551,
     1849     602,   747,   602,   882,    77,   411,   331,   760,  1360,  1276,
     1850    1277,   713,   765,  1319,  1474,   471,    35,  1363,    36,   332,
     1851     625,  1474,   804,  1014,  1019,   625,   111,   620,   140,   239,
     1852     327,   625,   994,   333,   625,   625,   625,    41,    42,   111,
     1853     334,   928,    77,  -102,   806,   335,   846,  -102,   371,   327,
     1854      41,    42,   625,    97,   267,   372,  1087,   603,  1087,   520,
     1855     107,   465,   861,   240,   768,   769,   770,   342,   241,  1348,
     1856     376,  1027,  1522,  1349,   111,   358,   876,   385,   111,    -3,
     1857     140,   141,  1408,   389,   114,    41,    42,   907,   596,    41,
     1858      42,  1074,   357,   885,   691,   411,   111,   442,   140,   141,
     1859     472,   528,   529,   530,  1141,  1112,   411,    41,    42,   397,
     1860     625,   933,   620,   764,   327,   726,  1101,  1234,   719,   719,
     1861     727,  1238,  1034,   399,   400,   531,   472,   532,   409,   533,
     1862     534,  1153,   878,   411,   880,   432,   721,   407,   244,   401,
     1863     402,   403,   722,   426,   114,   345,   523,   404,   523,   750,
     1864     750,   523,   405,  1156,   523,   601,   845,   500,  1158,   230,
     1865     601,   598,   427,   231,   711,  1476,   235,  1477,   237,   814,
     1866     713,   603,   964,   213,   450,   246,   775,   776,   777,   778,
     1867    1373,  -288,   965,   966,   927,   408,  -364,   213,     8,     9,
     1868      10,    11,    12,   571,     2,   207,     4,     5,     6,     7,
     1869     731,   625,  1241,   625,   411,   999,   732,   680,   625,   345,
     1870    1161,  -393,   602,   570,  1425,   411,   111,    31,   140,   141,
     1871    1523,    45,    46,   229,   602,   111,   342,    41,    42,   484,
     1872    1436,   461,   746,   706,   462,   714,    41,    42,   747,    77,
     1873       8,     9,    10,    11,    12,    34,    37,   892,   804,   504,
     1874      40,   253,   329,   747,   292,   864,   911,    41,    42,    35,
     1875     894,    36,   163,   806,  1330,    77,   747,   980,   508,    31,
     1876     520,   972,   513,   981,   307,   520,   195,   525,   520,   218,
     1877     213,   527,   228,   812,   562,   601,  1168,   814,   603,   993,
     1878    1182,    45,    46,    63,   563,   705,   625,    34,   554,   555,
     1879    1494,  1436,   230,   114,   345,   907,   111,   907,     2,   207,
     1880       4,     5,     6,     7,   714,   664,  1232,    41,    42,   114,
     1881     910,   564,   578,   711,   691,  1356,   565,   749,    69,   411,
     1882     142,   747,   933,   933,    56,    45,    46,   719,   568,   570,
     1883      37,   411,   114,   307,    40,  1332,   338,    45,    46,    70,
     1884    -437,    41,    42,   952,  1357,   586,  1105,   952,   952,   589,
     1885     747,   163,   932,   665,   601,    48,   113,   750,   912,    -3,
     1886      45,    46,   657,    35,   374,    36,  1359,    43,  1508,   552,
     1887     553,   814,   747,   242,   245,    45,    46,   638,     8,     9,
     1888      10,    11,    12,   603,   113,   113,  1227,    48,  1364,   345,
     1889     163,   658,  1106,   659,   747,   560,   561,    37,    48,   184,
     1890     185,    40,   713,   111,    48,   140,   141,    31,    41,    42,
     1891     625,   625,    48,   163,    41,    42,   661,  1126,    48,   984,
     1892     981,    48,    77,   890,    48,   444,  1121,   253,   329,   411,
     1893     307,   230,   897,   235,   186,    34,   899,   662,   113,   113,
     1894     107,   666,    45,    46,  1284,  1285,    37,  1287,  1132,   472,
     1895      40,   663,  1132,  1426,  1292,  1444,  1294,    41,    42,  1423,
     1896     668,   747,    48,  1323,  1083,    48,   911,   442,  1490,   327,
     1897     114,   258,    48,   692,  1491,   907,  1546,   749,   693,   411,
     1898     907,   695,   578,   718,  1189,    45,    46,   329,   411,   933,
     1899      56,    45,    46,   737,   215,   738,   603,   267,   739,  1369,
     1900    1370,   743,  1132,    48,   547,    70,  1418,   981,   107,  1398,
     1901    1399,    48,   625,   771,   772,    37,    48,   184,   185,    40,
     1902     342,   230,   419,   660,   411,   845,    41,    42,   779,   780,
     1903    1351,   374,   773,   774,   457,   697,   345,  -235,   481,   329,
     1904     411,    48,    48,   733,   744,   510,   215,   748,   756,   691,
     1905    1380,   807,   266,   873,  1380,   711,   808,    48,   811,  -289,
     1906      45,    46,   828,   329,   601,    48,     8,     9,    10,    11,
     1907      12,  1295,  1296,  1297,    48,   822,   867,    48,   272,   114,
     1908    1331,  1333,  1334,   893,   113,   -12,   -13,   866,    77,   215,
     1909     895,   896,   900,   220,   903,    31,   921,   114,  -414,   113,
     1910    -520,   307,   936,   113,   943,   722,   107,    48,   113,   374,
     1911     117,   945,  1404,   956,   130,   625,   131,   132,   133,   114,
     1912      63,    48,    48,    34,   950,    41,    42,   957,    48,   958,
     1913     959,   960,   961,  1105,   711,    48,   988,   989,   211,   221,
     1914     990,   977,  1005,  1006,   911,  1007,  1008,  1009,  1010,   911,
     1915     215,  1459,  1079,   213,  1011,    69,  1022,  1421,   160,  -402,
     1916    -401,    56,  1036,  1058,   625,   625,  1071,  1534,  1094,   906,
     1917     644,  1073,  1096,   272,  1097,  1095,    70,  1103,   307,  1106,
     1918    1113,   747,  1114,    48,  1115,  1120,  1122,   971,   215,  1123,
     1919    1124,   702,  1125,   215,  1128,  1131,  1151,   472,  1174,  1175,
     1920    1172,  1173,  1176,    48,    48,     8,     9,    10,    11,    12,
     1921     691,   114,  1190,   399,   400,   259,  1191,  1132,  1132,  1132,
     1922      48,  1193,  1194,   160,    48,  1105,   407,  1202,  1206,   401,
     1923     402,   403,  1189,   441,    31,   643,  -290,   404,    56,  1207,
     1924    1209,    -3,   405,     8,     9,    10,    11,    12,   442,  1214,
     1925     664,    48,  1219,    70,  1224,   107,   323,   493,  1222,    77,
     1926    1507,    48,    34,  1228,   703,   339,  1233,   922,   267,  1235,
     1927    1237,  1106,    31,  1240,   408,  1250,  1246,   107,   215,    48,
     1928    1252,   724,  1254,   728,   625,    48,  1256,    48,  1257,  1258,
     1929    1262,  1259,  1420,  1260,  1269,   107,  1278,  1279,   665,    37,
     1930      34,   175,   176,    40,   932,  1203,   601,  1286,  1307,   114,
     1931      41,    42,    45,    46,    37,   430,   175,   176,    40,   434,
     1932    1289,  1290,   113,  1105,  1291,    41,    42,    48,  1293,  1301,
     1933    1314,   114,  1192,  1320,  1322,    48,    77,  1328,   114,    48,
     1934     114,  1324,   114,    48,  1329,  1358,   113,  1335,   113,   323,
     1935     472,   372,  1336,  1338,   107,  1132,  1132,   472,   985,   215,
     1936     150,  1344,   151,   152,  1345,  1346,  1347,  1297,  1365,  1106,
     1937    1354,  1506,   214,  1355,  1366,  1383,   114,  1374,   114,  1375,
     1938    1376,   434,   233,   113,   488,  1189,  1392,   107,   113,   114,
     1939    1393,    56,  1189,  1460,  -403,  1506,  1506,   702,    56,  1396,
     1940    1407,   215,  1415,   162,   521,   307,    70,  1411,   472,  1413,
     1941     528,   529,   530,    70,  1416,  1417,   160,  1422,  1430,    37,
     1942    1506,   175,   176,    40,   214,  1431,  1432,   373,  1433,  1435,
     1943      41,    42,   865,  1349,   531,  1029,   532,   113,   533,  1305,
     1944    1440,  1445,  1449,  1189,    48,  1451,  1447,  1453,  1455,    56,
     1945     587,  1509,  1457,  1462,   593,    48,   376,    48,  1463,  1464,
     1946    1517,  1475,  1492,  1485,    70,  1487,  1500,   214,  1493,  1489,
     1947     703,  1515,  1516,   626,  1520,  1527,    48,   630,   922,  1529,
     1948     339,   918,  1531,   920,  1544,   107,  1545,   457,  1208,    77,
     1949    1537,   783,    48,   781,  1130,   784,    77,   113,   782,   785,
     1950    1058,  1306,  1495,  1410,  1547,  1368,    48,   107,   113,    48,
     1951     113,  1239,  1384,  1478,   107,  1088,   702,   216,   901,  1213,
     1952     902,  1221,   215,   922,  1092,   924,   702,   800,   214,  1127,
     1953    1035,   872,   938,  1315,   243,   323,   323,  1102,   790,   716,
     1954     702,   327,    48,   946,   791,   792,   113,    77,   113,     0,
     1955     215,  1367,   113,     0,     0,   215,     0,     0,  1138,     0,
     1956     113,     0,     0,   687,   479,   107,   214,     0,     0,   216,
     1957       0,   214,     0,    48,    48,     0,   117,     0,     0,     0,
     1958    1482,     0,  1482,     0,     0,     0,   499,    48,     0,   703,
     1959       0,     0,     0,  1372,     0,     0,     0,     0,     0,   703,
     1960       0,   488,     0,   323,     0,   488,     0,     0,     0,  1029,
     1961       0,     0,   216,   703,     0,   521,  1482,   521,  1482,     0,
     1962     521,     0,   323,   521,     0,     0,   215,   177,     0,     8,
     1963       9,    10,    11,    12,   339,     0,     0,     0,     0,    37,
     1964     215,   184,   185,    40,     0,  1397,     0,     0,  1405,     0,
     1965      41,    42,     0,     0,     0,     0,   214,   644,    31,     0,
     1966       0,     0,     0,  1039,     0,     0,     0,    48,     0,     0,
     1967       0,     0,     0,   216,     0,     0,   905,   177,   411,    48,
     1968     177,     0,     0,     0,    45,    46,    34,   323,     0,   922,
     1969       0,  1442,     0,     0,     0,     0,  1446,   906,   802,     0,
     1970       0,     0,     0,  1479,  1089,  1483,     0,     0,     0,     0,
     1971       0,   216,     0,     0,     0,     0,   216,     0,     0,     0,
     1972       0,     0,   643,     0,  1467,     0,   177,   891,   113,   843,
     1973       0,     0,     0,   215,   593,     0,     0,   214,     0,  1511,
     1974     852,  1513,    66,   118,   702,   702,     0,     0,     0,   922,
     1975     922,    48,     0,     0,   214,     0,     0,     0,     0,     0,
     1976      48,   644,    48,     0,     0,     0,     0,     0,     0,   113,
     1977       0,     0,     0,     0,    66,     0,     0,     0,     0,   214,
     1978       0,     0,     0,  1542,     0,  1543,     0,     0,     0,   177,
     1979       0,   161,    48,   687,     0,     0,     0,     0,  1550,  1551,
     1980       0,   216,   702,   702,     0,     0,     0,     0,  1535,     0,
     1981       0,   222,   113,     0,  1535,     0,     0,   703,   703,     0,
     1982       0,     0,     0,     0,     0,  1535,   643,     0,     0,  1535,
     1983       0,   488,     0,     0,   113,     0,     0,     0,   113,    57,
     1984      57,     0,     0,   177,     0,     0,   987,     0,   260,     0,
     1985     177,     0,     0,   339,     0,     0,   992,     0,     0,     0,
     1986       0,  1039,     0,     0,     0,    75,     0,     0,     0,     0,
     1987    1004,    57,     0,     0,     0,   703,   703,     0,     0,     0,
     1988       0,     0,   216,     0,     0,     0,     0,     0,   113,     0,
     1989     328,     0,     0,     0,     0,     0,     0,    75,   260,   350,
     1990     214,     0,     0,     0,     0,    57,     0,     0,    57,     0,
     1991       0,     0,   995,     0,     0,     0,     0,   802,   177,     0,
     1992       0,     0,     0,     0,   216,     0,   113,     0,   214,   406,
     1993     215,     0,     0,   214,   223,   177,     0,     0,     0,   177,
     1994      48,     0,     0,     0,   424,    48,     0,   429,   431,     0,
     1995    1312,     0,   161,     0,   922,     0,     0,     0,     0,     0,
     1996       0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
     1997     922,     0,     0,   448,  1282,     0,     0,   451,     0,   452,
     1998       0,     0,   702,     0,     0,     0,     0,     0,   459,     0,
     1999     702,   702,   702,     0,    66,     0,   348,     0,     0,   473,
     2000       0,     0,   177,     0,   214,   802,     0,     0,     0,   480,
     2001       0,     0,   339,     0,     0,     0,     0,   431,   214,     0,
     2002       0,    78,   353,  1313,     0,     0,     0,     0,   687,     0,
     2003       0,    37,     0,   184,   185,    40,     0,     0,   499,   113,
     2004     922,   922,    41,    42,     0,   216,     0,     0,     0,     0,
     2005     488,  1107,   323,    78,   702,   703,     0,     0,     0,     0,
     2006       0,    57,    48,   703,   703,   703,     0,     0,   600,     0,
     2007     601,     0,     0,   216,  1166,  1167,    45,    46,   216,     0,
     2008       0,     0,     0,   260,     0,     0,     0,   594,     0,     0,
     2009     224,    57,     0,   622,     0,     0,   449,     0,     0,     0,
     2010       0,     0,     0,   113,   113,   113,   627,     0,   843,     0,
     2011     627,   214,     0,   260,     0,     0,   215,    75,     0,     0,
     2012       0,     0,    75,     0,     0,     0,     0,   703,     0,     0,
     2013       0,     0,  1216,  1217,     0,     0,     0,     0,     0,     0,
     2014      37,     0,   184,   185,    40,     0,     0,     0,     0,   216,
     2015       0,    41,    42,    37,     0,   184,   185,    40,     0,   177,
     2016     473,     0,     0,   216,    41,    42,     0,     0,     0,     0,
     2017       0,     0,     0,     0,     0,   350,     0,   905,   355,   411,
     2018     473,     0,     0,     0,     0,    45,    46,     0,   473,   687,
     2019    1505,   177,   411,     0,     0,     0,     0,     0,    45,    46,
     2020       0,     0,     0,     0,     0,     0,   698,   177,     0,   431,
     2021       0,   215,     0,     0,     0,     0,   223,     0,     0,     0,
     2022       0,   177,     0,     0,   712,     0,    66,     0,     0,     0,
     2023       0,   802,    48,    48,   431,     0,     0,     0,   431,     0,
     2024       0,   113,   113,   535,   536,   537,   538,   539,   540,   541,
     2025     542,   543,   544,     0,     0,     0,   216,     0,     0,     0,
     2026       0,     0,     0,     0,     0,     0,     0,   260,   350,     0,
     2027       0,     0,   348,    78,     0,     0,     0,   545,    78,   113,
     2028       0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
     2029       0,     0,     0,     0,     0,     0,     0,     0,   353,     0,
     2030       0,     0,   177,    75,     0,     0,     0,     0,   214,     0,
     2031       0,    75,  1337,   793,     0,     0,   339,     0,     0,     0,
     2032    1339,  1340,  1341,    57,     0,     0,     0,     0,     0,   353,
     2033       0,   627,   805,     0,     0,     0,    48,   113,  1107,     0,
     2034       0,     0,     0,     0,   824,     0,   113,   353,     0,    75,
     2035       0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
     2036      48,    48,   594,     0,     0,   348,     0,   594,     0,     0,
     2037       0,     0,   224,   627,     0,     0,   350,   350,   350,     0,
     2038       0,     0,   286,     0,  1385,    48,     0,     0,   287,     0,
     2039       0,   353,   288,     0,   350,   289,   290,   291,   292,    41,
     2040      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2041       0,     0,   698,     0,     0,     8,     9,    10,    11,    12,
     2042       0,     0,     0,   473,     0,   295,     0,   379,     0,   348,
     2043    1107,     0,     0,    45,    46,   297,   298,   299,   300,    78,
     2044       0,     0,     0,     0,    31,     0,   786,     0,     0,   473,
     2045       0,     0,   350,   216,   355,   353,     0,     0,     0,    78,
     2046       0,   937,     0,     0,   431,     0,   177,    78,     0,     0,
     2047       0,     0,    34,   348,   348,   348,     0,    37,     0,   184,
     2048     185,    40,     0,     0,     0,   355,   260,   712,    41,    42,
     2049       0,   348,   967,     0,   214,     0,     0,     0,     0,   353,
     2050     353,   353,     0,   355,     0,    78,     0,     8,     9,    10,
     2051      11,    12,     0,     0,   600,     0,   601,   353,     0,     0,
     2052       0,     0,    45,    46,     0,     0,     0,     0,  1107,     0,
     2053       0,   698,     0,     0,     0,   353,    31,     0,     0,     0,
     2054       0,   698,     0,   350,     0,   627,    75,   355,  1002,   348,
     2055     627,   805,     0,     0,     0,   698,     0,     0,     0,  1481,
     2056       0,  1481,     0,     0,    34,  1013,     0,     0,     0,    37,
     2057       0,     0,    75,    40,     0,   353,     0,     0,     0,     0,
     2058      41,    42,     0,     0,     0,     0,     0,     0,     0,   214,
     2059       0,    80,     0,     0,     0,  1481,     0,  1481,     0,     0,
     2060       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2061     353,   355,     0,     0,    45,    46,    66,     0,    87,     0,
     2062     413,     0,     0,    80,   323,     0,     0,   421,     0,     0,
     2063       0,     0,     0,     0,     0,     0,     0,     0,   627,   216,
     2064     348,     0,     0,     0,     0,   260,   712,     0,   348,  1085,
     2065      87,     0,     0,     0,   353,   355,   355,   355,     0,     0,
     2066     225,     0,     0,     0,   353,     0,   353,     0,     0,     0,
     2067       0,   223,     0,   355,   353,  1099,     0,     0,   353,     0,
     2068       0,     0,     0,   431,   118,     0,     0,   226,     0,     0,
     2069       0,   355,     0,     0,     0,     0,     0,     0,     0,   413,
     2070       0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
     2071       0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
     2072       0,     0,     0,     0,     0,     0,     0,     0,    78,     0,
     2073       0,   355,     0,     0,   216,     0,     0,     0,     0,    75,
     2074       0,   594,     0,     0,     0,     0,     0,     0,   356,     0,
     2075       0,     0,     0,   576,   429,     0,     0,     0,     0,   698,
     2076     698,   580,   350,   350,   583,     0,   355,     0,     0,   353,
     2077       0,     0,     0,     0,     0,   363,     0,   177,     0,     0,
     2078       0,    57,  1188,     0,     0,   206,     2,   207,     4,     5,
     2079       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2080      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2081     355,     0,    26,    27,    28,     0,     0,   698,   698,     0,
     2082     355,    31,   355,     0,     0,     0,     0,   224,   413,     0,
     2083     355,     0,   421,     0,   355,     0,     0,     0,     0,     0,
     2084       0,     0,     0,    80,     0,     0,     0,     0,    80,    34,
     2085       0,    35,     0,    36,    37,     0,   208,    39,    40,   348,
     2086     348,     0,     0,     0,   627,    41,    42,     0,     0,     0,
     2087      87,     0,     0,     0,     0,    87,     0,     0,     0,    57,
     2088       0,     0,   353,   353,     0,   353,   353,     0,   712,     0,
     2089       0,    43,     0,   209,     0,    78,     0,     0,     0,    45,
     2090      46,     0,     0,     0,     0,    75,     0,     0,     0,   413,
    20192091       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2020        0,   353,     0,     0,     0,   594,     0,   413,     0,     0,
    2021      594,    31,     0,     0,   421,     0,   627,     0,     0,   350,
    2022      350,   350,     0,     0,    31,     0,   644,     0,   535,   536,
    2023      537,   538,   539,   540,   541,   542,   543,   544,   350,    34,
    2024        0,     0,     0,     0,     0,     0,     0,   927,   214,     0,
    2025        0,     0,    34,     0,   356,   916,   699,    37,     0,    78,
    2026      916,    40,   545,     0,    78,   353,     0,   473,    41,    42,
    2027        0,     0,     0,     0,     0,     0,     0,  1504,     0,  1504,
    2028        0,   752,     0,   411,     0,     0,   413,     0,   216,     0,
    2029       45,    46,     0,   473,    43,     0,   350,     0,     0,     0,
    2030        0,    48,    48,    45,    46,   942,     0,     0,   431,   353,
    2031      353,   353,   113,   113,  1504,     0,  1504,   895,     0,     0,
    2032        0,     0,     0,     0,     0,     0,   902,     0,   353,     0,
    2033      904,     0,   260,   713,     0,     0,     0,     0,   974,     0,
    2034      576,   993,     0,     0,     0,     0,   353,     0,   580,    80,
    2035      113,   583,     0,     0,    80,   703,   703,    75,   224,     0,
    2036        0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
    2037        0,     0,     0,   704,   704,     0,     0,     0,   699,     0,
    2038        0,     0,     0,    75,     0,     0,   353,     0,   699,     0,
    2039      350,     0,   627,    31,     0,  1010,     0,   627,   809,     0,
    2040        0,     0,   699,     0,     8,     9,    10,    11,    12,     0,
    2041       48,   113,  1021,   703,   703,   413,     0,     0,  1037,   421,
    2042      113,    34,     0,   353,     0,    78,    37,     0,   184,   185,
    2043       40,   704,   704,    31,     0,    48,    48,    41,    42,     0,
    2044      355,     0,     0,     0,     0,    78,     0,     0,   225,   214,
    2045        0,     0,     0,    78,     0,     0,     0,     0,   112,     0,
    2046       48,    34,   927,  1528,    66,   411,     0,     0,   353,     0,
    2047        0,   355,    45,    46,     0,     0,     0,   216,   353,     0,
    2048      353,     0,     0,     0,     0,   223,   627,     0,   353,   355,
    2049        0,    78,   353,   260,   713,     0,   413,  1093,     0,     0,
    2050        0,     0,     0,   937,     0,   601,     0,   927,     0,   799,
    2051      800,     0,    45,    46,     0,    80,    37,     0,   184,   185,
    2052       40,     0,     0,  1107,     0,     0,     0,    41,    42,     0,
    2053      356,   431,   118,   355,   896,    80,     0,     0,   833,     0,
    2054        0,   836,   837,    80,   840,  1149,   842,   843,     0,   350,
    2055     1087,   844,   845,  1528,    75,   411,     0,     0,     0,     0,
    2056        0,   356,    45,    46,  1326,     0,     0,     0,     0,     0,
    2057        0,     0,     0,     0,     0,   216,     0,     0,     0,   356,
    2058        0,    80,  1327,     0,   353,     0,     0,   576,   576,    57,
    2059       57,     0,   594,     0,     0,     0,  1037,   355,     0,   703,
    2060        0,     0,     0,     0,     0,   429,     0,   703,   703,   703,
    2061      699,   699,     0,   350,   350,     0,     0,   704,     0,     0,
    2062        0,    57,     0,   356,     0,   704,   704,   704,     0,     0,
    2063        0,     0,     0,  1199,     0,     0,     0,     0,   214,   353,
    2064        0,   355,   355,   355,     0,     0,     0,     0,     0,     0,
    2065        0,     0,     0,     0,     0,    57,   995,     0,    57,     0,
    2066      355,     0,     0,     0,     0,     0,  1000,     0,   699,   699,
    2067        0,     0,     0,   703,     0,   888,   927,     0,   355,   891,
    2068     1012,     0,     0,     0,     0,     0,     0,   356,     0,    78,
    2069      479,   704,   976,   977,     0,     0,     0,     0,     0,     0,
    2070      353,   353,     0,   353,   353,     0,  1214,     0,     0,     0,
    2071      465,     0,     0,     0,     0,    78,     0,   627,   355,     0,
    2072        0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
    2073        0,   356,   356,   356,     0,     0,   214,     0,     0,   927,
    2074      927,     0,   713,     0,    87,     0,   348,     0,     0,     0,
    2075      356,     0,     0,     0,     0,   355,     0,     0,   353,   353,
    2076        0,     0,     0,     0,     0,     0,     0,     0,   356,     8,
    2077        9,    10,    11,    12,     0,     0,    87,     0,     0,    80,
    2078        0,     0,     0,     0,     0,  1297,     0,     0,     0,     0,
     2092       0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
     2093       0,  1283,     0,     0,     0,     0,     0,     0,     0,     0,
     2094     353,   353,   225,     0,    31,     0,     0,   177,     0,   260,
     2095       0,     0,     0,    66,     0,     0,     0,     0,     0,     0,
     2096       0,     0,     0,     0,     0,   698,     0,   712,     0,   226,
     2097       0,   118,    34,     0,     0,     0,     0,    37,     0,   184,
     2098     185,    40,     0,     0,     0,   127,   127,   127,    41,    42,
     2099       0,     0,     0,     0,     0,     0,     0,   698,     0,     0,
     2100     576,   576,     0,     0,     0,   698,   698,   698,     0,    80,
     2101       0,   353,     0,     0,   186,     0,   350,   350,     0,     0,
     2102       0,     0,    45,    46,   356,     0,     0,    57,    57,    80,
     2103    1188,     0,     0,     0,     0,     0,    87,    80,   355,   355,
     2104       0,   355,   355,     0,     0,     0,     0,     0,     0,     0,
     2105      57,   363,     0,     0,   223,   356,    87,     0,   127,     0,
     2106     127,    78,     0,   118,    87,     0,     0,     0,    57,   698,
     2107       0,     0,     0,   356,     0,    80,    75,     0,     0,     0,
     2108       0,     0,   363,     0,     0,   276,     0,   883,   353,     0,
     2109     353,   886,     0,     0,     0,     0,   355,   355,     0,     0,
     2110     363,     0,    87,     0,     0,     0,     0,     0,     0,     0,
     2111       0,     0,     0,   348,   348,     0,     0,   356,     0,     0,
     2112     353,     0,    57,     0,     0,     0,     0,    57,   353,   353,
     2113     353,     0,     0,     0,     0,     0,   350,     0,     0,   353,
     2114     353,   127,     0,     0,   363,     0,     0,     0,     0,   127,
     2115       0,   127,   127,    75,     0,     0,   127,     0,   127,   127,
     2116      57,   118,     0,   168,     0,   173,     0,   355,   179,   180,
     2117     181,     0,   183,     0,     0,     0,     0,     0,     0,     0,
     2118       0,   356,     0,  1188,     0,     0,     0,   234,     0,     0,
     2119    1188,     0,   353,     0,     0,     0,     0,     0,     0,   249,
     2120     250,     0,     0,     0,   125,   128,   129,     0,   363,     0,
     2121     224,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2122      12,     0,     0,   576,     0,   356,   356,   356,   127,     0,
     2123       0,     0,    78,   348,     0,     0,     0,     0,     0,     0,
     2124       0,  1188,     0,   356,   355,    31,   355,     0,  1530,     0,
     2125       0,     0,   363,   363,   363,     0,     0,     0,    57,   353,
     2126       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2127     363,     0,    80,    34,     0,     0,   355,   255,    37,   256,
     2128      57,     0,    40,     0,   355,   355,   355,    57,   363,    41,
     2129      42,     0,     0,     0,     0,   355,   355,     0,    80,    87,
     2130       0,   356,     0,     0,     0,     0,    75,     0,     0,    78,
     2131       0,     0,     0,    75,     0,   718,     0,     0,     0,     0,
     2132       0,     0,     0,    45,    46,    87,     0,     0,   363,     8,
     2133       9,    10,    11,    12,     0,     0,   356,     0,    57,     0,
     2134       0,   413,     0,     0,     0,     0,     0,     0,   355,     0,
    20792135       0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
    2080      355,     0,     0,   260,     0,    80,     0,    66,   356,     0,
    2081      355,    57,   355,   226,   576,     0,     0,   224,     0,   699,
    2082      355,   713,     0,     0,   355,   118,    34,     0,     0,     0,
    2083        0,    37,   353,   184,   185,    40,     0,     0,     0,     0,
    2084        0,    57,    41,    42,     0,   356,     0,     0,     0,     0,
    2085        0,     0,     0,     0,   699,     0,  1098,     0,     0,     0,
    2086        0,     0,   699,   699,   699,     0,     0,     0,   186,     0,
    2087        0,     0,     0,   350,   350,   223,     0,    45,    46,     0,
    2088        0,     0,     0,     0,     0,     0,    78,  1199,  1177,  1178,
    2089      356,     0,     0,     0,     0,     0,     0,    75,     0,     0,
    2090      356,   363,   356,     0,     0,     0,     0,   225,     0,   353,
    2091      356,   353,     0,     0,   356,     0,   355,     0,     0,     0,
    2092      118,     0,     0,     0,   112,     0,     0,     0,   699,     0,
    2093        0,     0,     0,   413,     0,     0,     0,     0,     0,     0,
    2094        0,     0,     0,     0,   353,     0,  1227,  1228,     0,     0,
    2095      927,     0,   353,   353,   353,     0,     0,     0,  1384,     0,
    2096        0,     0,     0,   353,   353,     0,     0,     0,   927,     0,
    2097      742,   355,     0,     0,     0,     0,    80,    75,     0,     0,
    2098        0,     0,     0,     0,     0,   763,     0,     0,   742,     0,
    2099      769,   742,     0,     0,     0,     0,    87,     0,   350,     0,
    2100        0,    87,   127,   127,   127,     0,   356,     0,     0,     0,
    2101        0,     0,     0,  1153,     0,     0,     0,     0,   353,     0,
    2102     1229,     0,   348,   118,     0,     0,     0,     0,     0,     0,
    2103     1165,     0,   355,   355,     0,   355,   355,     0,     0,   465,
    2104        0,   927,   927,     0,   168,     0,   173,  1199,     0,   179,
    2105      180,   181,     0,   183,  1199,    78,     0,     0,     0,     0,
    2106        0,   356,     0,     0,     0,     0,     0,     0,   234,     0,
    2107        0,     0,     0,    57,     0,   127,     0,   127,     0,     0,
    2108      249,   250,     0,     0,     0,     0,     0,     0,   353,     0,
    2109      355,   355,     0,     0,     0,   226,     0,     0,     0,     0,
    2110        0,     0,   276,     0,     0,     0,     0,  1199,   413,     0,
    2111        0,   883,     0,   885,  1553,   348,     0,  1501,     0,  1505,
    2112        0,     0,   356,   356,     0,   356,   356,     0,     0,     0,
    2113        0,     0,  1354,     0,     0,     0,     0,    75,     0,     0,
    2114     1356,  1357,  1358,     0,    75,    80,     0,     0,     0,     0,
    2115     1255,     0,  1318,     0,  1534,     0,  1536,     0,   127,     0,
    2116        0,     0,    87,   932,   355,     0,   127,     0,   127,   127,
    2117        0,     0,     0,   127,     0,   127,   127,   363,     0,   348,
    2118      356,   356,    87,     0,     0,     0,     0,     0,     0,     0,
    2119       87,     0,     0,     0,     0,     0,     0,    75,     0,  1565,
    2120        0,  1566,     0,     0,     0,     0,  1404,   224,   363,     8,
    2121        9,    10,    11,    12,  1573,  1574,     0,     0,     0,     0,
    2122        0,     0,     0,   348,   348,   348,   363,     0,    87,    78,
    2123        0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
    2124        0,   355,   348,   355,     0,   127,     0,     0,     8,     9,
    2125       10,    11,    12,     0,   356,     0,     0,     0,     0,     0,
     2136     396,     0,     0,   363,    75,     0,     0,     0,     0,     0,
     2137     415,   416,     0,     0,     0,   420,     0,   422,   423,     0,
     2138     356,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2139     356,    37,   356,   184,   185,    40,     0,   225,     0,     0,
     2140     356,     0,    41,    42,   356,     0,     0,   363,     0,     8,
     2141       9,    10,    11,    12,     0,   355,     0,   363,  1142,   363,
     2142       0,     0,     0,     0,   226,     0,     0,   363,   905,     0,
     2143     411,   363,     0,     0,     0,  1154,    45,    46,    31,     0,
     2144       0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
     2145       0,     0,     0,     0,   591,     0,   599,     0,     0,     0,
     2146       0,     0,    78,     0,     0,    80,    34,   623,   624,    78,
     2147      31,    37,     0,   184,   185,    40,     0,     0,     0,     0,
     2148       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
     2149       0,     0,    87,     0,     0,   356,     0,     0,    34,     0,
     2150       0,     0,     0,    37,     0,   184,   185,    40,  1505,     0,
     2151     411,     0,     0,   413,    41,    42,    45,    46,     0,     0,
     2152      78,     0,   363,     0,     0,     0,     0,     0,     0,     0,
     2153       0,     0,     0,   127,   127,     0,     0,     0,     0,     0,
     2154     266,     0,     0,     0,     0,     0,     0,     0,    45,    46,
     2155       0,     0,     0,  1242,     0,     0,     0,     0,     0,     0,
     2156       0,     0,   127,     0,     0,   127,   127,     0,   127,     0,
     2157     127,   127,     0,     0,     0,   127,   127,     1,     2,   207,
     2158       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2159      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2160      24,    25,  -291,     0,    26,    27,    28,    29,   356,   356,
     2161      30,   356,   356,    31,     0,     0,     0,     0,     0,     0,
     2162       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2163       0,    80,     0,     0,     0,   363,   363,     0,   363,   363,
     2164       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
     2165       0,     0,  -291,     0,     0,     0,  1012,     0,    87,     8,
     2166       9,    10,    11,    12,     0,     0,   356,   356,     0,     0,
     2167       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2168       0,     0,     0,     0,     0,    44,   283,   284,    31,   285,
     2169       0,    45,    46,   363,   363,     0,     0,     0,     0,     0,
     2170       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2171       0,     0,     0,   127,   127,   286,    34,     0,     0,     0,
     2172       0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
     2173     291,   292,    41,    42,     0,   293,   294,   356,     0,     0,
     2174       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2175       0,     0,   795,   796,     0,     0,     0,     0,   295,     0,
     2176     379,     0,     0,     0,   363,     0,   344,    46,   297,   298,
     2177     299,   300,     0,     0,     0,     0,     0,     0,     0,     0,
     2178     225,   829,     0,     0,   832,   833,     0,   836,     0,   838,
     2179     839,     0,     0,     0,   840,   841,     0,     0,     0,     0,
     2180       0,     0,    80,     0,     0,     0,     0,   226,     0,   925,
     2181       0,   926,     0,     0,   356,     0,   356,     0,   929,   930,
     2182       0,     0,     0,   935,     0,     0,     0,     0,     0,    87,
     2183       0,     0,     0,     0,     0,   940,     0,     0,     0,     0,
     2184     944,   363,     0,   363,     0,     0,   356,     0,     0,     0,
     2185       0,     0,     0,     0,   356,   356,   356,     0,     0,     0,
     2186       0,     0,     0,     0,     0,   356,   356,     0,   978,     0,
     2187     127,     0,     0,   363,     0,   127,     0,     0,     0,    80,
     2188       0,   363,   363,   363,     0,     0,     0,     0,     0,     0,
     2189       0,     0,   363,   363,     0,     0,     0,     0,     0,     0,
     2190       0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
     2191       0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
     2192       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2193     166,     0,   969,   970,     0,     0,     0,     0,     0,     0,
     2194       0,     0,     0,     0,     0,   363,     0,   219,     0,     0,
     2195    1162,     0,     0,     8,     9,    10,    11,    12,     0,     0,
     2196       0,     0,     0,     0,     0,     0,     0,  1023,  1024,  1025,
     2197    1026,     0,  1028,     0,     0,     0,     0,     0,     0,     0,
     2198     283,   284,    31,   285,     0,   356,     0,  1072,     0,     0,
     2199       0,     0,     0,     0,     0,   166,     0,     0,     0,   273,
     2200       0,  1078,     0,     0,     0,     0,     0,     0,     0,   286,
     2201      34,     0,   363,     0,     0,   287,     0,     0,     0,   288,
     2202       0,     0,   289,   290,   291,   292,    41,    42,   166,   293,
     2203     294,     0,    80,     0,     0,     0,   127,     0,   369,    80,
     2204       0,  1098,   375,     0,     0,     0,     0,     0,     0,     0,
     2205       0,     0,   295,     0,   379,     0,     0,     0,     0,    87,
     2206    1163,    46,   297,   298,   299,   300,    87,     8,     9,    10,
     2207      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2208      21,    22,    23,    24,    25,     0,  1129,    26,    27,    28,
     2209      80,   166,  1136,     0,  1090,     0,    31,  1140,     0,     0,
     2210       0,     0,  1144,   219,  1145,     0,     0,     0,  1147,     0,
     2211    1148,  1149,     0,     0,  1152,     0,     0,    87,     0,     0,
     2212       0,   166,     0,  1164,    34,     0,     0,     0,     0,     0,
     2213       0,   208,    39,     0,     0,     0,     0,     0,     0,     0,
     2214       0,  1179,  1180,     0,     0,     0,   375,     0,     0,     0,
     2215       0,     0,     0,   166,     0,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,     0,   127,     0,     0,  1210,     0,
     2217       0,  1212,     0,     0,    45,    46,   524,     0,     0,     0,
     2218       0,     0,     0,     0,     0,     0,     0,     0,   166,     0,
     2219       0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
     2220       0,     0,     0,     0,   232,     0,   236,     0,   238,     0,
     2221       0,     0,     0,     0,  1226,   247,     0,     0,     0,     0,
     2222    1230,  1231,     0,     0,     0,     0,   597,     0,     0,     0,
     2223       0,   621,     0,     0,     0,     0,     0,     0,     0,     0,
     2224    1247,     0,     0,  1251,     0,     0,   212,  1253,   236,   238,
     2225     247,     0,     0,     0,     0,  1218,     0,     0,     0,     0,
     2226    1261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2227       0,     0,     0,  1268,     0,  1270,  1271,  1272,  1273,     0,
     2228       0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
     2229       0,  1280,     0,  1281,     0,     0,     0,   173,     0,     0,
     2230       0,     0,     0,     0,     0,     0,     0,   166,   166,     0,
     2231       0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
     2232       0,     0,     0,     0,     0,     0,  1309,  1310,     0,     0,
     2233       0,     0,     0,     0,     0,   524,     0,     0,     0,     0,
     2234       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2235     212,     0,   236,   238,   247,     0,     0,     0,     0,     0,
     2236       0,     0,     0,   715,     0,     0,     0,     0,     0,     0,
     2237       0,     0,     0,     0,     0,   166,  1342,  1343,     0,     0,
     2238       0,     0,     0,     0,  1304,     0,  1353,   524,   212,   524,
     2239       0,     0,   524,   212,   166,   524,     0,     0,     0,     0,
     2240       0,     0,     0,     0,     0,     0,     0,   369,   497,     0,
     2241       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2242       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2243      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2244      24,    25,  -291,     0,    26,    27,    28,  1388,     0,  1389,
     2245    1390,  1391,     0,    31,     0,     0,   212,     0,     0,   166,
     2246       0,  1395,     0,     0,     0,     0,     0,     0,     0,     0,
     2247    1406,   369,     0,     0,     0,   810,     0,     0,   212,     0,
     2248       0,    34,     0,   236,   238,     0,    37,     0,   336,   337,
     2249      40,   247,  -291,     0,     0,  1427,     0,    41,    42,     0,
     2250       0,   597,     0,     0,   321,     0,   597,     0,     0,     0,
     2251       0,     0,     0,     0,   346,   369,   369,   369,     0,   157,
     2252       0,     0,     0,   634,     0,   338,   382,   382,     0,     0,
     2253       0,    45,    46,   369,   212,     0,     0,     0,  1465,  1466,
     2254       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2255       0,  1471,   212,     0,     0,     0,     0,   212,  1471,   212,
     2256     283,   284,     0,   285,     0,   524,     0,   252,     0,     0,
     2257       0,     0,     0,     0,     0,     0,   212,   257,     0,   212,
     2258     212,     0,     0,     0,     0,     0,     0,   212,     0,   286,
     2259    1504,   369,     0,   934,  1510,   287,     0,   321,     0,   288,
     2260       0,   212,   289,   290,   291,   292,    41,    42,   212,   293,
     2261     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2262       0,   478,  1532,     0,  1533,     0,   715,     0,     0,     0,
     2263       0,     0,   295,   157,   379,     0,     0,   380,     0,     0,
     2264      45,    46,   297,   298,   299,   300,     0,   386,     0,     0,
     2265       0,     0,  1548,  1549,     0,     0,     0,     0,     0,     0,
     2266    1552,  1553,     0,     0,     0,     0,     0,     0,     0,     0,
     2267     418,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2268       0,     0,   369,     0,   433,     0,   621,     0,     0,     0,
     2269     369,     0,     0,   438,     0,     0,     0,     0,     0,     0,
     2270       0,     0,     0,   446,     0,     0,     0,     0,     0,     0,
     2271       0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
     2272       0,     0,   212,     0,     0,     0,     0,     0,   464,     0,
     2273       0,     0,     0,   474,     0,     0,     0,   382,     0,     0,
     2274       0,     0,     0,   286,     0,     0,   482,     0,     0,   287,
     2275     212,     0,   492,   288,   496,   212,   289,   290,   291,   292,
     2276      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2277       0,   526,     0,     0,     0,     0,     0,     0,     0,     0,
     2278       0,     0,     0,     0,     0,   715,   295,     0,   379,     0,
     2279       0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
     2280     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2281       0,     0,     0,   585,     0,     0,     0,     0,   590,     0,
     2282       0,     0,     0,     0,   166,     0,   212,     0,     0,     0,
     2283       0,   709,     0,     0,     0,     0,     0,     0,     0,     0,
     2284     212,     0,     0,     0,     0,     0,     0,   635,     0,     0,
     2285       0,   636,   637,     0,   639,     0,     0,     0,     0,     0,
     2286     497,   650,   651,     0,   652,   653,     0,   654,     0,   655,
     2287     741,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2288     597,     0,     0,   758,     0,     0,   585,     0,   741,     0,
     2289       0,   741,     0,     0,   670,     0,     0,     0,     0,     0,
     2290       0,   369,   369,   767,     0,     0,     0,     0,     0,     0,
     2291       0,     0,     0,     0,     0,     0,     0,     0,     0,   681,
     2292       0,   212,     0,     0,     0,   788,     0,     0,     0,     0,
     2293       0,     0,     0,   212,     0,   797,     0,     0,     0,     0,
     2294       0,     0,   346,     0,     0,   707,     0,   758,     0,     0,
     2295       0,   710,   212,     0,     0,     0,   464,     0,     0,     0,
     2296       0,   524,     0,     0,     0,     0,   206,     2,   207,     4,
     2297       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2298      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2299      25,     0,   745,    26,    27,    28,   862,     0,     0,     0,
     2300       0,     0,    31,     0,   382,     0,     0,   763,     0,     0,
     2301       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2302       0,     0,     0,     0,     0,     0,     0,   715,     0,     0,
     2303      34,     0,    35,     0,    36,     0,     0,   208,    39,     0,
     2304       0,     0,     0,   283,   284,   789,   285,     0,     0,     0,
     2305       0,     0,     0,     0,   799,     0,     0,     0,     0,     0,
     2306       0,   801,     0,     0,     0,   212,     0,   809,     0,   219,
     2307       0,     0,   286,     0,   209,     0,   823,     0,   287,     0,
     2308      45,    46,   288,     0,     0,   289,   290,   291,   292,    41,
     2309      42,     0,   293,   294,     0,   212,     0,     0,     0,     0,
     2310       0,     0,   758,     0,   963,     0,   715,     0,     0,   341,
     2311     364,     0,     0,     0,   974,   295,   863,   379,     0,     0,
     2312     982,     0,     0,    45,    46,   297,   298,   299,   300,     0,
     2313     212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2314       0,   212,     0,   414,     0,     0,     0,     0,     0,     0,
     2315     414,     0,   809,     0,     0,   369,   369,     0,     0,     0,
     2316     904,     0,  1000,  1001,   219,     0,   346,     0,     0,     0,
     2317       0,     0,     0,     0,     0,     0,     0,     0,     0,   507,
     2318     346,   509,   512,     0,     0,     0,     0,     0,     0,   515,
     2319     516,   252,     0,     0,     0,     0,     0,     0,     0,     0,
     2320       0,   941,   942,   509,   509,     0,     0,     0,     0,     0,
     2321       0,     0,     0,   212,     0,     0,     0,     0,     0,     0,
     2322    1031,     0,   414,     0,   382,     0,     0,   212,     0,     0,
     2323       0,     0,     0,     0,   979,     0,     0,     0,     0,   983,
     2324       0,   509,     8,     9,    10,    11,    12,    13,    14,    15,
     2325      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2326       0,   346,    26,    27,    28,     0,     0,     0,     0,     0,
     2327       0,    31,   684,     0,     0,   369,   414,   509,     0,     0,
     2328       0,     0,     0,     0,   414,   581,     0,   414,   584,     0,
     2329       0,     0,     0,     0,     0,     0,     0,     0,   364,    34,
     2330     321,     0,   613,  1017,     0,     0,    38,    39,     0,     0,
     2331    1018,     0,     0,     0,     0,     0,   212,     0,     0,     0,
     2332       0,   631,     0,  1020,   341,  1021,     0,     0,   382,     0,
     2333       0,   524,     0,   524,   974,     0,     0,     0,   741,  1033,
     2334       0,     0,     0,   685,     0,  1037,     0,   686,     0,    45,
     2335      46,   414,     0,     0,     0,   414,     0,  1075,     0,  1150,
     2336    1076,     0,     0,     0,     0,     0,     0,   524,     0,   524,
     2337    1165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2338       0,     0,     0,     0,     0,     0,   364,     0,     0,     0,
     2339       0,     0,   382,     0,  1183,     0,   166,     0,     0,     0,
     2340       0,     0,     0,     0,     0,     0,     0,     0,     0,   974,
     2341     974,   212,     8,     9,    10,    11,    12,    13,    14,    15,
     2342      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2343    1215,     0,   414,     0,     0,   364,     0,   590,     0,     0,
     2344       0,    31,     0,     0,     0,   509,   509,   509,   509,   509,
     2345     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
     2346     509,   509,   509,     0,     0,     0,     0,   283,   284,    34,
     2347     285,     0,  1146,     0,   414,     0,     0,     0,   341,   364,
     2348       0,     0,     0,     0,     0,   974,     0,     0,     0,     0,
     2349       0,     0,     0,     0,     0,     0,   286,     0,     0,     0,
     2350       0,     0,   287,   862,     0,     0,   288,     0,     0,   289,
     2351     290,   291,   292,    41,    42,     0,   293,   294,  1266,  1267,
     2352       0,     0,     0,   414,   414,     0,     0,     0,     0,     0,
     2353     526,     0,     0,     0,     0,     0,  1211,     0,     0,   295,
     2354       0,   379,   803,   364,   971,     0,     0,    45,    46,   297,
     2355     298,   299,   300,   613,     0,   613,   613,     0,     0,     0,
     2356       0,     0,   613,     0,     0,     0,     0,     0,     0,     0,
     2357    1223,     0,   842,   364,     0,  1225,     0,     0,   364,     0,
     2358       0,     0,     0,  1229,     0,     0,     0,   364,   364,   364,
     2359       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
     2360       0,     0,     0,     0,     0,   364,     0,     0,     0,     0,
     2361     414,   884,     0,     0,   414,   887,  1255,     0,     0,     0,
     2362       0,   889,     0,     0,     0,     0,     0,     0,  1263,     0,
     2363       0,  1264,     0,  1265,     0,     0,     0,     0,     0,     0,
     2364     414,     0,     0,     0,     0,     0,     0,  1274,  1275,     0,
     2365       0,     0,   509,     0,     0,     0,     0,     0,   212,  1371,
     2366       0,     0,   741,   364,   613,     0,     0,     0,     0,  1288,
     2367       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2368       0,     0,   509,     0,     0,     0,     0,     0,     0,     0,
     2369       0,     0,     0,     0,     0,     0,     0,   341,   364,     0,
     2370       0,     0,   414,   414,     0,     0,     0,     0,     0,     0,
     2371       0,     0,     0,     0,     0,     0,  1327,     0,     0,     0,
     2372       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2373      17,    18,    19,    20,    21,    22,    23,    24,    25,  -291,
     2374       0,    26,    27,    28,     0,     0,   414,     0,     0,     0,
     2375      31,     0,     0,     0,   364,     0,     0,     0,     0,     0,
     2376       0,   803,   364,     0,     0,   613,     0,   613,     0,     0,
     2377       0,     0,     0,     0,     0,     0,     0,   613,    34,     0,
     2378       0,     0,     0,    37,     0,   336,   337,    40,     0,  -291,
     2379       0,  1377,     0,  1378,    41,    42,     0,     0,     0,     0,
     2380       0,     0,   509,     0,     0,  1386,     0,  1387,     0,     0,
     2381       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2382       0,     0,   338,     0,  1394,     0,     0,     0,    45,    46,
     2383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2384    1412,  1414,     0,     0,     0,     0,     0,   509,     0,   803,
     2385       0,  1419,     0,     0,  1229,     0,   341,   364,   414,     0,
     2386     414,     0,     0,     0,   414,     0,     0,     0,     0,     0,
     2387       0,     0,   321,     0,     0,  1441,     0,     0,     0,     0,
     2388       0,     0,   509,     0,  1448,   613,   613,  1450,     0,  1452,
     2389    1454,  1456,     0,     0,     0,   509,     8,     9,    10,    11,
     2390      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2391      22,    23,    24,    25,  -291,     0,     0,     0,     0,     0,
     2392     414,     0,     0,     0,     0,    31,     0,     0,     0,  1486,
     2393       0,  1488,     0,  1229,     0,     0,   509,     0,     0,     0,
     2394       0,   414,  1143,     0,     0,     0,     0,     0,  1499,     0,
     2395       0,     0,   364,    34,     0,     0,     0,     0,   414,  1155,
     2396       0,   613,   613,  1160,  -291,     0,     0,     0,     0,     0,
     2397       0,     0,     0,   364,   364,     0,     0,     0,     0,     0,
     2398       0,     0,     0,     0,     0,     0,     0,     1,     2,   207,
     2399       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2400      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2401      24,    25,     0,   509,    26,    27,    28,    29,     0,     0,
     2402      30,   283,   284,    31,   285,     0,     0,     0,     0,     0,
     2403       0,     0,     0,     0,     0,     0,   414,     0,   414,     0,
     2404       0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
     2405     286,    34,   613,    35,     0,    36,   287,     0,    38,    39,
     2406     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2407     293,   294,     0,   509,   509,   803,   414,  1243,     0,     0,
     2408       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2409       0,     0,     0,   295,     0,  1055,     0,     0,     0,   364,
     2410       0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
     2411       0,     0,     0,     0,     0,     0,  -126,     0,     1,     2,
     2412     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2413      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2414      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2415       0,    30,   283,   284,    31,  1040,  1041,     0,  1042,     0,
     2416     341,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
     2417       0,     0,  1051,     0,     0,     0,  1052,  1053,   364,    33,
     2418       0,   286,    34,     0,    35,     0,    36,  1054,     0,    38,
     2419      39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2420       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
     2421       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,   295,     0,  1055,   364,   364,   172,
     2423       0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
     2424       0,     0,  1056,     0,     0,     0,     0,  -126,     0,     0,
     2425       0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
     2426       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2427      19,    20,    21,    22,    23,    24,    25,     0,   509,    26,
     2428      27,    28,    29,     0,     0,    30,   283,   284,    31,   285,
     2429       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
     2430       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2431       0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
     2432      36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
     2433     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
     2434       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
     2435       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2436      44,     0,     0,     0,   509,   509,    45,    46,   297,   298,
     2437     299,   300,     0,     2,   207,     4,     5,     6,     7,     8,
     2438       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2439      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2440      27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
     2441       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2442      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2443      25,  -292,     0,     0,   414,   286,    34,     0,    35,     0,
     2444      36,   287,    31,    38,    39,   288,     0,     0,   289,   290,
     2445     291,   292,    41,    42,     0,   293,   294,     0,   414,   414,
     2446       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2447      34,     0,     0,     0,     0,     0,     0,     0,   295,     0,
     2448     343,  -292,     0,   414,     0,   757,   344,    46,   297,   298,
     2449     299,   300,     2,   207,     4,     5,     6,     7,     8,     9,
     2450      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2451      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2452      28,     0,     0,     0,     0,   283,   284,    31,   285,     8,
     2453       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2454      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2455      27,    28,     0,     0,   286,    34,     0,    35,    31,    36,
     2456     287,     0,    38,    39,   288,     0,     0,   289,   290,   291,
     2457     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    21262458       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2127      363,    37,     0,   184,   185,    40,   355,    31,     0,     0,
    2128        0,     0,    41,    42,   355,   355,   355,     0,     0,     0,
    2129        0,     0,     0,     0,     0,   355,   355,   225,     0,     0,
    2130      348,     0,     0,     0,     0,    34,     0,     0,   266,    78,
    2131       37,     0,     0,     0,    40,     0,     0,    45,    46,    80,
    2132        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2133        0,   356,     0,   356,   363,   591,     0,   599,     0,     0,
    2134        0,     0,     0,     0,     0,     0,     0,   719,   623,   624,
    2135      355,     0,     0,     0,     0,     0,    45,    46,     0,     0,
    2136        0,     0,     0,     0,     0,     0,   356,     0,     0,     0,
    2137        0,     0,     0,     0,   356,   356,   356,     0,   363,   363,
    2138      363,     0,     0,     0,     0,   356,   356,     0,     0,     0,
    2139        0,     0,     0,     0,   348,     0,     0,   363,     0,    80,
    2140        0,     0,   348,     0,     0,  1020,     0,     0,     8,     9,
    2141       10,    11,    12,     0,     0,   363,     0,     0,     0,  1129,
    2142      355,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2143        0,     0,     0,     0,     0,   283,   284,    31,   285,     0,
    2144      356,     0,     0,  1142,     0,     0,   742,     0,  1142,     0,
    2145        0,     0,    87,     0,     0,   363,     0,     0,     0,     0,
    2146        0,     0,     0,     0,   286,    34,     0,     0,    57,    78,
    2147      287,     0,     0,     0,   288,     0,    78,   289,   290,   291,
    2148      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2149        0,     0,   363,     0,     0,     0,     0,     0,  1142,     0,
    2150        0,     0,     0,     0,     0,     0,     0,   295,     0,   379,
    2151      356,     0,     0,     0,     0,     0,   344,    46,   297,   298,
    2152      299,   300,     0,     0,     0,     0,     0,     0,     0,    78,
    2153        0,     0,     0,     0,     0,     0,    57,   363,     0,     0,
    2154        0,     0,     0,     0,     0,     0,     0,   363,     0,   363,
    2155      127,   127,     0,   348,   226,     0,     0,   363,     0,    80,
    2156        0,   363,   283,   284,     0,   285,    80,     0,     0,     0,
    2157        0,     0,     0,     0,     0,     0,     0,     0,     0,   127,
    2158        0,     0,   127,   127,     0,   127,     0,   127,   127,     0,
    2159        0,   286,   127,   127,     0,     0,     0,   640,     0,   140,
    2160      141,   288,     0,     0,   289,   641,   291,   292,    41,    42,
    2161        0,   293,   294,     0,     0,     0,     0,   348,   348,    80,
    2162        0,     0,     0,    87,     0,     0,     0,     0,     0,     0,
    2163        0,     0,     0,     0,   295,     0,   642,    57,   643,   380,
    2164        0,     0,     0,    45,    46,   297,   298,   299,   300,     0,
    2165        0,     0,     0,   363,     0,     0,     0,     0,     0,   206,
     2459       0,   111,     0,    38,    39,     0,     0,   295,     0,   962,
     2460       0,     0,    41,    42,   757,   344,    46,   297,   298,   299,
     2461     300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2462      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2463      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2464       0,     0,     0,     0,   283,   284,    31,   285,     8,     9,
     2465      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2466      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2467      28,     0,     0,   286,    34,     0,    35,    31,    36,   287,
     2468       0,    38,    39,   288,     0,     0,   289,   290,   291,   292,
     2469      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
     2470       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2471       0,     0,    38,    39,     0,     0,   295,     0,   962,     0,
     2472       0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
    21662473       2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    21672474      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    21682475      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2169        0,   930,     0,   931,     0,    31,     0,     0,     0,     0,
    2170      934,   935,     0,     0,     0,   940,     0,     0,   363,     0,
    2171        0,     0,     0,     0,     0,     0,     0,   945,  1142,  1142,
    2172     1142,     0,   949,    34,     0,    35,     0,    36,    37,     0,
    2173      208,    39,    40,   127,   127,     0,     0,     0,     0,    41,
    2174       42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2175        0,     0,   985,     0,     0,     0,     0,     0,   283,   284,
    2176        0,   285,     0,     0,     0,    43,     0,   209,     0,   363,
    2177      363,     0,   363,   363,    45,    46,   742,     0,     0,     0,
    2178        0,     0,     0,     0,     0,     0,     0,   286,    57,    57,
    2179        0,     0,    87,   287,     0,     0,     0,   288,     0,     0,
    2180      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2181        0,    57,     0,     0,     0,     0,     0,     0,     0,     0,
    2182        0,     0,     0,     0,     0,     0,     0,   363,   363,    57,
    2183      295,     0,   379,     0,     0,   380,     0,     0,     0,    45,
    2184       46,   297,   298,   299,   300,     0,     0,   166,     0,     0,
    2185        0,     0,  1031,  1032,  1033,  1034,     0,  1036,     0,     0,
    2186        0,     0,  1142,  1142,   219,     0,     0,     0,     0,     0,
    2187        0,     0,     0,  1080,     0,     0,     0,   348,   348,     0,
    2188        0,     0,     0,     0,     0,     0,    57,  1086,     0,     0,
    2189        0,    57,   127,     0,     0,     0,     0,   127,     0,     0,
    2190     1481,   363,     0,     0,     0,     0,     0,     0,     0,     0,
    2191        0,     0,   166,     0,     0,     0,   273,     0,     0,     0,
    2192        0,     0,     0,     0,    57,     0,     0,  1106,     0,     0,
     2476       0,     0,     0,   283,   284,    31,   285,     8,     9,    10,
     2477      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2478      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2479       0,     0,   286,    34,     0,    35,    31,    36,   287,     0,
     2480      38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
     2481      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2482       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
     2483       0,   208,    39,     0,     0,   295,     0,   343,     0,     0,
     2484       0,     0,     0,   344,    46,   297,   298,   299,   300,     2,
     2485     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2486      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2487      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2488       0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
    21932489       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194        0,     0,     0,     0,   226,   166,     0,     0,     0,     0,
    2195        0,     0,     0,     0,     0,   369,     0,     0,     0,   375,
    2196        0,  1532,     0,     0,     0,     0,    87,     0,     0,     0,
    2197     1540,     0,     0,     0,  1139,     0,     0,     0,   363,     0,
    2198      363,  1147,     0,     0,     0,     0,  1151,     0,     0,     0,
    2199        0,  1155,     0,  1156,     0,     0,     0,  1158,     0,  1159,
    2200     1160,     0,   348,  1163,     0,     0,     0,     0,   166,     0,
    2201        0,     0,  1175,   363,     0,     0,     0,     0,     0,     0,
    2202      219,   363,   363,   363,     0,     0,     0,    57,     0,     0,
    2203     1190,  1191,   363,   363,     0,     0,     0,     0,   166,     0,
    2204        0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2205        0,    57,     0,     0,     0,     0,     0,  1221,    57,     0,
    2206     1223,   127,     0,   375,     0,     0,     0,     0,     0,     0,
    2207      166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2208        0,     0,     0,     0,     0,     0,     0,   363,     0,     0,
    2209        0,     0,     0,   524,     0,     0,     0,     0,     0,     0,
    2210        0,     0,     0,  1237,     0,   166,     0,     0,     0,  1241,
    2211     1242,    57,     0,     0,     0,     0,     0,     0,     0,     0,
    2212        0,  1253,     0,     0,     0,     0,     0,     0,     0,     0,
    2213        0,  1260,     0,     0,  1264,     0,  1265,     0,     0,  1267,
    2214        0,     0,     0,   597,     0,     0,     0,     0,   621,     0,
    2215        0,     0,  1275,     0,     0,     0,     0,   363,     0,     0,
    2216        0,     0,     0,     0,     0,  1282,     0,  1284,  1285,  1286,
    2217     1287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2218        0,     0,     0,  1294,     0,  1295,     0,     0,     0,   173,
    2219        0,     0,     0,   127,     0,   212,     0,     0,     0,     0,
    2220        0,     0,     0,     0,     0,   232,    87,   236,     0,   238,
    2221        0,     0,     0,    87,     0,     0,   247,     0,  1323,  1324,
    2222        0,     0,     0,     0,   166,   166,     0,     0,     0,     0,
    2223        0,   369,     0,     0,     0,     0,     0,     0,     0,     0,
    2224        0,     0,     0,     0,     0,     0,     0,   212,     0,   236,
    2225      238,   247,   524,     0,     0,     0,     0,     0,     0,     0,
    2226        0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2227        0,  1359,  1360,     0,     0,     0,     0,     0,     0,     0,
    2228      716,  1370,     0,     0,     0,     0,     0,     0,     0,     0,
    2229      212,     0,   166,     0,     0,     0,     0,     0,     0,     0,
    2230        0,     0,     0,     0,   524,     0,   524,     0,     0,   524,
    2231        0,   166,   524,     0,     0,     0,     0,     0,     0,     0,
    2232        0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
    2233        0,     0,  1402,     0,     0,     0,     0,     0,     0,     0,
    2234        0,     0,     0,     0,     0,  1407,     0,  1408,  1409,  1410,
    2235        0,   212,     0,   236,   238,   247,     0,     0,     0,  1414,
    2236        0,     0,     0,     0,     0,     0,     0,     0,  1425,     0,
    2237        0,     0,     0,     0,     0,     0,   166,     0,     0,     0,
    2238        0,     0,     0,     0,     0,     0,     0,     0,   369,   212,
    2239        0,     0,   814,     0,   212,  1448,     0,     0,     0,     0,
    2240        0,     0,     0,     0,     0,     0,     0,     0,     0,   497,
    2241        0,     0,     0,     0,     0,     0,     0,     0,   597,     0,
    2242        0,     0,     0,   597,     0,     0,     0,     0,     0,     0,
    2243        0,     0,   369,   369,   369,     0,     0,     0,     0,     0,
    2244     1487,  1488,     0,     0,     0,     0,     0,     0,     0,     0,
    2245        0,   369,     0,  1493,     0,     0,     0,   212,     0,     0,
    2246     1493,     0,     0,     0,   157,     0,     0,     0,     0,     0,
    2247        0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
    2248        0,     0,     0,   524,   236,   238,     0,     0,     0,     0,
    2249        0,     0,   247,  1527,     0,     0,     0,  1533,     0,     0,
    2250        0,     0,     0,     0,     0,     0,     0,     0,     0,   369,
    2251     1173,   939,   252,     8,     9,    10,    11,    12,     0,     0,
    2252        0,     0,   257,     0,     0,     0,  1555,     0,  1556,     0,
    2253        0,     0,     0,     0,     0,   212,     0,     0,     0,     0,
    2254      283,   284,    31,   285,     0,     0,   716,     0,     0,     0,
    2255        0,     0,     0,   212,     0,     0,  1571,  1572,   212,     0,
    2256      212,     0,     0,     0,  1575,  1576,     0,     0,     0,   286,
    2257       34,     0,     0,     0,     0,   287,     0,   212,   157,   288,
    2258      212,   212,   289,   290,   291,   292,    41,    42,   212,   293,
    2259      294,     0,   386,     0,     0,     0,     0,     0,     0,     0,
    2260        0,     0,   212,   369,     0,     0,     0,   621,     0,   212,
    2261        0,   369,   295,     0,   379,   418,     0,     0,     0,     0,
    2262        0,  1174,    46,   297,   298,   299,   300,     0,     0,   433,
    2263        0,     0,     0,     0,     0,     0,     0,     0,   438,     0,
    2264        0,     0,     0,     0,     0,     0,     0,     0,   446,     0,
    2265        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2266      284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
    2267        0,     0,     0,   464,     0,     0,     0,     0,   474,     0,
    2268        0,     0,     0,     0,     0,     0,     0,     0,   286,     0,
    2269        0,   482,     0,     0,   287,     0,     0,   492,   288,   496,
    2270        0,   289,   290,   291,   292,    41,    42,   716,   293,   294,
    2271        0,     0,     0,     0,     0,     0,   526,     0,     0,     0,
    2272        0,     0,   524,   212,     0,     0,     0,     0,     0,     0,
    2273        0,   295,     0,   379,     0,     0,     0,     0,     0,   790,
    2274       45,    46,   297,   298,   299,   300,   166,     0,     0,     0,
    2275        0,   212,     0,     0,     0,     0,   212,     0,   585,     0,
    2276        0,     0,   369,   590,     0,     0,   206,     2,   207,     4,
     2490       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2491       0,   286,    34,     0,    35,     0,    36,   287,     0,   208,
     2492      39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2493       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
     2494       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2495       0,     0,     0,     0,   295,     0,   997,     0,     0,     0,
     2496       0,     0,   998,    46,   297,   298,   299,   300,     2,   207,
     2497       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2498      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2499      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2500       0,   283,   284,    31,   285,     0,     0,     0,     0,     0,
     2501       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503     286,    34,     0,    35,     0,    36,   287,     0,    38,    39,
     2504     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2505     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
     2506       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2507       0,     0,     0,   295,     0,   962,     0,     0,     0,     0,
     2508       0,   344,    46,   297,   298,   299,   300,     2,   207,     4,
    22772509       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    22782510      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2279       25,     0,   635,    26,    27,    28,   636,   637,     0,   639,
    2280        0,     0,    31,     0,     0,   597,   651,   652,     0,   653,
    2281      654,     0,   655,     0,   656,     0,     0,     0,     0,     0,
    2282        0,     0,     0,     0,     0,     0,   369,   369,   212,     0,
    2283       34,   585,    35,     0,    36,     0,     0,   208,    39,   671,
    2284        0,     0,   212,     0,     0,     0,     0,     0,     0,     0,
     2511      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2512     283,   284,    31,   285,     0,     0,     0,     0,     0,     0,
    22852513       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2286      283,   284,   497,   285,   682,     0,     0,     0,     0,     0,
    2287        0,     0,     0,     0,   209,     0,     0,     0,     0,     0,
    2288        0,    45,    46,     0,     0,     0,   524,     0,     0,   286,
    2289      708,     0,     0,     0,     0,   287,   711,     0,     0,   288,
    2290        0,   464,   289,   290,   291,   292,    41,    42,     0,   293,
     2514       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
     2515      34,     0,    35,     0,    36,   287,     0,   208,    39,   288,
     2516       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    22912517     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,   212,     0,     0,     0,
    2293        0,     0,   295,     0,   379,     0,     0,   748,   212,   760,
    2294        0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
    2295        0,     0,   767,     0,     0,   716,  -519,   212,     0,     1,
     2518       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2519       0,     0,   295,     0,   379,     0,     0,     0,     0,     0,
     2520      45,    46,   297,   298,   299,   300,  -515,     0,     0,     1,
    22962521       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    22972522      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    22982523      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    2299      793,     0,    30,     0,     0,    31,    32,   219,     0,   803,
    2300        0,   341,   364,     0,     0,     0,   805,     0,   283,   284,
    2301        0,   285,   813,     0,     0,     0,     0,     0,     0,     0,
    2302       33,   827,     0,    34,     0,    35,     0,    36,    37,     0,
    2303       38,    39,    40,     0,   716,   414,     0,   286,     0,    41,
    2304       42,     0,   414,   287,     0,     0,     0,   288,     0,     0,
    2305      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2306        0,     0,   867,     0,     0,    43,     0,    44,     0,     0,
    2307        0,   212,     0,     0,    45,    46,     0,     0,     0,     0,
    2308      295,     0,   379,     0,     0,   978,   369,   369,     0,    45,
    2309       46,   297,   298,   299,   300,   219,     0,     0,   813,     0,
    2310        0,     0,     0,   212,     0,     0,   909,     0,     0,     0,
    2311        0,     0,     0,     0,   414,     8,     9,    10,    11,    12,
    2312       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2313       23,    24,    25,  -294,     0,     0,     0,   252,     0,   212,
    2314        0,     0,     0,     0,    31,     0,     0,   946,   947,     0,
    2315      212,     0,     0,     0,     0,     0,   283,   284,     0,   285,
    2316        0,   964,     0,     0,   321,     0,     0,     0,   414,     0,
    2317        0,     0,    34,     0,   346,     0,   414,   581,     0,   414,
    2318      584,     0,   986,  -294,   987,   286,   382,   382,   991,     0,
    2319      364,   287,     0,     0,   613,   288,     0,     0,   289,   290,
    2320      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2321        0,   369,     0,   631,     0,     0,   341,     0,     0,     0,
    2322        0,     0,   212,     0,     0,     0,     0,     0,   295,     0,
    2323      379,     0,     0,     0,     0,     0,   212,    45,    46,   297,
    2324      298,   299,   300,   414,     0,     0,     0,   414,     0,     0,
    2325        0,     0,  1025,     0,     0,     0,     0,   321,     0,  1026,
    2326        0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
    2327        0,   524,  1028,     0,  1029,     0,     0,     0,   364,     0,
    2328        0,   478,     0,     0,     0,     0,     0,     0,  1041,     0,
    2329        0,     0,     0,     0,     0,  1045,     0,     0,     0,     0,
    2330        0,     0,     0,     0,     0,     0,   524,  1083,   524,     0,
    2331     1084,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332        0,     0,     0,     0,   414,     0,     0,   364,   212,     0,
    2333        0,     0,     0,     0,     0,     0,   166,     2,   207,     4,
    2334        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2335       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2336       25,     0,     0,    26,    27,    28,   414,     0,     0,     0,
    2337      341,   364,    31,     0,     0,     0,     0,     0,     0,     0,
    2338        0,     0,     0,     0,     0,     0,     0,     0,     0,   590,
    2339        0,     0,     0,     0,     0,     0,     0,   382,     0,     0,
    2340       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2341        0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
    2342        0,     0,     0,     0,     0,  1157,   212,     0,     0,     0,
    2343        0,     0,     0,     0,   807,   364,     0,     0,     0,     0,
    2344        0,     0,     0,  -402,   678,   613,     0,   613,   613,     0,
    2345        0,    45,    46,     0,   613,     0,     0,     0,     0,     0,
    2346        0,     0,     0,     0,   846,   364,     0,     0,     0,     0,
    2347      364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
    2348      364,   364,     0,   526,     0,     0,     0,     0,     0,  1222,
    2349        0,   710,     0,     0,     0,     0,     0,     0,   364,     0,
    2350        0,     0,     0,   414,   889,     0,     0,   414,   892,     0,
    2351        0,     0,     0,     0,   894,     0,     0,     0,     0,     0,
    2352        0,     0,     0,  1234,     0,     0,     0,     0,  1236,     0,
    2353      744,     0,     0,   414,     0,     0,  1240,     0,     0,     0,
    2354        0,     0,     0,   761,     0,     0,     0,     0,   744,     0,
    2355        0,   744,     0,     0,     0,     0,   364,   613,     0,     0,
    2356        0,     0,     0,   771,     0,     0,     0,     0,     0,     0,
    2357        0,     0,  1269,     0,     0,     0,     0,     0,     0,     0,
    2358        0,     0,     0,     0,  1277,   792,     0,  1278,     0,  1279,
    2359        0,     0,   341,   364,     0,   801,     0,   414,   414,     0,
    2360        0,     0,   346,  1288,  1289,     0,     0,   761,     0,     0,
     2524       0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
    23612525       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2362        0,     0,     0,     0,     0,  1302,     0,     0,     0,     0,
    23632526       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2364        0,     0,   414,     0,     0,     0,     0,     0,     0,     0,
    2365      364,     0,     0,     0,     0,     0,   866,   807,   364,     0,
    2366        0,   613,     0,   613,     0,   382,     0,     0,     0,     0,
    2367        0,     0,     0,   613,  1343,     0,     0,     0,     0,     0,
    2368        0,     0,   212,     0,     0,     0,     0,     0,     0,     0,
    2369        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2370        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2371       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2372       27,    28,    29,     0,     0,    30,     0,     0,    31,     0,
     2527      33,     0,     0,    34,     0,    35,     0,    36,    37,     0,
     2528      38,    39,    40,     0,     0,     0,     0,     0,     0,    41,
     2529      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23732530       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2374        0,     0,     0,     0,     0,     0,   807,     0,     0,     0,
    2375     1394,     0,  1395,   341,   364,   414,    34,   414,    35,     0,
    2376       36,   414,     0,    38,    39,   761,  1405,   970,  1406,     0,
    2377        0,     0,     0,     0,     0,     0,     0,   981,     0,     0,
    2378        0,     0,   613,   613,   990,     0,  1413,     0,     0,     0,
     2531       0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
     2532       0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
     2533       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2534      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2535       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2536       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    23792537       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2380       44,     0,  1431,  1433,     0,     0,     0,    45,    46,   364,
    2381        0,     0,     0,  1438,     0,     0,  1240,     0,     0,   414,
    2382        0,     0,     0,     0,     0,     0,  1008,  1009,     0,     0,
    2383      346,     0,     0,     0,     0,     0,     0,     0,     0,  1462,
    2384        0,   414,  1154,     0,   346,     0,     0,     0,  1469,     0,
    2385        0,  1471,   364,  1473,  1475,  1477,     0,     0,   414,  1166,
    2386        0,   613,   613,  1171,     0,     0,     0,     0,     0,   507,
    2387        0,   509,   512,   364,   364,   283,   284,     0,   285,   515,
    2388      516,     0,     0,     0,  1039,     0,     0,     0,   382,     0,
    2389        0,     0,     0,   509,   509,  1508,     0,  1510,     0,  1240,
    2390        0,     0,     0,     0,   286,     0,     0,     0,     0,     0,
    2391      287,     0,     0,     0,   288,  1522,     0,   289,   290,   291,
    2392      292,    41,    42,     0,   293,   294,   346,     0,     0,     0,
    2393        0,   509,     0,     0,     0,     0,   414,     0,   414,     0,
    2394        0,     0,     0,   414,     0,     0,     0,   295,     0,   379,
    2395        0,     0,   613,     0,     0,     0,   709,    46,   297,   298,
    2396      299,   300,     0,     0,     0,   321,     0,   509,     0,     0,
    2397        0,     0,     0,     0,     0,     0,     0,   807,   414,  1256,
    2398        0,  1130,  1131,     0,     0,     0,     0,     0,     0,     0,
    2399        0,     0,     0,     0,     0,   382,     0,     0,     0,     0,
    2400        0,   981,   364,     0,  1145,     0,   744,     0,     8,     9,
     2538       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2539       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
     2540       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2541       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2543       0,    43,     0,    44,     0,     0,     0,  -519,     0,    45,
     2544      46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    24012545      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2402       20,    21,    22,    23,    24,    25,  -294,  1161,    26,    27,
    2403       28,     0,     0,     0,     0,     0,     0,    31,  1176,     0,
    2404      283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
     2546      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2547      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
    24052548       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2406      382,     0,  1194,   341,     0,    34,     0,     0,     0,   286,
    2407        0,     0,    38,    39,     0,   640,  -294,   981,   981,   288,
    2408        0,   364,   289,   290,   291,   292,    41,    42,     0,   293,
    2409      294,     0,     0,     0,     0,     0,     0,     0,  1226,     0,
    2410        0,     0,     0,     0,     0,     0,     0,   634,     0,   338,
    2411        0,     0,   295,     0,   764,     0,    45,    46,     0,     0,
    2412        0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
    2413        0,     0,     0,   364,   364,   509,   509,   509,   509,   509,
    2414      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2415      509,   509,   509,     0,     0,   981,     0,     0,     0,     0,
    24162549       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2417        0,     0,     0,     0,   866,     0,     0,     0,     0,     0,
    2418        0,     0,     0,     0,     0,     0,     0,     0,     0,  1280,
    2419     1281,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2420        0,     0,     0,     0,     0,     0,     0,     0,     1,     2,
     2550       0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
     2551      37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
     2552       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2554       0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
     2555       0,     0,     0,     0,     0,    45,    46,     1,     2,   207,
     2556       4,     5,     6,     7,     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,    29,     0,     0,
     2559      30,     0,     0,    31,     0,     0,     0,     0,     0,     0,
     2560       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2562       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
     2563       0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2564      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2565      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2566       0,     0,     0,     0,     0,    44,    31,     0,     0,     0,
     2567       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2568       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
     2570       0,   208,    39,    40,     0,     0,     0,     0,     0,     0,
     2571      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2572       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2573       0,     0,     0,     0,     0,     0,    43,     0,   209,     0,
     2574       0,     0,     0,     0,    45,    46,     2,   207,     4,     5,
     2575       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2576      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2577       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2578       0,    31,     0,     0,     0,     0,     8,     9,    10,    11,
     2579      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2580      22,    23,    24,    25,     0,     0,    26,    27,    28,    34,
     2581       0,    35,     0,    36,     0,    31,    38,    39,     0,     2,
    24212582     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    24222583      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2423       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2424        0,    30,   283,   284,    31,   285,     0,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,     0,     0,   364,     0,
    2426        0,     0,     0,     0,     0,     0,     0,     0,     0,   981,
    2427        0,   286,    34,     0,    35,     0,    36,   287,     0,    38,
    2428       39,   288,   509,     0,   289,   290,   291,   292,    41,    42,
    2429        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
     2584      23,    24,    25,    34,     0,    26,    27,    28,     0,     0,
     2585      38,    39,  -399,   677,    31,     0,     0,     0,     0,    45,
     2586      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24302587       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2431        0,     0,     0,     0,   295,     0,  1063,     0,     0,     0,
    2432        0,     0,     0,    45,    46,   297,   298,   299,   300,     0,
    2433        0,     0,     0,  1388,     0,     0,   744,  -129,     0,     0,
    2434        0,     0,     0,     0,     0,   509,     0,     0,   414,     8,
    2435        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2436       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2437       27,    28,     0,   414,   414,     0,   509,     0,    31,     0,
     2588       0,     0,    34,     0,    35,   634,    36,   338,     0,    38,
     2589      39,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    24382590       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2439        0,     0,     0,     0,     0,     0,     0,     0,   414,     0,
    2440        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2441        0,     0,     0,   208,    39,     0,     0,     0,     0,     0,
    2442     1447,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2443        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2444        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2445       19,    20,    21,    22,    23,    24,    25,    45,    46,    26,
    2446       27,    28,    29,     0,     0,    30,   283,   284,    31,  1048,
    2447     1049,     0,  1050,     0,     0,  1051,  1052,  1053,  1054,  1055,
    2448     1056,  1057,  1058,     0,     0,     0,  1059,     0,     0,     0,
    2449     1060,  1061,     0,    33,     0,   286,    34,   509,    35,     0,
    2450       36,  1062,  1514,    38,    39,   288,     0,     0,   289,   290,
    2451      291,   292,    41,    42,     0,   293,   294,     8,     9,    10,
    2452       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2453       21,    22,    23,    24,    25,  -295,     0,     0,   295,     0,
    2454     1063,     0,   509,   172,     0,     0,    31,    45,    46,   297,
    2455      298,   299,   300,     0,     0,   321,     0,  1064,     0,     0,
    2456        0,  -129,     0,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2458      509,     0,     0,     0,     0,  -295,     0,     0,     0,     0,
    2459        0,     0,     0,   509,     0,     0,     0,     0,     0,     0,
    2460        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2461        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2462       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2463       27,    28,    29,     0,   509,    30,   283,   284,    31,   285,
     2591       0,  1350,     0,     0,     0,     0,     0,     0,     0,     0,
     2592       0,     0,     0,     0,     0,     0,   677,     0,     0,     0,
     2593       0,     0,    45,    46,     2,   207,     4,     5,     6,     7,
    24642594       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    24652595      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2466       26,    27,    28,     0,     0,   286,    34,     0,    35,    31,
    2467       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
     2596      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2597       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2598      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2599      25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
     2600       0,    36,    31,   684,    38,    39,     0,     0,     0,     0,
     2601       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2602       0,     0,     0,     0,     0,     0,  1352,     0,     0,     0,
     2603      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2604       0,   677,     0,     0,     0,     0,     0,    45,    46,     2,
     2605     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2606      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2607      23,    24,    25,     0,   685,    26,    27,    28,  1091,     0,
     2608      45,    46,     0,     0,    31,     0,     0,     0,     0,     0,
     2609       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2610       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2611       0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
     2612      39,     0,     2,   207,     4,     5,     6,     7,     8,     9,
     2613      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2614      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2615      28,     0,     0,     0,     0,     0,   271,    31,     0,     0,
     2616       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2617       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2618       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2619       0,     0,    38,    39,     0,     2,   207,     4,     5,     6,
     2620       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2621      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2622       0,    26,    27,    28,     0,     0,     0,     0,     0,   677,
     2623      31,     0,     0,     0,     0,    45,    46,     0,     0,     0,
     2624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2625       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2626      35,     0,    36,     0,     0,    38,    39,     0,     2,   207,
     2627       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2628      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2629      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2630       0,     0,   592,    31,     0,     0,     0,     0,    45,    46,
     2631       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2633       0,    34,     0,    35,     0,    36,     0,     0,   208,    39,
     2634       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2635      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2636      26,    27,    28,     0,     0,     0,     0,   283,   284,    31,
     2637     285,     0,     0,     0,     0,   209,     0,     0,     0,     0,
     2638       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,     0,   286,    34,     0,     0,
     2640       0,     0,   287,     0,    38,    39,   288,     0,     0,   289,
     2641     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
     2642       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2643       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
     2644       0,   517,     0,     0,   172,     0,     0,    45,    46,   297,
     2645     298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
     2646      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2647      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2648     283,   284,    31,   285,     8,     9,    10,    11,    12,    13,
     2649      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2650      24,    25,     0,     0,    26,    27,    28,     0,     0,   286,
     2651      34,     0,     0,    31,     0,   287,     0,    38,    39,   288,
     2652       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
     2653     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2654       0,    34,     0,     0,     0,     0,    37,     0,   336,   337,
     2655      40,     0,   295,   -35,   296,     0,     0,    41,    42,     0,
     2656      45,    46,   297,   298,   299,   300,     8,     9,    10,    11,
     2657      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2658      22,    23,    24,    25,     0,   338,    26,    27,    28,     0,
     2659       0,    45,    46,   283,   284,    31,   285,     8,     9,    10,
     2660      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2661      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2662       0,     0,   286,    34,     0,     0,    31,     0,   287,     0,
     2663      38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
     2664      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2665       0,     0,     0,     0,    34,     0,     0,     0,     0,   111,
     2666       0,    38,    39,     0,     0,   295,     0,   296,     0,     0,
     2667      41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
     2668       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2669      19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
     2670      27,    28,     0,     0,    45,    46,   283,   284,    31,   285,
     2671       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2672      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2673      26,    27,    28,     0,     0,   286,    34,     0,     0,    31,
     2674     684,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    24682675     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    24692676       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2470        0,     0,   111,     0,    38,    39,     0,     0,   295,     0,
    2471       44,   509,     0,    41,    42,     0,     0,    45,    46,   297,
    2472      298,   299,   300,     2,   207,     4,     5,     6,     7,     8,
    2473        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2474       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2475       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2476        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2477        0,     0,     0,     0,   509,   509,     0,     0,     0,     0,
    2478        0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
    2479       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2480      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2481        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482        0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2483      343,     0,     0,     0,     0,   760,     0,   344,    46,   297,
    2484      298,   299,   300,     2,   207,     4,     5,     6,     7,     8,
    2485        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2486       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2487       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2488        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2489       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2490       26,    27,    28,     0,     0,   286,    34,     0,    35,    31,
    2491       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2492      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2493        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2494        0,     0,    37,     0,    38,    39,    40,     0,   295,     0,
    2495      969,     0,     0,    41,    42,   760,     0,   344,    46,   297,
    2496      298,   299,   300,     0,     0,     0,     0,     0,     0,     0,
    2497        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2498        0,   158,     0,     0,     0,   509,     0,     0,    45,    46,
    2499        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2500        0,     0,     0,   509,     0,     0,     0,     0,     0,     0,
    2501        0,     0,     0,     0,     0,     0,     2,   207,     4,     5,
    2502        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2677       0,     0,     0,     0,    38,    39,     0,     0,   295,     0,
     2678     158,     0,     0,     0,     0,     0,    45,    46,   297,   298,
     2679     299,   300,     8,     9,    10,    11,    12,    13,    14,    15,
    25032680      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2504        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
     2681       0,   685,    26,    27,    28,  1220,     0,    45,    46,   283,
    25052682     284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    25062683      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2507       25,     0,     0,    26,    27,    28,   509,   509,   286,    34,
    2508        0,    35,    31,    36,   287,     0,    38,    39,   288,     0,
     2684      25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
     2685       0,     0,    31,     0,   287,     0,    38,    39,   288,     0,
    25092686       0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    25102687       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25112688      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2512        0,   295,     0,   969,     0,     0,     0,     0,   760,     0,
    2513       45,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2514        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2515       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2516        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2517      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2518       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2519       25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
    2520        0,    35,    31,    36,   287,     0,    38,    39,   288,     0,
    2521        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2522        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2523       34,     0,     0,     0,     0,     0,     0,   208,    39,     0,
    2524        0,   295,     0,   343,     0,     0,     0,     0,     0,     0,
    2525      344,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2526        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2527       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2528        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2529      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2530       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2531       25,     0,     0,     0,     0,     0,     0,     0,   286,    34,
    2532        0,    35,    31,    36,   287,     0,   208,    39,   288,     0,
    2533        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2534        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2535       34,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2536        0,   295,     0,  1005,     0,     0,     0,     0,     0,     0,
    2537     1006,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2538        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2539       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2540        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2541      284,    31,   285,     0,     0,     0,     0,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,   286,    34,
    2544        0,    35,     0,    36,   287,     0,    38,    39,   288,     0,
    2545        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2546        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2548        0,   295,     0,   969,     0,     0,     0,     0,     0,     0,
    2549      344,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2550        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2551       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2552        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2553      284,    31,   285,     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,     0,   286,    34,
    2556        0,    35,     0,    36,   287,     0,   208,    39,   288,     0,
    2557        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2558        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2559        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2560        0,   295,     0,   379,     0,     0,     0,     0,     0,     0,
    2561       45,    46,   297,   298,   299,   300,     1,     2,     3,     4,
    2562        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2563       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2564       25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
    2565        0,     0,    31,    32,     0,     0,     0,     0,     0,     0,
    2566        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2567        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2568       34,     0,    35,     0,    36,    37,     0,    38,    39,    40,
    2569        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
    2570        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2571        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2572        0,     0,    43,     0,    44,     0,     0,     0,  -523,     0,
    2573        0,    45,    46,     1,     2,     3,     4,     5,     6,     7,
    2574        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2575       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2576       26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
    2577       32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2578        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2579        0,     0,     0,     0,    33,     0,     0,    34,     0,    35,
    2580        0,    36,    37,     0,    38,    39,    40,     0,     0,     0,
    2581        0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
    2582        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2583        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2584        0,    44,     0,     0,     0,     0,     0,     0,    45,    46,
    2585        1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2586       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2587       21,    22,    23,    24,    25,  -294,     0,    26,    27,    28,
    2588       29,     0,     0,    30,     0,     0,    31,     0,     0,     0,
    2589        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2590        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2591        0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
    2592        0,    38,    39,     0,     0,  -294,     2,   207,     4,     5,
    2593        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2594       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2595        0,     0,    26,    27,    28,     0,     0,     0,    44,     0,
    2596        0,    31,     0,     0,     0,    45,    46,     0,     0,     0,
    2597        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2598        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2599        0,    35,     0,    36,    37,     0,   208,    39,    40,     0,
    2600        0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
    2601        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2602        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2603        0,    43,     0,   209,     0,     0,     0,     0,     0,     0,
    2604       45,    46,     2,   207,     4,     5,     6,     7,     8,     9,
    2605       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2606       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2607       28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2608        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2609       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2610        0,    26,    27,    28,     0,    34,     0,    35,     0,    36,
    2611       31,     0,    38,    39,     0,     0,     0,     0,     0,     0,
    2612        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2613        0,     0,     0,     0,  1367,     0,     0,     0,    34,     0,
    2614        0,     0,     0,    37,     0,   336,   337,    40,     0,   678,
    2615        0,     0,     0,     0,    41,    42,    45,    46,     2,   207,
    2616        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2617       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2618       24,    25,   338,     0,    26,    27,    28,     0,     0,    45,
    2619       46,     0,     0,    31,     0,     0,     0,     8,     9,    10,
    2620       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2621       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2622        0,    34,     0,    35,     0,    36,    31,     0,    38,    39,
    2623        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2624        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2625     1369,     0,     0,     0,    34,     0,     0,     0,     0,   111,
    2626        0,    38,    39,     0,     0,   678,     0,     0,     0,     0,
    2627       41,    42,    45,    46,     2,   207,     4,     5,     6,     7,
    2628        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2629       18,    19,    20,    21,    22,    23,    24,    25,    44,     0,
    2630       26,    27,    28,     0,     0,    45,    46,     0,     0,    31,
    2631        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2634        0,    36,     0,     0,   208,    39,     0,     2,   207,     4,
    2635        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2636       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2637       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2638        0,   271,    31,     0,     0,     0,     0,     0,    45,    46,
    2639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2641       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2642        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2643       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2644       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2645        0,     0,     0,     0,   678,    31,     0,     0,     0,     0,
    2646        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
    2647        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2648        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2649       38,    39,     0,     2,   207,     4,     5,     6,     7,     8,
    2650        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2651       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2652       27,    28,     0,     0,     0,     0,     0,   592,    31,     0,
    2653        0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    2654        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2655        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2656       36,     0,     0,   208,    39,     8,     9,    10,    11,    12,
    2657       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2658       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2659        0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
    2660      209,     0,     0,     0,     0,     0,     0,    45,    46,     0,
    2661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2662        0,   286,    34,     0,     0,     0,     0,   287,     0,    38,
    2663       39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2664        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2665        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,   295,     0,   517,     0,     0,   172,
    2667        0,     0,     0,    45,    46,   297,   298,   299,   300,     8,
    2668        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2669       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2670       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2671        0,     0,     0,     0,     0,     0,     0,     8,     9,    10,
    2672       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2673       21,    22,    23,    24,    25,   286,    34,    26,    27,    28,
    2674        0,   640,     0,    38,    39,   288,    31,     0,   289,   290,
    2675      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2676        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2677        0,     0,     0,     0,    34,     0,     0,     0,   295,   -35,
    2678      741,    38,    39,     0,     0,     0,     0,    45,    46,   297,
    2679      298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
    2680       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2681       25,     0,     0,    26,    27,    28,   634,     0,   338,     0,
    2682      283,   284,    31,   285,     0,    45,    46,     0,     0,     0,
    2683        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2684       17,    18,    19,    20,    21,    22,    23,    24,    25,   286,
    2685       34,    26,    27,    28,     0,   287,     0,    38,    39,   288,
    2686       31,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2687      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2688        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2689        0,     0,   295,     0,   296,    38,    39,     0,     0,     0,
    2690        0,    45,    46,   297,   298,   299,   300,     8,     9,    10,
    2691       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2692       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2693        0,     0,   258,     0,   283,   284,    31,   285,     0,    45,
    2694       46,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2695       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2696       23,    24,    25,   286,    34,    26,    27,    28,     0,   287,
    2697        0,    38,    39,   288,    31,     0,   289,   290,   291,   292,
    2698       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2699        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2700        0,     0,    34,     0,     0,     0,   295,     0,   158,    38,
    2701       39,     0,     0,     0,     0,    45,    46,   297,   298,   299,
    2702      300,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2703       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2704        0,    26,    27,    28,     0,     0,   158,     0,   283,   284,
    2705       31,   285,     0,    45,    46,     0,     0,     0,     0,     8,
    2706        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2707       19,    20,    21,    22,    23,    24,    25,   286,    34,    26,
    2708       27,    28,     0,   287,     0,    38,    39,   288,    31,     0,
    2709      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2710        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2711        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2712      295,     0,   592,   208,    39,     0,     0,     0,     0,    45,
     2689       0,   295,     0,   592,     0,     0,     0,     0,     0,    45,
    27132690      46,   297,   298,   299,   300,     8,     9,    10,    11,    12,
    27142691      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2715       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2716      271,     0,   283,   284,    31,   285,     0,    45,    46,     0,
     2692      23,    24,    25,     0,   258,    26,    27,    28,     0,     0,
     2693      45,    46,   283,   284,    31,   285,     0,     0,     0,     0,
    27172694       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    27182695      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    27222699       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27232700      34,     0,     0,     0,   295,     0,   379,    38,    39,     0,
    2724        0,     0,     0,    45,    46,   297,   298,   299,   300,   467,
    2725        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
     2701       0,     0,    45,    46,   297,   298,   299,   300,   467,     2,
     2702     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2703      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2704      23,    24,    25,     0,   158,    26,    27,    28,     0,     0,
     2705      45,    46,     0,     0,    31,     0,     0,     0,     8,     9,
     2706      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2707      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2708      28,     0,    34,     0,    35,     0,    36,    31,     0,    38,
     2709      39,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    27262710      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2727       22,    23,    24,    25,   338,     0,    26,    27,    28,     0,
    2728        0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
    2729        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2730       19,    20,    21,    22,    23,    24,    25,  -294,     0,    26,
    2731       27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
    2732       38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
    2733       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2734       21,    22,    23,    24,    25,  -294,    34,    26,    27,    28,
    2735        0,    37,     0,   336,   337,    40,    31,  -294,     0,     0,
    2736       -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
    2737       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2738       23,    24,    25,     0,    34,    26,    27,    28,   634,    37,
    2739      338,   336,   337,    40,    31,  -294,     0,    45,    46,     0,
    2740       41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
    2741       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2742       25,     0,    34,    26,    27,    28,     0,    37,   338,    38,
    2743       39,    40,    31,     0,     0,    45,    46,     0,    41,    42,
    2744        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2711      22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
     2712      37,     0,    38,    39,    40,    31,     0,     0,     0,    -3,
     2713       0,    41,    42,     0,     8,     9,    10,    11,    12,    13,
     2714      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2715      24,    25,     0,    34,    26,    27,    28,    43,    37,   158,
     2716      38,    39,    40,    31,     0,    45,    46,     0,     0,    41,
     2717      42,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2718      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2719       0,    34,    26,    27,    28,    43,    37,    44,   208,    39,
     2720      40,    31,     0,    45,    46,     0,     0,    41,    42,     0,
     2721       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2722      18,    19,    20,    21,    22,    23,    24,    25,  -291,    34,
     2723      26,    27,    28,    43,    37,   271,   336,   337,    40,    31,
     2724       0,    45,    46,     0,     0,    41,    42,     0,     8,     9,
     2725      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2726      20,    21,    22,    23,    24,    25,  -291,    34,    26,    27,
     2727      28,   634,     0,   338,    38,    39,     0,    31,  -291,    45,
     2728      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    27452729      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2746       34,    26,    27,    28,    43,    37,    44,   208,    39,    40,
    2747       31,     0,     0,    45,    46,     0,    41,    42,     0,     8,
     2730       0,    26,    27,    28,     0,    34,     0,     0,     0,   634,
     2731      31,   338,    38,    39,     0,     0,  -291,    45,    46,     8,
    27482732       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    27492733      19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2750       27,    28,    43,    37,   271,   336,   337,    40,    31,   685,
    2751        0,    45,    46,     0,    41,    42,     0,     8,     9,    10,
     2734      27,    28,     0,     0,     0,   208,    39,     0,    31,   338,
     2735       0,     0,     0,     0,     0,    45,    46,     8,     9,    10,
    27522736      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2753       21,    22,    23,    24,    25,  -294,    34,    26,    27,    28,
    2754      634,     0,   338,    38,    39,     0,    31,     0,     0,    45,
    2755       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2756        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2757        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2758      686,    38,    39,     0,   687,  -294,     0,    45,    46,     0,
     2737      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
     2738       0,     0,   271,    38,    39,     0,    31,     0,    45,    46,
    27592739       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    27602740      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2761       26,    27,    28,     0,     0,     0,     0,     0,   338,    31,
    2762      685,     0,     0,     0,     0,    45,    46,     0,     8,     9,
     2741      26,    27,    28,     0,    34,     0,     0,     0,     0,    31,
     2742     338,    38,    39,     0,     0,     0,    45,    46,     8,     9,
    27632743      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    27642744      20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
    2765       28,     0,     0,     0,    38,    39,     0,    31,   685,     8,
    2766        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2767       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2768       27,    28,     0,     0,     0,    34,     0,     0,    31,     0,
    2769        0,   686,    38,    39,     0,  1099,     0,     0,    45,    46,
     2745      28,     0,     0,     0,    38,    39,     0,    31,   685,     0,
     2746       0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    27702747       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2771        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2772        0,     0,     0,    38,    39,     0,     0,     0,     0,   686,
    2773        0,     0,     0,  1231,     0,     0,    45,    46,     0,     0,
    2774        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2775       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2776      686,    26,    27,    28,     0,     0,     0,    45,    46,     0,
    2777       31,     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,    34,     0,
    2780       31,     0,     0,     0,     0,    38,    39,     0,     0,     8,
    2781        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2782       19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2783       27,    28,   485,   486,   487,    38,    39,     0,    31,     0,
    2784        0,     0,   592,     0,     0,     0,     0,     0,     0,    45,
    2785       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2786        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2787        0,     0,    44,    38,    39,     0,     0,     0,     0,    45,
    2788       46,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2789       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2790       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2791        0,     0,     0,     0,     0,     0,    31,     0,   283,   284,
    2792        0,   285,  1049,     0,  1050,     0,     0,  1051,  1052,  1053,
    2793     1054,  1055,  1056,  1057,  1058,     0,     0,  1547,  1059,     0,
    2794        0,     0,  1060,  1061,    34,    33,    35,   286,    36,     0,
    2795        0,    38,    39,  1062,     0,     0,     0,   288,     0,     0,
    2796      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2748       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2749       0,   592,    38,    39,     0,     0,     0,    45,    46,     2,
     2750     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2751      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2752      23,    24,    25,     0,     0,    26,    27,    28,     0,    44,
     2753       0,     0,     0,     0,    31,    45,    46,     0,     0,     0,
    27972754       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2798        0,     0,     0,     0,     0,     0,     0,  -415,     0,     0,
    2799      295,     0,   379,     0,     0,   172,     0,     0,     0,    45,
    2800       46,   297,   298,   299,   300,     0,     0,     0,     0,  1064,
    2801        0,   283,   284,  -129,   285,  1049,     0,  1050,     0,     0,
    2802     1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,     0,     0,
    2803        0,  1059,     0,     0,     0,  1060,  1061,     0,    33,     0,
    2804      286,     0,     0,     0,     0,     0,  1062,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2756       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
     2757      39,   283,   284,     0,   285,  1041,     0,  1042,     0,     0,
     2758    1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,
     2759    1524,  1051,     0,     0,     0,  1052,  1053,     0,    33,     0,
     2760     286,     0,     0,     0,     0,  -412,  1054,     0,     0,     0,
    28052761     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    28062762     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    28072763       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28082764       0,     0,     0,   295,     0,   379,     0,     0,   172,     0,
     2765       0,    45,    46,   297,   298,   299,   300,     0,     0,   283,
     2766     284,  1056,   285,  1041,     0,  1042,  -126,     0,  1043,  1044,
     2767    1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,
     2768       0,     0,     0,  1052,  1053,     0,    33,     0,   286,     0,
     2769       0,     0,     0,     0,  1054,     0,     0,     0,   288,     0,
     2770       0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     2771       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2772       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2773       0,   295,     0,   379,     0,     0,   172,     0,     0,    45,
     2774      46,   297,   298,   299,   300,     0,     0,     0,     0,  1056,
     2775       0,     0,     0,     0,  -126,     2,   207,     4,     5,     6,
     2776       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2777      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2778       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2779      31,     0,   283,   284,     0,   285,  1041,     0,  1042,  1398,
     2780    1399,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
     2781       0,  1524,  1051,     0,     0,     0,  1052,  1053,    34,    33,
     2782      35,   286,    36,     0,     0,    38,    39,  1054,     0,     0,
     2783       0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
     2784       0,   293,   294,     0,     0,     0,     0,  1311,     0,     0,
     2785       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2786       0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
    28092787       0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
    2810        0,     0,  1064,     0,     0,     0,  -129,     2,   207,     4,
    2811        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2812       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2813       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2814        0,     0,    31,     0,   283,   284,     0,   285,  1049,     0,
    2815     1050,  1417,  1418,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2816     1058,     0,     0,  1547,  1059,     0,     0,     0,  1060,  1061,
    2817       34,    33,    35,   286,    36,     0,     0,    38,    39,  1062,
    2818        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2819       41,    42,     0,   293,   294,     0,     0,     0,     0,  1325,
     2788     283,   284,  1056,   285,  1041,     0,  1042,  1398,  1399,  1043,
     2789    1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,
     2790    1051,     0,     0,     0,  1052,  1053,     0,    33,     0,   286,
     2791       0,     0,     0,     0,     0,  1054,     0,     0,     0,   288,
     2792       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
     2793     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28202794       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2821        0,     0,     0,     0,     0,     0,   295,     0,   379,     0,
    2822        0,   172,     0,     0,     0,    45,    46,   297,   298,   299,
    2823      300,     0,     0,   283,   284,  1064,   285,  1049,     0,  1050,
    2824     1417,  1418,  1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,
    2825        0,     0,     0,  1059,     0,     0,     0,  1060,  1061,     0,
    2826       33,     0,   286,     0,     0,     0,     0,     0,  1062,     0,
    2827        0,     0,   288,     0,     0,   289,   290,   291,   292,    41,
    2828       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
     2795       0,     0,   295,     0,   379,     0,     0,   172,     0,     0,
     2796      45,    46,   297,   298,   299,   300,     0,     0,   283,   284,
     2797    1056,   285,  1041,     0,  1042,     0,     0,  1043,  1044,  1045,
     2798    1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,     0,
     2799       0,     0,  1052,  1053,     0,    33,     0,   286,     0,     0,
     2800       0,     0,     0,  1054,     0,     0,     0,   288,     0,     0,
     2801     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2802       0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
    28292803       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2830        0,     0,     0,     0,     0,   295,     0,   379,     0,     0,
    2831      172,     0,     0,     0,    45,    46,   297,   298,   299,   300,
    2832        0,     0,   283,   284,  1064,   285,  1049,     0,  1050,     0,
    2833        0,  1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,     0,
    2834        0,     0,  1059,     0,     0,     0,  1060,  1061,     0,    33,
    2835        0,   286,     0,     0,     0,     0,     0,  1062,     0,     0,
     2804     295,     0,   379,     0,     0,   172,     0,     0,    45,    46,
     2805     297,   298,   299,   300,   286,     0,     0,     0,  1056,     0,
     2806     640,     0,   140,   141,   288,     0,     0,   289,   290,   291,
     2807     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
     2808       0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
     2809       0,     0,     0,     0,     0,     0,     0,   295,     0,   641,
     2810       0,   642,   380,     0,     0,    45,    46,   297,   298,   299,
     2811     300,   286,     0,     0,     0,     0,     0,   287,     0,     0,
    28362812       0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2837        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2838      283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
    2839        0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
    2840        0,     0,     0,    45,    46,   297,   298,   299,   300,   286,
    2841        0,     0,     0,  1064,     0,   287,     0,     0,     0,   288,
    2842        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2843      294,     0,     0,     0,     0,     0,     0,     0,   283,   284,
    2844        0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
    2845        0,     0,   295,     0,   379,     0,     0,   283,   284,     0,
    2846      285,   344,    46,   297,   298,   299,   300,   286,     0,     0,
     2813       0,   293,   294,     0,     0,     0,     0,     0,     0,   283,
     2814     284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
     2815       0,     0,     0,     0,   295,     0,   379,     0,   283,   284,
     2816       0,   285,   708,    46,   297,   298,   299,   300,   286,     0,
     2817       0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
     2818       0,   289,   290,   291,   292,    41,    42,   286,   293,   294,
    28472819       0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
    2848      289,   290,   291,   292,    41,    42,   286,   293,   294,     0,
    2849        0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
    2850      290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
    2851      506,     0,     0,     0,     0,   283,   284,     0,   285,    45,
    2852       46,   297,   298,   299,   300,     0,     0,     0,     0,   295,
    2853        0,     0,     0,     0,   283,   284,     0,   285,    45,    46,
     2820     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
     2821       0,   295,     0,   379,     0,   283,   284,     0,   285,   344,
     2822      46,   297,   298,   299,   300,     0,     0,     0,     0,     0,
     2823     506,     0,     0,     0,   283,   284,     0,   285,    45,    46,
    28542824     297,   298,   299,   300,   286,     0,     0,     0,     0,     0,
    28552825     287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    28562826     292,    41,    42,   286,   293,   294,     0,     0,     0,   287,
    28572827       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2858       41,    42,     0,   293,   294,     0,     0,   511,     0,     0,
    2859        0,     0,     0,     0,     0,     0,    45,    46,   297,   298,
    2860      299,   300,     0,     0,     0,     0,   514,     0,     0,     0,
    2861        0,     0,     0,     0,     0,    45,    46,   297,   298,   299,
    2862      300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2863       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2864       21,    22,    23,    24,    25,     0,     0,     0,     0,     0,
    2865        0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2828      41,    42,     0,   293,   294,     0,     0,   295,     0,     0,
     2829       0,   283,   284,     0,   285,    45,    46,   297,   298,   299,
     2830     300,     0,     0,     0,     0,     0,   511,     0,     0,     0,
     2831       0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
     2832     286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
     2833     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
     2834     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
     2835       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2836       0,     0,     0,   514,     0,     0,     0,     0,     0,     0,
     2837       0,    45,    46,   297,   298,   299,   300,     2,   207,     4,
     2838       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2839      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2840      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2841       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    28662842       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28672843       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2868        0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
    2869        0,   175,   176,    40,     0,     0,     0,     0,     0,     0,
    2870       41,    42,   206,     2,   207,     4,     5,     6,     7,     8,
    2871        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2872       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2873       27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
     2844      34,     0,    35,     0,    36,    37,     0,   175,   176,    40,
     2845       0,     0,     0,     0,     0,     0,    41,    42,   206,     2,
     2846     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2847      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2848      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2849       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
    28742850       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28752851       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2876        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2877       36,     0,     0,   208,    39,   467,     2,   207,     4,     5,
     2852       0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
     2853      39,   467,     2,   207,     4,     5,     6,     7,     8,     9,
     2854      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2855      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2856      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2857       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2858       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2859       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2860       0,     0,    38,    39,     2,   207,     4,     5,     6,     7,
     2861       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2862      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2863      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2864       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2865      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2866       0,    26,    27,    28,   485,   486,   487,    34,     0,    35,
     2867      31,    36,     0,     0,   208,    39,     0,     0,     0,     0,
     2868       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2869       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2870       0,     0,     0,     0,     0,    38,    39
     2871};
     2872
     2873#define yypact_value_is_default(yystate) \
     2874  ((yystate) == (-1310))
     2875
     2876#define yytable_value_is_error(yytable_value) \
     2877  YYID (0)
     2878
     2879static const yytype_int16 yycheck[] =
     2880{
     2881       0,     1,   240,   205,   186,   186,   117,     0,    43,   534,
     2882      43,    43,   600,   756,   646,     1,   749,   187,   521,     0,
     2883     186,   186,   186,   157,   169,   170,   749,   749,   186,   106,
     2884     220,   602,    32,   186,   345,   349,     0,   188,   280,    32,
     2885     157,   513,   600,    43,   874,    43,   603,   874,   349,    49,
     2886     620,    32,   609,   733,     0,   983,    49,   600,   492,   571,
     2887       0,     1,   496,    63,   602,   187,    66,    32,    32,    69,
     2888      63,   692,    43,    66,    64,     0,    69,  1040,    39,   156,
     2889       1,   600,    57,    69,   266,   266,    32,    43,    51,  1398,
     2890     364,   202,    32,    63,   368,  1321,   418,   267,    82,   600,
     2891     266,   266,   266,  1052,  1053,  1033,   106,    32,   266,   600,
     2892     600,   262,   263,   266,   114,    72,   438,   117,   118,   109,
     2893     282,    72,  1402,    96,   446,    39,    66,   695,    39,    69,
     2894      28,   109,   107,    39,    39,   110,    95,    39,    82,   128,
     2895      39,    66,   131,  1021,    82,   267,   109,   147,   148,   122,
     2896     111,   186,    11,   186,   186,   148,   156,   157,     0,   295,
     2897    1469,   161,   132,  1020,  1021,   109,    44,    45,   161,     0,
     2898     129,   482,   905,   109,   488,   132,     0,     1,    72,  1128,
     2899      78,   132,   905,   905,   687,    49,   186,   187,   186,   109,
     2900      32,   257,   130,  1419,   187,   109,   109,   111,   109,   718,
     2901     111,    32,   202,   109,   109,   111,   111,   109,    32,   111,
     2902     210,   131,    43,  1040,    72,   186,  1496,   210,    49,    82,
     2903     410,  1501,   222,   117,   812,    83,    84,   718,   718,   222,
     2904     186,   266,    63,   266,   266,    66,   406,   115,    69,  1452,
     2905     240,  1521,    85,   986,   219,    69,   112,   110,  1528,    82,
     2906     114,   109,   252,   824,   812,   116,   107,   814,   114,   252,
     2907     260,    44,    45,     3,   341,   265,   266,   267,   490,   812,
     2908     113,   252,   272,  1486,   267,  1488,   257,    82,   111,   900,
     2909     131,   793,   222,   147,   406,   396,   824,   252,   252,    49,
     2910     426,   427,   924,   812,   371,   295,     3,   222,   273,   433,
     2911      96,   602,  1501,   116,   109,   280,   252,   307,     0,   620,
     2912     480,   812,   252,   424,   625,   589,   433,   148,   110,   430,
     2913     112,   812,   812,   323,   116,  1288,   122,   252,   328,  1528,
     2914     161,   114,   253,    44,    45,   328,     0,    82,   906,   131,
     2915     132,   341,   504,   110,   932,   345,   210,  1225,   482,   349,
     2916     350,   109,   418,   111,   114,   186,   187,   631,   480,   681,
     2917     109,   116,   933,   130,   364,   110,    90,    91,   368,  1049,
     2918     506,   371,   438,   348,   932,   511,   240,   132,   514,   210,
     2919     446,  1211,   604,   951,  1211,   130,   608,   426,   427,   932,
     2920     365,   222,   526,    72,   369,   112,   396,  1275,   116,   116,
     2921     285,   125,   126,   114,    83,    84,   406,   629,   272,   526,
     2922     252,   633,   130,   406,  1472,   257,   110,  1274,  1275,    55,
     2923    1478,   252,   307,   308,   424,   350,   426,   427,   252,   999,
     2924     430,   567,   111,   433,   745,   266,   130,   418,   112,   116,
     2925    1498,   110,   116,   307,   111,  1503,   113,   116,   525,  1501,
     2926     210,  1008,  1009,   130,   454,   494,   590,   438,  1386,  1387,
     2927     345,  1288,    98,   130,   967,   446,   635,   636,   131,  1521,
     2928     229,   112,   472,   590,   513,   116,  1528,   116,  1441,   110,
     2929     480,   345,   482,   652,   484,  1448,   116,   480,   488,   248,
     2930     732,   484,   110,   132,   494,  1127,   381,   328,   116,   116,
     2931     130,   482,   647,   484,   666,   656,   506,   941,   508,   981,
     2932     824,   511,   272,   513,   514,   132,  1394,   687,   349,   109,
     2933     484,   521,   109,   824,   116,   525,   526,   109,  1099,   803,
     2934     109,   111,   111,   113,   808,   295,  1499,  1394,   484,   578,
     2935     132,   710,   109,   654,   484,   116,   467,   307,   473,  1117,
     2936     130,     4,     5,     6,     7,     8,     9,   116,   194,   484,
     2937     110,   132,   426,   427,   116,   687,   116,   116,   116,   116,
     2938     570,   571,   116,   132,   736,   406,   418,   109,   578,   116,
     2939     132,   217,  1085,   132,   132,   132,   109,  1090,   132,   589,
     2940     590,   227,   117,   904,   594,   132,   438,   116,   123,   124,
     2941     600,   116,   602,   109,   446,   111,   110,   528,  1288,  1177,
     2942    1178,   745,   533,   132,  1441,   681,    69,   132,    71,   110,
     2943     620,  1448,   896,   937,   846,   625,    72,   627,    74,    75,
     2944     494,   631,   801,   110,   634,   635,   636,    83,    84,    72,
     2945     110,   707,   484,   112,   590,   110,   621,   116,   112,   513,
     2946      83,    84,   652,   484,   654,   109,   910,   488,   912,   295,
     2947     484,   582,   637,   109,   549,   550,   551,   744,   114,   112,
     2948     109,   861,  1499,   116,    72,   809,   651,   115,    72,   132,
     2949      74,    75,  1362,   109,   684,    83,    84,   687,   999,    83,
     2950      84,   881,   809,   109,   454,   111,    72,   622,    74,    75,
     2951     681,    85,    86,    87,   109,   943,   111,    83,    84,   132,
     2952     710,   711,   712,   111,   578,   109,   938,  1115,   718,   719,
     2953     114,  1119,   867,   905,   905,   109,   707,   111,    64,   113,
     2954     114,   109,   653,   111,   655,   112,   110,   907,   114,   905,
     2955     905,   905,   116,   109,   744,   745,   506,   905,   508,   749,
     2956     750,   511,   905,   109,   514,   111,   620,   732,   109,    70,
     2957     111,   625,   109,    74,   745,  1445,    77,  1447,    79,   600,
     2958     904,   602,  1505,   698,   132,    86,   556,   557,   558,   559,
     2959    1305,     3,  1505,  1505,   705,   907,   114,   712,    10,    11,
     2960      12,    13,    14,   793,     4,     5,     6,     7,     8,     9,
     2961     110,   801,   109,   803,   111,   805,   116,   443,   808,   809,
     2962    1012,   114,   812,   109,  1382,   111,    72,    39,    74,    75,
     2963    1500,   117,   118,    33,   824,    72,   903,    83,    84,   114,
     2964    1398,   132,   110,   469,   132,  1146,    83,    84,   116,   681,
     2965      10,    11,    12,    13,    14,    67,    72,   110,  1122,   109,
     2966      76,   109,   110,   116,    82,   111,   687,    83,    84,    69,
     2967     110,    71,    49,   809,   111,   707,   116,   110,   109,    39,
     2968     506,   756,   109,   116,   874,   511,    63,   112,   514,    66,
     2969     805,    82,    69,   109,   118,   111,  1020,   718,   719,   110,
     2970    1035,   117,   118,   874,   127,   116,   896,    67,    88,    89,
     2971    1468,  1469,   213,   903,   904,   905,    72,   907,     4,     5,
     2972       6,     7,     8,     9,  1225,  1085,   110,    83,    84,   919,
     2973    1090,   128,   116,   904,   684,   110,    94,   109,   874,   111,
     2974      30,   116,   932,   933,   874,   117,   118,   937,   131,   109,
     2975      72,   111,   942,   943,    76,   111,   111,   117,   118,   874,
     2976     109,    83,    84,  1115,   110,   109,   942,  1119,  1120,   112,
     2977     116,   148,   109,  1085,   111,     0,     1,   967,  1090,   112,
     2978     117,   118,   110,    69,   161,    71,   110,   109,  1481,   119,
     2979     120,   812,   116,    83,    84,   117,   118,   112,    10,    11,
     2980      12,    13,    14,   824,    29,    30,  1107,    32,   110,   999,
     2981     187,   110,   942,   110,   116,    92,    93,    72,    43,    74,
     2982      75,    76,  1146,    72,    49,    74,    75,    39,    83,    84,
     2983    1020,  1021,    57,   210,    83,    84,   110,  1530,    63,   115,
     2984     116,    66,   874,   669,    69,   222,   957,   109,   110,   111,
     2985    1040,   352,   678,   354,   109,    67,   682,   110,    83,    84,
     2986     874,   109,   117,   118,  1190,  1191,    72,  1193,   979,  1040,
     2987      76,   110,   983,   110,  1200,   110,  1202,    83,    84,   116,
     2988     112,   116,   107,  1235,   905,   110,   907,  1002,   110,   943,
     2989    1080,   111,   117,   114,   116,  1085,   110,   109,   116,   111,
     2990    1090,   131,   116,   109,  1040,   117,   118,   110,   111,  1099,
     2991    1040,   117,   118,   506,    66,   508,   937,  1107,   511,    58,
     2992      59,   514,  1033,   148,   999,  1040,   115,   116,   942,    44,
     2993      45,   156,  1122,   552,   553,    72,   161,    74,    75,    76,
     2994    1207,   442,   109,   110,   111,   999,    83,    84,   560,   561,
     2995    1274,   328,   554,   555,   244,   114,  1146,   114,   109,   110,
     2996     111,   186,   187,   109,   112,  1040,   118,   110,   110,   919,
     2997    1322,   112,   109,    29,  1326,  1146,   112,   202,   112,     3,
     2998     117,   118,   109,   110,   111,   210,    10,    11,    12,    13,
     2999      14,    58,    59,    60,   219,   112,   116,   222,  1188,  1189,
     3000    1248,  1249,  1250,   110,   229,   130,   130,   130,  1040,   161,
     3001     110,   112,   114,  1189,   112,    39,   115,  1207,   110,   244,
     3002     115,  1211,   115,   248,   109,   116,  1040,   252,   253,   406,
     3003       1,   110,  1358,   110,    72,  1225,    74,    75,    76,  1229,
     3004    1211,   266,   267,    67,   132,    83,    84,   116,   273,   110,
     3005     110,   110,   110,  1229,  1225,   280,   110,   110,  1188,  1189,
     3006     110,   116,   110,   110,  1085,   110,   110,   110,   110,  1090,
     3007     222,  1423,   898,  1188,   110,  1211,   110,  1378,    49,   110,
     3008     110,  1211,   115,   874,  1274,  1275,    29,  1515,   110,   130,
     3009     380,   131,   112,  1283,   112,   116,  1211,   110,  1288,  1229,
     3010     110,   116,   110,   328,   130,   116,   112,   114,   260,   110,
     3011     110,   464,   110,   265,   116,   112,   110,  1288,   110,   110,
     3012     116,   116,   112,   348,   349,    10,    11,    12,    13,    14,
     3013    1080,  1321,   109,  1505,  1505,   106,   109,  1248,  1249,  1250,
     3014     365,   109,   109,   114,   369,  1321,  1506,   109,   130,  1505,
     3015    1505,  1505,  1288,  1283,    39,   380,     3,  1505,  1288,   112,
     3016     132,   115,  1505,    10,    11,    12,    13,    14,  1283,   110,
     3017    1530,   396,   110,  1288,   110,  1189,   147,   128,   115,  1211,
     3018    1481,   406,    67,   115,   464,   156,   114,   695,  1378,   112,
     3019     132,  1321,    39,   110,  1506,   116,   112,  1211,   350,   424,
     3020     112,   491,   110,   493,  1394,   430,   110,   432,   110,   112,
     3021     110,   112,  1377,   112,   112,  1229,   112,   112,  1530,    72,
     3022      67,    74,    75,    76,   109,  1051,   111,    47,   115,  1419,
     3023      83,    84,   117,   118,    72,   206,    74,    75,    76,   210,
     3024     132,   132,   467,  1419,   132,    83,    84,   472,   132,   132,
     3025     110,  1441,  1043,   115,   130,   480,  1288,   115,  1448,   484,
     3026    1450,   110,  1452,   488,   112,   109,   491,   112,   493,   240,
     3027    1441,   109,   112,   112,  1288,  1386,  1387,  1448,   786,   431,
     3028    1505,   112,  1505,  1505,   112,   110,   110,    60,   109,  1419,
     3029     112,  1481,    66,   112,   109,   132,  1486,   110,  1488,   110,
     3030     114,   272,    76,   528,   275,  1441,   112,  1321,   533,  1499,
     3031     112,  1441,  1448,  1424,   110,  1505,  1506,   670,  1448,   112,
     3032     110,   473,   109,  1506,   295,  1515,  1441,    96,  1499,    96,
     3033      85,    86,    87,  1448,   109,   132,   307,   115,   110,    72,
     3034    1530,    74,    75,    76,   118,   110,   110,  1530,   110,    42,
     3035      83,    84,   642,   116,   109,   863,   111,   582,   113,   114,
     3036     130,   132,   110,  1499,   589,   110,   132,    96,    96,  1499,
     3037     341,  1482,   132,   110,   345,   600,   109,   602,   132,   110,
     3038    1491,   132,   112,   110,  1499,   110,   132,   161,   112,   115,
     3039     670,   109,   132,   364,   115,   115,   621,   368,   906,   110,
     3040     371,   691,   110,   693,   110,  1419,   110,   697,  1056,  1441,
     3041     132,   564,   637,   562,   977,   565,  1448,   642,   563,   566,
     3042    1211,  1211,  1469,  1364,  1540,  1298,   651,  1441,   653,   654,
     3043     655,  1120,  1326,  1448,  1448,   912,   789,    66,   684,  1071,
     3044     684,  1090,   594,   951,   920,   697,   799,   582,   222,   971,
     3045     867,   648,   722,  1229,    83,   426,   427,   939,   570,   484,
     3046     813,  1515,   687,   732,   570,   570,   691,  1499,   693,    -1,
     3047     622,  1297,   697,    -1,    -1,   627,    -1,    -1,   986,    -1,
     3048     705,    -1,    -1,   454,  1505,  1499,   260,    -1,    -1,   118,
     3049      -1,   265,    -1,   718,   719,    -1,   467,    -1,    -1,    -1,
     3050    1450,    -1,  1452,    -1,    -1,    -1,   280,   732,    -1,   789,
     3051      -1,    -1,    -1,  1304,    -1,    -1,    -1,    -1,    -1,   799,
     3052      -1,   492,    -1,   494,    -1,   496,    -1,    -1,    -1,  1037,
     3053      -1,    -1,   161,   813,    -1,   506,  1486,   508,  1488,    -1,
     3054     511,    -1,   513,   514,    -1,    -1,   698,    57,    -1,    10,
     3055      11,    12,    13,    14,   525,    -1,    -1,    -1,    -1,    72,
     3056     712,    74,    75,    76,    -1,  1356,    -1,    -1,  1359,    -1,
     3057      83,    84,    -1,    -1,    -1,    -1,   350,   867,    39,    -1,
     3058      -1,    -1,    -1,   873,    -1,    -1,    -1,   812,    -1,    -1,
     3059      -1,    -1,    -1,   222,    -1,    -1,   109,   107,   111,   824,
     3060     110,    -1,    -1,    -1,   117,   118,    67,   578,    -1,  1117,
     3061      -1,  1402,    -1,    -1,    -1,    -1,  1407,   130,   589,    -1,
     3062      -1,    -1,    -1,  1449,   914,  1451,    -1,    -1,    -1,    -1,
     3063      -1,   260,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,
     3064      -1,    -1,   867,    -1,  1435,    -1,   156,   670,   873,   620,
     3065      -1,    -1,    -1,   805,   625,    -1,    -1,   431,    -1,  1485,
     3066     631,  1487,     0,     1,  1017,  1018,    -1,    -1,    -1,  1177,
     3067    1178,   896,    -1,    -1,   448,    -1,    -1,    -1,    -1,    -1,
     3068     905,   971,   907,    -1,    -1,    -1,    -1,    -1,    -1,   914,
     3069      -1,    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,   473,
     3070      -1,    -1,    -1,  1529,    -1,  1531,    -1,    -1,    -1,   219,
     3071      -1,    49,   937,   684,    -1,    -1,    -1,    -1,  1544,  1545,
     3072      -1,   350,  1075,  1076,    -1,    -1,    -1,    -1,  1519,    -1,
     3073      -1,    69,   957,    -1,  1525,    -1,    -1,  1017,  1018,    -1,
     3074      -1,    -1,    -1,    -1,    -1,  1536,   971,    -1,    -1,  1540,
     3075      -1,   722,    -1,    -1,   979,    -1,    -1,    -1,   983,     0,
     3076       1,    -1,    -1,   273,    -1,    -1,   789,    -1,   106,    -1,
     3077     280,    -1,    -1,   744,    -1,    -1,   799,    -1,    -1,    -1,
     3078      -1,  1071,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
     3079     813,    32,    -1,    -1,    -1,  1075,  1076,    -1,    -1,    -1,
     3080      -1,    -1,   431,    -1,    -1,    -1,    -1,    -1,  1033,    -1,
     3081     148,    -1,    -1,    -1,    -1,    -1,    -1,    32,   156,   157,
     3082     594,    -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,
     3083      -1,    -1,   803,    -1,    -1,    -1,    -1,   808,   348,    -1,
     3084      -1,    -1,    -1,    -1,   473,    -1,  1071,    -1,   622,   187,
     3085    1002,    -1,    -1,   627,    69,   365,    -1,    -1,    -1,   369,
     3086    1085,    -1,    -1,    -1,   202,  1090,    -1,   205,   206,    -1,
     3087    1223,    -1,   210,    -1,  1382,    -1,    -1,    -1,    -1,    -1,
     3088      -1,    -1,  1107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3089    1398,    -1,    -1,   231,  1184,    -1,    -1,   235,    -1,   237,
     3090      -1,    -1,  1255,    -1,    -1,    -1,    -1,    -1,   246,    -1,
     3091    1263,  1264,  1265,    -1,   252,    -1,   157,    -1,    -1,   257,
     3092      -1,    -1,   432,    -1,   698,   896,    -1,    -1,    -1,   267,
     3093      -1,    -1,   903,    -1,    -1,    -1,    -1,   275,   712,    -1,
     3094      -1,     0,   157,  1223,    -1,    -1,    -1,    -1,   919,    -1,
     3095      -1,    72,    -1,    74,    75,    76,    -1,    -1,   732,  1184,
     3096    1468,  1469,    83,    84,    -1,   594,    -1,    -1,    -1,    -1,
     3097     941,   942,   943,    32,  1327,  1255,    -1,    -1,    -1,    -1,
     3098      -1,   222,  1207,  1263,  1264,  1265,    -1,    -1,   109,    -1,
     3099     111,    -1,    -1,   622,  1017,  1018,   117,   118,   627,    -1,
     3100      -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
     3101      69,   252,    -1,   351,    -1,    -1,   231,    -1,    -1,    -1,
     3102      -1,    -1,    -1,  1248,  1249,  1250,   364,    -1,   999,    -1,
     3103     368,   805,    -1,   371,    -1,    -1,  1188,   252,    -1,    -1,
     3104      -1,    -1,   257,    -1,    -1,    -1,    -1,  1327,    -1,    -1,
     3105      -1,    -1,  1075,  1076,    -1,    -1,    -1,    -1,    -1,    -1,
     3106      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   698,
     3107      -1,    83,    84,    72,    -1,    74,    75,    76,    -1,   589,
     3108     418,    -1,    -1,   712,    83,    84,    -1,    -1,    -1,    -1,
     3109      -1,    -1,    -1,    -1,    -1,   433,    -1,   109,   157,   111,
     3110     438,    -1,    -1,    -1,    -1,   117,   118,    -1,   446,  1080,
     3111     109,   621,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3112      -1,    -1,    -1,    -1,    -1,    -1,   464,   637,    -1,   467,
     3113      -1,  1283,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,
     3114      -1,   651,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
     3115      -1,  1122,  1377,  1378,   492,    -1,    -1,    -1,   496,    -1,
     3116      -1,  1386,  1387,    97,    98,    99,   100,   101,   102,   103,
     3117     104,   105,   106,    -1,    -1,    -1,   805,    -1,    -1,    -1,
     3118      -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,   526,    -1,
     3119      -1,    -1,   433,   252,    -1,    -1,    -1,   131,   257,  1424,
     3120      -1,    -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,
     3121      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,
     3122      -1,    -1,   732,   438,    -1,    -1,    -1,    -1,  1002,    -1,
     3123      -1,   446,  1255,   571,    -1,    -1,  1207,    -1,    -1,    -1,
     3124    1263,  1264,  1265,   484,    -1,    -1,    -1,    -1,    -1,   464,
     3125      -1,   589,   590,    -1,    -1,    -1,  1481,  1482,  1229,    -1,
     3126      -1,    -1,    -1,    -1,   602,    -1,  1491,   482,    -1,   484,
     3127      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     3128    1505,  1506,   620,    -1,    -1,   526,    -1,   625,    -1,    -1,
     3129      -1,    -1,   351,   631,    -1,    -1,   634,   635,   636,    -1,
     3130      -1,    -1,    66,    -1,  1327,  1530,    -1,    -1,    72,    -1,
     3131      -1,   526,    76,    -1,   652,    79,    80,    81,    82,    83,
     3132      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3133      -1,    -1,   670,    -1,    -1,    10,    11,    12,    13,    14,
     3134      -1,    -1,    -1,   681,    -1,   109,    -1,   111,    -1,   590,
     3135    1321,    -1,    -1,   117,   118,   119,   120,   121,   122,   418,
     3136      -1,    -1,    -1,    -1,    39,    -1,   130,    -1,    -1,   707,
     3137      -1,    -1,   710,  1002,   433,   590,    -1,    -1,    -1,   438,
     3138      -1,   719,    -1,    -1,   722,    -1,   896,   446,    -1,    -1,
     3139      -1,    -1,    67,   634,   635,   636,    -1,    72,    -1,    74,
     3140      75,    76,    -1,    -1,    -1,   464,   744,   745,    83,    84,
     3141      -1,   652,   750,    -1,  1188,    -1,    -1,    -1,    -1,   634,
     3142     635,   636,    -1,   482,    -1,   484,    -1,    10,    11,    12,
     3143      13,    14,    -1,    -1,   109,    -1,   111,   652,    -1,    -1,
     3144      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,  1419,    -1,
     3145      -1,   789,    -1,    -1,    -1,   670,    39,    -1,    -1,    -1,
     3146      -1,   799,    -1,   801,    -1,   803,   681,   526,   806,   710,
     3147     808,   809,    -1,    -1,    -1,   813,    -1,    -1,    -1,  1450,
     3148      -1,  1452,    -1,    -1,    67,   823,    -1,    -1,    -1,    72,
     3149      -1,    -1,   707,    76,    -1,   710,    -1,    -1,    -1,    -1,
     3150      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1283,
     3151      -1,     0,    -1,    -1,    -1,  1486,    -1,  1488,    -1,    -1,
     3152      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3153     745,   590,    -1,    -1,   117,   118,   874,    -1,     0,    -1,
     3154     190,    -1,    -1,    32,  1515,    -1,    -1,   197,    -1,    -1,
     3155      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   896,  1188,
     3156     801,    -1,    -1,    -1,    -1,   903,   904,    -1,   809,   907,
     3157      32,    -1,    -1,    -1,   789,   634,   635,   636,    -1,    -1,
     3158      69,    -1,    -1,    -1,   799,    -1,   801,    -1,    -1,    -1,
     3159      -1,   806,    -1,   652,   809,   933,    -1,    -1,   813,    -1,
     3160      -1,    -1,    -1,   941,   942,    -1,    -1,    69,    -1,    -1,
     3161      -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,
     3162      -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3163      -1,    -1,    -1,   874,    -1,    -1,    -1,    -1,    -1,    -1,
     3164      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   707,    -1,
     3165      -1,   710,    -1,    -1,  1283,    -1,    -1,    -1,    -1,   874,
     3166      -1,   999,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
     3167      -1,    -1,    -1,   323,  1012,    -1,    -1,    -1,    -1,  1017,
     3168    1018,   331,  1020,  1021,   334,    -1,   745,    -1,    -1,   904,
     3169      -1,    -1,    -1,    -1,    -1,   157,    -1,  1207,    -1,    -1,
     3170      -1,   942,  1040,    -1,    -1,     3,     4,     5,     6,     7,
     3171       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3172      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3173     789,    -1,    30,    31,    32,    -1,    -1,  1075,  1076,    -1,
     3174     799,    39,   801,    -1,    -1,    -1,    -1,   806,   398,    -1,
     3175     809,    -1,   402,    -1,   813,    -1,    -1,    -1,    -1,    -1,
     3176      -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,   257,    67,
     3177      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,  1020,
     3178    1021,    -1,    -1,    -1,  1122,    83,    84,    -1,    -1,    -1,
     3179     252,    -1,    -1,    -1,    -1,   257,    -1,    -1,    -1,  1040,
     3180      -1,    -1,  1017,  1018,    -1,  1020,  1021,    -1,  1146,    -1,
     3181      -1,   109,    -1,   111,    -1,   874,    -1,    -1,    -1,   117,
     3182     118,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,   479,
     3183      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3184      -1,    -1,    -1,    -1,    -1,   904,    -1,    -1,    -1,    -1,
     3185      -1,  1189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3186    1075,  1076,   351,    -1,    39,    -1,    -1,  1377,    -1,  1207,
     3187      -1,    -1,    -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,
     3188      -1,    -1,    -1,    -1,    -1,  1223,    -1,  1225,    -1,   351,
     3189      -1,  1229,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3190      75,    76,    -1,    -1,    -1,    26,    27,    28,    83,    84,
     3191      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1255,    -1,    -1,
     3192     570,   571,    -1,    -1,    -1,  1263,  1264,  1265,    -1,   418,
     3193      -1,  1146,    -1,    -1,   109,    -1,  1274,  1275,    -1,    -1,
     3194      -1,    -1,   117,   118,   433,    -1,    -1,  1188,  1189,   438,
     3195    1288,    -1,    -1,    -1,    -1,    -1,   418,   446,  1017,  1018,
     3196      -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3197    1211,   433,    -1,    -1,  1189,   464,   438,    -1,    99,    -1,
     3198     101,  1040,    -1,  1321,   446,    -1,    -1,    -1,  1229,  1327,
     3199      -1,    -1,    -1,   482,    -1,   484,  1211,    -1,    -1,    -1,
     3200      -1,    -1,   464,    -1,    -1,   126,    -1,   657,  1223,    -1,
     3201    1225,   661,    -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,
     3202     482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3203      -1,    -1,    -1,  1274,  1275,    -1,    -1,   526,    -1,    -1,
     3204    1255,    -1,  1283,    -1,    -1,    -1,    -1,  1288,  1263,  1264,
     3205    1265,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,  1274,
     3206    1275,   182,    -1,    -1,   526,    -1,    -1,    -1,    -1,   190,
     3207      -1,   192,   193,  1288,    -1,    -1,   197,    -1,   199,   200,
     3208    1321,  1419,    -1,    53,    -1,    55,    -1,  1146,    58,    59,
     3209      60,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3210      -1,   590,    -1,  1441,    -1,    -1,    -1,    77,    -1,    -1,
     3211    1448,    -1,  1327,    -1,    -1,    -1,    -1,    -1,    -1,    89,
     3212      90,    -1,    -1,    -1,    26,    27,    28,    -1,   590,    -1,
     3213    1189,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3214      14,    -1,    -1,   793,    -1,   634,   635,   636,   269,    -1,
     3215      -1,    -1,  1211,  1394,    -1,    -1,    -1,    -1,    -1,    -1,
     3216      -1,  1499,    -1,   652,  1223,    39,  1225,    -1,  1506,    -1,
     3217      -1,    -1,   634,   635,   636,    -1,    -1,    -1,  1419,  1394,
     3218      -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3219     652,    -1,   681,    67,    -1,    -1,  1255,    99,    72,   101,
     3220    1441,    -1,    76,    -1,  1263,  1264,  1265,  1448,   670,    83,
     3221      84,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   707,   681,
     3222      -1,   710,    -1,    -1,    -1,    -1,  1441,    -1,    -1,  1288,
     3223      -1,    -1,    -1,  1448,    -1,   109,    -1,    -1,    -1,    -1,
     3224      -1,    -1,    -1,   117,   118,   707,    -1,    -1,   710,    10,
     3225      11,    12,    13,    14,    -1,    -1,   745,    -1,  1499,    -1,
     3226      -1,   911,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
     3227      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3228     182,    -1,    -1,   745,  1499,    -1,    -1,    -1,    -1,    -1,
     3229     192,   193,    -1,    -1,    -1,   197,    -1,   199,   200,    -1,
     3230     789,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3231     799,    72,   801,    74,    75,    76,    -1,   806,    -1,    -1,
     3232     809,    -1,    83,    84,   813,    -1,    -1,   789,    -1,    10,
     3233      11,    12,    13,    14,    -1,  1394,    -1,   799,   988,   801,
     3234      -1,    -1,    -1,    -1,   806,    -1,    -1,   809,   109,    -1,
     3235     111,   813,    -1,    -1,    -1,  1005,   117,   118,    39,    -1,
     3236      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
     3237      -1,    -1,    -1,    -1,   344,    -1,   346,    -1,    -1,    -1,
     3238      -1,    -1,  1441,    -1,    -1,   874,    67,   357,   358,  1448,
     3239      39,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3240      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3241      -1,    -1,   874,    -1,    -1,   904,    -1,    -1,    67,    -1,
     3242      -1,    -1,    -1,    72,    -1,    74,    75,    76,   109,    -1,
     3243     111,    -1,    -1,  1083,    83,    84,   117,   118,    -1,    -1,
     3244    1499,    -1,   904,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3245      -1,    -1,    -1,   574,   575,    -1,    -1,    -1,    -1,    -1,
     3246     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3247      -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,    -1,
     3248      -1,    -1,   603,    -1,    -1,   606,   607,    -1,   609,    -1,
     3249     611,   612,    -1,    -1,    -1,   616,   617,     3,     4,     5,
    28783250       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    28793251      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2880        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2881        0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    2882        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2883        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2884        0,    35,     0,    36,     0,     0,    38,    39,     2,   207,
    2885        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3252      26,    27,    28,    -1,    30,    31,    32,    33,  1017,  1018,
     3253      36,  1020,  1021,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3254      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3255      -1,  1040,    -1,    -1,    -1,  1017,  1018,    -1,  1020,  1021,
     3256      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3257      -1,    -1,    78,    -1,    -1,    -1,     7,    -1,  1040,    10,
     3258      11,    12,    13,    14,    -1,    -1,  1075,  1076,    -1,    -1,
     3259      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3260      -1,    -1,    -1,    -1,    -1,   111,    37,    38,    39,    40,
     3261      -1,   117,   118,  1075,  1076,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3263      -1,    -1,    -1,   754,   755,    66,    67,    -1,    -1,    -1,
     3264      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     3265      81,    82,    83,    84,    -1,    86,    87,  1146,    -1,    -1,
     3266      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3267      -1,    -1,   574,   575,    -1,    -1,    -1,    -1,   109,    -1,
     3268     111,    -1,    -1,    -1,  1146,    -1,   117,   118,   119,   120,
     3269     121,   122,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3270    1189,   603,    -1,    -1,   606,   607,    -1,   609,    -1,   611,
     3271     612,    -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,
     3272      -1,    -1,  1211,    -1,    -1,    -1,    -1,  1189,    -1,   699,
     3273      -1,   701,    -1,    -1,  1223,    -1,  1225,    -1,   708,   709,
     3274      -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,  1211,
     3275      -1,    -1,    -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,
     3276     730,  1223,    -1,  1225,    -1,    -1,  1255,    -1,    -1,    -1,
     3277      -1,    -1,    -1,    -1,  1263,  1264,  1265,    -1,    -1,    -1,
     3278      -1,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   758,    -1,
     3279     911,    -1,    -1,  1255,    -1,   916,    -1,    -1,    -1,  1288,
     3280      -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,    -1,
     3281      -1,    -1,  1274,  1275,    -1,    -1,    -1,    -1,    -1,    -1,
     3282      -1,    -1,    -1,    -1,    -1,    -1,  1288,    -1,    -1,    -1,
     3283      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
     3284      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3285      49,    -1,   754,   755,    -1,    -1,    -1,    -1,    -1,    -1,
     3286      -1,    -1,    -1,    -1,    -1,  1327,    -1,    66,    -1,    -1,
     3287       7,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
     3288      -1,    -1,    -1,    -1,    -1,    -1,    -1,   857,   858,   859,
     3289     860,    -1,   862,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3290      37,    38,    39,    40,    -1,  1394,    -1,   877,    -1,    -1,
     3291      -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,   118,
     3292      -1,   891,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3293      67,    -1,  1394,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3294      -1,    -1,    79,    80,    81,    82,    83,    84,   147,    86,
     3295      87,    -1,  1441,    -1,    -1,    -1,  1077,    -1,   157,  1448,
     3296      -1,   931,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3297      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1441,
     3298     117,   118,   119,   120,   121,   122,  1448,    10,    11,    12,
     3299      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3300      23,    24,    25,    26,    27,    -1,   976,    30,    31,    32,
     3301    1499,   210,   982,    -1,   916,    -1,    39,   987,    -1,    -1,
     3302      -1,    -1,   992,   222,   994,    -1,    -1,    -1,   998,    -1,
     3303    1000,  1001,    -1,    -1,  1004,    -1,    -1,  1499,    -1,    -1,
     3304      -1,   240,    -1,  1013,    67,    -1,    -1,    -1,    -1,    -1,
     3305      -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3306      -1,  1031,  1032,    -1,    -1,    -1,   265,    -1,    -1,    -1,
     3307      -1,    -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,
     3308      -1,    -1,    -1,    -1,    -1,  1206,    -1,    -1,  1058,    -1,
     3309      -1,  1061,    -1,    -1,   117,   118,   295,    -1,    -1,    -1,
     3310      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,    -1,
     3311      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     3312      -1,    -1,    -1,    -1,    76,    -1,    78,    -1,    80,    -1,
     3313      -1,    -1,    -1,    -1,  1104,    87,    -1,    -1,    -1,    -1,
     3314    1110,  1111,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,
     3315      -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3316    1130,    -1,    -1,  1133,    -1,    -1,   118,  1137,   120,   121,
     3317     122,    -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,
     3318    1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3319      -1,    -1,    -1,  1163,    -1,  1165,  1166,  1167,  1168,    -1,
     3320      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
     3321      -1,  1181,    -1,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
     3322      -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,   427,    -1,
     3323      -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,
     3324      -1,    -1,    -1,    -1,    -1,    -1,  1216,  1217,    -1,    -1,
     3325      -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,
     3326      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3327     222,    -1,   224,   225,   226,    -1,    -1,    -1,    -1,    -1,
     3328      -1,    -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,
     3329      -1,    -1,    -1,    -1,    -1,   494,  1266,  1267,    -1,    -1,
     3330      -1,    -1,    -1,    -1,  1206,    -1,  1276,   506,   260,   508,
     3331      -1,    -1,   511,   265,   513,   514,    -1,    -1,    -1,    -1,
     3332      -1,    -1,    -1,    -1,    -1,    -1,    -1,   526,   280,    -1,
     3333      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3334      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3335      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3336      26,    27,    28,    -1,    30,    31,    32,  1337,    -1,  1339,
     3337    1340,  1341,    -1,    39,    -1,    -1,   328,    -1,    -1,   578,
     3338      -1,  1351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3339    1360,   590,    -1,    -1,    -1,   594,    -1,    -1,   350,    -1,
     3340      -1,    67,    -1,   355,   356,    -1,    72,    -1,    74,    75,
     3341      76,   363,    78,    -1,    -1,  1385,    -1,    83,    84,    -1,
     3342      -1,   620,    -1,    -1,   147,    -1,   625,    -1,    -1,    -1,
     3343      -1,    -1,    -1,    -1,   157,   634,   635,   636,    -1,    44,
     3344      -1,    -1,    -1,   109,    -1,   111,   169,   170,    -1,    -1,
     3345      -1,   117,   118,   652,   406,    -1,    -1,    -1,  1428,  1429,
     3346      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3347      -1,  1441,   424,    -1,    -1,    -1,    -1,   429,  1448,   431,
     3348      37,    38,    -1,    40,    -1,   684,    -1,    92,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,   448,   102,    -1,   451,
     3350     452,    -1,    -1,    -1,    -1,    -1,    -1,   459,    -1,    66,
     3351    1480,   710,    -1,   712,  1484,    72,    -1,   240,    -1,    76,
     3352      -1,   473,    79,    80,    81,    82,    83,    84,   480,    86,
     3353      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3354      -1,   264,  1512,    -1,  1514,    -1,   745,    -1,    -1,    -1,
     3355      -1,    -1,   109,   158,   111,    -1,    -1,   114,    -1,    -1,
     3356     117,   118,   119,   120,   121,   122,    -1,   172,    -1,    -1,
     3357      -1,    -1,  1542,  1543,    -1,    -1,    -1,    -1,    -1,    -1,
     3358    1550,  1551,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3359     195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3360      -1,    -1,   801,    -1,   209,    -1,   805,    -1,    -1,    -1,
     3361     809,    -1,    -1,   218,    -1,    -1,    -1,    -1,    -1,    -1,
     3362      -1,    -1,    -1,   228,    -1,    -1,    -1,    -1,    -1,    -1,
     3363      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3364      -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   253,    -1,
     3365      -1,    -1,    -1,   258,    -1,    -1,    -1,   380,    -1,    -1,
     3366      -1,    -1,    -1,    66,    -1,    -1,   271,    -1,    -1,    72,
     3367     622,    -1,   277,    76,   279,   627,    79,    80,    81,    82,
     3368      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3369      -1,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,    -1,    -1,   904,   109,    -1,   111,    -1,
     3371      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
     3372     919,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3373      -1,    -1,    -1,   338,    -1,    -1,    -1,    -1,   343,    -1,
     3374      -1,    -1,    -1,    -1,   943,    -1,   698,    -1,    -1,    -1,
     3375      -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3376     712,    -1,    -1,    -1,    -1,    -1,    -1,   372,    -1,    -1,
     3377      -1,   376,   377,    -1,   379,    -1,    -1,    -1,    -1,    -1,
     3378     732,   386,   387,    -1,   389,   390,    -1,   392,    -1,   394,
     3379     513,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3380     999,    -1,    -1,   526,    -1,    -1,   411,    -1,   531,    -1,
     3381      -1,   534,    -1,    -1,   419,    -1,    -1,    -1,    -1,    -1,
     3382      -1,  1020,  1021,   546,    -1,    -1,    -1,    -1,    -1,    -1,
     3383      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
     3384      -1,   793,    -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,
     3385      -1,    -1,    -1,   805,    -1,   578,    -1,    -1,    -1,    -1,
     3386      -1,    -1,   585,    -1,    -1,   470,    -1,   590,    -1,    -1,
     3387      -1,   476,   824,    -1,    -1,    -1,   481,    -1,    -1,    -1,
     3388      -1,  1080,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
     3389       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3390      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3391      27,    -1,   517,    30,    31,    32,   639,    -1,    -1,    -1,
     3392      -1,    -1,    39,    -1,   647,    -1,    -1,   532,    -1,    -1,
     3393      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3394      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1146,    -1,    -1,
     3395      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3396      -1,    -1,    -1,    37,    38,   570,    40,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,    -1,
     3398      -1,   586,    -1,    -1,    -1,   937,    -1,   592,    -1,  1188,
     3399      -1,    -1,    66,    -1,   111,    -1,   601,    -1,    72,    -1,
     3400     117,   118,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3401      84,    -1,    86,    87,    -1,   967,    -1,    -1,    -1,    -1,
     3402      -1,    -1,   745,    -1,   747,    -1,  1225,    -1,    -1,   156,
     3403     157,    -1,    -1,    -1,   757,   109,   641,   111,    -1,    -1,
     3404     763,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     3405    1002,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3406      -1,  1013,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
     3407     197,    -1,   677,    -1,    -1,  1274,  1275,    -1,    -1,    -1,
     3408     685,    -1,   805,   806,  1283,    -1,   809,    -1,    -1,    -1,
     3409      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
     3410     823,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,   293,
     3411     294,   716,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3412      -1,   726,   727,   307,   308,    -1,    -1,    -1,    -1,    -1,
     3413      -1,    -1,    -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,
     3414     863,    -1,   269,    -1,   867,    -1,    -1,  1099,    -1,    -1,
     3415      -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,    -1,   764,
     3416      -1,   345,    10,    11,    12,    13,    14,    15,    16,    17,
     3417      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3418      -1,   904,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3419      -1,    39,    40,    -1,    -1,  1394,   323,   381,    -1,    -1,
     3420      -1,    -1,    -1,    -1,   331,   332,    -1,   334,   335,    -1,
     3421      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    67,
     3422     943,    -1,   349,   828,    -1,    -1,    74,    75,    -1,    -1,
     3423     835,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
     3424      -1,   368,    -1,   848,   371,   850,    -1,    -1,   971,    -1,
     3425      -1,  1450,    -1,  1452,   977,    -1,    -1,    -1,   981,   864,
     3426      -1,    -1,    -1,   111,    -1,   870,    -1,   115,    -1,   117,
     3427     118,   398,    -1,    -1,    -1,   402,    -1,   882,    -1,  1002,
     3428     885,    -1,    -1,    -1,    -1,    -1,    -1,  1486,    -1,  1488,
     3429    1013,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3430      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
     3431      -1,    -1,  1035,    -1,  1037,    -1,  1515,    -1,    -1,    -1,
     3432      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1052,
     3433    1053,  1283,    10,    11,    12,    13,    14,    15,    16,    17,
     3434      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3435    1073,    -1,   479,    -1,    -1,   482,    -1,   962,    -1,    -1,
     3436      -1,    39,    -1,    -1,    -1,   549,   550,   551,   552,   553,
     3437     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3438     564,   565,   566,    -1,    -1,    -1,    -1,    37,    38,    67,
     3439      40,    -1,   997,    -1,   521,    -1,    -1,    -1,   525,   526,
     3440      -1,    -1,    -1,    -1,    -1,  1128,    -1,    -1,    -1,    -1,
     3441      -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,
     3442      -1,    -1,    72,  1146,    -1,    -1,    76,    -1,    -1,    79,
     3443      80,    81,    82,    83,    84,    -1,    86,    87,  1161,  1162,
     3444      -1,    -1,    -1,   570,   571,    -1,    -1,    -1,    -1,    -1,
     3445    1055,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,   109,
     3446      -1,   111,   589,   590,   114,    -1,    -1,   117,   118,   119,
     3447     120,   121,   122,   600,    -1,   602,   603,    -1,    -1,    -1,
     3448      -1,    -1,   609,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3449    1095,    -1,   619,   620,    -1,  1100,    -1,    -1,   625,    -1,
     3450      -1,    -1,    -1,  1108,    -1,    -1,    -1,   634,   635,   636,
     3451      -1,   695,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3452      -1,    -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,
     3453     657,   658,    -1,    -1,   661,   662,  1141,    -1,    -1,    -1,
     3454      -1,   668,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
     3455      -1,  1156,    -1,  1158,    -1,    -1,    -1,    -1,    -1,    -1,
     3456     687,    -1,    -1,    -1,    -1,    -1,    -1,  1172,  1173,    -1,
     3457      -1,    -1,   756,    -1,    -1,    -1,    -1,    -1,  1530,  1302,
     3458      -1,    -1,  1305,   710,   711,    -1,    -1,    -1,    -1,  1194,
     3459      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3460      -1,    -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    -1,    -1,    -1,    -1,    -1,    -1,   744,   745,    -1,
     3462      -1,    -1,   749,   750,    -1,    -1,    -1,    -1,    -1,    -1,
     3463      -1,    -1,    -1,    -1,    -1,    -1,  1241,    -1,    -1,    -1,
     3464      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3465      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3466      -1,    30,    31,    32,    -1,    -1,   793,    -1,    -1,    -1,
     3467      39,    -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,
     3468      -1,   808,   809,    -1,    -1,   812,    -1,   814,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,    -1,    -1,   824,    67,    -1,
     3470      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,
     3471      -1,  1316,    -1,  1318,    83,    84,    -1,    -1,    -1,    -1,
     3472      -1,    -1,   906,    -1,    -1,  1330,    -1,  1332,    -1,    -1,
     3473      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3474      -1,    -1,   111,    -1,  1349,    -1,    -1,    -1,   117,   118,
     3475      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3476    1365,  1366,    -1,    -1,    -1,    -1,    -1,   951,    -1,   896,
     3477      -1,  1376,    -1,    -1,  1379,    -1,   903,   904,   905,    -1,
     3478     907,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
     3479      -1,    -1,  1515,    -1,    -1,  1400,    -1,    -1,    -1,    -1,
     3480      -1,    -1,   986,    -1,  1409,   932,   933,  1412,    -1,  1414,
     3481    1415,  1416,    -1,    -1,    -1,   999,    10,    11,    12,    13,
    28863482      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2887       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2888        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
    2889        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2890        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2891        0,    34,     0,    35,     0,    36,     0,     0,   208,    39
    2892 };
    2893 
    2894 #define yypact_value_is_default(yystate) \
    2895   ((yystate) == (-1315))
    2896 
    2897 #define yytable_value_is_error(yytable_value) \
    2898   YYID (0)
    2899 
    2900 static const yytype_int16 yycheck[] =
    2901 {
    2902        0,     1,   240,   186,   205,     0,   734,     0,    43,    43,
    2903       43,   534,   752,   186,     1,   752,   752,   187,   106,   186,
    2904      117,   280,   169,   170,   513,   364,   349,   186,   220,   368,
    2905      186,   349,    32,   186,   620,   186,   991,    32,  1029,    32,
    2906      521,   345,   602,    43,   187,   879,   984,   759,   647,    49,
    2907      492,   418,     0,     0,   496,   879,    49,   600,   188,   571,
    2908      602,    43,   600,    63,   600,   600,    66,    32,   156,    69,
    2909       63,   438,   600,    66,   600,   282,    69,   693,    49,   446,
    2910      600,    72,    69,   266,    32,    32,  1041,   696,    39,  1335,
    2911      634,   635,   636,   266,   426,   427,    57,   267,    43,   266,
    2912     1028,  1029,     0,  1417,    43,   202,   106,   266,  1048,   653,
    2913      266,  1060,  1061,   266,   114,   266,    39,   117,   118,   603,
    2914       72,   635,   636,   482,   267,   609,    39,    51,    95,    44,
    2915       45,    85,   262,   263,    32,   229,    39,    96,    64,   653,
    2916       28,   132,    39,   114,    63,    72,   107,   147,   148,   110,
    2917      257,   186,   186,   186,   248,   148,   156,   157,   109,   113,
    2918      111,   161,   494,   130,   123,   488,   118,   711,   161,   110,
    2919      910,    82,    39,   910,   910,   116,   147,  1491,   482,    44,
    2920       45,   513,    82,   109,   719,   109,   186,   187,   111,  1138,
    2921       78,   719,  1438,   719,   187,   156,   109,   711,   111,   490,
    2922      115,    30,   202,    82,   186,   132,   109,   688,   111,    72,
    2923      210,   111,   109,   132,   111,  1123,    82,   210,   410,  1127,
    2924       83,    84,   222,    72,  1048,    74,    75,   107,    82,   222,
    2925       11,   266,   266,   266,    83,    84,   406,    82,   117,   210,
    2926      240,   186,   109,   109,   111,  1236,   578,   186,   111,   114,
    2927      589,   131,   252,   341,    83,    84,   110,   252,   219,   252,
    2928      260,   805,   111,   406,   109,   265,   266,   267,   828,   240,
    2929        1,  1473,   272,   816,   267,   634,   635,   636,   816,  1421,
    2930      816,   816,   994,   371,   602,   797,   828,   252,   816,   905,
    2931      816,   805,   631,    96,   653,   295,   816,   504,  1289,   396,
    2932      109,   272,   911,   109,   252,   252,  1508,   307,  1510,   257,
    2933      480,   418,   273,   604,  1252,   682,   620,   608,    49,   280,
    2934      123,   625,   131,   323,  1524,    44,    45,   424,   328,  1057,
    2935      929,   438,   116,   430,   818,   328,   307,   480,   629,   446,
    2936     1494,   341,   633,   109,  1544,   345,  1500,   956,   132,   349,
    2937      350,  1551,   711,    39,   252,    90,    91,   285,    72,   257,
    2938     1288,  1289,  1302,  1524,   364,    82,   109,  1521,   368,    83,
    2939       84,   371,  1526,    72,   345,   106,   112,  1519,   938,   307,
    2940      308,    57,  1524,   114,    83,    84,   114,   348,  1222,   748,
    2941     1551,   126,   127,   110,   937,   114,   396,   111,  1222,   937,
    2942      117,   937,  1544,   110,   365,   110,   406,   110,   369,  1551,
    2943      117,   116,   111,   406,   117,   244,   147,   345,   116,   115,
    2944      116,  1007,  1413,     3,   424,   156,   426,   427,   131,   116,
    2945      430,   107,   116,   433,   110,   131,   116,   525,    10,    11,
    2946       12,    13,    14,     3,   748,   132,   805,    72,   132,     0,
    2947     1405,  1406,   132,   381,   454,   426,   427,   118,    83,    84,
    2948      667,   116,   110,   124,   125,     0,     1,    39,   807,   117,
    2949      418,   432,   472,   812,   733,   206,   116,   132,  1302,   210,
    2950      480,    32,   482,   116,   484,  1413,   111,   480,   488,   484,
    2951      438,   484,   132,   974,   494,    67,   116,    32,   446,   132,
    2952      989,   648,   116,   116,   946,   828,   506,     0,   508,   240,
    2953      828,   511,   132,   513,   514,    66,  1125,     0,   688,   132,
    2954      418,   521,  1462,   494,   112,   525,   526,   657,   116,  1469,
    2955      737,    66,  1016,  1017,    69,   109,   484,   484,  1137,   116,
    2956      438,   272,   513,   219,   275,   688,   131,  1107,   446,   110,
    2957      909,   380,   116,   116,    72,   132,    74,    75,   655,   850,
    2958      110,    72,   901,   109,   295,    83,    84,   116,   132,   132,
    2959      570,   571,    83,    84,  1302,   682,   307,   109,   578,  1188,
    2960     1189,   112,  1522,   132,   482,   116,   484,   116,   112,   589,
    2961      590,   109,   116,    80,   594,   590,   114,   273,   109,   109,
    2962      600,   708,   602,   132,   280,   909,   109,   578,   111,   109,
    2963      341,    80,  1093,   109,   345,   118,   119,  1098,   109,   942,
    2964      620,   549,   550,   551,   111,   625,   113,   627,   589,   110,
    2965      117,   631,   110,   364,   634,   635,   636,   368,  1462,   112,
    2966      371,   112,   111,   116,   113,  1469,    72,   110,   117,   620,
    2967      110,  1379,   943,   653,   625,   655,   116,    83,    84,   747,
    2968      621,   110,   491,    72,   493,    74,    75,   116,   129,  1028,
    2969      131,   222,   348,   865,    83,    84,   637,   110,    66,     4,
    2970        5,     6,     7,     8,     9,   685,   110,   222,   688,   365,
    2971      109,   652,   116,   369,   886,   426,   427,   109,  1522,   111,
    2972      109,   252,   112,  1007,   109,   114,   116,     0,     1,   110,
    2973      948,   711,   712,   713,   109,   116,   110,   252,   115,   719,
    2974      720,   132,   116,   454,   871,   295,   110,   910,    64,   110,
    2975      118,   109,   116,   111,   682,   116,   467,   910,  1466,    32,
    2976     1468,   109,   912,   910,    69,   109,    71,   747,   748,   110,
    2977      110,   910,   752,   753,   910,   116,   116,   910,   112,   910,
    2978      708,   492,   110,   494,   110,   496,   112,   132,   116,   912,
    2979      116,   114,   733,   161,   114,   506,    69,   508,   109,   110,
    2980      511,   110,   513,   514,   682,   131,   132,   116,  1528,   109,
    2981     1399,  1528,  1528,  1132,   525,  1523,  1319,   797,  1157,   350,
    2982      110,   556,   557,   558,   559,   805,   116,   807,  1417,   809,
    2983      708,   132,   812,   813,   643,   109,   816,   111,   813,  1020,
    2984      908,   110,   114,   110,   118,   119,    70,   116,   828,   116,
    2985       74,   759,   110,    77,   222,    79,   132,    72,   116,    74,
    2986       75,    76,    86,    72,    82,    74,    75,   578,    83,    84,
    2987      748,   120,   121,  1157,    83,    84,   426,   427,   589,    72,
    2988      109,    74,    75,   692,    72,   694,    74,    75,    76,   698,
    2989       83,    84,   260,   109,   109,    83,    84,   265,   109,   879,
    2990      111,  1490,  1491,    82,   879,   114,   110,   118,   119,   620,
    2991      112,   109,   116,   111,   625,    72,  1043,    74,    75,    76,
    2992      631,   901,   109,   110,   111,    49,    83,    84,   908,   909,
    2993      910,   109,   912,   111,   119,    72,  1123,    74,    75,    76,
    2994     1127,  1128,   473,  1093,   924,   128,    83,    84,  1098,  1288,
    2995       94,   879,  1236,   484,    88,    89,   506,   937,   938,   129,
    2996      901,   511,   942,   131,   514,   621,   111,   947,   948,   484,
    2997     1093,   109,   109,   111,   685,  1098,   109,     0,     1,   252,
    2998      947,   637,   350,   506,   964,   508,   112,   110,   511,   213,
    2999      114,   514,   109,   116,   974,   110,   652,   948,   109,   110,
    3000      111,   879,    92,    93,    72,    49,    29,    30,    76,    32,
    3001      112,   109,   723,   111,   110,    83,    84,   567,   112,    63,
    3002       43,   109,    66,   111,   110,    69,    49,  1007,   109,   110,
    3003      111,   909,   110,    72,    57,   110,   747,    76,  1115,   110,
    3004       63,   109,  1503,    66,    83,    84,    69,   109,  1028,  1029,
    3005      118,   119,   109,   110,   111,   109,  1007,   111,   111,  1246,
    3006       83,    84,   871,   431,    58,    59,    60,   112,  1048,   878,
    3007      109,   114,   111,  1048,    85,    86,    87,   733,   116,   118,
    3008      119,  1261,  1262,  1263,   107,   131,   210,   110,   109,   114,
    3009      111,   622,  1553,   915,   117,   917,   807,   114,   109,  1007,
    3010      111,   812,   113,   114,   148,   473,   115,   116,  1088,   109,
    3011      919,   116,   117,  1093,   110,   111,   117,   161,  1098,   112,
    3012     1048,    58,    59,   115,   116,   148,   110,  1107,   352,   110,
    3013      354,   116,   117,   156,   112,  1115,   116,   117,   161,   112,
    3014     1048,    44,    45,   187,   552,   553,   560,   561,   272,  1336,
    3015     1218,   112,  1132,  1340,   554,   555,   112,     4,     5,     6,
    3016        7,     8,     9,   186,   187,   117,   210,   117,   699,   978,
    3017     1048,   295,   116,    29,    85,    86,    87,  1157,   222,   202,
    3018      110,   110,   713,   307,   112,   112,   132,   210,   114,   110,
    3019      901,   115,   115,   115,   110,   109,   219,   908,   109,   222,
    3020      111,   116,   113,   114,   110,   110,   229,   116,   110,   117,
    3021      110,   484,   110,   924,   110,   116,   110,   110,   442,  1199,
    3022     1200,   244,    69,   110,    71,   248,   594,   110,   110,   252,
    3023      253,   110,     0,  1200,   110,   946,   947,   948,  1218,   110,
    3024      110,   110,  1222,   266,   267,   110,   110,  1222,   115,    29,
    3025      273,   131,   110,   116,   622,  1442,  1236,   280,   117,   627,
    3026     1240,   112,   112,   116,    32,   110,   110,   110,   117,   117,
    3027     1079,   112,   112,  1240,   116,    43,   114,  1218,   809,  1157,
    3028      110,    49,   110,   110,   328,   132,     4,     5,     6,     7,
    3029        8,     9,   116,   110,  1222,    63,  1007,   116,    66,   110,
    3030      116,    69,   110,   112,   109,   328,   109,   109,  1288,  1289,
    3031      109,   109,   112,   110,   132,    33,   110,  1297,  1395,   115,
    3032     1538,   110,  1302,   115,    72,   348,   349,  1302,    76,   115,
    3033      454,   699,   114,   112,   129,    83,    84,    10,    11,    12,
    3034       13,    14,   365,   110,  1222,   713,   369,   132,   879,   112,
    3035      116,    69,   116,    71,   112,  1335,   110,   380,  1236,   110,
    3036      110,   109,   406,   112,   879,  1528,    39,   112,  1335,   112,
    3037      118,   119,   110,   396,  1302,  1528,   112,  1088,   112,  1529,
    3038      148,  1528,   506,   406,   508,   112,  1195,   511,    47,  1528,
    3039      514,   132,  1528,   161,    67,  1528,   115,  1528,   110,   132,
    3040      132,   424,   132,  1553,   132,   115,  1529,   430,   117,   432,
    3041      110,   879,   115,   112,    66,  1395,   112,   112,   186,   187,
    3042      112,  1132,   112,   112,  1302,   112,  1503,   112,   110,   110,
    3043     1553,    83,   947,  1413,   112,   112,   109,   109,   111,   109,
    3044      109,   809,   210,    60,   467,   118,   119,   110,   110,   472,
    3045      114,   117,   132,  1394,   222,   112,   112,   480,  1438,   110,
    3046       96,   484,   112,   110,    96,   488,   118,     3,   491,   109,
    3047      493,  1438,   109,   115,    10,    11,    12,    13,    14,  1010,
    3048      110,   112,  1462,   132,   252,   110,   110,  1462,   110,  1469,
    3049      513,  1471,    42,  1473,  1469,   116,   110,   117,   266,   132,
    3050      110,    96,    96,    39,   132,   528,   132,  1218,   531,   161,
    3051      533,   534,   110,  1528,  1528,  1528,   132,  1048,   117,   110,
    3052      132,   110,   110,  1503,   132,   115,   112,   112,  1508,  1240,
    3053     1510,    67,   109,  1048,  1462,   132,   115,   115,   110,   110,
    3054      132,  1469,  1522,   110,   110,  1064,   562,  1522,  1528,  1529,
    3055      563,   565,   564,  1222,  1491,  1381,  1529,  1563,  1538,   582,
    3056      328,   685,   566,  1312,  1128,  1340,   589,  1469,   917,  1079,
    3057      222,   685,   685,  1553,  1098,    66,   698,   600,   925,   602,
    3058     1553,   349,   978,  1051,  1462,    76,   871,  1538,   649,   944,
    3059     1240,  1469,   582,   723,  1522,   484,   570,   733,   621,   570,
    3060       72,   570,    74,    75,    76,    -1,   879,    -1,   260,    -1,
    3061       -1,    83,    84,   265,   637,    -1,    -1,    -1,    -1,    -1,
    3062      643,    -1,    -1,    -1,  1335,    -1,    -1,   118,    -1,   652,
    3063       -1,   654,   655,   656,    -1,    -1,    -1,   109,   406,   111,
    3064       -1,    -1,  1010,    -1,  1522,   117,   118,   119,    -1,    -1,
    3065       -1,  1201,  1202,    -1,  1204,     0,     1,    -1,    -1,    -1,
    3066       -1,  1211,    -1,  1213,    -1,   688,    -1,    -1,  1199,   692,
    3067      161,   694,    -1,    -1,   947,   698,    -1,    10,    11,    12,
    3068       13,    14,    -1,   706,  1199,  1200,    -1,    32,    -1,    -1,
    3069       -1,  1222,     3,    -1,    -1,    -1,   719,   720,   350,    10,
    3070       11,    12,    13,    14,    49,    -1,    39,  1222,    -1,    -1,
    3071      733,    72,    -1,    74,    75,    76,   484,    -1,    -1,    -1,
    3072      488,    -1,    83,    84,    69,  1240,    -1,  1438,    39,    -1,
    3073       -1,   222,    -1,    -1,    67,    -1,    -1,    -1,  1394,    72,
    3074       -1,    74,    75,    76,    -1,     0,    -1,    -1,   109,    -1,
    3075       83,    84,    -1,    -1,  1222,    -1,    67,   118,   119,    -1,
    3076     1471,   106,  1473,    -1,    -1,    -1,  1297,    -1,    -1,   260,
    3077       -1,  1302,    55,    -1,   265,  1048,   109,    32,   111,   431,
    3078       -1,    -1,  1297,    -1,    -1,   118,   119,  1302,    -1,   280,
    3079       -1,    -1,    -1,   816,    -1,    -1,    -1,  1508,    -1,  1510,
    3080      924,    -1,    -1,   148,    -1,   828,    72,    -1,    74,    75,
    3081       76,   156,   157,    -1,    69,    98,    -1,    83,    84,    -1,
    3082     1335,   473,    -1,    -1,    -1,  1375,    -1,  1538,    -1,    -1,
    3083        3,  1199,   600,    -1,   602,    -1,    -1,    10,    11,    12,
    3084       13,    14,   187,   109,    -1,   111,    -1,    -1,   871,    -1,
    3085     1318,    -1,   118,   119,    -1,   878,    -1,   202,    -1,   350,
    3086      205,   206,    -1,    -1,   464,   210,    39,    -1,    -1,    72,
    3087       -1,    74,    75,    76,    -1,    -1,    -1,    -1,   901,    -1,
    3088       83,    84,   464,    -1,    -1,    -1,   231,   910,    -1,   912,
    3089      235,    -1,   237,    -1,    67,    -1,   919,    -1,    -1,    -1,
    3090       -1,   246,   157,    -1,    -1,  1373,   109,   252,  1376,    -1,
    3091       -1,   194,   257,    -1,    -1,   118,   119,    -1,    -1,   942,
    3092      688,    -1,   267,  1438,    -1,    -1,    -1,  1200,    -1,  1297,
    3093      275,  1462,    -1,    -1,   217,    -1,    -1,    -1,  1469,   962,
    3094      431,    -1,   594,    -1,   227,    -1,    -1,  1462,    -1,  1222,
    3095       -1,   719,   720,  1421,  1469,   978,    -1,   448,  1426,    -1,
    3096       -1,    -1,    -1,   986,  1088,    -1,   989,  1240,   991,    -1,
    3097      622,    -1,    -1,    -1,    -1,   627,   231,    -1,    -1,    -1,
    3098       -1,    -1,   473,    -1,    -1,    -1,    -1,    -1,  1456,    -1,
    3099       -1,  1522,    -1,    -1,    -1,    -1,   341,   252,    -1,    -1,
    3100      345,    -1,   257,    -1,    -1,    -1,   351,  1522,    -1,    -1,
    3101       -1,    -1,   295,    -1,    -1,    -1,    -1,    -1,  1041,   364,
    3102       -1,    -1,    -1,   368,    -1,    -1,   371,    -1,    -1,  1302,
    3103       -1,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    72,
    3104       -1,    74,    75,    76,    -1,    -1,    -1,   699,   816,    -1,
    3105       83,    84,    -1,    -1,    -1,    -1,  1079,    -1,    -1,    -1,
    3106      828,   713,  1335,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3107     1093,   671,    -1,   418,  1542,  1098,   109,     0,   111,    -1,
    3108     1548,    -1,    -1,    -1,    -1,   118,   119,    -1,   433,   671,
    3109       -1,  1559,  1115,   438,    -1,  1563,   351,    -1,    -1,    -1,
    3110       -1,   446,    -1,   594,    99,    -1,   101,    -1,    -1,    32,
    3111       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   464,
    3112       -1,    -1,   467,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3113       -1,   622,    -1,    -1,    -1,    -1,   627,   482,    -1,   484,
    3114       39,    -1,   910,    -1,   912,    -1,    69,   492,    -1,    -1,
    3115       -1,   496,    -1,    -1,    -1,    -1,    -1,   809,    -1,    -1,
    3116      443,    -1,    -1,   418,    -1,  1438,    -1,     0,    67,    -1,
    3117       -1,    -1,  1195,    72,   942,    74,    75,    76,   433,    -1,
    3118      525,   526,    -1,   438,    83,    84,   469,   182,    -1,  1462,
    3119       -1,   446,    -1,   793,    -1,  1218,  1469,   192,   193,    32,
    3120       -1,    -1,   197,   803,   199,   200,    -1,    -1,   699,   464,
    3121      109,   793,   111,    -1,    -1,    -1,    -1,   817,    -1,   118,
    3122      119,   803,   713,   506,    -1,    -1,   571,   482,   511,   484,
    3123       -1,   514,    -1,    -1,   157,   817,    69,    -1,  1261,  1262,
    3124     1263,    -1,   733,    -1,   589,   590,    -1,    -1,    -1,  1522,
    3125       -1,    -1,    10,    11,    12,    13,    14,   602,    -1,    -1,
    3126       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3127       -1,   526,    -1,    -1,    -1,   620,    -1,   190,    -1,    -1,
    3128      625,    39,    -1,    -1,   197,    -1,   631,    -1,    -1,   634,
    3129      635,   636,    -1,    -1,    39,    -1,  1319,    -1,    97,    98,
    3130       99,   100,   101,   102,   103,   104,   105,   106,   653,    67,
    3131       -1,    -1,    -1,    -1,    -1,    -1,    -1,   696,   809,    -1,
    3132       -1,    -1,    67,    -1,   157,  1093,   671,    72,    -1,   252,
    3133     1098,    76,   131,    -1,   257,   590,    -1,   682,    83,    84,
    3134       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,  1473,
    3135       -1,   109,    -1,   111,    -1,    -1,   269,    -1,  1010,    -1,
    3136      118,   119,    -1,   708,   109,    -1,   711,    -1,    -1,    -1,
    3137       -1,  1394,  1395,   118,   119,   720,    -1,    -1,   723,   634,
    3138      635,   636,  1405,  1406,  1508,    -1,  1510,   670,    -1,    -1,
    3139       -1,    -1,    -1,    -1,    -1,    -1,   679,    -1,   653,    -1,
    3140      683,    -1,   747,   748,    -1,    -1,    -1,    -1,   753,    -1,
    3141      323,   790,    -1,    -1,    -1,    -1,   671,    -1,   331,   252,
    3142     1443,   334,    -1,    -1,   257,  1025,  1026,   682,   351,    -1,
    3143       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3144       -1,    -1,    -1,  1025,  1026,    -1,    -1,    -1,   793,    -1,
    3145       -1,    -1,    -1,   708,    -1,    -1,   711,    -1,   803,    -1,
    3146      805,    -1,   807,    39,    -1,   810,    -1,   812,   813,    -1,
    3147       -1,    -1,   817,    -1,    10,    11,    12,    13,    14,    -1,
    3148     1503,  1504,   827,  1083,  1084,   398,    -1,    -1,   867,   402,
    3149     1513,    67,    -1,   748,    -1,   418,    72,    -1,    74,    75,
    3150       76,  1083,  1084,    39,    -1,  1528,  1529,    83,    84,    -1,
    3151      433,    -1,    -1,    -1,    -1,   438,    -1,    -1,   351,  1010,
    3152       -1,    -1,    -1,   446,    -1,    -1,    -1,    -1,     1,    -1,
    3153     1553,    67,   911,   109,   879,   111,    -1,    -1,   793,    -1,
    3154       -1,   464,   118,   119,    -1,    -1,    -1,  1199,   803,    -1,
    3155      805,    -1,    -1,    -1,    -1,   810,   901,    -1,   813,   482,
    3156       -1,   484,   817,   908,   909,    -1,   479,   912,    -1,    -1,
    3157       -1,    -1,    -1,   109,    -1,   111,    -1,   956,    -1,   574,
    3158      575,    -1,   118,   119,    -1,   418,    72,    -1,    74,    75,
    3159       76,    -1,    -1,   938,    -1,    -1,    -1,    83,    84,    -1,
    3160      433,   946,   947,   526,   671,   438,    -1,    -1,   603,    -1,
    3161       -1,   606,   607,   446,   609,   994,   611,   612,    -1,   964,
    3162      903,   616,   617,   109,   879,   111,    -1,    -1,    -1,    -1,
    3163       -1,   464,   118,   119,  1234,    -1,    -1,    -1,    -1,    -1,
    3164       -1,    -1,    -1,    -1,    -1,  1297,    -1,    -1,    -1,   482,
    3165       -1,   484,  1234,    -1,   909,    -1,    -1,   570,   571,     0,
    3166        1,    -1,  1007,    -1,    -1,    -1,  1045,   590,    -1,  1269,
    3167       -1,    -1,    -1,    -1,    -1,  1020,    -1,  1277,  1278,  1279,
    3168     1025,  1026,    -1,  1028,  1029,    -1,    -1,  1269,    -1,    -1,
    3169       -1,    32,    -1,   526,    -1,  1277,  1278,  1279,    -1,    -1,
    3170       -1,    -1,    -1,  1048,    -1,    -1,    -1,    -1,  1199,   964,
    3171       -1,   634,   635,   636,    -1,    -1,    -1,    -1,    -1,    -1,
    3172       -1,    -1,    -1,    -1,    -1,    66,   793,    -1,    69,    -1,
    3173      653,    -1,    -1,    -1,    -1,    -1,   803,    -1,  1083,  1084,
    3174       -1,    -1,    -1,  1343,    -1,   658,  1125,    -1,   671,   662,
    3175      817,    -1,    -1,    -1,    -1,    -1,    -1,   590,    -1,   682,
    3176     1528,  1343,   757,   758,    -1,    -1,    -1,    -1,    -1,    -1,
    3177     1025,  1026,    -1,  1028,  1029,    -1,  1059,    -1,    -1,    -1,
    3178      253,    -1,    -1,    -1,    -1,   708,    -1,  1132,   711,    -1,
    3179       -1,    -1,    -1,  1048,    -1,    -1,    -1,    -1,    -1,    -1,
    3180       -1,   634,   635,   636,    -1,    -1,  1297,    -1,    -1,  1188,
    3181     1189,    -1,  1157,    -1,     0,    -1,   157,    -1,    -1,    -1,
    3182      653,    -1,    -1,    -1,    -1,   748,    -1,    -1,  1083,  1084,
    3183       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,    10,
    3184       11,    12,    13,    14,    -1,    -1,    32,    -1,    -1,   682,
    3185       -1,    -1,    -1,    -1,    -1,  1200,    -1,    -1,    -1,    -1,
    3186       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3187      793,    -1,    -1,  1218,    -1,   708,    -1,  1222,   711,    -1,
    3188      803,   222,   805,    69,   797,    -1,    -1,   810,    -1,  1234,
    3189      813,  1236,    -1,    -1,   817,  1240,    67,    -1,    -1,    -1,
    3190       -1,    72,  1157,    74,    75,    76,    -1,    -1,    -1,    -1,
    3191       -1,   252,    83,    84,    -1,   748,    -1,    -1,    -1,    -1,
    3192       -1,    -1,    -1,    -1,  1269,    -1,   921,    -1,    -1,    -1,
    3193       -1,    -1,  1277,  1278,  1279,    -1,    -1,    -1,   109,    -1,
    3194       -1,    -1,    -1,  1288,  1289,  1200,    -1,   118,   119,    -1,
    3195       -1,    -1,    -1,    -1,    -1,    -1,   879,  1302,  1025,  1026,
    3196      793,    -1,    -1,    -1,    -1,    -1,    -1,  1222,    -1,    -1,
    3197      803,   157,   805,    -1,    -1,    -1,    -1,   810,    -1,  1234,
    3198      813,  1236,    -1,    -1,   817,    -1,   909,    -1,    -1,    -1,
    3199     1335,    -1,    -1,    -1,   467,    -1,    -1,    -1,  1343,    -1,
    3200       -1,    -1,    -1,   916,    -1,    -1,    -1,    -1,    -1,    -1,
    3201       -1,    -1,    -1,    -1,  1269,    -1,  1083,  1084,    -1,    -1,
    3202     1399,    -1,  1277,  1278,  1279,    -1,    -1,    -1,  1311,    -1,
    3203       -1,    -1,    -1,  1288,  1289,    -1,    -1,    -1,  1417,    -1,
    3204      513,   964,    -1,    -1,    -1,    -1,   879,  1302,    -1,    -1,
    3205       -1,    -1,    -1,    -1,    -1,   528,    -1,    -1,   531,    -1,
    3206      533,   534,    -1,    -1,    -1,    -1,   252,    -1,  1413,    -1,
    3207       -1,   257,    26,    27,    28,    -1,   909,    -1,    -1,    -1,
    3208       -1,    -1,    -1,   996,    -1,    -1,    -1,    -1,  1343,    -1,
    3209     1085,    -1,   433,  1438,    -1,    -1,    -1,    -1,    -1,    -1,
    3210     1013,    -1,  1025,  1026,    -1,  1028,  1029,    -1,    -1,   582,
    3211       -1,  1490,  1491,    -1,    53,    -1,    55,  1462,    -1,    58,
    3212       59,    60,    -1,    62,  1469,  1048,    -1,    -1,    -1,    -1,
    3213       -1,   964,    -1,    -1,    -1,    -1,    -1,    -1,    77,    -1,
    3214       -1,    -1,    -1,   484,    -1,    99,    -1,   101,    -1,    -1,
    3215       89,    90,    -1,    -1,    -1,    -1,    -1,    -1,  1413,    -1,
    3216     1083,  1084,    -1,    -1,    -1,   351,    -1,    -1,    -1,    -1,
    3217       -1,    -1,   126,    -1,    -1,    -1,    -1,  1522,  1091,    -1,
    3218       -1,   654,    -1,   656,  1529,   526,    -1,  1470,    -1,  1472,
    3219       -1,    -1,  1025,  1026,    -1,  1028,  1029,    -1,    -1,    -1,
    3220       -1,    -1,  1269,    -1,    -1,    -1,    -1,  1462,    -1,    -1,
    3221     1277,  1278,  1279,    -1,  1469,  1048,    -1,    -1,    -1,    -1,
    3222     1133,    -1,  1217,    -1,  1507,    -1,  1509,    -1,   182,    -1,
    3223       -1,    -1,   418,   706,  1157,    -1,   190,    -1,   192,   193,
    3224       -1,    -1,    -1,   197,    -1,   199,   200,   433,    -1,   590,
    3225     1083,  1084,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3226      446,    -1,    -1,    -1,    -1,    -1,    -1,  1522,    -1,  1552,
    3227       -1,  1554,    -1,    -1,    -1,    -1,  1343,  1200,   464,    10,
    3228       11,    12,    13,    14,  1567,  1568,    -1,    -1,    -1,    -1,
    3229       -1,    -1,    -1,   634,   635,   636,   482,    -1,   484,  1222,
    3230       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3231       -1,  1234,   653,  1236,    -1,   269,    -1,    -1,    10,    11,
    3232       12,    13,    14,    -1,  1157,    -1,    -1,    -1,    -1,    -1,
     3483      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
     3484     967,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,  1454,
     3485      -1,  1456,    -1,  1458,    -1,    -1,  1040,    -1,    -1,    -1,
     3486      -1,   988,   989,    -1,    -1,    -1,    -1,    -1,  1473,    -1,
     3487      -1,    -1,   999,    67,    -1,    -1,    -1,    -1,  1005,  1006,
     3488      -1,  1008,  1009,  1010,    78,    -1,    -1,    -1,    -1,    -1,
     3489      -1,    -1,    -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
     3491       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3492      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3493      26,    27,    -1,  1117,    30,    31,    32,    33,    -1,    -1,
     3494      36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3495      -1,    -1,    -1,    -1,    -1,    -1,  1083,    -1,  1085,    -1,
     3496      -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,    -1,    -1,
     3497      66,    67,  1099,    69,    -1,    71,    72,    -1,    74,    75,
     3498      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3499      86,    87,    -1,  1177,  1178,  1122,  1123,  1124,    -1,    -1,
     3500      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3501      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,  1146,
     3502      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3503      -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,     3,     4,
     3504       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3505      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3506      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
     3507      -1,    36,    37,    38,    39,    40,    41,    -1,    43,    -1,
     3508    1207,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3509      -1,    -1,    57,    -1,    -1,    -1,    61,    62,  1225,    64,
     3510      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3511      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3512      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3513      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3514      -1,    -1,    -1,    -1,   109,    -1,   111,  1274,  1275,   114,
     3515      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3516      -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,
     3517      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3518      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3519      21,    22,    23,    24,    25,    26,    27,    -1,  1382,    30,
     3520      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
     3521      -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,    -1,
     3522      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3523      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3524      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3525      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3526      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,
     3527      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3528     111,    -1,    -1,    -1,  1468,  1469,   117,   118,   119,   120,
     3529     121,   122,    -1,     4,     5,     6,     7,     8,     9,    10,
     3530      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3531      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3532      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3533      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3534      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3535      27,    28,    -1,    -1,  1481,    66,    67,    -1,    69,    -1,
     3536      71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
     3537      81,    82,    83,    84,    -1,    86,    87,    -1,  1505,  1506,
     3538      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3539      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3540     111,    78,    -1,  1530,    -1,   116,   117,   118,   119,   120,
     3541     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
     3542      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3543      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3544      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
     3545      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3546      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3547      31,    32,    -1,    -1,    66,    67,    -1,    69,    39,    71,
     3548      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3549      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    32333550      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3234      526,    72,    -1,    74,    75,    76,  1269,    39,    -1,    -1,
    3235       -1,    -1,    83,    84,  1277,  1278,  1279,    -1,    -1,    -1,
    3236       -1,    -1,    -1,    -1,    -1,  1288,  1289,  1200,    -1,    -1,
    3237      711,    -1,    -1,    -1,    -1,    67,    -1,    -1,   109,  1302,
    3238       72,    -1,    -1,    -1,    76,    -1,    -1,   118,   119,  1222,
    3239       -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3240       -1,  1234,    -1,  1236,   590,   344,    -1,   346,    -1,    -1,
    3241       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   357,   358,
    3242     1343,    -1,    -1,    -1,    -1,    -1,   118,   119,    -1,    -1,
    3243       -1,    -1,    -1,    -1,    -1,    -1,  1269,    -1,    -1,    -1,
    3244       -1,    -1,    -1,    -1,  1277,  1278,  1279,    -1,   634,   635,
    3245      636,    -1,    -1,    -1,    -1,  1288,  1289,    -1,    -1,    -1,
    3246       -1,    -1,    -1,    -1,   805,    -1,    -1,   653,    -1,  1302,
    3247       -1,    -1,   813,    -1,    -1,     7,    -1,    -1,    10,    11,
    3248       12,    13,    14,    -1,    -1,   671,    -1,    -1,    -1,   962,
    3249     1413,    -1,    -1,    -1,    -1,    -1,   682,    -1,    -1,    -1,
    3250       -1,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
    3251     1343,    -1,    -1,   986,    -1,    -1,   989,    -1,   991,    -1,
    3252       -1,    -1,   708,    -1,    -1,   711,    -1,    -1,    -1,    -1,
    3253       -1,    -1,    -1,    -1,    66,    67,    -1,    -1,   879,  1462,
    3254       72,    -1,    -1,    -1,    76,    -1,  1469,    79,    80,    81,
    3255       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3256       -1,    -1,   748,    -1,    -1,    -1,    -1,    -1,  1041,    -1,
    3257       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3258     1413,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    3259      122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1522,
    3260       -1,    -1,    -1,    -1,    -1,    -1,   947,   793,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,    -1,    -1,   803,    -1,   805,
    3262      574,   575,    -1,   964,   810,    -1,    -1,   813,    -1,  1462,
    3263       -1,   817,    37,    38,    -1,    40,  1469,    -1,    -1,    -1,
    3264       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,
    3265       -1,    -1,   606,   607,    -1,   609,    -1,   611,   612,    -1,
    3266       -1,    66,   616,   617,    -1,    -1,    -1,    72,    -1,    74,
    3267       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3268       -1,    86,    87,    -1,    -1,    -1,    -1,  1028,  1029,  1522,
    3269       -1,    -1,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,
    3270       -1,    -1,    -1,    -1,   109,    -1,   111,  1048,   113,   114,
    3271       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3272       -1,    -1,    -1,   909,    -1,    -1,    -1,    -1,    -1,     3,
     3551      -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,
     3552      -1,    -1,    83,    84,   116,   117,   118,   119,   120,   121,
     3553     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3554      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3555      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3556      -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,    11,
     3557      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3558      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3559      32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
     3560      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3561      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3562      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3563      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3564      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
    32733565       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    32743566      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    32753567      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3276       -1,   700,    -1,   702,    -1,    39,    -1,    -1,    -1,    -1,
    3277      709,   710,    -1,    -1,    -1,   714,    -1,    -1,   964,    -1,
    3278       -1,    -1,    -1,    -1,    -1,    -1,    -1,   726,  1261,  1262,
    3279     1263,    -1,   731,    67,    -1,    69,    -1,    71,    72,    -1,
    3280       74,    75,    76,   757,   758,    -1,    -1,    -1,    -1,    83,
    3281       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3282       -1,    -1,   761,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3283       -1,    40,    -1,    -1,    -1,   109,    -1,   111,    -1,  1025,
    3284     1026,    -1,  1028,  1029,   118,   119,  1319,    -1,    -1,    -1,
    3285       -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,  1199,  1200,
    3286       -1,    -1,  1048,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3287       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3288       -1,  1222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3289       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1083,  1084,  1240,
    3290      109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3291      119,   120,   121,   122,   123,    -1,    -1,    49,    -1,    -1,
    3292       -1,    -1,   861,   862,   863,   864,    -1,   866,    -1,    -1,
    3293       -1,    -1,  1405,  1406,    66,    -1,    -1,    -1,    -1,    -1,
    3294       -1,    -1,    -1,   882,    -1,    -1,    -1,  1288,  1289,    -1,
    3295       -1,    -1,    -1,    -1,    -1,    -1,  1297,   896,    -1,    -1,
    3296       -1,  1302,   916,    -1,    -1,    -1,    -1,   921,    -1,    -1,
    3297     1443,  1157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3298       -1,    -1,   114,    -1,    -1,    -1,   118,    -1,    -1,    -1,
    3299       -1,    -1,    -1,    -1,  1335,    -1,    -1,   936,    -1,    -1,
     3568      -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
     3569      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3570      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3571      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
     3572      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3573      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3574      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
     3575      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3576      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
     3577       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3578      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3579      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3580      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    33003581      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3301       -1,    -1,    -1,    -1,  1200,   147,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,    -1,    -1,   157,    -1,    -1,    -1,   161,
    3303       -1,  1504,    -1,    -1,    -1,    -1,  1222,    -1,    -1,    -1,
    3304     1513,    -1,    -1,    -1,   983,    -1,    -1,    -1,  1234,    -1,
    3305     1236,   990,    -1,    -1,    -1,    -1,   995,    -1,    -1,    -1,
    3306       -1,  1000,    -1,  1002,    -1,    -1,    -1,  1006,    -1,  1008,
    3307     1009,    -1,  1413,  1012,    -1,    -1,    -1,    -1,   210,    -1,
    3308       -1,    -1,  1021,  1269,    -1,    -1,    -1,    -1,    -1,    -1,
    3309      222,  1277,  1278,  1279,    -1,    -1,    -1,  1438,    -1,    -1,
    3310     1039,  1040,  1288,  1289,    -1,    -1,    -1,    -1,   240,    -1,
    3311       -1,    -1,    -1,    -1,    -1,    -1,  1302,    -1,    -1,    -1,
    3312       -1,  1462,    -1,    -1,    -1,    -1,    -1,  1066,  1469,    -1,
    3313     1069,  1085,    -1,   265,    -1,    -1,    -1,    -1,    -1,    -1,
    3314      272,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3315       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1343,    -1,    -1,
    3316       -1,    -1,    -1,   295,    -1,    -1,    -1,    -1,    -1,    -1,
    3317       -1,    -1,    -1,  1112,    -1,   307,    -1,    -1,    -1,  1118,
    3318     1119,  1522,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3319       -1,  1130,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,  1140,    -1,    -1,  1143,    -1,  1145,    -1,    -1,  1148,
    3321       -1,    -1,    -1,   345,    -1,    -1,    -1,    -1,   350,    -1,
    3322       -1,    -1,  1161,    -1,    -1,    -1,    -1,  1413,    -1,    -1,
    3323       -1,    -1,    -1,    -1,    -1,  1174,    -1,  1176,  1177,  1178,
    3324     1179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3325       -1,    -1,    -1,  1192,    -1,  1194,    -1,    -1,    -1,  1198,
    3326       -1,    -1,    -1,  1217,    -1,    66,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,    -1,    -1,    76,  1462,    78,    -1,    80,
    3328       -1,    -1,    -1,  1469,    -1,    -1,    87,    -1,  1227,  1228,
    3329       -1,    -1,    -1,    -1,   426,   427,    -1,    -1,    -1,    -1,
    3330       -1,   433,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3331       -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,   120,
    3332      121,   122,   454,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,  1522,    -1,    -1,    -1,
    3334       -1,  1280,  1281,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335      482,  1290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3336      161,    -1,   494,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337       -1,    -1,    -1,    -1,   506,    -1,   508,    -1,    -1,   511,
    3338       -1,   513,   514,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3339       -1,    -1,    -1,    -1,   526,    -1,    -1,    -1,    -1,    -1,
    3340       -1,    -1,  1341,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3341       -1,    -1,    -1,    -1,    -1,  1354,    -1,  1356,  1357,  1358,
    3342       -1,   222,    -1,   224,   225,   226,    -1,    -1,    -1,  1368,
    3343       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1377,    -1,
    3344       -1,    -1,    -1,    -1,    -1,    -1,   578,    -1,    -1,    -1,
    3345       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   590,   260,
    3346       -1,    -1,   594,    -1,   265,  1404,    -1,    -1,    -1,    -1,
    3347       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   280,
    3348       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   620,    -1,
    3349       -1,    -1,    -1,   625,    -1,    -1,    -1,    -1,    -1,    -1,
    3350       -1,    -1,   634,   635,   636,    -1,    -1,    -1,    -1,    -1,
    3351     1449,  1450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3352       -1,   653,    -1,  1462,    -1,    -1,    -1,   328,    -1,    -1,
    3353     1469,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   350,
    3355       -1,    -1,    -1,   685,   355,   356,    -1,    -1,    -1,    -1,
    3356       -1,    -1,   363,  1502,    -1,    -1,    -1,  1506,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   711,
    3358        7,   713,    92,    10,    11,    12,    13,    14,    -1,    -1,
    3359       -1,    -1,   102,    -1,    -1,    -1,  1535,    -1,  1537,    -1,
    3360       -1,    -1,    -1,    -1,    -1,   406,    -1,    -1,    -1,    -1,
    3361       37,    38,    39,    40,    -1,    -1,   748,    -1,    -1,    -1,
    3362       -1,    -1,    -1,   424,    -1,    -1,  1565,  1566,   429,    -1,
    3363      431,    -1,    -1,    -1,  1573,  1574,    -1,    -1,    -1,    66,
    3364       67,    -1,    -1,    -1,    -1,    72,    -1,   448,   158,    76,
    3365      451,   452,    79,    80,    81,    82,    83,    84,   459,    86,
    3366       87,    -1,   172,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3367       -1,    -1,   473,   805,    -1,    -1,    -1,   809,    -1,   480,
    3368       -1,   813,   109,    -1,   111,   195,    -1,    -1,    -1,    -1,
    3369       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,   209,
    3370       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   218,    -1,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   228,    -1,
    3372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3373       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3374       -1,    -1,    -1,   253,    -1,    -1,    -1,    -1,   258,    -1,
    3375       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
    3376       -1,   271,    -1,    -1,    72,    -1,    -1,   277,    76,   279,
    3377       -1,    79,    80,    81,    82,    83,    84,   909,    86,    87,
    3378       -1,    -1,    -1,    -1,    -1,    -1,   296,    -1,    -1,    -1,
    3379       -1,    -1,   924,   594,    -1,    -1,    -1,    -1,    -1,    -1,
    3380       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3381      118,   119,   120,   121,   122,   123,   948,    -1,    -1,    -1,
    3382       -1,   622,    -1,    -1,    -1,    -1,   627,    -1,   338,    -1,
    3383       -1,    -1,   964,   343,    -1,    -1,     3,     4,     5,     6,
     3582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3583      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3584      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3585      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3586      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3587      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3588      -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
     3589       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3590      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3591      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3592      -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3593      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3594      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3595      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3596      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3597      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3598      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3599      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3600      -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    33843601       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    33853602      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3386       27,    -1,   372,    30,    31,    32,   376,   377,    -1,   379,
    3387       -1,    -1,    39,    -1,    -1,  1007,   386,   387,    -1,   389,
    3388      390,    -1,   392,    -1,   394,    -1,    -1,    -1,    -1,    -1,
    3389       -1,    -1,    -1,    -1,    -1,    -1,  1028,  1029,   699,    -1,
    3390       67,   411,    69,    -1,    71,    -1,    -1,    74,    75,   419,
    3391       -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3604      37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    33923605      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3393       37,    38,   733,    40,   444,    -1,    -1,    -1,    -1,    -1,
    3394       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3395       -1,   118,   119,    -1,    -1,    -1,  1088,    -1,    -1,    66,
    3396      470,    -1,    -1,    -1,    -1,    72,   476,    -1,    -1,    76,
    3397       -1,   481,    79,    80,    81,    82,    83,    84,    -1,    86,
     3606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3607      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
     3608      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    33983609      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3399       -1,    -1,    -1,    -1,    -1,    -1,   797,    -1,    -1,    -1,
    3400       -1,    -1,   109,    -1,   111,    -1,    -1,   517,   809,   116,
    3401       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
    3402       -1,    -1,   532,    -1,    -1,  1157,     0,   828,    -1,     3,
     3610      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3611      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3612     117,   118,   119,   120,   121,   122,     0,    -1,    -1,     3,
    34033613       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    34043614      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    34053615      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
    3406      570,    -1,    36,    -1,    -1,    39,    40,  1199,    -1,   579,
    3407       -1,   156,   157,    -1,    -1,    -1,   586,    -1,    37,    38,
    3408       -1,    40,   592,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       64,   601,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3410       74,    75,    76,    -1,  1236,   190,    -1,    66,    -1,    83,
    3411       84,    -1,   197,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3412       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3413       -1,    -1,   642,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3414       -1,   942,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
    3415      109,    -1,   111,    -1,    -1,   114,  1288,  1289,    -1,   118,
    3416      119,   120,   121,   122,   123,  1297,    -1,    -1,   678,    -1,
    3417       -1,    -1,    -1,   974,    -1,    -1,   686,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,   269,    10,    11,    12,    13,    14,
    3419       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3420       25,    26,    27,    28,    -1,    -1,    -1,   717,    -1,  1010,
    3421       -1,    -1,    -1,    -1,    39,    -1,    -1,   727,   728,    -1,
    3422     1021,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
    3423       -1,   741,    -1,    -1,   147,    -1,    -1,    -1,   323,    -1,
    3424       -1,    -1,    67,    -1,   157,    -1,   331,   332,    -1,   334,
    3425      335,    -1,   762,    78,   764,    66,   169,   170,   768,    -1,
    3426      345,    72,    -1,    -1,   349,    76,    -1,    -1,    79,    80,
    3427       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3428       -1,  1413,    -1,   368,    -1,    -1,   371,    -1,    -1,    -1,
    3429       -1,    -1,  1093,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3430      111,    -1,    -1,    -1,    -1,    -1,  1107,   118,   119,   120,
    3431      121,   122,   123,   398,    -1,    -1,    -1,   402,    -1,    -1,
    3432       -1,    -1,   832,    -1,    -1,    -1,    -1,   240,    -1,   839,
    3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1471,
    3434       -1,  1473,   852,    -1,   854,    -1,    -1,    -1,   433,    -1,
    3435       -1,   264,    -1,    -1,    -1,    -1,    -1,    -1,   868,    -1,
    3436       -1,    -1,    -1,    -1,    -1,   875,    -1,    -1,    -1,    -1,
    3437       -1,    -1,    -1,    -1,    -1,    -1,  1508,   887,  1510,    -1,
    3438      890,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3439       -1,    -1,    -1,    -1,   479,    -1,    -1,   482,  1199,    -1,
    3440       -1,    -1,    -1,    -1,    -1,    -1,  1538,     4,     5,     6,
    3441        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3442       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3443       27,    -1,    -1,    30,    31,    32,   521,    -1,    -1,    -1,
    3444      525,   526,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3445       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   969,
    3446       -1,    -1,    -1,    -1,    -1,    -1,    -1,   380,    -1,    -1,
    3447       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3448       -1,    -1,    -1,    -1,    -1,   570,   571,    -1,    -1,    -1,
    3449       -1,    -1,    -1,    -1,    -1,  1005,  1297,    -1,    -1,    -1,
    3450       -1,    -1,    -1,    -1,   589,   590,    -1,    -1,    -1,    -1,
    3451       -1,    -1,    -1,   110,   111,   600,    -1,   602,   603,    -1,
    3452       -1,   118,   119,    -1,   609,    -1,    -1,    -1,    -1,    -1,
    3453       -1,    -1,    -1,    -1,   619,   620,    -1,    -1,    -1,    -1,
    3454      625,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   634,
    3455      635,   636,    -1,  1063,    -1,    -1,    -1,    -1,    -1,  1069,
    3456       -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,
    3457       -1,    -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,
    3458       -1,    -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,
    3459       -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,  1108,    -1,
    3460      513,    -1,    -1,   688,    -1,    -1,  1116,    -1,    -1,    -1,
    3461       -1,    -1,    -1,   526,    -1,    -1,    -1,    -1,   531,    -1,
    3462       -1,   534,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,
    3463       -1,    -1,    -1,   546,    -1,    -1,    -1,    -1,    -1,    -1,
    3464       -1,    -1,  1152,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3465       -1,    -1,    -1,    -1,  1164,   568,    -1,  1167,    -1,  1169,
    3466       -1,    -1,   747,   748,    -1,   578,    -1,   752,   753,    -1,
    3467       -1,    -1,   585,  1183,  1184,    -1,    -1,   590,    -1,    -1,
     3616      -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
    34683617      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3469       -1,    -1,    -1,    -1,    -1,  1205,    -1,    -1,    -1,    -1,
    34703618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3471       -1,    -1,   797,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3472      805,    -1,    -1,    -1,    -1,    -1,   639,   812,   813,    -1,
    3473       -1,   816,    -1,   818,    -1,   648,    -1,    -1,    -1,    -1,
    3474       -1,    -1,    -1,   828,  1254,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,  1553,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3476       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3477       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3478       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3479       31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    -1,
     3619      64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
     3620      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3621      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34803622      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3481       -1,    -1,    -1,    -1,    -1,    -1,   901,    -1,    -1,    -1,
    3482     1330,    -1,  1332,   908,   909,   910,    67,   912,    69,    -1,
    3483       71,   916,    -1,    74,    75,   748,  1346,   750,  1348,    -1,
    3484       -1,    -1,    -1,    -1,    -1,    -1,    -1,   760,    -1,    -1,
    3485       -1,    -1,   937,   938,   767,    -1,  1366,    -1,    -1,    -1,
    3486       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3487      111,    -1,  1382,  1383,    -1,    -1,    -1,   118,   119,   964,
    3488       -1,    -1,    -1,  1393,    -1,    -1,  1396,    -1,    -1,   974,
    3489       -1,    -1,    -1,    -1,    -1,    -1,   809,   810,    -1,    -1,
    3490      813,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1419,
    3491       -1,   996,   997,    -1,   827,    -1,    -1,    -1,  1428,    -1,
    3492       -1,  1431,  1007,  1433,  1434,  1435,    -1,    -1,  1013,  1014,
    3493       -1,  1016,  1017,  1018,    -1,    -1,    -1,    -1,    -1,   283,
    3494       -1,   285,   286,  1028,  1029,    37,    38,    -1,    40,   293,
    3495      294,    -1,    -1,    -1,   867,    -1,    -1,    -1,   871,    -1,
    3496       -1,    -1,    -1,   307,   308,  1475,    -1,  1477,    -1,  1479,
    3497       -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
    3498       72,    -1,    -1,    -1,    76,  1495,    -1,    79,    80,    81,
    3499       82,    83,    84,    -1,    86,    87,   909,    -1,    -1,    -1,
    3500       -1,   345,    -1,    -1,    -1,    -1,  1091,    -1,  1093,    -1,
    3501       -1,    -1,    -1,  1098,    -1,    -1,    -1,   109,    -1,   111,
    3502       -1,    -1,  1107,    -1,    -1,    -1,   118,   119,   120,   121,
    3503      122,   123,    -1,    -1,    -1,   948,    -1,   381,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1132,  1133,  1134,
    3505       -1,   964,   965,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3506       -1,    -1,    -1,    -1,    -1,   978,    -1,    -1,    -1,    -1,
    3507       -1,   984,  1157,    -1,   987,    -1,   989,    -1,    10,    11,
    3508       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3509       22,    23,    24,    25,    26,    27,    28,  1010,    30,    31,
    3510       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,  1021,    -1,
    3511       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3512       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3513     1043,    -1,  1045,  1218,    -1,    67,    -1,    -1,    -1,    66,
    3514       -1,    -1,    74,    75,    -1,    72,    78,  1060,  1061,    76,
    3515       -1,  1236,    79,    80,    81,    82,    83,    84,    -1,    86,
    3516       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1081,    -1,
    3517       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3518       -1,    -1,   109,    -1,   111,    -1,   118,   119,    -1,    -1,
    3519       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
    3520       -1,    -1,    -1,  1288,  1289,   549,   550,   551,   552,   553,
    3521      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3522      564,   565,   566,    -1,    -1,  1138,    -1,    -1,    -1,    -1,
    3523       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,  1157,    -1,    -1,    -1,    -1,    -1,
    3525       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1172,
    3526     1173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
    3528        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3529       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3530       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3531       -1,    36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3532       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1413,    -1,
    3533       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1252,
    3534       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3535       75,    76,   696,    -1,    79,    80,    81,    82,    83,    84,
    3536       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3537       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3539       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3540       -1,    -1,    -1,  1316,    -1,    -1,  1319,   132,    -1,    -1,
    3541       -1,    -1,    -1,    -1,    -1,   759,    -1,    -1,  1503,    10,
    3542       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3543       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3544       31,    32,    -1,  1528,  1529,    -1,   790,    -1,    39,    -1,
    3545       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3546       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1553,    -1,
    3547       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3548       -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
    3549     1403,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3551       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3552       21,    22,    23,    24,    25,    26,    27,   118,   119,    30,
    3553       31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
    3554       41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
    3555       51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
    3556       61,    62,    -1,    64,    -1,    66,    67,   911,    69,    -1,
    3557       71,    72,  1485,    74,    75,    76,    -1,    -1,    79,    80,
    3558       81,    82,    83,    84,    -1,    86,    87,    10,    11,    12,
    3559       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3560       23,    24,    25,    26,    27,    28,    -1,    -1,   109,    -1,
    3561      111,    -1,   956,   114,    -1,    -1,    39,   118,   119,   120,
    3562      121,   122,   123,    -1,    -1,  1538,    -1,   128,    -1,    -1,
    3563       -1,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3565      994,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
    3566       -1,    -1,    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,
    3567       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3568       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3569       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3570       31,    32,    33,    -1,  1048,    36,    37,    38,    39,    40,
    3571       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3572       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3573       30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
    3574       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3575       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3577       -1,    -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,
    3578      111,  1125,    -1,    83,    84,    -1,    -1,   118,   119,   120,
    3579      121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
    3580       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3581       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3582       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    -1,    -1,    -1,  1188,  1189,    -1,    -1,    -1,    -1,
    3585       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    3586       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3587       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3588       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3589       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3590      111,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,   120,
    3591      121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
    3592       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3593       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3594       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3595       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3596       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3597       30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
    3598       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3599       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3600       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3601       -1,    -1,    72,    -1,    74,    75,    76,    -1,   109,    -1,
    3602      111,    -1,    -1,    83,    84,   116,    -1,   118,   119,   120,
    3603      121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3604       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3605       -1,   111,    -1,    -1,    -1,  1399,    -1,    -1,   118,   119,
    3606       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,  1417,    -1,    -1,    -1,    -1,    -1,    -1,
    3608       -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
     3623      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3624      -1,    -1,    -1,   117,   118,     3,     4,     5,     6,     7,
    36093625       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    36103626      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3611       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3612       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3613       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3614       27,    -1,    -1,    30,    31,    32,  1490,  1491,    66,    67,
    3615       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3616       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3627      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3628      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36173629      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3618       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3619       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,    -1,
    3620      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3621        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3622       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3623       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3624       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3625       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3626       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3627       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3628       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3629       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3631       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3632      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3633        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3634       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3635       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3636       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3637       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3638       27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3639       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3640       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3641       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3644      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3645        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3646       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3647       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3648       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3649       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3650       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3651       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3652       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3653       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3656      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3657        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3658       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3659       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3660       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3663       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3664       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3667       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3668      118,   119,   120,   121,   122,   123,     3,     4,     5,     6,
    3669        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3670       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3671       27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
    3672       -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3673       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3674       -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
    3675       67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
    3677       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3678       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3679       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,
    3680       -1,   118,   119,     3,     4,     5,     6,     7,     8,     9,
    3681       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3682       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3683       30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
    3684       40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3686       -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,
    3687       -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
    3688       -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,
    3689       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3690       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3691       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
    3692        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3693       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3694       23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
    3695       33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,
    3696       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3697       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3698       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
    3699       -1,    74,    75,    -1,    -1,    78,     4,     5,     6,     7,
    3700        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3701       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3702       -1,    -1,    30,    31,    32,    -1,    -1,    -1,   111,    -1,
    3703       -1,    39,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3705       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3630      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    37063631      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    37073632      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    37083633      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37093634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3711      118,   119,     4,     5,     6,     7,     8,     9,    10,    11,
     3635      -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,
     3636     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    37123637      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    37133638      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3714       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3715       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3716       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3717       -1,    30,    31,    32,    -1,    67,    -1,    69,    -1,    71,
    3718       39,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     3639      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
    37193640      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3720       -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,    67,    -1,
    3721       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,   111,
    3722       -1,    -1,    -1,    -1,    83,    84,   118,   119,     4,     5,
     3641      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3642      -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
     3643      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
     3644      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3646      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3647      -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
    37233648       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    37243649      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3725       26,    27,   111,    -1,    30,    31,    32,    -1,    -1,   118,
    3726      119,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,    12,
     3650      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
     3651      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3652      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3653      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3654      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3655      -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    37273656      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    37283657      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3729       -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,    75,
     3658      -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,
     3659      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3660      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3661      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
     3662      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
     3663      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3664      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3665      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3666      -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,     7,
     3667       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3668      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3669      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3670      -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3671      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3672      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    67,
     3673      -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,     4,
     3674       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3675      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3676      25,    26,    27,    67,    -1,    30,    31,    32,    -1,    -1,
     3677      74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,   117,
     3678     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3679      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3680      -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,    74,
     3681      75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3682      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3683      -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3684      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3685      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3686      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3687      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3688      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3689      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3690      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3691      27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
     3692      -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
     3695      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3696      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
     3697       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3698      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3699      25,    26,    27,    -1,   111,    30,    31,    32,   115,    -1,
     3700     117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    37303701      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37313702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3732       96,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3733       -1,    74,    75,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3734       83,    84,   118,   119,     4,     5,     6,     7,     8,     9,
    3735       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3736       20,    21,    22,    23,    24,    25,    26,    27,   111,    -1,
    3737       30,    31,    32,    -1,    -1,   118,   119,    -1,    -1,    39,
     3703      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3704      75,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
     3705      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3706      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3707      32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,
     3708      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
     3709      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3710      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3711      -1,    -1,    74,    75,    -1,     4,     5,     6,     7,     8,
     3712       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3713      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3714      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,
     3715      39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
     3716      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3718      69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,
     3719       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3720      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3721      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3722      -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,
    37383723      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37393724      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3740       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3741       -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,     6,
    3742        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3725      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3726      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3727      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3728      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3729      40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3730      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3731      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
     3732      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3733      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3734      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3735      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3736      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
     3737     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
    37433738      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    37443739      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3745       -1,   111,    39,    -1,    -1,    -1,    -1,    -1,   118,   119,
    3746       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3748       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3749        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3740      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3741      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3742      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3743      67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,
     3744      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3745      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3746      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3747      76,    -1,   109,   110,   111,    -1,    -1,    83,    84,    -1,
     3748     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
    37503749      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3751       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3752       -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
    3753       -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3754       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3755       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3756       74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
    3757       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3758       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3759       31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
    3760       -1,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
    3761       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3762       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3763       71,    -1,    -1,    74,    75,    10,    11,    12,    13,    14,
    3764       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3765       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3766       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3767      111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,    -1,
    3768       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3770       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3771       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3772       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3773       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3774       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    10,
    3775       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3776       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3777       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3778       -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3779       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3780       23,    24,    25,    26,    27,    66,    67,    30,    31,    32,
    3781       -1,    72,    -1,    74,    75,    76,    39,    -1,    79,    80,
    3782       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3783       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3784       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   109,   110,
    3785      111,    74,    75,    -1,    -1,    -1,    -1,   118,   119,   120,
    3786      121,   122,   123,    10,    11,    12,    13,    14,    15,    16,
    3787       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3788       27,    -1,    -1,    30,    31,    32,   109,    -1,   111,    -1,
    3789       37,    38,    39,    40,    -1,   118,   119,    -1,    -1,    -1,
    3790       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3791       19,    20,    21,    22,    23,    24,    25,    26,    27,    66,
    3792       67,    30,    31,    32,    -1,    72,    -1,    74,    75,    76,
    3793       39,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3794       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3795       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3796       -1,    -1,   109,    -1,   111,    74,    75,    -1,    -1,    -1,
    3797       -1,   118,   119,   120,   121,   122,   123,    10,    11,    12,
     3750      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
     3751      -1,   117,   118,    37,    38,    39,    40,    10,    11,    12,
    37983752      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    37993753      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3800       -1,    -1,   111,    -1,    37,    38,    39,    40,    -1,   118,
    3801      119,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3754      -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,    -1,
     3755      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3756      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3757      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
     3758      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3759      83,    84,    -1,   117,   118,   119,   120,   121,   122,    10,
     3760      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3761      21,    22,    23,    24,    25,    26,    27,    -1,   111,    30,
     3762      31,    32,    -1,    -1,   117,   118,    37,    38,    39,    40,
     3763      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3764      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3765      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3766      40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3767      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3768      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3769      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3770     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3771     121,   122,    10,    11,    12,    13,    14,    15,    16,    17,
     3772      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3773      -1,   111,    30,    31,    32,   115,    -1,   117,   118,    37,
     3774      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
     3775      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3776      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
     3777      -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,
     3778      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3779      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3780      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3781      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3782     118,   119,   120,   121,   122,    10,    11,    12,    13,    14,
    38023783      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3803       25,    26,    27,    66,    67,    30,    31,    32,    -1,    72,
    3804       -1,    74,    75,    76,    39,    -1,    79,    80,    81,    82,
    3805       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3806       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3807       -1,    -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,
    3808       75,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3809      123,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3810       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3811       -1,    30,    31,    32,    -1,    -1,   111,    -1,    37,    38,
    3812       39,    40,    -1,   118,   119,    -1,    -1,    -1,    -1,    10,
    3813       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3814       21,    22,    23,    24,    25,    26,    27,    66,    67,    30,
    3815       31,    32,    -1,    72,    -1,    74,    75,    76,    39,    -1,
    3816       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3817       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3818       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3819      109,    -1,   111,    74,    75,    -1,    -1,    -1,    -1,   118,
    3820      119,   120,   121,   122,   123,    10,    11,    12,    13,    14,
    3821       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3822       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3823      111,    -1,    37,    38,    39,    40,    -1,   118,   119,    -1,
     3784      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
     3785     117,   118,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    38243786      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    38253787      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    38293791      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38303792      67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,
    3831       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     3,
    3832        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3793      -1,    -1,   117,   118,   119,   120,   121,   122,     3,     4,
     3794       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3795      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3796      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
     3797     117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
     3798      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3799      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3800      32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,
     3801      75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    38333802      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3834       24,    25,    26,    27,   111,    -1,    30,    31,    32,    -1,
    3835       -1,   118,   119,    -1,    -1,    39,    -1,    -1,    -1,    10,
    3836       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3837       21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
    3838       31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
    3839       74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3840       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3841       23,    24,    25,    26,    27,    28,    67,    30,    31,    32,
    3842       -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
    3843      114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
    3844       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3845       25,    26,    27,    -1,    67,    30,    31,    32,   109,    72,
    3846      111,    74,    75,    76,    39,    78,    -1,   118,   119,    -1,
    3847       83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
    3848       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3849       27,    -1,    67,    30,    31,    32,    -1,    72,   111,    74,
    3850       75,    76,    39,    -1,    -1,   118,   119,    -1,    83,    84,
    3851       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3803      24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
     3804      72,    -1,    74,    75,    76,    39,    -1,    -1,    -1,   114,
     3805      -1,    83,    84,    -1,    10,    11,    12,    13,    14,    15,
     3806      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3807      26,    27,    -1,    67,    30,    31,    32,   109,    72,   111,
     3808      74,    75,    76,    39,    -1,   117,   118,    -1,    -1,    83,
     3809      84,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3810      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3811      -1,    67,    30,    31,    32,   109,    72,   111,    74,    75,
     3812      76,    39,    -1,   117,   118,    -1,    -1,    83,    84,    -1,
     3813      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3814      20,    21,    22,    23,    24,    25,    26,    27,    28,    67,
     3815      30,    31,    32,   109,    72,   111,    74,    75,    76,    39,
     3816      -1,   117,   118,    -1,    -1,    83,    84,    -1,    10,    11,
     3817      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3818      22,    23,    24,    25,    26,    27,    28,    67,    30,    31,
     3819      32,   109,    -1,   111,    74,    75,    -1,    39,    78,   117,
     3820     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    38523821      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3853       67,    30,    31,    32,   109,    72,   111,    74,    75,    76,
    3854       39,    -1,    -1,   118,   119,    -1,    83,    84,    -1,    10,
     3822      -1,    30,    31,    32,    -1,    67,    -1,    -1,    -1,   109,
     3823      39,   111,    74,    75,    -1,    -1,    78,   117,   118,    10,
    38553824      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    38563825      21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3857       31,    32,   109,    72,   111,    74,    75,    76,    39,    40,
    3858       -1,   118,   119,    -1,    83,    84,    -1,    10,    11,    12,
     3826      31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,
     3827      -1,    -1,    -1,    -1,    -1,   117,   118,    10,    11,    12,
    38593828      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3860       23,    24,    25,    26,    27,    28,    67,    30,    31,    32,
    3861      109,    -1,   111,    74,    75,    -1,    39,    -1,    -1,   118,
    3862      119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3863       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3864       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3865      111,    74,    75,    -1,   115,    78,    -1,   118,   119,    -1,
     3829      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
     3830      -1,    -1,   111,    74,    75,    -1,    39,    -1,   117,   118,
    38663831      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    38673832      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3868       30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,
    3869       40,    -1,    -1,    -1,    -1,   118,   119,    -1,    10,    11,
     3833      30,    31,    32,    -1,    67,    -1,    -1,    -1,    -1,    39,
     3834     111,    74,    75,    -1,    -1,    -1,   117,   118,    10,    11,
    38703835      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    38713836      22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
    3872       32,    -1,    -1,    -1,    74,    75,    -1,    39,    40,    10,
    3873       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3874       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3875       31,    32,    -1,    -1,    -1,    67,    -1,    -1,    39,    -1,
    3876       -1,   111,    74,    75,    -1,   115,    -1,    -1,   118,   119,
     3837      32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,    -1,
     3838      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    38773839      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3878       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3879       -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,   111,
    3880       -1,    -1,    -1,   115,    -1,    -1,   118,   119,    -1,    -1,
    3881       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3840      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3841      -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,     4,
     3842       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3843      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3844      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   111,
     3845      -1,    -1,    -1,    -1,    39,   117,   118,    -1,    -1,    -1,
     3846      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3848      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3849      75,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
     3850      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     3851      56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
     3852      66,    -1,    -1,    -1,    -1,   110,    72,    -1,    -1,    -1,
     3853      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3854      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3855      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3856      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3857      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
     3858      38,   127,    40,    41,    -1,    43,   132,    -1,    46,    47,
     3859      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
     3860      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
     3861      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3862      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3863      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3864      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3865      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
     3866     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,
     3867      -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,     8,
     3868       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    38823869      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3883      111,    30,    31,    32,    -1,    -1,    -1,   118,   119,    -1,
    3884       39,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3885       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3886       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,
    3887       39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    10,
    3888       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3889       21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3890       31,    32,    33,    34,    35,    74,    75,    -1,    39,    -1,
    3891       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,
    3892      119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3893       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3894       -1,    -1,   111,    74,    75,    -1,    -1,    -1,    -1,   118,
    3895      119,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3896       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3897       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3898       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,
    3899       -1,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
    3900       49,    50,    51,    52,    53,    -1,    -1,    56,    57,    -1,
    3901       -1,    -1,    61,    62,    67,    64,    69,    66,    71,    -1,
    3902       -1,    74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3870      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3871      39,    -1,    37,    38,    -1,    40,    41,    -1,    43,    44,
     3872      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3873      -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,    64,
     3874      69,    66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,
     3875      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3876      -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,
     3877      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3878      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3879      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3880      37,    38,   127,    40,    41,    -1,    43,    44,    45,    46,
     3881      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
     3882      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
     3883      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3884      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3885      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
     3888     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
     3889     127,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
     3890      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
     3891      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
     3892      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    39033893      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3894      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
    39043895      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3905       -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
    3906      109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3907      119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,   128,
    3908       -1,    37,    38,   132,    40,    41,    -1,    43,    -1,    -1,
    3909       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3910       -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
     3896     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3897     119,   120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,
     3898      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3899      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3900      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3901      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3902      -1,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3903     122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3904      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3905      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3906      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3907      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
     3908      -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
     3909      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3910      -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
     3911      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3912      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3913      -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,   117,
     3914     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
     3915     109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
     3916     119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
     3917      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     3918      82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
     3919      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3920      83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
     3921      -1,    37,    38,    -1,    40,   117,   118,   119,   120,   121,
     3922     122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3923      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    39113924      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    39123925      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    39133926      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39143927      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3915       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    3916       -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
    3917       -1,    -1,   128,    -1,    -1,    -1,   132,     4,     5,     6,
     3928      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     3929      -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    39183930       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39193931      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3920       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3921       -1,    -1,    39,    -1,    37,    38,    -1,    40,    41,    -1,
    3922       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    3923       53,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,
    3924       67,    64,    69,    66,    71,    -1,    -1,    74,    75,    72,
    3925       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3926       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    96,
    3927       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3928       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3929       -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3930      123,    -1,    -1,    37,    38,   128,    40,    41,    -1,    43,
    3931       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    3932       -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,
    3933       64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
    3934       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3935       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3936       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3937       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3938      114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    3939       -1,    -1,    37,    38,   128,    40,    41,    -1,    43,    -1,
    3940       -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3941       -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
    3942       -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3943       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3944       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3945       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3946       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3947       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    66,
    3948       -1,    -1,    -1,   128,    -1,    72,    -1,    -1,    -1,    76,
    3949       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3950       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3951       -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3952       -1,    -1,   109,    -1,   111,    -1,    -1,    37,    38,    -1,
    3953       40,   118,   119,   120,   121,   122,   123,    66,    -1,    -1,
    3954       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3955       79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
    3956       -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3957       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3958      109,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,   118,
    3959      119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,   109,
    3960       -1,    -1,    -1,    -1,    37,    38,    -1,    40,   118,   119,
    3961      120,   121,   122,   123,    66,    -1,    -1,    -1,    -1,    -1,
    3962       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    3963       82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
    3964       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3965       83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
    3966       -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    3967      122,   123,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3968       -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3969      123,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3970       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3971       23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
    3972       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
     3932      27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3933      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39733934      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39743935      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3975       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
    3976       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3977       83,    84,     3,     4,     5,     6,     7,     8,     9,    10,
    3978       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3979       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3980       31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3936      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
     3937      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,     3,     4,
     3938       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3939      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3940      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3941      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    39813942      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39823943      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3983       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3984       71,    -1,    -1,    74,    75,     3,     4,     5,     6,     7,
    3985        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3986       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3987       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3988       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3989       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3990       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3991       -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,     5,
    3992        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3993       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3994       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3995       -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3944      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3945      75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3946      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3947      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3948      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    39963949      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39973950      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3998       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75
     3951      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3952      -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
     3953      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3954      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3955      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3956      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3957      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3958      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
     3959      39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3960      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3961      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3962      -1,    -1,    -1,    -1,    -1,    74,    75
    39993963};
    40003964
     
    40073971      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    40083972      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    4009       76,    83,    84,   109,   111,   118,   119,   137,   140,   149,
     3973      76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
    40103974     198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
    40113975     221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
     
    40323996     323,   111,   149,   370,   306,   230,   314,   109,   290,   109,
    40333997     109,    51,   109,    37,    38,    40,    66,    72,    76,    79,
    4034       80,    81,    82,    86,    87,   109,   111,   120,   121,   122,
    4035      123,   136,   140,   141,   142,   143,   148,   149,   150,   151,
     3998      80,    81,    82,    86,    87,   109,   111,   119,   120,   121,
     3999     122,   136,   140,   141,   142,   143,   148,   149,   150,   151,
    40364000     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
    40374001     162,   164,   167,   225,   276,   292,   366,   371,   227,   110,
    40384002     110,   110,   110,   110,   110,   110,    74,    75,   111,   225,
    4039      272,   350,   368,   111,   118,   149,   164,   217,   218,   224,
     4003     272,   350,   368,   111,   117,   149,   164,   217,   218,   224,
    40404004     227,   231,   232,   237,   240,   241,   243,   262,   263,   267,
    40414005     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
     
    40524016     208,   222,   224,   227,   134,   311,   109,   311,   164,   319,
    40534017     227,   109,   134,   272,   114,    33,    34,    35,   225,   286,
    4054      287,   289,   134,   129,   131,   291,   134,   228,   234,   235,
     4018     287,   289,   134,   128,   131,   291,   134,   228,   234,   235,
    40554019     272,   315,   316,   317,   109,   141,   109,   148,   109,   148,
    40564020     151,   109,   148,   109,   109,   148,   148,   111,   164,   169,
    40574021     173,   225,   275,   366,   370,   112,   134,    82,    85,    86,
    40584022      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4059      102,   103,   104,   105,   106,   131,   166,   151,   151,   118,
    4060      124,   125,   120,   121,    88,    89,    90,    91,   126,   127,
    4061       92,    93,   119,   128,   129,    94,    95,   130,   131,   373,
     4023     102,   103,   104,   105,   106,   131,   166,   151,   151,   117,
     4024     123,   124,   119,   120,    88,    89,    90,    91,   125,   126,
     4025      92,    93,   118,   127,   128,    94,    95,   129,   131,   373,
    40624026     109,   149,   345,   346,   347,   348,   349,   110,   116,   109,
    40634027     349,   350,   109,   349,   350,   134,   109,   225,   368,   112,
     
    40674031     149,   370,   227,   135,   135,   149,   225,   227,   363,   272,
    40684032     225,   350,   363,   272,   109,   134,   134,   134,   112,   134,
    4069       72,    80,   111,   113,   140,   274,   278,   279,   280,   281,
    4070      282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
    4071      110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
    4072      207,   134,   309,   169,   276,   169,   276,   309,   111,   207,
    4073      311,   173,   134,   207,   110,    40,   111,   115,   225,   249,
    4074      250,   251,   366,   114,   116,   372,   131,   259,   114,   227,
    4075      264,   265,   266,   269,   270,   110,   116,   173,   134,   118,
    4076      164,   134,   224,   227,   263,   362,   370,   303,   304,   109,
    4077      149,   336,   110,   116,   373,   274,   286,   109,   114,   274,
    4078      276,   286,   110,   116,   109,   141,   110,   117,   275,   275,
    4079      275,   111,   139,   145,   164,   276,   275,   112,   134,   110,
    4080      116,   110,   109,   149,   349,   357,   358,   359,   360,   110,
    4081      116,   164,   111,   139,   111,   144,   145,   134,   111,   139,
    4082      144,   164,   151,   151,   151,   152,   152,   153,   153,   154,
    4083      154,   154,   154,   155,   155,   156,   157,   158,   159,   160,
    4084      117,   169,   164,   134,   346,   347,   348,   227,   345,   312,
    4085      312,   164,   276,   134,   271,   134,   225,   350,   363,   227,
    4086      231,   112,   112,   134,   370,   112,   109,   134,   319,   337,
    4087      338,   339,   342,   352,   353,   354,   112,   134,   227,   336,
    4088      340,   351,   109,   312,   355,   373,   312,   312,   373,   109,
    4089      312,   355,   312,   312,   312,   312,   350,   225,   361,   371,
    4090      272,   112,   116,   112,   116,   373,   225,   363,   373,   260,
    4091      261,   262,   263,   260,   260,   272,   164,   134,   111,   274,
    4092      117,   116,   372,   278,    80,   111,   117,   282,    29,   209,
    4093      210,   272,   260,   139,   309,   139,   311,   109,   349,   350,
    4094      109,   349,   350,   141,   350,   173,   264,   110,   110,   110,
    4095      110,   112,   173,   207,   173,   114,   250,   251,   112,   134,
    4096      109,   117,   149,   252,   254,   318,   319,   331,   357,   116,
    4097      132,   116,   132,   274,   248,   274,   115,   162,   163,   258,
    4098      135,   135,   139,   222,   135,   135,   260,   109,   149,   370,
    4099      135,   115,   227,   287,   288,   135,   134,   134,   109,   135,
    4100      110,   316,   169,   170,   117,   132,   111,   141,   200,   201,
    4101      202,   110,   116,   110,   134,   117,   110,   110,   110,   111,
    4102      164,   358,   359,   360,   227,   357,   312,   312,   114,   151,
    4103      167,   164,   165,   168,   116,   135,   134,   134,   110,   116,
    4104      164,   134,   115,   162,   117,   264,   110,   110,   110,   345,
    4105      264,   110,   260,   225,   363,   111,   118,   149,   164,   164,
    4106      227,   342,   264,   110,   110,   110,   110,   110,   110,   110,
    4107        7,   227,   336,   340,   351,   134,   134,   373,   134,   134,
    4108      110,   135,   135,   135,   135,   277,   135,   162,   163,   164,
    4109      310,   134,   278,   280,   115,   134,   211,   274,    40,    41,
    4110       43,    46,    47,    48,    49,    50,    51,    52,    53,    57,
    4111       61,    62,    72,   111,   128,   170,   171,   172,   173,   174,
    4112      175,   177,   178,   190,   192,   193,   198,   212,   308,    29,
    4113      135,   131,   277,   134,   134,   110,   135,   173,   248,   132,
    4114      132,   319,   163,   227,   253,   254,   253,   274,   312,   115,
    4115      259,   372,   110,   116,   112,   112,   135,   227,   116,   373,
    4116      290,   110,   286,   215,   217,   225,   298,   299,   300,   301,
    4117      292,   110,   110,   117,   163,   109,   110,   117,   116,   139,
    4118      164,   164,   112,   110,   110,   110,   357,   279,   116,   135,
    4119      168,   112,   139,   146,   147,   164,   145,   135,   146,   162,
    4120      167,   135,   109,   349,   350,   135,   135,   134,   135,   135,
    4121      135,   164,   110,   135,   109,   349,   350,   109,   355,   109,
    4122      355,   350,   226,     7,   118,   135,   164,   264,   264,   263,
    4123      267,   267,   268,   116,   116,   110,   110,   112,    96,   123,
    4124      135,   135,   146,   278,   164,   116,   132,   212,   216,   227,
    4125      231,   109,   109,   171,   109,   109,    72,   132,    72,   132,
    4126       72,   118,   170,   109,   173,   165,   165,   117,   112,   143,
    4127      132,   135,   134,   135,   211,   110,   164,   264,   264,   312,
    4128      110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
    4129      134,   135,   135,   110,   114,   200,   112,   163,   132,   200,
    4130      202,   110,   116,   135,   109,   349,   350,   372,   165,   112,
    4131      135,    85,   113,   116,   135,   135,   112,   135,   110,   134,
    4132      110,   110,   112,   112,   112,   135,   110,   134,   134,   134,
    4133      164,   164,   135,   112,   135,   135,   135,   135,   134,   134,
    4134      163,   163,   112,   112,   135,   135,   274,   227,   169,   169,
    4135       47,   169,   134,   132,   132,   132,   169,   132,   169,    58,
    4136       59,    60,   194,   195,   196,   132,    63,   132,   312,   114,
    4137      175,   115,   132,   135,   135,    96,   269,   270,   110,   299,
    4138      116,   132,   116,   132,   115,   297,   117,   141,   110,   110,
    4139      117,   168,   112,   134,   115,   112,   111,   147,   111,   147,
    4140      147,   112,   112,   112,   264,   112,   264,   264,   264,   135,
    4141      135,   112,   112,   110,   110,   112,   116,    96,   263,    96,
    4142      135,   112,   112,   110,   110,   109,   110,   170,   191,   212,
    4143      132,   110,   109,   109,   173,   196,    58,    59,   164,   171,
    4144      144,   110,   110,   114,   134,   134,   298,   141,   203,   109,
    4145      132,   203,   135,   117,   264,   134,   134,   135,   135,   135,
    4146      135,   112,   112,   134,   135,   112,   171,    44,    45,   114,
    4147      181,   182,   183,   169,   171,   135,   110,   170,   114,   183,
    4148       96,   134,    96,   134,   109,   109,   132,   115,   134,   272,
    4149      309,   115,   116,   117,   163,   110,   112,   164,   135,   146,
    4150      146,   110,   110,   110,   110,   267,    42,   163,   179,   180,
    4151      310,   117,   134,   171,   181,   110,   132,   171,   132,   134,
    4152      110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
    4153      141,   139,   204,   110,   132,   117,   110,   135,   135,   171,
    4154       96,   116,   117,   135,   205,   206,   212,   132,   170,   170,
    4155      205,   173,   197,   225,   366,   173,   197,   110,   134,   110,
    4156      134,   115,   110,   116,   164,   112,   112,   163,   179,   182,
    4157      184,   185,   134,   132,   182,   186,   187,   135,   109,   149,
    4158      309,   357,   139,   135,   173,   197,   173,   197,   109,   132,
    4159      139,   171,   176,   115,   182,   212,   170,    56,   176,   189,
    4160      115,   182,   110,   227,   110,   135,   135,   292,   171,   176,
    4161      132,   188,   189,   176,   189,   173,   173,   110,   110,   110,
    4162      188,   135,   135,   173,   173,   135,   135
     4033      72,   111,   113,   140,   274,   278,   279,   280,   281,   282,
     4034     134,   134,   134,   134,   134,   134,   309,   110,   110,   110,
     4035     110,   110,   110,   110,   318,   331,   109,   277,   112,   207,
     4036     134,   309,   169,   276,   169,   276,   309,   111,   207,   311,
     4037     173,   134,   207,   110,    40,   111,   115,   225,   249,   250,
     4038     251,   366,   114,   116,   372,   131,   259,   114,   227,   264,
     4039     265,   266,   269,   270,   110,   116,   173,   134,   117,   164,
     4040     134,   224,   227,   263,   362,   370,   303,   304,   109,   149,
     4041     336,   110,   116,   373,   274,   286,   109,   114,   274,   276,
     4042     286,   110,   116,   109,   141,   110,   130,   275,   275,   275,
     4043     145,   164,   276,   275,   112,   134,   110,   116,   110,   109,
     4044     149,   349,   357,   358,   359,   360,   110,   116,   164,   111,
     4045     139,   144,   145,   134,   111,   139,   144,   164,   151,   151,
     4046     151,   152,   152,   153,   153,   154,   154,   154,   154,   155,
     4047     155,   156,   157,   158,   159,   160,   130,   169,   164,   134,
     4048     346,   347,   348,   227,   345,   312,   312,   164,   276,   134,
     4049     271,   134,   225,   350,   363,   227,   231,   112,   112,   134,
     4050     370,   112,   109,   134,   319,   337,   338,   339,   342,   352,
     4051     353,   354,   112,   134,   227,   336,   340,   351,   109,   312,
     4052     355,   373,   312,   312,   373,   109,   312,   355,   312,   312,
     4053     312,   312,   350,   225,   361,   371,   272,   112,   116,   112,
     4054     116,   373,   225,   363,   373,   260,   261,   262,   263,   260,
     4055     260,   272,   164,   134,   111,   274,   130,   116,   372,   278,
     4056     111,   130,   282,    29,   209,   210,   272,   260,   139,   309,
     4057     139,   311,   109,   349,   350,   109,   349,   350,   141,   350,
     4058     173,   264,   110,   110,   110,   110,   112,   173,   207,   173,
     4059     114,   250,   251,   112,   134,   109,   130,   149,   252,   254,
     4060     318,   319,   331,   357,   116,   132,   116,   132,   274,   248,
     4061     274,   115,   162,   163,   258,   135,   135,   139,   222,   135,
     4062     135,   260,   109,   149,   370,   135,   115,   227,   287,   288,
     4063     135,   134,   134,   109,   135,   110,   316,   169,   170,   130,
     4064     132,   111,   141,   200,   201,   202,   110,   116,   110,   110,
     4065     110,   110,   111,   164,   358,   359,   360,   227,   357,   312,
     4066     312,   114,   151,   167,   164,   165,   168,   116,   135,   134,
     4067     110,   116,   164,   134,   115,   162,   130,   264,   110,   110,
     4068     110,   345,   264,   110,   260,   225,   363,   111,   117,   149,
     4069     164,   164,   227,   342,   264,   110,   110,   110,   110,   110,
     4070     110,   110,     7,   227,   336,   340,   351,   134,   134,   373,
     4071     134,   134,   110,   135,   135,   135,   135,   277,   135,   162,
     4072     163,   164,   310,   134,   278,   280,   115,   134,   211,   274,
     4073      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
     4074      53,    57,    61,    62,    72,   111,   127,   170,   171,   172,
     4075     173,   174,   175,   177,   178,   190,   192,   193,   198,   212,
     4076     308,    29,   135,   131,   277,   134,   134,   110,   135,   173,
     4077     248,   132,   132,   319,   163,   227,   253,   254,   253,   274,
     4078     312,   115,   259,   372,   110,   116,   112,   112,   135,   227,
     4079     116,   373,   290,   110,   286,   215,   217,   225,   298,   299,
     4080     300,   301,   292,   110,   110,   130,   163,   109,   110,   130,
     4081     116,   139,   112,   110,   110,   110,   357,   279,   116,   135,
     4082     168,   112,   139,   146,   147,   145,   135,   146,   162,   167,
     4083     135,   109,   349,   350,   135,   135,   134,   135,   135,   135,
     4084     164,   110,   135,   109,   349,   350,   109,   355,   109,   355,
     4085     350,   226,     7,   117,   135,   164,   264,   264,   263,   267,
     4086     267,   268,   116,   116,   110,   110,   112,    96,   122,   135,
     4087     135,   146,   278,   164,   116,   132,   212,   216,   227,   231,
     4088     109,   109,   171,   109,   109,    72,   132,    72,   132,    72,
     4089     117,   170,   109,   173,   165,   165,   130,   112,   143,   132,
     4090     135,   134,   135,   211,   110,   164,   264,   264,   312,   110,
     4091     115,   252,   115,   134,   110,   134,   135,   309,   115,   134,
     4092     135,   135,   110,   114,   200,   112,   163,   132,   200,   202,
     4093     110,   109,   349,   350,   372,   165,   112,   135,    85,   113,
     4094     116,   135,   112,   135,   110,   134,   110,   110,   112,   112,
     4095     112,   135,   110,   134,   134,   134,   164,   164,   135,   112,
     4096     135,   135,   135,   135,   134,   134,   163,   163,   112,   112,
     4097     135,   135,   274,   227,   169,   169,    47,   169,   134,   132,
     4098     132,   132,   169,   132,   169,    58,    59,    60,   194,   195,
     4099     196,   132,    63,   132,   312,   114,   175,   115,   132,   135,
     4100     135,    96,   269,   270,   110,   299,   116,   132,   116,   132,
     4101     115,   297,   130,   141,   110,   110,   130,   134,   115,   112,
     4102     111,   147,   111,   147,   147,   112,   112,   264,   112,   264,
     4103     264,   264,   135,   135,   112,   112,   110,   110,   112,   116,
     4104      96,   263,    96,   135,   112,   112,   110,   110,   109,   110,
     4105     170,   191,   212,   132,   110,   109,   109,   173,   196,    58,
     4106      59,   164,   171,   144,   110,   110,   114,   134,   134,   298,
     4107     141,   203,   109,   132,   203,   264,   134,   134,   135,   135,
     4108     135,   135,   112,   112,   134,   135,   112,   171,    44,    45,
     4109     114,   181,   182,   183,   169,   171,   135,   110,   170,   114,
     4110     183,    96,   134,    96,   134,   109,   109,   132,   115,   134,
     4111     272,   309,   115,   116,   130,   163,   110,   135,   146,   146,
     4112     110,   110,   110,   110,   267,    42,   163,   179,   180,   310,
     4113     130,   134,   171,   181,   110,   132,   171,   132,   134,   110,
     4114     134,   110,   134,    96,   134,    96,   134,   132,   298,   141,
     4115     139,   204,   110,   132,   110,   135,   135,   171,    96,   116,
     4116     130,   135,   205,   206,   212,   132,   170,   170,   205,   173,
     4117     197,   225,   366,   173,   197,   110,   134,   110,   134,   115,
     4118     110,   116,   112,   112,   163,   179,   182,   184,   185,   134,
     4119     132,   182,   186,   187,   135,   109,   149,   309,   357,   139,
     4120     135,   173,   197,   173,   197,   109,   132,   139,   171,   176,
     4121     115,   182,   212,   170,    56,   176,   189,   115,   182,   110,
     4122     227,   110,   135,   135,   292,   171,   176,   132,   188,   189,
     4123     176,   189,   173,   173,   110,   110,   110,   188,   135,   135,
     4124     173,   173,   135,   135
    41634125};
    41644126
     
    50164978/* Line 1806 of yacc.c  */
    50174979#line 311 "parser.yy"
    5018     { (yyval.constant) = build_constantInteger( *(yyvsp[(1) - (1)].tok) ); }
     4980    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    50194981    break;
    50204982
     
    50234985/* Line 1806 of yacc.c  */
    50244986#line 312 "parser.yy"
    5025     { (yyval.constant) = build_constantFloat( *(yyvsp[(1) - (1)].tok) ); }
     4987    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    50264988    break;
    50274989
     
    50304992/* Line 1806 of yacc.c  */
    50314993#line 313 "parser.yy"
    5032     { (yyval.constant) = build_constantChar( *(yyvsp[(1) - (1)].tok) ); }
     4994    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    50334995    break;
    50344996
     
    50455007#line 340 "parser.yy"
    50465008    {
    5047                         appendStr( (yyvsp[(1) - (2)].constant)->get_expr()->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
     5009                        appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
    50485010                        delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
    50495011                        (yyval.constant) = (yyvsp[(1) - (2)].constant);
     
    50555017/* Line 1806 of yacc.c  */
    50565018#line 351 "parser.yy"
    5057     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5019    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50585020    break;
    50595021
     
    50625024/* Line 1806 of yacc.c  */
    50635025#line 353 "parser.yy"
    5064     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5026    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50655027    break;
    50665028
     
    50765038/* Line 1806 of yacc.c  */
    50775039#line 357 "parser.yy"
    5078     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     5040    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50795041    break;
    50805042
     
    50835045/* Line 1806 of yacc.c  */
    50845046#line 367 "parser.yy"
    5085     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     5047    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50865048    break;
    50875049
     
    50905052/* Line 1806 of yacc.c  */
    50915053#line 369 "parser.yy"
    5092     { (yyval.en) = new CompositeExprNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     5054    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50935055    break;
    50945056
     
    50975059/* Line 1806 of yacc.c  */
    50985060#line 373 "parser.yy"
    5099     { (yyval.en) = new CompositeExprNode( build_fieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     5061    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    51005062    break;
    51015063
     
    51045066/* Line 1806 of yacc.c  */
    51055067#line 376 "parser.yy"
    5106     { (yyval.en) = new CompositeExprNode( build_pfieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     5068    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    51075069    break;
    51085070
     
    51115073/* Line 1806 of yacc.c  */
    51125074#line 379 "parser.yy"
    5113     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     5075    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    51145076    break;
    51155077
     
    51185080/* Line 1806 of yacc.c  */
    51195081#line 381 "parser.yy"
    5120     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     5082    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    51215083    break;
    51225084
     
    51255087/* Line 1806 of yacc.c  */
    51265088#line 383 "parser.yy"
    5127     { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
     5089    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    51285090    break;
    51295091
     
    51355097                        Token fn;
    51365098                        fn.str = new std::string( "?{}" ); // location undefined
    5137                         (yyval.en) = new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ) );
     5099                        (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ) );
    51385100                }
    51395101    break;
     
    51535115    break;
    51545116
    5155   case 37:
    5156 
    5157 /* Line 1806 of yacc.c  */
    5158 #line 403 "parser.yy"
    5159     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    5160     break;
    5161 
    51625117  case 38:
    51635118
    51645119/* Line 1806 of yacc.c  */
    5165 #line 408 "parser.yy"
    5166     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5120#line 406 "parser.yy"
     5121    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    51675122    break;
    51685123
     
    51705125
    51715126/* Line 1806 of yacc.c  */
    5172 #line 410 "parser.yy"
    5173     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( (yyvsp[(5) - (9)].en) ) ) ) ); }
     5127#line 411 "parser.yy"
     5128    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     5129    break;
     5130
     5131  case 40:
     5132
     5133/* Line 1806 of yacc.c  */
     5134#line 415 "parser.yy"
     5135    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51745136    break;
    51755137
     
    51775139
    51785140/* Line 1806 of yacc.c  */
    5179 #line 415 "parser.yy"
    5180     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5141#line 417 "parser.yy"
     5142    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51815143    break;
    51825144
     
    51845146
    51855147/* Line 1806 of yacc.c  */
    5186 #line 420 "parser.yy"
    5187     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5148#line 419 "parser.yy"
     5149    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51885150    break;
    51895151
     
    51915153
    51925154/* Line 1806 of yacc.c  */
    5193 #line 424 "parser.yy"
    5194     { (yyval.en) = new CompositeExprNode( build_fieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
    5195     break;
    5196 
    5197   case 44:
    5198 
    5199 /* Line 1806 of yacc.c  */
    5200 #line 426 "parser.yy"
    5201     { (yyval.en) = new CompositeExprNode( build_fieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
     5155#line 421 "parser.yy"
     5156    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    52025157    break;
    52035158
     
    52055160
    52065161/* Line 1806 of yacc.c  */
    5207 #line 428 "parser.yy"
    5208     { (yyval.en) = new CompositeExprNode( build_pfieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
     5162#line 429 "parser.yy"
     5163    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    52095164    break;
    52105165
     
    52125167
    52135168/* Line 1806 of yacc.c  */
    5214 #line 430 "parser.yy"
    5215     { (yyval.en) = new CompositeExprNode( build_pfieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
     5169#line 431 "parser.yy"
     5170    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     5171    break;
     5172
     5173  case 47:
     5174
     5175/* Line 1806 of yacc.c  */
     5176#line 433 "parser.yy"
     5177    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    52165178    break;
    52175179
     
    52205182/* Line 1806 of yacc.c  */
    52215183#line 438 "parser.yy"
    5222     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5223     break;
    5224 
    5225   case 49:
    5226 
    5227 /* Line 1806 of yacc.c  */
    5228 #line 440 "parser.yy"
    5229     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5230     break;
    5231 
    5232   case 50:
    5233 
    5234 /* Line 1806 of yacc.c  */
    5235 #line 442 "parser.yy"
    5236     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    5237     break;
    5238 
    5239   case 51:
    5240 
    5241 /* Line 1806 of yacc.c  */
    5242 #line 447 "parser.yy"
    52435184    {
    52445185                        switch ( (yyvsp[(1) - (2)].op) ) {
    52455186                          case OperKinds::AddressOf:
    5246                                 (yyval.en) = new CompositeExprNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
     5187                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
    52475188                                break;
    52485189                          case OperKinds::PointTo:
    5249                                 (yyval.en) = new CompositeExprNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
     5190                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
    52505191                                break;
    52515192                          default:
     
    52555196    break;
    52565197
     5198  case 49:
     5199
     5200/* Line 1806 of yacc.c  */
     5201#line 451 "parser.yy"
     5202    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     5203    break;
     5204
     5205  case 50:
     5206
     5207/* Line 1806 of yacc.c  */
     5208#line 453 "parser.yy"
     5209    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     5210    break;
     5211
     5212  case 51:
     5213
     5214/* Line 1806 of yacc.c  */
     5215#line 455 "parser.yy"
     5216    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     5217    break;
     5218
    52575219  case 52:
    52585220
    52595221/* Line 1806 of yacc.c  */
    5260 #line 460 "parser.yy"
    5261     { (yyval.en) = new CompositeExprNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     5222#line 457 "parser.yy"
     5223    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52625224    break;
    52635225
     
    52655227
    52665228/* Line 1806 of yacc.c  */
    5267 #line 462 "parser.yy"
    5268     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     5229#line 459 "parser.yy"
     5230    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52695231    break;
    52705232
     
    52725234
    52735235/* Line 1806 of yacc.c  */
    5274 #line 464 "parser.yy"
    5275     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     5236#line 461 "parser.yy"
     5237    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52765238    break;
    52775239
     
    52795241
    52805242/* Line 1806 of yacc.c  */
    5281 #line 466 "parser.yy"
    5282     { (yyval.en) = new CompositeExprNode( build_sizeOf( (yyvsp[(2) - (2)].en) ) ); }
     5243#line 463 "parser.yy"
     5244    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52835245    break;
    52845246
     
    52865248
    52875249/* Line 1806 of yacc.c  */
    5288 #line 468 "parser.yy"
    5289     { (yyval.en) = new CompositeExprNode( build_sizeOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     5250#line 465 "parser.yy"
     5251    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52905252    break;
    52915253
     
    52935255
    52945256/* Line 1806 of yacc.c  */
    5295 #line 470 "parser.yy"
    5296     { (yyval.en) = new CompositeExprNode( build_offsetOf( new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) ) ) ); }
     5257#line 467 "parser.yy"
     5258    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52975259    break;
    52985260
     
    53005262
    53015263/* Line 1806 of yacc.c  */
    5302 #line 472 "parser.yy"
    5303     { (yyval.en) = new CompositeExprNode( build_attr( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ) ); }
     5264#line 469 "parser.yy"
     5265    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    53045266    break;
    53055267
     
    53075269
    53085270/* Line 1806 of yacc.c  */
    5309 #line 474 "parser.yy"
    5310     { (yyval.en) = new CompositeExprNode( build_attr( new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     5271#line 471 "parser.yy"
     5272    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    53115273    break;
    53125274
     
    53145276
    53155277/* Line 1806 of yacc.c  */
    5316 #line 476 "parser.yy"
    5317     { (yyval.en) = new CompositeExprNode( build_attr( new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     5278#line 477 "parser.yy"
     5279    { (yyval.op) = OperKinds::PointTo; }
    53185280    break;
    53195281
     
    53225284/* Line 1806 of yacc.c  */
    53235285#line 478 "parser.yy"
    5324     { (yyval.en) = new CompositeExprNode( build_alignOf( (yyvsp[(2) - (2)].en) ) ); }
     5286    { (yyval.op) = OperKinds::AddressOf; }
    53255287    break;
    53265288
     
    53285290
    53295291/* Line 1806 of yacc.c  */
    5330 #line 480 "parser.yy"
    5331     { (yyval.en) = new CompositeExprNode( build_alignOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     5292#line 484 "parser.yy"
     5293    { (yyval.op) = OperKinds::UnPlus; }
    53325294    break;
    53335295
     
    53355297
    53365298/* Line 1806 of yacc.c  */
     5299#line 485 "parser.yy"
     5300    { (yyval.op) = OperKinds::UnMinus; }
     5301    break;
     5302
     5303  case 64:
     5304
     5305/* Line 1806 of yacc.c  */
    53375306#line 486 "parser.yy"
    5338     { (yyval.op) = OperKinds::PointTo; }
    5339     break;
    5340 
    5341   case 64:
     5307    { (yyval.op) = OperKinds::Neg; }
     5308    break;
     5309
     5310  case 65:
    53425311
    53435312/* Line 1806 of yacc.c  */
    53445313#line 487 "parser.yy"
    5345     { (yyval.op) = OperKinds::AddressOf; }
    5346     break;
    5347 
    5348   case 65:
     5314    { (yyval.op) = OperKinds::BitNeg; }
     5315    break;
     5316
     5317  case 67:
    53495318
    53505319/* Line 1806 of yacc.c  */
    53515320#line 493 "parser.yy"
    5352     { (yyval.op) = OperKinds::UnPlus; }
    5353     break;
    5354 
    5355   case 66:
    5356 
    5357 /* Line 1806 of yacc.c  */
    5358 #line 494 "parser.yy"
    5359     { (yyval.op) = OperKinds::UnMinus; }
    5360     break;
    5361 
    5362   case 67:
     5321    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     5322    break;
     5323
     5324  case 68:
    53635325
    53645326/* Line 1806 of yacc.c  */
    53655327#line 495 "parser.yy"
    5366     { (yyval.op) = OperKinds::Neg; }
    5367     break;
    5368 
    5369   case 68:
    5370 
    5371 /* Line 1806 of yacc.c  */
    5372 #line 496 "parser.yy"
    5373     { (yyval.op) = OperKinds::BitNeg; }
     5328    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53745329    break;
    53755330
     
    53775332
    53785333/* Line 1806 of yacc.c  */
    5379 #line 502 "parser.yy"
    5380     { (yyval.en) = new CompositeExprNode( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
     5334#line 501 "parser.yy"
     5335    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53815336    break;
    53825337
     
    53845339
    53855340/* Line 1806 of yacc.c  */
    5386 #line 504 "parser.yy"
    5387     { (yyval.en) = new CompositeExprNode( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
    5388     break;
    5389 
    5390   case 73:
    5391 
    5392 /* Line 1806 of yacc.c  */
    5393 #line 510 "parser.yy"
    5394     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5341#line 503 "parser.yy"
     5342    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5343    break;
     5344
     5345  case 72:
     5346
     5347/* Line 1806 of yacc.c  */
     5348#line 505 "parser.yy"
     5349    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53955350    break;
    53965351
     
    53985353
    53995354/* Line 1806 of yacc.c  */
    5400 #line 512 "parser.yy"
    5401     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5355#line 511 "parser.yy"
     5356    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54025357    break;
    54035358
     
    54055360
    54065361/* Line 1806 of yacc.c  */
    5407 #line 514 "parser.yy"
    5408     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5362#line 513 "parser.yy"
     5363    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54095364    break;
    54105365
     
    54125367
    54135368/* Line 1806 of yacc.c  */
    5414 #line 520 "parser.yy"
    5415     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5369#line 519 "parser.yy"
     5370    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54165371    break;
    54175372
     
    54195374
    54205375/* Line 1806 of yacc.c  */
    5421 #line 522 "parser.yy"
    5422     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5376#line 521 "parser.yy"
     5377    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54235378    break;
    54245379
     
    54265381
    54275382/* Line 1806 of yacc.c  */
    5428 #line 528 "parser.yy"
    5429     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5383#line 527 "parser.yy"
     5384    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54305385    break;
    54315386
     
    54335388
    54345389/* Line 1806 of yacc.c  */
    5435 #line 530 "parser.yy"
    5436     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5390#line 529 "parser.yy"
     5391    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5392    break;
     5393
     5394  case 82:
     5395
     5396/* Line 1806 of yacc.c  */
     5397#line 531 "parser.yy"
     5398    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54375399    break;
    54385400
     
    54405402
    54415403/* Line 1806 of yacc.c  */
    5442 #line 536 "parser.yy"
    5443     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5444     break;
    5445 
    5446   case 84:
    5447 
    5448 /* Line 1806 of yacc.c  */
    5449 #line 538 "parser.yy"
    5450     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5404#line 533 "parser.yy"
     5405    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54515406    break;
    54525407
     
    54545409
    54555410/* Line 1806 of yacc.c  */
    5456 #line 540 "parser.yy"
    5457     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5411#line 539 "parser.yy"
     5412    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54585413    break;
    54595414
     
    54615416
    54625417/* Line 1806 of yacc.c  */
    5463 #line 542 "parser.yy"
    5464     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5418#line 541 "parser.yy"
     5419    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54655420    break;
    54665421
     
    54685423
    54695424/* Line 1806 of yacc.c  */
    5470 #line 548 "parser.yy"
    5471     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5472     break;
    5473 
    5474   case 89:
    5475 
    5476 /* Line 1806 of yacc.c  */
    5477 #line 550 "parser.yy"
    5478     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5479     break;
    5480 
    5481   case 91:
    5482 
    5483 /* Line 1806 of yacc.c  */
    5484 #line 556 "parser.yy"
    5485     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5486     break;
    5487 
    5488   case 93:
    5489 
    5490 /* Line 1806 of yacc.c  */
    5491 #line 562 "parser.yy"
    5492     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5493     break;
    5494 
    5495   case 95:
    5496 
    5497 /* Line 1806 of yacc.c  */
    5498 #line 568 "parser.yy"
    5499     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5500     break;
    5501 
    5502   case 97:
    5503 
    5504 /* Line 1806 of yacc.c  */
    5505 #line 574 "parser.yy"
    5506     { (yyval.en) = new CompositeExprNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     5425#line 547 "parser.yy"
     5426    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5427    break;
     5428
     5429  case 90:
     5430
     5431/* Line 1806 of yacc.c  */
     5432#line 553 "parser.yy"
     5433    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5434    break;
     5435
     5436  case 92:
     5437
     5438/* Line 1806 of yacc.c  */
     5439#line 559 "parser.yy"
     5440    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5441    break;
     5442
     5443  case 94:
     5444
     5445/* Line 1806 of yacc.c  */
     5446#line 565 "parser.yy"
     5447    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     5448    break;
     5449
     5450  case 96:
     5451
     5452/* Line 1806 of yacc.c  */
     5453#line 571 "parser.yy"
     5454    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     5455    break;
     5456
     5457  case 98:
     5458
     5459/* Line 1806 of yacc.c  */
     5460#line 577 "parser.yy"
     5461    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    55075462    break;
    55085463
     
    55115466/* Line 1806 of yacc.c  */
    55125467#line 580 "parser.yy"
    5513     { (yyval.en) = new CompositeExprNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    5514     break;
    5515 
    5516   case 101:
    5517 
    5518 /* Line 1806 of yacc.c  */
    5519 #line 586 "parser.yy"
    5520     { (yyval.en) = new CompositeExprNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5521     break;
    5522 
    5523   case 102:
    5524 
    5525 /* Line 1806 of yacc.c  */
    5526 #line 589 "parser.yy"
    5527     { (yyval.en) = new CompositeExprNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     5468    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     5469    break;
     5470
     5471  case 100:
     5472
     5473/* Line 1806 of yacc.c  */
     5474#line 582 "parser.yy"
     5475    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    55285476    break;
    55295477
     
    55315479
    55325480/* Line 1806 of yacc.c  */
    5533 #line 591 "parser.yy"
    5534     { (yyval.en) = new CompositeExprNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5535     break;
    5536 
    5537   case 106:
    5538 
    5539 /* Line 1806 of yacc.c  */
    5540 #line 602 "parser.yy"
    5541     { (yyval.en) = new CompositeExprNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5481#line 593 "parser.yy"
     5482    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5483    break;
     5484
     5485  case 104:
     5486
     5487/* Line 1806 of yacc.c  */
     5488#line 595 "parser.yy"
     5489    { (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) ) ); }
     5490    break;
     5491
     5492  case 105:
     5493
     5494/* Line 1806 of yacc.c  */
     5495#line 600 "parser.yy"
     5496    { (yyval.en) = nullptr; }
    55425497    break;
    55435498
     
    55455500
    55465501/* Line 1806 of yacc.c  */
    5547 #line 604 "parser.yy"
    5548     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     5502#line 605 "parser.yy"
     5503    { (yyval.op) = OperKinds::Assign; }
    55495504    break;
    55505505
     
    55525507
    55535508/* Line 1806 of yacc.c  */
     5509#line 606 "parser.yy"
     5510    { (yyval.op) = OperKinds::MulAssn; }
     5511    break;
     5512
     5513  case 109:
     5514
     5515/* Line 1806 of yacc.c  */
     5516#line 607 "parser.yy"
     5517    { (yyval.op) = OperKinds::DivAssn; }
     5518    break;
     5519
     5520  case 110:
     5521
     5522/* Line 1806 of yacc.c  */
     5523#line 608 "parser.yy"
     5524    { (yyval.op) = OperKinds::ModAssn; }
     5525    break;
     5526
     5527  case 111:
     5528
     5529/* Line 1806 of yacc.c  */
    55545530#line 609 "parser.yy"
    5555     { (yyval.en) = new NullExprNode; }
    5556     break;
    5557 
    5558   case 110:
     5531    { (yyval.op) = OperKinds::PlusAssn; }
     5532    break;
     5533
     5534  case 112:
     5535
     5536/* Line 1806 of yacc.c  */
     5537#line 610 "parser.yy"
     5538    { (yyval.op) = OperKinds::MinusAssn; }
     5539    break;
     5540
     5541  case 113:
     5542
     5543/* Line 1806 of yacc.c  */
     5544#line 611 "parser.yy"
     5545    { (yyval.op) = OperKinds::LSAssn; }
     5546    break;
     5547
     5548  case 114:
     5549
     5550/* Line 1806 of yacc.c  */
     5551#line 612 "parser.yy"
     5552    { (yyval.op) = OperKinds::RSAssn; }
     5553    break;
     5554
     5555  case 115:
     5556
     5557/* Line 1806 of yacc.c  */
     5558#line 613 "parser.yy"
     5559    { (yyval.op) = OperKinds::AndAssn; }
     5560    break;
     5561
     5562  case 116:
    55595563
    55605564/* Line 1806 of yacc.c  */
    55615565#line 614 "parser.yy"
    5562     { (yyval.op) = OperKinds::Assign; }
    5563     break;
    5564 
    5565   case 111:
     5566    { (yyval.op) = OperKinds::ERAssn; }
     5567    break;
     5568
     5569  case 117:
    55665570
    55675571/* Line 1806 of yacc.c  */
    55685572#line 615 "parser.yy"
    5569     { (yyval.op) = OperKinds::MulAssn; }
    5570     break;
    5571 
    5572   case 112:
    5573 
    5574 /* Line 1806 of yacc.c  */
    5575 #line 616 "parser.yy"
    5576     { (yyval.op) = OperKinds::DivAssn; }
    5577     break;
    5578 
    5579   case 113:
    5580 
    5581 /* Line 1806 of yacc.c  */
    5582 #line 617 "parser.yy"
    5583     { (yyval.op) = OperKinds::ModAssn; }
    5584     break;
    5585 
    5586   case 114:
    5587 
    5588 /* Line 1806 of yacc.c  */
    5589 #line 618 "parser.yy"
    5590     { (yyval.op) = OperKinds::PlusAssn; }
    5591     break;
    5592 
    5593   case 115:
    5594 
    5595 /* Line 1806 of yacc.c  */
    5596 #line 619 "parser.yy"
    5597     { (yyval.op) = OperKinds::MinusAssn; }
    5598     break;
    5599 
    5600   case 116:
    5601 
    5602 /* Line 1806 of yacc.c  */
    5603 #line 620 "parser.yy"
    5604     { (yyval.op) = OperKinds::LSAssn; }
    5605     break;
    5606 
    5607   case 117:
    5608 
    5609 /* Line 1806 of yacc.c  */
    5610 #line 621 "parser.yy"
    5611     { (yyval.op) = OperKinds::RSAssn; }
     5573    { (yyval.op) = OperKinds::OrAssn; }
    56125574    break;
    56135575
     
    56165578/* Line 1806 of yacc.c  */
    56175579#line 622 "parser.yy"
    5618     { (yyval.op) = OperKinds::AndAssn; }
     5580    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    56195581    break;
    56205582
     
    56225584
    56235585/* Line 1806 of yacc.c  */
    5624 #line 623 "parser.yy"
    5625     { (yyval.op) = OperKinds::ERAssn; }
     5586#line 624 "parser.yy"
     5587    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    56265588    break;
    56275589
     
    56295591
    56305592/* Line 1806 of yacc.c  */
    5631 #line 624 "parser.yy"
    5632     { (yyval.op) = OperKinds::OrAssn; }
     5593#line 626 "parser.yy"
     5594    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( (yyvsp[(4) - (6)].en) ) ) ); }
    56335595    break;
    56345596
     
    56365598
    56375599/* Line 1806 of yacc.c  */
    5638 #line 631 "parser.yy"
    5639     { (yyval.en) = new CompositeExprNode( build_tuple() ); }
    5640     break;
    5641 
    5642   case 122:
    5643 
    5644 /* Line 1806 of yacc.c  */
    5645 #line 633 "parser.yy"
    5646     { (yyval.en) = new CompositeExprNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     5600#line 628 "parser.yy"
     5601    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); }
    56475602    break;
    56485603
     
    56505605
    56515606/* Line 1806 of yacc.c  */
    5652 #line 635 "parser.yy"
    5653     { (yyval.en) = new CompositeExprNode( build_tuple( (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ) ); }
    5654     break;
    5655 
    5656   case 124:
    5657 
    5658 /* Line 1806 of yacc.c  */
    5659 #line 637 "parser.yy"
    5660     { (yyval.en) = new CompositeExprNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); }
     5607#line 634 "parser.yy"
     5608    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5609    break;
     5610
     5611  case 125:
     5612
     5613/* Line 1806 of yacc.c  */
     5614#line 640 "parser.yy"
     5615    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56615616    break;
    56625617
     
    56645619
    56655620/* Line 1806 of yacc.c  */
    5666 #line 643 "parser.yy"
    5667     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5668     break;
    5669 
    5670   case 128:
    5671 
    5672 /* Line 1806 of yacc.c  */
    5673 #line 649 "parser.yy"
    5674     { (yyval.en) = new CompositeExprNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5675     break;
    5676 
    5677   case 129:
     5621#line 645 "parser.yy"
     5622    { (yyval.en) = 0; }
     5623    break;
     5624
     5625  case 130:
    56785626
    56795627/* Line 1806 of yacc.c  */
    56805628#line 654 "parser.yy"
    5681     { (yyval.en) = 0; }
    5682     break;
    5683 
    5684   case 133:
    5685 
    5686 /* Line 1806 of yacc.c  */
    5687 #line 663 "parser.yy"
    56885629    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56895630    break;
    56905631
    5691   case 139:
    5692 
    5693 /* Line 1806 of yacc.c  */
    5694 #line 670 "parser.yy"
     5632  case 136:
     5633
     5634/* Line 1806 of yacc.c  */
     5635#line 661 "parser.yy"
    56955636    {
    56965637                        Token fn;
    56975638                        fn.str = new std::string( "^?{}" ); // location undefined
    5698                         (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ), 0 );
     5639                        (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 );
    56995640                }
    57005641    break;
    57015642
    5702   case 140:
    5703 
    5704 /* Line 1806 of yacc.c  */
    5705 #line 680 "parser.yy"
     5643  case 137:
     5644
     5645/* Line 1806 of yacc.c  */
     5646#line 671 "parser.yy"
    57065647    {
    57075648                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    57095650    break;
    57105651
     5652  case 138:
     5653
     5654/* Line 1806 of yacc.c  */
     5655#line 678 "parser.yy"
     5656    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5657    break;
     5658
     5659  case 139:
     5660
     5661/* Line 1806 of yacc.c  */
     5662#line 685 "parser.yy"
     5663    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     5664    break;
     5665
    57115666  case 141:
    57125667
    57135668/* Line 1806 of yacc.c  */
    5714 #line 687 "parser.yy"
    5715     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5669#line 691 "parser.yy"
     5670    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57165671    break;
    57175672
     
    57195674
    57205675/* Line 1806 of yacc.c  */
    5721 #line 694 "parser.yy"
    5722     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    5723     break;
    5724 
    5725   case 144:
    5726 
    5727 /* Line 1806 of yacc.c  */
    5728 #line 700 "parser.yy"
    5729     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5730     break;
    5731 
    5732   case 145:
    5733 
    5734 /* Line 1806 of yacc.c  */
    5735 #line 705 "parser.yy"
     5676#line 696 "parser.yy"
    57365677    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57375678    break;
    57385679
    5739   case 146:
    5740 
    5741 /* Line 1806 of yacc.c  */
    5742 #line 707 "parser.yy"
     5680  case 143:
     5681
     5682/* Line 1806 of yacc.c  */
     5683#line 698 "parser.yy"
    57435684    {   // mark all fields in list
    57445685                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    57485689    break;
    57495690
     5691  case 144:
     5692
     5693/* Line 1806 of yacc.c  */
     5694#line 704 "parser.yy"
     5695    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5696    break;
     5697
    57505698  case 147:
    57515699
    57525700/* Line 1806 of yacc.c  */
    5753 #line 713 "parser.yy"
    5754     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5701#line 711 "parser.yy"
     5702    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5703    break;
     5704
     5705  case 148:
     5706
     5707/* Line 1806 of yacc.c  */
     5708#line 716 "parser.yy"
     5709    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5710    break;
     5711
     5712  case 149:
     5713
     5714/* Line 1806 of yacc.c  */
     5715#line 722 "parser.yy"
     5716    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57555717    break;
    57565718
     
    57585720
    57595721/* Line 1806 of yacc.c  */
    5760 #line 720 "parser.yy"
    5761     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5722#line 724 "parser.yy"
     5723    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57625724    break;
    57635725
     
    57655727
    57665728/* Line 1806 of yacc.c  */
    5767 #line 725 "parser.yy"
    5768     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5729#line 726 "parser.yy"
     5730    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57695731    break;
    57705732
     
    57725734
    57735735/* Line 1806 of yacc.c  */
    5774 #line 731 "parser.yy"
    5775     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5776     break;
    5777 
    5778   case 153:
    5779 
    5780 /* Line 1806 of yacc.c  */
    5781 #line 733 "parser.yy"
    5782     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    5783     break;
    5784 
    5785   case 154:
    5786 
    5787 /* Line 1806 of yacc.c  */
    5788 #line 735 "parser.yy"
    5789     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5790     break;
    5791 
    5792   case 155:
    5793 
    5794 /* Line 1806 of yacc.c  */
    5795 #line 737 "parser.yy"
     5736#line 728 "parser.yy"
    57965737    {
    57975738                        StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     
    58055746    break;
    58065747
    5807   case 156:
    5808 
    5809 /* Line 1806 of yacc.c  */
    5810 #line 747 "parser.yy"
     5748  case 153:
     5749
     5750/* Line 1806 of yacc.c  */
     5751#line 738 "parser.yy"
    58115752    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58125753    break;
    58135754
    5814   case 157:
    5815 
    5816 /* Line 1806 of yacc.c  */
    5817 #line 749 "parser.yy"
     5755  case 154:
     5756
     5757/* Line 1806 of yacc.c  */
     5758#line 740 "parser.yy"
    58185759    {
    58195760                        StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     
    58225763    break;
    58235764
     5765  case 155:
     5766
     5767/* Line 1806 of yacc.c  */
     5768#line 750 "parser.yy"
     5769    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5770    break;
     5771
     5772  case 156:
     5773
     5774/* Line 1806 of yacc.c  */
     5775#line 752 "parser.yy"
     5776    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5777    break;
     5778
    58245779  case 158:
    58255780
    58265781/* Line 1806 of yacc.c  */
     5782#line 757 "parser.yy"
     5783    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
     5784    break;
     5785
     5786  case 159:
     5787
     5788/* Line 1806 of yacc.c  */
    58275789#line 759 "parser.yy"
    5828     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    5829     break;
    5830 
    5831   case 159:
    5832 
    5833 /* Line 1806 of yacc.c  */
    5834 #line 761 "parser.yy"
    5835     { (yyval.en) = new CompositeExprNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5790    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
     5791    break;
     5792
     5793  case 160:
     5794
     5795/* Line 1806 of yacc.c  */
     5796#line 763 "parser.yy"
     5797    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58365798    break;
    58375799
     
    58395801
    58405802/* Line 1806 of yacc.c  */
    5841 #line 766 "parser.yy"
    5842     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
    5843     break;
    5844 
    5845   case 162:
    5846 
    5847 /* Line 1806 of yacc.c  */
    5848 #line 768 "parser.yy"
    5849     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
     5803#line 764 "parser.yy"
     5804    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58505805    break;
    58515806
     
    58535808
    58545809/* Line 1806 of yacc.c  */
    5855 #line 772 "parser.yy"
    5856     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5810#line 770 "parser.yy"
     5811    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58575812    break;
    58585813
     
    58605815
    58615816/* Line 1806 of yacc.c  */
    5862 #line 773 "parser.yy"
    5863     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    5864     break;
    5865 
    5866   case 166:
     5817#line 774 "parser.yy"
     5818    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     5819    break;
     5820
     5821  case 165:
    58675822
    58685823/* Line 1806 of yacc.c  */
    58695824#line 779 "parser.yy"
    5870     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5825    { (yyval.sn) = 0; }
    58715826    break;
    58725827
     
    58745829
    58755830/* Line 1806 of yacc.c  */
    5876 #line 783 "parser.yy"
     5831#line 785 "parser.yy"
    58775832    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    58785833    break;
     
    58815836
    58825837/* Line 1806 of yacc.c  */
    5883 #line 788 "parser.yy"
     5838#line 787 "parser.yy"
     5839    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5840    break;
     5841
     5842  case 169:
     5843
     5844/* Line 1806 of yacc.c  */
     5845#line 792 "parser.yy"
    58845846    { (yyval.sn) = 0; }
    58855847    break;
    58865848
    5887   case 170:
    5888 
    5889 /* Line 1806 of yacc.c  */
    5890 #line 794 "parser.yy"
    5891     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    5892     break;
    5893 
    58945849  case 171:
    58955850
    58965851/* Line 1806 of yacc.c  */
    5897 #line 796 "parser.yy"
    5898     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5852#line 798 "parser.yy"
     5853    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58995854    break;
    59005855
     
    59025857
    59035858/* Line 1806 of yacc.c  */
    5904 #line 801 "parser.yy"
     5859#line 800 "parser.yy"
     5860    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
     5861    break;
     5862
     5863  case 173:
     5864
     5865/* Line 1806 of yacc.c  */
     5866#line 802 "parser.yy"
     5867    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5868    break;
     5869
     5870  case 174:
     5871
     5872/* Line 1806 of yacc.c  */
     5873#line 804 "parser.yy"
     5874    { (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) ) ) ) ) ) ); }
     5875    break;
     5876
     5877  case 175:
     5878
     5879/* Line 1806 of yacc.c  */
     5880#line 809 "parser.yy"
     5881    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     5882    break;
     5883
     5884  case 177:
     5885
     5886/* Line 1806 of yacc.c  */
     5887#line 815 "parser.yy"
    59055888    { (yyval.sn) = 0; }
    59065889    break;
    59075890
    5908   case 174:
    5909 
    5910 /* Line 1806 of yacc.c  */
    5911 #line 807 "parser.yy"
    5912     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5913     break;
    5914 
    5915   case 175:
    5916 
    5917 /* Line 1806 of yacc.c  */
    5918 #line 809 "parser.yy"
    5919     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    5920     break;
    5921 
    5922   case 176:
    5923 
    5924 /* Line 1806 of yacc.c  */
    5925 #line 811 "parser.yy"
    5926     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5927     break;
    5928 
    5929   case 177:
    5930 
    5931 /* Line 1806 of yacc.c  */
    5932 #line 813 "parser.yy"
    5933     { (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) ) ) ) ) ) ); }
    5934     break;
    5935 
    59365891  case 178:
    59375892
    59385893/* Line 1806 of yacc.c  */
    5939 #line 818 "parser.yy"
     5894#line 817 "parser.yy"
     5895    { (yyval.sn) = 0; }
     5896    break;
     5897
     5898  case 179:
     5899
     5900/* Line 1806 of yacc.c  */
     5901#line 822 "parser.yy"
     5902    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5903    break;
     5904
     5905  case 180:
     5906
     5907/* Line 1806 of yacc.c  */
     5908#line 824 "parser.yy"
     5909    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     5910    break;
     5911
     5912  case 181:
     5913
     5914/* Line 1806 of yacc.c  */
     5915#line 826 "parser.yy"
     5916    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     5917    break;
     5918
     5919  case 182:
     5920
     5921/* Line 1806 of yacc.c  */
     5922#line 831 "parser.yy"
     5923    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5924    break;
     5925
     5926  case 183:
     5927
     5928/* Line 1806 of yacc.c  */
     5929#line 833 "parser.yy"
     5930    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5931    break;
     5932
     5933  case 184:
     5934
     5935/* Line 1806 of yacc.c  */
     5936#line 838 "parser.yy"
     5937    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     5938    break;
     5939
     5940  case 185:
     5941
     5942/* Line 1806 of yacc.c  */
     5943#line 842 "parser.yy"
     5944    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     5945    break;
     5946
     5947  case 186:
     5948
     5949/* Line 1806 of yacc.c  */
     5950#line 845 "parser.yy"
     5951    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     5952    break;
     5953
     5954  case 187:
     5955
     5956/* Line 1806 of yacc.c  */
     5957#line 849 "parser.yy"
     5958    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     5959    break;
     5960
     5961  case 188:
     5962
     5963/* Line 1806 of yacc.c  */
     5964#line 852 "parser.yy"
    59405965    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    59415966    break;
    59425967
    5943   case 180:
    5944 
    5945 /* Line 1806 of yacc.c  */
    5946 #line 824 "parser.yy"
    5947     { (yyval.sn) = 0; }
    5948     break;
    5949 
    5950   case 181:
    5951 
    5952 /* Line 1806 of yacc.c  */
    5953 #line 826 "parser.yy"
    5954     { (yyval.sn) = 0; }
    5955     break;
    5956 
    5957   case 182:
    5958 
    5959 /* Line 1806 of yacc.c  */
    5960 #line 831 "parser.yy"
    5961     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5962     break;
    5963 
    5964   case 183:
    5965 
    5966 /* Line 1806 of yacc.c  */
    5967 #line 833 "parser.yy"
    5968     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    5969     break;
    5970 
    5971   case 184:
    5972 
    5973 /* Line 1806 of yacc.c  */
    5974 #line 835 "parser.yy"
    5975     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    5976     break;
    5977 
    5978   case 185:
    5979 
    5980 /* Line 1806 of yacc.c  */
    5981 #line 840 "parser.yy"
    5982     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    5983     break;
    5984 
    5985   case 186:
    5986 
    5987 /* Line 1806 of yacc.c  */
    5988 #line 842 "parser.yy"
    5989     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5990     break;
    5991 
    5992   case 187:
    5993 
    5994 /* Line 1806 of yacc.c  */
    5995 #line 847 "parser.yy"
    5996     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    5997     break;
    5998 
    5999   case 188:
    6000 
    6001 /* Line 1806 of yacc.c  */
    6002 #line 851 "parser.yy"
    6003     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    6004     break;
    6005 
    60065968  case 189:
    60075969
    60085970/* Line 1806 of yacc.c  */
    6009 #line 854 "parser.yy"
    6010     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     5971#line 856 "parser.yy"
     5972    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    60115973    break;
    60125974
     
    60155977/* Line 1806 of yacc.c  */
    60165978#line 858 "parser.yy"
    6017     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     5979    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    60185980    break;
    60195981
     
    60215983
    60225984/* Line 1806 of yacc.c  */
    6023 #line 861 "parser.yy"
    6024     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     5985#line 860 "parser.yy"
     5986    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    60255987    break;
    60265988
     
    60285990
    60295991/* Line 1806 of yacc.c  */
    6030 #line 865 "parser.yy"
    6031     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     5992#line 864 "parser.yy"
     5993    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    60325994    break;
    60335995
     
    60355997
    60365998/* Line 1806 of yacc.c  */
    6037 #line 867 "parser.yy"
    6038     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     5999#line 866 "parser.yy"
     6000    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    60396001    break;
    60406002
     
    60426004
    60436005/* Line 1806 of yacc.c  */
    6044 #line 869 "parser.yy"
    6045     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6006#line 873 "parser.yy"
     6007    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60466008    break;
    60476009
     
    60496011
    60506012/* Line 1806 of yacc.c  */
    6051 #line 873 "parser.yy"
    6052     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6013#line 875 "parser.yy"
     6014    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60536015    break;
    60546016
     
    60566018
    60576019/* Line 1806 of yacc.c  */
    6058 #line 875 "parser.yy"
    6059     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    6060     break;
    6061 
    6062   case 197:
    6063 
    6064 /* Line 1806 of yacc.c  */
    6065 #line 882 "parser.yy"
    6066     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6067     break;
    6068 
    6069   case 198:
    6070 
    6071 /* Line 1806 of yacc.c  */
    6072 #line 884 "parser.yy"
    6073     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6074     break;
    6075 
    6076   case 199:
    6077 
    6078 /* Line 1806 of yacc.c  */
    6079 #line 886 "parser.yy"
     6020#line 877 "parser.yy"
    60806021    {
    60816022                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60846025    break;
    60856026
     6027  case 198:
     6028
     6029/* Line 1806 of yacc.c  */
     6030#line 888 "parser.yy"
     6031    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6032    break;
     6033
     6034  case 199:
     6035
     6036/* Line 1806 of yacc.c  */
     6037#line 890 "parser.yy"
     6038    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6039    break;
     6040
     6041  case 200:
     6042
     6043/* Line 1806 of yacc.c  */
     6044#line 892 "parser.yy"
     6045    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6046    break;
     6047
    60866048  case 201:
    60876049
    60886050/* Line 1806 of yacc.c  */
    6089 #line 897 "parser.yy"
    6090     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6051#line 894 "parser.yy"
     6052    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60916053    break;
    60926054
     
    60956057/* Line 1806 of yacc.c  */
    60966058#line 899 "parser.yy"
    6097     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6059    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60986060    break;
    60996061
     
    61026064/* Line 1806 of yacc.c  */
    61036065#line 901 "parser.yy"
    6104     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6066    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61056067    break;
    61066068
     
    61096071/* Line 1806 of yacc.c  */
    61106072#line 903 "parser.yy"
    6111     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6073    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    61126074    break;
    61136075
     
    61156077
    61166078/* Line 1806 of yacc.c  */
    6117 #line 908 "parser.yy"
    6118     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     6079#line 905 "parser.yy"
     6080    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61196081    break;
    61206082
     
    61236085/* Line 1806 of yacc.c  */
    61246086#line 910 "parser.yy"
    6125     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6126     break;
    6127 
    6128   case 207:
    6129 
    6130 /* Line 1806 of yacc.c  */
    6131 #line 912 "parser.yy"
    6132     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6133     break;
    6134 
    6135   case 208:
    6136 
    6137 /* Line 1806 of yacc.c  */
    6138 #line 914 "parser.yy"
    6139     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6140     break;
    6141 
    6142   case 209:
    6143 
    6144 /* Line 1806 of yacc.c  */
    6145 #line 919 "parser.yy"
    61466087    {
    61476088                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    61506091    break;
    61516092
    6152   case 211:
    6153 
    6154 /* Line 1806 of yacc.c  */
    6155 #line 933 "parser.yy"
     6093  case 208:
     6094
     6095/* Line 1806 of yacc.c  */
     6096#line 924 "parser.yy"
    61566097    {
    61576098                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61606101    break;
    61616102
    6162   case 212:
    6163 
    6164 /* Line 1806 of yacc.c  */
    6165 #line 938 "parser.yy"
     6103  case 209:
     6104
     6105/* Line 1806 of yacc.c  */
     6106#line 929 "parser.yy"
    61666107    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61676108    break;
    61686109
    6169   case 213:
    6170 
    6171 /* Line 1806 of yacc.c  */
    6172 #line 940 "parser.yy"
     6110  case 210:
     6111
     6112/* Line 1806 of yacc.c  */
     6113#line 931 "parser.yy"
    61736114    {
    61746115                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61776118    break;
    61786119
     6120  case 212:
     6121
     6122/* Line 1806 of yacc.c  */
     6123#line 940 "parser.yy"
     6124    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6125    break;
     6126
     6127  case 213:
     6128
     6129/* Line 1806 of yacc.c  */
     6130#line 942 "parser.yy"
     6131    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6132    break;
     6133
     6134  case 214:
     6135
     6136/* Line 1806 of yacc.c  */
     6137#line 944 "parser.yy"
     6138    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6139    break;
     6140
    61796141  case 215:
    61806142
    61816143/* Line 1806 of yacc.c  */
    6182 #line 949 "parser.yy"
    6183     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6144#line 946 "parser.yy"
     6145    { (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) ); }
    61846146    break;
    61856147
     
    61876149
    61886150/* Line 1806 of yacc.c  */
    6189 #line 951 "parser.yy"
    6190     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6151#line 948 "parser.yy"
     6152    { (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) ); }
    61916153    break;
    61926154
     
    61956157/* Line 1806 of yacc.c  */
    61966158#line 953 "parser.yy"
    6197     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6159    { (yyval.flag) = false; }
    61986160    break;
    61996161
     
    62026164/* Line 1806 of yacc.c  */
    62036165#line 955 "parser.yy"
    6204     { (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) ); }
     6166    { (yyval.flag) = true; }
    62056167    break;
    62066168
     
    62086170
    62096171/* Line 1806 of yacc.c  */
    6210 #line 957 "parser.yy"
    6211     { (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) ); }
    6212     break;
    6213 
    6214   case 220:
    6215 
    6216 /* Line 1806 of yacc.c  */
    6217 #line 962 "parser.yy"
    6218     { (yyval.flag) = false; }
    6219     break;
    6220 
    6221   case 221:
    6222 
    6223 /* Line 1806 of yacc.c  */
    6224 #line 964 "parser.yy"
    6225     { (yyval.flag) = true; }
     6172#line 960 "parser.yy"
     6173    { (yyval.en) = 0; }
    62266174    break;
    62276175
     
    62296177
    62306178/* Line 1806 of yacc.c  */
    6231 #line 969 "parser.yy"
     6179#line 967 "parser.yy"
     6180    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6181    break;
     6182
     6183  case 223:
     6184
     6185/* Line 1806 of yacc.c  */
     6186#line 972 "parser.yy"
     6187    { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     6188    break;
     6189
     6190  case 224:
     6191
     6192/* Line 1806 of yacc.c  */
     6193#line 974 "parser.yy"
     6194    { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6195    break;
     6196
     6197  case 225:
     6198
     6199/* Line 1806 of yacc.c  */
     6200#line 979 "parser.yy"
    62326201    { (yyval.en) = 0; }
    62336202    break;
    62346203
    6235   case 225:
    6236 
    6237 /* Line 1806 of yacc.c  */
    6238 #line 976 "parser.yy"
    6239     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    6240     break;
    6241 
    62426204  case 226:
    62436205
    62446206/* Line 1806 of yacc.c  */
    62456207#line 981 "parser.yy"
    6246     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6208    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62476209    break;
    62486210
     
    62516213/* Line 1806 of yacc.c  */
    62526214#line 983 "parser.yy"
    6253     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     6215    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62546216    break;
    62556217
     
    62586220/* Line 1806 of yacc.c  */
    62596221#line 988 "parser.yy"
    6260     { (yyval.constant) = 0; }
     6222    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    62616223    break;
    62626224
     
    62656227/* Line 1806 of yacc.c  */
    62666228#line 990 "parser.yy"
    6267     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6229    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    62686230    break;
    62696231
     
    62716233
    62726234/* Line 1806 of yacc.c  */
    6273 #line 992 "parser.yy"
    6274     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    6275     break;
    6276 
    6277   case 231:
    6278 
    6279 /* Line 1806 of yacc.c  */
    62806235#line 997 "parser.yy"
    6281     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    6282     break;
    6283 
    6284   case 232:
    6285 
    6286 /* Line 1806 of yacc.c  */
    6287 #line 999 "parser.yy"
    6288     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6236    { (yyval.decl) = 0; }
    62896237    break;
    62906238
     
    62926240
    62936241/* Line 1806 of yacc.c  */
    6294 #line 1006 "parser.yy"
     6242#line 1004 "parser.yy"
     6243    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6244    break;
     6245
     6246  case 234:
     6247
     6248/* Line 1806 of yacc.c  */
     6249#line 1009 "parser.yy"
    62956250    { (yyval.decl) = 0; }
    62966251    break;
    62976252
    6298   case 236:
    6299 
    6300 /* Line 1806 of yacc.c  */
    6301 #line 1013 "parser.yy"
     6253  case 237:
     6254
     6255/* Line 1806 of yacc.c  */
     6256#line 1016 "parser.yy"
    63026257    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63036258    break;
    63046259
    6305   case 237:
    6306 
    6307 /* Line 1806 of yacc.c  */
    6308 #line 1018 "parser.yy"
    6309     { (yyval.decl) = 0; }
    6310     break;
    6311 
    6312   case 240:
    6313 
    6314 /* Line 1806 of yacc.c  */
    6315 #line 1025 "parser.yy"
    6316     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6317     break;
    6318 
    6319   case 245:
    6320 
    6321 /* Line 1806 of yacc.c  */
    6322 #line 1039 "parser.yy"
     6260  case 242:
     6261
     6262/* Line 1806 of yacc.c  */
     6263#line 1030 "parser.yy"
    63236264    {}
    63246265    break;
    63256266
    6326   case 246:
    6327 
    6328 /* Line 1806 of yacc.c  */
    6329 #line 1040 "parser.yy"
     6267  case 243:
     6268
     6269/* Line 1806 of yacc.c  */
     6270#line 1031 "parser.yy"
    63306271    {}
    63316272    break;
    63326273
    6333   case 254:
    6334 
    6335 /* Line 1806 of yacc.c  */
    6336 #line 1069 "parser.yy"
     6274  case 251:
     6275
     6276/* Line 1806 of yacc.c  */
     6277#line 1060 "parser.yy"
    63376278    {
    63386279                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63416282    break;
    63426283
    6343   case 255:
    6344 
    6345 /* Line 1806 of yacc.c  */
    6346 #line 1076 "parser.yy"
     6284  case 252:
     6285
     6286/* Line 1806 of yacc.c  */
     6287#line 1067 "parser.yy"
    63476288    {
    63486289                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63516292    break;
    63526293
    6353   case 256:
    6354 
    6355 /* Line 1806 of yacc.c  */
    6356 #line 1081 "parser.yy"
     6294  case 253:
     6295
     6296/* Line 1806 of yacc.c  */
     6297#line 1072 "parser.yy"
    63576298    {
    63586299                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63616302    break;
    63626303
    6363   case 257:
    6364 
    6365 /* Line 1806 of yacc.c  */
    6366 #line 1091 "parser.yy"
     6304  case 254:
     6305
     6306/* Line 1806 of yacc.c  */
     6307#line 1082 "parser.yy"
    63676308    {
    63686309                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63716312    break;
    63726313
    6373   case 258:
    6374 
    6375 /* Line 1806 of yacc.c  */
    6376 #line 1096 "parser.yy"
     6314  case 255:
     6315
     6316/* Line 1806 of yacc.c  */
     6317#line 1087 "parser.yy"
    63776318    {
    63786319                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63816322    break;
    63826323
    6383   case 259:
    6384 
    6385 /* Line 1806 of yacc.c  */
    6386 #line 1101 "parser.yy"
     6324  case 256:
     6325
     6326/* Line 1806 of yacc.c  */
     6327#line 1092 "parser.yy"
    63876328    {
    63886329                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63916332    break;
    63926333
    6393   case 260:
    6394 
    6395 /* Line 1806 of yacc.c  */
    6396 #line 1109 "parser.yy"
     6334  case 257:
     6335
     6336/* Line 1806 of yacc.c  */
     6337#line 1100 "parser.yy"
    63976338    {
    63986339                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64016342    break;
    64026343
    6403   case 261:
    6404 
    6405 /* Line 1806 of yacc.c  */
    6406 #line 1114 "parser.yy"
     6344  case 258:
     6345
     6346/* Line 1806 of yacc.c  */
     6347#line 1105 "parser.yy"
    64076348    {
    64086349                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64116352    break;
    64126353
    6413   case 262:
    6414 
    6415 /* Line 1806 of yacc.c  */
    6416 #line 1119 "parser.yy"
     6354  case 259:
     6355
     6356/* Line 1806 of yacc.c  */
     6357#line 1110 "parser.yy"
    64176358    {
    64186359                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64216362    break;
    64226363
    6423   case 263:
    6424 
    6425 /* Line 1806 of yacc.c  */
    6426 #line 1124 "parser.yy"
     6364  case 260:
     6365
     6366/* Line 1806 of yacc.c  */
     6367#line 1115 "parser.yy"
    64276368    {
    64286369                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64316372    break;
    64326373
    6433   case 264:
    6434 
    6435 /* Line 1806 of yacc.c  */
    6436 #line 1129 "parser.yy"
     6374  case 261:
     6375
     6376/* Line 1806 of yacc.c  */
     6377#line 1120 "parser.yy"
    64376378    {
    64386379                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64416382    break;
    64426383
    6443   case 265:
    6444 
    6445 /* Line 1806 of yacc.c  */
    6446 #line 1137 "parser.yy"
     6384  case 262:
     6385
     6386/* Line 1806 of yacc.c  */
     6387#line 1128 "parser.yy"
    64476388    {
    64486389                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64506391    break;
    64516392
    6452   case 266:
    6453 
    6454 /* Line 1806 of yacc.c  */
    6455 #line 1160 "parser.yy"
     6393  case 263:
     6394
     6395/* Line 1806 of yacc.c  */
     6396#line 1151 "parser.yy"
    64566397    {
    64576398                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64596400    break;
    64606401
    6461   case 267:
    6462 
    6463 /* Line 1806 of yacc.c  */
    6464 #line 1164 "parser.yy"
     6402  case 264:
     6403
     6404/* Line 1806 of yacc.c  */
     6405#line 1155 "parser.yy"
    64656406    {
    64666407                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64686409    break;
    64696410
    6470   case 268:
     6411  case 265:
     6412
     6413/* Line 1806 of yacc.c  */
     6414#line 1162 "parser.yy"
     6415    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     6416    break;
     6417
     6418  case 266:
     6419
     6420/* Line 1806 of yacc.c  */
     6421#line 1166 "parser.yy"
     6422    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     6423    break;
     6424
     6425  case 267:
    64716426
    64726427/* Line 1806 of yacc.c  */
    64736428#line 1171 "parser.yy"
    6474     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    6475     break;
    6476 
    6477   case 269:
    6478 
    6479 /* Line 1806 of yacc.c  */
    6480 #line 1175 "parser.yy"
    6481     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    6482     break;
    6483 
    6484   case 270:
    6485 
    6486 /* Line 1806 of yacc.c  */
    6487 #line 1180 "parser.yy"
    64886429    {
    64896430                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64926433    break;
    64936434
    6494   case 271:
    6495 
    6496 /* Line 1806 of yacc.c  */
    6497 #line 1185 "parser.yy"
     6435  case 268:
     6436
     6437/* Line 1806 of yacc.c  */
     6438#line 1176 "parser.yy"
    64986439    {
    64996440                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65026443    break;
    65036444
    6504   case 272:
    6505 
    6506 /* Line 1806 of yacc.c  */
    6507 #line 1190 "parser.yy"
     6445  case 269:
     6446
     6447/* Line 1806 of yacc.c  */
     6448#line 1181 "parser.yy"
    65086449    {
    65096450                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    65126453    break;
    65136454
    6514   case 273:
    6515 
    6516 /* Line 1806 of yacc.c  */
    6517 #line 1201 "parser.yy"
     6455  case 270:
     6456
     6457/* Line 1806 of yacc.c  */
     6458#line 1192 "parser.yy"
    65186459    {
    65196460                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65226463    break;
    65236464
    6524   case 274:
    6525 
    6526 /* Line 1806 of yacc.c  */
    6527 #line 1206 "parser.yy"
     6465  case 271:
     6466
     6467/* Line 1806 of yacc.c  */
     6468#line 1197 "parser.yy"
    65286469    {
    65296470                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65326473    break;
    65336474
    6534   case 275:
    6535 
    6536 /* Line 1806 of yacc.c  */
    6537 #line 1211 "parser.yy"
     6475  case 272:
     6476
     6477/* Line 1806 of yacc.c  */
     6478#line 1202 "parser.yy"
    65386479    {
    65396480                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65426483    break;
    65436484
    6544   case 276:
    6545 
    6546 /* Line 1806 of yacc.c  */
    6547 #line 1216 "parser.yy"
     6485  case 273:
     6486
     6487/* Line 1806 of yacc.c  */
     6488#line 1207 "parser.yy"
    65486489    {
    65496490                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65526493    break;
    65536494
    6554   case 277:
    6555 
    6556 /* Line 1806 of yacc.c  */
    6557 #line 1221 "parser.yy"
     6495  case 274:
     6496
     6497/* Line 1806 of yacc.c  */
     6498#line 1212 "parser.yy"
    65586499    {
    65596500                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65626503    break;
    65636504
    6564   case 278:
    6565 
    6566 /* Line 1806 of yacc.c  */
    6567 #line 1230 "parser.yy"
     6505  case 275:
     6506
     6507/* Line 1806 of yacc.c  */
     6508#line 1221 "parser.yy"
    65686509    {
    65696510                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65726513    break;
    65736514
    6574   case 279:
    6575 
    6576 /* Line 1806 of yacc.c  */
    6577 #line 1235 "parser.yy"
     6515  case 276:
     6516
     6517/* Line 1806 of yacc.c  */
     6518#line 1226 "parser.yy"
    65786519    {
    65796520                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65826523    break;
    65836524
    6584   case 284:
    6585 
    6586 /* Line 1806 of yacc.c  */
    6587 #line 1252 "parser.yy"
     6525  case 281:
     6526
     6527/* Line 1806 of yacc.c  */
     6528#line 1243 "parser.yy"
    65886529    {
    65896530                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65926533    break;
    65936534
    6594   case 285:
    6595 
    6596 /* Line 1806 of yacc.c  */
    6597 #line 1257 "parser.yy"
     6535  case 282:
     6536
     6537/* Line 1806 of yacc.c  */
     6538#line 1248 "parser.yy"
    65986539    {
    65996540                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66026543    break;
    66036544
     6545  case 291:
     6546
     6547/* Line 1806 of yacc.c  */
     6548#line 1270 "parser.yy"
     6549    { (yyval.decl) = 0; }
     6550    break;
     6551
    66046552  case 294:
    66056553
    66066554/* Line 1806 of yacc.c  */
    6607 #line 1279 "parser.yy"
    6608     { (yyval.decl) = 0; }
     6555#line 1282 "parser.yy"
     6556    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66096557    break;
    66106558
     
    66126560
    66136561/* Line 1806 of yacc.c  */
    6614 #line 1291 "parser.yy"
    6615     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6562#line 1293 "parser.yy"
     6563    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6564    break;
     6565
     6566  case 298:
     6567
     6568/* Line 1806 of yacc.c  */
     6569#line 1295 "parser.yy"
     6570    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6571    break;
     6572
     6573  case 299:
     6574
     6575/* Line 1806 of yacc.c  */
     6576#line 1297 "parser.yy"
     6577    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66166578    break;
    66176579
     
    66196581
    66206582/* Line 1806 of yacc.c  */
    6621 #line 1302 "parser.yy"
    6622     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6583#line 1299 "parser.yy"
     6584    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66236585    break;
    66246586
     
    66266588
    66276589/* Line 1806 of yacc.c  */
    6628 #line 1304 "parser.yy"
    6629     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6590#line 1301 "parser.yy"
     6591    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66306592    break;
    66316593
     
    66336595
    66346596/* Line 1806 of yacc.c  */
    6635 #line 1306 "parser.yy"
    6636     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6637     break;
    6638 
    6639   case 303:
    6640 
    6641 /* Line 1806 of yacc.c  */
    6642 #line 1308 "parser.yy"
    6643     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6644     break;
    6645 
    6646   case 304:
    6647 
    6648 /* Line 1806 of yacc.c  */
    6649 #line 1310 "parser.yy"
    6650     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6651     break;
    6652 
    6653   case 305:
    6654 
    6655 /* Line 1806 of yacc.c  */
    6656 #line 1312 "parser.yy"
     6597#line 1303 "parser.yy"
    66576598    {
    66586599                        typedefTable.enterScope();
     
    66606601    break;
    66616602
    6662   case 306:
    6663 
    6664 /* Line 1806 of yacc.c  */
    6665 #line 1316 "parser.yy"
     6603  case 303:
     6604
     6605/* Line 1806 of yacc.c  */
     6606#line 1307 "parser.yy"
    66666607    {
    66676608                        typedefTable.leaveScope();
     
    66706611    break;
    66716612
     6613  case 305:
     6614
     6615/* Line 1806 of yacc.c  */
     6616#line 1316 "parser.yy"
     6617    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6618    break;
     6619
     6620  case 306:
     6621
     6622/* Line 1806 of yacc.c  */
     6623#line 1318 "parser.yy"
     6624    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6625    break;
     6626
    66726627  case 308:
    66736628
    66746629/* Line 1806 of yacc.c  */
    6675 #line 1325 "parser.yy"
     6630#line 1329 "parser.yy"
    66766631    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66776632    break;
    66786633
    6679   case 309:
    6680 
    6681 /* Line 1806 of yacc.c  */
    6682 #line 1327 "parser.yy"
     6634  case 310:
     6635
     6636/* Line 1806 of yacc.c  */
     6637#line 1338 "parser.yy"
     6638    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6639    break;
     6640
     6641  case 311:
     6642
     6643/* Line 1806 of yacc.c  */
     6644#line 1340 "parser.yy"
     6645    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6646    break;
     6647
     6648  case 312:
     6649
     6650/* Line 1806 of yacc.c  */
     6651#line 1342 "parser.yy"
     6652    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6653    break;
     6654
     6655  case 313:
     6656
     6657/* Line 1806 of yacc.c  */
     6658#line 1344 "parser.yy"
     6659    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6660    break;
     6661
     6662  case 314:
     6663
     6664/* Line 1806 of yacc.c  */
     6665#line 1346 "parser.yy"
     6666    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6667    break;
     6668
     6669  case 315:
     6670
     6671/* Line 1806 of yacc.c  */
     6672#line 1348 "parser.yy"
     6673    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6674    break;
     6675
     6676  case 316:
     6677
     6678/* Line 1806 of yacc.c  */
     6679#line 1350 "parser.yy"
     6680    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6681    break;
     6682
     6683  case 317:
     6684
     6685/* Line 1806 of yacc.c  */
     6686#line 1352 "parser.yy"
     6687    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6688    break;
     6689
     6690  case 318:
     6691
     6692/* Line 1806 of yacc.c  */
     6693#line 1357 "parser.yy"
     6694    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6695    break;
     6696
     6697  case 319:
     6698
     6699/* Line 1806 of yacc.c  */
     6700#line 1359 "parser.yy"
     6701    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6702    break;
     6703
     6704  case 320:
     6705
     6706/* Line 1806 of yacc.c  */
     6707#line 1361 "parser.yy"
     6708    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6709    break;
     6710
     6711  case 321:
     6712
     6713/* Line 1806 of yacc.c  */
     6714#line 1363 "parser.yy"
     6715    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6716    break;
     6717
     6718  case 322:
     6719
     6720/* Line 1806 of yacc.c  */
     6721#line 1365 "parser.yy"
     6722    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6723    break;
     6724
     6725  case 323:
     6726
     6727/* Line 1806 of yacc.c  */
     6728#line 1367 "parser.yy"
     6729    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6730    break;
     6731
     6732  case 324:
     6733
     6734/* Line 1806 of yacc.c  */
     6735#line 1369 "parser.yy"
     6736    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6737    break;
     6738
     6739  case 325:
     6740
     6741/* Line 1806 of yacc.c  */
     6742#line 1371 "parser.yy"
     6743    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6744    break;
     6745
     6746  case 326:
     6747
     6748/* Line 1806 of yacc.c  */
     6749#line 1373 "parser.yy"
     6750    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6751    break;
     6752
     6753  case 327:
     6754
     6755/* Line 1806 of yacc.c  */
     6756#line 1375 "parser.yy"
     6757    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6758    break;
     6759
     6760  case 328:
     6761
     6762/* Line 1806 of yacc.c  */
     6763#line 1377 "parser.yy"
     6764    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6765    break;
     6766
     6767  case 329:
     6768
     6769/* Line 1806 of yacc.c  */
     6770#line 1379 "parser.yy"
     6771    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6772    break;
     6773
     6774  case 330:
     6775
     6776/* Line 1806 of yacc.c  */
     6777#line 1381 "parser.yy"
     6778    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6779    break;
     6780
     6781  case 332:
     6782
     6783/* Line 1806 of yacc.c  */
     6784#line 1388 "parser.yy"
     6785    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6786    break;
     6787
     6788  case 333:
     6789
     6790/* Line 1806 of yacc.c  */
     6791#line 1390 "parser.yy"
     6792    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6793    break;
     6794
     6795  case 334:
     6796
     6797/* Line 1806 of yacc.c  */
     6798#line 1392 "parser.yy"
    66836799    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66846800    break;
    66856801
    6686   case 311:
    6687 
    6688 /* Line 1806 of yacc.c  */
    6689 #line 1338 "parser.yy"
     6802  case 335:
     6803
     6804/* Line 1806 of yacc.c  */
     6805#line 1394 "parser.yy"
     6806    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6807    break;
     6808
     6809  case 337:
     6810
     6811/* Line 1806 of yacc.c  */
     6812#line 1400 "parser.yy"
     6813    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6814    break;
     6815
     6816  case 339:
     6817
     6818/* Line 1806 of yacc.c  */
     6819#line 1407 "parser.yy"
     6820    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6821    break;
     6822
     6823  case 340:
     6824
     6825/* Line 1806 of yacc.c  */
     6826#line 1409 "parser.yy"
    66906827    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66916828    break;
    66926829
    6693   case 313:
    6694 
    6695 /* Line 1806 of yacc.c  */
    6696 #line 1347 "parser.yy"
    6697     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6698     break;
    6699 
    6700   case 314:
    6701 
    6702 /* Line 1806 of yacc.c  */
    6703 #line 1349 "parser.yy"
    6704     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6705     break;
    6706 
    6707   case 315:
    6708 
    6709 /* Line 1806 of yacc.c  */
    6710 #line 1351 "parser.yy"
    6711     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6712     break;
    6713 
    6714   case 316:
    6715 
    6716 /* Line 1806 of yacc.c  */
    6717 #line 1353 "parser.yy"
    6718     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6719     break;
    6720 
    6721   case 317:
    6722 
    6723 /* Line 1806 of yacc.c  */
    6724 #line 1355 "parser.yy"
    6725     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6726     break;
    6727 
    6728   case 318:
    6729 
    6730 /* Line 1806 of yacc.c  */
    6731 #line 1357 "parser.yy"
    6732     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6733     break;
    6734 
    6735   case 319:
    6736 
    6737 /* Line 1806 of yacc.c  */
    6738 #line 1359 "parser.yy"
    6739     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6740     break;
    6741 
    6742   case 320:
    6743 
    6744 /* Line 1806 of yacc.c  */
    6745 #line 1361 "parser.yy"
    6746     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6747     break;
    6748 
    6749   case 321:
    6750 
    6751 /* Line 1806 of yacc.c  */
    6752 #line 1366 "parser.yy"
    6753     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6754     break;
    6755 
    6756   case 322:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1368 "parser.yy"
    6760     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6761     break;
    6762 
    6763   case 323:
    6764 
    6765 /* Line 1806 of yacc.c  */
    6766 #line 1370 "parser.yy"
    6767     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6768     break;
    6769 
    6770   case 324:
    6771 
    6772 /* Line 1806 of yacc.c  */
    6773 #line 1372 "parser.yy"
    6774     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6775     break;
    6776 
    6777   case 325:
    6778 
    6779 /* Line 1806 of yacc.c  */
    6780 #line 1374 "parser.yy"
    6781     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6782     break;
    6783 
    6784   case 326:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1376 "parser.yy"
    6788     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6789     break;
    6790 
    6791   case 327:
    6792 
    6793 /* Line 1806 of yacc.c  */
    6794 #line 1378 "parser.yy"
    6795     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6796     break;
    6797 
    6798   case 328:
    6799 
    6800 /* Line 1806 of yacc.c  */
    6801 #line 1380 "parser.yy"
    6802     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6803     break;
    6804 
    6805   case 329:
    6806 
    6807 /* Line 1806 of yacc.c  */
    6808 #line 1382 "parser.yy"
    6809     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6810     break;
    6811 
    6812   case 330:
    6813 
    6814 /* Line 1806 of yacc.c  */
    6815 #line 1384 "parser.yy"
    6816     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6817     break;
    6818 
    6819   case 331:
    6820 
    6821 /* Line 1806 of yacc.c  */
    6822 #line 1386 "parser.yy"
    6823     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6824     break;
    6825 
    6826   case 332:
    6827 
    6828 /* Line 1806 of yacc.c  */
    6829 #line 1388 "parser.yy"
    6830     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6831     break;
    6832 
    6833   case 333:
    6834 
    6835 /* Line 1806 of yacc.c  */
    6836 #line 1390 "parser.yy"
    6837     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    6838     break;
    6839 
    6840   case 335:
    6841 
    6842 /* Line 1806 of yacc.c  */
    6843 #line 1397 "parser.yy"
     6830  case 341:
     6831
     6832/* Line 1806 of yacc.c  */
     6833#line 1411 "parser.yy"
     6834    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6835    break;
     6836
     6837  case 342:
     6838
     6839/* Line 1806 of yacc.c  */
     6840#line 1416 "parser.yy"
     6841    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6842    break;
     6843
     6844  case 343:
     6845
     6846/* Line 1806 of yacc.c  */
     6847#line 1418 "parser.yy"
     6848    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6849    break;
     6850
     6851  case 344:
     6852
     6853/* Line 1806 of yacc.c  */
     6854#line 1420 "parser.yy"
     6855    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6856    break;
     6857
     6858  case 345:
     6859
     6860/* Line 1806 of yacc.c  */
     6861#line 1422 "parser.yy"
     6862    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6863    break;
     6864
     6865  case 347:
     6866
     6867/* Line 1806 of yacc.c  */
     6868#line 1428 "parser.yy"
    68446869    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68456870    break;
    68466871
    6847   case 336:
    6848 
    6849 /* Line 1806 of yacc.c  */
    6850 #line 1399 "parser.yy"
     6872  case 348:
     6873
     6874/* Line 1806 of yacc.c  */
     6875#line 1430 "parser.yy"
    68516876    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68526877    break;
    68536878
    6854   case 337:
    6855 
    6856 /* Line 1806 of yacc.c  */
    6857 #line 1401 "parser.yy"
     6879  case 349:
     6880
     6881/* Line 1806 of yacc.c  */
     6882#line 1432 "parser.yy"
    68586883    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68596884    break;
    68606885
    6861   case 338:
    6862 
    6863 /* Line 1806 of yacc.c  */
    6864 #line 1403 "parser.yy"
    6865     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6866     break;
    6867 
    6868   case 340:
    6869 
    6870 /* Line 1806 of yacc.c  */
    6871 #line 1409 "parser.yy"
    6872     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6873     break;
    6874 
    6875   case 342:
    6876 
    6877 /* Line 1806 of yacc.c  */
    6878 #line 1416 "parser.yy"
     6886  case 351:
     6887
     6888/* Line 1806 of yacc.c  */
     6889#line 1438 "parser.yy"
    68796890    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68806891    break;
    68816892
    6882   case 343:
    6883 
    6884 /* Line 1806 of yacc.c  */
    6885 #line 1418 "parser.yy"
     6893  case 352:
     6894
     6895/* Line 1806 of yacc.c  */
     6896#line 1440 "parser.yy"
    68866897    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68876898    break;
    68886899
    6889   case 344:
    6890 
    6891 /* Line 1806 of yacc.c  */
    6892 #line 1420 "parser.yy"
    6893     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6894     break;
    6895 
    6896   case 345:
    6897 
    6898 /* Line 1806 of yacc.c  */
    6899 #line 1425 "parser.yy"
    6900     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6901     break;
    6902 
    6903   case 346:
    6904 
    6905 /* Line 1806 of yacc.c  */
    6906 #line 1427 "parser.yy"
    6907     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6908     break;
    6909 
    6910   case 347:
    6911 
    6912 /* Line 1806 of yacc.c  */
    6913 #line 1429 "parser.yy"
    6914     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6915     break;
    6916 
    6917   case 348:
    6918 
    6919 /* Line 1806 of yacc.c  */
    6920 #line 1431 "parser.yy"
    6921     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6922     break;
    6923 
    6924   case 350:
    6925 
    6926 /* Line 1806 of yacc.c  */
    6927 #line 1437 "parser.yy"
     6900  case 354:
     6901
     6902/* Line 1806 of yacc.c  */
     6903#line 1446 "parser.yy"
    69286904    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69296905    break;
    69306906
    6931   case 351:
    6932 
    6933 /* Line 1806 of yacc.c  */
    6934 #line 1439 "parser.yy"
     6907  case 355:
     6908
     6909/* Line 1806 of yacc.c  */
     6910#line 1448 "parser.yy"
    69356911    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69366912    break;
    69376913
    6938   case 352:
    6939 
    6940 /* Line 1806 of yacc.c  */
    6941 #line 1441 "parser.yy"
     6914  case 356:
     6915
     6916/* Line 1806 of yacc.c  */
     6917#line 1450 "parser.yy"
    69426918    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69436919    break;
    69446920
    6945   case 354:
    6946 
    6947 /* Line 1806 of yacc.c  */
    6948 #line 1447 "parser.yy"
    6949     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6950     break;
    6951 
    6952   case 355:
    6953 
    6954 /* Line 1806 of yacc.c  */
    6955 #line 1449 "parser.yy"
     6921  case 357:
     6922
     6923/* Line 1806 of yacc.c  */
     6924#line 1455 "parser.yy"
     6925    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6926    break;
     6927
     6928  case 358:
     6929
     6930/* Line 1806 of yacc.c  */
     6931#line 1457 "parser.yy"
     6932    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6933    break;
     6934
     6935  case 359:
     6936
     6937/* Line 1806 of yacc.c  */
     6938#line 1459 "parser.yy"
    69566939    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69576940    break;
    69586941
    6959   case 357:
    6960 
    6961 /* Line 1806 of yacc.c  */
    6962 #line 1455 "parser.yy"
    6963     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6964     break;
    6965 
    6966   case 358:
    6967 
    6968 /* Line 1806 of yacc.c  */
    6969 #line 1457 "parser.yy"
    6970     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6971     break;
    6972 
    6973   case 359:
    6974 
    6975 /* Line 1806 of yacc.c  */
    6976 #line 1459 "parser.yy"
    6977     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6978     break;
    6979 
    6980   case 360:
    6981 
    6982 /* Line 1806 of yacc.c  */
    6983 #line 1464 "parser.yy"
    6984     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    6985     break;
    6986 
    6987   case 361:
    6988 
    6989 /* Line 1806 of yacc.c  */
    6990 #line 1466 "parser.yy"
    6991     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6992     break;
    6993 
    69946942  case 362:
    69956943
    69966944/* Line 1806 of yacc.c  */
    6997 #line 1468 "parser.yy"
    6998     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6999     break;
    7000 
    7001   case 365:
    7002 
    7003 /* Line 1806 of yacc.c  */
    7004 #line 1478 "parser.yy"
     6945#line 1469 "parser.yy"
    70056946    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
    70066947    break;
    70076948
    7008   case 366:
    7009 
    7010 /* Line 1806 of yacc.c  */
    7011 #line 1480 "parser.yy"
     6949  case 363:
     6950
     6951/* Line 1806 of yacc.c  */
     6952#line 1471 "parser.yy"
    70126953    {
    70136954                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    70166957    break;
    70176958
     6959  case 364:
     6960
     6961/* Line 1806 of yacc.c  */
     6962#line 1476 "parser.yy"
     6963    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6964    break;
     6965
     6966  case 365:
     6967
     6968/* Line 1806 of yacc.c  */
     6969#line 1478 "parser.yy"
     6970    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     6971    break;
     6972
     6973  case 366:
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1480 "parser.yy"
     6977    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     6978    break;
     6979
    70186980  case 367:
    70196981
    70206982/* Line 1806 of yacc.c  */
    7021 #line 1485 "parser.yy"
    7022     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6983#line 1482 "parser.yy"
     6984    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70236985    break;
    70246986
     
    70276989/* Line 1806 of yacc.c  */
    70286990#line 1487 "parser.yy"
    7029     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     6991    { (yyval.aggKey) = DeclarationNode::Struct; }
    70306992    break;
    70316993
     
    70346996/* Line 1806 of yacc.c  */
    70356997#line 1489 "parser.yy"
    7036     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     6998    { (yyval.aggKey) = DeclarationNode::Union; }
    70376999    break;
    70387000
     
    70407002
    70417003/* Line 1806 of yacc.c  */
    7042 #line 1491 "parser.yy"
    7043     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7004#line 1494 "parser.yy"
     7005    { (yyval.decl) = 0; }
    70447006    break;
    70457007
     
    70487010/* Line 1806 of yacc.c  */
    70497011#line 1496 "parser.yy"
    7050     { (yyval.aggKey) = DeclarationNode::Struct; }
    7051     break;
    7052 
    7053   case 372:
    7054 
    7055 /* Line 1806 of yacc.c  */
    7056 #line 1498 "parser.yy"
    7057     { (yyval.aggKey) = DeclarationNode::Union; }
     7012    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70587013    break;
    70597014
     
    70617016
    70627017/* Line 1806 of yacc.c  */
    7063 #line 1503 "parser.yy"
    7064     { (yyval.decl) = 0; }
    7065     break;
    7066 
    7067   case 374:
     7018#line 1502 "parser.yy"
     7019    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     7020    break;
     7021
     7022  case 375:
    70687023
    70697024/* Line 1806 of yacc.c  */
    70707025#line 1505 "parser.yy"
    7071     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7072     break;
    7073 
    7074   case 376:
    7075 
    7076 /* Line 1806 of yacc.c  */
    7077 #line 1511 "parser.yy"
    7078     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7079     break;
    7080 
    7081   case 378:
    7082 
    7083 /* Line 1806 of yacc.c  */
    7084 #line 1514 "parser.yy"
    70857026    {   // mark all fields in list
    70867027                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    70907031    break;
    70917032
     7033  case 377:
     7034
     7035/* Line 1806 of yacc.c  */
     7036#line 1515 "parser.yy"
     7037    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7038    break;
     7039
     7040  case 378:
     7041
     7042/* Line 1806 of yacc.c  */
     7043#line 1517 "parser.yy"
     7044    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7045    break;
     7046
     7047  case 379:
     7048
     7049/* Line 1806 of yacc.c  */
     7050#line 1519 "parser.yy"
     7051    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7052    break;
     7053
    70927054  case 380:
    70937055
    70947056/* Line 1806 of yacc.c  */
    70957057#line 1524 "parser.yy"
    7096     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7058    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70977059    break;
    70987060
     
    71017063/* Line 1806 of yacc.c  */
    71027064#line 1526 "parser.yy"
    7103     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7065    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71047066    break;
    71057067
     
    71077069
    71087070/* Line 1806 of yacc.c  */
    7109 #line 1528 "parser.yy"
    7110     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7071#line 1531 "parser.yy"
     7072    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71117073    break;
    71127074
     
    71157077/* Line 1806 of yacc.c  */
    71167078#line 1533 "parser.yy"
    7117     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7079    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71187080    break;
    71197081
     
    71217083
    71227084/* Line 1806 of yacc.c  */
    7123 #line 1535 "parser.yy"
    7124     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7085#line 1536 "parser.yy"
     7086    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71257087    break;
    71267088
     
    71287090
    71297091/* Line 1806 of yacc.c  */
    7130 #line 1540 "parser.yy"
    7131     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7132     break;
    7133 
    7134   case 386:
    7135 
    7136 /* Line 1806 of yacc.c  */
    7137 #line 1542 "parser.yy"
    7138     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7092#line 1539 "parser.yy"
     7093    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71397094    break;
    71407095
     
    71437098/* Line 1806 of yacc.c  */
    71447099#line 1545 "parser.yy"
    7145     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7100    { (yyval.en) = 0; }
    71467101    break;
    71477102
     
    71497104
    71507105/* Line 1806 of yacc.c  */
    7151 #line 1548 "parser.yy"
    7152     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7153     break;
    7154 
    7155   case 390:
    7156 
    7157 /* Line 1806 of yacc.c  */
    7158 #line 1554 "parser.yy"
    7159     { (yyval.en) = 0; }
     7106#line 1547 "parser.yy"
     7107    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7108    break;
     7109
     7110  case 389:
     7111
     7112/* Line 1806 of yacc.c  */
     7113#line 1552 "parser.yy"
     7114    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71607115    break;
    71617116
     
    71637118
    71647119/* Line 1806 of yacc.c  */
    7165 #line 1556 "parser.yy"
    7166     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7120#line 1561 "parser.yy"
     7121    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71677122    break;
    71687123
     
    71707125
    71717126/* Line 1806 of yacc.c  */
    7172 #line 1561 "parser.yy"
    7173     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7174     break;
    7175 
    7176   case 394:
    7177 
    7178 /* Line 1806 of yacc.c  */
    7179 #line 1570 "parser.yy"
    7180     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7181     break;
    7182 
    7183   case 395:
    7184 
    7185 /* Line 1806 of yacc.c  */
    7186 #line 1572 "parser.yy"
     7127#line 1563 "parser.yy"
    71877128    {
    71887129                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71917132    break;
    71927133
     7134  case 393:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1568 "parser.yy"
     7138    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7139    break;
     7140
     7141  case 394:
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1570 "parser.yy"
     7145    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7146    break;
     7147
     7148  case 395:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1575 "parser.yy"
     7152    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7153    break;
     7154
    71937155  case 396:
    71947156
    71957157/* Line 1806 of yacc.c  */
    71967158#line 1577 "parser.yy"
    7197     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7159    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71987160    break;
    71997161
     
    72017163
    72027164/* Line 1806 of yacc.c  */
    7203 #line 1579 "parser.yy"
    7204     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7165#line 1582 "parser.yy"
     7166    { (yyval.en) = 0; }
    72057167    break;
    72067168
     
    72097171/* Line 1806 of yacc.c  */
    72107172#line 1584 "parser.yy"
    7211     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7173    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72127174    break;
    72137175
     
    72157177
    72167178/* Line 1806 of yacc.c  */
    7217 #line 1586 "parser.yy"
    7218     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7219     break;
    7220 
    7221   case 400:
    7222 
    7223 /* Line 1806 of yacc.c  */
    72247179#line 1591 "parser.yy"
    7225     { (yyval.en) = 0; }
    7226     break;
    7227 
    7228   case 401:
    7229 
    7230 /* Line 1806 of yacc.c  */
    7231 #line 1593 "parser.yy"
    7232     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7233     break;
    7234 
    7235   case 402:
    7236 
    7237 /* Line 1806 of yacc.c  */
    7238 #line 1600 "parser.yy"
    72397180    { (yyval.decl) = 0; }
    72407181    break;
    72417182
    7242   case 406:
    7243 
    7244 /* Line 1806 of yacc.c  */
    7245 #line 1608 "parser.yy"
     7183  case 403:
     7184
     7185/* Line 1806 of yacc.c  */
     7186#line 1599 "parser.yy"
    72467187    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72477188    break;
    72487189
     7190  case 404:
     7191
     7192/* Line 1806 of yacc.c  */
     7193#line 1601 "parser.yy"
     7194    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7195    break;
     7196
     7197  case 405:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1603 "parser.yy"
     7201    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7202    break;
     7203
    72497204  case 407:
    72507205
    72517206/* Line 1806 of yacc.c  */
    7252 #line 1610 "parser.yy"
     7207#line 1611 "parser.yy"
     7208    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7209    break;
     7210
     7211  case 408:
     7212
     7213/* Line 1806 of yacc.c  */
     7214#line 1613 "parser.yy"
     7215    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7216    break;
     7217
     7218  case 409:
     7219
     7220/* Line 1806 of yacc.c  */
     7221#line 1615 "parser.yy"
     7222    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7223    break;
     7224
     7225  case 411:
     7226
     7227/* Line 1806 of yacc.c  */
     7228#line 1621 "parser.yy"
     7229    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7230    break;
     7231
     7232  case 412:
     7233
     7234/* Line 1806 of yacc.c  */
     7235#line 1626 "parser.yy"
     7236    { (yyval.decl) = 0; }
     7237    break;
     7238
     7239  case 415:
     7240
     7241/* Line 1806 of yacc.c  */
     7242#line 1633 "parser.yy"
    72537243    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72547244    break;
    72557245
    7256   case 408:
    7257 
    7258 /* Line 1806 of yacc.c  */
    7259 #line 1612 "parser.yy"
    7260     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7261     break;
    7262 
    7263   case 410:
    7264 
    7265 /* Line 1806 of yacc.c  */
    7266 #line 1620 "parser.yy"
     7246  case 418:
     7247
     7248/* Line 1806 of yacc.c  */
     7249#line 1640 "parser.yy"
    72677250    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72687251    break;
    72697252
    7270   case 411:
    7271 
    7272 /* Line 1806 of yacc.c  */
    7273 #line 1622 "parser.yy"
     7253  case 419:
     7254
     7255/* Line 1806 of yacc.c  */
     7256#line 1642 "parser.yy"
    72747257    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72757258    break;
    72767259
    7277   case 412:
    7278 
    7279 /* Line 1806 of yacc.c  */
    7280 #line 1624 "parser.yy"
    7281     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7282     break;
    7283 
    7284   case 414:
    7285 
    7286 /* Line 1806 of yacc.c  */
    7287 #line 1630 "parser.yy"
    7288     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7289     break;
    7290 
    7291   case 415:
    7292 
    7293 /* Line 1806 of yacc.c  */
    7294 #line 1635 "parser.yy"
    7295     { (yyval.decl) = 0; }
    7296     break;
    7297 
    7298   case 418:
    7299 
    7300 /* Line 1806 of yacc.c  */
    7301 #line 1642 "parser.yy"
    7302     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7303     break;
    7304 
    73057260  case 421:
    73067261
    73077262/* Line 1806 of yacc.c  */
    7308 #line 1649 "parser.yy"
    7309     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7263#line 1651 "parser.yy"
     7264    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73107265    break;
    73117266
     
    73137268
    73147269/* Line 1806 of yacc.c  */
    7315 #line 1651 "parser.yy"
    7316     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7317     break;
    7318 
    7319   case 424:
    7320 
    7321 /* Line 1806 of yacc.c  */
    7322 #line 1660 "parser.yy"
     7270#line 1654 "parser.yy"
    73237271    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73247272    break;
    73257273
    7326   case 425:
    7327 
    7328 /* Line 1806 of yacc.c  */
    7329 #line 1663 "parser.yy"
    7330     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7331     break;
    7332 
    7333   case 426:
    7334 
    7335 /* Line 1806 of yacc.c  */
    7336 #line 1665 "parser.yy"
     7274  case 423:
     7275
     7276/* Line 1806 of yacc.c  */
     7277#line 1656 "parser.yy"
    73377278    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73387279    break;
    73397280
    7340   case 431:
    7341 
    7342 /* Line 1806 of yacc.c  */
    7343 #line 1675 "parser.yy"
     7281  case 428:
     7282
     7283/* Line 1806 of yacc.c  */
     7284#line 1666 "parser.yy"
    73447285    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73457286    break;
    73467287
    7347   case 433:
    7348 
    7349 /* Line 1806 of yacc.c  */
    7350 #line 1681 "parser.yy"
     7288  case 430:
     7289
     7290/* Line 1806 of yacc.c  */
     7291#line 1672 "parser.yy"
    73517292    {
    73527293                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73557296    break;
    73567297
    7357   case 434:
    7358 
    7359 /* Line 1806 of yacc.c  */
    7360 #line 1686 "parser.yy"
     7298  case 431:
     7299
     7300/* Line 1806 of yacc.c  */
     7301#line 1677 "parser.yy"
    73617302    {
    73627303                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73657306    break;
    73667307
    7367   case 436:
     7308  case 433:
     7309
     7310/* Line 1806 of yacc.c  */
     7311#line 1686 "parser.yy"
     7312    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7313    break;
     7314
     7315  case 434:
    73687316
    73697317/* Line 1806 of yacc.c  */
    73707318#line 1695 "parser.yy"
     7319    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7320    break;
     7321
     7322  case 435:
     7323
     7324/* Line 1806 of yacc.c  */
     7325#line 1697 "parser.yy"
     7326    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7327    break;
     7328
     7329  case 447:
     7330
     7331/* Line 1806 of yacc.c  */
     7332#line 1722 "parser.yy"
    73717333    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73727334    break;
    73737335
    7374   case 437:
    7375 
    7376 /* Line 1806 of yacc.c  */
    7377 #line 1704 "parser.yy"
    7378     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7379     break;
    7380 
    7381   case 438:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1706 "parser.yy"
    7385     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7386     break;
    7387 
    7388   case 450:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1731 "parser.yy"
     7336  case 451:
     7337
     7338/* Line 1806 of yacc.c  */
     7339#line 1730 "parser.yy"
    73927340    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73937341    break;
    73947342
     7343  case 452:
     7344
     7345/* Line 1806 of yacc.c  */
     7346#line 1735 "parser.yy"
     7347    { (yyval.in) = 0; }
     7348    break;
     7349
     7350  case 453:
     7351
     7352/* Line 1806 of yacc.c  */
     7353#line 1737 "parser.yy"
     7354    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7355    break;
     7356
    73957357  case 454:
    73967358
    73977359/* Line 1806 of yacc.c  */
    73987360#line 1739 "parser.yy"
    7399     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7361    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    74007362    break;
    74017363
     
    74037365
    74047366/* Line 1806 of yacc.c  */
     7367#line 1743 "parser.yy"
     7368    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7369    break;
     7370
     7371  case 456:
     7372
     7373/* Line 1806 of yacc.c  */
    74057374#line 1744 "parser.yy"
     7375    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7376    break;
     7377
     7378  case 457:
     7379
     7380/* Line 1806 of yacc.c  */
     7381#line 1749 "parser.yy"
    74067382    { (yyval.in) = 0; }
    74077383    break;
    74087384
    7409   case 456:
    7410 
    7411 /* Line 1806 of yacc.c  */
    7412 #line 1746 "parser.yy"
    7413     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7414     break;
    7415 
    7416   case 457:
    7417 
    7418 /* Line 1806 of yacc.c  */
    7419 #line 1748 "parser.yy"
    7420     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7421     break;
    7422 
    7423   case 458:
     7385  case 459:
     7386
     7387/* Line 1806 of yacc.c  */
     7388#line 1751 "parser.yy"
     7389    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7390    break;
     7391
     7392  case 460:
    74247393
    74257394/* Line 1806 of yacc.c  */
    74267395#line 1752 "parser.yy"
    7427     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7428     break;
    7429 
    7430   case 459:
    7431 
    7432 /* Line 1806 of yacc.c  */
    7433 #line 1753 "parser.yy"
    7434     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7435     break;
    7436 
    7437   case 460:
    7438 
    7439 /* Line 1806 of yacc.c  */
    7440 #line 1758 "parser.yy"
    7441     { (yyval.in) = 0; }
    7442     break;
    7443 
    7444   case 462:
    7445 
    7446 /* Line 1806 of yacc.c  */
    7447 #line 1760 "parser.yy"
    7448     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7396    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7397    break;
     7398
     7399  case 461:
     7400
     7401/* Line 1806 of yacc.c  */
     7402#line 1754 "parser.yy"
     7403    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74497404    break;
    74507405
     
    74527407
    74537408/* Line 1806 of yacc.c  */
    7454 #line 1761 "parser.yy"
    7455     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    7456     break;
    7457 
    7458   case 464:
    7459 
    7460 /* Line 1806 of yacc.c  */
    7461 #line 1763 "parser.yy"
    7462     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7409#line 1770 "parser.yy"
     7410    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     7411    break;
     7412
     7413  case 465:
     7414
     7415/* Line 1806 of yacc.c  */
     7416#line 1776 "parser.yy"
     7417    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) ) ); }
    74637418    break;
    74647419
     
    74667421
    74677422/* Line 1806 of yacc.c  */
    7468 #line 1779 "parser.yy"
    7469     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     7423#line 1782 "parser.yy"
     7424    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     7425    break;
     7426
     7427  case 467:
     7428
     7429/* Line 1806 of yacc.c  */
     7430#line 1785 "parser.yy"
     7431    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74707432    break;
    74717433
     
    74737435
    74747436/* Line 1806 of yacc.c  */
    7475 #line 1785 "parser.yy"
    7476     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7437#line 1787 "parser.yy"
     7438    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74777439    break;
    74787440
     
    74807442
    74817443/* Line 1806 of yacc.c  */
    7482 #line 1793 "parser.yy"
    7483     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     7444#line 1789 "parser.yy"
     7445    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74847446    break;
    74857447
     
    74877449
    74887450/* Line 1806 of yacc.c  */
    7489 #line 1795 "parser.yy"
    7490     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    7491     break;
    7492 
    7493   case 471:
    7494 
    7495 /* Line 1806 of yacc.c  */
    7496 #line 1798 "parser.yy"
    7497     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7451#line 1791 "parser.yy"
     7452    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74987453    break;
    74997454
     
    75017456
    75027457/* Line 1806 of yacc.c  */
    7503 #line 1800 "parser.yy"
    7504     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7458#line 1815 "parser.yy"
     7459    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75057460    break;
    75067461
     
    75087463
    75097464/* Line 1806 of yacc.c  */
    7510 #line 1802 "parser.yy"
    7511     { (yyval.en) = new DesignatorNode( new CompositeExprNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ), true ); }
     7465#line 1817 "parser.yy"
     7466    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75127467    break;
    75137468
     
    75157470
    75167471/* Line 1806 of yacc.c  */
    7517 #line 1804 "parser.yy"
    7518     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7472#line 1819 "parser.yy"
     7473    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75197474    break;
    75207475
     
    75227477
    75237478/* Line 1806 of yacc.c  */
    7524 #line 1828 "parser.yy"
     7479#line 1825 "parser.yy"
    75257480    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75267481    break;
     
    75297484
    75307485/* Line 1806 of yacc.c  */
    7531 #line 1830 "parser.yy"
     7486#line 1827 "parser.yy"
    75327487    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75337488    break;
     
    75377492/* Line 1806 of yacc.c  */
    75387493#line 1832 "parser.yy"
    7539     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7494    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75407495    break;
    75417496
     
    75447499/* Line 1806 of yacc.c  */
    75457500#line 1838 "parser.yy"
    7546     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7501    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75477502    break;
    75487503
     
    75507505
    75517506/* Line 1806 of yacc.c  */
    7552 #line 1840 "parser.yy"
    7553     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7507#line 1843 "parser.yy"
     7508    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75547509    break;
    75557510
     
    75587513/* Line 1806 of yacc.c  */
    75597514#line 1845 "parser.yy"
    7560     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7515    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75617516    break;
    75627517
     
    75657520/* Line 1806 of yacc.c  */
    75667521#line 1851 "parser.yy"
    7567     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7522    { (yyval.tclass) = DeclarationNode::Type; }
    75687523    break;
    75697524
     
    75717526
    75727527/* Line 1806 of yacc.c  */
    7573 #line 1856 "parser.yy"
    7574     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7528#line 1853 "parser.yy"
     7529    { (yyval.tclass) = DeclarationNode::Ftype; }
    75757530    break;
    75767531
     
    75787533
    75797534/* Line 1806 of yacc.c  */
    7580 #line 1858 "parser.yy"
    7581     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7535#line 1855 "parser.yy"
     7536    { (yyval.tclass) = DeclarationNode::Dtype; }
     7537    break;
     7538
     7539  case 487:
     7540
     7541/* Line 1806 of yacc.c  */
     7542#line 1860 "parser.yy"
     7543    { (yyval.decl) = 0; }
    75827544    break;
    75837545
     
    75857547
    75867548/* Line 1806 of yacc.c  */
    7587 #line 1864 "parser.yy"
    7588     { (yyval.tclass) = DeclarationNode::Type; }
     7549#line 1862 "parser.yy"
     7550    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75897551    break;
    75907552
     
    75927554
    75937555/* Line 1806 of yacc.c  */
    7594 #line 1866 "parser.yy"
    7595     { (yyval.tclass) = DeclarationNode::Ftype; }
    7596     break;
    7597 
    7598   case 490:
    7599 
    7600 /* Line 1806 of yacc.c  */
    7601 #line 1868 "parser.yy"
    7602     { (yyval.tclass) = DeclarationNode::Dtype; }
    7603     break;
    7604 
    7605   case 491:
    7606 
    7607 /* Line 1806 of yacc.c  */
    7608 #line 1873 "parser.yy"
    7609     { (yyval.decl) = 0; }
    7610     break;
    7611 
    7612   case 492:
    7613 
    7614 /* Line 1806 of yacc.c  */
    7615 #line 1875 "parser.yy"
    7616     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7617     break;
    7618 
    7619   case 493:
    7620 
    7621 /* Line 1806 of yacc.c  */
    7622 #line 1880 "parser.yy"
     7556#line 1867 "parser.yy"
    76237557    {
    76247558                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    76277561    break;
    76287562
     7563  case 490:
     7564
     7565/* Line 1806 of yacc.c  */
     7566#line 1872 "parser.yy"
     7567    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7568    break;
     7569
     7570  case 491:
     7571
     7572/* Line 1806 of yacc.c  */
     7573#line 1874 "parser.yy"
     7574    { (yyval.decl) = 0; }
     7575    break;
     7576
     7577  case 492:
     7578
     7579/* Line 1806 of yacc.c  */
     7580#line 1879 "parser.yy"
     7581    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7582    break;
     7583
    76297584  case 494:
    76307585
    76317586/* Line 1806 of yacc.c  */
    7632 #line 1885 "parser.yy"
    7633     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7587#line 1882 "parser.yy"
     7588    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76347589    break;
    76357590
     
    76377592
    76387593/* Line 1806 of yacc.c  */
    7639 #line 1887 "parser.yy"
    7640     { (yyval.decl) = 0; }
     7594#line 1884 "parser.yy"
     7595    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    76417596    break;
    76427597
     
    76447599
    76457600/* Line 1806 of yacc.c  */
    7646 #line 1892 "parser.yy"
    7647     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7601#line 1889 "parser.yy"
     7602    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7603    break;
     7604
     7605  case 497:
     7606
     7607/* Line 1806 of yacc.c  */
     7608#line 1891 "parser.yy"
     7609    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76487610    break;
    76497611
     
    76517613
    76527614/* Line 1806 of yacc.c  */
    7653 #line 1895 "parser.yy"
    7654     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7615#line 1893 "parser.yy"
     7616    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76557617    break;
    76567618
     
    76587620
    76597621/* Line 1806 of yacc.c  */
    7660 #line 1897 "parser.yy"
    7661     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7622#line 1898 "parser.yy"
     7623    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76627624    break;
    76637625
     
    76657627
    76667628/* Line 1806 of yacc.c  */
    7667 #line 1902 "parser.yy"
    7668     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7629#line 1900 "parser.yy"
     7630    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76697631    break;
    76707632
     
    76727634
    76737635/* Line 1806 of yacc.c  */
    7674 #line 1904 "parser.yy"
    7675     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7676     break;
    7677 
    7678   case 502:
    7679 
    7680 /* Line 1806 of yacc.c  */
    7681 #line 1906 "parser.yy"
    7682     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7683     break;
    7684 
    7685   case 503:
    7686 
    7687 /* Line 1806 of yacc.c  */
    7688 #line 1911 "parser.yy"
    7689     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7690     break;
    7691 
    7692   case 504:
    7693 
    7694 /* Line 1806 of yacc.c  */
    7695 #line 1913 "parser.yy"
    7696     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7697     break;
    7698 
    7699   case 505:
    7700 
    7701 /* Line 1806 of yacc.c  */
    7702 #line 1918 "parser.yy"
     7636#line 1905 "parser.yy"
    77037637    {
    77047638                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    77077641    break;
    77087642
    7709   case 506:
    7710 
    7711 /* Line 1806 of yacc.c  */
    7712 #line 1923 "parser.yy"
     7643  case 502:
     7644
     7645/* Line 1806 of yacc.c  */
     7646#line 1910 "parser.yy"
    77137647    {
    77147648                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    77177651    break;
    77187652
    7719   case 507:
    7720 
    7721 /* Line 1806 of yacc.c  */
    7722 #line 1931 "parser.yy"
     7653  case 503:
     7654
     7655/* Line 1806 of yacc.c  */
     7656#line 1918 "parser.yy"
    77237657    {
    77247658                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    77277661    break;
    77287662
    7729   case 508:
    7730 
    7731 /* Line 1806 of yacc.c  */
    7732 #line 1936 "parser.yy"
     7663  case 504:
     7664
     7665/* Line 1806 of yacc.c  */
     7666#line 1923 "parser.yy"
    77337667    {
    77347668                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77377671    break;
    77387672
    7739   case 509:
    7740 
    7741 /* Line 1806 of yacc.c  */
    7742 #line 1941 "parser.yy"
     7673  case 505:
     7674
     7675/* Line 1806 of yacc.c  */
     7676#line 1928 "parser.yy"
    77437677    {
    77447678                        typedefTable.leaveTrait();
     
    77487682    break;
    77497683
    7750   case 511:
    7751 
    7752 /* Line 1806 of yacc.c  */
    7753 #line 1951 "parser.yy"
     7684  case 507:
     7685
     7686/* Line 1806 of yacc.c  */
     7687#line 1938 "parser.yy"
    77547688    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77557689    break;
    77567690
    7757   case 514:
    7758 
    7759 /* Line 1806 of yacc.c  */
    7760 #line 1961 "parser.yy"
     7691  case 510:
     7692
     7693/* Line 1806 of yacc.c  */
     7694#line 1948 "parser.yy"
    77617695    {
    77627696                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77657699    break;
    77667700
    7767   case 515:
    7768 
    7769 /* Line 1806 of yacc.c  */
    7770 #line 1966 "parser.yy"
     7701  case 511:
     7702
     7703/* Line 1806 of yacc.c  */
     7704#line 1953 "parser.yy"
    77717705    {
    77727706                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77757709    break;
    77767710
    7777   case 516:
    7778 
    7779 /* Line 1806 of yacc.c  */
    7780 #line 1971 "parser.yy"
     7711  case 512:
     7712
     7713/* Line 1806 of yacc.c  */
     7714#line 1958 "parser.yy"
    77817715    {
    77827716                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77857719    break;
    77867720
    7787   case 517:
    7788 
    7789 /* Line 1806 of yacc.c  */
    7790 #line 1979 "parser.yy"
     7721  case 513:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1966 "parser.yy"
    77917725    {
    77927726                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77957729    break;
    77967730
    7797   case 518:
    7798 
    7799 /* Line 1806 of yacc.c  */
    7800 #line 1984 "parser.yy"
     7731  case 514:
     7732
     7733/* Line 1806 of yacc.c  */
     7734#line 1971 "parser.yy"
    78017735    {
    78027736                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78057739    break;
    78067740
    7807   case 519:
    7808 
    7809 /* Line 1806 of yacc.c  */
    7810 #line 1994 "parser.yy"
     7741  case 515:
     7742
     7743/* Line 1806 of yacc.c  */
     7744#line 1981 "parser.yy"
    78117745    {}
    78127746    break;
    78137747
    7814   case 520:
    7815 
    7816 /* Line 1806 of yacc.c  */
    7817 #line 1996 "parser.yy"
     7748  case 516:
     7749
     7750/* Line 1806 of yacc.c  */
     7751#line 1983 "parser.yy"
    78187752    {
    78197753                        if ( theTree ) {
     
    78257759    break;
    78267760
    7827   case 522:
     7761  case 518:
     7762
     7763/* Line 1806 of yacc.c  */
     7764#line 1995 "parser.yy"
     7765    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7766    break;
     7767
     7768  case 519:
     7769
     7770/* Line 1806 of yacc.c  */
     7771#line 2000 "parser.yy"
     7772    { (yyval.decl) = 0; }
     7773    break;
     7774
     7775  case 523:
    78287776
    78297777/* Line 1806 of yacc.c  */
    78307778#line 2008 "parser.yy"
    7831     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7832     break;
    7833 
    7834   case 523:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 2013 "parser.yy"
    7838     { (yyval.decl) = 0; }
    7839     break;
    7840 
    7841   case 527:
    7842 
    7843 /* Line 1806 of yacc.c  */
    7844 #line 2021 "parser.yy"
    78457779    {}
    78467780    break;
    78477781
    7848   case 528:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2023 "parser.yy"
     7782  case 524:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 2010 "parser.yy"
    78527786    {
    78537787                        linkageStack.push( linkage );
     
    78567790    break;
    78577791
    7858   case 529:
    7859 
    7860 /* Line 1806 of yacc.c  */
    7861 #line 2028 "parser.yy"
     7792  case 525:
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 2015 "parser.yy"
    78627796    {
    78637797                        linkage = linkageStack.top();
     
    78677801    break;
    78687802
    7869   case 530:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 2034 "parser.yy"
     7803  case 526:
     7804
     7805/* Line 1806 of yacc.c  */
     7806#line 2021 "parser.yy"
    78737807    {   // mark all fields in list
    78747808                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    78787812    break;
    78797813
    7880   case 532:
    7881 
    7882 /* Line 1806 of yacc.c  */
    7883 #line 2049 "parser.yy"
     7814  case 528:
     7815
     7816/* Line 1806 of yacc.c  */
     7817#line 2036 "parser.yy"
    78847818    {
    78857819                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78897823    break;
    78907824
    7891   case 533:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 2055 "parser.yy"
     7825  case 529:
     7826
     7827/* Line 1806 of yacc.c  */
     7828#line 2042 "parser.yy"
    78957829    {
    78967830                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79007834    break;
    79017835
    7902   case 534:
    7903 
    7904 /* Line 1806 of yacc.c  */
    7905 #line 2064 "parser.yy"
     7836  case 530:
     7837
     7838/* Line 1806 of yacc.c  */
     7839#line 2051 "parser.yy"
    79067840    {
    79077841                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79117845    break;
    79127846
    7913   case 535:
    7914 
    7915 /* Line 1806 of yacc.c  */
    7916 #line 2070 "parser.yy"
     7847  case 531:
     7848
     7849/* Line 1806 of yacc.c  */
     7850#line 2057 "parser.yy"
    79177851    {
    79187852                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79227856    break;
    79237857
    7924   case 536:
    7925 
    7926 /* Line 1806 of yacc.c  */
    7927 #line 2076 "parser.yy"
     7858  case 532:
     7859
     7860/* Line 1806 of yacc.c  */
     7861#line 2063 "parser.yy"
    79287862    {
    79297863                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79337867    break;
    79347868
    7935   case 537:
    7936 
    7937 /* Line 1806 of yacc.c  */
    7938 #line 2082 "parser.yy"
     7869  case 533:
     7870
     7871/* Line 1806 of yacc.c  */
     7872#line 2069 "parser.yy"
    79397873    {
    79407874                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79447878    break;
    79457879
    7946   case 538:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 2088 "parser.yy"
     7880  case 534:
     7881
     7882/* Line 1806 of yacc.c  */
     7883#line 2075 "parser.yy"
    79507884    {
    79517885                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79557889    break;
    79567890
    7957   case 539:
    7958 
    7959 /* Line 1806 of yacc.c  */
    7960 #line 2096 "parser.yy"
     7891  case 535:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2083 "parser.yy"
    79617895    {
    79627896                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79667900    break;
    79677901
    7968   case 540:
    7969 
    7970 /* Line 1806 of yacc.c  */
    7971 #line 2102 "parser.yy"
     7902  case 536:
     7903
     7904/* Line 1806 of yacc.c  */
     7905#line 2089 "parser.yy"
    79727906    {
    79737907                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79777911    break;
    79787912
    7979   case 541:
    7980 
    7981 /* Line 1806 of yacc.c  */
    7982 #line 2110 "parser.yy"
     7913  case 537:
     7914
     7915/* Line 1806 of yacc.c  */
     7916#line 2097 "parser.yy"
    79837917    {
    79847918                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79887922    break;
    79897923
    7990   case 542:
    7991 
    7992 /* Line 1806 of yacc.c  */
    7993 #line 2116 "parser.yy"
     7924  case 538:
     7925
     7926/* Line 1806 of yacc.c  */
     7927#line 2103 "parser.yy"
    79947928    {
    79957929                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79997933    break;
    80007934
    8001   case 546:
    8002 
    8003 /* Line 1806 of yacc.c  */
    8004 #line 2131 "parser.yy"
    8005     { (yyval.en) = new CompositeExprNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7935  case 542:
     7936
     7937/* Line 1806 of yacc.c  */
     7938#line 2118 "parser.yy"
     7939    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7940    break;
     7941
     7942  case 545:
     7943
     7944/* Line 1806 of yacc.c  */
     7945#line 2128 "parser.yy"
     7946    { (yyval.decl) = 0; }
     7947    break;
     7948
     7949  case 548:
     7950
     7951/* Line 1806 of yacc.c  */
     7952#line 2135 "parser.yy"
     7953    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    80067954    break;
    80077955
     
    80137961    break;
    80147962
    8015   case 552:
    8016 
    8017 /* Line 1806 of yacc.c  */
    8018 #line 2148 "parser.yy"
    8019     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8020     break;
    8021 
    8022   case 553:
    8023 
    8024 /* Line 1806 of yacc.c  */
    8025 #line 2154 "parser.yy"
    8026     { (yyval.decl) = 0; }
     7963  case 555:
     7964
     7965/* Line 1806 of yacc.c  */
     7966#line 2156 "parser.yy"
     7967    {}
     7968    break;
     7969
     7970  case 556:
     7971
     7972/* Line 1806 of yacc.c  */
     7973#line 2157 "parser.yy"
     7974    {}
     7975    break;
     7976
     7977  case 557:
     7978
     7979/* Line 1806 of yacc.c  */
     7980#line 2158 "parser.yy"
     7981    {}
     7982    break;
     7983
     7984  case 558:
     7985
     7986/* Line 1806 of yacc.c  */
     7987#line 2159 "parser.yy"
     7988    {}
    80277989    break;
    80287990
     
    80307992
    80317993/* Line 1806 of yacc.c  */
    8032 #line 2169 "parser.yy"
    8033     {}
    8034     break;
    8035 
    8036   case 560:
    8037 
    8038 /* Line 1806 of yacc.c  */
    8039 #line 2170 "parser.yy"
    8040     {}
     7994#line 2194 "parser.yy"
     7995    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80417996    break;
    80427997
     
    80447999
    80458000/* Line 1806 of yacc.c  */
    8046 #line 2171 "parser.yy"
    8047     {}
     8001#line 2197 "parser.yy"
     8002    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80488003    break;
    80498004
     
    80518006
    80528007/* Line 1806 of yacc.c  */
    8053 #line 2172 "parser.yy"
    8054     {}
     8008#line 2199 "parser.yy"
     8009    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80558010    break;
    80568011
     
    80588013
    80598014/* Line 1806 of yacc.c  */
    8060 #line 2207 "parser.yy"
    8061     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8062     break;
    8063 
    8064   case 565:
    8065 
    8066 /* Line 1806 of yacc.c  */
    8067 #line 2210 "parser.yy"
    8068     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8069     break;
    8070 
    8071   case 566:
    8072 
    8073 /* Line 1806 of yacc.c  */
    8074 #line 2212 "parser.yy"
    8075     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8076     break;
    8077 
    8078   case 567:
    8079 
    8080 /* Line 1806 of yacc.c  */
    8081 #line 2217 "parser.yy"
     8015#line 2204 "parser.yy"
    80828016    {
    80838017                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80868020    break;
    80878021
     8022  case 564:
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2209 "parser.yy"
     8026    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8027    break;
     8028
     8029  case 565:
     8030
     8031/* Line 1806 of yacc.c  */
     8032#line 2214 "parser.yy"
     8033    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8034    break;
     8035
     8036  case 566:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2216 "parser.yy"
     8040    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8041    break;
     8042
     8043  case 567:
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2218 "parser.yy"
     8047    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8048    break;
     8049
    80888050  case 568:
    80898051
    80908052/* Line 1806 of yacc.c  */
    8091 #line 2222 "parser.yy"
     8053#line 2223 "parser.yy"
     8054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8055    break;
     8056
     8057  case 569:
     8058
     8059/* Line 1806 of yacc.c  */
     8060#line 2225 "parser.yy"
     8061    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8062    break;
     8063
     8064  case 570:
     8065
     8066/* Line 1806 of yacc.c  */
     8067#line 2227 "parser.yy"
     8068    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8069    break;
     8070
     8071  case 571:
     8072
     8073/* Line 1806 of yacc.c  */
     8074#line 2229 "parser.yy"
    80928075    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80938076    break;
    80948077
    8095   case 569:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2227 "parser.yy"
     8078  case 572:
     8079
     8080/* Line 1806 of yacc.c  */
     8081#line 2234 "parser.yy"
     8082    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8083    break;
     8084
     8085  case 573:
     8086
     8087/* Line 1806 of yacc.c  */
     8088#line 2236 "parser.yy"
     8089    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8090    break;
     8091
     8092  case 574:
     8093
     8094/* Line 1806 of yacc.c  */
     8095#line 2245 "parser.yy"
     8096    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8097    break;
     8098
     8099  case 576:
     8100
     8101/* Line 1806 of yacc.c  */
     8102#line 2248 "parser.yy"
     8103    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8104    break;
     8105
     8106  case 577:
     8107
     8108/* Line 1806 of yacc.c  */
     8109#line 2253 "parser.yy"
     8110    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8111    break;
     8112
     8113  case 578:
     8114
     8115/* Line 1806 of yacc.c  */
     8116#line 2255 "parser.yy"
     8117    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8118    break;
     8119
     8120  case 579:
     8121
     8122/* Line 1806 of yacc.c  */
     8123#line 2257 "parser.yy"
     8124    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8125    break;
     8126
     8127  case 580:
     8128
     8129/* Line 1806 of yacc.c  */
     8130#line 2262 "parser.yy"
    80998131    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81008132    break;
    81018133
    8102   case 570:
    8103 
    8104 /* Line 1806 of yacc.c  */
    8105 #line 2229 "parser.yy"
     8134  case 581:
     8135
     8136/* Line 1806 of yacc.c  */
     8137#line 2264 "parser.yy"
    81068138    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81078139    break;
    81088140
    8109   case 571:
    8110 
    8111 /* Line 1806 of yacc.c  */
    8112 #line 2231 "parser.yy"
     8141  case 582:
     8142
     8143/* Line 1806 of yacc.c  */
     8144#line 2266 "parser.yy"
    81138145    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81148146    break;
    81158147
    8116   case 572:
    8117 
    8118 /* Line 1806 of yacc.c  */
    8119 #line 2236 "parser.yy"
     8148  case 583:
     8149
     8150/* Line 1806 of yacc.c  */
     8151#line 2271 "parser.yy"
     8152    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8153    break;
     8154
     8155  case 584:
     8156
     8157/* Line 1806 of yacc.c  */
     8158#line 2273 "parser.yy"
     8159    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8160    break;
     8161
     8162  case 585:
     8163
     8164/* Line 1806 of yacc.c  */
     8165#line 2275 "parser.yy"
     8166    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8167    break;
     8168
     8169  case 589:
     8170
     8171/* Line 1806 of yacc.c  */
     8172#line 2290 "parser.yy"
     8173    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8174    break;
     8175
     8176  case 590:
     8177
     8178/* Line 1806 of yacc.c  */
     8179#line 2292 "parser.yy"
     8180    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8181    break;
     8182
     8183  case 591:
     8184
     8185/* Line 1806 of yacc.c  */
     8186#line 2294 "parser.yy"
     8187    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8188    break;
     8189
     8190  case 592:
     8191
     8192/* Line 1806 of yacc.c  */
     8193#line 2299 "parser.yy"
     8194    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8195    break;
     8196
     8197  case 593:
     8198
     8199/* Line 1806 of yacc.c  */
     8200#line 2301 "parser.yy"
     8201    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8202    break;
     8203
     8204  case 594:
     8205
     8206/* Line 1806 of yacc.c  */
     8207#line 2303 "parser.yy"
     8208    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8209    break;
     8210
     8211  case 595:
     8212
     8213/* Line 1806 of yacc.c  */
     8214#line 2308 "parser.yy"
     8215    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8216    break;
     8217
     8218  case 596:
     8219
     8220/* Line 1806 of yacc.c  */
     8221#line 2310 "parser.yy"
     8222    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8223    break;
     8224
     8225  case 597:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2312 "parser.yy"
     8229    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8230    break;
     8231
     8232  case 598:
     8233
     8234/* Line 1806 of yacc.c  */
     8235#line 2327 "parser.yy"
     8236    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8237    break;
     8238
     8239  case 600:
     8240
     8241/* Line 1806 of yacc.c  */
     8242#line 2330 "parser.yy"
     8243    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8244    break;
     8245
     8246  case 601:
     8247
     8248/* Line 1806 of yacc.c  */
     8249#line 2332 "parser.yy"
     8250    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8251    break;
     8252
     8253  case 603:
     8254
     8255/* Line 1806 of yacc.c  */
     8256#line 2338 "parser.yy"
     8257    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8258    break;
     8259
     8260  case 604:
     8261
     8262/* Line 1806 of yacc.c  */
     8263#line 2343 "parser.yy"
     8264    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8265    break;
     8266
     8267  case 605:
     8268
     8269/* Line 1806 of yacc.c  */
     8270#line 2345 "parser.yy"
     8271    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8272    break;
     8273
     8274  case 606:
     8275
     8276/* Line 1806 of yacc.c  */
     8277#line 2347 "parser.yy"
     8278    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8279    break;
     8280
     8281  case 607:
     8282
     8283/* Line 1806 of yacc.c  */
     8284#line 2352 "parser.yy"
    81208285    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81218286    break;
    81228287
    8123   case 573:
    8124 
    8125 /* Line 1806 of yacc.c  */
    8126 #line 2238 "parser.yy"
     8288  case 608:
     8289
     8290/* Line 1806 of yacc.c  */
     8291#line 2354 "parser.yy"
    81278292    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81288293    break;
    81298294
    8130   case 574:
    8131 
    8132 /* Line 1806 of yacc.c  */
    8133 #line 2240 "parser.yy"
     8295  case 609:
     8296
     8297/* Line 1806 of yacc.c  */
     8298#line 2356 "parser.yy"
    81348299    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81358300    break;
    81368301
    8137   case 575:
    8138 
    8139 /* Line 1806 of yacc.c  */
    8140 #line 2242 "parser.yy"
     8302  case 610:
     8303
     8304/* Line 1806 of yacc.c  */
     8305#line 2358 "parser.yy"
    81418306    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81428307    break;
    81438308
    8144   case 576:
    8145 
    8146 /* Line 1806 of yacc.c  */
    8147 #line 2247 "parser.yy"
     8309  case 611:
     8310
     8311/* Line 1806 of yacc.c  */
     8312#line 2363 "parser.yy"
     8313    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8314    break;
     8315
     8316  case 612:
     8317
     8318/* Line 1806 of yacc.c  */
     8319#line 2365 "parser.yy"
    81488320    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81498321    break;
    81508322
    8151   case 577:
    8152 
    8153 /* Line 1806 of yacc.c  */
    8154 #line 2249 "parser.yy"
     8323  case 613:
     8324
     8325/* Line 1806 of yacc.c  */
     8326#line 2367 "parser.yy"
    81558327    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81568328    break;
    81578329
    8158   case 578:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2258 "parser.yy"
     8330  case 614:
     8331
     8332/* Line 1806 of yacc.c  */
     8333#line 2377 "parser.yy"
    81628334    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81638335    break;
    81648336
    8165   case 580:
    8166 
    8167 /* Line 1806 of yacc.c  */
    8168 #line 2261 "parser.yy"
     8337  case 616:
     8338
     8339/* Line 1806 of yacc.c  */
     8340#line 2380 "parser.yy"
    81698341    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81708342    break;
    81718343
    8172   case 581:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2266 "parser.yy"
     8344  case 617:
     8345
     8346/* Line 1806 of yacc.c  */
     8347#line 2382 "parser.yy"
     8348    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8349    break;
     8350
     8351  case 618:
     8352
     8353/* Line 1806 of yacc.c  */
     8354#line 2387 "parser.yy"
     8355    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8356    break;
     8357
     8358  case 619:
     8359
     8360/* Line 1806 of yacc.c  */
     8361#line 2389 "parser.yy"
     8362    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8363    break;
     8364
     8365  case 620:
     8366
     8367/* Line 1806 of yacc.c  */
     8368#line 2391 "parser.yy"
     8369    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8370    break;
     8371
     8372  case 621:
     8373
     8374/* Line 1806 of yacc.c  */
     8375#line 2396 "parser.yy"
     8376    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8377    break;
     8378
     8379  case 622:
     8380
     8381/* Line 1806 of yacc.c  */
     8382#line 2398 "parser.yy"
     8383    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8384    break;
     8385
     8386  case 623:
     8387
     8388/* Line 1806 of yacc.c  */
     8389#line 2400 "parser.yy"
     8390    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8391    break;
     8392
     8393  case 624:
     8394
     8395/* Line 1806 of yacc.c  */
     8396#line 2402 "parser.yy"
     8397    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8398    break;
     8399
     8400  case 625:
     8401
     8402/* Line 1806 of yacc.c  */
     8403#line 2407 "parser.yy"
    81768404    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81778405    break;
    81788406
    8179   case 582:
    8180 
    8181 /* Line 1806 of yacc.c  */
    8182 #line 2268 "parser.yy"
     8407  case 626:
     8408
     8409/* Line 1806 of yacc.c  */
     8410#line 2409 "parser.yy"
    81838411    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81848412    break;
    81858413
    8186   case 583:
    8187 
    8188 /* Line 1806 of yacc.c  */
    8189 #line 2270 "parser.yy"
     8414  case 627:
     8415
     8416/* Line 1806 of yacc.c  */
     8417#line 2411 "parser.yy"
    81908418    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81918419    break;
    81928420
    8193   case 584:
    8194 
    8195 /* Line 1806 of yacc.c  */
    8196 #line 2275 "parser.yy"
    8197     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8198     break;
    8199 
    8200   case 585:
    8201 
    8202 /* Line 1806 of yacc.c  */
    8203 #line 2277 "parser.yy"
    8204     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8205     break;
    8206 
    8207   case 586:
    8208 
    8209 /* Line 1806 of yacc.c  */
    8210 #line 2279 "parser.yy"
    8211     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8212     break;
    8213 
    8214   case 587:
    8215 
    8216 /* Line 1806 of yacc.c  */
    8217 #line 2284 "parser.yy"
    8218     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8219     break;
    8220 
    8221   case 588:
    8222 
    8223 /* Line 1806 of yacc.c  */
    8224 #line 2286 "parser.yy"
    8225     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8226     break;
    8227 
    8228   case 589:
    8229 
    8230 /* Line 1806 of yacc.c  */
    8231 #line 2288 "parser.yy"
    8232     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8233     break;
    8234 
    8235   case 593:
    8236 
    8237 /* Line 1806 of yacc.c  */
    8238 #line 2303 "parser.yy"
    8239     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8240     break;
    8241 
    8242   case 594:
    8243 
    8244 /* Line 1806 of yacc.c  */
    8245 #line 2305 "parser.yy"
    8246     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8247     break;
    8248 
    8249   case 595:
    8250 
    8251 /* Line 1806 of yacc.c  */
    8252 #line 2307 "parser.yy"
    8253     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8254     break;
    8255 
    8256   case 596:
    8257 
    8258 /* Line 1806 of yacc.c  */
    8259 #line 2312 "parser.yy"
    8260     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8261     break;
    8262 
    8263   case 597:
    8264 
    8265 /* Line 1806 of yacc.c  */
    8266 #line 2314 "parser.yy"
    8267     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8268     break;
    8269 
    8270   case 598:
    8271 
    8272 /* Line 1806 of yacc.c  */
    8273 #line 2316 "parser.yy"
    8274     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8275     break;
    8276 
    8277   case 599:
    8278 
    8279 /* Line 1806 of yacc.c  */
    8280 #line 2321 "parser.yy"
    8281     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8282     break;
    8283 
    8284   case 600:
    8285 
    8286 /* Line 1806 of yacc.c  */
    8287 #line 2323 "parser.yy"
    8288     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8289     break;
    8290 
    8291   case 601:
    8292 
    8293 /* Line 1806 of yacc.c  */
    8294 #line 2325 "parser.yy"
    8295     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8296     break;
    8297 
    8298   case 602:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2340 "parser.yy"
     8421  case 628:
     8422
     8423/* Line 1806 of yacc.c  */
     8424#line 2442 "parser.yy"
    83028425    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83038426    break;
    83048427
    8305   case 604:
    8306 
    8307 /* Line 1806 of yacc.c  */
    8308 #line 2343 "parser.yy"
     8428  case 630:
     8429
     8430/* Line 1806 of yacc.c  */
     8431#line 2445 "parser.yy"
    83098432    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83108433    break;
    83118434
    8312   case 605:
    8313 
    8314 /* Line 1806 of yacc.c  */
    8315 #line 2345 "parser.yy"
     8435  case 631:
     8436
     8437/* Line 1806 of yacc.c  */
     8438#line 2447 "parser.yy"
    83168439    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83178440    break;
    83188441
    8319   case 607:
    8320 
    8321 /* Line 1806 of yacc.c  */
    8322 #line 2351 "parser.yy"
    8323     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8324     break;
    8325 
    8326   case 608:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2356 "parser.yy"
    8330     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8331     break;
    8332 
    8333   case 609:
    8334 
    8335 /* Line 1806 of yacc.c  */
    8336 #line 2358 "parser.yy"
    8337     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8338     break;
    8339 
    8340   case 610:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2360 "parser.yy"
    8344     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8345     break;
    8346 
    8347   case 611:
    8348 
    8349 /* Line 1806 of yacc.c  */
    8350 #line 2365 "parser.yy"
    8351     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8352     break;
    8353 
    8354   case 612:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2367 "parser.yy"
    8358     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8359     break;
    8360 
    8361   case 613:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2369 "parser.yy"
    8365     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8366     break;
    8367 
    8368   case 614:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2371 "parser.yy"
    8372     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8373     break;
    8374 
    8375   case 615:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2376 "parser.yy"
    8379     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8380     break;
    8381 
    8382   case 616:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2378 "parser.yy"
    8386     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8387     break;
    8388 
    8389   case 617:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2380 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8394     break;
    8395 
    8396   case 618:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2390 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8401     break;
    8402 
    8403   case 620:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2393 "parser.yy"
    8407     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8408     break;
    8409 
    8410   case 621:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2395 "parser.yy"
    8414     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8415     break;
    8416 
    8417   case 622:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2400 "parser.yy"
    8421     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8422     break;
    8423 
    8424   case 623:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2402 "parser.yy"
    8428     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8429     break;
    8430 
    8431   case 624:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2404 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8436     break;
    8437 
    8438   case 625:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2409 "parser.yy"
    8442     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8443     break;
    8444 
    8445   case 626:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2411 "parser.yy"
    8449     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8450     break;
    8451 
    8452   case 627:
    8453 
    8454 /* Line 1806 of yacc.c  */
    8455 #line 2413 "parser.yy"
    8456     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8457     break;
    8458 
    8459   case 628:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2415 "parser.yy"
    8463     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8464     break;
    8465 
    8466   case 629:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2420 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8471     break;
    8472 
    8473   case 630:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2422 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8478     break;
    8479 
    8480   case 631:
    8481 
    8482 /* Line 1806 of yacc.c  */
    8483 #line 2424 "parser.yy"
    8484     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8485     break;
    8486 
    84878442  case 632:
    84888443
    84898444/* Line 1806 of yacc.c  */
    8490 #line 2455 "parser.yy"
    8491     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8492     break;
    8493 
    8494   case 634:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2458 "parser.yy"
    8498     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8499     break;
    8500 
    8501   case 635:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2460 "parser.yy"
    8505     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8506     break;
    8507 
    8508   case 636:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2465 "parser.yy"
     8445#line 2452 "parser.yy"
    85128446    {
    85138447                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85168450    break;
    85178451
    8518   case 637:
    8519 
    8520 /* Line 1806 of yacc.c  */
    8521 #line 2470 "parser.yy"
     8452  case 633:
     8453
     8454/* Line 1806 of yacc.c  */
     8455#line 2457 "parser.yy"
    85228456    {
    85238457                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85268460    break;
    85278461
     8462  case 634:
     8463
     8464/* Line 1806 of yacc.c  */
     8465#line 2465 "parser.yy"
     8466    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8467    break;
     8468
     8469  case 635:
     8470
     8471/* Line 1806 of yacc.c  */
     8472#line 2467 "parser.yy"
     8473    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8474    break;
     8475
     8476  case 636:
     8477
     8478/* Line 1806 of yacc.c  */
     8479#line 2469 "parser.yy"
     8480    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8481    break;
     8482
     8483  case 637:
     8484
     8485/* Line 1806 of yacc.c  */
     8486#line 2474 "parser.yy"
     8487    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8488    break;
     8489
    85288490  case 638:
    85298491
    85308492/* Line 1806 of yacc.c  */
    8531 #line 2478 "parser.yy"
     8493#line 2476 "parser.yy"
     8494    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8495    break;
     8496
     8497  case 639:
     8498
     8499/* Line 1806 of yacc.c  */
     8500#line 2481 "parser.yy"
     8501    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8502    break;
     8503
     8504  case 640:
     8505
     8506/* Line 1806 of yacc.c  */
     8507#line 2483 "parser.yy"
     8508    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8509    break;
     8510
     8511  case 642:
     8512
     8513/* Line 1806 of yacc.c  */
     8514#line 2498 "parser.yy"
     8515    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8516    break;
     8517
     8518  case 643:
     8519
     8520/* Line 1806 of yacc.c  */
     8521#line 2500 "parser.yy"
     8522    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8523    break;
     8524
     8525  case 644:
     8526
     8527/* Line 1806 of yacc.c  */
     8528#line 2505 "parser.yy"
     8529    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8530    break;
     8531
     8532  case 645:
     8533
     8534/* Line 1806 of yacc.c  */
     8535#line 2507 "parser.yy"
     8536    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8537    break;
     8538
     8539  case 646:
     8540
     8541/* Line 1806 of yacc.c  */
     8542#line 2509 "parser.yy"
    85328543    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85338544    break;
    85348545
    8535   case 639:
    8536 
    8537 /* Line 1806 of yacc.c  */
    8538 #line 2480 "parser.yy"
     8546  case 647:
     8547
     8548/* Line 1806 of yacc.c  */
     8549#line 2511 "parser.yy"
    85398550    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85408551    break;
    85418552
    8542   case 640:
    8543 
    8544 /* Line 1806 of yacc.c  */
    8545 #line 2482 "parser.yy"
     8553  case 648:
     8554
     8555/* Line 1806 of yacc.c  */
     8556#line 2513 "parser.yy"
    85468557    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85478558    break;
    85488559
    8549   case 641:
    8550 
    8551 /* Line 1806 of yacc.c  */
    8552 #line 2487 "parser.yy"
     8560  case 650:
     8561
     8562/* Line 1806 of yacc.c  */
     8563#line 2519 "parser.yy"
     8564    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8565    break;
     8566
     8567  case 651:
     8568
     8569/* Line 1806 of yacc.c  */
     8570#line 2521 "parser.yy"
     8571    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8572    break;
     8573
     8574  case 652:
     8575
     8576/* Line 1806 of yacc.c  */
     8577#line 2523 "parser.yy"
     8578    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8579    break;
     8580
     8581  case 653:
     8582
     8583/* Line 1806 of yacc.c  */
     8584#line 2528 "parser.yy"
     8585    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8586    break;
     8587
     8588  case 654:
     8589
     8590/* Line 1806 of yacc.c  */
     8591#line 2530 "parser.yy"
     8592    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8593    break;
     8594
     8595  case 655:
     8596
     8597/* Line 1806 of yacc.c  */
     8598#line 2532 "parser.yy"
     8599    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8600    break;
     8601
     8602  case 656:
     8603
     8604/* Line 1806 of yacc.c  */
     8605#line 2538 "parser.yy"
     8606    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8607    break;
     8608
     8609  case 657:
     8610
     8611/* Line 1806 of yacc.c  */
     8612#line 2540 "parser.yy"
     8613    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8614    break;
     8615
     8616  case 659:
     8617
     8618/* Line 1806 of yacc.c  */
     8619#line 2546 "parser.yy"
     8620    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8621    break;
     8622
     8623  case 660:
     8624
     8625/* Line 1806 of yacc.c  */
     8626#line 2548 "parser.yy"
     8627    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8628    break;
     8629
     8630  case 661:
     8631
     8632/* Line 1806 of yacc.c  */
     8633#line 2550 "parser.yy"
     8634    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8635    break;
     8636
     8637  case 662:
     8638
     8639/* Line 1806 of yacc.c  */
     8640#line 2552 "parser.yy"
     8641    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8642    break;
     8643
     8644  case 664:
     8645
     8646/* Line 1806 of yacc.c  */
     8647#line 2567 "parser.yy"
     8648    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8649    break;
     8650
     8651  case 665:
     8652
     8653/* Line 1806 of yacc.c  */
     8654#line 2569 "parser.yy"
     8655    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8656    break;
     8657
     8658  case 666:
     8659
     8660/* Line 1806 of yacc.c  */
     8661#line 2574 "parser.yy"
     8662    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8663    break;
     8664
     8665  case 667:
     8666
     8667/* Line 1806 of yacc.c  */
     8668#line 2576 "parser.yy"
     8669    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8670    break;
     8671
     8672  case 668:
     8673
     8674/* Line 1806 of yacc.c  */
     8675#line 2578 "parser.yy"
     8676    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8677    break;
     8678
     8679  case 669:
     8680
     8681/* Line 1806 of yacc.c  */
     8682#line 2580 "parser.yy"
     8683    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8684    break;
     8685
     8686  case 670:
     8687
     8688/* Line 1806 of yacc.c  */
     8689#line 2582 "parser.yy"
     8690    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8691    break;
     8692
     8693  case 672:
     8694
     8695/* Line 1806 of yacc.c  */
     8696#line 2588 "parser.yy"
     8697    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8698    break;
     8699
     8700  case 673:
     8701
     8702/* Line 1806 of yacc.c  */
     8703#line 2590 "parser.yy"
     8704    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8705    break;
     8706
     8707  case 674:
     8708
     8709/* Line 1806 of yacc.c  */
     8710#line 2592 "parser.yy"
     8711    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8712    break;
     8713
     8714  case 675:
     8715
     8716/* Line 1806 of yacc.c  */
     8717#line 2597 "parser.yy"
     8718    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8719    break;
     8720
     8721  case 676:
     8722
     8723/* Line 1806 of yacc.c  */
     8724#line 2599 "parser.yy"
     8725    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8726    break;
     8727
     8728  case 677:
     8729
     8730/* Line 1806 of yacc.c  */
     8731#line 2601 "parser.yy"
     8732    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8733    break;
     8734
     8735  case 679:
     8736
     8737/* Line 1806 of yacc.c  */
     8738#line 2608 "parser.yy"
    85538739    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85548740    break;
    85558741
    8556   case 642:
    8557 
    8558 /* Line 1806 of yacc.c  */
    8559 #line 2489 "parser.yy"
     8742  case 681:
     8743
     8744/* Line 1806 of yacc.c  */
     8745#line 2619 "parser.yy"
     8746    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8747    break;
     8748
     8749  case 682:
     8750
     8751/* Line 1806 of yacc.c  */
     8752#line 2622 "parser.yy"
     8753    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8754    break;
     8755
     8756  case 683:
     8757
     8758/* Line 1806 of yacc.c  */
     8759#line 2624 "parser.yy"
     8760    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8761    break;
     8762
     8763  case 684:
     8764
     8765/* Line 1806 of yacc.c  */
     8766#line 2627 "parser.yy"
     8767    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8768    break;
     8769
     8770  case 685:
     8771
     8772/* Line 1806 of yacc.c  */
     8773#line 2629 "parser.yy"
     8774    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8775    break;
     8776
     8777  case 686:
     8778
     8779/* Line 1806 of yacc.c  */
     8780#line 2631 "parser.yy"
     8781    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8782    break;
     8783
     8784  case 688:
     8785
     8786/* Line 1806 of yacc.c  */
     8787#line 2645 "parser.yy"
     8788    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8789    break;
     8790
     8791  case 689:
     8792
     8793/* Line 1806 of yacc.c  */
     8794#line 2647 "parser.yy"
     8795    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8796    break;
     8797
     8798  case 690:
     8799
     8800/* Line 1806 of yacc.c  */
     8801#line 2652 "parser.yy"
     8802    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8803    break;
     8804
     8805  case 691:
     8806
     8807/* Line 1806 of yacc.c  */
     8808#line 2654 "parser.yy"
     8809    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8810    break;
     8811
     8812  case 692:
     8813
     8814/* Line 1806 of yacc.c  */
     8815#line 2656 "parser.yy"
     8816    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8817    break;
     8818
     8819  case 693:
     8820
     8821/* Line 1806 of yacc.c  */
     8822#line 2658 "parser.yy"
     8823    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8824    break;
     8825
     8826  case 694:
     8827
     8828/* Line 1806 of yacc.c  */
     8829#line 2660 "parser.yy"
     8830    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8831    break;
     8832
     8833  case 696:
     8834
     8835/* Line 1806 of yacc.c  */
     8836#line 2666 "parser.yy"
    85608837    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85618838    break;
    85628839
    8563   case 643:
    8564 
    8565 /* Line 1806 of yacc.c  */
    8566 #line 2494 "parser.yy"
    8567     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8568     break;
    8569 
    8570   case 644:
    8571 
    8572 /* Line 1806 of yacc.c  */
    8573 #line 2496 "parser.yy"
     8840  case 697:
     8841
     8842/* Line 1806 of yacc.c  */
     8843#line 2668 "parser.yy"
     8844    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8845    break;
     8846
     8847  case 698:
     8848
     8849/* Line 1806 of yacc.c  */
     8850#line 2670 "parser.yy"
     8851    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8852    break;
     8853
     8854  case 699:
     8855
     8856/* Line 1806 of yacc.c  */
     8857#line 2675 "parser.yy"
    85748858    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85758859    break;
    85768860
    8577   case 646:
    8578 
    8579 /* Line 1806 of yacc.c  */
    8580 #line 2511 "parser.yy"
    8581     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8582     break;
    8583 
    8584   case 647:
    8585 
    8586 /* Line 1806 of yacc.c  */
    8587 #line 2513 "parser.yy"
    8588     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8589     break;
    8590 
    8591   case 648:
    8592 
    8593 /* Line 1806 of yacc.c  */
    8594 #line 2518 "parser.yy"
    8595     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8596     break;
    8597 
    8598   case 649:
    8599 
    8600 /* Line 1806 of yacc.c  */
    8601 #line 2520 "parser.yy"
    8602     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8603     break;
    8604 
    8605   case 650:
    8606 
    8607 /* Line 1806 of yacc.c  */
    8608 #line 2522 "parser.yy"
    8609     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8610     break;
    8611 
    8612   case 651:
    8613 
    8614 /* Line 1806 of yacc.c  */
    8615 #line 2524 "parser.yy"
    8616     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8617     break;
    8618 
    8619   case 652:
    8620 
    8621 /* Line 1806 of yacc.c  */
    8622 #line 2526 "parser.yy"
     8861  case 700:
     8862
     8863/* Line 1806 of yacc.c  */
     8864#line 2677 "parser.yy"
    86238865    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86248866    break;
    86258867
    8626   case 654:
    8627 
    8628 /* Line 1806 of yacc.c  */
    8629 #line 2532 "parser.yy"
    8630     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8631     break;
    8632 
    8633   case 655:
    8634 
    8635 /* Line 1806 of yacc.c  */
    8636 #line 2534 "parser.yy"
    8637     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8638     break;
    8639 
    8640   case 656:
    8641 
    8642 /* Line 1806 of yacc.c  */
    8643 #line 2536 "parser.yy"
    8644     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8645     break;
    8646 
    8647   case 657:
    8648 
    8649 /* Line 1806 of yacc.c  */
    8650 #line 2541 "parser.yy"
    8651     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8652     break;
    8653 
    8654   case 658:
    8655 
    8656 /* Line 1806 of yacc.c  */
    8657 #line 2543 "parser.yy"
    8658     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8659     break;
    8660 
    8661   case 659:
    8662 
    8663 /* Line 1806 of yacc.c  */
    8664 #line 2545 "parser.yy"
    8665     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8666     break;
    8667 
    8668   case 660:
    8669 
    8670 /* Line 1806 of yacc.c  */
    8671 #line 2551 "parser.yy"
    8672     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8673     break;
    8674 
    8675   case 661:
    8676 
    8677 /* Line 1806 of yacc.c  */
    8678 #line 2553 "parser.yy"
    8679     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8680     break;
    8681 
    8682   case 663:
    8683 
    8684 /* Line 1806 of yacc.c  */
    8685 #line 2559 "parser.yy"
    8686     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8687     break;
    8688 
    8689   case 664:
    8690 
    8691 /* Line 1806 of yacc.c  */
    8692 #line 2561 "parser.yy"
    8693     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8694     break;
    8695 
    8696   case 665:
    8697 
    8698 /* Line 1806 of yacc.c  */
    8699 #line 2563 "parser.yy"
    8700     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8701     break;
    8702 
    8703   case 666:
    8704 
    8705 /* Line 1806 of yacc.c  */
    8706 #line 2565 "parser.yy"
    8707     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8708     break;
    8709 
    8710   case 668:
    8711 
    8712 /* Line 1806 of yacc.c  */
    8713 #line 2580 "parser.yy"
    8714     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8715     break;
    8716 
    8717   case 669:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2582 "parser.yy"
    8721     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8722     break;
    8723 
    8724   case 670:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2587 "parser.yy"
    8728     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8729     break;
    8730 
    8731   case 671:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2589 "parser.yy"
    8735     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8736     break;
    8737 
    8738   case 672:
    8739 
    8740 /* Line 1806 of yacc.c  */
    8741 #line 2591 "parser.yy"
    8742     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8743     break;
    8744 
    8745   case 673:
    8746 
    8747 /* Line 1806 of yacc.c  */
    8748 #line 2593 "parser.yy"
    8749     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8750     break;
    8751 
    8752   case 674:
    8753 
    8754 /* Line 1806 of yacc.c  */
    8755 #line 2595 "parser.yy"
    8756     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8757     break;
    8758 
    8759   case 676:
    8760 
    8761 /* Line 1806 of yacc.c  */
    8762 #line 2601 "parser.yy"
    8763     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8764     break;
    8765 
    8766   case 677:
    8767 
    8768 /* Line 1806 of yacc.c  */
    8769 #line 2603 "parser.yy"
    8770     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8771     break;
    8772 
    8773   case 678:
    8774 
    8775 /* Line 1806 of yacc.c  */
    8776 #line 2605 "parser.yy"
    8777     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8778     break;
    8779 
    8780   case 679:
    8781 
    8782 /* Line 1806 of yacc.c  */
    8783 #line 2610 "parser.yy"
    8784     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8785     break;
    8786 
    8787   case 680:
    8788 
    8789 /* Line 1806 of yacc.c  */
    8790 #line 2612 "parser.yy"
    8791     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8792     break;
    8793 
    8794   case 681:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2614 "parser.yy"
    8798     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8799     break;
    8800 
    8801   case 683:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2621 "parser.yy"
    8805     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8806     break;
    8807 
    8808   case 685:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2632 "parser.yy"
    8812     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8813     break;
    8814 
    8815   case 686:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2635 "parser.yy"
     8868  case 703:
     8869
     8870/* Line 1806 of yacc.c  */
     8871#line 2687 "parser.yy"
     8872    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8873    break;
     8874
     8875  case 706:
     8876
     8877/* Line 1806 of yacc.c  */
     8878#line 2697 "parser.yy"
     8879    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8880    break;
     8881
     8882  case 707:
     8883
     8884/* Line 1806 of yacc.c  */
     8885#line 2699 "parser.yy"
     8886    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8887    break;
     8888
     8889  case 708:
     8890
     8891/* Line 1806 of yacc.c  */
     8892#line 2701 "parser.yy"
     8893    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8894    break;
     8895
     8896  case 709:
     8897
     8898/* Line 1806 of yacc.c  */
     8899#line 2703 "parser.yy"
     8900    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8901    break;
     8902
     8903  case 710:
     8904
     8905/* Line 1806 of yacc.c  */
     8906#line 2705 "parser.yy"
     8907    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8908    break;
     8909
     8910  case 711:
     8911
     8912/* Line 1806 of yacc.c  */
     8913#line 2707 "parser.yy"
     8914    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8915    break;
     8916
     8917  case 712:
     8918
     8919/* Line 1806 of yacc.c  */
     8920#line 2714 "parser.yy"
     8921    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8922    break;
     8923
     8924  case 713:
     8925
     8926/* Line 1806 of yacc.c  */
     8927#line 2716 "parser.yy"
     8928    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8929    break;
     8930
     8931  case 714:
     8932
     8933/* Line 1806 of yacc.c  */
     8934#line 2718 "parser.yy"
     8935    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8936    break;
     8937
     8938  case 715:
     8939
     8940/* Line 1806 of yacc.c  */
     8941#line 2720 "parser.yy"
     8942    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8943    break;
     8944
     8945  case 716:
     8946
     8947/* Line 1806 of yacc.c  */
     8948#line 2722 "parser.yy"
     8949    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8950    break;
     8951
     8952  case 717:
     8953
     8954/* Line 1806 of yacc.c  */
     8955#line 2724 "parser.yy"
     8956    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8957    break;
     8958
     8959  case 718:
     8960
     8961/* Line 1806 of yacc.c  */
     8962#line 2726 "parser.yy"
     8963    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8964    break;
     8965
     8966  case 719:
     8967
     8968/* Line 1806 of yacc.c  */
     8969#line 2728 "parser.yy"
     8970    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8971    break;
     8972
     8973  case 720:
     8974
     8975/* Line 1806 of yacc.c  */
     8976#line 2730 "parser.yy"
     8977    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8978    break;
     8979
     8980  case 721:
     8981
     8982/* Line 1806 of yacc.c  */
     8983#line 2732 "parser.yy"
     8984    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8985    break;
     8986
     8987  case 722:
     8988
     8989/* Line 1806 of yacc.c  */
     8990#line 2737 "parser.yy"
    88198991    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88208992    break;
    88218993
    8822   case 687:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2637 "parser.yy"
    8826     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8827     break;
    8828 
    8829   case 688:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2640 "parser.yy"
     8994  case 723:
     8995
     8996/* Line 1806 of yacc.c  */
     8997#line 2739 "parser.yy"
    88338998    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88348999    break;
    88359000
    8836   case 689:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2642 "parser.yy"
    8840     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8841     break;
    8842 
    8843   case 690:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2644 "parser.yy"
    8847     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8848     break;
    8849 
    8850   case 692:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2658 "parser.yy"
    8854     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8855     break;
    8856 
    8857   case 693:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2660 "parser.yy"
    8861     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8862     break;
    8863 
    8864   case 694:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2665 "parser.yy"
    8868     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8869     break;
    8870 
    8871   case 695:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2667 "parser.yy"
    8875     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8876     break;
    8877 
    8878   case 696:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2669 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8883     break;
    8884 
    8885   case 697:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2671 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8890     break;
    8891 
    8892   case 698:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2673 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8897     break;
    8898 
    8899   case 700:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2679 "parser.yy"
    8903     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8904     break;
    8905 
    8906   case 701:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2681 "parser.yy"
    8910     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8911     break;
    8912 
    8913   case 702:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2683 "parser.yy"
    8917     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8918     break;
    8919 
    8920   case 703:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2688 "parser.yy"
    8924     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8925     break;
    8926 
    8927   case 704:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2690 "parser.yy"
    8931     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8932     break;
    8933 
    8934   case 707:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2700 "parser.yy"
     9001  case 724:
     9002
     9003/* Line 1806 of yacc.c  */
     9004#line 2744 "parser.yy"
     9005    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9006    break;
     9007
     9008  case 725:
     9009
     9010/* Line 1806 of yacc.c  */
     9011#line 2746 "parser.yy"
     9012    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9013    break;
     9014
     9015  case 727:
     9016
     9017/* Line 1806 of yacc.c  */
     9018#line 2773 "parser.yy"
    89389019    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89399020    break;
    89409021
    8941   case 710:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2710 "parser.yy"
     9022  case 731:
     9023
     9024/* Line 1806 of yacc.c  */
     9025#line 2784 "parser.yy"
    89459026    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89469027    break;
    89479028
    8948   case 711:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2712 "parser.yy"
     9029  case 732:
     9030
     9031/* Line 1806 of yacc.c  */
     9032#line 2786 "parser.yy"
    89529033    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89539034    break;
    89549035
    8955   case 712:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2714 "parser.yy"
     9036  case 733:
     9037
     9038/* Line 1806 of yacc.c  */
     9039#line 2788 "parser.yy"
    89599040    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89609041    break;
    89619042
    8962   case 713:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2716 "parser.yy"
     9043  case 734:
     9044
     9045/* Line 1806 of yacc.c  */
     9046#line 2790 "parser.yy"
    89669047    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89679048    break;
    89689049
    8969   case 714:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2718 "parser.yy"
     9050  case 735:
     9051
     9052/* Line 1806 of yacc.c  */
     9053#line 2792 "parser.yy"
    89739054    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89749055    break;
    89759056
    8976   case 715:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2720 "parser.yy"
     9057  case 736:
     9058
     9059/* Line 1806 of yacc.c  */
     9060#line 2794 "parser.yy"
    89809061    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89819062    break;
    89829063
    8983   case 716:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2727 "parser.yy"
     9064  case 737:
     9065
     9066/* Line 1806 of yacc.c  */
     9067#line 2801 "parser.yy"
    89879068    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89889069    break;
    89899070
    8990   case 717:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2729 "parser.yy"
     9071  case 738:
     9072
     9073/* Line 1806 of yacc.c  */
     9074#line 2803 "parser.yy"
     9075    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9076    break;
     9077
     9078  case 739:
     9079
     9080/* Line 1806 of yacc.c  */
     9081#line 2805 "parser.yy"
    89949082    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89959083    break;
    89969084
    8997   case 718:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2731 "parser.yy"
     9085  case 740:
     9086
     9087/* Line 1806 of yacc.c  */
     9088#line 2807 "parser.yy"
     9089    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9090    break;
     9091
     9092  case 741:
     9093
     9094/* Line 1806 of yacc.c  */
     9095#line 2809 "parser.yy"
    90019096    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90029097    break;
    90039098
    9004   case 719:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2733 "parser.yy"
    9008     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9009     break;
    9010 
    9011   case 720:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2735 "parser.yy"
     9099  case 742:
     9100
     9101/* Line 1806 of yacc.c  */
     9102#line 2811 "parser.yy"
    90159103    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90169104    break;
    90179105
    9018   case 721:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2737 "parser.yy"
    9022     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9023     break;
    9024 
    9025   case 722:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2739 "parser.yy"
    9029     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9030     break;
    9031 
    9032   case 723:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2741 "parser.yy"
    9036     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9037     break;
    9038 
    9039   case 724:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2743 "parser.yy"
    9043     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9044     break;
    9045 
    9046   case 725:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2745 "parser.yy"
    9050     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9051     break;
    9052 
    9053   case 726:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2750 "parser.yy"
    9057     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9058     break;
    9059 
    9060   case 727:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2752 "parser.yy"
    9064     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9065     break;
    9066 
    9067   case 728:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2757 "parser.yy"
    9071     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9072     break;
    9073 
    9074   case 729:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2759 "parser.yy"
    9078     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9079     break;
    9080 
    9081   case 731:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2786 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9086     break;
    9087 
    9088   case 735:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2797 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9093     break;
    9094 
    9095   case 736:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2799 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9100     break;
    9101 
    9102   case 737:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2801 "parser.yy"
    9106     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9107     break;
    9108 
    9109   case 738:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2803 "parser.yy"
    9113     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9114     break;
    9115 
    9116   case 739:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2805 "parser.yy"
    9120     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9121     break;
    9122 
    9123   case 740:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2807 "parser.yy"
    9127     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9128     break;
    9129 
    9130   case 741:
    9131 
    9132 /* Line 1806 of yacc.c  */
    9133 #line 2814 "parser.yy"
    9134     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9135     break;
    9136 
    9137   case 742:
     9106  case 743:
    91389107
    91399108/* Line 1806 of yacc.c  */
    91409109#line 2816 "parser.yy"
    9141     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9142     break;
    9143 
    9144   case 743:
    9145 
    9146 /* Line 1806 of yacc.c  */
    9147 #line 2818 "parser.yy"
    9148     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9110    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91499111    break;
    91509112
     
    91529114
    91539115/* Line 1806 of yacc.c  */
    9154 #line 2820 "parser.yy"
    9155     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9116#line 2821 "parser.yy"
     9117    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91569118    break;
    91579119
     
    91599121
    91609122/* Line 1806 of yacc.c  */
    9161 #line 2822 "parser.yy"
    9162     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9123#line 2823 "parser.yy"
     9124    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91639125    break;
    91649126
     
    91669128
    91679129/* Line 1806 of yacc.c  */
    9168 #line 2824 "parser.yy"
    9169     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9170     break;
    9171 
    9172   case 747:
    9173 
    9174 /* Line 1806 of yacc.c  */
    9175 #line 2829 "parser.yy"
    9176     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9177     break;
    9178 
    9179   case 748:
    9180 
    9181 /* Line 1806 of yacc.c  */
    9182 #line 2834 "parser.yy"
    9183     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     9130#line 2825 "parser.yy"
     9131    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91849132    break;
    91859133
     
    91879135
    91889136/* Line 1806 of yacc.c  */
    9189 #line 2836 "parser.yy"
    9190     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     9137#line 2849 "parser.yy"
     9138    { (yyval.en) = 0; }
    91919139    break;
    91929140
     
    91949142
    91959143/* Line 1806 of yacc.c  */
    9196 #line 2838 "parser.yy"
    9197     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9198     break;
    9199 
    9200   case 753:
    9201 
    9202 /* Line 1806 of yacc.c  */
    9203 #line 2862 "parser.yy"
    9204     { (yyval.en) = 0; }
    9205     break;
    9206 
    9207   case 754:
    9208 
    9209 /* Line 1806 of yacc.c  */
    9210 #line 2864 "parser.yy"
     9144#line 2851 "parser.yy"
    92119145    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    92129146    break;
     
    92159149
    92169150/* Line 1806 of yacc.c  */
    9217 #line 9218 "Parser/parser.cc"
     9151#line 9152 "Parser/parser.cc"
    92189152      default: break;
    92199153    }
     
    94469380
    94479381/* Line 2067 of yacc.c  */
    9448 #line 2867 "parser.yy"
     9382#line 2854 "parser.yy"
    94499383
    94509384// ----end of grammar----
  • src/Parser/parser.h

    r7bf7fb9 rd1625f8  
    271271        DeclarationNode::TypeClass tclass;
    272272        StatementNode *sn;
    273         ConstantNode *constant;
     273        ConstantExpr *constant;
    274274        LabelNode *label;
    275275        InitializerNode *in;
  • src/Parser/parser.yy

    r7bf7fb9 rd1625f8  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 09:37:48 2016
    13 // Update Count     : 1764
     12// Last Modified On : Tue Aug  9 12:59:11 2016
     13// Update Count     : 1821
    1414//
    1515
     
    121121        DeclarationNode::TypeClass tclass;
    122122        StatementNode *sn;
    123         ConstantNode *constant;
     123        ConstantExpr *constant;
    124124        LabelNode *label;
    125125        InitializerNode *in;
     
    133133
    134134// expressions
    135 %type<constant> constant
     135%type<en> constant
    136136%type<en> tuple                                                 tuple_expression_list
    137137%type<op> ptrref_operator                               unary_operator                          assignment_operator
     
    146146%type<en> asm_operands_opt asm_operands_list asm_operand
    147147%type<label> label_list
    148 %type<constant> asm_clobbers_list_opt
     148%type<en> asm_clobbers_list_opt
    149149%type<flag> asm_volatile_opt
    150150
     
    309309constant:
    310310                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    311 INTEGERconstant                                                                 { $$ = build_constantInteger( *$1 ); }
    312         | FLOATINGconstant                                                      { $$ = build_constantFloat( *$1 ); }
    313         | CHARACTERconstant                                                     { $$ = build_constantChar( *$1 ); }
     311INTEGERconstant                                                                 { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
     312        | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
     313        | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( *$1 ) ); }
    314314        ;
    315315
     
    339339        | string_literal_list STRINGliteral
    340340                {
    341                         appendStr( $1->get_expr()->get_constant()->get_value(), $2 );
     341                        appendStr( $1->get_constant()->get_value(), $2 );
    342342                        delete $2;                                                                      // allocated by lexer
    343343                        $$ = $1;
     
    349349primary_expression:
    350350        IDENTIFIER                                                                                      // typedef name cannot be used as a variable name
    351                 { $$ = new VarRefNode( $1 ); }
     351                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    352352        | zero_one
    353                 { $$ = new VarRefNode( $1 ); }
     353                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    354354        | '(' comma_expression ')'
    355355                { $$ = $2; }
    356356        | '(' compound_statement ')'                                            // GCC, lambda expression
    357                 { $$ = new ValofExprNode( $2 ); }
     357        { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
    358358        ;
    359359
     
    365365                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
    366366                // equivalent to the old x[i,j].
    367                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Index, $1, $4 ) ); }
     367                { $$ = new ExpressionNode( build_binary_val( OperKinds::Index, $1, $4 ) ); }
    368368        | postfix_expression '(' argument_expression_list ')'
    369                 { $$ = new CompositeExprNode( build_func( $1, $3 ) ); }
     369                { $$ = new ExpressionNode( build_func( $1, $3 ) ); }
    370370        // ambiguity with .0 so space required after field-selection, e.g.
    371371                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    372372        | postfix_expression '.' no_attr_identifier
    373                 { $$ = new CompositeExprNode( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }
     373                { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
    374374        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    375375        | postfix_expression ARROW no_attr_identifier
    376                 { $$ = new CompositeExprNode( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }
     376                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
    377377        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    378378        | postfix_expression ICR
    379                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }
     379                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }
    380380        | postfix_expression DECR
    381                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
     381                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
    382382        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    383                 { $$ = new CompoundLiteralNode( $2, new InitializerNode( $5, true ) ); }
     383                { $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
    384384        | postfix_expression '{' argument_expression_list '}' // CFA
    385385                {
    386386                        Token fn;
    387387                        fn.str = new std::string( "?{}" ); // location undefined
    388                         $$ = new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) ) );
     388                        $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_link( $3 ) ) );
    389389                }
    390390        ;
     
    400400                { $$ = 0; }                                                                             // use default argument
    401401        | assignment_expression
    402         | no_attr_identifier ':' assignment_expression
    403                 { $$ = $3->set_argName( $1 ); }
    404                 // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient
    405                 // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    406                 // with an appropriate semantic check.
    407         | '[' push assignment_expression pop ']' ':' assignment_expression
    408                 { $$ = $7->set_argName( $3 ); }
    409         | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    410                 { $$ = $9->set_argName( new CompositeExprNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ) ); }
    411402        ;
    412403
     
    418409field:                                                                                                  // CFA, tuple field selector
    419410        no_attr_identifier
    420                 { $$ = new VarRefNode( $1 ); }
     411                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    421412        // ambiguity with .0 so space required after field-selection, e.g.
    422413                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    423414        | no_attr_identifier '.' field
    424                 { $$ = new CompositeExprNode( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }
     415                { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); }
    425416        | no_attr_identifier '.' '[' push field_list pop ']'
    426                 { $$ = new CompositeExprNode( build_fieldSel( $5, new VarRefNode( $1 ) ) ); }
     417                { $$ = new ExpressionNode( build_fieldSel( $5, build_varref( $1 ) ) ); }
    427418        | no_attr_identifier ARROW field
    428                 { $$ = new CompositeExprNode( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }
     419                { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); }
    429420        | no_attr_identifier ARROW '[' push field_list pop ']'
    430                 { $$ = new CompositeExprNode( build_pfieldSel( $5, new VarRefNode( $1 ) ) ); }
     421                { $$ = new ExpressionNode( build_pfieldSel( $5, build_varref( $1 ) ) ); }
    431422        ;
    432423
     
    438429                { $$ = $1; }
    439430        | string_literal_list
    440                 { $$ = $1; }
     431                { $$ = new ExpressionNode( $1 ); }
    441432        | EXTENSION cast_expression                                                     // GCC
    442433                { $$ = $2->set_extension( true ); }
     
    448439                        switch ( $1 ) {
    449440                          case OperKinds::AddressOf:
    450                                 $$ = new CompositeExprNode( build_addressOf( $2 ) );
     441                                $$ = new ExpressionNode( build_addressOf( $2 ) );
    451442                                break;
    452443                          case OperKinds::PointTo:
    453                                 $$ = new CompositeExprNode( build_unary_val( $1, $2 ) );
     444                                $$ = new ExpressionNode( build_unary_val( $1, $2 ) );
    454445                                break;
    455446                          default:
     
    458449                }
    459450        | unary_operator cast_expression
    460                         { $$ = new CompositeExprNode( build_unary_val( $1, $2 ) ); }
     451                { $$ = new ExpressionNode( build_unary_val( $1, $2 ) ); }
    461452        | ICR unary_expression
    462                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::Incr, $2 ) ); }
     453                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Incr, $2 ) ); }
    463454        | DECR unary_expression
    464                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }
     455                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }
    465456        | SIZEOF unary_expression
    466                 { $$ = new CompositeExprNode( build_sizeOf( $2 ) ); }
     457                { $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); }
    467458        | SIZEOF '(' type_name_no_function ')'
    468                 { $$ = new CompositeExprNode( build_sizeOf( new TypeValueNode( $3 ) ) ); }
     459                { $$ = new ExpressionNode( build_sizeOftype( $3 ) ); }
     460        | ALIGNOF unary_expression                                                      // GCC, variable alignment
     461                { $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); }
     462        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
     463                { $$ = new ExpressionNode( build_alignOftype( $3 ) ); }
    469464        | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
    470                 { $$ = new CompositeExprNode( build_offsetOf( new TypeValueNode( $3 ), new VarRefNode( $5 ) ) ); }
     465                { $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
    471466        | ATTR_IDENTIFIER
    472                 { $$ = new CompositeExprNode( build_attr( new VarRefNode( $1 ) ) ); }
     467                { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), nullptr ) ); }
     468        | ATTR_IDENTIFIER '(' argument_expression ')'
     469                { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), $3 ) ); }
    473470        | ATTR_IDENTIFIER '(' type_name ')'
    474                 { $$ = new CompositeExprNode( build_attr( new VarRefNode( $1 ), new TypeValueNode( $3 ) ) ); }
    475         | ATTR_IDENTIFIER '(' argument_expression ')'
    476                 { $$ = new CompositeExprNode( build_attr( new VarRefNode( $1 ), $3 ) ); }
    477         | ALIGNOF unary_expression                                                      // GCC, variable alignment
    478                 { $$ = new CompositeExprNode( build_alignOf( $2 ) ); }
    479         | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    480                 { $$ = new CompositeExprNode( build_alignOf( new TypeValueNode( $3 ) ) ); }
     471                { $$ = new ExpressionNode( build_attrtype( build_varref( $1 ), $3 ) ); }
    481472//      | ANDAND IDENTIFIER                                                                     // GCC, address of label
    482 //              { $$ = new CompositeExprNode( new OperatorNode( OperKinds::LabelAddress ), new VarRefNode( $2, true ) ); }
     473//              { $$ = new ExpressionNode( new OperatorNode( OperKinds::LabelAddress ), new ExpressionNode( build_varref( $2, true ) ); }
    483474        ;
    484475
     
    500491        unary_expression
    501492        | '(' type_name_no_function ')' cast_expression
    502                 { $$ = new CompositeExprNode( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     493                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    503494        | '(' type_name_no_function ')' tuple
    504                 { $$ = new CompositeExprNode( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     495                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    505496        ;
    506497
     
    508499        cast_expression
    509500        | multiplicative_expression '*' cast_expression
    510                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); }
     501                { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); }
    511502        | multiplicative_expression '/' cast_expression
    512                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Div, $1, $3 ) ); }
     503                { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); }
    513504        | multiplicative_expression '%' cast_expression
    514                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }
     505                { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }
    515506        ;
    516507
     
    518509        multiplicative_expression
    519510        | additive_expression '+' multiplicative_expression
    520                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); }
     511                { $$ = new ExpressionNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); }
    521512        | additive_expression '-' multiplicative_expression
    522                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); }
     513                { $$ = new ExpressionNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); }
    523514        ;
    524515
     
    526517        additive_expression
    527518        | shift_expression LS additive_expression
    528                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LShift, $1, $3 ) ); }
     519                { $$ = new ExpressionNode( build_binary_val( OperKinds::LShift, $1, $3 ) ); }
    529520        | shift_expression RS additive_expression
    530                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::RShift, $1, $3 ) ); }
     521                { $$ = new ExpressionNode( build_binary_val( OperKinds::RShift, $1, $3 ) ); }
    531522        ;
    532523
     
    534525        shift_expression
    535526        | relational_expression '<' shift_expression
    536                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); }
     527                { $$ = new ExpressionNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); }
    537528        | relational_expression '>' shift_expression
    538                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); }
     529                { $$ = new ExpressionNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); }
    539530        | relational_expression LE shift_expression
    540                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LEThan, $1, $3 ) ); }
     531                { $$ = new ExpressionNode( build_binary_val( OperKinds::LEThan, $1, $3 ) ); }
    541532        | relational_expression GE shift_expression
    542                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::GEThan, $1, $3 ) ); }
     533                { $$ = new ExpressionNode( build_binary_val( OperKinds::GEThan, $1, $3 ) ); }
    543534        ;
    544535
     
    546537        relational_expression
    547538        | equality_expression EQ relational_expression
    548                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Eq, $1, $3 ) ); }
     539                { $$ = new ExpressionNode( build_binary_val( OperKinds::Eq, $1, $3 ) ); }
    549540        | equality_expression NE relational_expression
    550                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Neq, $1, $3 ) ); }
     541                { $$ = new ExpressionNode( build_binary_val( OperKinds::Neq, $1, $3 ) ); }
    551542        ;
    552543
     
    554545        equality_expression
    555546        | AND_expression '&' equality_expression
    556                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); }
     547                { $$ = new ExpressionNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); }
    557548        ;
    558549
     
    560551        AND_expression
    561552        | exclusive_OR_expression '^' AND_expression
    562                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Xor, $1, $3 ) ); }
     553                { $$ = new ExpressionNode( build_binary_val( OperKinds::Xor, $1, $3 ) ); }
    563554        ;
    564555
     
    566557        exclusive_OR_expression
    567558        | inclusive_OR_expression '|' exclusive_OR_expression
    568                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::BitOr, $1, $3 ) ); }
     559                { $$ = new ExpressionNode( build_binary_val( OperKinds::BitOr, $1, $3 ) ); }
    569560        ;
    570561
     
    572563        inclusive_OR_expression
    573564        | logical_AND_expression ANDAND inclusive_OR_expression
    574                 { $$ = new CompositeExprNode( build_and_or( $1, $3, true ) ); }
     565                { $$ = new ExpressionNode( build_and_or( $1, $3, true ) ); }
    575566        ;
    576567
     
    578569        logical_AND_expression
    579570        | logical_OR_expression OROR logical_AND_expression
    580                 { $$ = new CompositeExprNode( build_and_or( $1, $3, false ) ); }
     571                { $$ = new ExpressionNode( build_and_or( $1, $3, false ) ); }
    581572        ;
    582573
     
    584575        logical_OR_expression
    585576        | logical_OR_expression '?' comma_expression ':' conditional_expression
    586                 { $$ = new CompositeExprNode( build_cond( $1, $3, $5 ) ); }
     577                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    587578                // FIX ME: this hack computes $1 twice
    588579        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    589                 { $$ = new CompositeExprNode( build_cond( $1, $1, $4 ) ); }
     580                { $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
    590581        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    591                 { $$ = new CompositeExprNode( build_cond( $1, $3, $5 ) ); }
     582                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    592583        ;
    593584
     
    600591        conditional_expression
    601592        | unary_expression assignment_operator assignment_expression
    602                 { $$ = new CompositeExprNode( build_binary_ptr( $2, $1, $3 ) ); }
     593                { $$ = new ExpressionNode( build_binary_ptr( $2, $1, $3 ) ); }
    603594        | tuple assignment_opt                                                          // CFA, tuple expression
    604                 { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
     595                { $$ = ( $2 == 0 ) ? $1 : new ExpressionNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
    605596        ;
    606597
    607598assignment_expression_opt:
    608599        // empty
    609                 { $$ = new NullExprNode; }
     600                { $$ = nullptr; }
    610601        | assignment_expression
    611602        ;
     
    629620                // comma_expression in new_identifier_parameter_array and new_abstract_array
    630621        '[' ']'
    631                 { $$ = new CompositeExprNode( build_tuple() ); }
     622                { $$ = new ExpressionNode( build_tuple() ); }
    632623        | '[' push assignment_expression pop ']'
    633                 { $$ = new CompositeExprNode( build_tuple( $3 ) ); }
     624                { $$ = new ExpressionNode( build_tuple( $3 ) ); }
    634625        | '[' push ',' tuple_expression_list pop ']'
    635                 { $$ = new CompositeExprNode( build_tuple( (ExpressionNode *)(new NullExprNode)->set_link( $4 ) ) ); }
     626                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( $4 ) ) ); }
    636627        | '[' push assignment_expression ',' tuple_expression_list pop ']'
    637                 { $$ = new CompositeExprNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ); }
     628                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ); }
    638629        ;
    639630
     
    647638        assignment_expression
    648639        | comma_expression ',' assignment_expression
    649                 { $$ = new CompositeExprNode( build_comma( $1, $3 ) ); }
     640                { $$ = new ExpressionNode( build_comma( $1, $3 ) ); }
    650641        ;
    651642
     
    671662                        Token fn;
    672663                        fn.str = new std::string( "^?{}" ); // location undefined
    673                         $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ), 0 );
     664                        $$ = new StatementNode( StatementNode::Exp, new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ), 0 );
    674665                }
    675666        ;
     
    759750        constant_expression                                                     { $$ = $1; }
    760751        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    761                 { $$ = new CompositeExprNode( build_range( $1, $3 ) ); }
     752                { $$ = new ExpressionNode( build_range( $1, $3 ) ); }
    762753        | subrange                                                                                      // CFA, subrange
    763754        ;
     
    841832        | declaration comma_expression_opt ';' comma_expression_opt // C99
    842833                { $$ = new ForCtlExprNode( $1, $2, $4 ); }
    843         ;
     834        ;
    844835
    845836jump_statement:
     
    979970asm_operand:                                                                                    // GCC
    980971        string_literal_list '(' constant_expression ')'
    981                 { $$ = new AsmExprNode( 0, $1, $3 ); }
     972                { $$ = new ExpressionNode( build_asm( 0, $1, $3 ) ); }
    982973        | '[' constant_expression ']' string_literal_list '(' constant_expression ')'
    983                 { $$ = new AsmExprNode( $2, $4, $6 ); }
     974        { $$ = new ExpressionNode( build_asm( $2, $4, $6 ) ); }
    984975        ;
    985976
     
    988979                { $$ = 0; }                                                                             // use default argument
    989980        | string_literal_list
    990                 { $$ = $1; }
     981                { $$ = new ExpressionNode( $1 ); }
    991982        | asm_clobbers_list_opt ',' string_literal_list
    992                 { $$ = (ConstantNode *)$1->set_link( $3 ); }
     983        { $$ = (ExpressionNode *)$1->set_link( new ExpressionNode( $3 ) ); }
    993984        ;
    994985
     
    17771768        designator_list ':'                                                                     // C99, CFA uses ":" instead of "="
    17781769        | no_attr_identifier_or_type_name ':'                           // GCC, field name
    1779                 { $$ = new VarRefNode( $1 ); }
     1770                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    17801771        ;
    17811772
     
    17831774        designator
    17841775        | designator_list designator
    1785                 { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
    1786         //| designator_list designator                                          { $$ = new CompositeExprNode( $1, $2 ); }
     1776                { $$ = (ExpressionNode *)( $1->set_link( $2 ) ); }
     1777        //| designator_list designator                                          { $$ = new ExpressionNode( $1, $2 ); }
    17871778        ;
    17881779
    17891780designator:
    1790                 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
    1791                 // allowed => semantic check
    1792         FLOATINGconstant
    1793                 { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
    1794         | '.' no_attr_identifier_or_type_name                           // C99, field name
    1795                 { $$ = new DesignatorNode( new VarRefNode( $2 ) ); }
     1781        '.' no_attr_identifier_or_type_name                                     // C99, field name
     1782                { $$ = new ExpressionNode( build_varref( $2 ) ); }
    17961783        | '[' push assignment_expression pop ']'                        // C99, single array element
    17971784                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
    1798                 { $$ = new DesignatorNode( $3, true ); }
     1785                { $$ = $3; }
    17991786        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    1800                 { $$ = new DesignatorNode( $3, true ); }
     1787                { $$ = $3; }
    18011788        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1802                 { $$ = new DesignatorNode( new CompositeExprNode( build_range( $3, $5 ) ), true ); }
     1789                { $$ = new ExpressionNode( build_range( $3, $5 ) ); }
    18031790        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    1804                 { $$ = new DesignatorNode( $4 ); }
     1791                { $$ = $4; }
    18051792        ;
    18061793
     
    18901877type_name_list:                                                                                 // CFA
    18911878        type_name
    1892                 { $$ = new TypeValueNode( $1 ); }
     1879                { $$ = new ExpressionNode( build_typevalue( $1 ) ); }
    18931880        | assignment_expression
    18941881        | type_name_list ',' type_name
    1895                 { $$ = (ExpressionNode *)( $1->set_link( new TypeValueNode( $3 ))); }
     1882                { $$ = (ExpressionNode *)( $1->set_link( new ExpressionNode( build_typevalue( $3 ) ) ) ); }
    18961883        | type_name_list ',' assignment_expression
    18971884                { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     
    21292116subrange:
    21302117        constant_expression '~' constant_expression                     // CFA, integer subrange
    2131                 { $$ = new CompositeExprNode( build_range( $1, $3 ) ); }
     2118                { $$ = new ExpressionNode( build_range( $1, $3 ) ); }
    21322119        ;
    21332120
  • src/SynTree/Label.h

    r7bf7fb9 rd1625f8  
    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
Note: See TracChangeset for help on using the changeset viewer.