Changeset 8139


Ignore:
Timestamp:
2017-06-05T12:05:17+02:00 (3 years ago)
Author:
timgraham
Message:

Updates to conv library as received from Laurent - required for vertical refinement

Location:
branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/DiversListe.c

    r5656 r8139  
    479479        strcpy(newvar->var->v_nomvar,name); 
    480480        strcpy(newvar->var->v_modulename,curmodulename); 
     481        if (strcasecmp(curmodulename,"")) 
     482        { 
     483        newvar->var->v_module=1; 
     484        } 
    481485        strcpy(newvar->var->v_subroutinename,subroutinename); 
    482486        strcpy(newvar->var->v_commoninfile,cur_filename); 
     
    522526 
    523527            Init_Variable(newvar->var); 
    524  
    525528            newvar->var->v_save = 1; 
    526529            strcpy(newvar->var->v_nomvar,parcours->var->v_nomvar); 
     530            strcpy(newvar->var->v_dimchar,parcours->var->v_dimchar); 
    527531            strcpy(newvar->var->v_modulename,curmodulename); 
    528532            strcpy(newvar->var->v_subroutinename,subroutinename); 
     
    531535 
    532536            newvar->var->v_nbdim = parcours->var->v_nbdim; 
     537            strcpy(newvar->var->v_typevar,parcours->var->v_typevar); 
     538            strcpy(newvar->var->v_precision,parcours->var->v_precision); 
    533539            newvar->var->v_catvar = parcours->var->v_catvar; 
    534540            newvar->var->v_dimension = parcours->var->v_dimension; 
    535541            newvar->var->v_dimensiongiven=parcours->var->v_dimensiongiven; 
     542            newvar->var->v_allocatable = parcours->var->v_allocatable; 
     543            newvar->var->v_initialvalue = parcours->var->v_initialvalue; 
     544            newvar->var->v_initialvalue_array = parcours->var->v_initialvalue_array; 
    536545            newvar->suiv = List_Save_Var; 
    537546            List_Save_Var = newvar; 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/Makefile

    r5656 r8139  
    6262 
    6363clean: 
    64 #  $(MAKE) -f Makefile.lex clean 
    6564   $(RM) *.o conv 
    6665    
     66clean-all: clean 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/SubLoopCreation.c

    r5656 r8139  
    5858      if ( todebug == 1 ) printf("> enter in WriteBeginof_SubLoop : IsTabvarsUseInArgument_0() == 1\n"); 
    5959      /* we should add the use agrif_uti l if it is necessary                 */ 
     60      if (todebug == 1) fprintf(fortran_out,"\n      !DEBUG: Avant WriteHeadofSubroutineLoop\n"); 
    6061      WriteHeadofSubroutineLoop(); 
     62      if (todebug == 1) fprintf(fortran_out,"      !DEBUG: Apres WriteHeadofSubroutineLoop\n"); 
     63      fflush(fortran_out); 
     64      if (todebug == 1) { 
     65      fprintf(fortran_out,"      !DEBUG: Avant WriteUsemoduleDeclaration\n"); 
     66      } 
     67       
    6168      WriteUsemoduleDeclaration(subroutinename); 
    6269      if ( ImplicitNoneInSubroutine() == 1 ) fprintf(fortran_out, "      implicit none\n"); 
    6370      WriteIncludeDeclaration(fortran_out); 
     71      if (todebug == 1) fprintf(fortran_out,"      !DEBUG: Avant WriteIncludeDeclaration\n"); 
    6472      /*                                                                      */ 
    6573      /* We should write once the declaration of tables (extract              */ 
     
    7785      AddUseAgrifUtil_0(fortran_out); 
    7886      WriteUsemoduleDeclaration(subroutinename); 
     87      if ( ImplicitNoneInSubroutine() == 1 ) fprintf(fortran_out, "      implicit none\n"); 
    7988      WriteIncludeDeclaration(fortran_out); 
    80       if ( ImplicitNoneInSubroutine() == 1 ) fprintf(fortran_out, "      implicit none\n"); 
    8189      WriteLocalParamDeclaration(fortran_out); 
    8290      WriteArgumentDeclaration_beforecall(); 
     91      if (todebug == 1) fprintf(fortran_out,"      !DEBUG: Avant WriteFunctionDeclaration\n"); 
    8392      if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(fortran_out, 1); 
    8493/*    writesub_loopdeclaration_scalar(List_SubroutineArgument_Var,fortran_out); 
     
    102111/*                                                                            */ 
    103112/******************************************************************************/ 
    104 void WriteVariablelist_subloop(char *ligne) 
     113void WriteVariablelist_subloop(char **ligne, size_t *line_length) 
    105114{ 
    106115   listvar *parcours; 
     
    117126      if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename) ) 
    118127      { 
    119          if ( didvariableadded == 1 )   strcat(ligne,","); 
    120          strcat(ligne,parcours->var->v_nomvar); 
     128         if ( didvariableadded == 1 )   strcat(*ligne,","); 
     129         if ( (strlen(*ligne)+strlen(parcours->var->v_nomvar)+100) > *line_length ) 
     130         { 
     131            *line_length += LONG_M; 
     132            *ligne = realloc( *ligne, *line_length*sizeof(char) ); 
     133         } 
     134         strcat(*ligne,parcours->var->v_nomvar); 
    121135         didvariableadded = 1; 
    122136      } 
     
    128142      if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename) ) 
    129143      { 
    130          if ( didvariableadded == 1 )   strcat(ligne,","); 
    131          strcat(ligne,parcours->var->v_nomvar); 
     144         if ( didvariableadded == 1 )   strcat(*ligne,","); 
     145         if ( (strlen(*ligne)+strlen(parcours->var->v_nomvar)+100) > *line_length ) 
     146         { 
     147            *line_length += LONG_M; 
     148            *ligne = realloc( *ligne, *line_length*sizeof(char) ); 
     149         } 
     150         strcat(*ligne,parcours->var->v_nomvar); 
    132151         didvariableadded = 1; 
    133152      } 
     
    152171/*                                                                            */ 
    153172/******************************************************************************/ 
    154 void WriteVariablelist_subloop_Call(char **ligne, size_t line_length) 
     173void WriteVariablelist_subloop_Call(char **ligne, size_t *line_length) 
    155174{ 
    156175   listvar *parcours; 
    157176   char ligne2[LONG_M]; 
    158177   int i; 
    159    size_t cur_length; 
    160  
    161    cur_length = line_length; 
    162178 
    163179   if ( todebug == 1 ) printf("> enter in WriteVariablelist_subloop_Call\n"); 
     
    170186      /*    in the output file                                                */ 
    171187      if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename)  && 
    172            (parcours->var->v_pointerdeclare == 0 || !strcasecmp(parcours->var->v_typevar,"type")) 
     188           (parcours->var->v_pointerdeclare >= 0 || !strcasecmp(parcours->var->v_typevar,"type")) 
    173189         ) 
    174190      { 
    175191         if ( didvariableadded == 1 )   strcat(*ligne,","); 
    176192         const char *vres = vargridcurgridtabvars(parcours->var, 0); 
    177          if ( (strlen(*ligne)+strlen(vres)+100) > cur_length ) 
     193         if ( (strlen(*ligne)+strlen(parcours->var->v_nomvar)+100) > *line_length ) 
    178194         { 
    179             cur_length += LONG_M; 
    180             *ligne = realloc( *ligne, cur_length*sizeof(char) ); 
     195            *line_length += LONG_M; 
     196            *ligne = realloc( *ligne, *line_length*sizeof(char) ); 
    181197         } 
    182198         strcat(*ligne, vres); 
     
    186202         if (  SubloopScalar != 0 && 
    187203               ( 
    188                (parcours->var->v_pointerdeclare == 0 || !strcasecmp(parcours->var->v_typevar,"type"))) && 
     204               (parcours->var->v_pointerdeclare >= 0 || !strcasecmp(parcours->var->v_typevar,"type"))) && 
    189205               parcours->var->v_nbdim != 0 ) 
    190206         { 
     
    231247/*                                                                            */ 
    232248/******************************************************************************/ 
    233 void WriteVariablelist_subloop_Def(char *ligne) 
     249void WriteVariablelist_subloop_Def(char **ligne, size_t *line_length) 
    234250{ 
    235251   listvar *parcours; 
     
    244260      /*    in the output file                                                */ 
    245261      if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename)  && 
    246            (parcours->var->v_pointerdeclare == 0 || !strcasecmp(parcours->var->v_typevar,"type")) ) 
     262           (parcours->var->v_pointerdeclare >= 0 || !strcasecmp(parcours->var->v_typevar,"type")) ) 
    247263      { 
    248          if ( didvariableadded == 1 )   strcat(ligne,","); 
    249          strcat(ligne,parcours->var->v_nomvar); 
     264         if ( didvariableadded == 1 )   strcat(*ligne,","); 
     265         if ( (strlen(*ligne)+strlen(parcours->var->v_nomvar)+100) > *line_length ) 
     266         { 
     267            *line_length += LONG_M; 
     268            *ligne = realloc( *ligne, *line_length*sizeof(char) ); 
     269         } 
     270         strcat(*ligne,parcours->var->v_nomvar); 
    250271         didvariableadded = 1; 
    251272      } 
    252273      parcours = parcours -> suiv; 
    253274   } 
    254    Save_Length(ligne,41); 
     275 
    255276   if ( todebug == 1 ) printf("<   out of WriteVariablelist_subloop_Def\n"); 
    256277} 
     
    272293void WriteHeadofSubroutineLoop() 
    273294{ 
    274    char ligne[LONG_M]; 
     295   char *ligne; 
    275296   FILE * subloop; 
    276  
    277    if ( todebug == 1 ) printf("> enter in WriteHeadofSubroutineLoop\n"); 
     297   size_t line_length; 
     298 
     299   ligne = (char*) calloc(LONG_M, sizeof(char)); 
     300   line_length = LONG_M; 
     301 
     302   if ( todebug == 1 ) printf("> enter in WriteHeadofSubroutineLoop subroutine %s\n",subroutinename); 
    278303   tofich(fortran_out,"\n",1); 
     304 
    279305   /* Open this newfile                                                       */ 
    280306   sprintf(ligne,"Sub_Loop_%s.h",subroutinename); 
     
    283309   if (isrecursive) sprintf(ligne,"recursive subroutine Sub_Loop_%s(",subroutinename); 
    284310   else             sprintf(ligne,"subroutine Sub_Loop_%s(",subroutinename); 
     311 
    285312   /*                                                                         */ 
    286    WriteVariablelist_subloop(ligne); 
    287    WriteVariablelist_subloop_Def(ligne); 
     313   if (todebug == 1) fprintf(subloop,"      !DEBUG: Avant WriteVariablelist_subloop\n"); 
     314   WriteVariablelist_subloop(&ligne,&line_length); 
     315   WriteVariablelist_subloop_Def(&ligne,&line_length); 
    288316   /*                                                                         */ 
    289317   strcat(ligne,")"); 
    290318   tofich(subloop,ligne,1); 
     319 
    291320   /* if USE agrif_Uti l should be add                                        */ 
     321   if (todebug == 1) fprintf(subloop,"      !DEBUG: Avant AddUseAgrifUtil_0\n"); 
    292322   AddUseAgrifUtil_0(subloop); 
     323 
    293324   /*                                                                         */ 
     325   if (todebug == 1) fprintf(subloop,"      !DEBUG: Apres AddUseAgrifUtil_0\n"); 
    294326   oldfortran_out = fortran_out; 
    295327   fortran_out = subloop; 
     328    
    296329   if ( todebug == 1 ) printf("<   out of WriteHeadofSubroutineLoop\n"); 
     330    
     331   free(ligne); 
    297332} 
    298333 
     
    313348{ 
    314349   char *ligne; 
     350   size_t line_length; 
    315351 
    316352   if ( firstpass == 1 )    return; 
     
    318354 
    319355   ligne = (char*) calloc(LONG_M, sizeof(char)); 
     356   line_length = LONG_M; 
    320357 
    321358   if ( IsTabvarsUseInArgument_0() == 1 ) 
     
    331368 
    332369      AddUseAgrifUtilBeforeCall_0(fortran_out); 
     370            
    333371      WriteArgumentDeclaration_beforecall(); 
     372      if (todebug == 1) fprintf(fortran_out,"      !DEBUG: Avant WriteFunctionDeclaration\n"); 
     373 
    334374      if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(fortran_out, 0); 
    335375      if ( !strcasecmp(subofagrifinitgrids,subroutinename) ) 
     
    339379      sprintf(ligne,"  call Sub_Loop_%s(",subroutinename); 
    340380      /* Write the list of the local variables used in this new subroutine    */ 
    341       WriteVariablelist_subloop(ligne); 
     381      WriteVariablelist_subloop(&ligne,&line_length); 
    342382      /* Write the list of the global tables used in this new subroutine      */ 
    343383      /*    in doloop                                                         */ 
    344       WriteVariablelist_subloop_Call(&ligne, LONG_M); 
     384      WriteVariablelist_subloop_Call(&ligne, &line_length); 
    345385      /* Close the parenthesis of the new subroutine called                   */ 
    346386      strcat(ligne,")\n"); 
     
    358398    oldfortran_out = (FILE *)NULL; 
    359399    if ( todebug == 1 ) printf("<   out of closeandcallsubloopandincludeit_0\n"); 
     400     
     401    free(ligne); 
    360402} 
    361403 
     
    363405{ 
    364406   char *ligne; 
     407   size_t line_length; 
    365408 
    366409   if ( todebug == 1 ) printf("> enter in closeandcallsubloop_contains_0\n"); 
     
    368411   { 
    369412      ligne = (char*) calloc(LONG_M, sizeof(char)); 
     413      line_length = LONG_M; 
    370414      RemoveWordCUR_0(fortran_out,9);   // Remove word 'contains' 
    371415      tofich(fortran_out,"\n",1); 
     
    376420 
    377421      AddUseAgrifUtilBeforeCall_0(fortran_out); 
    378  
    379422      if ( ImplicitNoneInSubroutine() == 1 ) fprintf(fortran_out, "      implicit none\n"); 
    380423      WriteLocalParamDeclaration(fortran_out); 
     424            printf("ICI3\n"); 
    381425      WriteArgumentDeclaration_beforecall(); 
     426      if (todebug == 1) fprintf(fortran_out,"      !DEBUG: Avant WriteFunctionDeclaration\n"); 
    382427      if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(fortran_out, 0); 
    383428/*      WriteSubroutineDeclaration(0);*/ 
     
    388433      sprintf(ligne,"  call Sub_Loop_%s(",subroutinename); 
    389434      /* Write the list of the local variables used in this new subroutine    */ 
    390       WriteVariablelist_subloop(ligne); 
     435      WriteVariablelist_subloop(&ligne,&line_length); 
    391436      /* Write the list of the global tables used in this new subroutine      */ 
    392437      /*    in doloop                                                         */ 
    393       WriteVariablelist_subloop_Call(&ligne, LONG_M); 
     438      WriteVariablelist_subloop_Call(&ligne, &line_length); 
    394439      /* Close the parenthesis of the new subroutine called                   */ 
    395440      strcat(ligne,")\n"); 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilAgrif.c

    r5656 r8139  
    150150    { 
    151151        // remove the variable 
    152         RemoveWordCUR_0(fortran_out,lengthname); 
     152 //       RemoveWordCUR_0(fortran_out,lengthname); 
    153153        // then write the new name 
    154         if ( inagrifcallargument == 1 && agrif_parentcall == 0 ) 
    155             fprintf(fortran_out,"%d",newvar->var->v_indicetabvars); 
    156         else 
    157         { 
    158             if ( retour77 == 0 ) 
    159                 fprintf(fortran_out,"Agrif_%s & \n      ", tabvarsname(newvar->var)); 
    160             else 
    161             { 
    162                fprintf(fortran_out,"Agrif_%s", tabvarsname(newvar->var)); 
    163                fprintf(fortran_out," \n     & "); 
    164             } 
    165             fprintf(fortran_out,"%s",vargridcurgridtabvarswithoutAgrif_Gr(newvar->var)); 
    166         } 
     154 //        if ( inagrifcallargument == 1 && agrif_parentcall == 0 ) 
     155//             fprintf(fortran_out,"%d",newvar->var->v_indicetabvars); 
     156//         else 
     157//         { 
     158//             if ( retour77 == 0 ) 
     159//                 fprintf(fortran_out,"Agrif_%s & \n      ", tabvarsname(newvar->var)); 
     160//             else 
     161//             { 
     162//                fprintf(fortran_out,"Agrif_%s", tabvarsname(newvar->var)); 
     163//                fprintf(fortran_out," \n     & "); 
     164//             } 
     165//             fprintf(fortran_out,"%s",vargridcurgridtabvarswithoutAgrif_Gr(newvar->var)); 
     166//         } 
    167167    } 
    168168    else 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilFortran.c

    r5656 r8139  
    423423                                                                  doloopout = 1; 
    424424         else parcours = parcours->suiv; 
     425         
    425426      } 
    426427      if (  doloopout == 0 ) out = 0; 
     
    591592    out = 0; 
    592593 
     594    return (out == 0); 
     595     
    593596    if ( !strcasecmp(ident,"size") || 
    594597         !strcasecmp(ident,"if")   || 
     
    596599         !strcasecmp(ident,"min")  ) 
    597600    { 
     601    printf("ident = %s\n",ident); 
    598602        newvar = List_SubroutineDeclaration_Var; 
    599603        while ( newvar && out == 0 ) 
     
    611615            while ( newvar && out == 0 ) 
    612616            { 
     617            printf("llll = %s\n",newvar->var->v_nomvar); 
    613618                if ( !strcasecmp(ident, newvar->var->v_nomvar) ) out = 1; 
    614619                newvar = newvar -> suiv ; 
     
    617622    } 
    618623    return (out == 0); 
     624} 
     625 
     626/* removenewline */ 
     627/* REMOVE UNWANTED character */ 
     628/* from a NAME{NEWLINE77]NAME flex match */ 
     629 
     630void removenewline(char *nom) 
     631{ 
     632char temp_nom[LONG_VNAME]; 
     633int size_nom,i,j; 
     634 
     635size_nom=strlen(nom); 
     636 
     637j=0; 
     638for (i=0;i<size_nom;) 
     639{ 
     640if (nom[i]=='\n') 
     641{ 
     642/* REMOVE RETURN - blank and column 6 character */ 
     643i=i+7; 
     644} 
     645else if (nom[i]==' ' || nom[i]=='\t') 
     646{ 
     647i=i+1; 
     648} 
     649else 
     650{ 
     651temp_nom[j]=nom[i]; 
     652j++; 
     653i++; 
     654} 
     655} 
     656temp_nom[j]='\0'; 
     657 
     658strcpy(nom,temp_nom); 
    619659} 
    620660 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilListe.c

    r5656 r8139  
    5252   strcpy(var->v_subroutinename     , ""); 
    5353   strcpy(var->v_precision          , ""); 
    54    strcpy(var->v_initialvalue       , ""); 
     54   var->v_initialvalue = (listname *)NULL; 
     55   var->v_initialvalue_array = (listname *)NULL; 
     56   var->v_do_loop = NULL; 
    5557   strcpy(var->v_IntentSpec         , ""); 
    5658   strcpy(var->v_readedlistdimension, ""); 
     
    103105            newvar->suiv = l; 
    104106        } 
     107        newvar=glob; 
     108        while (newvar) 
     109        { 
     110        newvar=newvar->suiv; 
     111        } 
    105112    } 
    106113    return glob; 
     
    117124void CreateAndFillin_Curvar(const char *type, variable *curvar) 
    118125{ 
     126listname *newvar; 
     127 
    119128    if ( !strcasecmp(type, "character") && strcasecmp(CharacterSize, "") ) 
    120129    { 
     
    150159    if (InitialValueGiven == 1 ) 
    151160    { 
    152         strcpy(curvar->v_initialvalue,InitValue); 
     161    curvar->v_initialvalue=Insertname(curvar->v_initialvalue,InitValue,0); 
     162     
     163//        strcpy(curvar->v_initialvalue,InitValue); 
     164         
    153165        Save_Length(InitValue,14); 
    154166    } 
     
    481493      v = newvar->var; 
    482494      strcpy(v->v_typevar,nom); 
     495       
    483496      v->v_catvar = get_cat_var(v); 
     497 
    484498      newvar = newvar->suiv; 
    485499   } 
     
    502516   { 
    503517      v=newvar->var; 
    504       printf("nom = %s, allocatable = %d dim = %s\n",v->v_nomvar,v->v_allocatable,(v->v_dimension)->dim.last); 
    505518      newvar=newvar->suiv; 
    506519   } 
     
    564577} 
    565578 
     579int testandextractfromlist(listname **lin, char*nom) 
     580{ 
     581listname *newvar; 
     582int val_1, val_2; 
     583int return_stmt; 
     584 
     585printname(*lin); 
     586if (!(*lin)) 
     587 { 
     588  return 0; 
     589 } 
     590else 
     591 { 
     592 sscanf(nom,"%d",&val_1); 
     593 sscanf((*lin)->n_name,"%d",&val_2); 
     594 if (val_1==val_2) 
     595   { 
     596/*   newvar = *lin; 
     597   *lin = (*lin)->suiv; 
     598   free(newvar);*/ 
     599   /* continue to remove while the label stays the same */ 
     600/*   return_stmt=testandextractfromlist(lin,nom);*/ 
     601   return 1; 
     602   } 
     603 else 
     604  { 
     605  return 0; 
     606  } 
     607 } 
     608} 
     609 
     610void removefromlist(listname **lin, char*nom) 
     611{ 
     612listname *newvar,*prev; 
     613int val_1, val_2; 
     614int return_stmt; 
     615int out; 
     616 
     617printname(*lin); 
     618if (*lin) 
     619 { 
     620 sscanf(nom,"%d",&val_1); 
     621 prev=(listname *) calloc(1,sizeof(listname)); 
     622 prev->suiv=*lin; 
     623 *lin=prev; 
     624 newvar=(*lin)->suiv; 
     625 out = 0; 
     626 while (newvar && out == 0) 
     627 { 
     628 sscanf((newvar)->n_name,"%d",&val_2); 
     629 if (val_1==val_2) 
     630   { 
     631   prev->suiv=newvar->suiv; 
     632   free(newvar); 
     633   } 
     634  if (prev->suiv)  
     635    { 
     636    prev=prev->suiv; 
     637    newvar=prev->suiv; 
     638    } 
     639   else 
     640   { 
     641   out = 1; 
     642   } 
     643  } 
     644 prev=*lin; 
     645 *lin=(*lin)->suiv; 
     646 free(prev); 
     647 } 
     648} 
     649 
    566650listname *concat_listname(listname *l1, listname *l2) 
    567651{ 
     
    606690   while (newvar) 
    607691   { 
    608       printf("nom = %s \n",newvar->n_name); 
    609692      newvar=newvar->suiv; 
    610693   } 
     
    694777int get_cat_var(variable *var) 
    695778{ 
     779 
    696780    if (!strcasecmp(var->v_typevar, "CHARACTER")) 
    697781        return 1; 
     
    705789        return 0; 
    706790} 
     791 
     792void Insertdoloop(variable *var,char *do_var,char *do_begin, char *do_end, char *do_step) 
     793{ 
     794listdoloop *new_do_loop; 
     795listdoloop *tmploop; 
     796new_do_loop = (listdoloop *) calloc(1,sizeof(listdoloop)); 
     797 
     798new_do_loop->cur_do_loop = (do_loop *) calloc(1,sizeof(do_loop)); 
     799 
     800strcpy(new_do_loop->cur_do_loop->do_variable,do_var); 
     801strcpy(new_do_loop->cur_do_loop->do_begin,do_begin); 
     802strcpy(new_do_loop->cur_do_loop->do_end,do_end); 
     803strcpy(new_do_loop->cur_do_loop->do_step,do_step); 
     804new_do_loop->suiv = NULL; 
     805 
     806if (!var->v_do_loop) 
     807{ 
     808  var->v_do_loop = new_do_loop; 
     809} 
     810else 
     811{ 
     812  new_do_loop->suiv = var->v_do_loop; 
     813  var->v_do_loop = new_do_loop; 
     814       
     815//   tmploop = var->v_do_loop; 
     816//   while (tmploop->suiv) 
     817//   { 
     818//     tmploop=tmploop->suiv; 
     819//   } 
     820//   tmploop->suiv = new_do_loop ; 
     821//   } 
     822} 
     823} 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/WorkWithlistdatavariable.c

    r5656 r8139  
    7070        strcpy(ligne,values); 
    7171        
    72      strcpy(newvar->var->v_initialvalue,ligne); 
     72     newvar->var->v_initialvalue=Insertname(newvar->var->v_initialvalue,ligne,0); 
     73      
     74     // strcpy(newvar->var->v_initialvalue,ligne); 
    7375     Save_Length(ligne,14); 
    7476     newvar->suiv = NULL; 
     
    8587} 
    8688 
    87 void Add_Data_Var_Names_01 (listvar **curlist,listname *l1,listname *l2) 
     89void Add_Data_Var_Names_01 (listvar **curlist,listvar *l1,listname *l2) 
    8890{ 
    8991    listvar *newvar; 
    9092    listvar *tmpvar; 
    91     listname *tmpvar1; 
    92     listname *tmpvar2;   
     93    listvar *tmpvar1; 
     94    listname *tmpvar2; 
     95    char tempname[LONG_M]; 
    9396    variable *found_var = NULL; 
     97    int out; 
     98    size_t i = 0; 
     99    char chartmp[2]; 
    94100     
    95101    tmpvar1 = l1; 
     
    98104    while (tmpvar1) 
    99105    { 
    100         newvar = (listvar *) calloc(1,sizeof(listvar)); 
    101         newvar->var = (variable *) calloc(1,sizeof(variable)); 
    102  
    103         Init_Variable(newvar->var); 
    104  
    105         if ( inmoduledeclare == 1 ) newvar->var->v_module=1; 
    106       
    107         found_var = get_variable_in_list_from_name(List_Common_Var, tmpvar1->n_name); 
    108         if ( ! found_var )  found_var = get_variable_in_list_from_name(List_Global_Var,tmpvar1->n_name); 
    109         if ( ! found_var )  found_var = get_variable_in_list_from_name(List_SubroutineDeclaration_Var,tmpvar1->n_name); 
    110          
    111         if ( found_var && found_var->v_nbdim > 0 ) 
     106//    printf("TMPVAR 1 nomvar = %s, initialvaluearra = %s\n",tmpvar1->var->v_nomvar,tmpvar1->var->v_initialvalue_array->n_name); 
     107       strcpy(tempname,tmpvar1->var->v_nomvar); 
     108//        while ( i < strlen(tmpvar1->var->v_nomvar) ) 
     109//        { 
     110//        if (tmpvar1->var->v_nomvar[i]=='(') break; 
     111//          sprintf(chartmp,"%c",tmpvar1->var->v_nomvar[i]); 
     112//          strcat(tempname,chartmp); 
     113//          i++; 
     114//        } 
     115        found_var = get_variable_in_list_from_name(List_Common_Var, tempname); 
     116        if ( ! found_var )  found_var = get_variable_in_list_from_name(List_Global_Var,tempname); 
     117        if ( ! found_var )  found_var = get_variable_in_list_from_name(List_SubroutineDeclaration_Var,tempname); 
     118         
     119        if ( found_var && found_var->v_nbdim > 1000 ) 
    112120        { 
    113121            printf("##############################################################################################################\n"); 
     
    118126        } 
    119127         
    120         strcpy(newvar->var->v_nomvar,tmpvar1->n_name); 
     128        if (tmpvar1->var->v_initialvalue_array) 
     129        { 
     130        if ((firstpass == 1) && strcmp(tmpvar1->var->v_initialvalue_array->n_name,"")) 
     131        { 
     132        DecomposeTheName(tmpvar1->var->v_initialvalue_array->n_name); 
     133        } 
     134        } 
     135         
     136        // Search for existing newvar 
     137         
     138        tmpvar = *curlist; 
     139        out = 0; 
     140        while (tmpvar) 
     141        { 
     142        if (!strcasecmp(tempname,tmpvar->var->v_nomvar) && !strcasecmp(subroutinename,tmpvar->var->v_subroutinename) && !strcasecmp(curmodulename,tmpvar->var->v_modulename) && !strcasecmp(cur_filename,tmpvar->var->v_commoninfile) ) 
     143        { 
     144        out = 1; 
     145        break; 
     146        } 
     147        tmpvar=tmpvar->suiv; 
     148        } 
     149        if (out == 0) 
     150        { 
     151        newvar = (listvar *) calloc(1,sizeof(listvar)); 
     152        newvar->var = (variable *) calloc(1,sizeof(variable)); 
     153 
     154        Init_Variable(newvar->var); 
     155 
     156        if ( inmoduledeclare == 1 ) newvar->var->v_module=1; 
     157         
     158        strcpy(newvar->var->v_nomvar,tempname); 
    121159        strcpy(newvar->var->v_subroutinename,subroutinename); 
    122160        strcpy(newvar->var->v_modulename,curmodulename); 
    123161        strcpy(newvar->var->v_commoninfile,cur_filename); 
    124         strcpy(newvar->var->v_initialvalue,tmpvar2->n_name); 
     162        /*printf("TMPVAR 2 nomvar = %s\n",tmpvar2->n_name);*/ 
     163        newvar->var->v_initialvalue=Insertname(newvar->var->v_initialvalue,tmpvar2->n_name,0); 
     164         
     165        if (tmpvar1->var->v_initialvalue_array) 
     166        { 
     167        if (strcmp(tmpvar1->var->v_initialvalue_array->n_name,"")) 
     168        { 
     169        newvar->var->v_initialvalue_array=Insertname(newvar->var->v_initialvalue_array,tmpvar1->var->v_initialvalue_array->n_name,0); 
     170        } 
     171        } 
     172        newvar->var->v_do_loop=tmpvar1->var->v_do_loop; 
     173//        strcpy(newvar->var->v_initialvalue,tmpvar2->n_name); 
     174//        strcpy(newvar->var->v_initialvalue_array,tmpvar1->var->v_initialvalue_array); 
     175         
     176        newvar->var->v_dimension=tmpvar1->var->v_dimension; 
    125177 
    126178        Save_Length(tmpvar2->n_name,14); 
     
    139191            *curlist  = newvar ; 
    140192        } 
     193        tmpvar=newvar; 
     194        } 
     195        else // out = 1 
     196        { 
     197        tmpvar->var->v_initialvalue=Insertname(tmpvar->var->v_initialvalue,tmpvar2->n_name,0); 
     198        if (strcmp(tmpvar1->var->v_initialvalue_array->n_name,"")) 
     199        { 
     200        tmpvar->var->v_initialvalue_array=Insertname(tmpvar->var->v_initialvalue_array,tmpvar1->var->v_initialvalue_array->n_name,0); 
     201        } 
     202        tmpvar->var->v_do_loop=tmpvar1->var->v_do_loop; 
     203        } 
    141204      
    142205        tmpvar1 = tmpvar1->suiv; 
    143         tmpvar2 = tmpvar2->suiv;   
     206        tmpvar2 = tmpvar2->suiv; 
    144207    } 
     208     
     209    while (tmpvar2) 
     210    { 
     211    strcpy(tempname,tmpvar2->n_name); 
     212    tmpvar->var->v_initialvalue = Insertname(tmpvar->var->v_initialvalue,tempname,1); 
     213    tmpvar2 = tmpvar2->suiv;  
     214    } 
     215     
    145216} 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/WorkWithlistvarindoloop.c

    r5656 r8139  
    119119  if ( !List_UsedInSubroutine_Var ) 
    120120  { 
     121  printf("LISTE VIDE\n"); 
    121122      newvar=(listvar *)calloc(1,sizeof(listvar)); 
    122123      newvar->var=(variable *)calloc(1,sizeof(variable)); 
     
    161162         } 
    162163      } 
     164       
    163165      if ( out == 2 || out == 0 ) 
    164166      { 
     
    175177 
    176178         /* we should find this new variable to know the tabvars indice       */ 
     179 
    177180         if ( variableisglobal(newvar, List_Global_Var) == 1 ) 
    178181         { 
     
    271274void Merge_Variables(variable *var1, variable *var2) 
    272275{ 
     276 
    273277    if ( !strcasecmp(var1->v_typevar,"") ) 
    274278            strcpy(var1->v_typevar,var2->v_typevar); 
    275     else 
    276       { 
    277       strcpy(var2->v_typevar,var1->v_typevar); 
    278       } 
     279    else    strcpy(var2->v_typevar,var1->v_typevar); 
    279280 
    280281    if ( !strcasecmp(var1->v_oldname,"") ) 
     
    310311    else    strcpy(var2->v_precision,var1->v_precision); 
    311312 
    312     if ( !strcasecmp(var1->v_initialvalue,"") ) 
    313             strcpy(var1->v_initialvalue,var2->v_initialvalue); 
    314     else    strcpy(var2->v_initialvalue,var1->v_initialvalue); 
    315  
     313//     if ( !strcasecmp(var1->v_initialvalue,"") ) 
     314//             strcpy(var1->v_initialvalue,var2->v_initialvalue); 
     315//     else    strcpy(var2->v_initialvalue,var1->v_initialvalue); 
     316 
     317    if ( var1->v_initialvalue ) 
     318            var2->v_initialvalue = var1->v_initialvalue; 
     319    else    var1->v_initialvalue = var2->v_initialvalue; 
     320 
     321    if ( var1->v_initialvalue_array ) 
     322            var2->v_initialvalue_array = var1->v_initialvalue_array; 
     323    else    var1->v_initialvalue_array = var2->v_initialvalue_array; 
     324     
     325    if ( var1->v_do_loop ) 
     326            var2->v_do_loop = var1->v_do_loop; 
     327    else    var1->v_do_loop = var2->v_do_loop; 
     328     
     329//     if ( !strcasecmp(var1->v_initialvalue_array,"") ) 
     330//             strcpy(var1->v_initialvalue_array,var2->v_initialvalue_array); 
     331//     else    strcpy(var2->v_initialvalue_array,var1->v_initialvalue_array); 
     332     
    316333    if ( !strcasecmp(var1->v_IntentSpec,"") ) 
    317334            strcpy(var1->v_IntentSpec,var2->v_IntentSpec); 
     
    490507         /*                                                                   */ 
    491508         newvar->suiv = NULL; 
     509 
    492510         Merge_Variables(parcours->var,newvar->var); 
    493511         strcpy(newvar->var->v_subroutinename,parcours->var->v_subroutinename); 
     
    11551173                newvar->var->v_VariableIsParameter, 
    11561174                newvar->var->v_typevar, 
    1157                 newvar->var->v_initialvalue ); 
     1175                newvar->var->v_initialvalue->n_name ); 
    11581176        newvar = newvar->suiv; 
    11591177    } 
     
    11731191                                        strcpy(parcours->var->v_typevar,"REAL"); 
    11741192         else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1193         parcours->var->v_catvar = get_cat_var(parcours->var); 
    11751194      } 
    11761195      parcours = parcours -> suiv ; 
     
    11851204                                        strcpy(parcours->var->v_typevar,"REAL"); 
    11861205         else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1206         parcours->var->v_catvar = get_cat_var(parcours->var); 
    11871207      } 
    11881208      parcours = parcours -> suiv ; 
     
    11971217                                        strcpy(parcours->var->v_typevar,"REAL"); 
    11981218         else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1219         parcours->var->v_catvar = get_cat_var(parcours->var); 
    11991220      } 
    12001221      parcours = parcours -> suiv ; 
     
    12091230                                        strcpy(parcours->var->v_typevar,"REAL"); 
    12101231         else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1232         parcours->var->v_catvar = get_cat_var(parcours->var); 
     1233      } 
     1234      parcours = parcours -> suiv ; 
     1235   } 
     1236    
     1237   /*                                                                         */ 
     1238   parcours = List_Parameter_Var; 
     1239   while ( parcours ) 
     1240   { 
     1241      if ( !strcasecmp(parcours->var->v_typevar,"") ) 
     1242      { 
     1243         if ( IsVariableReal(parcours->var->v_nomvar) == 1 ) 
     1244                                        strcpy(parcours->var->v_typevar,"REAL"); 
     1245         else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1246         parcours->var->v_catvar = get_cat_var(parcours->var); 
     1247      } 
     1248      parcours = parcours -> suiv ; 
     1249   } 
     1250    
     1251   /*                                                                         */ 
     1252   parcours = List_GlobalParameter_Var; 
     1253   while ( parcours ) 
     1254   { 
     1255      if ( !strcasecmp(parcours->var->v_typevar,"") ) 
     1256      { 
     1257         if ( IsVariableReal(parcours->var->v_nomvar) == 1 ) 
     1258                                        strcpy(parcours->var->v_typevar,"REAL"); 
     1259         else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1260         parcours->var->v_catvar = get_cat_var(parcours->var); 
    12111261      } 
    12121262      parcours = parcours -> suiv ; 
     
    15091559void update_indicemaxtabvars(variable *var,listindice **Listofindices) 
    15101560{ 
    1511  
    1512  
    15131561            if ( Listofindices[var->v_catvar] ) 
    15141562            { 
     
    15471595          ) 
    15481596      { 
     1597            /* The type may has not been given if the variable was only declared with dimension */ 
     1598 
     1599            if ( !strcasecmp(parcours->var->v_typevar,"") ) 
     1600            { 
     1601                  if ( IsVariableReal(parcours->var->v_nomvar) == 1 ) 
     1602                                        strcpy(parcours->var->v_typevar,"REAL"); 
     1603                  else strcpy(parcours->var->v_typevar,"INTEGER"); 
     1604                  parcours->var->v_catvar = get_cat_var(parcours->var); 
     1605             } 
     1606              
    15491607         indicemaxtabvars[parcours->var->v_catvar] = indicemaxtabvars[parcours->var->v_catvar] + 1 ; 
    15501608         parcours->var->v_indicetabvars = indicemaxtabvars[parcours->var->v_catvar]; 
     
    16261684              parcours->var->v_notgrid == 0                              && 
    16271685              ( ( parcours->var->v_nbdim != 0 || !strcasecmp(parcours->var->v_typevar,"type") ) 
    1628               || strcasecmp(parcours->var->v_initialvalue,"") ) 
     1686              || parcours->var->v_initialvalue ) 
    16291687            ) 
    16301688         { 
     
    16581716              !strcasecmp(parcours->var->v_commoninfile,cur_filename)       && 
    16591717              ( ( parcours->var->v_nbdim != 0 || !strcasecmp(parcours->var->v_typevar,"type") ) 
    1660               || strcasecmp(parcours->var->v_initialvalue,"") ) 
     1718              || parcours->var->v_initialvalue ) 
    16611719            ) 
    16621720         { 
     
    18451903      printf("dimensiongiven - %d \n", parcours->var->v_dimensiongiven); 
    18461904      printf("dimsempty      - %d \n", parcours->var->v_dimsempty); 
    1847       printf("initialvalue   - %s \n", parcours->var->v_initialvalue); 
     1905      printf("initialvalue   - %s \n", parcours->var->v_initialvalue->n_name); 
    18481906      printf("readedlistdim  - %s \n", parcours->var->v_readedlistdimension); 
    18491907      printf("-------------------------------------\n"); 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/WriteInFile.c

    r5656 r8139  
    141141    fseek(filout, position, SEEK_SET); 
    142142    tofich_blanc(filout, sizetoremove); 
    143     fseek(filout, position, SEEK_SET); 
     143 
    144144} 
    145145 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/Writedeclarations.c

    r5656 r8139  
    6666  /* We should give the precision of the variable if it has been given        */ 
    6767  precision_given = 0; 
     68   
    6869  if ( strcasecmp(v->v_precision,"") ) 
    6970  { 
     
    128129    { 
    129130        strcat(line," = "); 
    130         strcat(line, v->v_initialvalue); 
     131        strcat(line, v->v_initialvalue->n_name); 
    131132    } 
    132133    Save_Length(line, 45); 
     
    173174    { 
    174175        strcat(ligne," = "); 
    175         strcat(ligne,v->v_initialvalue); 
     176        strcat(ligne,v->v_initialvalue->n_name); 
    176177    } 
    177178    Save_Length(ligne,45); 
     
    206207        WriteTableDeclaration(v, ligne, value); 
    207208 
    208      if ( v->v_VariableIsParameter != 1 && strcasecmp(v->v_initialvalue,"") ) 
     209     if ( v->v_VariableIsParameter != 1 && v->v_initialvalue) 
    209210     { 
    210211        strcat(ligne," = "); 
    211         strcat(ligne,v->v_initialvalue); 
     212        strcat(ligne,v->v_initialvalue->n_name); 
    212213     } 
    213214     tofich(filecommon, ligne, 1); 
     
    241242    while ( parcours ) 
    242243    { 
     244    if (!strcmp(parcours->var->v_typevar, "")) 
     245    { 
     246     /* Default type*/ 
     247          if ( IsVariableReal(parcours->var->v_nomvar) == 1 ) 
     248                                         strcpy(parcours->var->v_typevar,"REAL"); 
     249          else strcpy(parcours->var->v_typevar,"INTEGER"); 
     250     } 
    243251        if ( !strcasecmp(parcours->var->v_subroutinename, subroutinename) && 
    244252              strcasecmp(parcours->var->v_typevar, "") ) 
     
    261269        if ( !strcasecmp(v->v_subroutinename, subroutinename)   && 
    262270             (v->v_save == 0)                                   && 
    263              (v->v_pointerdeclare == 0)                         && 
    264271             (v->v_VariableIsParameter == 0)                    && 
    265272             (v->v_common == 0) ) 
     
    285292    listvar *parcours; 
    286293    variable *v; 
    287     char ligne[LONG_M]; 
    288  
     294    char *ligne; 
     295    size_t line_length; 
     296    int res; 
     297    int global_check; 
     298 
     299    ligne = (char*) calloc(LONG_M, sizeof(char)); 
     300    line_length = LONG_M; 
     301     
     302    global_check = 0; 
     303    
     304    
    289305    fprintf(fortran_out,"#include \"Param_BeforeCall_%s.h\"\n",subroutinename); 
    290306 
     
    303319            position++; 
    304320            WriteVarDeclaration(v, fortran_out, 0, 1); 
    305             neededparameter = writedeclarationintoamr(List_Parameter_Var, paramtoamr, 
    306                                     v, v->v_subroutinename, neededparameter, subroutinename); 
     321            res = writedeclarationintoamr(List_Parameter_Var, paramtoamr, 
     322                                    v, v->v_subroutinename, &neededparameter, subroutinename, global_check); 
    307323            parcours = List_SubroutineArgument_Var; 
    308324        } 
    309325        else parcours = parcours -> suiv; 
    310326    } 
    311     Save_Length(ligne,45); 
    312327 
    313328    // Write interface for 'Sub_Loop_machin' in 'Param_BeforeCall_machin.h' when outside a module 
     
    317332        if (isrecursive) sprintf(ligne,"  recursive subroutine Sub_Loop_%s(", subroutinename); 
    318333        else             sprintf(ligne,"  subroutine Sub_Loop_%s(", subroutinename); 
    319         WriteVariablelist_subloop(ligne); 
    320         WriteVariablelist_subloop_Def(ligne); 
     334        WriteVariablelist_subloop(&ligne,&line_length); 
     335        WriteVariablelist_subloop_Def(&ligne,&line_length); 
    321336        strcat(ligne,")"); 
    322         Save_Length(ligne,45); 
     337 
    323338        tofich(paramtoamr,ligne,1); 
    324339 
     
    353368 
    354369    parcours = List_SubroutineArgument_Var; 
     370     
    355371    while ( parcours ) 
    356372    { 
     
    399415/*                                                                            */ 
    400416/******************************************************************************/ 
    401 listnom *writedeclarationintoamr (listvar * deb_common, FILE *fileout, 
     417int writedeclarationintoamr (listvar * deb_common, FILE *fileout, 
    402418                              variable *var , const char *commonname, 
    403                            listnom *neededparameter, const char *name_common) 
     419                           listnom **neededparameter, const char *name_common, int global_check) 
    404420{ 
    405421  listvar *newvar; 
     
    410426  int writeit; 
    411427  listnom *parcours; 
     428  listname *parcours_name_array; 
     429  int res; 
     430   
     431  res = 0; 
    412432 
    413433  /* we should list the needed parameter                                      */ 
     434 
    414435  if ( !strcasecmp(name_common,commonname) ) 
    415      neededparameter = DecomposeTheNameinlistnom(var->v_readedlistdimension,neededparameter); 
     436     { 
     437     *neededparameter = DecomposeTheNameinlistnom(var->v_readedlistdimension,*neededparameter); 
     438     parcours_name_array = var->v_initialvalue_array; 
     439     while (parcours_name_array) 
     440     { 
     441     *neededparameter = DecomposeTheNameinlistnom(parcours_name_array->n_name,*neededparameter); 
     442     parcours_name_array=parcours_name_array->suiv; 
     443     } 
     444     } 
     445 
    416446  /*                                                                          */ 
    417   parcours = neededparameter; 
     447  parcours = *neededparameter; 
     448 
    418449  while (parcours) 
    419450  { 
     
    423454     while ( newvar && out == 0 ) 
    424455     { 
    425  
    426         if ( !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && !strcasecmp(var->v_subroutinename,newvar->var->v_subroutinename)) 
     456        if ( (global_check == 0) && !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && !strcasecmp(var->v_subroutinename,newvar->var->v_subroutinename)) 
    427457        { 
    428458           out=1; 
    429459        /* add the name to the list of needed parameter                       */ 
    430            neededparameter = DecomposeTheNameinlistnom( 
    431                  newvar->var->v_initialvalue, 
    432                  neededparameter ); 
     460           *neededparameter = DecomposeTheNameinlistnom( 
     461                 newvar->var->v_initialvalue->n_name, 
     462                 *neededparameter ); 
     463        } 
     464        else if ( (global_check == 1) && !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && !strcasecmp(var->v_modulename,newvar->var->v_modulename)) 
     465        { 
     466           out=1; 
     467        /* add the name to the list of needed parameter                       */ 
     468           *neededparameter = DecomposeTheNameinlistnom( 
     469                 newvar->var->v_initialvalue->n_name, 
     470                 *neededparameter ); 
    433471        } 
    434472        else newvar=newvar->suiv; 
     
    437475   } 
    438476  /*                                                                          */ 
    439   parcours = neededparameter; 
     477  parcours = *neededparameter; 
     478   
    440479  while (parcours) 
    441480  { 
     
    444483     while ( newvar && out == 0 ) 
    445484     { 
    446         if ( !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && !strcasecmp(var->v_subroutinename,newvar->var->v_subroutinename)) 
     485        if ( (global_check == 0) && !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && !strcasecmp(var->v_subroutinename,newvar->var->v_subroutinename)) 
    447486        { 
    448487           out=1; 
    449488        /* add the name to the list of needed parameter                       */ 
    450            neededparameter = DecomposeTheNameinlistnom( 
    451                  newvar->var->v_initialvalue, 
    452                  neededparameter ); 
     489           *neededparameter = DecomposeTheNameinlistnom( 
     490                 newvar->var->v_initialvalue->n_name, 
     491                 *neededparameter ); 
     492        } 
     493        else if ( (global_check == 1) && !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && !strcasecmp(var->v_modulename,newvar->var->v_modulename)) 
     494        { 
     495           out=1; 
     496        /* add the name to the list of needed parameter                       */ 
     497           *neededparameter = DecomposeTheNameinlistnom( 
     498                 newvar->var->v_initialvalue->n_name, 
     499                 *neededparameter ); 
    453500        } 
    454501        else newvar=newvar->suiv; 
     
    456503     parcours=parcours->suiv; 
    457504   } 
    458   parcours = neededparameter; 
     505  parcours = *neededparameter; 
    459506  while (parcours) 
    460507  { 
     
    463510     while ( newvar && writeit == 0 ) 
    464511     { 
    465         if ( !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && 
     512        if ( (global_check == 0) && !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && 
    466513            !strcasecmp(var->v_subroutinename,newvar->var->v_subroutinename) && parcours->o_val == 0 ) 
     514        { 
     515           writeit=1; 
     516           parcours->o_val = 1; 
     517        } 
     518        else if ( (global_check == 1) && !strcasecmp(parcours->o_nom,newvar->var->v_nomvar) && 
     519            !strcasecmp(var->v_modulename,newvar->var->v_modulename) && parcours->o_val == 0 ) 
    467520        { 
    468521           writeit=1; 
     
    490543           v->v_allocatable = 1; 
    491544        } 
     545        res = 1; 
    492546     } 
    493547     else 
     
    503557  } 
    504558  Save_Length(ligne,45); 
    505   return neededparameter; 
     559  return res; 
    506560} 
    507561 
     
    532586     if ( newvar->var->v_nbdim == 0 && 
    533587          !strcasecmp(newvar->var->v_subroutinename,subroutinename)  && 
    534            (newvar->var->v_pointerdeclare == 0 || !strcasecmp(newvar->var->v_typevar,"type")) ) 
     588           (newvar->var->v_pointerdeclare >= 0 || !strcasecmp(newvar->var->v_typevar,"type")) ) 
    535589     { 
    536590        v = newvar->var; 
    537  
    538591        WriteBeginDeclaration(v,ligne,1); 
    539592        WriteScalarDeclaration(v,ligne); 
     
    570623//  printf("newvar = %s %d %s\n",newvar->var->v_nomvar,newvar->var->v_pointerdeclare,newvar->var->v_typevar); 
    571624     if ( (v->v_nbdim != 0)  && !strcasecmp(v->v_subroutinename, subroutinename) && 
    572           (v->v_pointerdeclare == 0 || !strcasecmp(v->v_typevar,"type")) ) 
     625          (v->v_pointerdeclare >= 0 || !strcasecmp(v->v_typevar,"type")) ) 
    573626     { 
    574627        changeval = 0; 
     
    596649     newvar = newvar->suiv; 
    597650  } 
     651 
    598652  Save_Length(ligne,45); 
    599653} 
     
    619673            if (firstpass == 0 && out == 0 && VariableIsParameter == 0 && SaveDeclare == 0) 
    620674            { 
     675             
     676            /* The type may has not been given if the variable was only declared with dimension */ 
     677 
     678            if ( !strcasecmp(v->v_typevar,"") ) 
     679            { 
     680                  if ( IsVariableReal(v->v_nomvar) == 1 ) 
     681                                        strcpy(v->v_typevar,"REAL"); 
     682                  else strcpy(v->v_typevar,"INTEGER"); 
     683                  v->v_catvar = get_cat_var(v); 
     684             } 
     685              
    621686                WriteVarDeclaration(v, fortran_out, 1, 1); 
    622687            } 
     
    639704    char ligne[LONG_M]; 
    640705    char initialvalue[LONG_M]; 
    641  
     706    listname *parcours_name; 
     707     
    642708    if (insubroutinedeclare == 1) 
    643709    { 
     
    651717            if (out)   break; 
    652718 
    653             if (strncasecmp(parcours->var->v_initialvalue,"(/",2)) 
     719            strcpy(initialvalue,""); 
     720            parcours_name = parcours->var->v_initialvalue; 
     721            while (parcours_name) 
    654722            { 
    655                 strcpy(initialvalue,parcours->var->v_initialvalue); 
     723            if (strncasecmp(parcours_name->n_name,"(/",2)) 
     724            { 
     725                strcat(initialvalue,parcours_name->n_name); 
     726                if (parcours_name->suiv) 
     727                { 
     728                strcat(initialvalue,","); 
     729                } 
    656730            } 
    657731            else 
    658732            { 
    659                 strncpy(initialvalue,&parcours->var->v_initialvalue[2],strlen(parcours->var->v_initialvalue)-4); 
    660                 strcpy(&initialvalue[strlen(parcours->var->v_initialvalue)-4],"\0"); 
     733            printf("A TRAITER DANS REWRITEDATA STATEMETN "); 
     734            exit(1); 
     735                strncpy(initialvalue,&parcours_name->n_name[2],strlen(parcours_name->n_name)-4); 
     736                strcpy(&initialvalue[strlen(parcours_name->n_name)-4],"\0"); 
     737            } 
     738            parcours_name=parcours_name->suiv; 
    661739            } 
    662740            sprintf(ligne,"data %s/%s/",parcours->var->v_nomvar,initialvalue); 
    663741            tofich(filout,ligne,1); 
    664  
     742             
    665743            parcours = parcours->suiv; 
    666744        } 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/decl.h

    r5656 r8139  
    5656} listdim;                 /* list of the dimensions of a variable            */ 
    5757 
     58typedef struct listname 
     59{ 
     60   char n_name[LONG_M]; 
     61   struct  listname* suiv; 
     62} listname ;            /* list of names                                  */ 
     63 
     64typedef struct do_loop 
     65{ 
     66   char do_variable[LONG_VNAME]; 
     67   char do_begin[LONG_VNAME]; 
     68   char do_end[LONG_VNAME]; 
     69   char do_step[LONG_VNAME]; 
     70} do_loop ; 
     71 
     72typedef struct listdoloop 
     73{ 
     74   do_loop *cur_do_loop; 
     75   struct listdoloop* suiv; 
     76} listdoloop; 
     77 
    5878typedef struct variable 
    5979{ 
     
    6888   char v_commoninfile[LONG_FNAME]; 
    6989   char v_subroutinename[LONG_VNAME]; 
     90   listdoloop *v_do_loop; 
    7091   char v_precision[LONG_C]; 
    71    char v_initialvalue[LONG_M]; 
     92   listname *v_initialvalue; 
     93   listname *v_initialvalue_array; 
    7294   char v_IntentSpec[LONG_M]; 
    7395   char v_readedlistdimension[LONG_M]; 
     
    126148} listparameter ;           /* list of names                                  */ 
    127149 
    128 typedef struct listname 
    129 { 
    130    char n_name[LONG_VNAME]; 
    131    struct  listname* suiv; 
    132 } listname ;            /* list of names                                  */ 
    133  
    134150typedef struct listcouple 
    135151{ 
     
    198214 listname *List_Pointer_Var; 
    199215 listname *List_ImplicitNoneSubroutine; 
     216  
     217 listname *List_Do_labels;  
     218 /* A list that contains the do labels if any */ 
    200219 
    201220 listusemodule *List_NameOfModuleUsed; 
     
    321340 char curmodulename[LONG_VNAME]; 
    322341 char subroutinename[LONG_VNAME]; 
     342 char old_subroutinename[LONG_VNAME]; // For internal subprogramm 
    323343 char cur_filename[LONG_FNAME];     // Name of the current parsed Fortran file 
    324344 char config_file[LONG_FNAME];      // Name of conv configuration file (ex: amr.in) 
     
    331351 FILE *fortran_in;           /* Input File                                     */ 
    332352 FILE *oldfortran_out; 
     353 FILE *old_oldfortran_out; // For internal subprogramm 
    333354 FILE *subloop; 
    334355 FILE *module_declar; 
     
    433454/******************************************************************************/ 
    434455extern void WriteBeginof_SubLoop(); 
    435 extern void WriteVariablelist_subloop(char *ligne); 
    436 extern void WriteVariablelist_subloop_Call(char **ligne, size_t line_length); 
    437 extern void WriteVariablelist_subloop_Def(char *ligne); 
     456extern void WriteVariablelist_subloop(char **ligne, size_t *line_length); 
     457extern void WriteVariablelist_subloop_Call(char **ligne, size_t *line_length); 
     458extern void WriteVariablelist_subloop_Def(char **ligne, size_t *line_length); 
    438459extern void WriteHeadofSubroutineLoop(); 
    439460extern void closeandcallsubloopandincludeit_0(int suborfun); 
     
    516537extern int varistyped_0(char *ident); 
    517538extern void dump_var(const variable* var); 
     539extern void removenewline(char *nom); 
    518540/******************************************************************************/ 
    519541/*********** UtilListe.c ******************************************************/ 
     
    532554extern int IsinListe(listvar *lin,char *nom); 
    533555extern listname *Insertname(listname *lin,char *nom,int sens); 
     556extern int testandextractfromlist(listname **lin, char*nom); 
     557extern void removefromlist(listname **lin, char*nom); 
    534558extern listname *concat_listname(listname *l1, listname *l2); 
    535559extern void createstringfromlistname(char *ligne, listname *lin); 
     
    540564extern void  addprecision_derivedfromkind(variable *curvar); 
    541565extern int get_cat_var(variable *var); 
     566extern void Insertdoloop(variable *var,char *do_var, char *do_begin, char *do_end, char *do_step); 
    542567/******************************************************************************/ 
    543568/*********** UtilNotGridDep.c *************************************************/ 
     
    560585/******************************************************************************/ 
    561586extern void Add_Data_Var_1 (listvar **curlist,char *name,char *values); 
    562 extern void Add_Data_Var_Names_01 (listvar **curlist,listname *l1, listname *l2); 
     587extern void Add_Data_Var_Names_01 (listvar **curlist,listvar *l1, listname *l2); 
    563588/******************************************************************************/ 
    564589/*********** WorkWithlistmoduleinfile.c ***************************************/ 
     
    641666extern void WriteArgumentDeclaration_beforecall(); 
    642667extern void WriteArgumentDeclaration_Sort(FILE* tofile); 
    643 extern listnom * writedeclarationintoamr(listvar *deb_common, FILE *fileout, variable *var, 
    644                   const char *commonname, listnom *neededparameter, const char *name_common); 
     668extern int writedeclarationintoamr(listvar *deb_common, FILE *fileout, variable *var, 
     669                  const char *commonname, listnom **neededparameter, const char *name_common, int global_check); 
    645670extern void writesub_loopdeclaration_scalar(listvar *deb_common, FILE *fileout); 
    646671extern void writesub_loopdeclaration_tab(listvar *deb_common, FILE *fileout); 
  • branches/2017/dev_r8126_UKMO_AGRIF_vert_interp/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.c

    r5656 r8139  
    4545 
    4646/* Bison version.  */ 
     47#define YYBISON_VERSION "2.7" 
    4748 
    4849/* Skeleton name.  */ 
     
    7980 
    8081extern int line_num_input; 
    81 extern char *fortran_text; 
    8282 
    8383char c_selectorname[LONG_M]; 
     
    8787int c_selectorgiven=0; 
    8888listvar *curlistvar; 
     89int in_select_case_stmt=0; 
    8990typedim c_selectordim; 
    9091listcouple *coupletmp; 
    9192int removeline=0; 
     93int token_since_endofstmt = 0; 
     94int increment_nbtokens = 1; 
     95int in_complex_literal = 0; 
     96int close_or_connect = 0; 
     97int in_io_control_spec = 0; 
     98long int my_position; 
     99long int my_position_before; 
     100int suborfun = 0; 
     101int indeclaration = 0; 
     102int endoffile = 0; 
     103int in_inquire = 0; 
     104int in_bind = 0; 
     105int in_char_selector = 0; 
     106int in_kind_selector =0; 
     107int char_length_toreset = 0; 
     108 
     109typedim my_dim; 
     110 
    92111listvar *test; 
     112 
     113char linebuf1[1024]; 
     114char linebuf2[1024]; 
    93115 
    94116int fortran_error(const char *s) 
    95117{ 
    96     printf("%s line %d, file %s motclef = |%s|\n", s, line_num_input, cur_filename, fortran_text); 
     118  if (endoffile == 1)  
     119  { 
     120  endoffile = 0; 
     121  return 0; 
     122  } 
     123    printf("%s line %d, file %s culprit = |%s|\n", s, line_num_input, cur_filename, strcat(linebuf1, linebuf2)); 
    97124    exit(1); 
    98125} 
     
    100127 
    101128/* Line 371 of yacc.c  */ 
    102 #line 104 "fortran.tab.c" 
     129#line 130 "fortran.tab.c" 
    103130 
    104131# ifndef YY_NULL 
     
    156183     TOK_PROGRAM = 279, 
    157184     TOK_FUNCTION = 280, 
    158      TOK_FORMAT = 281, 
    159      TOK_MAX = 282, 
    160      TOK_TANH = 283, 
    161      TOK_WHERE = 284, 
    162      TOK_ELSEWHEREPAR = 285, 
    163      TOK_ELSEWHERE = 286, 
    164      TOK_ENDWHERE = 287, 
    165      TOK_MAXVAL = 288, 
    166      TOK_TRIM = 289, 
    167      TOK_NULL_PTR = 290, 
    168      TOK_SUM = 291, 
    169      TOK_SQRT = 292, 
    170      TOK_CASE = 293, 
    171      TOK_SELECTCASE = 294, 
    172      TOK_FILE = 295, 
    173      TOK_UNIT = 296, 
    174      TOK_FMT = 297, 
    175      TOK_NML = 298, 
    176      TOK_END = 299, 
    177      TOK_EOR = 300, 
    178      TOK_ERR = 301, 
    179      TOK_EXIST = 302, 
    180      TOK_MIN = 303, 
    181      TOK_FLOAT = 304, 
    182      TOK_EXP = 305, 
    183      TOK_COS = 306, 
    184      TOK_COSH = 307, 
    185      TOK_ACOS = 308, 
    186      TOK_NINT = 309, 
    187      TOK_CYCLE = 310, 
    188      TOK_SIN = 311, 
    189      TOK_SINH = 312, 
    190      TOK_ASIN = 313, 
    191      TOK_EQUIVALENCE = 314, 
    192      TOK_BACKSPACE = 315, 
    193      TOK_LOG = 316, 
    194      TOK_TAN = 317, 
    195      TOK_ATAN = 318, 
    196      TOK_RECURSIVE = 319, 
    197      TOK_ABS = 320, 
    198      TOK_MOD = 321, 
    199      TOK_SIGN = 322, 
    200      TOK_MINLOC = 323, 
    201      TOK_MAXLOC = 324, 
    202      TOK_EXIT = 325, 
    203      TOK_MINVAL = 326, 
    204      TOK_PUBLIC = 327, 
    205      TOK_PRIVATE = 328, 
    206      TOK_ALLOCATABLE = 329, 
    207      TOK_RETURN = 330, 
    208      TOK_THEN = 331, 
    209      TOK_ELSEIF = 332, 
    210      TOK_ELSE = 333, 
    211      TOK_ENDIF = 334, 
    212      TOK_PRINT = 335, 
    213      TOK_PLAINGOTO = 336, 
    214      TOK_LOGICALIF = 337, 
    215      TOK_PLAINDO = 338, 
    216      TOK_CONTAINS = 339, 
    217      TOK_ENDDO = 340, 
    218      TOK_MODULE = 341, 
    219      TOK_ENDMODULE = 342, 
    220      TOK_WHILE = 343, 
    221      TOK_CONCURRENT = 344, 
    222      TOK_ALLOCATE = 345, 
    223      TOK_OPEN = 346, 
    224      TOK_CLOSE = 347, 
    225      TOK_INQUIRE = 348, 
    226      TOK_WRITE = 349, 
    227      TOK_FLUSH = 350, 
    228      TOK_READ = 351, 
    229      TOK_REWIND = 352, 
    230      TOK_DEALLOCATE = 353, 
    231      TOK_NULLIFY = 354, 
    232      TOK_DIMENSION = 355, 
    233      TOK_ENDSELECT = 356, 
    234      TOK_EXTERNAL = 357, 
    235      TOK_INTENT = 358, 
    236      TOK_INTRINSIC = 359, 
    237      TOK_NAMELIST = 360, 
    238      TOK_DEFAULT = 361, 
    239      TOK_OPTIONAL = 362, 
    240      TOK_POINTER = 363, 
    241      TOK_CONTINUE = 364, 
    242      TOK_SAVE = 365, 
    243      TOK_TARGET = 366, 
    244      TOK_IMPLICIT = 367, 
    245      TOK_NONE = 368, 
    246      TOK_CALL = 369, 
    247      TOK_STAT = 370, 
    248      TOK_POINT_TO = 371, 
    249      TOK_COMMON = 372, 
    250      TOK_GLOBAL = 373, 
    251      TOK_LEFTAB = 374, 
    252      TOK_RIGHTAB = 375, 
    253      TOK_PAUSE = 376, 
    254      TOK_PROCEDURE = 377, 
    255      TOK_STOP = 378, 
    256      TOK_REAL8 = 379, 
    257      TOK_FOURDOTS = 380, 
    258      TOK_HEXA = 381, 
    259      TOK_ASSIGNTYPE = 382, 
    260      TOK_OUT = 383, 
    261      TOK_INOUT = 384, 
    262      TOK_IN = 385, 
    263      TOK_USE = 386, 
    264      TOK_TRUE = 387, 
    265      TOK_FALSE = 388, 
    266      TOK_LABEL = 389, 
    267      TOK_TYPE = 390, 
    268      TOK_TYPEPAR = 391, 
    269      TOK_ENDTYPE = 392, 
    270      TOK_REAL = 393, 
    271      TOK_INTEGER = 394, 
    272      TOK_LOGICAL = 395, 
    273      TOK_DOUBLEPRECISION = 396, 
    274      TOK_ENDSUBROUTINE = 397, 
    275      TOK_ENDFUNCTION = 398, 
    276      TOK_ENDPROGRAM = 399, 
    277      TOK_ENDUNIT = 400, 
    278      TOK_CHARACTER = 401, 
    279      TOK_CHAR_CONSTANT = 402, 
    280      TOK_CHAR_CUT = 403, 
    281      TOK_DATA = 404, 
    282      TOK_CHAR_MESSAGE = 405, 
    283      TOK_CSTREAL = 406, 
    284      TOK_COMPLEX = 407, 
    285      TOK_DOUBLECOMPLEX = 408, 
    286      TOK_NAME = 409, 
    287      TOK_CSTINT = 410 
     185     TOK_LABEL_FORMAT = 281, 
     186     TOK_LABEL_CONTINUE = 282, 
     187     TOK_LABEL_END_DO = 283, 
     188     TOK_MAX = 284, 
     189     TOK_TANH = 285, 
     190     TOK_COMMENT = 286, 
     191     TOK_WHERE = 287, 
     192     TOK_ELSEWHEREPAR = 288, 
     193     TOK_ELSEWHERE = 289, 
     194     TOK_ENDWHERE = 290, 
     195     TOK_MAXVAL = 291, 
     196     TOK_TRIM = 292, 
     197     TOK_NULL_PTR = 293, 
     198     TOK_SUM = 294, 
     199     TOK_SQRT = 295, 
     200     TOK_BIND = 296, 
     201     TOK_CASE = 297, 
     202     TOK_SELECTCASE = 298, 
     203     TOK_FILE = 299, 
     204     TOK_REC = 300, 
     205     TOK_NAME_EQ = 301, 
     206     TOK_IOLENGTH = 302, 
     207     TOK_ACCESS = 303, 
     208     TOK_ACTION = 304, 
     209     TOK_FORM = 305, 
     210     TOK_RECL = 306, 
     211     TOK_STATUS = 307, 
     212     TOK_UNIT = 308, 
     213     TOK_OPENED = 309, 
     214     TOK_FMT = 310, 
     215     TOK_NML = 311, 
     216     TOK_END = 312, 
     217     TOK_EOR = 313, 
     218     TOK_EOF = 314, 
     219     TOK_ERR = 315, 
     220     TOK_POSITION = 316, 
     221     TOK_IOSTAT = 317, 
     222     TOK_IOMSG = 318, 
     223     TOK_EXIST = 319, 
     224     TOK_MIN = 320, 
     225     TOK_FLOAT = 321, 
     226     TOK_EXP = 322, 
     227     TOK_LEN = 323, 
     228     TOK_COS = 324, 
     229     TOK_COSH = 325, 
     230     TOK_ACOS = 326, 
     231     TOK_NINT = 327, 
     232     TOK_CYCLE = 328, 
     233     TOK_SIN = 329, 
     234     TOK_SINH = 330, 
     235     TOK_ASIN = 331, 
     236     TOK_EQUIVALENCE = 332, 
     237     TOK_BACKSPACE = 333, 
     238     TOK_LOG = 334, 
     239     TOK_TAN = 335, 
     240     TOK_ATAN = 336, 
     241     TOK_RECURSIVE = 337, 
     242     TOK_ABS = 338, 
     243     TOK_MOD = 339, 
     244     TOK_SIGN = 340, 
     245     TOK_MINLOC = 341, 
     246     TOK_MAXLOC = 342, 
     247     TOK_EXIT = 343, 
     248     TOK_KIND = 344, 
     249     TOK_MOLD = 345, 
     250     TOK_SOURCE = 346, 
     251     TOK_ERRMSG = 347, 
     252     TOK_MINVAL = 348, 
     253     TOK_PUBLIC = 349, 
     254     TOK_PRIVATE = 350, 
     255     TOK_ALLOCATABLE = 351, 
     256     TOK_RETURN = 352, 
     257     TOK_THEN = 353, 
     258     TOK_ELSEIF = 354, 
     259     TOK_ELSE = 355, 
     260     TOK_ENDIF = 356, 
     261     TOK_PRINT = 357, 
     262     TOK_PLAINGOTO = 358, 
     263     TOK_LOGICALIF = 359, 
     264     TOK_LOGICALIF_PAR = 360, 
     265     TOK_PLAINDO = 361, 
     266     TOK_CONTAINS = 362, 
     267     TOK_ENDDO = 363, 
     268     TOK_MODULE = 364, 
     269     TOK_ENDMODULE = 365, 
     270     TOK_WHILE = 366, 
     271     TOK_CONCURRENT = 367, 
     272     TOK_ALLOCATE = 368, 
     273     TOK_OPEN = 369, 
     274     TOK_CLOSE = 370, 
     275     TOK_INQUIRE = 371, 
     276     TOK_WRITE_PAR = 372, 
     277     TOK_WRITE = 373, 
     278     TOK_FLUSH = 374, 
     279     TOK_READ_PAR = 375, 
     280     TOK_READ = 376, 
     281     TOK_REWIND = 377, 
     282     TOK_DEALLOCATE = 378, 
     283     TOK_NULLIFY = 379, 
     284     TOK_DIMENSION = 380, 
     285     TOK_ENDSELECT = 381, 
     286     TOK_EXTERNAL = 382, 
     287     TOK_INTENT = 383, 
     288     TOK_INTRINSIC = 384, 
     289     TOK_NAMELIST = 385, 
     290     TOK_DEFAULT = 386, 
     291     TOK_OPTIONAL = 387, 
     292     TOK_POINTER = 388, 
     293     TOK_CONTINUE = 389, 
     294     TOK_SAVE = 390, 
     295     TOK_TARGET = 391, 
     296     TOK_IMPLICIT = 392, 
     297     TOK_NONE = 393, 
     298     TOK_CALL = 394, 
     299     TOK_STAT = 395, 
     300     TOK_POINT_TO = 396, 
     301     TOK_COMMON = 397, 
     302     TOK_GLOBAL = 398, 
     303     TOK_LEFTAB = 399, 
     304     TOK_RIGHTAB = 400, 
     305     TOK_PAUSE = 401, 
     306     TOK_PROCEDURE = 402, 
     307     TOK_STOP = 403, 
     308     TOK_FOURDOTS = 404, 
     309     TOK_HEXA = 405, 
     310     TOK_ASSIGNTYPE = 406, 
     311     TOK_OUT = 407, 
     312     TOK_INOUT = 408, 
     313     TOK_IN = 409, 
     314     TOK_USE = 410, 
     315     TOK_EQUALEQUAL = 411, 
     316     TOK_SLASHEQUAL = 412, 
     317     TOK_INFEQUAL = 413, 
     318     TOK_SUPEQUAL = 414, 
     319     TOK_TRUE = 415, 
     320     TOK_FALSE = 416, 
     321     TOK_LABEL = 417, 
     322     TOK_LABEL_DJVIEW = 418, 
     323     TOK_PLAINDO_LABEL_DJVIEW = 419, 
     324     TOK_PLAINDO_LABEL = 420, 
     325     TOK_TYPE = 421, 
     326     TOK_TYPEPAR = 422, 
     327     TOK_ENDTYPE = 423, 
     328     TOK_COMMACOMPLEX = 424, 
     329     TOK_REAL = 425, 
     330     TOK_INTEGER = 426, 
     331     TOK_LOGICAL = 427, 
     332     TOK_DOUBLEPRECISION = 428, 
     333     TOK_ENDSUBROUTINE = 429, 
     334     TOK_ENDFUNCTION = 430, 
     335     TOK_ENDPROGRAM = 431, 
     336     TOK_ENDUNIT = 432, 
     337     TOK_CHARACTER = 433, 
     338     TOK_CHAR_CONSTANT = 434, 
     339     TOK_CHAR_CUT = 435, 
     340     TOK_DATA = 436, 
     341     TOK_CHAR_MESSAGE = 437, 
     342     TOK_CSTREAL = 438, 
     343     TOK_COMPLEX = 439, 
     344     TOK_DOUBLECOMPLEX = 440, 
     345     TOK_NAME = 441, 
     346     TOK_CSTINT = 442 
    288347   }; 
    289348#endif 
     
    294353{ 
    295354/* Line 387 of yacc.c  */ 
    296 #line 65 "fortran.y" 
     355#line 91 "fortran.y" 
    297356 
    298357    char        na[LONG_M]; 
     
    306365 
    307366/* Line 387 of yacc.c  */ 
    308 #line 310 "fortran.tab.c" 
     367#line 368 "fortran.tab.c" 
    309368} YYSTYPE; 
    310369# define YYSTYPE_IS_TRIVIAL 1 
     
    334393 
    335394/* Line 390 of yacc.c  */ 
    336 #line 338 "fortran.tab.c" 
     395#line 396 "fortran.tab.c" 
    337396 
    338397#ifdef short 
     
    554613#define YYFINAL  2 
    555614/* YYLAST -- Last index in YYTABLE.  */ 
    556 #define YYLAST   6268 
     615#define YYLAST   4540 
    557616 
    558617/* YYNTOKENS -- Number of terminals.  */ 
    559 #define YYNTOKENS  169 
     618#define YYNTOKENS  204 
    560619/* YYNNTS -- Number of nonterminals.  */ 
    561 #define YYNNTS  206 
     620#define YYNNTS  533 
    562621/* YYNRULES -- Number of rules.  */ 
    563 #define YYNRULES  597 
     622#define YYNRULES  1087 
    564623/* YYNRULES -- Number of states.  */ 
    565 #define YYNSTATES  1051 
     624#define YYNSTATES  1760 
    566625 
    567626/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */ 
    568627#define YYUNDEFTOK  2 
    569 #define YYMAXUTOK   410 
     628#define YYMAXUTOK   442 
    570629 
    571630#define YYTRANSLATE(YYX)                  \ 
     
    576635{ 
    577636       0,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
    578      166,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
     637     198,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
    579638       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
    580        2,     2,     2,     2,     2,     2,     2,   168,     2,     2, 
    581      162,   163,    21,    19,     3,    20,     2,   167,     2,     2, 
     639       2,     2,     2,     2,     2,     2,     2,   200,     2,     2, 
     640     194,   195,    21,    19,     3,    20,     2,   199,     2,     2, 
    582641       2,     2,     2,     2,     2,     2,     2,     2,     4,     2, 
    583      164,     5,   165,     2,     2,     2,     2,     2,     2,     2, 
     642     196,     5,   197,     2,     2,     2,     2,     2,     2,     2, 
    584643       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
    585644       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
    586        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
     645       2,   202,     2,   203,     2,   201,     2,     2,     2,     2, 
    587646       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
    588647       2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
     
    616675     141,   142,   143,   144,   145,   146,   147,   148,   149,   150, 
    617676     151,   152,   153,   154,   155,   156,   157,   158,   159,   160, 
    618      161 
     677     161,   162,   163,   164,   165,   166,   167,   168,   169,   170, 
     678     171,   172,   173,   174,   175,   176,   177,   178,   179,   180, 
     679     181,   182,   183,   184,   185,   186,   187,   188,   189,   190, 
     680     191,   192,   193 
    619681}; 
    620682 
     
    624686static const yytype_uint16 yyprhs[] = 
    625687{ 
    626        0,     0,     3,     4,     7,     9,    11,    14,    16,    19, 
    627       21,    25,    28,    31,    33,    37,    41,    44,    47,    51, 
    628       53,    54,    55,    57,    58,    61,    66,    69,    75,    78, 
    629       80,    83,    85,    87,    88,    91,    95,    96,    99,   103, 
    630      105,   109,   111,   113,   116,   121,   124,   127,   132,   135, 
    631      137,   139,   141,   143,   145,   147,   149,   151,   153,   158, 
    632      162,   166,   169,   172,   173,   175,   177,   179,   181,   183, 
    633      185,   187,   189,   191,   193,   195,   197,   199,   201,   203, 
    634      205,   207,   209,   211,   213,   215,   217,   219,   221,   223, 
    635      225,   229,   233,   239,   241,   245,   249,   252,   257,   259, 
    636      263,   264,   266,   269,   273,   275,   277,   280,   282,   286, 
    637      291,   296,   305,   307,   311,   314,   318,   324,   328,   330, 
    638      331,   334,   336,   341,   345,   348,   352,   356,   360,   364, 
    639      365,   367,   370,   374,   380,   384,   386,   392,   398,   401, 
    640      405,   408,   412,   414,   416,   420,   424,   427,   431,   437, 
    641      439,   442,   444,   448,   451,   453,   457,   458,   460,   462, 
    642      466,   470,   473,   475,   479,   482,   485,   491,   498,   499, 
    643      502,   505,   509,   513,   514,   517,   522,   526,   530,   535, 
    644      538,   540,   542,   544,   546,   548,   550,   552,   553,   556, 
    645      558,   562,   563,   566,   570,   572,   576,   579,   583,   585, 
    646      587,   589,   591,   593,   594,   598,   599,   601,   605,   607, 
    647      611,   613,   615,   617,   620,   622,   627,   629,   631,   633, 
    648      635,   637,   639,   641,   643,   645,   647,   648,   652,   654, 
    649      658,   660,   662,   665,   668,   672,   674,   676,   678,   680, 
    650      682,   686,   690,   694,   699,   704,   708,   713,   718,   722, 
    651      727,   732,   737,   742,   747,   752,   757,   762,   767,   772, 
    652      777,   782,   787,   791,   796,   800,   805,   810,   812,   816, 
    653      818,   820,   822,   825,   828,   831,   833,   835,   838,   841, 
    654      844,   847,   850,   853,   856,   859,   862,   866,   870,   873, 
    655      876,   879,   882,   885,   888,   891,   894,   897,   900,   901, 
    656      903,   906,   909,   912,   914,   916,   918,   920,   921,   923, 
    657      926,   931,   937,   942,   947,   951,   953,   956,   958,   962, 
    658      964,   966,   970,   976,   981,   985,   988,   991,   993,   995, 
    659      997,   999,  1001,  1003,  1005,  1007,  1010,  1013,  1015,  1018, 
    660     1020,  1022,  1023,  1025,  1031,  1032,  1034,  1036,  1038,  1039, 
    661     1042,  1045,  1051,  1054,  1059,  1066,  1073,  1075,  1077,  1081, 
    662     1085,  1087,  1091,  1095,  1097,  1099,  1101,  1103,  1105,  1107, 
    663     1109,  1111,  1113,  1116,  1118,  1120,  1123,  1126,  1129,  1133, 
    664     1136,  1142,  1148,  1151,  1154,  1157,  1160,  1162,  1167,  1169, 
    665     1172,  1175,  1178,  1181,  1183,  1185,  1187,  1189,  1195,  1202, 
    666     1203,  1207,  1208,  1213,  1214,  1219,  1224,  1226,  1228,  1230, 
    667     1232,  1234,  1238,  1243,  1245,  1248,  1250,  1253,  1254,  1255, 
    668     1258,  1262,  1264,  1269,  1271,  1273,  1278,  1281,  1287,  1291, 
    669     1295,  1297,  1302,  1305,  1312,  1321,  1327,  1331,  1333,  1335, 
    670     1337,  1339,  1341,  1344,  1351,  1352,  1354,  1357,  1361,  1362, 
    671     1364,  1367,  1371,  1379,  1385,  1391,  1398,  1400,  1403,  1405, 
    672     1408,  1414,  1419,  1420,  1422,  1425,  1429,  1436,  1441,  1444, 
    673     1448,  1450,  1453,  1457,  1459,  1461,  1465,  1467,  1470,  1473, 
    674     1477,  1479,  1481,  1483,  1485,  1487,  1489,  1491,  1493,  1495, 
    675     1496,  1501,  1509,  1511,  1515,  1518,  1521,  1524,  1525,  1529, 
    676     1530,  1532,  1535,  1538,  1540,  1542,  1546,  1548,  1551,  1553, 
    677     1555,  1556,  1558,  1561,  1564,  1565,  1568,  1572,  1576,  1580, 
    678     1582,  1586,  1588,  1590,  1594,  1596,  1598,  1600,  1604,  1610, 
    679     1615,  1618,  1621,  1622,  1624,  1626,  1628,  1630,  1632,  1634, 
    680     1636,  1638,  1640,  1644,  1646,  1648,  1652,  1656,  1660,  1664, 
    681     1667,  1671,  1674,  1677,  1680,  1683,  1686,  1689,  1692,  1696, 
    682     1698,  1700,  1702,  1704,  1708,  1711,  1716,  1719,  1722,  1728, 
    683     1729,  1731,  1734,  1736,  1738,  1740,  1742,  1746,  1750,  1754, 
    684     1758,  1762,  1766,  1772,  1778,  1784,  1790,  1798,  1807,  1810, 
    685     1812,  1816,  1818,  1820,  1824,  1825,  1830,  1832 
     688       0,     0,     3,     4,     7,     9,    11,    13,    16,    18, 
     689      20,    24,    27,    29,    33,    37,    39,    43,    45,    46, 
     690      48,    50,    52,    54,    56,    58,    59,    61,    63,    65, 
     691      68,    71,    74,    76,    78,    81,    84,    87,    90,    93, 
     692      96,    99,   102,   105,   109,   113,   116,   119,   122,   125, 
     693     128,   131,   134,   137,   140,   143,   144,   146,   149,   152, 
     694     155,   157,   159,   161,   163,   164,   166,   169,   170,   176, 
     695     177,   184,   186,   187,   193,   198,   200,   203,   205,   209, 
     696     211,   213,   217,   223,   228,   232,   235,   238,   240,   242, 
     697     244,   246,   248,   250,   252,   254,   257,   260,   262,   265, 
     698     267,   269,   270,   272,   273,   275,   278,   279,   281,   282, 
     699     284,   286,   289,   291,   293,   295,   297,   299,   301,   303, 
     700     305,   307,   309,   311,   313,   315,   316,   318,   321,   322, 
     701     324,   326,   329,   331,   333,   334,   336,   340,   341,   343, 
     702     345,   348,   350,   352,   354,   356,   358,   360,   362,   364, 
     703     366,   368,   370,   372,   374,   376,   378,   380,   382,   384, 
     704     386,   388,   390,   392,   394,   396,   398,   400,   402,   405, 
     705     410,   413,   415,   417,   419,   421,   423,   425,   427,   429, 
     706     431,   433,   435,   437,   439,   441,   443,   445,   447,   449, 
     707     451,   453,   455,   457,   458,   460,   462,   464,   465,   467, 
     708     469,   471,   473,   475,   476,   479,   483,   487,   488,   492, 
     709     493,   497,   498,   502,   503,   507,   508,   512,   513,   517, 
     710     518,   520,   524,   530,   533,   535,   538,   540,   544,   546, 
     711     548,   550,   553,   555,   559,   565,   567,   569,   571,   573, 
     712     575,   577,   578,   581,   582,   584,   586,   596,   602,   608, 
     713     618,   622,   628,   631,   635,   639,   641,   643,   645,   647, 
     714     649,   651,   652,   657,   662,   670,   671,   674,   675,   678, 
     715     680,   684,   686,   689,   691,   695,   697,   700,   704,   705, 
     716     707,   709,   712,   714,   719,   720,   722,   726,   728,   732, 
     717     734,   736,   737,   743,   745,   747,   751,   756,   757,   761, 
     718     763,   765,   766,   768,   771,   774,   777,   779,   781,   786, 
     719     788,   792,   794,   798,   802,   807,   809,   813,   815,   819, 
     720     821,   823,   825,   829,   833,   835,   837,   839,   841,   845, 
     721     847,   849,   855,   861,   869,   871,   872,   873,   880,   881, 
     722     884,   885,   887,   890,   894,   896,   898,   899,   905,   907, 
     723     908,   914,   916,   918,   920,   922,   924,   926,   928,   932, 
     724     937,   939,   941,   942,   944,   947,   950,   953,   955,   957, 
     725     959,   960,   961,   966,   969,   974,   976,   978,   980,   982, 
     726     984,   986,   990,   994,   996,   998,  1000,  1002,  1006,  1008, 
     727    1011,  1013,  1017,  1019,  1023,  1024,  1027,  1028,  1031,  1033, 
     728    1037,  1040,  1042,  1044,  1046,  1047,  1052,  1053,  1056,  1058, 
     729    1062,  1064,  1066,  1071,  1073,  1077,  1079,  1081,  1083,  1084, 
     730    1090,  1091,  1093,  1096,  1100,  1105,  1107,  1111,  1113,  1117, 
     731    1119,  1121,  1131,  1143,  1145,  1149,  1151,  1153,  1155,  1157, 
     732    1160,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1177,  1180, 
     733    1182,  1184,  1186,  1188,  1190,  1192,  1194,  1196,  1198,  1199, 
     734    1200,  1207,  1208,  1214,  1215,  1223,  1224,  1225,  1233,  1235, 
     735    1239,  1243,  1244,  1245,  1252,  1253,  1255,  1256,  1258,  1260, 
     736    1264,  1266,  1268,  1270,  1272,  1273,  1278,  1279,  1285,  1287, 
     737    1291,  1296,  1298,  1302,  1304,  1308,  1316,  1317,  1324,  1326, 
     738    1330,  1332,  1336,  1338,  1342,  1343,  1350,  1352,  1356,  1358, 
     739    1360,  1362,  1363,  1364,  1372,  1373,  1375,  1377,  1381,  1382, 
     740    1384,  1385,  1386,  1392,  1394,  1398,  1400,  1401,  1407,  1409, 
     741    1411,  1413,  1415,  1417,  1419,  1421,  1423,  1425,  1427,  1429, 
     742    1431,  1433,  1435,  1437,  1442,  1447,  1451,  1454,  1455,  1459, 
     743    1461,  1462,  1468,  1470,  1472,  1474,  1476,  1481,  1482,  1484, 
     744    1488,  1491,  1493,  1496,  1500,  1505,  1508,  1510,  1514,  1519, 
     745    1522,  1524,  1527,  1531,  1536,  1539,  1540,  1542,  1543,  1544, 
     746    1553,  1554,  1557,  1559,  1563,  1566,  1570,  1572,  1574,  1576, 
     747    1580,  1583,  1585,  1587,  1588,  1592,  1594,  1598,  1601,  1602, 
     748    1605,  1607,  1609,  1610,  1611,  1620,  1622,  1626,  1627,  1630, 
     749    1632,  1636,  1639,  1643,  1645,  1647,  1649,  1651,  1655,  1657, 
     750    1659,  1663,  1665,  1669,  1671,  1674,  1678,  1680,  1683,  1685, 
     751    1687,  1689,  1691,  1693,  1695,  1699,  1701,  1703,  1707,  1709, 
     752    1711,  1713,  1715,  1717,  1719,  1721,  1723,  1725,  1727,  1729, 
     753    1731,  1733,  1736,  1738,  1742,  1744,  1748,  1750,  1754,  1756, 
     754    1758,  1760,  1762,  1764,  1766,  1768,  1770,  1772,  1773,  1775, 
     755    1777,  1779,  1781,  1783,  1785,  1787,  1789,  1794,  1800,  1806, 
     756    1814,  1819,  1820,  1824,  1826,  1830,  1832,  1836,  1839,  1843, 
     757    1845,  1847,  1851,  1853,  1855,  1857,  1863,  1869,  1870,  1873, 
     758    1874,  1878,  1879,  1883,  1889,  1891,  1893,  1895,  1897,  1899, 
     759    1904,  1910,  1913,  1917,  1920,  1924,  1925,  1927,  1928,  1931, 
     760    1933,  1935,  1937,  1941,  1945,  1950,  1953,  1959,  1963,  1968, 
     761    1971,  1977,  1981,  1986,  1989,  1995,  1999,  2006,  2015,  2021, 
     762    2025,  2027,  2029,  2031,  2034,  2038,  2043,  2045,  2047,  2051, 
     763    2054,  2056,  2058,  2060,  2062,  2064,  2066,  2068,  2071,  2076, 
     764    2078,  2080,  2082,  2084,  2086,  2088,  2090,  2092,  2097,  2101, 
     765    2104,  2108,  2112,  2115,  2116,  2118,  2122,  2128,  2129,  2131, 
     766    2134,  2137,  2138,  2140,  2143,  2146,  2154,  2163,  2170,  2177, 
     767    2185,  2188,  2192,  2195,  2199,  2205,  2209,  2210,  2212,  2215, 
     768    2218,  2219,  2228,  2229,  2236,  2240,  2245,  2246,  2250,  2251, 
     769    2256,  2257,  2262,  2264,  2266,  2270,  2272,  2275,  2278,  2282, 
     770    2284,  2287,  2291,  2295,  2306,  2310,  2313,  2317,  2319,  2321, 
     771    2323,  2325,  2327,  2329,  2331,  2332,  2333,  2341,  2343,  2347, 
     772    2349,  2352,  2355,  2358,  2361,  2364,  2367,  2370,  2373,  2376, 
     773    2380,  2382,  2384,  2385,  2393,  2395,  2399,  2401,  2404,  2407, 
     774    2410,  2414,  2415,  2422,  2423,  2431,  2436,  2443,  2444,  2451, 
     775    2452,  2460,  2465,  2472,  2474,  2478,  2480,  2482,  2485,  2487, 
     776    2489,  2492,  2495,  2498,  2501,  2504,  2507,  2511,  2513,  2515, 
     777    2517,  2519,  2523,  2525,  2527,  2529,  2533,  2535,  2537,  2543, 
     778    2545,  2549,  2551,  2557,  2565,  2569,  2575,  2577,  2581,  2583, 
     779    2586,  2589,  2592,  2595,  2599,  2605,  2607,  2611,  2613,  2616, 
     780    2619,  2622,  2625,  2626,  2634,  2635,  2645,  2646,  2648,  2652, 
     781    2654,  2657,  2660,  2663,  2666,  2669,  2672,  2675,  2679,  2682, 
     782    2685,  2688,  2689,  2695,  2696,  2698,  2699,  2704,  2705,  2712, 
     783    2713,  2715,  2716,  2718,  2721,  2722,  2724,  2726,  2729,  2731, 
     784    2733,  2735,  2738,  2739,  2740,  2749,  2750,  2762,  2763,  2765, 
     785    2769,  2770,  2772,  2778,  2779,  2781,  2782,  2784,  2785,  2790, 
     786    2791,  2792,  2799,  2800,  2802,  2803,  2805,  2807,  2808,  2811, 
     787    2813,  2817,  2821,  2823,  2827,  2829,  2831,  2833,  2835,  2837, 
     788    2841,  2846,  2848,  2852,  2854,  2859,  2861,  2865,  2867,  2871, 
     789    2872,  2878,  2879,  2883,  2884,  2890,  2891,  2892,  2900,  2901, 
     790    2906,  2908,  2910,  2912,  2914,  2918,  2920,  2924,  2926,  2928, 
     791    2930,  2931,  2933,  2935,  2938,  2940,  2942,  2944,  2950,  2951, 
     792    2952,  2963,  2965,  2967,  2969,  2970,  2972,  2975,  2978,  2979, 
     793    2981,  2982,  2984,  2989,  2990,  2998,  2999,  3001,  3007,  3008, 
     794    3015,  3017,  3024,  3025,  3026,  3028,  3029,  3030,  3036,  3037, 
     795    3039,  3041,  3045,  3047,  3049,  3053,  3058,  3059,  3064,  3066, 
     796    3068,  3072,  3076,  3078,  3082,  3084,  3085,  3087 
    686797}; 
    687798 
     
    689800static const yytype_int16 yyrhs[] = 
    690801{ 
    691      170,     0,    -1,    -1,   170,   171,    -1,   172,    -1,   173, 
    692       -1,   140,   173,    -1,     1,    -1,   166,   175,    -1,    24, 
    693       -1,   172,   166,   175,    -1,   172,    24,    -1,   172,   140, 
    694       -1,   174,    -1,   173,    24,   166,    -1,   173,    24,   174, 
    695       -1,   178,   175,    -1,   186,   175,    -1,    28,   181,   175, 
    696       -1,   282,    -1,    -1,    -1,    70,    -1,    -1,    26,   183, 
    697       -1,   176,    29,   180,   182,    -1,    30,   180,    -1,   176, 
    698       31,   180,   182,   177,    -1,    92,   160,    -1,   161,    -1, 
    699      179,   161,    -1,   160,    -1,   153,    -1,    -1,   162,   163, 
    700       -1,   162,   184,   163,    -1,    -1,   162,   163,    -1,   162, 
    701      184,   163,    -1,   185,    -1,   184,     3,   185,    -1,   160, 
    702       -1,    21,    -1,   228,   196,    -1,   141,   187,   195,   336, 
    703       -1,   143,   336,    -1,   114,   190,    -1,   198,   162,   221, 
    704      163,    -1,   198,   221,    -1,   215,    -1,   203,    -1,   225, 
    705       -1,   211,    -1,   213,    -1,   212,    -1,   276,    -1,   223, 
    706       -1,   209,    -1,    66,   162,   249,   163,    -1,   108,   195, 
    707      214,    -1,   110,   195,   189,    -1,    65,   191,    -1,   199, 
    708      166,    -1,    -1,   244,    -1,    42,    -1,    34,    -1,    39, 
    709       -1,    54,    -1,    77,    -1,    40,    -1,    43,    -1,    60, 
    710       -1,    55,    -1,    56,    -1,    57,    -1,    58,    -1,    59, 
    711       -1,    62,    -1,    63,    -1,    64,    -1,    67,    -1,    68, 
    712       -1,    69,    -1,    72,    -1,    73,    -1,    74,    -1,    75, 
    713       -1,   160,    -1,   188,    -1,   189,     3,   188,    -1,   162, 
    714      194,   163,    -1,   190,     3,   162,   194,   163,    -1,   192, 
    715       -1,   191,     3,   192,    -1,   162,   193,   163,    -1,   267, 
    716      245,    -1,   193,     3,   267,   245,    -1,   249,    -1,   194, 
    717        3,   249,    -1,    -1,   131,    -1,   226,   227,    -1,   197, 
    718      180,   182,    -1,    31,    -1,    25,    -1,   155,   200,    -1, 
    719      201,    -1,   200,   220,   201,    -1,   160,    22,   202,    22, 
    720       -1,   206,    22,   202,    22,    -1,   162,   257,     3,   368, 
    721      163,    22,   202,    22,    -1,   207,    -1,   207,     3,   202, 
    722       -1,   204,   205,    -1,   204,   219,   205,    -1,   203,   220, 
    723      219,   220,   205,    -1,   203,     3,   205,    -1,   116,    -1, 
    724       -1,   160,   245,    -1,   160,    -1,   160,   162,   249,   163, 
    725       -1,   206,     3,   206,    -1,   208,   268,    -1,   207,    19, 
    726      207,    -1,   207,    20,   207,    -1,   207,    21,   207,    -1, 
    727      207,   167,   207,    -1,    -1,   253,    -1,   111,   267,    -1, 
    728      111,   219,   267,    -1,   209,   220,   219,   220,   267,    -1, 
    729      209,     3,   267,    -1,   106,    -1,   210,   220,   160,   245, 
    730      233,    -1,   211,     3,   160,   245,   233,    -1,    79,   166, 
    731       -1,    79,   195,   214,    -1,    78,   166,    -1,    78,   195, 
    732      214,    -1,   160,    -1,   133,    -1,   214,     3,   160,    -1, 
    733      214,     3,   133,    -1,   216,   217,    -1,   216,   219,   217, 
    734       -1,   215,   220,   219,   220,   217,    -1,   123,    -1,   124, 
    735      123,    -1,   218,    -1,   217,     3,   218,    -1,   160,   245, 
    736       -1,    18,    -1,    22,   160,    22,    -1,    -1,     3,    -1, 
    737      222,    -1,   221,     3,   222,    -1,   160,     5,   249,    -1, 
    738      128,   224,    -1,   160,    -1,   224,     3,   160,    -1,   118, 
    739      119,    -1,   118,   130,    -1,   240,   160,   245,   233,   274, 
    740       -1,   226,     3,   160,   245,   233,   274,    -1,    -1,   232, 
    741      235,    -1,   231,   229,    -1,   232,    21,   161,    -1,   142, 
    742      237,   163,    -1,    -1,    21,   161,    -1,    21,   162,   230, 
    743      163,    -1,   162,   230,   163,    -1,   160,   238,   239,    -1, 
    744      160,     5,   238,   239,    -1,   238,   239,    -1,   152,    -1, 
    745      145,    -1,   146,    -1,   144,    -1,   158,    -1,   159,    -1, 
    746      147,    -1,    -1,    21,   234,    -1,   249,    -1,   162,    21, 
    747      163,    -1,    -1,    21,   236,    -1,   162,   237,   163,    -1, 
    748      249,    -1,   162,    21,   163,    -1,   160,   238,    -1,   160, 
    749        5,   238,    -1,   160,    -1,   161,    -1,   133,    -1,   249, 
    750       -1,    21,    -1,    -1,     3,   160,   238,    -1,    -1,   131, 
    751       -1,     3,   241,   131,    -1,   242,    -1,   241,     3,   242, 
    752       -1,    25,    -1,   244,    -1,    80,    -1,   106,   245,    -1, 
    753      108,    -1,   109,   162,   243,   163,    -1,   110,    -1,   113, 
    754       -1,   114,    -1,   116,    -1,   117,    -1,   136,    -1,   134, 
    755       -1,   135,    -1,    78,    -1,    79,    -1,    -1,   162,   246, 
    756      163,    -1,   247,    -1,   246,     3,   247,    -1,   248,    -1, 
    757        4,    -1,   249,     4,    -1,     4,   249,    -1,   249,     4, 
    758      248,    -1,    21,    -1,   249,    -1,   252,    -1,   275,    -1, 
    759      250,    -1,   162,   249,   163,    -1,    42,   251,   163,    -1, 
    760       33,   251,   163,    -1,    34,   162,   251,   163,    -1,    39, 
    761      162,   251,   163,    -1,    54,   251,   163,    -1,    77,   162, 
    762      251,   163,    -1,    40,   162,   249,   163,    -1,    43,   249, 
    763      163,    -1,   144,   162,   251,   163,    -1,    60,   162,   249, 
    764      163,    -1,    55,   162,   249,   163,    -1,    56,   162,   249, 
    765      163,    -1,    57,   162,   249,   163,    -1,    58,   162,   249, 
    766      163,    -1,    59,   162,   249,   163,    -1,    62,   162,   249, 
    767      163,    -1,    63,   162,   249,   163,    -1,    64,   162,   249, 
    768      163,    -1,    67,   162,   249,   163,    -1,    68,   162,   249, 
    769      163,    -1,    69,   162,   249,   163,    -1,    71,   249,   163, 
    770       -1,    72,   162,   251,   163,    -1,    73,   251,   163,    -1, 
    771       74,   162,   251,   163,    -1,    75,   162,   251,   163,    -1, 
    772      249,    -1,   251,     3,   249,    -1,   257,    -1,   268,    -1, 
    773      262,    -1,   249,   254,    -1,   253,   249,    -1,    11,   249, 
    774       -1,    19,    -1,    20,    -1,    19,   249,    -1,    20,   249, 
    775       -1,    21,   249,    -1,    23,   249,    -1,    13,   249,    -1, 
    776        7,   249,    -1,    16,   249,    -1,   165,   249,    -1,   164, 
    777      249,    -1,   165,     5,   249,    -1,   164,     5,   249,    -1, 
    778       17,   249,    -1,    14,   249,    -1,    15,   249,    -1,    12, 
    779      249,    -1,     6,   249,    -1,     8,   249,    -1,     9,   249, 
    780       -1,    10,   249,    -1,    22,   255,    -1,     5,   256,    -1, 
    781       -1,   249,    -1,     5,   249,    -1,    22,   249,    -1,     5, 
    782      249,    -1,   249,    -1,   267,    -1,   261,    -1,   259,    -1, 
    783       -1,   260,    -1,   260,   271,    -1,   261,   162,   263,   163, 
    784       -1,   261,   162,   263,   163,   271,    -1,   267,   162,   263, 
    785      163,    -1,   257,   168,   356,   257,    -1,   125,   366,   126, 
    786       -1,   258,    -1,   258,   264,    -1,   265,    -1,   264,     3, 
    787      265,    -1,   249,    -1,   266,    -1,   249,     4,   249,    -1, 
    788      249,     4,   249,     4,   249,    -1,     4,   249,     4,   249, 
    789       -1,     4,     4,   249,    -1,     4,   249,    -1,   249,     4, 
    790       -1,     4,    -1,   160,    -1,   138,    -1,   139,    -1,    41, 
    791       -1,   161,    -1,   157,    -1,   132,    -1,   268,   160,    -1, 
    792      269,   270,    -1,   153,    -1,   269,   153,    -1,   156,    -1, 
    793      154,    -1,    -1,   271,    -1,   162,   272,     4,   272,   163, 
    794       -1,    -1,   249,    -1,   166,    -1,   249,    -1,    -1,     5, 
    795      249,    -1,   122,   249,    -1,   162,   252,     3,   252,   163, 
    796       -1,   277,   160,    -1,   277,   160,     3,   278,    -1,   277, 
    797      160,     3,    27,     4,   166,    -1,   277,   160,     3,    27, 
    798        4,   280,    -1,   137,    -1,   279,    -1,   278,     3,   279, 
    799       -1,   160,   122,   160,    -1,   281,    -1,   280,     3,   281, 
    800       -1,   160,   122,   160,    -1,   160,    -1,   283,    -1,   331, 
    801       -1,   284,    -1,   300,    -1,   320,    -1,   310,    -1,   287, 
    802       -1,   115,    -1,   338,   340,    -1,   369,    -1,   341,    -1, 
    803      357,   352,    -1,   359,   350,    -1,   100,   352,    -1,   100, 
    804      352,   366,    -1,   103,   353,    -1,    96,   162,   370,   373, 
    805      163,    -1,   104,   162,   372,   373,   163,    -1,    76,   272, 
    806       -1,    81,   273,    -1,    61,   273,    -1,   348,   273,    -1, 
    807      339,    -1,   105,   162,   374,   163,    -1,   333,    -1,   334, 
    808      336,    -1,   332,   336,    -1,   335,   336,    -1,    93,   336, 
    809       -1,   319,    -1,   286,    -1,    90,    -1,   249,    -1,    35, 
    810      162,   294,   163,   293,    -1,   291,   172,   288,   289,   290, 
    811      297,    -1,    -1,   288,   292,   172,    -1,    -1,   289,   295, 
    812      172,   288,    -1,    -1,   290,   296,   172,   288,    -1,    35, 
    813      162,   294,   163,    -1,   293,    -1,   286,    -1,   287,    -1, 
    814      285,    -1,   249,    -1,    36,   294,   163,    -1,    36,   294, 
    815      163,   160,    -1,    37,    -1,    37,   160,    -1,    38,    -1, 
    816       38,   160,    -1,    -1,    -1,   299,   282,    -1,   299,   282, 
    817      172,    -1,   301,    -1,   302,   172,   307,   308,    -1,   303, 
    818       -1,   304,    -1,   160,     4,    89,   179,    -1,    89,   179, 
    819       -1,   160,     4,    89,   179,   305,    -1,    89,   179,   305, 
    820       -1,   160,     4,    89,    -1,    89,    -1,   160,     4,    89, 
    821      305,    -1,    89,   305,    -1,   220,   306,     5,   249,     3, 
    822      249,    -1,   220,   306,     5,   249,     3,   249,     3,   249, 
    823       -1,   220,    94,   162,   249,   163,    -1,   220,    95,   298, 
    824       -1,   267,    -1,   299,    -1,   309,    -1,   330,    -1,    91, 
    825       -1,    91,   160,    -1,   315,   172,   299,   311,   313,   318, 
    826       -1,    -1,   312,    -1,   311,   312,    -1,   316,   172,   299, 
    827       -1,    -1,   314,    -1,   313,   312,    -1,   317,   172,   299, 
    828       -1,   160,     4,    88,   162,   249,   163,    82,    -1,    88, 
    829      162,   249,   163,    82,    -1,    83,   162,   249,   163,    82, 
    830       -1,    83,   162,   249,   163,    82,   160,    -1,    84,    -1, 
    831       84,   160,    -1,    85,    -1,    85,   160,    -1,    88,   162, 
    832      249,   163,   284,    -1,   323,   172,   321,   325,    -1,    -1, 
    833      322,    -1,   321,   322,    -1,   324,   172,   299,    -1,   160, 
    834        4,    45,   162,   249,   163,    -1,    45,   162,   249,   163, 
    835       -1,    44,   326,    -1,    44,   326,   160,    -1,   107,    -1, 
    836      107,   160,    -1,   162,   327,   163,    -1,   112,    -1,   328, 
    837       -1,   327,     3,   328,    -1,   329,    -1,   329,     4,    -1, 
    838        4,   329,    -1,   329,     4,   329,    -1,   249,    -1,   115, 
    839       -1,    32,    -1,   148,    -1,   151,    -1,   150,    -1,   149, 
    840       -1,   166,    -1,   160,    -1,    -1,   267,   337,   245,   245, 
    841       -1,   338,   168,   356,   267,   337,   245,   245,    -1,   161, 
    842       -1,   339,     3,   161,    -1,     5,   249,    -1,   122,   249, 
    843       -1,   344,   342,    -1,    -1,   162,   343,   163,    -1,    -1, 
    844      346,    -1,   345,   101,    -1,   345,   160,    -1,   120,    -1, 
    845      347,    -1,   346,     3,   347,    -1,   249,    -1,    21,   161, 
    846       -1,   127,    -1,   129,    -1,    -1,   363,    -1,   352,   349, 
    847       -1,   358,   351,    -1,    -1,     3,   363,    -1,   162,   354, 
    848      163,    -1,   162,   267,   163,    -1,   162,   161,   163,    -1, 
    849      161,    -1,   162,   252,   163,    -1,   160,    -1,   355,    -1, 
    850      354,     3,   355,    -1,   360,    -1,    21,    -1,    23,    -1, 
    851      267,   249,   245,    -1,   267,   249,   168,   356,   338,    -1, 
    852      267,   162,   266,   163,    -1,   267,    21,    -1,   267,    23, 
    853       -1,    -1,    97,    -1,    98,    -1,   101,    -1,   361,    -1, 
    854       21,    -1,   102,    -1,    99,    -1,    86,    -1,   361,    -1, 
    855      162,   360,   163,    -1,   257,    -1,   268,    -1,   360,   362, 
    856      360,    -1,   360,    21,   360,    -1,   360,    22,   360,    -1, 
    857      360,    23,   360,    -1,   362,   360,    -1,   360,    18,   360, 
    858       -1,    46,   249,    -1,    47,   249,    -1,    49,   249,    -1, 
    859       48,   249,    -1,    53,   249,    -1,    52,   249,    -1,    50, 
    860      249,    -1,   160,     5,   249,    -1,   250,    -1,    19,    -1, 
    861       20,    -1,   364,    -1,   363,     3,   364,    -1,   257,   365, 
    862       -1,   162,   363,   163,   365,    -1,   250,   365,    -1,   268, 
    863      365,    -1,   162,   363,     3,   368,   163,    -1,    -1,   254, 
    864       -1,   365,   254,    -1,   275,    -1,   250,    -1,   252,    -1, 
    865      367,    -1,   252,     3,   249,    -1,   252,     3,   367,    -1, 
    866      367,     3,   249,    -1,   367,     3,   367,    -1,   366,     3, 
    867      249,    -1,   366,     3,   367,    -1,   162,   252,     3,   368, 
    868      163,    -1,   162,   366,     3,   368,   163,    -1,   162,   367, 
    869        3,   368,   163,    -1,   160,     5,   249,     3,   249,    -1, 
    870      160,     5,   249,     3,   249,     3,   249,    -1,    87,   162, 
    871      249,     3,   249,   163,     3,   249,    -1,    87,   161,    -1, 
    872      371,    -1,   370,     3,   371,    -1,   257,    -1,   371,    -1, 
    873      372,     3,   371,    -1,    -1,     3,   121,     5,   257,    -1, 
    874      267,    -1,   374,     3,   267,    -1 
     802     205,     0,    -1,    -1,   205,   206,    -1,   207,    -1,   208, 
     803      -1,     1,    -1,   198,   210,    -1,    24,    -1,    65,    -1, 
     804     207,   198,   210,    -1,   207,    24,    -1,   209,    -1,   208, 
     805      24,   198,    -1,   208,    24,   209,    -1,   211,    -1,    28, 
     806     213,   210,    -1,    37,    -1,    -1,   664,    -1,   212,    -1, 
     807     644,    -1,   703,    -1,   718,    -1,   185,    -1,    -1,     3, 
     808      -1,   220,    -1,   233,    -1,   509,   217,    -1,   216,   509, 
     809      -1,    11,   509,    -1,    19,    -1,    20,    -1,    19,   509, 
     810      -1,    20,   509,    -1,    21,   509,    -1,    23,   509,    -1, 
     811      13,   509,    -1,     7,   509,    -1,    16,   509,    -1,   197, 
     812     509,    -1,   196,   509,    -1,   197,     5,   509,    -1,   196, 
     813       5,   509,    -1,    17,   509,    -1,    14,   509,    -1,    15, 
     814     509,    -1,    12,   509,    -1,     6,   509,    -1,     8,   509, 
     815      -1,     9,   509,    -1,    10,   509,    -1,    22,   218,    -1, 
     816       5,   219,    -1,    -1,   509,    -1,     5,   509,    -1,    22, 
     817     509,    -1,     5,   509,    -1,   509,    -1,   232,    -1,   227, 
     818      -1,   222,    -1,    -1,   225,    -1,   225,   451,    -1,    -1, 
     819     227,   194,   223,   228,   195,    -1,    -1,   227,   194,   224, 
     820     228,   195,   451,    -1,   110,    -1,    -1,   232,   194,   226, 
     821     228,   195,    -1,   220,   200,   735,   220,    -1,   221,    -1, 
     822     221,   229,    -1,   230,    -1,   229,     3,   230,    -1,   509, 
     823      -1,   231,    -1,   509,     4,   509,    -1,   509,     4,   509, 
     824       4,   509,    -1,     4,   509,     4,   509,    -1,     4,     4, 
     825     509,    -1,     4,   509,    -1,   509,     4,    -1,     4,    -1, 
     826     192,    -1,   166,    -1,   167,    -1,    44,    -1,   193,    -1, 
     827     189,    -1,   156,    -1,   233,   192,    -1,   234,   235,    -1, 
     828     185,    -1,   234,   185,    -1,   188,    -1,   186,    -1,    -1, 
     829     451,    -1,    -1,   509,    -1,   238,   239,    -1,    -1,   657, 
     830      -1,    -1,   240,    -1,   241,    -1,   240,   241,    -1,   291, 
     831      -1,   399,    -1,   643,    -1,   413,    -1,   252,    -1,   332, 
     832      -1,   521,    -1,   522,    -1,   547,    -1,   595,    -1,   730, 
     833      -1,   618,    -1,   567,    -1,    -1,   243,    -1,   253,   244, 
     834      -1,    -1,   245,    -1,   246,    -1,   245,   246,    -1,   253, 
     835      -1,   643,    -1,    -1,   248,    -1,   113,   207,   249,    -1, 
     836      -1,   250,    -1,   251,    -1,   250,   251,    -1,   703,    -1, 
     837     718,    -1,   367,    -1,   372,    -1,   429,    -1,   376,    -1, 
     838     393,    -1,   423,    -1,   681,    -1,   684,    -1,   419,    -1, 
     839     404,    -1,   254,    -1,   547,    -1,   577,    -1,   567,    -1, 
     840     533,    -1,   465,    -1,   521,    -1,   689,    -1,   608,    -1, 
     841     595,    -1,   566,    -1,   482,    -1,   593,    -1,   592,    -1, 
     842     634,    -1,    79,   236,    -1,   130,   194,   736,   195,    -1, 
     843     116,   733,    -1,   576,    -1,   637,    -1,   601,    -1,   522, 
     844      -1,   618,    -1,   612,    -1,   730,    -1,   631,    -1,   596, 
     845      -1,   532,    -1,   615,    -1,   594,    -1,   232,    -1,   257, 
     846      -1,   258,    -1,   259,    -1,   277,    -1,   280,    -1,   290, 
     847      -1,   281,    -1,   289,    -1,   232,    -1,    -1,   261,    -1, 
     848     168,    -1,   193,    -1,    -1,   263,    -1,   169,    -1,   514, 
     849      -1,    21,    -1,     4,    -1,    -1,   266,   267,    -1,   173, 
     850     267,   195,    -1,   173,   316,   195,    -1,    -1,   177,   268, 
     851     274,    -1,    -1,   176,   269,   274,    -1,    -1,   179,   270, 
     852     274,    -1,    -1,   190,   271,   274,    -1,    -1,   184,   272, 
     853     285,    -1,    -1,   178,   273,   274,    -1,    -1,   275,    -1, 
     854     194,   519,   195,    -1,   194,    95,     5,   519,   195,    -1, 
     855      21,   193,    -1,   277,    -1,   496,   277,    -1,   193,    -1, 
     856     193,   201,   278,    -1,   193,    -1,   192,    -1,   280,    -1, 
     857     496,   280,    -1,   189,    -1,   189,   201,   278,    -1,   194, 
     858     282,   175,   283,   195,    -1,   276,    -1,   279,    -1,   232, 
     859      -1,   276,    -1,   279,    -1,   259,    -1,    -1,    21,   288, 
     860      -1,    -1,   286,    -1,   287,    -1,   194,    74,     5,   264, 
     861       3,    95,     5,   519,   195,    -1,   194,   264,     3,   519, 
     862     195,    -1,   194,    95,     5,   519,   195,    -1,   194,    95, 
     863       5,   519,     3,    74,     5,   264,   195,    -1,   194,   264, 
     864     195,    -1,   194,    74,     5,   264,   195,    -1,    21,   288, 
     865      -1,    21,   288,     3,    -1,   194,   264,   195,    -1,   277, 
     866      -1,   185,    -1,   188,    -1,   186,    -1,   166,    -1,   167, 
     867      -1,    -1,   293,   292,   301,   300,    -1,   172,   294,   192, 
     868     207,    -1,   172,   295,   192,   194,   298,   195,   207,    -1, 
     869      -1,   295,   155,    -1,    -1,     3,   296,    -1,   297,    -1, 
     870     296,     3,   297,    -1,   348,    -1,    47,   195,    -1,   299, 
     871      -1,   298,     3,   299,    -1,   192,    -1,   174,   207,    -1, 
     872     174,   192,   207,    -1,    -1,   302,    -1,   303,    -1,   302, 
     873     303,    -1,   304,    -1,   265,   305,   309,   207,    -1,    -1, 
     874     155,    -1,     3,   306,   155,    -1,   307,    -1,   306,     3, 
     875     307,    -1,   348,    -1,   102,    -1,    -1,   131,   194,   308, 
     876     312,   195,    -1,   139,    -1,   310,    -1,   309,     3,   310, 
     877      -1,   232,   311,   284,   313,    -1,    -1,   194,   312,   195, 
     878      -1,   353,    -1,   359,    -1,    -1,   314,    -1,     5,   516, 
     879      -1,   147,   347,    -1,   147,   315,    -1,   440,    -1,   232, 
     880      -1,   232,   194,   317,   195,    -1,   318,    -1,   317,     3, 
     881     318,    -1,   264,    -1,   255,     5,   264,    -1,   316,   194, 
     882     195,    -1,   316,   194,   320,   195,    -1,   321,    -1,   320, 
     883       3,   321,    -1,   322,    -1,   255,     5,   322,    -1,   509, 
     884      -1,   528,    -1,   531,    -1,   150,   324,   151,    -1,   325, 
     885     324,   326,    -1,   327,    -1,   202,    -1,   203,    -1,   328, 
     886      -1,   327,     3,   328,    -1,   509,    -1,   329,    -1,   194, 
     887     327,     3,   330,   195,    -1,   331,     5,   514,     3,   514, 
     888      -1,   331,     5,   514,     3,   514,     3,   514,    -1,   553, 
     889      -1,    -1,    -1,   333,   265,   335,   341,   334,   207,    -1, 
     890      -1,   336,   155,    -1,    -1,   337,    -1,     3,   338,    -1, 
     891     337,     3,   338,    -1,   348,    -1,   102,    -1,    -1,   131, 
     892     194,   339,   352,   195,    -1,   133,    -1,    -1,   134,   194, 
     893     340,   366,   195,    -1,   135,    -1,   138,    -1,    25,    -1, 
     894     139,    -1,   141,    -1,   142,    -1,   342,    -1,   341,     3, 
     895     342,    -1,   344,   349,   284,   345,    -1,   232,    -1,   192, 
     896      -1,    -1,   346,    -1,     5,   516,    -1,   147,   347,    -1, 
     897     147,   315,    -1,   687,    -1,   100,    -1,   101,    -1,    -1, 
     898      -1,   194,   350,   352,   195,    -1,    47,   195,    -1,    47, 
     899       3,    52,   195,    -1,   353,    -1,   357,    -1,   359,    -1, 
     900     361,    -1,   364,    -1,   354,    -1,   353,     3,   354,    -1, 
     901     355,     4,   356,    -1,   356,    -1,   515,    -1,   515,    -1, 
     902     358,    -1,   357,     3,   358,    -1,     4,    -1,   355,     4, 
     903      -1,   360,    -1,   359,     3,   360,    -1,     4,    -1,   362, 
     904     363,    21,    -1,    -1,   353,     3,    -1,    -1,   355,     4, 
     905      -1,   365,    -1,   364,     3,   365,    -1,   363,    21,    -1, 
     906     160,    -1,   158,    -1,   159,    -1,    -1,   348,   369,   368, 
     907     207,    -1,    -1,   407,   370,    -1,   371,    -1,   370,     3, 
     908     371,    -1,   192,    -1,   680,    -1,   351,   407,   373,   207, 
     909      -1,   374,    -1,   373,     3,   374,    -1,   375,    -1,   433, 
     910      -1,   192,    -1,    -1,   187,   380,   378,   377,   207,    -1, 
     911      -1,   379,    -1,   434,   380,    -1,   379,   434,   380,    -1, 
     912     381,    22,   382,    22,    -1,   383,    -1,   381,     3,   383, 
     913      -1,   388,    -1,   382,     3,   388,    -1,   442,    -1,   384, 
     914      -1,   194,   385,     3,   387,     5,   519,     3,   519,   195, 
     915      -1,   194,   385,     3,   387,     5,   519,     3,   519,     3, 
     916     519,   195,    -1,   386,    -1,   385,     3,   386,    -1,   459, 
     917      -1,   457,    -1,   384,    -1,   553,    -1,   391,   389,    -1, 
     918     277,   389,    -1,   289,   389,    -1,   276,    -1,   279,    -1, 
     919     347,    -1,   315,    -1,   319,    -1,    -1,    21,   390,    -1, 
     920     256,    -1,   391,    -1,   276,    -1,   279,    -1,   347,    -1, 
     921     315,    -1,   319,    -1,   392,    -1,   440,    -1,    -1,    -1, 
     922     394,   131,   407,   396,   395,   207,    -1,    -1,   192,   194, 
     923     397,   352,   195,    -1,    -1,   396,     3,   192,   194,   398, 
     924     352,   195,    -1,    -1,    -1,    25,   400,   194,   402,   195, 
     925     401,   207,    -1,   403,    -1,   402,     3,   403,    -1,   192, 
     926       5,   516,    -1,    -1,    -1,   405,   141,   407,   408,   406, 
     927     207,    -1,    -1,   155,    -1,    -1,   409,    -1,   410,    -1, 
     928     409,     3,   410,    -1,   343,    -1,   411,    -1,   433,    -1, 
     929     232,    -1,    -1,   412,   143,   415,   207,    -1,    -1,   412, 
     930     143,   144,   414,   207,    -1,   416,    -1,   415,     3,   416, 
     931      -1,   265,   194,   417,   195,    -1,   418,    -1,   417,     3, 
     932     418,    -1,   192,    -1,   192,    20,   192,    -1,   136,    22, 
     933     192,    22,   421,   420,   207,    -1,    -1,   420,   434,    22, 
     934     192,    22,   421,    -1,   422,    -1,   421,     3,   422,    -1, 
     935     443,    -1,    83,   424,   207,    -1,   425,    -1,   424,     3, 
     936     425,    -1,    -1,   194,   426,   428,     3,   427,   195,    -1, 
     937     428,    -1,   427,     3,   428,    -1,   443,    -1,   459,    -1, 
     938     451,    -1,    -1,    -1,   148,   430,   432,   437,   435,   431, 
     939     207,    -1,    -1,   433,    -1,    18,    -1,    22,   192,    22, 
     940      -1,    -1,     3,    -1,    -1,    -1,   435,   434,   433,   436, 
     941     437,    -1,   438,    -1,   437,     3,   438,    -1,   192,    -1, 
     942      -1,   192,   194,   439,   352,   195,    -1,   459,    -1,   460, 
     943      -1,   458,    -1,   451,    -1,   442,    -1,   440,    -1,   232, 
     944      -1,   445,    -1,   442,    -1,   442,    -1,   448,    -1,   442, 
     945      -1,   450,    -1,   442,    -1,   453,    -1,   453,   194,   452, 
     946     195,    -1,   289,   194,   452,   195,    -1,   513,     4,   513, 
     947      -1,   455,   454,    -1,    -1,   454,   200,   455,    -1,   232, 
     948      -1,    -1,   232,   194,   456,   461,   195,    -1,   458,    -1, 
     949     453,    -1,   453,    -1,   453,    -1,   453,   194,   452,   195, 
     950      -1,    -1,   462,    -1,   461,     3,   462,    -1,   509,   463, 
     951      -1,     4,    -1,     4,   509,    -1,     4,     4,   509,    -1, 
     952       4,   509,     4,   509,    -1,   155,   509,    -1,   464,    -1, 
     953     232,     5,   509,    -1,   232,     5,    21,   261,    -1,    21, 
     954     261,    -1,     4,    -1,     4,   509,    -1,     4,     4,   509, 
     955      -1,     4,   509,     4,   509,    -1,   155,   509,    -1,    -1, 
     956     512,    -1,    -1,    -1,   119,   194,   466,   473,   468,   195, 
     957     467,   207,    -1,    -1,     3,   469,    -1,   470,    -1,   469, 
     958       3,   470,    -1,    98,   472,    -1,   146,     5,   471,    -1, 
     959     449,    -1,   447,    -1,   474,    -1,   473,     3,   474,    -1, 
     960     475,   476,    -1,   443,    -1,   458,    -1,    -1,   194,   477, 
     961     195,    -1,   478,    -1,   477,     3,   478,    -1,   479,   481, 
     962      -1,    -1,   480,     4,    -1,   514,    -1,   514,    -1,    -1, 
     963      -1,   129,   194,   483,   485,   486,   195,   484,   207,    -1, 
     964     475,    -1,   485,     3,   475,    -1,    -1,     3,   487,    -1, 
     965     488,    -1,   487,     3,   488,    -1,    98,   472,    -1,   146, 
     966       5,   471,    -1,   440,    -1,   258,    -1,   323,    -1,   687, 
     967      -1,   194,   509,   195,    -1,   489,    -1,   490,    -1,   490, 
     968     494,   491,    -1,   491,    -1,   492,   495,   491,    -1,   492, 
     969      -1,   496,   492,    -1,   493,   496,   492,    -1,   276,    -1, 
     970     493,   276,    -1,    23,    -1,    21,    -1,    22,    -1,    19, 
     971      -1,    20,    -1,   493,    -1,   497,   498,   493,    -1,    18, 
     972      -1,   497,    -1,   497,   500,   497,    -1,    13,    -1,    12, 
     973      -1,    17,    -1,    15,    -1,    16,    -1,    14,    -1,   162, 
     974      -1,   163,    -1,   196,    -1,   164,    -1,   197,    -1,   165, 
     975      -1,   499,    -1,   505,   499,    -1,   501,    -1,   502,   506, 
     976     501,    -1,   502,    -1,   503,   507,   502,    -1,   503,    -1, 
     977     504,   508,   503,    -1,    11,    -1,    10,    -1,     9,    -1, 
     978       7,    -1,     6,    -1,   504,    -1,   511,    -1,   509,    -1, 
     979     509,    -1,    -1,   514,    -1,   512,    -1,   514,    -1,   509, 
     980      -1,   518,    -1,   511,    -1,   520,    -1,   512,    -1,   442, 
     981       5,   509,   207,    -1,   261,   442,     5,   509,   207,    -1, 
     982     440,   523,   147,   528,   207,    -1,   440,   194,   525,   195, 
     983     147,   528,   207,    -1,   440,   147,   531,   207,    -1,    -1, 
     984     194,   524,   195,    -1,   526,    -1,   524,     3,   526,    -1, 
     985     527,    -1,   525,     3,   527,    -1,   480,     4,    -1,   480, 
     986       4,   481,    -1,   442,    -1,   192,    -1,   441,   200,   529, 
     987      -1,   509,    -1,   529,    -1,   530,    -1,    38,   194,   540, 
     988     195,   539,    -1,   537,   534,   535,   536,   543,    -1,    -1, 
     989     534,   538,    -1,    -1,   535,   541,   534,    -1,    -1,   536, 
     990     542,   534,    -1,    38,   194,   540,   195,   207,    -1,   539, 
     991      -1,   532,    -1,   533,    -1,   521,    -1,   509,    -1,    39, 
     992     540,   195,   207,    -1,    39,   540,   195,   192,   207,    -1, 
     993      40,   207,    -1,    40,   192,   207,    -1,    41,   207,    -1, 
     994      41,   192,   207,    -1,    -1,   546,    -1,    -1,   546,   246, 
     995      -1,   548,    -1,   557,    -1,   548,    -1,   549,   554,   555, 
     996      -1,   551,   554,   555,    -1,   192,     4,   171,   207,    -1, 
     997     171,   207,    -1,   192,     4,   171,   552,   207,    -1,   171, 
     998     552,   207,    -1,   192,     4,   170,   207,    -1,   170,   207, 
     999      -1,   192,     4,   170,   552,   207,    -1,   170,   552,   207, 
     1000      -1,   192,     4,   112,   207,    -1,   112,   207,    -1,   192, 
     1001       4,   112,   552,   207,    -1,   112,   552,   207,    -1,   214, 
     1002     553,     5,   509,     3,   509,    -1,   214,   553,     5,   509, 
     1003       3,   509,     3,   509,    -1,   214,   117,   194,   509,   195, 
     1004      -1,   214,   118,   544,    -1,   232,    -1,   545,    -1,   556, 
     1005      -1,   263,   595,    -1,   262,   114,   207,    -1,   262,   114, 
     1006     192,   207,    -1,   558,    -1,   561,    -1,   549,   554,   559, 
     1007      -1,   263,   560,    -1,   465,    -1,   521,    -1,   689,    -1, 
     1008     608,    -1,   482,    -1,   634,    -1,   593,    -1,   128,   734, 
     1009      -1,   130,   194,   736,   195,    -1,   576,    -1,   637,    -1, 
     1010     601,    -1,   618,    -1,   612,    -1,   631,    -1,   532,    -1, 
     1011     615,    -1,   549,   554,   562,   563,    -1,   549,   554,   563, 
     1012      -1,   550,   554,    -1,   562,   550,   554,    -1,   550,   554, 
     1013     564,    -1,   263,   254,    -1,    -1,   192,    -1,    79,   565, 
     1014     207,    -1,   572,   545,   568,   570,   575,    -1,    -1,   569, 
     1015      -1,   568,   569,    -1,   573,   545,    -1,    -1,   571,    -1, 
     1016     570,   569,    -1,   574,   545,    -1,   192,     4,   111,   509, 
     1017     195,   104,   207,    -1,   261,   192,     4,   111,   509,   195, 
     1018     104,   207,    -1,   260,   111,   509,   195,   104,   207,    -1, 
     1019     105,   194,   509,   195,   104,   207,    -1,   105,   194,   509, 
     1020     195,   104,   192,   207,    -1,   106,   207,    -1,   106,   192, 
     1021     207,    -1,   107,   207,    -1,   107,   192,   207,    -1,   260, 
     1022     111,   509,   195,   254,    -1,   580,   578,   584,    -1,    -1, 
     1023     579,    -1,   578,   579,    -1,   583,   545,    -1,    -1,   192, 
     1024       4,    49,   194,   509,   195,   581,   207,    -1,    -1,    49, 
     1025     194,   509,   195,   582,   207,    -1,    48,   587,   207,    -1, 
     1026      48,   587,   192,   207,    -1,    -1,   132,   585,   207,    -1, 
     1027      -1,   132,   192,   586,   207,    -1,    -1,   194,   588,   589, 
     1028     195,    -1,   137,    -1,   590,    -1,   589,     3,   590,    -1, 
     1029     591,    -1,   591,     4,    -1,     4,   591,    -1,   591,     4, 
     1030     591,    -1,   509,    -1,    94,   207,    -1,    94,   192,   207, 
     1031      -1,   109,   261,   207,    -1,   260,   111,   509,   195,   261, 
     1032       3,   261,     3,   261,   207,    -1,   260,   140,   207,    -1, 
     1033     154,   207,    -1,   154,   597,   207,    -1,   517,    -1,   519, 
     1034      -1,   599,    -1,    21,    -1,   600,    -1,   514,    -1,   446, 
     1035      -1,    -1,    -1,   120,   194,   602,   604,   195,   603,   207, 
     1036      -1,   605,    -1,   604,     3,   605,    -1,   599,    -1,    59, 
     1037     599,    -1,    54,   510,    -1,    55,   510,    -1,    66,   261, 
     1038      -1,    50,   606,    -1,    56,   510,    -1,    68,   449,    -1, 
     1039      67,   510,    -1,    57,   514,    -1,    58,     5,   510,    -1, 
     1040     510,    -1,   447,    -1,    -1,   260,   121,   194,   609,   610, 
     1041     195,   207,    -1,   611,    -1,   610,     3,   611,    -1,   599, 
     1042      -1,    59,   599,    -1,    68,   449,    -1,    66,   261,    -1, 
     1043      58,     5,   510,    -1,    -1,   260,   126,   619,   195,   613, 
     1044     207,    -1,    -1,   260,   126,   619,   195,   623,   614,   207, 
     1045      -1,   260,   127,   622,   207,    -1,   260,   127,   622,     3, 
     1046     623,   207,    -1,    -1,   260,   123,   619,   195,   616,   207, 
     1047      -1,    -1,   260,   123,   619,   195,   625,   617,   207,    -1, 
     1048     260,   108,   622,   207,    -1,   260,   108,   622,     3,   625, 
     1049     207,    -1,   621,    -1,   619,     3,   621,    -1,   192,    -1, 
     1050     598,    -1,    59,   598,    -1,   622,    -1,   620,    -1,    62, 
     1051     620,    -1,    61,   622,    -1,    63,   261,    -1,    64,   261, 
     1052      -1,    66,   261,    -1,    68,   449,    -1,    51,     5,   514, 
     1053      -1,   511,    -1,   261,    -1,    21,    -1,   624,    -1,   623, 
     1054       3,   624,    -1,   442,    -1,   627,    -1,   626,    -1,   625, 
     1055       3,   626,    -1,   509,    -1,   627,    -1,   194,   628,     3, 
     1056     630,   195,    -1,   629,    -1,   628,     3,   629,    -1,   626, 
     1057      -1,   553,     5,   514,     3,   514,    -1,   553,     5,   514, 
     1058       3,   514,     3,   514,    -1,   128,   599,   207,    -1,   128, 
     1059     194,   632,   195,   207,    -1,   633,    -1,   632,     3,   633, 
     1060      -1,   599,    -1,    59,   599,    -1,    69,   607,    -1,    68, 
     1061     449,    -1,    66,   261,    -1,   125,   599,   207,    -1,   125, 
     1062     194,   635,   195,   207,    -1,   636,    -1,   635,     3,   636, 
     1063      -1,   599,    -1,    59,   599,    -1,    68,   449,    -1,    69, 
     1064     607,    -1,    66,   261,    -1,    -1,   122,   640,   194,   641, 
     1065     195,   638,   207,    -1,    -1,   122,   640,   194,    53,   449, 
     1066     195,   625,   639,   207,    -1,    -1,   642,    -1,   641,     3, 
     1067     642,    -1,   599,    -1,    59,   599,    -1,    50,   606,    -1, 
     1068      54,   447,    -1,    55,   447,    -1,    66,   261,    -1,    70, 
     1069     444,    -1,    68,   449,    -1,    52,     5,   447,    -1,    60, 
     1070     444,    -1,    57,   449,    -1,    32,   207,    -1,    -1,   647, 
     1071     665,   646,   645,   649,    -1,    -1,   653,    -1,    -1,   115, 
     1072     192,   648,   207,    -1,    -1,   412,   183,   651,   652,   650, 
     1073     207,    -1,    -1,   115,    -1,    -1,   192,    -1,   731,   654, 
     1074      -1,    -1,   655,    -1,   656,    -1,   655,   656,    -1,   703, 
     1075      -1,   718,    -1,   659,    -1,   657,   659,    -1,    -1,    -1, 
     1076     412,   161,   658,   662,   192,   674,   660,   207,    -1,    -1, 
     1077     412,   161,   658,   662,   192,     3,    27,     4,   663,   661, 
     1078     207,    -1,    -1,   155,    -1,     3,   673,   155,    -1,    -1, 
     1079     677,    -1,   666,   665,   242,   247,   668,    -1,    -1,   237, 
     1080      -1,    -1,   243,    -1,    -1,    30,   192,   667,   207,    -1, 
     1081      -1,    -1,   669,   183,   671,   672,   670,   207,    -1,    -1, 
     1082      30,    -1,    -1,   192,    -1,   135,    -1,    -1,     3,   675, 
     1083      -1,   676,    -1,   675,     3,   676,    -1,   192,   147,   192, 
     1084      -1,   678,    -1,   677,     3,   678,    -1,   680,    -1,   679, 
     1085      -1,   676,    -1,   192,    -1,   192,    -1,   133,   682,   207, 
     1086      -1,   133,   155,   682,   207,    -1,   683,    -1,   682,     3, 
     1087     683,    -1,   192,    -1,   135,   407,   685,   207,    -1,   686, 
     1088      -1,   685,     3,   686,    -1,   192,    -1,   696,   194,   195, 
     1089      -1,    -1,   696,   194,   688,   697,   195,    -1,    -1,   694, 
     1090     690,   207,    -1,    -1,   694,   194,   195,   691,   207,    -1, 
     1091      -1,    -1,   694,   194,   692,   697,   195,   693,   207,    -1, 
     1092      -1,   260,   145,   695,   696,    -1,   232,    -1,   125,    -1, 
     1093     176,    -1,   698,    -1,   697,     3,   698,    -1,   699,    -1, 
     1094     255,     5,   699,    -1,   509,    -1,   442,    -1,   232,    -1, 
     1095      -1,   701,    -1,   702,    -1,   701,   702,    -1,   265,    -1, 
     1096     115,    -1,    88,    -1,   704,   665,   242,   247,   715,    -1, 
     1097      -1,    -1,   700,    31,   707,   194,   705,   727,   195,   710, 
     1098     706,   207,    -1,   192,    -1,   351,    -1,   192,    -1,    -1, 
     1099     711,    -1,   708,   712,    -1,   714,   713,    -1,    -1,   714, 
     1100      -1,    -1,   708,    -1,    26,   194,   192,   195,    -1,    -1, 
     1101     412,   183,   717,   652,   723,   716,   207,    -1,    -1,    31, 
     1102      -1,   719,   665,   242,   247,   722,    -1,    -1,   700,    29, 
     1103     721,   725,   720,   207,    -1,   192,    -1,   412,   183,   724, 
     1104     652,   723,   207,    -1,    -1,    -1,    29,    -1,    -1,    -1, 
     1105     194,   726,   727,   195,   713,    -1,    -1,   728,    -1,   729, 
     1106      -1,   728,     3,   729,    -1,   709,    -1,    21,    -1,   260, 
     1107     103,   207,    -1,   260,   103,   514,   207,    -1,    -1,   260, 
     1108     113,   732,   207,    -1,   198,    -1,   192,    -1,   194,   232, 
     1109     195,    -1,   194,   193,   195,    -1,   193,    -1,   194,   215, 
     1110     195,    -1,   192,    -1,    -1,   232,    -1,   736,     3,   232, 
     1111      -1 
    8751112}; 
    8761113 
     
    8781115static const yytype_uint16 yyrline[] = 
    8791116{ 
    880        0,   313,   313,   314,   316,   317,   318,   319,   322,   323, 
    881      324,   325,   326,   329,   330,   331,   334,   335,   336,   344, 
    882      347,   350,   351,   354,   355,   358,   366,   375,   392,   411, 
    883      412,   415,   417,   419,   420,   421,   423,   424,   425,   427, 
    884      439,   451,   452,   454,   455,   456,   457,   458,   475,   492, 
    885      493,   498,   499,   536,   549,   550,   551,   552,   553,   554, 
    886      555,   556,   557,   570,   571,   578,   579,   580,   581,   582, 
    887      583,   584,   585,   586,   587,   588,   589,   590,   591,   592, 
    888      593,   594,   595,   596,   597,   598,   599,   600,   601,   604, 
    889      605,   608,   609,   612,   613,   615,   618,   619,   622,   623, 
    890      625,   626,   629,   695,   710,   712,   716,   719,   720,   723, 
    891      729,   734,   748,   749,   752,   753,   754,   755,   758,   760, 
    892      761,   764,   765,   766,   769,   770,   771,   772,   773,   775, 
    893      776,   779,   780,   781,   782,   785,   792,   802,   814,   815, 
    894      818,   819,   822,   823,   824,   825,   828,   834,   842,   852, 
    895      853,   856,   857,   860,   868,   874,   881,   882,   885,   886, 
    896      889,   905,   908,   909,   912,   921,   923,   945,   970,   972, 
    897      973,   974,   975,   977,   978,   979,   980,   983,   984,   985, 
    898      987,   990,   991,   992,   993,   994,   995,   997,   998,  1001, 
    899     1002,  1004,  1005,  1006,  1008,  1009,  1012,  1013,  1023,  1024, 
    900     1025,  1028,  1029,  1031,  1032,  1034,  1035,  1036,  1038,  1039, 
    901     1042,  1043,  1044,  1045,  1046,  1047,  1049,  1050,  1051,  1052, 
    902     1053,  1056,  1057,  1058,  1061,  1062,  1064,  1065,  1073,  1079, 
    903     1086,  1087,  1088,  1089,  1090,  1093,  1094,  1096,  1097,  1098, 
    904     1099,  1103,  1104,  1105,  1106,  1107,  1108,  1109,  1110,  1111, 
    905     1112,  1113,  1114,  1115,  1116,  1117,  1118,  1119,  1120,  1121, 
    906     1122,  1123,  1124,  1125,  1126,  1127,  1128,  1130,  1131,  1133, 
    907     1134,  1135,  1136,  1137,  1138,  1140,  1141,  1145,  1146,  1147, 
    908     1148,  1149,  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1157, 
    909     1158,  1159,  1160,  1161,  1162,  1163,  1164,  1165,  1167,  1168, 
    910     1169,  1170,  1173,  1174,  1177,  1178,  1179,  1183,  1194,  1195, 
    911     1196,  1197,  1200,  1209,  1216,  1219,  1220,  1223,  1224,  1227, 
    912     1228,  1231,  1232,  1233,  1234,  1235,  1236,  1237,  1239,  1285, 
    913     1286,  1287,  1288,  1289,  1290,  1291,  1293,  1296,  1297,  1298, 
    914     1299,  1301,  1302,  1305,  1307,  1308,  1311,  1312,  1314,  1315, 
    915     1321,  1329,  1332,  1352,  1379,  1399,  1439,  1446,  1450,  1457, 
    916     1467,  1468,  1476,  1486,  1498,  1499,  1504,  1505,  1506,  1507, 
    917     1508,  1513,  1514,  1515,  1516,  1517,  1518,  1519,  1520,  1521, 
    918     1522,  1523,  1524,  1525,  1526,  1527,  1528,  1529,  1530,  1567, 
    919     1576,  1587,  1595,  1617,  1618,  1619,  1657,  1661,  1665,  1668, 
    920     1669,  1672,  1673,  1676,  1677,  1682,  1686,  1687,  1688,  1692, 
    921     1696,  1701,  1702,  1707,  1708,  1713,  1714,  1718,  1722,  1723, 
    922     1724,  1729,  1734,  1739,  1740,  1745,  1746,  1747,  1748,  1753, 
    923     1754,  1755,  1756,  1761,  1762,  1763,  1764,  1768,  1772,  1776, 
    924     1777,  1782,  1783,  1787,  1790,  1791,  1792,  1796,  1799,  1800, 
    925     1801,  1804,  1809,  1810,  1815,  1816,  1821,  1822,  1827,  1828, 
    926     1832,  1836,  1839,  1840,  1841,  1844,  1849,  1850,  1855,  1856, 
    927     1861,  1862,  1867,  1868,  1872,  1873,  1878,  1879,  1880,  1881, 
    928     1885,  1889,  1893,  1897,  1905,  1912,  1919,  1926,  1927,  1930, 
    929     1933,  1944,  1950,  1951,  1954,  1955,  1957,  1970,  1971,  1973, 
    930     1974,  1977,  1978,  2000,  2003,  2004,  2007,  2015,  2018,  2019, 
    931     2022,  2023,  2026,  2027,  2029,  2030,  2032,  2035,  2036,  2037, 
    932     2038,  2039,  2042,  2043,  2046,  2047,  2048,  2049,  2050,  2051, 
    933     2052,  2053,  2056,  2059,  2060,  2061,  2063,  2064,  2067,  2068, 
    934     2069,  2072,  2073,  2076,  2077,  2078,  2079,  2080,  2081,  2082, 
    935     2083,  2084,  2085,  2086,  2087,  2088,  2089,  2090,  2091,  2092, 
    936     2094,  2095,  2097,  2098,  2104,  2105,  2106,  2107,  2108,  2110, 
    937     2111,  2112,  2115,  2116,  2117,  2118,  2119,  2120,  2121,  2122, 
    938     2123,  2124,  2127,  2128,  2129,  2131,  2132,  2134,  2135,  2138, 
    939     2139,  2142,  2145,  2146,  2148,  2149,  2152,  2153 
     1117       0,   514,   514,   515,   517,   518,   519,   521,   523,   524, 
     1118     525,   526,   529,   530,   531,   533,   534,   542,   560,   564, 
     1119     565,   566,   570,   571,   584,   852,   853,  1100,  1101,  1102, 
     1120    1103,  1104,  1106,  1107,  1111,  1112,  1113,  1114,  1115,  1116, 
     1121    1117,  1118,  1119,  1120,  1121,  1122,  1123,  1124,  1125,  1126, 
     1122    1127,  1128,  1129,  1130,  1131,  1133,  1134,  1135,  1136,  1139, 
     1123    1140,  1143,  1144,  1145,  1149,  1160,  1161,  1162,  1162,  1163, 
     1124    1163,  1165,  1166,  1166,  1175,  1187,  1188,  1191,  1192,  1195, 
     1125    1196,  1199,  1200,  1201,  1202,  1203,  1204,  1205,  1207,  1254, 
     1126    1255,  1256,  1257,  1258,  1259,  1260,  1262,  1265,  1266,  1267, 
     1127    1268,  1270,  1271,  1281,  1282,  1334,  1337,  1338,  1363,  1364, 
     1128    1368,  1369,  1382,  1383,  1384,  1385,  1386,  1387,  1388,  1389, 
     1129    1390,  1391,  1392,  1393,  1394,  1397,  1398,  1402,  1405,  1406, 
     1130    1410,  1411,  1415,  1416,  1419,  1420,  1424,  1428,  1429,  1432, 
     1131    1433,  1437,  1438,  1442,  1443,  1444,  1445,  1446,  1447,  1448, 
     1132    1449,  1450,  1451,  1456,  1457,  1458,  1459,  1460,  1468,  1469, 
     1133    1470,  1471,  1472,  1473,  1474,  1475,  1476,  1477,  1478,  1479, 
     1134    1480,  1502,  1503,  1504,  1505,  1506,  1507,  1508,  1509,  1510, 
     1135    1511,  1512,  1513,  1517,  1520,  1525,  1526,  1530,  1531,  1532, 
     1136    1533,  1535,  1539,  1558,  1559,  1563,  1564,  1568,  1569,  1573, 
     1137    1577,  1578,  1579,  1590,  1590,  1592,  1593,  1598,  1598,  1600, 
     1138    1600,  1602,  1602,  1604,  1604,  1606,  1606,  1608,  1608,  1613, 
     1139    1614,  1620,  1622,  1624,  1631,  1632,  1637,  1638,  1643,  1644, 
     1140    1660,  1661,  1666,  1667,  1674,  1680,  1681,  1682,  1686,  1687, 
     1141    1688,  1691,  1692,  1697,  1698,  1703,  1704,  1705,  1706,  1707, 
     1142    1711,  1713,  1715,  1716,  1720,  1722,  1727,  1728,  1729,  1733, 
     1143    1734,  1738,  1738,  1743,  1744,  1747,  1748,  1751,  1752,  1755, 
     1144    1756,  1760,  1761,  1765,  1766,  1769,  1773,  1774,  1777,  1778, 
     1145    1782,  1783,  1787,  1791,  1794,  1795,  1796,  1799,  1800,  1804, 
     1146    1805,  1806,  1806,  1807,  1810,  1811,  1815,  1838,  1839,  1843, 
     1147    1844,  1847,  1848,  1852,  1853,  1854,  1858,  1863,  1865,  1868, 
     1148    1869,  1873,  1874,  1878,  1879,  1882,  1883,  1887,  1888,  1892, 
     1149    1893,  1894,  1898,  1900,  1915,  1919,  1923,  1927,  1928,  1933, 
     1150    1934,  1938,  1943,  1945,  1950,  1954,  1955,  1954,  2023,  2024, 
     1151    2027,  2028,  2032,  2033,  2037,  2038,  2040,  2040,  2042,  2044, 
     1152    2044,  2046,  2047,  2049,  2051,  2053,  2055,  2060,  2062,  2067, 
     1153    2101,  2104,  2107,  2108,  2112,  2118,  2124,  2133,  2137,  2139, 
     1154    2144,  2145,  2145,  2150,  2152,  2157,  2159,  2161,  2163,  2165, 
     1155    2169,  2175,  2184,  2186,  2191,  2196,  2200,  2206,  2215,  2217, 
     1156    2222,  2228,  2237,  2242,  2265,  2266,  2285,  2286,  2290,  2291, 
     1157    2295,  2299,  2301,  2303,  2309,  2308,  2327,  2328,  2332,  2334, 
     1158    2339,  2340,  2344,  2348,  2349,  2353,  2354,  2357,  2362,  2361, 
     1159    2376,  2377,  2380,  2381,  2385,  2395,  2397,  2403,  2405,  2410, 
     1160    2411,  2415,  2421,  2428,  2430,  2435,  2436,  2440,  2444,  2449, 
     1161    2451,  2453,  2455,  2456,  2457,  2458,  2459,  2463,  2464,  2480, 
     1162    2481,  2482,  2483,  2484,  2485,  2486,  2492,  2500,  2505,  2507, 
     1163    2505,  2552,  2552,  2561,  2561,  2574,  2575,  2574,  2594,  2596, 
     1164    2601,  2618,  2619,  2618,  2626,  2627,  2630,  2631,  2634,  2635, 
     1165    2639,  2641,  2642,  2646,  2650,  2654,  2656,  2655,  2667,  2668, 
     1166    2672,  2675,  2676,  2680,  2681,  2685,  2688,  2689,  2691,  2692, 
     1167    2696,  2700,  2703,  2704,  2708,  2708,  2711,  2712,  2716,  2717, 
     1168    2718,  2723,  2724,  2723,  2733,  2734,  2742,  2748,  2756,  2757, 
     1169    2760,  2762,  2761,  2771,  2773,  2781,  2787,  2787,  2796,  2797, 
     1170    2798,  2799,  2808,  2811,  2824,  2827,  2831,  2835,  2838,  2842, 
     1171    2845,  2848,  2852,  2853,  2855,  2870,  2875,  2880,  2881,  2886, 
     1172    2888,  2888,  2900,  2904,  2909,  2914,  2916,  2923,  2924,  2926, 
     1173    2948,  2950,  2952,  2954,  2956,  2958,  2960,  2961,  2963,  2965, 
     1174    2969,  2971,  2973,  2975,  2977,  2980,  2994,  2998,  2999,  2998, 
     1175    3007,  3008,  3012,  3013,  3017,  3018,  3022,  3026,  3030,  3031, 
     1176    3035,  3039,  3040,  3043,  3044,  3048,  3049,  3053,  3056,  3057, 
     1177    3061,  3065,  3069,  3070,  3069,  3075,  3076,  3079,  3080,  3084, 
     1178    3085,  3089,  3090,  3099,  3109,  3110,  3111,  3112,  3117,  3122, 
     1179    3123,  3127,  3128,  3135,  3136,  3138,  3140,  3141,  3146,  3150, 
     1180    3152,  3156,  3158,  3163,  3164,  3169,  3172,  3173,  3178,  3179, 
     1181    3180,  3181,  3182,  3183,  3184,  3185,  3186,  3188,  3189,  3191, 
     1182    3196,  3197,  3203,  3204,  3210,  3211,  3216,  3217,  3222,  3226, 
     1183    3230,  3234,  3235,  3239,  3242,  3246,  3250,  3254,  3255,  3258, 
     1184    3262,  3269,  3273,  3277,  3280,  3284,  3290,  3291,  3303,  3304, 
     1185    3305,  3313,  3314,  3318,  3319,  3323,  3324,  3328,  3332,  3336, 
     1186    3339,  3348,  3352,  3353,  3354,  3358,  3362,  3365,  3366,  3369, 
     1187    3370,  3373,  3374,  3378,  3382,  3383,  3384,  3388,  3392,  3396, 
     1188    3397,  3401,  3402,  3407,  3408,  3412,  3416,  3419,  3420,  3425, 
     1189    3426,  3430,  3435,  3436,  3447,  3448,  3449,  3450,  3453,  3454, 
     1190    3455,  3456,  3460,  3461,  3462,  3463,  3468,  3469,  3470,  3471, 
     1191    3475,  3479,  3488,  3489,  3493,  3494,  3505,  3506,  3512,  3522, 
     1192    3527,  3528,  3529,  3530,  3531,  3532,  3533,  3534,  3535,  3536, 
     1193    3537,  3538,  3539,  3540,  3541,  3542,  3543,  3553,  3554,  3557, 
     1194    3558,  3569,  3574,  3577,  3578,  3582,  3586,  3589,  3590,  3591, 
     1195    3594,  3597,  3598,  3599,  3602,  3606,  3607,  3608,  3612,  3613, 
     1196    3617,  3618,  3622,  3623,  3627,  3631,  3634,  3635,  3636,  3639, 
     1197    3643,  3643,  3644,  3644,  3648,  3649,  3653,  3653,  3654,  3654, 
     1198    3659,  3659,  3660,  3664,  3665,  3670,  3671,  3672,  3673,  3677, 
     1199    3681,  3682,  3686,  3690,  3694,  3698,  3699,  3703,  3704,  3708, 
     1200    3709,  3710,  3714,  3718,  3722,  3722,  3722,  3725,  3726,  3730, 
     1201    3731,  3732,  3733,  3734,  3735,  3736,  3737,  3738,  3739,  3740, 
     1202    3744,  3748,  3752,  3752,  3756,  3757,  3761,  3762,  3763,  3764, 
     1203    3765,  3770,  3769,  3775,  3774,  3779,  3780,  3785,  3784,  3790, 
     1204    3789,  3797,  3798,  3800,  3801,  3804,  3808,  3809,  3810,  3811, 
     1205    3812,  3813,  3814,  3815,  3816,  3817,  3818,  3822,  3823,  3824, 
     1206    3827,  3828,  3831,  3832,  3836,  3837,  3841,  3842,  3846,  3849, 
     1207    3850,  3860,  3864,  3865,  3869,  3870,  3874,  3875,  3879,  3880, 
     1208    3881,  3882,  3883,  3887,  3888,  3892,  3893,  3897,  3898,  3899, 
     1209    3900,  3901,  3907,  3906,  3910,  3909,  3914,  3918,  3919,  3923, 
     1210    3924,  3925,  3926,  3927,  3928,  3929,  3930,  3931,  3932,  3933, 
     1211    3937,  3941,  3941,  3944,  3945,  3950,  3949,  3970,  3969,  3994, 
     1212    3995,  3998,  3999,  4002,  4005,  4006,  4009,  4010,  4013,  4014, 
     1213    4017,  4018,  4022,  4027,  4026,  4065,  4064,  4116,  4117,  4118, 
     1214    4122,  4123,  4128,  4131,  4132,  4135,  4136,  4141,  4140,  4154, 
     1215    4155,  4154,  4166,  4167,  4169,  4170,  4173,  4177,  4180,  4186, 
     1216    4190,  4199,  4209,  4211,  4220,  4228,  4236,  4244,  4248,  4252, 
     1217    4253,  4256,  4257,  4260,  4264,  4268,  4269,  4272,  4276,  4277, 
     1218    4277,  4284,  4283,  4297,  4296,  4309,  4310,  4309,  4324,  4324, 
     1219    4348,  4349,  4350,  4354,  4355,  4360,  4368,  4379,  4380,  4390, 
     1220    4393,  4394,  4398,  4399,  4403,  4405,  4407,  4412,  4417,  4418, 
     1221    4416,  4442,  4467,  4471,  4476,  4477,  4481,  4482,  4485,  4486, 
     1222    4489,  4490,  4493,  4509,  4508,  4513,  4514,  4518,  4523,  4522, 
     1223    4537,  4554,  4559,  4603,  4604,  4608,  4609,  4609,  4614,  4615, 
     1224    4620,  4632,  4646,  4648,  4653,  4654,  4659,  4658,  4694,  4695, 
     1225    4802,  4803,  4804,  4805,  4806,  4823,  4916,  4917 
    9401226}; 
    9411227#endif 
     
    9511237  "'*'", "TOK_SLASH", "TOK_DASTER", "TOK_SEMICOLON", "TOK_PARAMETER", 
    9521238  "TOK_RESULT", "TOK_ONLY", "TOK_INCLUDE", "TOK_SUBROUTINE", "TOK_PROGRAM", 
    953   "TOK_FUNCTION", "TOK_FORMAT", "TOK_MAX", "TOK_TANH", "TOK_WHERE", 
     1239  "TOK_FUNCTION", "TOK_LABEL_FORMAT", "TOK_LABEL_CONTINUE", 
     1240  "TOK_LABEL_END_DO", "TOK_MAX", "TOK_TANH", "TOK_COMMENT", "TOK_WHERE", 
    9541241  "TOK_ELSEWHEREPAR", "TOK_ELSEWHERE", "TOK_ENDWHERE", "TOK_MAXVAL", 
    955   "TOK_TRIM", "TOK_NULL_PTR", "TOK_SUM", "TOK_SQRT", "TOK_CASE", 
    956   "TOK_SELECTCASE", "TOK_FILE", "TOK_UNIT", "TOK_FMT", "TOK_NML", 
    957   "TOK_END", "TOK_EOR", "TOK_ERR", "TOK_EXIST", "TOK_MIN", "TOK_FLOAT", 
    958   "TOK_EXP", "TOK_COS", "TOK_COSH", "TOK_ACOS", "TOK_NINT", "TOK_CYCLE", 
    959   "TOK_SIN", "TOK_SINH", "TOK_ASIN", "TOK_EQUIVALENCE", "TOK_BACKSPACE", 
    960   "TOK_LOG", "TOK_TAN", "TOK_ATAN", "TOK_RECURSIVE", "TOK_ABS", "TOK_MOD", 
    961   "TOK_SIGN", "TOK_MINLOC", "TOK_MAXLOC", "TOK_EXIT", "TOK_MINVAL", 
    962   "TOK_PUBLIC", "TOK_PRIVATE", "TOK_ALLOCATABLE", "TOK_RETURN", "TOK_THEN", 
    963   "TOK_ELSEIF", "TOK_ELSE", "TOK_ENDIF", "TOK_PRINT", "TOK_PLAINGOTO", 
    964   "TOK_LOGICALIF", "TOK_PLAINDO", "TOK_CONTAINS", "TOK_ENDDO", 
     1242  "TOK_TRIM", "TOK_NULL_PTR", "TOK_SUM", "TOK_SQRT", "TOK_BIND", 
     1243  "TOK_CASE", "TOK_SELECTCASE", "TOK_FILE", "TOK_REC", "TOK_NAME_EQ", 
     1244  "TOK_IOLENGTH", "TOK_ACCESS", "TOK_ACTION", "TOK_FORM", "TOK_RECL", 
     1245  "TOK_STATUS", "TOK_UNIT", "TOK_OPENED", "TOK_FMT", "TOK_NML", "TOK_END", 
     1246  "TOK_EOR", "TOK_EOF", "TOK_ERR", "TOK_POSITION", "TOK_IOSTAT", 
     1247  "TOK_IOMSG", "TOK_EXIST", "TOK_MIN", "TOK_FLOAT", "TOK_EXP", "TOK_LEN", 
     1248  "TOK_COS", "TOK_COSH", "TOK_ACOS", "TOK_NINT", "TOK_CYCLE", "TOK_SIN", 
     1249  "TOK_SINH", "TOK_ASIN", "TOK_EQUIVALENCE", "TOK_BACKSPACE", "TOK_LOG", 
     1250  "TOK_TAN", "TOK_ATAN", "TOK_RECURSIVE", "TOK_ABS", "TOK_MOD", "TOK_SIGN", 
     1251  "TOK_MINLOC", "TOK_MAXLOC", "TOK_EXIT", "TOK_KIND", "TOK_MOLD", 
     1252  "TOK_SOURCE", "TOK_ERRMSG", "TOK_MINVAL", "TOK_PUBLIC", "TOK_PRIVATE", 
     1253  "TOK_ALLOCATABLE", "TOK_RETURN", "TOK_THEN", "TOK_ELSEIF", "TOK_ELSE", 
     1254  "TOK_ENDIF", "TOK_PRINT", "TOK_PLAINGOTO", "TOK_LOGICALIF", 
     1255  "TOK_LOGICALIF_PAR", "TOK_PLAINDO", "TOK_CONTAINS", "TOK_ENDDO", 
    9651256  "TOK_MODULE", "TOK_ENDMODULE", "TOK_WHILE", "TOK_CONCURRENT", 
    966   "TOK_ALLOCATE", "TOK_OPEN", "TOK_CLOSE", "TOK_INQUIRE", "TOK_WRITE", 
    967   "TOK_FLUSH", "TOK_READ", "TOK_REWIND", "TOK_DEALLOCATE", "TOK_NULLIFY", 
    968   "TOK_DIMENSION", "TOK_ENDSELECT", "TOK_EXTERNAL", "TOK_INTENT", 
    969   "TOK_INTRINSIC", "TOK_NAMELIST", "TOK_DEFAULT", "TOK_OPTIONAL", 
    970   "TOK_POINTER", "TOK_CONTINUE", "TOK_SAVE", "TOK_TARGET", "TOK_IMPLICIT", 
    971   "TOK_NONE", "TOK_CALL", "TOK_STAT", "TOK_POINT_TO", "TOK_COMMON", 
    972   "TOK_GLOBAL", "TOK_LEFTAB", "TOK_RIGHTAB", "TOK_PAUSE", "TOK_PROCEDURE", 
    973   "TOK_STOP", "TOK_REAL8", "TOK_FOURDOTS", "TOK_HEXA", "TOK_ASSIGNTYPE", 
    974   "TOK_OUT", "TOK_INOUT", "TOK_IN", "TOK_USE", "TOK_TRUE", "TOK_FALSE", 
    975   "TOK_LABEL", "TOK_TYPE", "TOK_TYPEPAR", "TOK_ENDTYPE", "TOK_REAL", 
     1257  "TOK_ALLOCATE", "TOK_OPEN", "TOK_CLOSE", "TOK_INQUIRE", "TOK_WRITE_PAR", 
     1258  "TOK_WRITE", "TOK_FLUSH", "TOK_READ_PAR", "TOK_READ", "TOK_REWIND", 
     1259  "TOK_DEALLOCATE", "TOK_NULLIFY", "TOK_DIMENSION", "TOK_ENDSELECT", 
     1260  "TOK_EXTERNAL", "TOK_INTENT", "TOK_INTRINSIC", "TOK_NAMELIST", 
     1261  "TOK_DEFAULT", "TOK_OPTIONAL", "TOK_POINTER", "TOK_CONTINUE", "TOK_SAVE", 
     1262  "TOK_TARGET", "TOK_IMPLICIT", "TOK_NONE", "TOK_CALL", "TOK_STAT", 
     1263  "TOK_POINT_TO", "TOK_COMMON", "TOK_GLOBAL", "TOK_LEFTAB", "TOK_RIGHTAB", 
     1264  "TOK_PAUSE", "TOK_PROCEDURE", "TOK_STOP", "TOK_FOURDOTS", "TOK_HEXA", 
     1265  "TOK_ASSIGNTYPE", "TOK_OUT", "TOK_INOUT", "TOK_IN", "TOK_USE", 
     1266  "TOK_EQUALEQUAL", "TOK_SLASHEQUAL", "TOK_INFEQUAL", "TOK_SUPEQUAL", 
     1267  "TOK_TRUE", "TOK_FALSE", "TOK_LABEL", "TOK_LABEL_DJVIEW", 
     1268  "TOK_PLAINDO_LABEL_DJVIEW", "TOK_PLAINDO_LABEL", "TOK_TYPE", 
     1269  "TOK_TYPEPAR", "TOK_ENDTYPE", "TOK_COMMACOMPLEX", "TOK_REAL", 
    9761270  "TOK_INTEGER", "TOK_LOGICAL", "TOK_DOUBLEPRECISION", "TOK_ENDSUBROUTINE", 
    9771271  "TOK_ENDFUNCTION", "TOK_ENDPROGRAM", "TOK_ENDUNIT", "TOK_CHARACTER", 
    9781272  "TOK_CHAR_CONSTANT", "TOK_CHAR_CUT", "TOK_DATA", "TOK_CHAR_MESSAGE", 
    9791273  "TOK_CSTREAL", "TOK_COMPLEX", "TOK_DOUBLECOMPLEX", "TOK_NAME", 
    980   "TOK_CSTINT", "'('", "')'", "'<'", "'>'", "'\\n'", "'/'", "'%'", 
    981   "$accept", "input", "line", "line-break", "suite_line_list", 
    982   "suite_line", "fin_line", "opt_recursive", "opt_result", "entry", 
    983   "label", "name_routine", "filename", "arglist", "arglist_after_result", 
    984   "args", "arg", "spec", "opt_spec", "name_intrinsic", 
    985   "use_intrinsic_list", "list_couple", "list_expr_equi", "expr_equi", 
    986   "list_expr_equi1", "list_expr", "opt_sep", "after_type", 
    987   "before_function", "before_parameter", "data_stmt", "data_stmt_set_list", 
    988   "data_stmt_set", "data_stmt_value_list", "save", "before_save", 
    989   "varsave", "datanamelist", "expr_data", "opt_signe", "namelist", 
    990   "before_dimension", "dimension", "private", "public", "use_name_list", 
    991   "common", "before_common", "var_common_list", "var_common", "comblock", 
    992   "opt_comma", "paramlist", "paramitem", "module_proc_stmt", 
    993   "proc_name_list", "implicit", "dcl", "nodimsgiven", "type", "c_selector", 
    994   "c_attribute", "before_character", "typespec", "lengspec", 
    995   "proper_lengspec", "selector", "proper_selector", "attribute", "clause", 
    996   "opt_clause", "options", "attr_spec_list", "attr_spec", "intent_spec", 
    997   "access_spec", "dims", "dimlist", "dim", "ubound", "expr", 
    998   "predefinedfunction", "minmaxlist", "uexpr", "signe", "operation", 
    999   "after_slash", "after_equal", "lhs", "beforefunctionuse", 
    1000   "array_ele_substring_func_ref", "begin_array", "structure_component", 
    1001   "vec", "funarglist", "funargs", "funarg", "triplet", "ident", 
    1002   "simple_const", "string_constant", "opt_substring", "substring", 
    1003   "optexpr", "opt_expr", "initial_value", "complex_const", "use_stat", 
    1004   "word_use", "rename_list", "rename_name", "only_list", "only_name", 
    1005   "execution-part-construct", "executable-construct", "action-stmt", 
    1006   "assignment-stmt", "where-stmt", "where-construct", 
    1007   "opt-where-body-construct", "opt-masked-elsewhere-construct", 
    1008   "opt-elsewhere-construct", "where-construct-stmt", 
    1009   "where-body-construct", "where-assignment-stmt", "mask-expr", 
    1010   "masked-elsewhere-stmt", "elsewhere-stmt", "end-where-stmt", 
    1011   "forall-header", "block", "do-construct", "block-do-construct", 
    1012   "do-stmt", "label-do-stmt", "nonlabel-do-stmt", "loop-control", 
    1013   "do-variable", "do-block", "end-do", "end-do-stmt", "if-construct", 
     1274  "TOK_CSTINT", "'('", "')'", "'<'", "'>'", "'\\n'", "'/'", "'%'", "'_'", 
     1275  "'['", "']'", "$accept", "input", "line", "line-break", 
     1276  "suite_line_list", "suite_line", "fin_line", "program-unit", 
     1277  "external-subprogram", "filename", "opt_comma", "uexpr", "signe", 
     1278  "operation", "after_slash", "after_equal", "lhs", "beforefunctionuse", 
     1279  "array_ele_substring_func_ref", "$@4", "$@5", "begin_array", "$@6", 
     1280  "structure_component", "funarglist", "funargs", "funarg", "triplet", 
     1281  "ident", "simple_const", "string_constant", "opt_substring", "opt_expr", 
     1282  "specification-part", "opt-use-stmt-list", 
     1283  "opt-declaration-construct-list", "declaration-construct-list", 
     1284  "declaration-construct", "opt-execution-part", "execution-part", 
     1285  "opt-execution-part-construct-list", "execution-part-construct-list", 
     1286  "execution-part-construct", "opt-internal-subprogram-part", 
     1287  "internal-subprogram-part", "opt-internal-subprogram", 
     1288  "internal-subprogram-list", "internal-subprogram", 
     1289  "other-specification-stmt", "executable-construct", "action-stmt", 
     1290  "keyword", "scalar-constant", "constant", "literal-constant", 
     1291  "named-constant", "opt-label", "label", "opt-label-djview", 
     1292  "label-djview", "type-param-value", "declaration-type-spec", "$@7", 
     1293  "intrinsic-type-spec", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", 
     1294  "opt-kind-selector", "kind-selector", "signed-int-literal-constant", 
     1295  "int-literal-constant", "kind-param", "signed-real-literal-constant", 
     1296  "real-literal-constant", "complex-literal-constant", "real-part", 
     1297  "imag-part", "opt-char_length-star", "opt-char-selector", 
     1298  "char-selector", "length-selector", "char-length", 
     1299  "char-literal-constant", "logical-literal-constant", "derived-type-def", 
     1300  "$@14", "derived-type-stmt", "opt-type-attr-spec-list-comma-fourdots", 
     1301  "opt-type-attr-spec-list-comma", "type-attr-spec-list", "type-attr-spec", 
     1302  "type-param-name-list", "type-param-name", "end-type-stmt", 
     1303  "opt-component-part", "component-part", "component-def-stmt", 
     1304  "data-component-def-stmt", "opt-component-attr-spec-list-comma-2points", 
     1305  "component-attr-spec-list", "component-attr-spec", "$@15", 
     1306  "component-decl-list", "component-decl", "opt-component-array-spec", 
     1307  "component-array-spec", "opt-component-initialization", 
     1308  "component-initialization", "initial-data-target", "derived-type-spec", 
     1309  "type-param-spec-list", "type-param-spec", "structure-constructor", 
     1310  "component-spec-list", "component-spec", "component-data-source", 
     1311  "array-constructor", "ac-spec", "lbracket", "rbracket", "ac-value-list", 
     1312  "ac-value", "ac-implied-do", "ac-implied-do-control", "ac-do-variable", 
     1313  "type-declaration-stmt", "$@16", "$@17", "opt-attr-spec-construct", 
     1314  "opt-attr-spec-comma-list", "attr-spec-comma-list", "attr-spec", "$@18", 
     1315  "$@19", "entity-decl-list", "entity-decl", "object-name", 
     1316  "object-name-noident", "opt-initialization", "initialization", 
     1317  "null-init", "access-spec", "opt-array-spec-par", "$@20", 
     1318  "language-binding-spec", "array-spec", "explicit-shape-spec-list", 
     1319  "explicit-shape-spec", "lower-bound", "upper-bound", 
     1320  "assumed-shape-spec-list", "assumed-shape-spec", 
     1321  "deferred-shape-spec-list", "deferred-shape-spec", "assumed-size-spec", 
     1322  "opt-explicit-shape-spec-list-comma", "opt-lower-bound-2points", 
     1323  "implied-shape-spec-list", "implied-shape-spec", "intent-spec", 
     1324  "access-stmt", "$@21", "opt-access-id-list", "access-id-list", 
     1325  "access-id", "bind-stmt", "bind-entity-list", "bind-entity", 
     1326  "entity-name", "data-stmt", "$@22", "opt-data-stmt-set-nlist", 
     1327  "data-stmt-set-nlist", "data-stmt-set", "data-stmt-object-list", 
     1328  "data-stmt-value-list", "data-stmt-object", "data-implied-do", 
     1329  "data-i-do-object-list", "data-i-do-object", "data-i-do-variable", 
     1330  "data-stmt-value", "opt-data-stmt-star", "data-stmt-constant", 
     1331  "scalar-constant-subobject", "constant-subobject", "dimension-stmt", 
     1332  "$@23", "$@24", "array-name-spec-list", "$@25", "$@26", "parameter-stmt", 
     1333  "$@27", "$@28", "named-constant-def-list", "named-constant-def", 
     1334  "save-stmt", "$@29", "$@30", "opt-TOK_FOURDOTS", "opt-saved-entity-list", 
     1335  "saved-entity-list", "saved-entity", "proc-pointer-name", 
     1336  "get_my_position", "implicit-stmt", "$@31", "implicit-spec-list", 
     1337  "implicit-spec", "letter-spec-list", "letter-spec", "namelist-stmt", 
     1338  "opt-namelist-other", "namelist-group-object-list", 
     1339  "namelist-group-object", "equivalence-stmt", "equivalence-set-list", 
     1340  "equivalence-set", "$@32", "equivalence-object-list", 
     1341  "equivalence-object", "common-stmt", "$@33", "$@34", 
     1342  "opt-common-block-name", "common-block-name", "opt-comma", 
     1343  "opt-common-block-list", "$@35", "common-block-object-list", 
     1344  "common-block-object", "$@36", "designator", "scalar-variable", 
     1345  "variable", "variable-name", "scalar-logical-variable", 
     1346  "logical-variable", "char-variable", "scalar-default-char-variable", 
     1347  "default-char-variable", "scalar-int-variable", "int-variable", 
     1348  "substring", "substring-range", "data-ref", "opt-part-ref", "part-ref", 
     1349  "$@37", "scalar-structure-component", "structure-component", 
     1350  "array-element", "array-section", "section-subscript-list", 
     1351  "section-subscript", "section_subscript_ambiguous", "vector-subscript", 
     1352  "allocate-stmt", "$@38", "$@39", "opt-alloc-opt-list-comma", 
     1353  "alloc-opt-list", "alloc-opt", "stat-variable", "errmsg-variable", 
     1354  "allocation-list", "allocation", "allocate-object", 
     1355  "opt-allocate-shape-spec-list-par", "allocate-shape-spec-list", 
     1356  "allocate-shape-spec", "opt-lower-bound-expr", "lower-bound-expr", 
     1357  "upper-bound-expr", "deallocate-stmt", "$@40", "$@41", 
     1358  "allocate-object-list", "opt-dealloc-opt-list-comma", "dealloc-opt-list", 
     1359  "dealloc-opt", "primary", "level-1-expr", "mult-operand", "add-operand", 
     1360  "level-2-expr", "power-op", "mult-op", "add-op", "level-3-expr", 
     1361  "concat-op", "level-4-expr", "rel-op", "and-operand", "or-operand", 
     1362  "equiv-operand", "level-5-expr", "not-op", "and-op", "or-op", "equiv-op", 
     1363  "expr", "scalar-default-char-expr", "default-char-expr", "int-expr", 
     1364  "opt-scalar-int-expr", "scalar-int-expr", "specification-expr", 
     1365  "constant-expr", "scalar-default-char-constant-expr", 
     1366  "default-char-constant-expr", "scalar-int-constant-expr", 
     1367  "int-constant-expr", "assignment-stmt", "pointer-assignment-stmt", 
     1368  "opt-bounds-spec-list-par", "bounds-spec-list", "bounds-remapping-list", 
     1369  "bounds-spec", "bounds-remapping", "data-target", 
     1370  "procedure-component-name", "proc-component-ref", "proc-target", 
     1371  "where-stmt", "where-construct", "opt-where-body-construct", 
     1372  "opt-masked-elsewhere-construct", "opt-elsewhere-construct", 
     1373  "where-construct-stmt", "where-body-construct", "where-assignment-stmt", 
     1374  "mask-expr", "masked-elsewhere-stmt", "elsewhere-stmt", "end-where-stmt", 
     1375  "forall-header", "block", "opt-execution-part-construct", "do-construct", 
     1376  "block-do-construct", "label-do-stmt", "label-do-stmt-djview", 
     1377  "nonlabel-do-stmt", "loop-control", "do-variable", "do-block", "end-do", 
     1378  "end-do-stmt", "nonblock-do-construct", "action-term-do-construct", 
     1379  "do-term-action-stmt", "do-term-action-stmt-special", 
     1380  "outer-shared-do-construct", "label-do-stmt-djview-do-block-list", 
     1381  "inner-shared-do-construct", "do-term-shared-stmt", 
     1382  "opt-do-construct-name", "cycle-stmt", "if-construct", 
    10141383  "opt-else-if-stmt-block", "else-if-stmt-block", "opt-else-stmt-block", 
    10151384  "else-stmt-block", "if-then-stmt", "else-if-stmt", "else-stmt", 
    10161385  "end-if-stmt", "if-stmt", "case-construct", "opt_case-stmt-block", 
    1017   "case-stmt-block", "select-case-stmt", "case-stmt", "end-select-stmt", 
    1018   "case-selector", "case-value-range-list", "case-value-range", 
    1019   "case-value", "continue-stmt", "format-stmt", "word_endsubroutine", 
    1020   "word_endunit", "word_endprogram", "word_endfunction", "opt_name", 
    1021   "before_dims", "ident_dims", "int_list", "after_ident_dims", "call", 
    1022   "opt_call", "opt_callarglist", "keywordcall", "before_call", 
    1023   "callarglist", "callarg", "stop", "option_inlist", "option_read", 
    1024   "opt_inlist", "ioctl", "after_rewind", "ctllist", "ioclause", 
    1025   "declare_after_percent", "iofctl", "infmt", "read", "fexpr", 
    1026   "unpar_fexpr", "addop", "inlist", "inelt", "opt_operation", "outlist", 
    1027   "other", "dospec", "goto", "allocation_list", "allocate_object", 
    1028   "allocate_object_list", "opt_stat_spec", "pointer_name_list", YY_NULL 
     1386  "case-stmt-block", "select-case-stmt", "$@42", "$@43", "case-stmt", 
     1387  "end-select-stmt", "$@44", "$@45", "case-selector", "$@46", 
     1388  "case-value-range-list", "case-value-range", "case-value", "exit-stmt", 
     1389  "goto-stmt", "arithmetic-if-stmt", "continue-stmt", "stop-stmt", 
     1390  "stop-code", "io-unit", "file-unit-number", "internal-file-variable", 
     1391  "open-stmt", "$@47", "$@48", "connect-spec-list", "connect-spec", 
     1392  "file-name-expr", "iomsg-variable", "close-stmt", "$@49", 
     1393  "close-spec-list", "close-spec", "read-stmt", "$@50", "$@51", 
     1394  "write-stmt", "$@52", "$@53", "print-stmt", "io-control-spec-list", 
     1395  "namelist-group-name", "io-control-spec", "format", "input-item-list", 
     1396  "input-item", "output-item-list", "output-item", "io-implied-do", 
     1397  "io-implied-do-object-list", "io-implied-do-object", 
     1398  "io-implied-do-control", "rewind-stmt", "position-spec-list", 
     1399  "position-spec", "flush-stmt", "flush-spec-list", "flush-spec", 
     1400  "inquire-stmt", "$@54", "$@55", "set_in_inquire", "inquire-spec-list", 
     1401  "inquire-spec", "format-stmt", "module", "$@56", 
     1402  "opt-module-subprogram-part", "module-stmt", "$@57", "end-module-stmt", 
     1403  "$@58", "opt-tok-module", "opt-ident", "module-subprogram-part", 
     1404  "opt-module-subprogram-list", "module-subprogram-list", 
     1405  "module-subprogram", "use-stmt-list", "save_olduse", "use-stmt", "$@59", 
     1406  "$@60", "opt-module-nature-2points", "opt-only-list", "main-program", 
     1407  "opt-specification-part", "program-stmt", "$@61", "end-program-stmt", 
     1408  "$@62", "$@63", "opt-tok-program", "opt-tok-name", "module-nature", 
     1409  "opt-rename-list", "rename-list", "rename", "only-list", "only", 
     1410  "only-use-name", "generic-spec", "external-stmt", "external-name-list", 
     1411  "external-name", "intrinsic-stmt", "intrinsic-procedure-name-list", 
     1412  "intrinsic-procedure-name", "function-reference", "$@64", "call-stmt", 
     1413  "$@65", "$@66", "$@67", "$@68", "before-call-stmt", "$@69", 
     1414  "procedure-designator", "actual-arg-spec-list", "actual-arg-spec", 
     1415  "actual-arg", "opt-prefix", "prefix", "prefix-spec", 
     1416  "function-subprogram", "function-stmt", "$@70", "$@71", "function-name", 
     1417  "proc-language-binding-spec", "dummy-arg-name", "opt-suffix", "suffix", 
     1418  "opt-result-clause", "opt-proc-language-binding-spec", "result-clause", 
     1419  "end-function-stmt", "$@72", "opt-tok-function", "subroutine-subprogram", 
     1420  "subroutine-stmt", "$@73", "subroutine-name", "end-subroutine-stmt", 
     1421  "close_subroutine", "opt-tok-subroutine", 
     1422  "opt-dummy-arg-list-par-and-bind", "$@74", "opt-dummy-arg-list", 
     1423  "dummy-arg-list", "dummy-arg", "return-stmt", "contains-stmt", "$@75", 
     1424  "opt_name", "after_rewind", "declare_after_percent", "pointer_name_list", YY_NULL 
    10291425}; 
    10301426#endif 
     
    10511447     389,   390,   391,   392,   393,   394,   395,   396,   397,   398, 
    10521448     399,   400,   401,   402,   403,   404,   405,   406,   407,   408, 
    1053      409,   410,    40,    41,    60,    62,    10,    47,    37 
     1449     409,   410,   411,   412,   413,   414,   415,   416,   417,   418, 
     1450     419,   420,   421,   422,   423,   424,   425,   426,   427,   428, 
     1451     429,   430,   431,   432,   433,   434,   435,   436,   437,   438, 
     1452     439,   440,   441,   442,    40,    41,    60,    62,    10,    47, 
     1453      37,    95,    91,    93 
    10541454}; 
    10551455# endif 
     
    10581458static const yytype_uint16 yyr1[] = 
    10591459{ 
    1060        0,   169,   170,   170,   171,   171,   171,   171,   172,   172, 
    1061      172,   172,   172,   173,   173,   173,   174,   174,   174,   174, 
    1062      175,   176,   176,   177,   177,   178,   178,   178,   178,   179, 
    1063      179,   180,   181,   182,   182,   182,   183,   183,   183,   184, 
    1064      184,   185,   185,   186,   186,   186,   186,   186,   186,   186, 
    1065      186,   186,   186,   186,   186,   186,   186,   186,   186,   186, 
    1066      186,   186,   186,   187,   187,   188,   188,   188,   188,   188, 
    1067      188,   188,   188,   188,   188,   188,   188,   188,   188,   188, 
    1068      188,   188,   188,   188,   188,   188,   188,   188,   188,   189, 
    1069      189,   190,   190,   191,   191,   192,   193,   193,   194,   194, 
    1070      195,   195,   196,   196,   197,   198,   199,   200,   200,   201, 
    1071      201,   201,   202,   202,   203,   203,   203,   203,   204,   205, 
    1072      205,   206,   206,   206,   207,   207,   207,   207,   207,   208, 
    1073      208,   209,   209,   209,   209,   210,   211,   211,   212,   212, 
    1074      213,   213,   214,   214,   214,   214,   215,   215,   215,   216, 
    1075      216,   217,   217,   218,   219,   219,   220,   220,   221,   221, 
    1076      222,   223,   224,   224,   225,   225,   226,   226,   227,   228, 
    1077      228,   228,   228,   229,   229,   229,   229,   230,   230,   230, 
    1078      231,   232,   232,   232,   232,   232,   232,   233,   233,   234, 
    1079      234,   235,   235,   235,   236,   236,   237,   237,   237,   237, 
    1080      237,   238,   238,   239,   239,   240,   240,   240,   241,   241, 
    1081      242,   242,   242,   242,   242,   242,   242,   242,   242,   242, 
    1082      242,   243,   243,   243,   244,   244,   245,   245,   246,   246, 
    1083      247,   247,   247,   247,   247,   248,   248,   249,   249,   249, 
    1084      249,   250,   250,   250,   250,   250,   250,   250,   250,   250, 
    1085      250,   250,   250,   250,   250,   250,   250,   250,   250,   250, 
    1086      250,   250,   250,   250,   250,   250,   250,   251,   251,   252, 
    1087      252,   252,   252,   252,   252,   253,   253,   254,   254,   254, 
     1460       0,   204,   205,   205,   206,   206,   206,   207,   207,   207, 
     1461     207,   207,   208,   208,   208,   209,   209,   209,   210,   211, 
     1462     211,   211,   212,   212,   213,   214,   214,   215,   215,   215, 
     1463     215,   215,   216,   216,   217,   217,   217,   217,   217,   217, 
     1464     217,   217,   217,   217,   217,   217,   217,   217,   217,   217, 
     1465     217,   217,   217,   217,   217,   218,   218,   218,   218,   219, 
     1466     219,   220,   220,   220,   221,   222,   222,   223,   222,   224, 
     1467     222,   225,   226,   225,   227,   228,   228,   229,   229,   230, 
     1468     230,   231,   231,   231,   231,   231,   231,   231,   232,   233, 
     1469     233,   233,   233,   233,   233,   233,   233,   234,   234,   234, 
     1470     234,   235,   235,   236,   236,   237,   238,   238,   239,   239, 
     1471     240,   240,   241,   241,   241,   241,   241,   241,   241,   241, 
     1472     241,   241,   241,   241,   241,   242,   242,   243,   244,   244, 
     1473     245,   245,   246,   246,   247,   247,   248,   249,   249,   250, 
     1474     250,   251,   251,   252,   252,   252,   252,   252,   252,   252, 
     1475     252,   252,   252,   253,   253,   253,   253,   253,   254,   254, 
    10881476     254,   254,   254,   254,   254,   254,   254,   254,   254,   254, 
    1089      254,   254,   254,   254,   254,   254,   254,   254,   255,   255, 
    1090      255,   255,   256,   256,   257,   257,   257,   258,   259,   259, 
    1091      259,   259,   260,   261,   262,   263,   263,   264,   264,   265, 
    1092      265,   266,   266,   266,   266,   266,   266,   266,   267,   268, 
    1093      268,   268,   268,   268,   268,   268,   268,   269,   269,   269, 
    1094      269,   270,   270,   271,   272,   272,   273,   273,   274,   274, 
    1095      274,   275,   276,   276,   276,   276,   277,   278,   278,   279, 
    1096      280,   280,   281,   281,   282,   282,   283,   283,   283,   283, 
    1097      283,   284,   284,   284,   284,   284,   284,   284,   284,   284, 
    1098      284,   284,   284,   284,   284,   284,   284,   284,   284,   284, 
    1099      284,   284,   284,   284,   284,   284,   285,   286,   287,   288, 
    1100      288,   289,   289,   290,   290,   291,   292,   292,   292,   293, 
    1101      294,   295,   295,   296,   296,   297,   297,   298,   299,   299, 
    1102      299,   300,   301,   302,   302,   303,   303,   303,   303,   304, 
    1103      304,   304,   304,   305,   305,   305,   305,   306,   307,   308, 
    1104      308,   309,   309,   310,   311,   311,   311,   312,   313,   313, 
    1105      313,   314,   315,   315,   316,   316,   317,   317,   318,   318, 
    1106      319,   320,   321,   321,   321,   322,   323,   323,   324,   324, 
    1107      325,   325,   326,   326,   327,   327,   328,   328,   328,   328, 
    1108      329,   330,   331,   332,   333,   334,   335,   336,   336,   337, 
    1109      338,   338,   339,   339,   340,   340,   341,   342,   342,   343, 
    1110      343,   344,   344,   345,   346,   346,   347,   347,   348,   348, 
    1111      349,   349,   350,   350,   351,   351,   352,   353,   353,   353, 
    1112      353,   353,   354,   354,   355,   355,   355,   355,   355,   355, 
    1113      355,   355,   356,   357,   357,   357,   358,   358,   359,   359, 
    1114      359,   360,   360,   361,   361,   361,   361,   361,   361,   361, 
    1115      361,   361,   361,   361,   361,   361,   361,   361,   361,   361, 
    1116      362,   362,   363,   363,   364,   364,   364,   364,   364,   365, 
    1117      365,   365,   366,   366,   366,   366,   366,   366,   366,   366, 
    1118      366,   366,   367,   367,   367,   368,   368,   369,   369,   370, 
    1119      370,   371,   372,   372,   373,   373,   374,   374 
     1477     254,   254,   254,   254,   254,   254,   254,   254,   254,   254, 
     1478     254,   254,   254,   255,   256,   257,   257,   258,   258,   258, 
     1479     258,   258,   259,   260,   260,   261,   261,   262,   262,   263, 
     1480     264,   264,   264,   266,   265,   265,   265,   268,   267,   269, 
     1481     267,   270,   267,   271,   267,   272,   267,   273,   267,   274, 
     1482     274,   275,   275,   275,   276,   276,   277,   277,   278,   278, 
     1483     279,   279,   280,   280,   281,   282,   282,   282,   283,   283, 
     1484     283,   284,   284,   285,   285,   286,   286,   286,   286,   286, 
     1485     287,   287,   287,   287,   288,   288,   289,   289,   289,   290, 
     1486     290,   292,   291,   293,   293,   294,   294,   295,   295,   296, 
     1487     296,   297,   297,   298,   298,   299,   300,   300,   301,   301, 
     1488     302,   302,   303,   304,   305,   305,   305,   306,   306,   307, 
     1489     307,   308,   307,   307,   309,   309,   310,   311,   311,   312, 
     1490     312,   313,   313,   314,   314,   314,   315,   316,   316,   317, 
     1491     317,   318,   318,   319,   319,   320,   320,   321,   321,   322, 
     1492     322,   322,   323,   323,   324,   325,   326,   327,   327,   328, 
     1493     328,   329,   330,   330,   331,   333,   334,   332,   335,   335, 
     1494     336,   336,   337,   337,   338,   338,   339,   338,   338,   340, 
     1495     338,   338,   338,   338,   338,   338,   338,   341,   341,   342, 
     1496     343,   344,   345,   345,   346,   346,   346,   347,   348,   348, 
     1497     349,   350,   349,   351,   351,   352,   352,   352,   352,   352, 
     1498     353,   353,   354,   354,   355,   356,   357,   357,   358,   358, 
     1499     359,   359,   360,   361,   362,   362,   363,   363,   364,   364, 
     1500     365,   366,   366,   366,   368,   367,   369,   369,   370,   370, 
     1501     371,   371,   372,   373,   373,   374,   374,   375,   377,   376, 
     1502     378,   378,   379,   379,   380,   381,   381,   382,   382,   383, 
     1503     383,   384,   384,   385,   385,   386,   386,   386,   387,   388, 
     1504     388,   388,   388,   388,   388,   388,   388,   389,   389,   390, 
     1505     390,   390,   390,   390,   390,   390,   391,   392,   394,   395, 
     1506     393,   397,   396,   398,   396,   400,   401,   399,   402,   402, 
     1507     403,   405,   406,   404,   407,   407,   408,   408,   409,   409, 
     1508     410,   410,   410,   411,   412,   413,   414,   413,   415,   415, 
     1509     416,   417,   417,   418,   418,   419,   420,   420,   421,   421, 
     1510     422,   423,   424,   424,   426,   425,   427,   427,   428,   428, 
     1511     428,   430,   431,   429,   432,   432,   433,   433,   434,   434, 
     1512     435,   436,   435,   437,   437,   438,   439,   438,   440,   440, 
     1513     440,   440,   441,   442,   443,   444,   445,   446,   447,   448, 
     1514     449,   450,   451,   451,   451,   452,   453,   454,   454,   455, 
     1515     456,   455,   457,   458,   459,   460,   460,   461,   461,   461, 
     1516     462,   462,   462,   462,   462,   462,   462,   462,   462,   462, 
     1517     463,   463,   463,   463,   463,   463,   464,   466,   467,   465, 
     1518     468,   468,   469,   469,   470,   470,   471,   472,   473,   473, 
     1519     474,   475,   475,   476,   476,   477,   477,   478,   479,   479, 
     1520     480,   481,   483,   484,   482,   485,   485,   486,   486,   487, 
     1521     487,   488,   488,   489,   489,   489,   489,   489,   490,   491, 
     1522     491,   492,   492,   493,   493,   493,   493,   493,   494,   495, 
     1523     495,   496,   496,   497,   497,   498,   499,   499,   500,   500, 
     1524     500,   500,   500,   500,   500,   500,   500,   500,   500,   500, 
     1525     501,   501,   502,   502,   503,   503,   504,   504,   505,   506, 
     1526     507,   508,   508,   509,   510,   511,   512,   513,   513,   514, 
     1527     515,   516,   517,   518,   519,   520,   521,   521,   522,   522, 
     1528     522,   523,   523,   524,   524,   525,   525,   526,   527,   528, 
     1529     529,   530,   531,   531,   531,   532,   533,   534,   534,   535, 
     1530     535,   536,   536,   537,   538,   538,   538,   539,   540,   541, 
     1531     541,   542,   542,   543,   543,   544,   545,   546,   546,   547, 
     1532     547,   547,   548,   548,   549,   549,   549,   549,   550,   550, 
     1533     550,   550,   551,   551,   551,   551,   552,   552,   552,   552, 
     1534     553,   554,   555,   555,   556,   556,   557,   557,   558,   559, 
     1535     560,   560,   560,   560,   560,   560,   560,   560,   560,   560, 
     1536     560,   560,   560,   560,   560,   560,   560,   561,   561,   562, 
     1537     562,   563,   564,   565,   565,   566,   567,   568,   568,   568, 
     1538     569,   570,   570,   570,   571,   572,   572,   572,   573,   573, 
     1539     574,   574,   575,   575,   576,   577,   578,   578,   578,   579, 
     1540     581,   580,   582,   580,   583,   583,   585,   584,   586,   584, 
     1541     588,   587,   587,   589,   589,   590,   590,   590,   590,   591, 
     1542     592,   592,   593,   594,   595,   596,   596,   597,   597,   598, 
     1543     598,   598,   599,   600,   602,   603,   601,   604,   604,   605, 
     1544     605,   605,   605,   605,   605,   605,   605,   605,   605,   605, 
     1545     606,   607,   609,   608,   610,   610,   611,   611,   611,   611, 
     1546     611,   613,   612,   614,   612,   612,   612,   616,   615,   617, 
     1547     615,   618,   618,   619,   619,   620,   621,   621,   621,   621, 
     1548     621,   621,   621,   621,   621,   621,   621,   622,   622,   622, 
     1549     623,   623,   624,   624,   625,   625,   626,   626,   627,   628, 
     1550     628,   629,   630,   630,   631,   631,   632,   632,   633,   633, 
     1551     633,   633,   633,   634,   634,   635,   635,   636,   636,   636, 
     1552     636,   636,   638,   637,   639,   637,   640,   641,   641,   642, 
     1553     642,   642,   642,   642,   642,   642,   642,   642,   642,   642, 
     1554     643,   645,   644,   646,   646,   648,   647,   650,   649,   651, 
     1555     651,   652,   652,   653,   654,   654,   655,   655,   656,   656, 
     1556     657,   657,   658,   660,   659,   661,   659,   662,   662,   662, 
     1557     663,   663,   664,   665,   665,   242,   242,   667,   666,   669, 
     1558     670,   668,   671,   671,   672,   672,   673,   674,   674,   675, 
     1559     675,   676,   677,   677,   678,   678,   678,   679,   680,   681, 
     1560     681,   682,   682,   683,   684,   685,   685,   686,   687,   688, 
     1561     687,   690,   689,   691,   689,   692,   693,   689,   695,   694, 
     1562     696,   696,   696,   697,   697,   698,   698,   699,   699,   699, 
     1563     700,   700,   701,   701,   702,   702,   702,   703,   705,   706, 
     1564     704,   707,   708,   709,   710,   710,   711,   711,   712,   712, 
     1565     713,   713,   714,   716,   715,   717,   717,   718,   720,   719, 
     1566     721,   722,   723,   724,   724,   725,   726,   725,   727,   727, 
     1567     728,   728,   729,   729,   730,   730,   732,   731,   733,   733, 
     1568     734,   734,   734,   734,   734,   735,   736,   736 
    11201569}; 
    11211570 
     
    11231572static const yytype_uint8 yyr2[] = 
    11241573{ 
    1125        0,     2,     0,     2,     1,     1,     2,     1,     2,     1, 
    1126        3,     2,     2,     1,     3,     3,     2,     2,     3,     1, 
    1127        0,     0,     1,     0,     2,     4,     2,     5,     2,     1, 
    1128        2,     1,     1,     0,     2,     3,     0,     2,     3,     1, 
    1129        3,     1,     1,     2,     4,     2,     2,     4,     2,     1, 
    1130        1,     1,     1,     1,     1,     1,     1,     1,     4,     3, 
    1131        3,     2,     2,     0,     1,     1,     1,     1,     1,     1, 
    1132        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
    1133        1,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
    1134        3,     3,     5,     1,     3,     3,     2,     4,     1,     3, 
    1135        0,     1,     2,     3,     1,     1,     2,     1,     3,     4, 
    1136        4,     8,     1,     3,     2,     3,     5,     3,     1,     0, 
    1137        2,     1,     4,     3,     2,     3,     3,     3,     3,     0, 
    1138        1,     2,     3,     5,     3,     1,     5,     5,     2,     3, 
    1139        2,     3,     1,     1,     3,     3,     2,     3,     5,     1, 
    1140        2,     1,     3,     2,     1,     3,     0,     1,     1,     3, 
    1141        3,     2,     1,     3,     2,     2,     5,     6,     0,     2, 
    1142        2,     3,     3,     0,     2,     4,     3,     3,     4,     2, 
    1143        1,     1,     1,     1,     1,     1,     1,     0,     2,     1, 
    1144        3,     0,     2,     3,     1,     3,     2,     3,     1,     1, 
    1145        1,     1,     1,     0,     3,     0,     1,     3,     1,     3, 
    1146        1,     1,     1,     2,     1,     4,     1,     1,     1,     1, 
    1147        1,     1,     1,     1,     1,     1,     0,     3,     1,     3, 
    1148        1,     1,     2,     2,     3,     1,     1,     1,     1,     1, 
    1149        3,     3,     3,     4,     4,     3,     4,     4,     3,     4, 
    1150        4,     4,     4,     4,     4,     4,     4,     4,     4,     4, 
    1151        4,     4,     3,     4,     3,     4,     4,     1,     3,     1, 
    1152        1,     1,     2,     2,     2,     1,     1,     2,     2,     2, 
    1153        2,     2,     2,     2,     2,     2,     3,     3,     2,     2, 
    1154        2,     2,     2,     2,     2,     2,     2,     2,     0,     1, 
    1155        2,     2,     2,     1,     1,     1,     1,     0,     1,     2, 
    1156        4,     5,     4,     4,     3,     1,     2,     1,     3,     1, 
     1574       0,     2,     0,     2,     1,     1,     1,     2,     1,     1, 
     1575       3,     2,     1,     3,     3,     1,     3,     1,     0,     1, 
     1576       1,     1,     1,     1,     1,     0,     1,     1,     1,     2, 
     1577       2,     2,     1,     1,     2,     2,     2,     2,     2,     2, 
     1578       2,     2,     2,     3,     3,     2,     2,     2,     2,     2, 
     1579       2,     2,     2,     2,     2,     0,     1,     2,     2,     2, 
     1580       1,     1,     1,     1,     0,     1,     2,     0,     5,     0, 
     1581       6,     1,     0,     5,     4,     1,     2,     1,     3,     1, 
    11571582       1,     3,     5,     4,     3,     2,     2,     1,     1,     1, 
    11581583       1,     1,     1,     1,     1,     2,     2,     1,     2,     1, 
    1159        1,     0,     1,     5,     0,     1,     1,     1,     0,     2, 
    1160        2,     5,     2,     4,     6,     6,     1,     1,     3,     3, 
    1161        1,     3,     3,     1,     1,     1,     1,     1,     1,     1, 
    1162        1,     1,     2,     1,     1,     2,     2,     2,     3,     2, 
    1163        5,     5,     2,     2,     2,     2,     1,     4,     1,     2, 
    1164        2,     2,     2,     1,     1,     1,     1,     5,     6,     0, 
    1165        3,     0,     4,     0,     4,     4,     1,     1,     1,     1, 
    1166        1,     3,     4,     1,     2,     1,     2,     0,     0,     2, 
    1167        3,     1,     4,     1,     1,     4,     2,     5,     3,     3, 
    1168        1,     4,     2,     6,     8,     5,     3,     1,     1,     1, 
    1169        1,     1,     2,     6,     0,     1,     2,     3,     0,     1, 
    1170        2,     3,     7,     5,     5,     6,     1,     2,     1,     2, 
    1171        5,     4,     0,     1,     2,     3,     6,     4,     2,     3, 
    1172        1,     2,     3,     1,     1,     3,     1,     2,     2,     3, 
    1173        1,     1,     1,     1,     1,     1,     1,     1,     1,     0, 
    1174        4,     7,     1,     3,     2,     2,     2,     0,     3,     0, 
    1175        1,     2,     2,     1,     1,     3,     1,     2,     1,     1, 
    1176        0,     1,     2,     2,     0,     2,     3,     3,     3,     1, 
    1177        3,     1,     1,     3,     1,     1,     1,     3,     5,     4, 
    1178        2,     2,     0,     1,     1,     1,     1,     1,     1,     1, 
    1179        1,     1,     3,     1,     1,     3,     3,     3,     3,     2, 
    1180        3,     2,     2,     2,     2,     2,     2,     2,     3,     1, 
    1181        1,     1,     1,     3,     2,     4,     2,     2,     5,     0, 
    1182        1,     2,     1,     1,     1,     1,     3,     3,     3,     3, 
    1183        3,     3,     5,     5,     5,     5,     7,     8,     2,     1, 
    1184        3,     1,     1,     3,     0,     4,     1,     3 
     1584       1,     0,     1,     0,     1,     2,     0,     1,     0,     1, 
     1585       1,     2,     1,     1,     1,     1,     1,     1,     1,     1, 
     1586       1,     1,     1,     1,     1,     0,     1,     2,     0,     1, 
     1587       1,     2,     1,     1,     0,     1,     3,     0,     1,     1, 
     1588       2,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
     1589       1,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
     1590       1,     1,     1,     1,     1,     1,     1,     1,     2,     4, 
     1591       2,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
     1592       1,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
     1593       1,     1,     1,     0,     1,     1,     1,     0,     1,     1, 
     1594       1,     1,     1,     0,     2,     3,     3,     0,     3,     0, 
     1595       3,     0,     3,     0,     3,     0,     3,     0,     3,     0, 
     1596       1,     3,     5,     2,     1,     2,     1,     3,     1,     1, 
     1597       1,     2,     1,     3,     5,     1,     1,     1,     1,     1, 
     1598       1,     0,     2,     0,     1,     1,     9,     5,     5,     9, 
     1599       3,     5,     2,     3,     3,     1,     1,     1,     1,     1, 
     1600       1,     0,     4,     4,     7,     0,     2,     0,     2,     1, 
     1601       3,     1,     2,     1,     3,     1,     2,     3,     0,     1, 
     1602       1,     2,     1,     4,     0,     1,     3,     1,     3,     1, 
     1603       1,     0,     5,     1,     1,     3,     4,     0,     3,     1, 
     1604       1,     0,     1,     2,     2,     2,     1,     1,     4,     1, 
     1605       3,     1,     3,     3,     4,     1,     3,     1,     3,     1, 
     1606       1,     1,     3,     3,     1,     1,     1,     1,     3,     1, 
     1607       1,     5,     5,     7,     1,     0,     0,     6,     0,     2, 
     1608       0,     1,     2,     3,     1,     1,     0,     5,     1,     0, 
     1609       5,     1,     1,     1,     1,     1,     1,     1,     3,     4, 
     1610       1,     1,     0,     1,     2,     2,     2,     1,     1,     1, 
     1611       0,     0,     4,     2,     4,     1,     1,     1,     1,     1, 
     1612       1,     3,     3,     1,     1,     1,     1,     3,     1,     2, 
     1613       1,     3,     1,     3,     0,     2,     0,     2,     1,     3, 
     1614       2,     1,     1,     1,     0,     4,     0,     2,     1,     3, 
     1615       1,     1,     4,     1,     3,     1,     1,     1,     0,     5, 
     1616       0,     1,     2,     3,     4,     1,     3,     1,     3,     1, 
     1617       1,     9,    11,     1,     3,     1,     1,     1,     1,     2, 
     1618       2,     2,     1,     1,     1,     1,     1,     0,     2,     1, 
     1619       1,     1,     1,     1,     1,     1,     1,     1,     0,     0, 
     1620       6,     0,     5,     0,     7,     0,     0,     7,     1,     3, 
     1621       3,     0,     0,     6,     0,     1,     0,     1,     1,     3, 
     1622       1,     1,     1,     1,     0,     4,     0,     5,     1,     3, 
     1623       4,     1,     3,     1,     3,     7,     0,     6,     1,     3, 
     1624       1,     3,     1,     3,     0,     6,     1,     3,     1,     1, 
     1625       1,     0,     0,     7,     0,     1,     1,     3,     0,     1, 
     1626       0,     0,     5,     1,     3,     1,     0,     5,     1,     1, 
     1627       1,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
     1628       1,     1,     1,     4,     4,     3,     2,     0,     3,     1, 
     1629       0,     5,     1,     1,     1,     1,     4,     0,     1,     3, 
     1630       2,     1,     2,     3,     4,     2,     1,     3,     4,     2, 
     1631       1,     2,     3,     4,     2,     0,     1,     0,     0,     8, 
     1632       0,     2,     1,     3,     2,     3,     1,     1,     1,     3, 
     1633       2,     1,     1,     0,     3,     1,     3,     2,     0,     2, 
     1634       1,     1,     0,     0,     8,     1,     3,     0,     2,     1, 
     1635       3,     2,     3,     1,     1,     1,     1,     3,     1,     1, 
     1636       3,     1,     3,     1,     2,     3,     1,     2,     1,     1, 
     1637       1,     1,     1,     1,     3,     1,     1,     3,     1,     1, 
     1638       1,     1,     1,     1,     1,     1,     1,     1,     1,     1, 
     1639       1,     2,     1,     3,     1,     3,     1,     3,     1,     1, 
     1640       1,     1,     1,     1,     1,     1,     1,     0,     1,     1, 
     1641       1,     1,     1,     1,     1,     1,     4,     5,     5,     7, 
     1642       4,     0,     3,     1,     3,     1,     3,     2,     3,     1, 
     1643       1,     3,     1,     1,     1,     5,     5,     0,     2,     0, 
     1644       3,     0,     3,     5,     1,     1,     1,     1,     1,     4, 
     1645       5,     2,     3,     2,     3,     0,     1,     0,     2,     1, 
     1646       1,     1,     3,     3,     4,     2,     5,     3,     4,     2, 
     1647       5,     3,     4,     2,     5,     3,     6,     8,     5,     3, 
     1648       1,     1,     1,     2,     3,     4,     1,     1,     3,     2, 
     1649       1,     1,     1,     1,     1,     1,     1,     2,     4,     1, 
     1650       1,     1,     1,     1,     1,     1,     1,     4,     3,     2, 
     1651       3,     3,     2,     0,     1,     3,     5,     0,     1,     2, 
     1652       2,     0,     1,     2,     2,     7,     8,     6,     6,     7, 
     1653       2,     3,     2,     3,     5,     3,     0,     1,     2,     2, 
     1654       0,     8,     0,     6,     3,     4,     0,     3,     0,     4, 
     1655       0,     4,     1,     1,     3,     1,     2,     2,     3,     1, 
     1656       2,     3,     3,    10,     3,     2,     3,     1,     1,     1, 
     1657       1,     1,     1,     1,     0,     0,     7,     1,     3,     1, 
     1658       2,     2,     2,     2,     2,     2,     2,     2,     2,     3, 
     1659       1,     1,     0,     7,     1,     3,     1,     2,     2,     2, 
     1660       3,     0,     6,     0,     7,     4,     6,     0,     6,     0, 
     1661       7,     4,     6,     1,     3,     1,     1,     2,     1,     1, 
     1662       2,     2,     2,     2,     2,     2,     3,     1,     1,     1, 
     1663       1,     3,     1,     1,     1,     3,     1,     1,     5,     1, 
     1664       3,     1,     5,     7,     3,     5,     1,     3,     1,     2, 
     1665       2,     2,     2,     3,     5,     1,     3,     1,     2,     2, 
     1666       2,     2,     0,     7,     0,     9,     0,     1,     3,     1, 
     1667       2,     2,     2,     2,     2,     2,     2,     3,     2,     2, 
     1668       2,     0,     5,     0,     1,     0,     4,     0,     6,     0, 
     1669       1,     0,     1,     2,     0,     1,     1,     2,     1,     1, 
     1670       1,     2,     0,     0,     8,     0,    11,     0,     1,     3, 
     1671       0,     1,     5,     0,     1,     0,     1,     0,     4,     0, 
     1672       0,     6,     0,     1,     0,     1,     1,     0,     2,     1, 
     1673       3,     3,     1,     3,     1,     1,     1,     1,     1,     3, 
     1674       4,     1,     3,     1,     4,     1,     3,     1,     3,     0, 
     1675       5,     0,     3,     0,     5,     0,     0,     7,     0,     4, 
     1676       1,     1,     1,     1,     3,     1,     3,     1,     1,     1, 
     1677       0,     1,     1,     2,     1,     1,     1,     5,     0,     0, 
     1678      10,     1,     1,     1,     0,     1,     2,     2,     0,     1, 
     1679       0,     1,     4,     0,     7,     0,     1,     5,     0,     6, 
     1680       1,     6,     0,     0,     1,     0,     0,     5,     0,     1, 
     1681       1,     3,     1,     1,     3,     4,     0,     4,     1,     1, 
     1682       3,     3,     1,     3,     1,     0,     1,     3 
    11851683}; 
    11861684 
     
    11901688static const yytype_uint16 yydefact[] = 
    11911689{ 
    1192        2,     0,     1,     7,     9,   105,     0,     0,   482,     0, 
    1193        0,     0,     0,     0,    22,   344,   100,   100,     0,   540, 
    1194        0,     0,   156,   395,     0,     0,     0,   533,   534,   539, 
    1195        0,   535,   538,     0,     0,     0,   135,   100,   100,     0, 
    1196        0,   371,   118,     0,   503,   149,     0,   508,     0,   509, 
    1197      356,    21,    63,     0,     0,   183,   181,   182,   186,   483, 
    1198      486,   485,   484,   180,     0,   184,   185,   328,   492,    20, 
    1199        3,     4,     5,    13,     0,    20,    20,     0,     0,    50, 
    1200      119,    57,   156,    52,    54,    53,    49,     0,    56,    51, 
    1201      205,   173,   191,   489,    55,     0,    19,   364,   366,   394, 
    1202      370,     0,   367,   421,     0,   423,   424,   369,     0,   393, 
    1203      368,     0,   365,     0,   388,     0,     0,     0,   386,   374, 
    1204      497,     0,     0,     0,     0,   373,    32,    20,    31,    26, 
    1205        0,     0,     0,   275,   276,     0,     0,     0,     0,   331, 
     1690       2,     0,     1,     6,     8,     0,     0,    17,     9,  1036, 
     1691    1035,     0,    18,     3,     4,     5,    12,    15,    20,  1034, 
     1692       0,    21,   106,    19,   106,     0,   203,  1032,    22,   106, 
     1693      23,   106,    24,    18,   977,   945,   209,   207,   217,   211, 
     1694     215,   213,    88,   307,     0,     0,     7,    11,    18,   203, 
     1695     204,   974,   108,     0,   107,   960,   193,   193,     0,     0, 
     1696    1035,  1033,   193,   193,    16,     0,     0,   219,   219,   219, 
     1697     219,   243,   219,     0,   205,   206,    10,    13,    14,   465, 
     1698       0,     0,     0,   368,   369,    25,     0,   474,     0,   511, 
     1699     195,    25,   265,   256,   258,     0,   257,    88,   196,   549, 
     1700     105,   109,   110,   116,     0,   194,     0,   112,   261,   117, 
     1701     203,   406,   474,   143,   144,   146,   147,     0,   113,   152, 
     1702       0,     0,   115,   151,   148,   145,   533,     0,   531,   542, 
     1703     547,   530,   528,   529,   118,   119,   120,   719,   717,   717, 
     1704     720,   746,   747,   124,   717,   121,   123,   114,   149,   150, 
     1705     122,   962,   961,     0,   194,   941,   944,   203,     0,     0, 
     1706     103,     0,     0,     0,     0,     0,   926,     0,     0,     0, 
     1707       0,     0,    88,   134,   126,   193,   153,     0,   158,   164, 
     1708     159,   174,   180,   157,   697,   154,   163,   156,   171,   155, 
     1709     796,   166,   165,   182,   162,   179,   173,   161,   176,   181, 
     1710     175,   178,   167,   172,   160,  1011,   177,  1060,  1065,  1041, 
     1711       0,   134,   134,   978,   946,     0,     0,   210,   220,   208, 
     1712     218,   212,     0,     0,   216,   244,   245,   214,   202,   658, 
     1713     631,   632,   201,  1021,     0,   259,   260,  1022,   232,   226, 
     1714       0,   325,   549,     0,   614,   311,   626,   187,   188,   190, 
     1715     191,   189,     0,   309,   615,     0,   613,   618,   619,   621, 
     1716     623,   633,     0,   636,   650,   652,   654,   656,   663,     0, 
     1717     666,   669,   200,   616,     0,     0,   940,     0,   373,   504, 
     1718       0,   502,    26,   733,     0,     0,     0,  1003,     0,  1001, 
     1719     475,     0,     0,   514,   725,     0,     0,     0,     0,     0, 
     1720     518,     0,   425,   430,   533,   429,     0,   550,   111,     0, 
     1721       0,     0,     0,    88,     0,   667,   203,   338,   404,     0, 
     1722       0,   474,   474,   203,     0,     0,     0,     0,   667,   546, 
     1723     741,   193,   197,   197,   777,   967,  1076,   484,   953,   203, 
     1724     956,   958,   959,     0,     0,    88,   549,   168,   104,     0, 
     1725       0,   820,     0,  1079,  1078,   170,   577,   834,     0,     0, 
     1726     832,     0,     0,     0,   602,     0,   825,   665,   673,   675, 
     1727     827,   672,   828,   674,     0,     0,     0,   979,   135,   127, 
     1728     193,   130,   132,   133,     0,     0,     0,     0,     0,  1018, 
     1729     699,     0,     0,   797,   717,  1015,     0,  1066,  1058,  1038, 
     1730     484,   484,   223,     0,     0,     0,   255,   252,     0,     0, 
     1731       0,     0,     0,   324,   327,   330,   329,     0,     0,   549, 
     1732     626,   236,   188,     0,     0,     0,     0,     0,   308,     0, 
     1733     628,     0,   629,   630,     0,   627,   224,     0,   187,   624, 
     1734     639,   638,   643,   641,   642,   640,   635,   644,   645,   647, 
     1735     649,   646,   648,     0,     0,   659,     0,   660,     0,   662, 
     1736     661,     0,   651,  1009,     0,     0,     0,     0,   501,     0, 
     1737     715,   740,     0,   735,     0,     0,   999,  1007,     0,  1005, 
     1738       0,   516,     0,     0,   515,   727,     0,   268,   269,   271, 
     1739       0,   266,     0,   437,     0,   433,   553,   436,   552,   435, 
     1740     519,   418,   518,     0,     0,     0,     0,    25,    25,   557, 
     1741    1074,     0,   889,   226,   888,   665,   887,     0,     0,   824, 
     1742       0,     0,     0,     0,   668,   284,     0,   203,   280,   282, 
     1743       0,     0,     0,   341,     0,   410,   407,   408,   411,   417, 
     1744       0,   413,   415,   416,     0,   476,   486,     0,     0,   488, 
     1745      88,   613,     0,   532,   692,   693,   694,     0,     0,   600, 
     1746       0,     0,   683,   685,     0,     0,     0,     0,   718,   199, 
     1747      25,     0,     0,   193,   717,   722,   742,   748,     0,   768, 
     1748     193,   723,     0,   781,   778,   717,     0,   968,     0,     0, 
     1749       0,   942,   957,   708,     0,     0,   775,   821,   822,     0, 
     1750       0,     0,     0,     0,     0,     0,   666,   917,     0,   915, 
     1751     913,     0,     0,     0,     0,   908,     0,   906,   904,     0, 
     1752    1086,     0,   826,     0,   203,   972,     0,   131,     0,   852, 
     1753     830,     0,     0,     0,     0,     0,     0,     0,     0,    88, 
     1754     537,   833,   876,   829,   831,     0,   879,   873,   878,     0, 
     1755       0,     0,     0,   707,   705,   706,   701,   698,   704,   812, 
     1756     810,     0,   806,   798,   795,   799,  1013,     0,  1012,  1068, 
     1757       0,  1068,     0,  1037,     0,  1057,     0,   221,     0,     0, 
     1758       0,     0,   250,     0,   329,   322,     0,   229,   228,   233, 
     1759     227,     0,   188,   617,   312,   310,   326,   323,   187,   620, 
     1760     622,   625,   634,   637,   653,   655,   657,  1008,     0,     0, 
     1761       0,   468,   374,   534,     0,   508,   510,   542,   509,   503, 
     1762       0,   739,     0,  1000,  1002,     0,  1004,     0,     0,   525, 
     1763     520,   523,   272,     0,   263,     0,     0,     0,     0,   422, 
     1764     426,   549,   442,   224,   443,   230,   447,   445,     0,   446, 
     1765     444,     0,   427,   447,   456,   306,     0,   367,     0,   732, 
     1766       0,   724,     0,   561,     0,     0,   549,     0,   558,   566, 
     1767     575,   576,  1075,     0,   871,     0,     0,     0,   544,   667, 
     1768       0,   285,     0,     0,   262,   281,   353,   345,     0,   348, 
     1769       0,   351,   352,   354,   355,   356,   342,   344,   361,   336, 
     1770     357,   370,   339,     0,   405,     0,     0,   412,     0,   459, 
     1771     360,   480,   472,   477,   478,   481,   482,     0,     0,   203, 
     1772     485,     0,   680,   687,     0,   682,     0,     0,   689,     0, 
     1773     676,   543,   548,   729,     0,     0,     0,     0,     0,     0, 
     1774       0,   194,   750,   754,   751,   765,   749,   759,   756,   743, 
     1775     761,   753,   763,   766,   762,   764,   755,   760,   752,   769, 
     1776     717,   767,     0,     0,     0,   779,     0,   782,   717,   780, 
     1777     986,     0,   987,  1077,   949,     0,   802,   591,   553,   592, 
     1778     580,   588,   593,     0,     0,     0,     0,     0,     0,     0, 
     1779       0,     0,     0,   839,     0,   837,     0,     0,     0,     0, 
     1780       0,     0,     0,     0,     0,     0,     0,   929,     0,   927, 
     1781     918,   921,   541,   919,   540,   539,   851,   538,   920,     0, 
     1782       0,   909,   912,   911,   910,     0,     0,   605,   607,     0, 
     1783     169,     0,   136,   203,   139,   141,   142,   982,   193,     0, 
     1784       0,   830,   877,   881,   875,   880,   882,   883,   884,   885, 
     1785       0,   867,   861,     0,   865,  1020,  1019,     0,     0,   697, 
     1786       0,     0,   804,   808,     0,     0,   549,     0,  1028,  1027, 
     1787       0,  1023,  1025,  1073,  1043,  1072,     0,  1069,  1070,  1059, 
     1788       0,  1055,  1063,     0,   254,     0,     0,     0,     0,   328, 
     1789     192,   240,   238,   239,     0,     0,     0,     0,   466,     0, 
     1790     667,     0,     0,  1006,   534,   496,   498,   500,   517,   526, 
     1791       0,   512,   270,   275,     0,   273,   549,   434,     0,   438, 
     1792     419,   423,   550,     0,   440,   441,     0,     0,   424,   439, 
     1793     225,   231,     0,   734,   726,     0,   562,   569,   565,     0, 
     1794       0,   551,   570,     0,   560,     0,   896,     0,   894,   897, 
     1795       0,     0,   677,   545,   290,     0,   293,     0,   287,   289, 
     1796     297,     0,   294,     0,   276,   346,   349,     0,     0,   371, 
     1797     241,   343,   409,   414,   461,     0,     0,     0,     0,   487, 
     1798     493,     0,   491,   489,   690,   691,   688,   601,     0,   684, 
     1799       0,   686,     0,   678,   731,    25,     0,   744,     0,  1084, 
     1800    1082,     0,   757,     0,     0,   193,   771,   770,     0,     0, 
     1801     790,     0,   783,   776,   784,   969,     0,   963,   950,   951, 
     1802     703,   695,     0,     0,     0,     0,   590,   850,   664,   844, 
     1803     841,   842,   845,   848,     0,   840,   843,   847,   846,     0, 
     1804     835,   931,     0,     0,   932,   933,   939,   930,   536,   938, 
     1805     535,   934,   936,   935,     0,   922,   916,   914,   907,   905, 
     1806       0,     0,  1087,     0,   140,   983,   984,   794,     0,   194, 
     1807       0,     0,     0,     0,   856,     0,   854,   886,   874,     0, 
     1808     869,     0,   892,     0,   863,   890,   893,     0,     0,     0, 
     1809       0,   697,   696,   700,     0,   819,     0,   813,   815,   805, 
     1810       0,   807,  1014,     0,     0,  1016,  1050,     0,  1044,  1056, 
     1811     951,  1064,   951,   222,     0,   251,     0,   248,   247,   549, 
     1812       0,     0,   334,   234,  1010,   671,   470,   469,     0,     0, 
     1813     506,     0,   738,     0,     0,   518,   394,   524,     0,     0, 
     1814       0,     0,     0,     0,   192,   449,   184,   185,   186,   451, 
     1815     452,   454,   455,   453,   448,   450,   313,     0,     0,   315, 
     1816     317,   689,   319,   320,   321,   428,     0,   563,     0,     0, 
     1817     567,   559,     0,   571,   574,   896,   901,     0,   899,     0, 
     1818     872,   787,     0,   291,     0,   286,     0,   241,     0,   283, 
     1819     277,   394,     0,   358,   337,   394,     0,   362,   394,     0, 
     1820     460,   473,   479,     0,     0,   490,   687,     0,     0,   728, 
     1821       0,   745,     0,     0,    32,    33,    91,    71,    94,   259, 
     1822     260,   256,   258,   257,   232,   226,     0,     0,    27,    63, 
     1823      65,    62,   549,    28,   101,   666,     0,     0,   772,     0, 
     1824     791,     0,   792,     0,     0,   988,   989,     0,   952,   947, 
     1825     803,     0,     0,   581,   582,   589,   578,     0,   595,     0, 
     1826       0,   849,   838,     0,   937,     0,   928,     0,     0,     0, 
     1827     606,   608,   609,   603,   800,   985,   980,     0,     0,     0, 
     1828     857,   859,   858,     0,     0,   868,     0,   862,     0,     0, 
     1829     866,     0,     0,   711,     0,   713,   702,   817,     0,   811, 
     1830     816,   809,   549,  1026,  1024,     0,  1042,  1051,  1067,  1071, 
     1831       0,  1048,  1039,  1045,  1050,  1062,  1062,     0,     0,   331, 
     1832       0,   467,     0,   505,   543,   736,   499,   495,     0,   388, 
     1833       0,   375,   380,     0,   383,   376,   386,   377,   390,   378, 
     1834     396,     0,   379,   398,   670,   385,   513,   521,   274,   264, 
     1835       0,   237,   235,     0,     0,   314,   785,   564,   568,   572, 
     1836       0,     0,   895,     0,     0,   288,   392,     0,   299,     0, 
     1837     300,   301,   295,     0,   402,   403,   401,     0,     0,   242, 
     1838       0,     0,   359,   363,     0,   463,   494,   492,   679,   730, 
     1839       0,    31,  1081,  1083,    30,  1085,    66,   542,    67,    72, 
     1840    1080,    95,    98,    96,   102,     0,     0,     0,     0,     0, 
    12061841       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
    1207        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
    1208        0,     0,   334,   329,   330,     0,   337,   340,   339,   333, 
    1209      328,   332,     0,   346,   347,   239,   237,     0,   269,   306, 
    1210      308,   305,   271,   304,   270,   341,   384,   238,     0,    61, 
    1211       93,     0,   345,   382,   101,   140,     0,   138,     0,   383, 
    1212      588,     0,     0,   157,    29,   156,     0,   432,    28,   488, 
    1213      487,   392,     0,     0,   377,   521,   519,     0,   379,     0, 
    1214        0,     0,     0,   154,     0,     0,   131,     0,    46,   164, 
    1215      165,   150,   162,   161,     6,   224,   225,   100,    64,   200, 
    1216      198,   199,     0,    45,   121,     0,   156,   107,     0,     0, 
    1217        8,    11,    12,    20,    21,     0,     0,    16,    17,     0, 
    1218        0,    48,   158,    62,   119,     0,   226,   114,   119,   157, 
    1219        0,     0,     0,     0,   226,   146,   151,     0,     0,   104, 
    1220      206,    43,     0,   168,     0,     0,     0,   170,     0,     0, 
    1221      169,   226,   352,   399,   418,   418,   462,   390,   389,   391, 
    1222        0,     0,   532,   372,     0,   499,   496,   501,   502,   385, 
    1223      375,   560,   561,   537,     0,     0,     0,     0,     0,     0, 
    1224        0,   328,     0,   559,   543,   544,   376,   510,   514,     0, 
    1225      536,     0,    18,   410,     0,     0,   274,   267,     0,     0, 
    1226        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
    1227        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
    1228        0,     0,     0,     0,     0,   573,   574,   572,     0,   575, 
    1229        0,     0,   237,     0,     0,     0,     0,     0,     0,     0, 
    1230        0,     0,     0,     0,     0,     0,     0,     0,   298,     0, 
    1231        0,     0,   272,   273,   532,   344,   309,   307,   307,   335, 
    1232      338,   336,   342,     0,   226,     0,     0,   143,   142,   141, 
    1233      139,     0,     0,    30,   428,     0,   417,   437,     0,   591, 
    1234      594,   589,   525,   526,     0,   304,     0,   522,   524,   541, 
    1235      378,   332,   237,   304,   592,   594,   596,     0,    59,    66, 
    1236       67,    70,    65,    71,    68,    73,    74,    75,    76,    77, 
    1237       72,    78,    79,    80,    81,    82,    83,    84,    85,    86, 
    1238       87,    69,    88,    89,    60,     0,   132,     0,    98,     0, 
    1239        0,     0,     0,   202,   196,   201,   172,   129,     0,     0, 
    1240        0,     0,   129,     0,     0,   156,    10,    14,    15,    33, 
    1241       33,     0,     0,     0,   117,   156,     0,   120,   115,   134, 
    1242      156,   226,   226,   156,   153,     0,   147,   210,   212,   226, 
    1243      214,     0,   216,   217,   218,   219,   220,     0,   208,   211, 
    1244       33,     0,   102,   226,   174,     0,   328,     0,   203,   332, 
    1245        0,   192,   194,     0,   226,     0,   401,   438,     0,   444, 
    1246        0,     0,   463,     0,   494,   495,     0,   493,     0,   506, 
    1247        0,   500,   504,   551,   552,   554,   553,   557,   556,   555, 
    1248        0,   524,     0,   569,   569,   569,   512,   511,   562,     0, 
    1249      513,     0,     0,     0,     0,     0,   549,   405,   467,     0, 
    1250      242,     0,     0,     0,   241,   248,   245,     0,     0,     0, 
    1251        0,     0,     0,     0,     0,     0,     0,     0,     0,   262, 
    1252        0,   264,     0,     0,     0,   237,     0,     0,     0,     0, 
    1253      314,     0,     0,   240,     0,     0,   303,   297,   292,   282, 
    1254      293,   294,   295,   291,   281,   289,   290,   283,   288,   277, 
    1255      278,   279,     0,     0,   299,   296,   280,     0,   285,     0, 
    1256      284,     0,     0,   315,     0,     0,     0,    95,    96,    94, 
    1257       58,     0,     0,     0,     0,   436,     0,     0,     0,     0, 
    1258      530,   531,   307,   226,     0,   516,   518,   520,   517,     0, 
    1259        0,     0,   387,     0,   155,     0,    91,     0,   163,    44, 
    1260      197,     0,   112,     0,   130,     0,     0,   108,   121,   123, 
    1261        0,     0,     0,   156,   431,     0,    25,    23,   160,    47, 
    1262      159,   119,   231,   235,     0,   228,   230,   236,     0,   187, 
    1263      187,     0,   152,   213,     0,     0,   207,   103,   226,   187, 
    1264        0,     0,   203,   176,     0,   179,     0,   193,   490,     0, 
    1265        0,   353,   357,   396,   409,   407,   408,   403,     0,   406, 
    1266      419,   441,   481,   422,   439,   440,     0,   448,   445,     0, 
    1267      473,     0,   468,   470,   464,   461,   418,   489,   507,   498, 
    1268        0,   558,   542,     0,   570,   566,   564,   567,     0,   515, 
    1269      550,   546,   547,   548,   545,   397,   268,   243,   244,   247, 
    1270      251,   252,   253,   254,   255,   250,   256,   257,   258,   259, 
    1271      260,   261,   263,   265,   266,   246,     0,     0,     0,   576, 
    1272      577,   580,   581,   578,   579,   249,   237,   302,   300,   301, 
    1273      287,   286,   313,   344,   327,   319,   316,   317,   320,   310, 
    1274      312,   226,   145,   144,     0,     0,   453,     0,   460,     0, 
    1275        0,     0,   590,   380,     0,     0,   532,   527,   523,   593, 
    1276      381,   597,    90,    99,     0,   109,   129,   129,   129,   129, 
    1277      129,   124,   122,     0,     0,   110,     0,     0,   427,    42, 
    1278       41,    34,     0,    39,    36,    27,   116,   233,     0,   227, 
    1279      232,   133,     0,   136,   137,   148,   222,   223,   221,     0, 
    1280      209,   187,   348,   175,   203,   177,     0,   195,     0,     0, 
    1281        0,     0,     0,     0,   400,   420,   442,     0,   456,   446, 
    1282        0,   449,     0,   418,     0,   480,     0,   474,   476,   469, 
    1283      471,   465,   226,   505,     0,   569,   571,   563,   328,     0, 
    1284        0,     0,   351,     0,     0,   325,   326,     0,   311,    97, 
    1285        0,     0,     0,   435,     0,     0,   529,     0,    92,   113, 
    1286      125,   126,   127,   128,     0,     0,   466,     0,     0,    35, 
    1287        0,    24,   229,   234,   236,     0,   188,   189,   215,   348, 
    1288        0,     0,   166,   178,   204,   363,   354,   355,   360,   359, 
    1289      358,     0,   413,   415,     0,   398,   399,     0,   457,   458, 
    1290      450,   443,   418,   447,   478,     0,   472,   477,   226,     0, 
    1291      565,   582,   583,   584,   343,   324,     0,   321,   318,     0, 
    1292        0,     0,   433,   595,   528,     0,   129,   452,    40,    37, 
    1293        0,     0,   167,   349,   350,     0,     0,   411,   414,   416, 
    1294      399,   402,     0,   459,   451,   475,   479,   491,   568,   323, 
    1295        0,   587,     0,     0,     0,     0,     0,    38,   190,   362, 
    1296      361,   412,   404,   454,   322,   434,   585,   111,   455,     0, 
    1297      586 
     1842      55,     0,     0,     0,    29,   758,   193,     0,   793,   970, 
     1843       0,     0,   964,     0,   587,   584,     0,     0,     0,     0, 
     1844     594,   597,   599,   836,   924,   923,   611,     0,     0,     0, 
     1845       0,     0,     0,     0,   860,   855,   853,   870,   891,   864, 
     1846       0,   709,   712,   714,   814,   818,  1017,     0,  1046,  1049, 
     1847       0,  1047,  1053,     0,     0,     0,     0,   507,     0,     0, 
     1848     527,   395,   389,     0,     0,     0,     0,   384,   400,   396, 
     1849       0,     0,   318,   316,   573,     0,   900,     0,   786,     0, 
     1850     298,     0,     0,     0,     0,   296,   302,   347,   350,   372, 
     1851     364,   366,   365,   306,   462,   394,     0,    64,    64,    64, 
     1852       0,    54,    60,    49,    39,    50,    51,    52,    48,    38, 
     1853      46,    47,    40,    45,    34,    35,    36,     0,     0,    53, 
     1854      56,    37,     0,    42,     0,    41,     0,   788,   997,   965, 
     1855     996,   971,   992,   995,   994,   991,   990,   948,   586,   585, 
     1856     583,   579,   596,     0,   612,   610,   604,   801,   981,   193, 
     1857       0,   710,     0,  1040,     0,  1061,     0,     0,     0,   737, 
     1858       0,   381,   382,   385,   388,     0,   387,   391,   397,   393, 
     1859     399,   522,     0,     0,   898,   292,   303,   305,   304,     0, 
     1860      74,    61,    75,     0,     0,     0,    59,    57,    58,    44, 
     1861      43,   789,     0,     0,   925,     0,  1052,  1054,   246,   249, 
     1862     332,     0,   389,     0,   431,     0,   464,    72,    87,    76, 
     1863      77,    80,    79,    68,     0,    73,   966,   993,   823,     0, 
     1864     497,     0,     0,     0,    85,     0,    86,    70,   333,   432, 
     1865     902,    84,     0,    78,    81,     0,    83,     0,   903,    82 
    12981866}; 
    12991867 
     
    13011869static const yytype_int16 yydefgoto[] = 
    13021870{ 
    1303       -1,     1,    70,    71,    72,    73,   250,    74,   865,    75, 
    1304      205,   129,   127,   696,   951,   862,   863,    76,   237,   463, 
    1305      464,   228,   189,   190,   403,   467,   196,   281,   282,    77, 
    1306       78,   246,   247,   681,    79,    80,   267,   248,   682,   683, 
    1307       81,    82,    83,    84,    85,   409,    86,    87,   275,   276, 
    1308      225,   206,   261,   262,    88,   233,    89,   283,   522,    90, 
    1309      287,   527,    91,    92,   873,   956,   290,   531,   242,   528, 
    1310      725,   284,   517,   518,   879,   519,   497,   704,   705,   706, 
    1311      337,   175,   338,   176,   177,   392,   635,   617,   178,   643, 
    1312      179,   180,   181,   182,   645,   816,   817,   818,   183,   184, 
    1313      185,   401,   396,   193,   186,   962,   187,    94,    95,   731, 
    1314      732,   967,   968,   740,    97,    98,   734,    99,   100,   536, 
    1315      737,   892,   101,   738,   739,   334,   893,   974,   975,   655, 
    1316      537,   102,   103,   104,   105,   106,   207,   418,   538,   743, 
    1317      744,   107,   747,   748,   900,   901,   108,   749,   902,   981, 
    1318      109,   110,   541,   542,   111,   543,   755,   752,   906,   907, 
    1319      908,   745,   112,   113,   114,   115,   116,   211,   291,   117, 
    1320      118,   303,   119,   306,   550,   120,   121,   551,   552,   122, 
    1321      566,   326,   570,   214,   218,   426,   427,   546,   123,   328, 
    1322      124,   428,   429,   331,   567,   568,   765,   368,   369,   854, 
    1323      125,   420,   421,   435,   658,   437 
     1871      -1,     1,    13,    14,    15,    16,    46,    17,    18,    33, 
     1872     284,  1326,  1327,  1524,  1639,  1621,  1328,  1702,  1329,  1617, 
     1873    1618,  1330,  1619,  1331,  1703,  1729,  1730,  1731,   346,  1333, 
     1874    1334,  1503,   347,    51,    52,   100,   101,   102,   173,   174, 
     1875     379,   380,   381,   377,   378,   932,   933,   934,   103,   175, 
     1876     176,   243,  1245,  1246,   244,   991,   177,   105,   572,  1105, 
     1877     245,    19,    20,    44,    68,    67,    70,    72,    71,    69, 
     1878     217,   218,   246,   247,   689,   421,   248,   249,   423,   994, 
     1879    1297,   224,   225,   226,   407,   250,   251,   107,   316,   108, 
     1880     297,   298,   487,   488,  1014,  1015,   784,   526,   527,   528, 
     1881     529,   782,  1057,  1058,  1464,  1061,  1062,  1287,  1467,  1605, 
     1882    1606,   747,   748,   252,   253,   749,  1258,  1259,  1260,   254, 
     1883     412,   255,   697,   413,   414,   415,  1220,  1221,   109,   110, 
     1884    1068,   531,   532,   533,   796,  1291,  1292,   799,   800,   811, 
     1885     801,  1482,  1483,   750,   111,  1070,  1295,  1406,  1430,  1431, 
     1886    1432,  1433,  1434,  1435,  1436,  1437,  1438,  1439,  1440,  1441, 
     1887    1442,  1443,  1477,   113,   534,   318,   536,   537,   114,   540, 
     1888     541,   542,   115,   737,   501,   502,   300,   301,   751,   302, 
     1889     303,   494,   495,  1018,   752,  1024,  1254,   753,   754,   116, 
     1890     117,  1076,   809,  1298,  1615,   118,   275,  1228,   710,   711, 
     1891     119,   120,  1077,   291,   812,   813,   814,   815,    53,   122, 
     1892     817,   548,   549,  1081,  1082,   123,  1235,  1005,  1006,   124, 
     1893     280,   281,   466,  1229,   714,   125,   293,  1238,   483,   543, 
     1894     503,  1011,  1590,   730,   731,  1236,   256,   552,   127,   877, 
     1895    1149,  1150,   641,   916,   917,  1658,   914,   128,   522,   129, 
     1896     329,   130,   509,   497,   131,   132,   133,   767,   768,  1044, 
     1897     769,   178,   599,  1538,  1124,  1353,  1354,  1659,  1535,   880, 
     1898     881,   882,  1126,  1357,  1358,  1359,  1360,  1086,   179,   619, 
     1899    1549,   928,  1161,  1371,  1372,   257,   258,   259,   260,   261, 
     1900     431,   434,   262,   263,   453,   264,   454,   265,   266,   267, 
     1901     268,   269,   456,   458,   461,   270,  1127,  1128,   271,   523, 
     1902     360,  1445,  1226,   370,   371,   372,   373,   180,   181,   326, 
     1903     560,   561,   562,   563,  1263,   555,   556,  1264,   182,   183, 
     1904     390,   656,   958,   184,   657,   658,   594,   959,  1191,  1192, 
     1905     721,   330,   331,   185,   137,   138,   574,   139,   285,   472, 
     1906     332,   575,   576,   140,   141,   577,   846,   142,   578,   579, 
     1907    1106,   349,   186,   187,   583,   584,   866,   867,   144,   585, 
     1908     868,  1113,   188,   189,   392,   393,   190,  1550,  1122,   394, 
     1909     664,   964,  1200,   661,   960,  1196,  1197,  1198,   191,   192, 
     1910     193,   194,   195,   374,   642,   643,   644,   196,   600,  1363, 
     1911     894,   895,  1129,   918,   197,   939,  1175,  1176,   198,  1183, 
     1912    1389,   199,  1179,  1386,   200,   645,   646,   647,   648,  1184, 
     1913    1185,  1047,  1048,  1049,  1277,  1278,  1597,   201,   616,   617, 
     1914     202,   608,   609,   203,  1367,  1663,   358,   908,   909,   383, 
     1915      21,   337,   155,    22,    66,   591,  1533,  1119,  1349,   156, 
     1916     338,   339,   340,    54,   335,    55,  1347,  1712,   588,  1649, 
     1917      23,    56,    24,    65,   625,   626,  1551,  1166,  1376,   871, 
     1918    1117,  1345,  1650,  1651,  1652,  1653,   538,   148,   288,   289, 
     1919     149,   478,   479,   273,   708,   204,   396,   965,   667,  1405, 
     1920     205,   651,   274,   970,   971,   972,    25,    26,    27,    28, 
     1921      29,   671,  1570,   210,  1407,   975,  1412,  1413,  1568,  1408, 
     1922    1414,   673,  1674,  1210,    30,    31,   670,   208,   675,  1572, 
     1923    1212,   398,   669,   976,   977,   978,   206,   157,   589,   355, 
     1924    1102,  1616,   621 
    13241925}; 
    13251926 
    13261927/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 
    13271928   STATE-NUM.  */ 
    1328 #define YYPACT_NINF -845 
     1929#define YYPACT_NINF -1443 
    13291930static const yytype_int16 yypact[] = 
    13301931{ 
    1331     -845,   967,  -845,  -845,  -845,  -845,   -22,    45,  -845,    94, 
    1332      186,  3621,   199,   238,  -845,  4658,    16,    36,  3621,  -845, 
    1333      369,   256,    56,  -845,   299,   280,   268,  -845,  -845,  -845, 
    1334      306,  -845,  -845,   409,   311,   350,  -845,   357,   357,   119, 
    1335      354,  -845,  -845,    53,  -845,  -845,   420,  -845,   386,  -845, 
    1336     -845,  5758,   363,   274,   280,  -845,  -845,  -845,  -845,  -845, 
    1337     -845,  -845,  -845,  -845,   237,  -845,  -845,   549,  -845,  -845, 
    1338     -845,   122,   563,  -845,   440,  -845,  -845,   319,   433,   436, 
    1339      159,   495,   622,   624,  -845,  -845,   523,   329,  -845,  -845, 
    1340      398,   102,   163,  -845,  -845,   471,  -845,  -845,  -845,  -845, 
    1341     -845,   215,  -845,  -845,   215,  -845,  -845,  -845,   215,  -845, 
    1342     -845,   215,  -845,   280,  -845,   280,   280,    20,   630,  -845, 
    1343      472,    44,  3621,   306,  5477,  -845,  -845,  -845,  -845,  -845, 
    1344     4658,  4658,  4658,  -845,  -845,  4658,   473,   474,   477,  -845, 
    1345     4658,  4658,  4658,   478,   484,   486,   487,   488,   494,   496, 
    1346      497,   498,   499,   500,   501,  4658,   505,  4658,   507,   508, 
    1347      511,  4767,  -845,  -845,  -845,   512,  -845,  -845,  -845,  -845, 
    1348     -845,  -845,  4658,  -845,  2490,  -845,  -845,  4658,   470,  -845, 
    1349      513,   515,  -845,   516,   522,   270,  -845,  -845,   524,   654, 
    1350     -845,  4658,  2490,  -845,  -845,  -845,   277,  -845,   277,  -845, 
    1351     -845,  4658,  4658,  -845,  -845,   110,   326,  -845,  -845,  -845, 
    1352     -845,  -845,   524,  5347,  4767,  -845,  -845,  4876,  -845,   524, 
    1353      524,   277,  2573,  -845,   527,   524,  -845,  4658,   665,  -845, 
    1354     -845,  -845,  -845,   680,   563,  -845,  -845,   357,  -845,  -845, 
    1355     2967,  -845,   526,  -845,    88,   524,    32,  -845,   384,    82, 
    1356     -845,  -845,  -845,  -845,  5621,    45,    45,  -845,  -845,   687, 
    1357      533,   691,  -845,  -845,   535,   442,   534,  -845,   535,   524, 
    1358      442,   537,   539,   442,   534,   699,  -845,   545,   847,  -845, 
    1359     -845,  -845,    45,   714,   564,   434,  3874,  -845,  4985,   274, 
    1360     -845,   534,   727,   122,   122,   122,   258,  -845,  -845,  -845, 
    1361     4658,  4658,  -845,  -845,   571,  3983,  -845,  -845,  -845,  -845, 
    1362     -845,  -845,  -845,  -845,  4658,  4658,  4658,  4658,  4658,  4658, 
    1363     4658,   726,  5347,  -845,   470,   522,  -845,  1249,   730,   555, 
    1364      561,  5523,  -845,  2490,   572,  1332,   875,  2490,    38,  4658, 
    1365     4658,  4658,    48,  1353,    61,  4658,  4658,  4658,  4658,  4658, 
    1366     4658,  4658,  4658,  4658,  4658,  4658,  4658,  1514,  4658,    68, 
    1367     4658,  4658,  4658,  4767,  2490,  1533,   753,  1552,   278,   731, 
    1368     4658,  1616,   733,  3294,  4658,  4658,  4658,  4658,  4658,  4658, 
    1369     4658,  4658,  4658,  4658,  4658,  4658,  4658,  4658,  3076,  4658, 
    1370     3403,  3512,  -845,   185,  -845,  4658,  -845,  -845,  -845,  -845, 
    1371     -845,  -845,  -845,    69,   534,   199,  1635,  -845,  -845,   734, 
    1372      734,  1129,  1713,  -845,  -845,   576,  -845,  -845,   736,   470, 
    1373      739,  -845,  -845,  -845,  5523,  3765,    79,  -845,   555,  -845, 
    1374      740,   581,   582,   439,  -845,   743,  -845,   105,   734,  -845, 
    1375     -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845, 
    1376     -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845, 
    1377     -845,  -845,  -845,  -845,   744,   717,  -845,   106,  2490,   588, 
    1378      591,   280,  4092,  -845,  -845,  2490,  -845,   598,  4658,    31, 
    1379      237,   594,   598,   595,   602,   125,  -845,  -845,  -845,   609, 
    1380      609,  4658,   109,   533,  -845,   622,  2531,  -845,  -845,  -845, 
    1381      622,   534,   534,   622,  -845,   545,   699,  -845,  -845,   534, 
    1382     -845,   615,  -845,  -845,  -845,  -845,  -845,   123,  -845,  -845, 
    1383      609,   618,  -845,   534,  -845,  3874,  3185,   585,   750,    34, 
    1384     4201,  -845,  2490,   592,   534,    80,  4331,  5955,    78,  5879, 
    1385       13,    85,  -845,   215,  2490,  2490,   524,  -845,   619,  2490, 
    1386      616,   778,  -845,  2490,  2490,  2490,  2490,  2490,  2490,  2490, 
    1387     4658,   337,  1249,  2490,   706,  1732,  -845,   779,  -845,  1249, 
    1388     -845,  5523,  5523,  5523,  5523,  5523,   760,  4658,  -845,  4658, 
    1389     -845,   111,   115,  1751,  -845,  -845,  -845,  1796,  1815,  1834, 
    1390     1912,  1931,  1995,  2014,  2033,  2092,  2111,  2130,  2194,  -845, 
    1391      121,  -845,   130,   136,   149,   781,   785,   786,  4767,  4767, 
    1392     -845,  4767,   150,  -845,  4658,  4658,  2490,  -845,   542,   542, 
    1393      806,   806,   875,   887,   887,   887,   887,   887,   887,   164, 
    1394      164,   185,  4658,  4658,  2490,  -845,   185,  4658,   887,  4658, 
    1395      887,   524,   787,  2640,   627,   629,   524,  -845,  -845,  -845, 
    1396     -845,   295,  4658,  6031,  4658,  -845,  4658,    19,   631,   337, 
    1397     -845,  -845,  2640,    83,  5347,  -845,  -845,  -845,  -845,    19, 
    1398      632,   524,  -845,  2573,  -845,  4658,  -845,  4658,  -845,  -845, 
    1399     -845,   771,    42,   547,  -845,  2213,   636,  -845,   637,  -845, 
    1400      776,  4658,  4658,   135,  -845,   242,  -845,   774,  2490,  -845, 
    1401     -845,   535,  4658,  -845,   151,  -845,  -845,  1253,   524,   780, 
    1402      780,   545,  -845,  -845,   476,   847,  -845,  -845,   534,   780, 
    1403      641,  4092,   750,  -845,   645,  -845,   644,  -845,  -845,   804, 
    1404      688,   809,  -845,  2490,  -845,  -845,  -845,   773,   215,  -845, 
    1405      215,   653,  -845,  -845,  -845,  -845,   652,   536,  -845,   215, 
    1406     -845,  2749,   655,   664,  -845,  -845,   122,  -845,  -845,  -845, 
    1407     3983,  2490,  -845,   152,  -845,  2490,  2490,  2490,  1249,   779, 
    1408      570,   760,   760,   760,   593,  -845,  2490,  -845,  -845,  -845, 
    1409     -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845, 
    1410     -845,  -845,  -845,  -845,  -845,  -845,  5094,  5094,  5094,  2490, 
    1411     -845,  2490,  -845,  2490,  -845,  -845,   667,   887,   887,   185, 
    1412      887,   887,   470,  4658,  2858,  1415,   828,  -845,  -845,   513, 
    1413     -845,   534,  -845,  -845,  2291,   670,  -845,   671,  -845,  2310, 
    1414     1150,   829,  -845,  -845,  1233,   672,  -845,  -845,  -845,  -845, 
    1415     -845,  -845,  -845,  2490,   153,  -845,   598,   598,   598,   598, 
    1416      598,   522,  -845,   832,   676,  -845,  2329,  2374,  -845,  -845, 
    1417     -845,  -845,   154,  -845,   678,  -845,  -845,  2490,  2531,  -845, 
    1418     4440,  -845,  5203,  -845,  -845,   699,  -845,  -845,  -845,   679, 
    1419     -845,   780,   231,  -845,   750,  -845,  4092,  -845,   291,   681, 
    1420      683,  4658,   586,   215,   122,   122,  -845,  4658,   685,  -845, 
    1421      454,  -845,   215,   122,  4658,  2490,   155,  -845,   842,  -845, 
    1422     -845,  5955,   534,  -845,  1831,  2490,  -845,  -845,   832,   684, 
    1423      686,   689,  -845,   690,  4658,  1435,  4658,  2640,  -845,  -845, 
    1424      845,  4658,  4658,  -845,  4658,   524,  -845,   524,  -845,  -845, 
    1425       66,    66,   693,   143,  4658,   833,  -845,   768,    60,  -845, 
    1426      259,  -845,  -845,  -845,  2490,  4549,  -845,  2490,  -845,   231, 
    1427     4658,  4658,  -845,  -845,  -845,   729,  -845,   851,  -845,  -845, 
    1428     -845,   695,   696,   702,   215,  -845,   122,  2393,  -845,   703, 
    1429     -845,  -845,   122,  5955,  -845,  2749,  -845,  4658,   534,   701, 
    1430     2490,  -845,  -845,  -845,  -845,  2490,  4658,  1455,  -845,  4658, 
    1431      704,  2412,  1171,   470,   697,  1192,   598,  -845,  -845,  -845, 
    1432      157,   705,  -845,  2490,  2490,   709,   713,   716,  -845,  -845, 
    1433      122,  4331,   784,  -845,  5955,  -845,  -845,  -845,  -845,  2490, 
    1434     4658,  2490,  4658,  6107,  4658,  4658,   855,  -845,  -845,  -845, 
    1435     -845,  -845,  4331,   719,  2490,  2490,  1213,  -845,  -845,  4658, 
    1436     2490 
     1932   -1443,   781, -1443, -1443, -1443,   -66,    24, -1443, -1443, -1443, 
     1933     134,   919, -1443, -1443,    72,   307, -1443, -1443, -1443, -1443, 
     1934     975, -1443,   154, -1443,   154,   623,   403, -1443, -1443,   154, 
     1935   -1443,   154, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     1936   -1443, -1443, -1443,   142,   200,   224, -1443, -1443, -1443,   704, 
     1937   -1443, -1443,  4029,   267,   154, -1443,     3,  4324,   254,   304, 
     1938   -1443, -1443,  4324,  4324, -1443,   193,   193,    87,    87,    87, 
     1939      87,   207,    87,  1692, -1443, -1443, -1443, -1443, -1443, -1443, 
     1940     193,   102,   242, -1443, -1443,    96,   259,   359,   510, -1443, 
     1941   -1443,    96,   184, -1443, -1443,   508, -1443,   568, -1443,   388, 
     1942   -1443,  4029, -1443, -1443,   518,  1048,   404, -1443, -1443, -1443, 
     1943     459,   355,   359, -1443, -1443, -1443, -1443,   492, -1443, -1443, 
     1944     503,   552, -1443, -1443, -1443, -1443,   410,   685, -1443,   505, 
     1945   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     1946   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     1947   -1443, -1443, -1443,   606, -1443, -1443, -1443,   650,   532,   537, 
     1948    3547,   310,   374,   486,   578,   595, -1443,  3801,  3816,   608, 
     1949     612,  3587,   752,   703, -1443,  4216, -1443,  1148, -1443, -1443, 
     1950   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     1951     786, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     1952   -1443, -1443, -1443, -1443, -1443,   646, -1443, -1443,   662, -1443, 
     1953     664,   703,   703,    72,    72,   651,  1619, -1443, -1443, -1443, 
     1954   -1443, -1443,   550,  1481, -1443, -1443, -1443, -1443, -1443, -1443, 
     1955   -1443, -1443, -1443, -1443,  3831, -1443, -1443, -1443,   659,   674, 
     1956    3846, -1443,   122,   865, -1443, -1443, -1443,   705, -1443, -1443, 
     1957     404, -1443,   111, -1443, -1443,  3831, -1443, -1443,   862, -1443, 
     1958     831,   225,  1123,   891, -1443, -1443,   888,   905,   856,  1023, 
     1959   -1443, -1443, -1443, -1443,   723,   729,    72,   877, -1443, -1443, 
     1960     100, -1443, -1443,    72,   496,   193,   740, -1443,   101, -1443, 
     1961   -1443,   755,   771,   665,    72,   193,   270,   783,   360,   596, 
     1962     104,   633, -1443, -1443, -1443, -1443,   342, -1443, -1443,  3587, 
     1963    3602,  3846,   193,   946,   971,  3846,   694,   231, -1443,   790, 
     1964     205,   359,   359,   326,  3886,  3846,   839,  3846,  3846,   792, 
     1965   -1443,  4131,   480,   824,   894,   247, -1443, -1443, -1443,   795, 
     1966   -1443, -1443, -1443,  3846,  3846,   331,   388, -1443, -1443,   193, 
     1967     193,    72,   193, -1443, -1443, -1443, -1443, -1443,   811,  2546, 
     1968   -1443,   193,  3403,   193, -1443,   814,    72, -1443, -1443, -1443, 
     1969   -1443, -1443, -1443, -1443,   193,   395,   193, -1443, -1443, -1443, 
     1970    4239, -1443, -1443, -1443,  3846,   819,  3158,  3158,  3602, -1443, 
     1971     745,    93,   106, -1443, -1443,   822,   193, -1443, -1443, -1443, 
     1972   -1443, -1443, -1443,  1020,   835,  1692, -1443, -1443,  1021,  1028, 
     1973     127,  3831,   863,  1035, -1443, -1443, -1443,   708,   708,   463, 
     1974     864, -1443,   869,   871,  1123,   854,  1692,  1692, -1443,   855, 
     1975   -1443,  1123, -1443, -1443,  1123, -1443, -1443,  1123,   884,   831, 
     1976   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     1977   -1443, -1443, -1443,  1023,  1023, -1443,  3846, -1443,  3846, -1443, 
     1978   -1443,  3846, -1443,   867,   874,   868,  1069,   242,    72,   876, 
     1979   -1443, -1443,  1063,    72,   101,   740,    72, -1443,   110, -1443, 
     1980    1050, -1443,   881,   882, -1443,    72,   885,  1074, -1443, -1443, 
     1981     193, -1443,   890, -1443,  1079, -1443, -1443, -1443, -1443, -1443, 
     1982   -1443, -1443,   113,   508,   508,   615,  3846,    96,    96,  1574, 
     1983      72,   193, -1443,    88, -1443, -1443, -1443,   114,   896,    72, 
     1984     974,  3846,   898,  1082, -1443,   325,   926,   762, -1443, -1443, 
     1985    1036,   909,   947,  1101,   193, -1443,  1103, -1443, -1443, -1443, 
     1986     115, -1443, -1443, -1443,   915,   241, -1443,   916,   120, -1443, 
     1987   -1443,    85,   913, -1443, -1443, -1443, -1443,   193,  1110, -1443, 
     1988     129,   137, -1443, -1443,  1069,   193,   923,   814, -1443, -1443, 
     1989      96,  1116,  1008,  4006, -1443, -1443, -1443, -1443,    62, -1443, 
     1990     252, -1443,   933,   834, -1443, -1443,   990, -1443,   938,   193, 
     1991     951, -1443, -1443, -1443,   940,   944,    72,    72,    72,   814, 
     1992    3083,  2997,  3846,   374,  1069,  1069,   854, -1443,   138, -1443, 
     1993      72,  3846,   374,  1069,  1069, -1443,   140, -1443,    72,   814, 
     1994   -1443,   149,    72,   950,   509, -1443,   957, -1443,   952, -1443, 
     1995   -1443,  1136,  3617,  3602,   958,   374,   374,   374,  1069, -1443, 
     1996   -1443, -1443, -1443, -1443, -1443,   152, -1443, -1443, -1443,   155, 
     1997     123,   425,  1069, -1443, -1443, -1443,  1117, -1443, -1443, -1443, 
     1998   -1443,   397,   963, -1443, -1443, -1443, -1443,  3846,    72,    80, 
     1999     193,    80,   977, -1443,   978, -1443,  3846, -1443,   962,  1692, 
     2000    3846,  3846, -1443,  1160,   854, -1443,  3831, -1443, -1443, -1443, 
     2001   -1443,   237,   989, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     2002   -1443,   831,   225,  1150, -1443,   888,   905, -1443,  3846,  1167, 
     2003     165, -1443, -1443,   529,  1173, -1443, -1443,   985, -1443, -1443, 
     2004    3846, -1443,  3846,    72, -1443,   755,    72,   814,  1158,   987, 
     2005    1180, -1443, -1443,   270,    72,   992,   596,   193,   508, -1443, 
     2006   -1443,   991, -1443,  1165, -1443, -1443,   244, -1443,   994, -1443, 
     2007   -1443,   643, -1443,  1165, -1443,  1170,   535, -1443,  1001,    72, 
     2008     193,    72,   193,  1723,   374,  3846,   144,   178, -1443, -1443, 
     2009     141, -1443,    72,  3901,    72,  1096,  3846,   193, -1443,  3846, 
     2010     620, -1443,   814,   439, -1443, -1443, -1443, -1443,  1011, -1443, 
     2011    1013, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443,  1199, 
     2012   -1443,  1016, -1443,  1036,    72,   790,   205,    72,  1024,  1211, 
     2013   -1443, -1443, -1443,  1218, -1443, -1443, -1443,   193,  1032,   459, 
     2014      72,  1037,    72,  3846,  3846, -1443,  3846,  1088, -1443,   193, 
     2015      72, -1443, -1443,    72,   193,  1071,   447,  1045,  3916,  1049, 
     2016     924,  1069, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     2017   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443,   824, 
     2018   -1443, -1443,  1104,  3846,   493, -1443,   691, -1443, -1443, -1443, 
     2019   -1443,  1090,  1244,    72,  1135,   931, -1443, -1443, -1443, -1443, 
     2020    1249, -1443,  1059,  3846,  3846,  3846,  3846,  3846,  1255,  3846, 
     2021     374,  3846,  1069, -1443,   187, -1443,  3846,  1257,  1069,  1069, 
     2022    1069,  1069,  3846,  1069,   374,  1069,  1069, -1443,   188, -1443, 
     2023   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443,  2546, 
     2024     193, -1443, -1443, -1443, -1443,  3403,   193, -1443,  1261,   814, 
     2025   -1443,  3846, -1443,   960, -1443, -1443, -1443,  1235,  2666,  3475, 
     2026    3846, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     2027    3158,  3901,  1034,  1034,    72, -1443, -1443,  3846,   903, -1443, 
     2028    1768,   193,    72, -1443,   193,   193,   122,  1267, -1443, -1443, 
     2029     189, -1443, -1443, -1443, -1443, -1443,  1081,  1263, -1443,    72, 
     2030    1083,  1251,  1254,  1085, -1443,   195,   198,  1100,  3831, -1443, 
     2031   -1443, -1443, -1443, -1443,  1102,   203,  3846,   874, -1443,  1069, 
     2032    3846,  1105,  1293, -1443, -1443,  1295, -1443, -1443, -1443, -1443, 
     2033     882,   625, -1443, -1443,   208, -1443,   146, -1443,  1296, -1443, 
     2034      72, -1443,  1692,  2409, -1443, -1443,  3667,   615, -1443, -1443, 
     2035   -1443, -1443,  1198,    72,    72,  3846,  1300, -1443, -1443,  3682, 
     2036    1574, -1443,  1816,  3846, -1443,  3901, -1443,   132, -1443, -1443, 
     2037     193,  1111,    72, -1443, -1443,  1126, -1443,   346, -1443, -1443, 
     2038    1128,   139, -1443,   193,    72, -1443, -1443,   909,   193, -1443, 
     2039    1306, -1443, -1443, -1443, -1443,  1137,   193,   193,   241,    72, 
     2040    1308,   209, -1443, -1443, -1443, -1443, -1443, -1443,  1326, -1443, 
     2041    1328, -1443,  1069,    72,    72,    96,   193,    72,  3846,  2934, 
     2042    2880,  3371, -1443,   814,  3846,  4347, -1443,   824,  1139,   193, 
     2043      72,   506, -1443, -1443, -1443, -1443,    83, -1443, -1443,  1143, 
     2044      72, -1443,   193,   289,  1144,  3846, -1443, -1443, -1443, -1443, 
     2045   -1443, -1443, -1443, -1443,  3846, -1443, -1443, -1443, -1443,  3083, 
     2046   -1443, -1443,  1069,  1147, -1443, -1443, -1443, -1443, -1443, -1443, 
     2047   -1443, -1443, -1443, -1443,  3317, -1443, -1443,    72, -1443,    72, 
     2048     450,  1149, -1443,  1151, -1443, -1443,  1146, -1443,  1210,   239, 
     2049    1338,  3846,   374,  1069, -1443,   210, -1443, -1443, -1443,   193, 
     2050    1342,  3901, -1443,   193,  1344, -1443, -1443,   143,  1154,   520, 
     2051     557, -1443, -1443,   745,  3846, -1443,   211, -1443,  1347,    72, 
     2052     193,    72,    72,  3846,  3846, -1443,  1305,    80,   558, -1443, 
     2053    1143, -1443,  1143, -1443,  1258, -1443,  1282, -1443, -1443,   146, 
     2054    1163,  1355, -1443, -1443, -1443, -1443, -1443, -1443,   193,   212, 
     2055   -1443,  1168, -1443,  3846,   814,   159,  1894, -1443,   193,   665, 
     2056     992,   193,  3846,   237,   585, -1443, -1443, -1443, -1443, -1443, 
     2057   -1443, -1443, -1443, -1443, -1443, -1443, -1443,  1357,   215, -1443, 
     2058   -1443,  1164, -1443, -1443, -1443, -1443,   193, -1443,  3846,   374, 
     2059   -1443, -1443,  3846,  1361, -1443,   854, -1443,  1363, -1443,  3901, 
     2060      72,    72,  1264, -1443,   620, -1443,  1927,  1306,   814,    72, 
     2061      72,  1894,   602, -1443,    72,  1894,   550,   305,  1894,  1176, 
     2062      72,    72, -1443,  1175,  1032, -1443, -1443,  3846,   193,    72, 
     2063     193,    72,  1177,  3846, -1443, -1443, -1443, -1443, -1443,   636, 
     2064     640,   809,   836,  1009,   547,   562,  1178,  3846,  1174, -1443, 
     2065    1069,  1181,   514,  1186,  1099,   654,   216,  1184, -1443,  1276, 
     2066      72,   193,    72,  1377,  1236,  1379, -1443,   193, -1443, -1443, 
     2067      72,  1069,  1381,  1384, -1443, -1443, -1443,   217, -1443,  3846, 
     2068    1380, -1443, -1443,   193, -1443,  3901, -1443,   193,  1069,  1383, 
     2069   -1443,  1386, -1443, -1443, -1443, -1443, -1443,  3846,   374,  3846, 
     2070   -1443, -1443, -1443,  3475,   193,    72,   193,    72,  1034,   193, 
     2071      72,   586,   193,    72,   193,    72,   745, -1443,  1768, -1443, 
     2072    3846,    72,   388, -1443, -1443,   193, -1443, -1443, -1443, -1443, 
     2073    1196,  1367, -1443, -1443,  1305, -1443, -1443,  1389,  1392, -1443, 
     2074    3846,    72,  1069, -1443, -1443,  1395, -1443,    72,  1378, -1443, 
     2075    1204,  1398, -1443,  1399, -1443,  1401, -1443,  1402, -1443, -1443, 
     2076    3846,  1385,  1404, -1443, -1443,  1405,    72, -1443, -1443,    72, 
     2077    1407, -1443, -1443,  3886,  3886, -1443,    72, -1443, -1443, -1443, 
     2078    3846,  3901, -1443,   193,  1927, -1443, -1443,  1217,  1410,  1412, 
     2079    1402,   362, -1443,  1219, -1443, -1443, -1443,  1222,  1223, -1443, 
     2080    3846,   669, -1443, -1443,  1224, -1443, -1443, -1443,    72,    72, 
     2081     760, -1443, -1443, -1443, -1443, -1443, -1443,   985, -1443,   112, 
     2082   -1443, -1443,  1226, -1443, -1443,  2015,  3846,  3846,  3846,  3846, 
     2083    3846,  3846,  3846,  3846,  3846,  3846,  3846,  3846,  3846,  3846, 
     2084    1425,  3846,  2474,  2531, -1443, -1443,  4347,   588,    72,  1229, 
     2085    1230,  1231,    72,   193, -1443, -1443,  1069,   291,   193,  3846, 
     2086   -1443, -1443, -1443,    72,  1342,    72, -1443,  1069,   301,   193, 
     2087     193,   193,  1232,  1421, -1443, -1443,    72,    72, -1443,    72, 
     2088     193,    72,    72,    72, -1443, -1443,    72,  1239, -1443, -1443, 
     2089     193, -1443, -1443,   193,  3846,  1692,  1429, -1443,  3846,  1241, 
     2090   -1443,  3846,  3697,  2153,  1424,  1430,  1416, -1443, -1443,  3846, 
     2091     882,  3846, -1443, -1443, -1443,  1433, -1443,  1246,    72,  1253, 
     2092   -1443,  3846,  3846,  3846,   669, -1443, -1443, -1443, -1443, -1443, 
     2093   -1443, -1443, -1443, -1443, -1443,  1894,   249, -1443, -1443, -1443, 
     2094    3846, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     2095   -1443, -1443, -1443, -1443, -1443, -1443, -1443,  3846,  3846, -1443, 
     2096   -1443, -1443,  3846, -1443,  3846, -1443,   193,    72,  1236, -1443, 
     2097   -1443,  1436, -1443, -1443, -1443, -1443, -1443,    72, -1443, -1443, 
     2098   -1443,    72, -1443,   193, -1443, -1443,    72,    72,    72,  4347, 
     2099     374,    72,  1256,    72,   193,    72,  1260,  1262,  3846, -1443, 
     2100    1427, -1443, -1443, -1443, -1443,  1442, -1443, -1443, -1443, -1443, 
     2101   -1443,  1180,   218,  3846, -1443, -1443, -1443, -1443, -1443,  1265, 
     2102    1174,  1268,  2232,  1266,  1269,  1270, -1443, -1443, -1443, -1443, 
     2103   -1443,    72,   193,  1229,    72,   193, -1443,    72, -1443, -1443, 
     2104    1453,   814, -1443,  3846, -1443,  1456, -1443, -1443,  2352,  1464, 
     2105   -1443, -1443,  1465, -1443,  1069, -1443,    72, -1443,    72,  3846, 
     2106   -1443,  1273,  3846,  3846,  1467,  2232,  3846, -1443, -1443, -1443, 
     2107    1469, -1443,  3846, -1443,  1470,  3846, -1443,  3846, -1443, -1443 
    14372108}; 
    14382109 
     
    14402111static const yytype_int16 yypgoto[] = 
    14412112{ 
    1442     -845,  -845,  -845,   -96,   830,   628,   -26,  -845,  -845,  -845, 
    1443      399,   156,  -845,   -94,  -845,   -67,   -63,  -845,  -845,   232, 
    1444     -845,  -845,  -845,   509,  -845,   234,    30,  -845,  -845,  -845, 
    1445     -845,  -845,   444,  -464,  -845,  -845,  -238,   438,  -242,  -845, 
    1446     -845,  -845,  -845,  -845,  -845,   -47,  -845,  -845,  -263,   417, 
    1447      -27,   -50,   668,   437,  -845,  -845,  -845,  -845,  -845,  -845, 
    1448     -845,   404,  -845,  -845,  -671,  -845,  -845,  -845,   642,  -231, 
    1449     -656,  -845,  -845,   217,  -845,   882,  -236,  -845,    67,    70, 
    1450      -11,   -78,    55,  -144,  -458,  -507,  -845,  -845,   -97,  -845, 
    1451     -845,  -845,  -845,  -845,   540,  -845,     9,   279,     1,   -70, 
    1452     -845,  -845,  -182,  -382,   365,   -20,  -128,  -845,  -845,  -845, 
    1453       52,  -845,   -73,    43,  -845,  -630,  -845,  -515,  -514,  -844, 
    1454     -845,  -845,  -845,  -845,  -566,  -718,  -845,  -845,  -845,  -845, 
    1455     -294,  -845,  -845,  -845,  -845,  -845,  -185,  -845,  -845,  -845, 
    1456     -845,  -845,  -845,  -663,  -845,  -845,  -845,  -845,  -845,  -845, 
    1457     -845,  -845,  -845,   405,  -845,  -845,  -845,  -845,  -845,   -40, 
    1458     -787,  -845,  -845,  -845,  -845,  -845,  -845,   -38,   190,    11, 
    1459     -845,  -845,  -845,  -845,  -845,  -845,  -845,  -845,   191,  -845, 
    1460     -845,  -845,  -845,   506,  -845,  -845,   288,  -384,  -845,  -845, 
    1461     -845,   -39,   834,  -250,  -126,  -699,  -522,  -140,  -287,  -465, 
    1462     -845,  -845,  -213,  -845,   519,  -845 
     2113   -1443, -1443, -1443,   918, -1443,  1428,   559, -1443, -1443, -1443, 
     2114   -1443, -1443, -1443, -1443, -1443, -1443,  -143, -1443, -1443, -1443, 
     2115   -1443, -1443, -1443, -1443,  -657, -1443,  -269, -1443,   -11, -1443, 
     2116   -1443, -1443, -1443, -1443, -1443, -1443, -1443,  1388,   904, -1443, 
     2117   -1443, -1443,  -154,   758, -1443, -1443, -1443,   545, -1443,   -90, 
     2118    -911,  -641, -1443, -1443,   457,   461,   -45,   133, -1443,   648, 
     2119    -221,   -55, -1443,  1462, -1443, -1443, -1443, -1443, -1443, -1443, 
     2120     852, -1443,  -186,  -191,  1068,  -444,  -202, -1443, -1443, -1443, 
     2121     204, -1443, -1443, -1443,   191,   -27, -1443, -1443, -1443, -1443, 
     2122   -1443, -1443, -1443,   761, -1443,   253, -1443, -1443, -1443,   968, 
     2123   -1443, -1443, -1443,   213, -1443, -1443,   222, -1443,    32, -1443, 
     2124   -1443,  -986,  1487, -1443,  1076,   481, -1443,    51,    53, -1443, 
     2125    1259, -1443, -1443,  1106,  -620, -1443, -1443, -1443, -1443, -1443, 
     2126   -1443, -1443, -1443, -1443,   709, -1443, -1443, -1443,   446, -1443, 
     2127   -1443, -1443, -1443,  -984,  -277, -1443, -1443,   148, -1198, -1180, 
     2128   -1399, -1209, -1033, -1443,   -67, -1155,   -65, -1443, -1443,    78, 
     2129   -1443,   -68, -1443, -1443, -1443, -1443, -1443,   717, -1443, -1443, 
     2130     718, -1443, -1443, -1443, -1443, -1443,  -431, -1443, -1443,  1019, 
     2131    -250, -1443,   791, -1443,   501,  -137, -1443,   507, -1443, -1443, 
     2132   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443,   534, 
     2133   -1443, -1443, -1443,   -29, -1443, -1443,   460, -1443,     8, -1443, 
     2134   -1443, -1443,   716, -1443,   235, -1443, -1443,  -180,   309, -1443, 
     2135   -1443,  1077, -1443, -1443,  -954, -1443, -1443, -1443, -1443,  -283, 
     2136    -489, -1443, -1443,   -44,   539, -1443,  1485, -1443,  1911,  -458, 
     2137     639, -1443, -1443,  -778, -1443,  -540, -1443,  -448,  -299,  -294, 
     2138   -1443,   984, -1443, -1443,  -276,  -296, -1443, -1443,   516, -1443, 
     2139   -1443,   981, -1443, -1443, -1443, -1443,    20,    11,   192, -1443, 
     2140     436,  -585, -1443, -1443,    22, -1443,  -281,   206,   996, -1443, 
     2141   -1443, -1443, -1443, -1443,    14, -1443, -1443,   408,  -160,  1114, 
     2142   -1443, -1443,  -111,  1109, -1443,  1301, -1443,  1108,  1113,  1112, 
     2143   -1443, -1443, -1443, -1443, -1443,  1888,  -805,  -151,  -121,   793, 
     2144     -49,  -983, -1241, -1443, -1443,  -215, -1443,   -48,   275, -1443, 
     2145   -1443, -1443,   750,   756,  -522,   763, -1443,  1272,  -378,  -376, 
     2146    -890, -1443, -1443, -1443, -1443,  -842,  -846, -1443, -1443, -1443, 
     2147   -1443,  -116, -1443,   363, -1443, -1443,  1003, -1443,   -85,  -714, 
     2148    -107,  1250, -1443, -1443, -1443, -1443, -1443, -1443, -1443,  1022, 
     2149   -1443, -1443, -1443,   423, -1443,  -520, -1443, -1443, -1443, -1443, 
     2150   -1443, -1443,  1014, -1443, -1443,  1197, -1443, -1443, -1443, -1443, 
     2151   -1443, -1443, -1443, -1443, -1443, -1443,   199, -1118, -1443,  1025, 
     2152   -1443,   -12, -1443, -1443,   967,  -152, -1443,  1030, -1443, -1443, 
     2153   -1443,   465,   711,   995,  1039, -1443, -1443,   232,  1043, -1443, 
     2154   -1443,  1047, -1443, -1443,    -9,  1221,   988,   671,  -252,   672, 
     2155     238,  -886,  -988,  -905, -1443,   167, -1443,  1060, -1443,   707, 
     2156    1061, -1443,   721,  1062, -1443, -1443, -1443, -1443,   482,   435, 
     2157   -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443,  -390, -1443, 
     2158   -1443, -1443,  1298, -1443, -1443,  1587, -1443, -1443, -1443, -1443, 
     2159   -1443,   686, -1443, -1443, -1443, -1443, -1443, -1443, -1443, -1443, 
     2160   -1443, -1443, -1057, -1443,   -70, -1443, -1442, -1443,  1359,  1171, 
     2161   -1443, -1443,   925,  -496, -1443,  1078, -1443, -1443, -1443, -1443, 
     2162   -1443, -1443,   998,   945,   448,   451, -1443, -1443,  1630,  -140, 
     2163   -1443, -1443, -1443, -1443,   453, -1443, -1443, -1443, -1443,   248, 
     2164     257, -1443, -1443, -1443,  -136, -1443, -1443, -1443, -1443,   255, 
     2165   -1443, -1443, -1443,   993, -1443,   456,   438, -1443, -1443, -1443, 
     2166   -1443, -1443,   569 
    14632167}; 
    14642168 
     
    14662170   positive, shift that token.  If negative, reduce the rule which 
    14672171   number is the opposite.  If YYTABLE_NINF, syntax error.  */ 
    1468 #define YYTABLE_NINF -542 
     2172#define YYTABLE_NINF -1032 
    14692173static const yytype_int16 yytable[] = 
    14702174{ 
    1471      174,   539,    93,   402,   192,   293,   434,   174,   294,   474, 
    1472      641,   775,   295,   642,   506,   296,   243,   366,   690,   684, 
    1473      414,   735,   736,   828,   684,   300,   494,   324,   372,   265, 
    1474      498,   270,   271,   367,   686,   203,   273,  -171,   504,   874, 
    1475      226,   579,   766,   767,    96,   846,   323,   198,   882,   257, 
    1476      258,   579,    93,   268,   325,   534,   764,   764,   764,   203, 
    1477      277,   847,   848,   849,   579,  -171,   885,   221,   222,   917, 
    1478      366,   579,   646,   432,   430,   297,   607,   298,   299,   575, 
    1479     -430,   859,   664,   365,   899,   329,   367,   849,   373,   374, 
    1480      375,   376,   377,   378,    96,   379,   380,   381,   382,   383, 
    1481      384,   332,   385,   386,   387,   388,   389,   729,   671,   675, 
    1482      477,   174,   493,   203,   579,   419,   324,   984,   579,   333, 
    1483      335,   336,   419,   285,   579,   750,   715,   483,   203,   540, 
    1484      343,   126,  1021,   579,  -426,   323,   365,   223,   203,   579, 
    1485      831,   224,   301,   325,   357,   307,   251,   194,   479,  -429, 
    1486      364,   410,   579,   579,   868,   914,   675,   948,   985,  -425, 
    1487      948,   371,   847,   848,   849,  -171,   393,   194,   648,   741, 
    1488      484,   485,   229,   971,   438,   751,  1042,   223,   575,   170, 
    1489      406,   224,   195,   230,   288,   387,   388,   389,   302,   404, 
    1490      411,   412,   753,   742,  -171,   342,   480,   344,  -106,   394, 
    1491     1026,   580,   197,   364,   308,   128,   364,   417,   389,   850, 
    1492      959,   584,   359,  1000,   425,   917,   468,   204,   433,   605, 
    1493      860,   436,  -430,   606,   586,   324,   466,   486,   963,   475, 
    1494      564,   601,   647,   850,   324,   367,   960,   980,   495,     4, 
    1495      730,   680,   665,   500,   323,   496,   503,   390,   391,   563, 
    1496      478,   836,   325,   323,   716,    93,   130,   565,   916,   916, 
    1497      916,   325,   252,   859,   286,   709,   710,   471,   672,   676, 
    1498      499,   413,   699,   713,   777,   475,  -426,   532,   778,   170, 
    1499      859,   609,   251,   561,   792,   365,   204,   719,   253,   544, 
    1500      545,  -429,   576,   793,   549,   722,   413,    96,   728,   794, 
    1501      694,  -425,   540,   553,   554,   555,   556,   557,   558,   559, 
    1502      850,   575,   795,   805,   869,   915,   938,   949,   986,   266, 
    1503     1037,   800,   802,   425,   804,   289,   575,   324,   390,   391, 
    1504      583,   919,   920,   921,   587,   588,   589,   590,   591,   592, 
    1505      593,   594,   595,   596,   597,   598,   323,   223,   131,   390, 
    1506      391,   224,   371,   961,   325,   571,   311,   312,   572,   573, 
    1507      574,   188,   616,   618,   619,   620,   621,   622,   623,   624, 
    1508      625,   626,   627,   628,   629,   630,   631,   634,   636,   638, 
    1509      640,    69,   939,   199,   192,   659,   372,   481,   684,   684, 
    1510      684,   684,   684,   990,   581,   582,   697,   244,   252,   245, 
    1511      191,   278,   860,   828,   610,   861,   482,   239,   764,   575, 
    1512      407,   489,   490,   600,   663,   602,   603,   604,   202,   860, 
    1513      415,   416,  1009,   400,   253,   612,   717,   837,   822,   279, 
    1514      212,   923,   395,   679,   240,   241,   763,   408,   520,   264, 
    1515      209,   235,   236,   769,   832,   701,   210,   756,   875,   989, 
    1516      708,   965,   937,   711,  -156,   823,   839,   966,  -156,   208, 
    1517      223,   475,   911,   866,   224,   564,   775,   685,   213,   255, 
    1518      806,   256,   564,   219,   324,   324,   324,   324,   324,   259, 
    1519      698,   260,   881,   916,   563,   707,   170,   309,   194,   274, 
    1520      884,   563,   565,   323,   323,   323,   323,   323,   269,   565, 
    1521      762,   325,   325,   325,   325,   325,   735,   736,   858,   800, 
    1522      802,   804,   220,  -156,   475,   475,   227,  -156,   372,   371, 
    1523      575,   575,   575,   575,   575,   733,   203,   735,   736,   280, 
    1524      200,   201,   770,   771,   772,   773,   774,   746,    93,   979, 
    1525       93,  -156,  1036,   231,   812,  -156,   232,   757,   684,   761, 
    1526      376,   377,   378,   249,   379,   380,   381,   382,   383,   384, 
    1527      419,   385,   386,   387,   388,   389,   733,   324,   776,   215, 
    1528      216,   217,   419,   571,   311,   312,   572,   573,   574,  -541, 
    1529     -541,  -541,  -541,  -541,  -541,   929,   323,   254,   139,   311, 
    1530      312,   572,   573,   574,   325,   524,   525,   799,   801,   263, 
    1531      803,   398,   668,   364,   807,   940,   941,   942,   943,   983, 
    1532      876,   877,   878,   851,   572,   573,   574,   133,   134,   746, 
    1533      898,   808,   809,   972,   973,   203,   810,   272,   811,   310, 
    1534      327,   292,   815,   304,   305,   339,   340,   928,   394,   341, 
    1535      345,   824,   894,   829,   895,   830,   346,   821,   347,   348, 
    1536      349,   834,   806,   903,    93,   964,   350,   405,   351,   352, 
    1537      353,   354,   355,   356,   843,   425,   468,   358,   469,   360, 
    1538      361,   564,   841,   362,   370,   395,   988,   397,   398,   162, 
    1539      856,   857,   399,   470,   170,   163,   164,   465,  1024,   476, 
    1540      563,   867,   491,   259,   493,   266,   496,   501,   565,   502, 
    1541      166,   167,   505,   168,   169,   274,   390,   391,   171,   871, 
    1542      475,   373,   374,   375,   376,   377,   378,   521,   379,   380, 
    1543      381,   382,   383,   384,   523,   385,   386,   387,   388,   389, 
    1544      535,   560,   547,   569,   611,   577,   614,   651,   654,   674, 
    1545      905,   656,   657,   609,   666,   667,   669,   673,   723,   549, 
    1546      677,   678,  1027,   724,   688,   727,   608,   691,  -237,  -237, 
    1547     -237,  -237,  -237,  -237,   692,  -237,  -237,  -237,  -237,  -237, 
    1548     -237,   695,  -237,  -237,  -237,  -237,  -237,   714,   718,   759, 
    1549      758,   760,   768,   574,   796,   799,   801,   803,   797,   798, 
    1550      819,   813,   820,   845,   833,   840,   853,   976,   855,   478, 
    1551      864,   872,   192,   925,   883,   886,   982,   887,   888,   891, 
    1552      889,   372,   890,   896,   897,   909,   378,   564,   379,   380, 
    1553      381,   382,   383,   384,   910,   385,   386,   387,   388,   389, 
    1554      922,   927,   931,   932,   935,   936,   563,   944,  1003,   945, 
    1555      950,   969,   958,   730,   565,   978,   987,   991,   999,   992, 
    1556     1007,  1015,   993,   994,  1016,  1006,  1018,   707,  1017,   954, 
    1557      850,   957,  1019,  1023,  1028,   302,  1043,  1032,  1038,  1039, 
    1558      390,   391,   507,   965,   394,   475,  1041,  1047,  1020,  1048, 
    1559      333,   234,   488,  1010,   693,  1008,   977,   379,   380,   381, 
    1560      382,   383,   384,   905,   385,   386,   387,   388,   389,  -542, 
    1561     -542,  -542,  -542,  -542,  -542,   842,   385,   386,   387,   388, 
    1562      389,   844,    93,   995,   649,   997,   815,  -237,  -237,   689, 
    1563      333,  1001,   712,  1002,   687,   235,   236,   508,   492,   720, 
    1564      700,   533,   880,  1005,   238,   952,   998,   644,    93,  1012, 
    1565      953,   835,   970,  1040,   371,  1025,   754,   912,  1004,  1013, 
    1566     1014,   913,   838,   509,   670,   510,   511,   512,   330,     0, 
    1567      513,   514,     0,   515,   516,     0,     0,     2,     3,     0, 
    1568      390,   391,     0,     0,   905,     0,   905,     0,     0,     0, 
    1569        0,     0,     0,     0,    93,  1029,     0,     0,  1031,     0, 
    1570        0,     4,     5,     0,     0,     6,   -21,     7,   -21,     8, 
    1571        0,     0,     9,     0,     0,     0,     0,     0,     0,     0, 
    1572      733,     0,    10,     0,     0,     0,     0,     0,     0,  1044, 
    1573        0,   733,     0,  1045,  1046,    93,     0,     0,    11,     0, 
    1574        0,   733,    12,    13,    93,     0,     0,    14,  1050,   390, 
    1575      391,     0,     0,    15,     0,    16,    17,     0,    18,     0, 
    1576        0,   390,   391,    19,    20,    21,    22,    23,     0,    24, 
    1577       25,     0,     0,    26,    27,    28,    29,    30,    31,    32, 
    1578       33,    34,    35,    36,     0,    37,     0,    38,    39,     0, 
    1579        0,    40,    41,    42,     0,    43,     0,    44,     0,     0, 
    1580       45,    46,     0,     0,    47,    48,    49,     0,     0,     0, 
    1581        0,     0,     0,     0,    50,     0,     0,    51,    52,    53, 
    1582       54,    55,    56,    57,    58,    59,    60,    61,    62,    63, 
    1583        0,     0,    64,     0,     0,    65,    66,    67,    68,     0, 
    1584        0,     0,   652,    69,   373,   374,   375,   376,   377,   378, 
    1585        0,   379,   380,   381,   382,   383,   384,     0,   385,   386, 
    1586      387,   388,   389,   934,     0,   373,   374,   375,   376,   377, 
    1587      378,     0,   379,   380,   381,   382,   383,   384,     0,   385, 
    1588      386,   387,   388,   389,  1034,     0,   373,   374,   375,   376, 
    1589      377,   378,     0,   379,   380,   381,   382,   383,   384,     0, 
    1590      385,   386,   387,   388,   389,  1035,     0,   373,   374,   375, 
    1591      376,   377,   378,     0,   379,   380,   381,   382,   383,   384, 
    1592        0,   385,   386,   387,   388,   389,  1049,     0,   373,   374, 
    1593      375,   376,   377,   378,     0,   379,   380,   381,   382,   383, 
    1594      384,     0,   385,   386,   387,   388,   389,   926,   373,   374, 
    1595      375,   376,   377,   378,     0,   379,   380,   381,   382,   383, 
    1596      384,     0,   385,   386,   387,   388,   389,   870,   373,   374, 
    1597      375,   376,   377,   378,     0,   379,   380,   381,   382,   383, 
    1598      384,     0,   385,   386,   387,   388,   389,     0,     0,     0, 
    1599        0,     0,   135,   136,     0,     0,     0,     0,   137,   138, 
    1600      139,   140,   141,   390,   391,     0,     0,     0,     0,     0, 
    1601        0,     0,     0,   142,   143,   144,   145,   146,   147,   148, 
    1602        0,   149,   150,   151,   390,   391,   152,   153,   154,     0, 
    1603      155,   156,   157,   158,   159,     0,   160,     0,     0,     0, 
    1604        0,     0,     0,     0,     0,   390,   391,   373,   374,   375, 
    1605      376,   377,   378,     0,   379,   380,   381,   382,   383,   384, 
    1606        0,   385,   386,   387,   388,   389,   390,   391,   373,   374, 
    1607      375,   376,   377,   378,     0,   379,   380,   381,   382,   383, 
    1608      384,     0,   385,   386,   387,   388,   389,   390,   391,     0, 
    1609        0,   162,     0,     0,     0,     0,     0,   163,   164,     0, 
    1610        0,     0,     0,   165,     0,     0,   613,   390,   391,     0, 
    1611        0,     0,   166,   167,     0,   168,   169,     0,     0,   170, 
    1612      171,   562,     0,     0,     0,     0,     0,   390,   391,   926, 
    1613      373,   374,   375,   376,   377,   378,     0,   379,   380,   381, 
    1614      382,   383,   384,     0,   385,   386,   387,   388,   389,   996, 
    1615      373,   374,   375,   376,   377,   378,     0,   379,   380,   381, 
    1616      382,   383,   384,     0,   385,   386,   387,   388,   389,  1030, 
    1617      373,   374,   375,   376,   377,   378,     0,   379,   380,   381, 
    1618      382,   383,   384,     0,   385,   386,   387,   388,   389,     0, 
     2175      43,   404,   410,   499,   134,   496,   295,   104,   715,   757, 
     2176     484,   153,   654,   738,   655,   361,   363,   341,   716,   489, 
     2177     368,   342,  1019,   498,   272,   106,   967,  1167,   334,   566, 
     2178     106,   406,   333,  1121,   927,   106,   106,  1251,   422,  1253, 
     2179     145,    99,   829,   146,   558,  1230,    99,  1186,  1186,   493, 
     2180     369,    99,    99,   134,   420,   317,   104,  1276,   517,  1346, 
     2181     121,   744,   242,   865,   913,  1180,   989,   967,   106,  1193, 
     2182     436,   438,   739,   923,   106,   435,  1397,  1469,   106,  1130, 
     2183    1131,  1132,   319,   320,    99,   382,  1137,  1654,  -533,   145, 
     2184      99,  -196,   146,  1473,    99,   369,    47,  1478,   949,   282, 
     2185    1484,   973,   439,   467,   475,   277,  1468,   500,   215,   121, 
     2186    1343,  1188,  -196,   725,   427,  -550,   500,   773,   806,    32, 
     2187       4,  1144,  1145,   819,     4,     4,   953,  -183,  -420,   424, 
     2188     681,  1470,   824,  -550,     4,  1279,   650,  -421,     4,     4, 
     2189     826,   919,  1288,   925,     4,  1042,  1388,     4,   106,  1039, 
     2190     437,  -740,   929,  -196,   391,   950,     4,   422,   950,   516, 
     2191     422,     8,   500,     4,    99,     8,     8,     4,   997,  -420, 
     2192     718,    90,   717,   420,   272,     8,   420,   568,  -421,     8, 
     2193       8,  1040,  1681,     4,   678,     8,  -943,   296,     8,   154, 
     2194    1139,  1154,  1204,  1276,  1338,   845,    98,     8,  1214,   341, 
     2195     112,  1216,  1681,   342,     8,   694,  1204,   607,     8,   422, 
     2196     615,  1240,  1304,  1383,  1398,  1422,    34,     4,  1454,   929, 
     2197    1539,  1723,   692,   481,     8,   420,   627,   482,   222,   419, 
     2198     659,  1585,   570,   438,   530,   516,   516,   516,   662,  1610, 
     2199     698,   382,  1378,   698,   230,   231,   438,   993,   424,   112, 
     2200     586,   424,  1312,   797,   571,  1469,   230,   231,     8,   481, 
     2201     511,   525,   816,   482,   439,  1023,   524,  -550,   547,  1007, 
     2202      48,  1654,   974,   471,  1222,  1344,   559,   701,   665,   524, 
     2203    -533,   216,  1565,  -196,  1468,  -533,  -196,   660,    99,   418, 
     2204     382,  1462,   544,   545,    12,   352,  1043,   278,    12,    12, 
     2205     424,  1396,  -420,   745,   106,   878,   428,  1021,    12,  1470, 
     2206    1480,  -421,    12,    12,   743,  -484,   307,   486,    12,   742, 
     2207      99,    12,   682,   879,   825,   878,    35,   135,   780,  1361, 
     2208      12,    49,   827,   920,     4,   926,    73,    12,   307,  -267, 
     2209     307,    12,   653,   879,   930,   590,  1112,   951,   419,  1284, 
     2210     952,   419,  1138,   106,   620,  -774,   272,    12,  1143,  1317, 
     2211     998,  1146,  1696,   106,  1364,  1152,  -198,  1603,   989,    99, 
     2212      83,    84,  1469,  1041,  1685,     8,   135,   272,   272,    99, 
     2213    1585,   943,  1140,  1155,  1205,  1257,  -340,  1351,   771,  1351, 
     2214    1215,    12,  1469,  1217,   756,    74,  -774,   539,  1224,  1368, 
     2215     419,   223,   587,  1241,  1305,  1384,  1399,  1423,   672,   674, 
     2216    1455,  1525,  1540,  1724,   286,   136,   242,  1699,   239,    75, 
     2217      90,     4,   760,   762,    93,    94,   238,    96,   151,    42, 
     2218     239,    42, -1031,    42, -1031,  1352,   279,  1352,   315,   106, 
     2219     499,    42,   496,   514,   623,    98,   207,  1369,   893,   907, 
     2220     910,   287,  1481,   506,   507,   713,   489,  1587,   985,   921, 
     2221     498,   983,     8,     4,   136,   986,   987,   859,  1577,   869, 
     2222     546,     4,   525,  1276,  1656,   143,   106,   106,   746,  1544, 
     2223     781,    42,   516,  1186,   935,   834,   493,   147,   936,   745, 
     2224     150,     9,    99,    99,   741,  1611,   209,  1612,   766,    11, 
     2225     436,  1285,   350,  1059,     8,   992,   506,   507,    12,  1604, 
     2226     290,   436,     8,   508,   290,   491,   435,     4,    60,   514, 
     2227     514,   514,  1239,   652,   143,   844,   797,   757,   840,  -774, 
     2228       4,   757,   292,    47,   810,   862,   147,   106, -1030,   150, 
     2229   -1030,   715,    90,  1088,     4,  1090,   106,  -474,  1368,  1682, 
     2230     233,   716,   492,    99,  1031,   369,    99,   324,     8,   369, 
     2231     369,   849,    99,   967,   854,  1030,   508,    98,   849,  1682, 
     2232    1308,     8,   306,  1534,  1554,  1370,    11,   106,   106,  1250, 
     2233     756,     4,   307,   744,  1410,     8,   106,   106,   713,   961, 
     2234    1534,   437,    64,    99,    99,    12,  1369,     9,   315,  1683, 
     2235    1587,   237,    99,    99,   325,    81,  1587,    76,   713,  1025, 
     2236       4,   106,     4,   469,   470,  1167,  1029,    42,  1697,  1683, 
     2237    1698,   309,     8,   321,    60,   106,   310,    99,   500,   311, 
     2238     272,  1063,    11,  1382,   230,   231,   504,    12,  -237,  1096, 
     2239     955,    99,    42,  -518,   322,    12,  1027,  -518,  1121,   569, 
     2240     570,     8,    58,     8,    59,   505,   966,   307,   312,  1505, 
     2241    1506,  1507,  1508,  1509,  1510,  1028,  1511,  1512,  1513,  1514, 
     2242    1515,  1516,   571,  1517,  1518,  1519,  1520,  1521,   353, -1030, 
     2243     990, -1030,    11,   481,   354,  1109,   363,   482,    42,  -237, 
     2244     327,    12,  -137,    93,    94,   323,    96,   966,  1341,   328, 
     2245      42,  1231,   299,   718,    12,   717,   841,    48,  1499,  1500, 
     2246      57,   106,  1392,   154,   -61,    62,  1004,    63,    12,   336, 
     2247      83,    84,  1054,   307,   238,  1016,   343,    99,   239,  -549, 
     2248     524,   344,     5, -1030,     6, -1030,   911,  1135,     9,   -93, 
     2249     233,     7,   -93,   239,   405,   922,  1428,  1595,   417,  1394, 
     2250    1147,  1055,  1114,  1107,   -92,    12,   375,  1492,  1167,  1056, 
     2251    1474,  1475,  1476,   418,   547,    60,   514,   607,   946,   947, 
     2252     948,  1060,   356,   615,  1087,   559,  1007,   559,  1560,  1022, 
     2253    1646,     2,     3,   158,    12,  -549,    12,  1174,    42,   357, 
     2254     299,   237,     9,   935,   233,   816,   582,   936,  1111,   516, 
     2255      93,    94,   364,    96,   238,     4,   365,    42,   239,     5, 
     2256   -1030,     6, -1030,  1257,   106,   654,   376,   655,     7,    10, 
     2257    1415,   422,  1416,    11, -1030,   745, -1030,   653,   -89,   878, 
     2258      99,   -89,   -90,  -954,   391,   -90,   743,  1249,  1133,   699, 
     2259     395,   742,   700,   422,   402,   237,     8,   879,   106,   693, 
     2260    1522,  1523,   432,   433,    93,    94,   397,    96,   399,   420, 
     2261     417,    42,   459,   460,    99,   106,   878,    11,  -278,     9, 
     2262