#include #include #include # define U(x) x # define NLSTATE yyprevious=YYNEWLINE # define BEGIN yybgin = yysvec + 1 + # define INITIAL 0 # define YYLERR yysvec # define YYSTATE (yyestate-yysvec-1) # define YYOPTIM 1 # ifndef YYLMAX # define YYLMAX BUFSIZ # endif #ifndef __cplusplus # define output(c) (void)putc(c,yyout) #else # define lex_output(c) (void)putc(c,yyout) #endif #if defined(__cplusplus) || defined(__STDC__) #if defined(__cplusplus) && defined(__EXTERN_C__) extern "C" { #endif int yyback(int *, int); int yyinput(void); int yylook(void); void yyoutput(int); int yyracc(int); int yyreject(void); void yyunput(int); int yylex(void); #ifdef YYLEX_E void yywoutput(wchar_t); wchar_t yywinput(void); #endif #ifndef yyless int yyless(int); #endif #ifndef yywrap int yywrap(void); #endif #ifdef LEXDEBUG void allprint(char); void sprint(char *); #endif #if defined(__cplusplus) && defined(__EXTERN_C__) } #endif #ifdef __cplusplus extern "C" { #endif void exit(int); #ifdef __cplusplus } #endif #endif # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} # define yymore() (yymorfg=1) #ifndef __cplusplus # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #else # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #endif #define ECHO fprintf(yyout, "%s",yytext) # define REJECT { nstr = yyreject(); goto yyfussy;} int yyleng; #define YYISARRAY char yytext[YYLMAX]; int yymorfg; extern char *yysptr, yysbuf[]; int yytchar; FILE *yyin = {stdin}, *yyout = {stdout}; extern int yylineno; struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;}; struct yysvf *yyestate; extern struct yysvf yysvec[], *yybgin; # line 6 "../../source/c/lex.l" /** * Definitions */ # line 10 "../../source/c/lex.l" /* * Externals */ #include #include "std-macros.h" #include "parse-tree.h" #include "parser.h" #include "tokens.h" #include "sym.h" #include "translator.h" #include "options.h" #include "lex.h" extern YYSTYPE yylval; int yycharno; /* char count relative to beginning of yylineno */ int yycharpos; /* total char count from beginning of file */ int yycharposnnl;/* total char count from beginning of file, excluding \n's */ int yylinestartpos; int yyprevlinestartpos; char *yyfilename; extern int inAttribute; extern int inParts; #define lparen '(' #define rparen ')' #define COMMENTSIZE 25000 static char CommentBuf[COMMENTSIZE]; # line 39 "../../source/c/lex.l" /* Browser hooks */ extern int bm_position, bm_startpos, bm_endpos; #undef input #undef unput # define input() \ (((yytchar=yysptr>yysbuf?U(*--yysptr):getic(yyin))==10 \ ?(yylineno++,yycharno=1, \ yyprevlinestartpos=yylinestartpos, \ yylinestartpos=yycharpos+2,yytchar):yytchar)==EOF \ ?0:(yycharno++,bm_position++,yycharpos++,yycharposnnl++,yytchar)) # define unput(c) \ {yytchar= (c);if(yytchar=='\n') \ yylineno--;yycharno--;bm_position--;yycharpos--; \ yycharposnnl--;*yysptr++=yytchar;} # line 72 "../../source/c/lex.l" /** * Rules */ # define YYNEWLINE 10 int yylex(){ int nstr; extern int yyprevious; #ifdef __cplusplus /* to avoid CC and lint complaining yyfussy not being used ...*/ static int __lex_hack = 0; if (__lex_hack) goto yyfussy; #endif while((nstr = yylook()) >= 0) yyfussy: switch(nstr){ case 0: if(yywrap()) return(0); break; case 1: # line 75 "../../source/c/lex.l" {SetKeyword(); return(YACTIONS);} break; case 2: # line 76 "../../source/c/lex.l" {SetKeyword(); return(YALL);} break; case 3: # line 77 "../../source/c/lex.l" {SetKeyword(); return(YAND);} break; case 4: # line 78 "../../source/c/lex.l" {SetKeyword(); return(YATTRIBUTE);} break; case 5: # line 79 "../../source/c/lex.l" {SetKeyword(); return(YAX);} break; case 6: # line 80 "../../source/c/lex.l" {SetKeyword(); return(YAXIOM);} break; case 7: # line 81 "../../source/c/lex.l" {SetKeyword(); return(YBEGIN);} break; case 8: # line 82 "../../source/c/lex.l" {SetKeyword(); return(YCOMPONENTS);} break; case 9: # line 83 "../../source/c/lex.l" {SetKeyword(); return(YDATAFLOW);} break; case 10: # line 84 "../../source/c/lex.l" {SetKeyword(); return(YDEFINE);} break; case 11: # line 85 "../../source/c/lex.l" {SetKeyword(); return(YELSE);} break; case 12: # line 86 "../../source/c/lex.l" {SetKeyword(); return(YEND);} break; case 13: # line 87 "../../source/c/lex.l" {SetKeyword(); return(YEQ);} break; case 14: # line 88 "../../source/c/lex.l" {SetKeyword(); return(YEQUATIONS);} break; case 15: # line 89 "../../source/c/lex.l" {SetKeyword(); return(YEXCEPT);} break; case 16: # line 90 "../../source/c/lex.l" {SetKeyword(); return(YEXISTS);} break; case 17: # line 91 "../../source/c/lex.l" {SetKeyword(); return(YEXPORT);} break; case 18: # line 92 "../../source/c/lex.l" {SetKeyword(); return(YEXTENDS);} break; case 19: # line 93 "../../source/c/lex.l" {SetKeyword(); return(YFORALL);} break; case 20: # line 94 "../../source/c/lex.l" {SetKeyword(); return(YFOREACH);} break; case 21: # line 95 "../../source/c/lex.l" {SetKeyword(); return(YFROM);} break; case 22: # line 96 "../../source/c/lex.l" {SetKeyword(); return(YFUNC);} break; case 23: # line 97 "../../source/c/lex.l" {SetKeyword(); return(YFUNCTION);} break; case 24: # line 98 "../../source/c/lex.l" {SetKeyword(); return(YIF);} break; case 25: # line 99 "../../source/c/lex.l" {SetKeyword(); return(YIFF);} break; case 26: # line 100 "../../source/c/lex.l" {SetKeyword(); return(YIMPLIES);} break; case 27: # line 101 "../../source/c/lex.l" {SetKeyword(); return(YIMPORT);} break; case 28: # line 102 "../../source/c/lex.l" {SetKeyword(); return(YIN);} break; case 29: # line 103 "../../source/c/lex.l" {SetKeyword(); return(YINHERITS);} break; case 30: # line 104 "../../source/c/lex.l" {SetKeyword(); return(YINPUTS);} break; case 31: # line 105 "../../source/c/lex.l" {SetKeyword(); return(YIS);} break; case 32: # line 106 "../../source/c/lex.l" {SetKeyword(); return(YISA);} break; case 33: # line 107 "../../source/c/lex.l" {SetKeyword(); return(YISA);} break; case 34: # line 108 "../../source/c/lex.l" {SetKeyword(); return(YLAMBDA);} break; case 35: # line 109 "../../source/c/lex.l" {SetKeyword(); return(YLET);} break; case 36: # line 110 "../../source/c/lex.l" {SetKeyword(); return(YMOD);} break; case 37: # line 111 "../../source/c/lex.l" {SetKeyword(); return(YMODULE);} break; case 38: # line 112 "../../source/c/lex.l" {SetKeyword(); return(YNOT);} break; case 39: # line 113 "../../source/c/lex.l" {SetKeyword(); return(YOBJ);} break; case 40: # line 114 "../../source/c/lex.l" {SetKeyword(); return(YOBJECT);} break; case 41: # line 115 "../../source/c/lex.l" {SetKeyword(); return(YOP);} break; case 42: # line 116 "../../source/c/lex.l" {SetKeyword(); return(YOPERATION);} break; case 43: # line 117 "../../source/c/lex.l" {SetKeyword(); return(YOPERATIONS);} break; case 44: # line 118 "../../source/c/lex.l" {SetKeyword(); return(YOPS);} break; case 45: # line 119 "../../source/c/lex.l" {SetKeyword(); return(YOR);} break; case 46: # line 120 "../../source/c/lex.l" {SetKeyword(); return(YOUT);} break; case 47: # line 121 "../../source/c/lex.l" {SetKeyword(); return(YOUTPUTS);} break; case 48: # line 122 "../../source/c/lex.l" {SetKeyword(); return(YPARTS);} break; case 49: # line 123 "../../source/c/lex.l" {SetKeyword(); return(YPOST);} break; case 50: # line 124 "../../source/c/lex.l" {SetKeyword(); return(YPOSTCONDITION);} break; case 51: # line 125 "../../source/c/lex.l" {SetKeyword(); return(YPRE);} break; case 52: # line 126 "../../source/c/lex.l" {SetKeyword(); return(YPRECONDITION);} break; case 53: # line 127 "../../source/c/lex.l" {SetKeyword(); return(YRETURN);} break; case 54: # line 128 "../../source/c/lex.l" {SetKeyword(); return(YTHEN);} break; case 55: # line 129 "../../source/c/lex.l" {SetKeyword(); return(YTHEOREM);} break; case 56: # line 130 "../../source/c/lex.l" {SetKeyword(); return(YTHM);} break; case 57: # line 131 "../../source/c/lex.l" {SetKeyword(); return(YVAL);} break; case 58: # line 132 "../../source/c/lex.l" {SetKeyword(); return(YVALUE);} break; case 59: # line 133 "../../source/c/lex.l" {SetKeyword(); return(YVAR);} break; case 60: # line 134 "../../source/c/lex.l" {SetKeyword(); return(YVARIABLE);} break; case 61: # line 135 "../../source/c/lex.l" {SetKeyword(); return(YWHERE);} break; case 62: # line 136 "../../source/c/lex.l" {SetKeyword(); return(YWHILE);} break; case 63: # line 137 "../../source/c/lex.l" {SetKeyword(); return(YXOR);} break; case 64: # line 139 "../../source/c/lex.l" {SetKeyword(); return(YNEQ);} break; case 65: # line 140 "../../source/c/lex.l" {SetKeyword(); return(YAEQ);} break; case 66: # line 141 "../../source/c/lex.l" {SetKeyword(); return('#');} break; case 67: # line 142 "../../source/c/lex.l" {SetKeyword(); return(YAND);} break; case 68: # line 143 "../../source/c/lex.l" {SetKeyword(); return('(');} break; case 69: # line 144 "../../source/c/lex.l" {SetKeyword(); return(')');} break; case 70: # line 145 "../../source/c/lex.l" {SetKeyword(); return('*');} break; case 71: # line 146 "../../source/c/lex.l" {SetKeyword(); return('+');} break; case 72: # line 147 "../../source/c/lex.l" {SetKeyword(); return(',');} break; case 73: # line 148 "../../source/c/lex.l" {SetKeyword(); return('-');} break; case 74: # line 149 "../../source/c/lex.l" {SetKeyword(); return(YRTARROW);} break; case 75: # line 150 "../../source/c/lex.l" {SetKeyword(); return(YQRTARROW);} break; case 76: # line 151 "../../source/c/lex.l" {SetKeyword(); return('.');} break; case 77: # line 152 "../../source/c/lex.l" {SetKeyword(); return(YATTRSELECT);} break; case 78: # line 153 "../../source/c/lex.l" {SetKeyword(); return(YATTRSELECT);} break; case 79: # line 154 "../../source/c/lex.l" {SetKeyword(); return(YGETINSTANCE);} break; case 80: # line 155 "../../source/c/lex.l" {SetKeyword(); return(YRETRACT);} break; case 81: # line 156 "../../source/c/lex.l" {SetKeyword(); return('/');} break; case 82: # line 157 "../../source/c/lex.l" {SetKeyword(); return(':');} break; case 83: # line 158 "../../source/c/lex.l" {SetKeyword(); return(YRTARROW);} break; case 84: # line 159 "../../source/c/lex.l" {SetKeyword(); return(YASSMNT);} break; case 85: # line 160 "../../source/c/lex.l" {SetKeyword(); return(';');} break; case 86: # line 161 "../../source/c/lex.l" {SetKeyword(); return('<');} break; case 87: # line 162 "../../source/c/lex.l" {SetKeyword(); return(YLEQ);} break; case 88: # line 163 "../../source/c/lex.l" {SetKeyword(); return(YIFF);} break; case 89: # line 164 "../../source/c/lex.l" {SetKeyword(); return(YNEQ);} break; case 90: # line 165 "../../source/c/lex.l" {SetKeyword(); return('=');} break; case 91: # line 166 "../../source/c/lex.l" {SetKeyword(); return(YEQEQ);} break; case 92: # line 167 "../../source/c/lex.l" {SetKeyword(); return(YIMPLIES);} break; case 93: # line 168 "../../source/c/lex.l" {SetKeyword(); return('>');} break; case 94: # line 169 "../../source/c/lex.l" {SetKeyword(); return(YGEQ);} break; case 95: # line 170 "../../source/c/lex.l" {SetKeyword(); return(YCHKINSTANCE);} break; case 96: # line 171 "../../source/c/lex.l" {SetKeyword(); return('[');} break; case 97: # line 172 "../../source/c/lex.l" {SetKeyword(); return(']');} break; case 98: # line 173 "../../source/c/lex.l" {SetKeyword(); return('^');} break; case 99: # line 174 "../../source/c/lex.l" {SetKeyword(); return('{');} break; case 100: # line 175 "../../source/c/lex.l" {SetKeyword(); return('|');} break; case 101: # line 176 "../../source/c/lex.l" {SetKeyword(); return('}');} break; case 102: # line 177 "../../source/c/lex.l" {SetKeyword(); return(YDOTDOT);} break; case 103: # line 178 "../../source/c/lex.l" {return SetIdent(); /* OTHER THOTS ABANDONED FOR NOW: * pick up a commment and return it as a YText token. * Note that the diff between this case and the case of * a comment elsewhere is that here a YText token is * explicitely returned whereas elsewhere the comment * is ignored for now, and later will be make an attach- * ment. */ /* MAYBE AT SOME POINT: * Cruise over all chars upto the next ':'. Then back * up over the preceding token and see if its a defined * attribute name. If so, terminate the scan, else * continue in this way. */ } break; case 104: # line 195 "../../source/c/lex.l" {return SetIdent();} break; case 105: # line 196 "../../source/c/lex.l" {yylval.YYSsymlit.val = stralloc(&(yytext[1])); return(Ysymlit);} break; case 106: # line 198 "../../source/c/lex.l" {yylval.YYSinteger.val = atoi(yytext); return(Yinteger);} break; case 107: # line 200 "../../source/c/lex.l" {yylval.YYSreal.val = atof(yytext); return(Yreal);} break; case 108: # line 202 "../../source/c/lex.l" {if (strlen(yytext) == 1) { yylval.YYSchar.val = yytext[0]; return(Ychar); } else { yylval.YYSstring.val = stralloc(yytext); return(Ystring); }} break; case 109: # line 210 "../../source/c/lex.l" {if (inParts and GrammarFlagOn()) return YAND;} break; case 110: # line 211 "../../source/c/lex.l" {if (MoveOverMod2Comment() == YEOF) return YEOF; if (inAttribute) { yylval.YYSstring.val = stralloc(CommentBuf); inAttribute = false; /* only one comment will be kept as the value */ return Ytext; } } break; case 111: # line 219 "../../source/c/lex.l" ; break; case 112: # line 220 "../../source/c/lex.l" {fprintf(stderr, "line %d: illegal character %c\n", yylineno, yytext[0]);} break; case -1: break; default: (void)fprintf(yyout,"bad switch yylook %d",nstr); } return(0); } /* end of yylex */ # line 223 "../../source/c/lex.l" /** * Functions */ int MoveOverMod2Comment() { char c = YEOF; int i,l; bool CommentTruncated; l = yylineno; /* Not exactly sure when c to -1, but it has and caused infinite loop when * so. So there's a guard now. */ for (i=0, CommentTruncated=false; c != -1; ) { for (; ((c = input()) != '*') and (c != YEOF) and (c != -1); i++) { if (i < COMMENTSIZE) CommentBuf[i] = c; else if (!CommentTruncated) { printf("Comment truncated to %d chars\n", COMMENTSIZE); CommentTruncated = true; } } if ((c=input()) == rparen) break; if (c == lparen) { error("Nested comment starting on line %d\n", l); break; } else if ((c == YEOF) or (c == -1)) { error("Unterminated comment starting on line %d\n", l); return YEOF; } else unput(c); } CommentBuf[i] = '\0'; return Ytext; /* Just something other than YEOF */ } char* GetLastComment() { return stralloc(CommentBuf); } void ClearComment() { CommentBuf[0] = '\0'; } int MoveOverCurlyComment() { char c; int i,l; bool CommentTruncated; l = yylineno; for (i=0, CommentTruncated=false; (c = input()) != '}'; i++) { if (i < COMMENTSIZE) CommentBuf[i] = c; else if (!CommentTruncated) { printf("Comment truncated to %d chars\n", COMMENTSIZE); CommentTruncated = true; } if (c == YEOF) { error("Unterminated comment starting on line %d\n", l); return YEOF; } } } SetKeyword(symbol) int symbol; { yylval.keyword.text = hashsave(yytext); yylval.keyword.loc.line = yylineno; /* * Next crap is to get col number right when token ends the line. */ if (yytchar == 10) yylval.keyword.loc.col = (yycharpos - yyprevlinestartpos + 1) - (strlen(yytext) - 1); else yylval.keyword.loc.col = yycharno - (strlen(yytext)+1); yylval.keyword.loc.abschar = yycharpos-(strlen(yytext)+1); yylval.keyword.loc.abscharnnl = yycharposnnl-(strlen(yytext)+1); yylval.keyword.loc.file = yyfilename; /* NOTE: yyfilename already stralloc'd in translator.c:GetXXXInFile */ } InitLex() { yycharno = 0; yycharpos = 0; yycharposnnl = 0; yylinestartpos = 0; yyprevlinestartpos = 0; /* InFileStack = NewList(); */ if (not LineBuf) LineBuf = (char *) malloc(MAXLINELEN+1); LineInd = 0; LineBuf[0] = '\0'; } bool SetLexInFile(filename) char *filename; { yycharpos = 0; yycharposnnl = 0; yycharno = 0; yylineno = 1; if (streq(filename, "stdin")) { yyin = stdin; yyfilename = null; } else { yyin = fopen(filename, "r"); if (not yyin) { lexerror("No such file %s.\n", filename); return false; } yyfilename = stralloc(filename); } return true; } void PushLexInFile() { SrcFileLoc *floc = (SrcFileLoc *) malloc(sizeof(SrcFileLoc)); floc->loc.line = yylineno; floc->loc.col = yycharno; floc->loc.file = yyfilename; floc->File = yyin; PushList(InFileStack, (char *) floc); } /* * Reset infile after we're done with an #include. */ SrcFileLoc *PopLexInFile() { SrcFileLoc *floc = (SrcFileLoc *) PopList(InFileStack); fclose(yyin); if (floc) { yylineno = floc->loc.line + 1; yycharno = 0; yycharpos = floc->loc.abschar + 1; yycharposnnl = floc->loc.abscharnnl + 1; yyfilename = floc->loc.file; yyin = floc->File; return floc; } return null; } int NumLexInFiles() { return ListLen(InFileStack); } FILE *CurInFile() { return yyin; } /* * Get the next token manually. */ char *NextToken(); /* * Handle any error messages from the lexer. */ void lexerror(msg) char *msg; { SrcLoc loc; loc.line = yylineno; loc.col = yycharno; loc.file = yyfilename; lserror(loc, msg); } /* * Return a SrcLoc with the current token's info. */ SrcLoc CurSrcLoc() { SrcLoc loc; loc.line = yylineno; loc.col = yycharno; loc.file = yyfilename ? stralloc(yyfilename) : stralloc("stdin"); return loc; } /* * Role the line index back one char. */ ungetic() { LineInd--; } /* * Give us a peek at the previous char in the input buf. */ char getprevc() { return LineInd ? LineBuf[LineInd-1] : '\0'; } /* * Check if we're at the end of a GetLine buffer. This is used in order to * allow multiple stmts/decls on a single interactive line. */ EOL() { return ((LineBuf[LineInd] == '\n') or (LineBuf[LineInd] == '\0')); } /* * Force an end-of-line to be detected by the next call to EOL. Since ForceEOL * is called after a top-level error is detected, we also want to clear the * lexer's input buffer here. This is necessary in order to avoid excess * syntax errors, and other odd behavior. */ ForceEOL() { LineBuf[LineInd] = '\n'; yysptr = yysbuf; } /* * To fix the off-by-1-line multi-file input problem, this gets called from the * top-level translator at a place you can go see. */ ForceEOF() { LineInd = 0; LineBuf[LineInd] = '\0'; } /* * Function to replace the lexer's getc. getic reads from our own buffer * rather than straight from stdin. */ getic(yyin) FILE *yyin; { char *line; if (!LineBuf[LineInd]) { if (interactive) prompt(); line = fgets(LineBuf, MAXLINELEN, yyin); if (line == null) return null; LineInd = 0; } return LineBuf[LineInd++]; } /* * Output an appropriate interative prompt. I.e., if at top-level, then ">", * else if still parsing then ">>". */ prompt(yyin) FILE *yyin; { if (!Parsing) printf("> "); else printf(">>"); } /* * Routine to get the first line so that a single '>' prompt is printed out * initially. */ GetLine(yyin) FILE *yyin; { char *line; if ((LineInd == 0) or (LineBuf[LineInd] == 0) or (LineBuf[LineInd] == '\n')) { printf("> "); line = fgets(LineBuf, MAXLINELEN, yyin); LineInd = 0; return !(line == null); } else return true; } SetIdent() { yylval.YYSident.text = hashsave(yytext); yylval.YYSident.loc.line = yylineno; /* * Next crap is to get col number right when token ends the line. */ if (yytchar == 10) yylval.YYSident.loc.col = (yycharpos - yyprevlinestartpos + 1) - (strlen(yytext) - 1); else yylval.YYSident.loc.col = yycharno - (strlen(yytext)+1); yylval.YYSident.loc.abschar = yycharpos-(strlen(yytext)+1); yylval.YYSident.loc.abscharnnl = yycharposnnl-(strlen(yytext)+1); yylval.YYSident.loc.file = yyfilename; /* NOTE: yyfilename already stralloc'd in translator.c:GetXXXInFile */ /* 20jun92: Browser hooks. */ bm_startpos = bm_position - strlen(yytext) + 1; bm_endpos = bm_position + 1; /* * WARNING! * * Calling IsAttrName with yytext as the arg rather than * yylval.YYSident.text causes an excruciatingly subtle error. * */ if (IsAttrName(yylval.YYSident.text)) { if (streq(yylval.YYSident.text, "description")) { ClearComment(); } return(Yattr); } else return(Yident); } int yyvstop[] = { 0, 112, 0, 109, 112, 0, 109, 0, 112, 0, 112, 0, 66, 112, 0, 112, 0, 67, 112, 0, 112, 0, 68, 112, 0, 69, 112, 0, 70, 112, 0, 71, 112, 0, 72, 112, 0, 73, 112, 0, 76, 112, 0, 81, 112, 0, 106, 112, 0, 82, 112, 0, 85, 112, 0, 86, 112, 0, 90, 112, 0, 93, 112, 0, 32, 112, 0, 104, 112, 0, 96, 112, 0, 97, 112, 0, 98, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 104, 112, 0, 99, 112, 0, 100, 112, 0, 101, 112, 0, 112, 0, 64, 0, 108, 0, 104, 0, 105, 0, 110, 0, 111, 0, 74, 0, 77, 0, 102, 0, 78, 0, 79, 0, 80, 0, 106, 0, 84, 0, 87, 0, 89, 0, 91, 0, 92, 0, 94, 0, 95, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 5, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 13, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 24, 104, 0, 104, 0, 28, 104, 0, 31, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 41, 104, 0, 45, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 65, 0, 103, 0, 107, 0, 83, 0, 88, 0, 75, 0, 104, 0, 2, 104, 0, 3, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 12, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 25, 104, 0, 104, 0, 104, 0, 104, 0, 33, 104, 0, 104, 0, 35, 104, 0, 36, 104, 0, 38, 104, 0, 39, 104, 0, 104, 0, 44, 104, 0, 46, 104, 0, 104, 0, 104, 0, 51, 104, 0, 104, 0, 104, 0, 56, 104, 0, 57, 104, 0, 59, 104, 0, 104, 0, 104, 0, 63, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 11, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 21, 104, 0, 22, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 49, 104, 0, 104, 0, 104, 0, 54, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 6, 104, 0, 7, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 48, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 58, 104, 0, 104, 0, 61, 104, 0, 62, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 10, 104, 0, 104, 0, 15, 104, 0, 16, 104, 0, 17, 104, 0, 104, 0, 19, 104, 0, 104, 0, 104, 0, 104, 0, 27, 104, 0, 104, 0, 30, 104, 0, 34, 104, 0, 37, 104, 0, 40, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 53, 104, 0, 104, 0, 104, 0, 1, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 18, 104, 0, 20, 104, 0, 104, 0, 26, 104, 0, 104, 0, 104, 0, 47, 104, 0, 104, 0, 104, 0, 55, 104, 0, 104, 0, 104, 0, 104, 0, 9, 104, 0, 104, 0, 23, 104, 0, 29, 104, 0, 104, 0, 104, 0, 104, 0, 60, 104, 0, 4, 104, 0, 104, 0, 14, 104, 0, 42, 104, 0, 104, 0, 104, 0, 8, 104, 0, 43, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 104, 0, 52, 104, 0, 50, 104, 0, 0}; # define YYTYPE int struct yywork { YYTYPE verify, advance; } yycrank[] = { 0,0, 0,0, 1,3, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,4, 1,5, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 7,53, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 7,53, 7,0, 0,0, 0,0, 0,0, 0,0, 1,6, 1,7, 1,8, 1,9, 53,0, 1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,17, 1,18, 1,19, 1,20, 56,0, 0,0, 0,0, 7,54, 0,0, 7,53, 0,0, 0,0, 7,53, 1,21, 1,22, 1,23, 1,24, 1,25, 1,26, 6,52, 1,27, 7,53, 12,58, 77,77, 0,0, 17,59, 18,61, 18,62, 62,115, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 26,75, 0,0, 7,53, 18,63, 0,0, 18,64, 17,60, 18,65, 21,68, 25,74, 1,28, 21,69, 1,29, 1,30, 1,27, 26,76, 1,31, 1,32, 1,33, 1,34, 1,35, 1,36, 23,70, 23,71, 1,37, 24,72, 24,73, 1,38, 1,39, 1,40, 1,41, 1,42, 7,53, 1,43, 51,114, 1,44, 68,117, 1,45, 1,46, 1,47, 70,118, 75,119, 1,48, 1,49, 1,50, 1,51, 2,6, 0,0, 2,8, 0,0, 0,0, 2,10, 27,77, 2,12, 2,13, 2,14, 2,15, 2,16, 2,17, 2,18, 2,19, 27,55, 27,55, 27,55, 27,55, 27,55, 27,55, 27,55, 27,55, 27,55, 27,55, 2,21, 2,22, 2,23, 2,24, 2,25, 2,26, 20,66, 0,0, 20,67, 20,67, 20,67, 20,67, 20,67, 20,67, 20,67, 20,67, 20,67, 20,67, 66,116, 66,116, 66,116, 66,116, 66,116, 66,116, 66,116, 66,116, 66,116, 66,116, 0,0, 0,0, 0,0, 0,0, 0,0, 2,28, 0,0, 2,29, 2,30, 0,0, 0,0, 2,31, 2,32, 2,33, 2,34, 2,35, 2,36, 0,0, 0,0, 2,37, 0,0, 0,0, 2,38, 2,39, 2,40, 2,41, 2,42, 0,0, 2,43, 0,0, 2,44, 0,0, 2,45, 2,46, 2,47, 0,0, 0,0, 2,48, 2,49, 2,50, 2,51, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 0,0, 0,0, 0,0, 0,0, 9,55, 0,0, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 9,55, 11,56, 31,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 11,56, 11,0, 31,55, 31,55, 31,55, 31,55, 31,55, 31,55, 31,55, 31,55, 31,55, 31,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 11,56, 0,0, 11,56, 0,0, 0,0, 11,57, 32,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 11,56, 32,55, 32,55, 32,55, 32,55, 32,55, 32,55, 32,55, 32,55, 32,55, 32,55, 0,0, 0,0, 0,0, 31,78, 0,0, 0,0, 11,56, 0,0, 0,0, 0,0, 0,0, 0,0, 31,79, 0,0, 31,80, 0,0, 33,77, 0,0, 0,0, 0,0, 31,81, 0,0, 0,0, 0,0, 31,82, 33,55, 33,55, 33,55, 33,55, 33,55, 33,55, 33,55, 33,55, 33,55, 33,55, 34,77, 11,56, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 32,83, 34,55, 34,55, 34,55, 34,55, 34,55, 34,55, 34,55, 34,55, 34,55, 34,55, 35,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 35,55, 35,55, 35,55, 35,55, 35,55, 35,55, 35,55, 35,55, 35,55, 35,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 59,59, 0,0, 33,84, 36,77, 0,0, 0,0, 0,0, 34,85, 59,59, 59,0, 0,0, 34,86, 36,55, 36,55, 36,55, 36,55, 36,55, 36,55, 36,55, 36,55, 36,55, 36,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 59,59, 0,0, 59,59, 0,0, 35,87, 59,59, 35,88, 0,0, 37,77, 35,89, 0,0, 0,0, 0,0, 0,0, 59,59, 0,0, 35,90, 37,55, 37,55, 37,55, 37,55, 37,55, 37,55, 37,55, 37,55, 37,55, 37,55, 0,0, 0,0, 0,0, 0,0, 59,59, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 38,77, 0,0, 36,91, 0,0, 0,0, 36,92, 0,0, 0,0, 36,93, 38,55, 38,55, 38,55, 38,55, 38,55, 38,55, 38,55, 38,55, 38,55, 38,55, 0,0, 0,0, 59,59, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 37,94, 0,0, 0,0, 0,0, 0,0, 39,77, 0,0, 37,95, 37,96, 0,0, 0,0, 0,0, 0,0, 37,97, 39,55, 39,55, 39,55, 39,55, 39,55, 39,55, 39,55, 39,55, 39,55, 39,55, 40,77, 0,0, 0,0, 38,98, 0,0, 0,0, 0,0, 38,99, 0,0, 40,55, 40,55, 40,55, 40,55, 40,55, 40,55, 40,55, 40,55, 40,55, 40,55, 41,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 41,55, 41,55, 41,55, 41,55, 41,55, 41,55, 41,55, 41,55, 41,55, 41,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 42,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 39,100, 42,55, 42,55, 42,55, 42,55, 42,55, 42,55, 42,55, 42,55, 42,55, 42,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 43,77, 0,0, 40,101, 0,0, 0,0, 0,0, 0,0, 0,0, 41,102, 43,55, 43,55, 43,55, 43,55, 43,55, 43,55, 43,55, 43,55, 43,55, 43,55, 0,0, 0,0, 0,0, 41,103, 0,0, 41,104, 44,77, 0,0, 41,105, 0,0, 0,0, 0,0, 0,0, 0,0, 42,106, 44,55, 44,55, 44,55, 44,55, 44,55, 44,55, 44,55, 44,55, 44,55, 44,55, 0,0, 0,0, 0,0, 42,107, 0,0, 0,0, 42,108, 0,0, 0,0, 0,0, 45,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 43,109, 45,55, 45,55, 45,55, 45,55, 45,55, 45,55, 45,55, 45,55, 45,55, 45,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 46,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 44,110, 46,55, 46,55, 46,55, 46,55, 46,55, 46,55, 46,55, 46,55, 46,55, 46,55, 0,0, 0,0, 0,0, 47,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 45,111, 47,55, 47,55, 47,55, 47,55, 47,55, 47,55, 47,55, 47,55, 47,55, 47,55, 55,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 55,55, 55,55, 55,55, 55,55, 55,55, 55,55, 55,55, 55,55, 55,55, 55,55, 78,77, 0,0, 0,0, 0,0, 0,0, 46,112, 0,0, 0,0, 0,0, 78,55, 78,55, 78,55, 78,55, 78,55, 78,55, 78,55, 78,55, 78,55, 78,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 79,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 47,113, 79,55, 79,55, 79,55, 79,55, 79,55, 79,55, 79,55, 79,55, 79,55, 79,55, 80,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 80,55, 80,55, 80,55, 80,55, 80,55, 80,55, 80,55, 80,55, 80,55, 80,55, 0,0, 0,0, 0,0, 0,0, 0,0, 81,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 78,120, 81,55, 81,55, 81,55, 81,55, 81,55, 81,55, 81,55, 81,55, 81,55, 81,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 79,121, 0,0, 0,0, 82,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 80,122, 82,55, 82,55, 82,55, 82,55, 82,55, 82,55, 82,55, 82,55, 82,55, 82,55, 83,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 83,55, 83,55, 83,55, 83,55, 83,55, 83,55, 83,55, 83,55, 83,55, 83,55, 0,0, 0,0, 84,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 81,123, 84,55, 84,55, 84,55, 84,55, 84,55, 84,55, 84,55, 84,55, 84,55, 84,55, 85,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 82,124, 0,0, 85,55, 85,55, 85,55, 85,55, 85,55, 85,55, 85,55, 85,55, 85,55, 85,55, 86,77, 0,0, 0,0, 0,0, 0,0, 83,125, 0,0, 0,0, 0,0, 86,55, 86,55, 86,55, 86,55, 86,55, 86,55, 86,55, 86,55, 86,55, 86,55, 0,0, 0,0, 0,0, 0,0, 0,0, 87,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 84,126, 87,55, 87,55, 87,55, 87,55, 87,55, 87,55, 87,55, 87,55, 87,55, 87,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 88,77, 0,0, 0,0, 85,127, 0,0, 0,0, 0,0, 0,0, 86,128, 88,55, 88,55, 88,55, 88,55, 88,55, 88,55, 88,55, 88,55, 88,55, 88,55, 89,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 89,55, 89,55, 89,55, 89,55, 89,55, 89,55, 89,55, 89,55, 89,55, 89,55, 90,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 87,129, 0,0, 90,55, 90,55, 90,55, 90,55, 90,55, 90,55, 90,55, 90,55, 90,55, 90,55, 91,77, 0,0, 0,0, 0,0, 88,130, 0,0, 0,0, 0,0, 0,0, 91,55, 91,55, 91,55, 91,55, 91,55, 91,55, 91,55, 91,55, 91,55, 91,55, 92,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 92,55, 92,55, 92,55, 92,55, 92,55, 92,55, 92,55, 92,55, 92,55, 92,55, 0,0, 0,0, 89,131, 90,132, 0,0, 0,0, 0,0, 0,0, 0,0, 90,133, 0,0, 0,0, 93,77, 0,0, 0,0, 0,0, 90,134, 0,0, 0,0, 0,0, 90,135, 93,55, 93,55, 93,55, 93,55, 93,55, 93,55, 93,55, 93,55, 93,55, 93,55, 94,77, 0,0, 0,0, 0,0, 0,0, 0,0, 91,136, 0,0, 0,0, 94,55, 94,55, 94,55, 94,55, 94,55, 94,55, 94,55, 94,55, 94,55, 94,55, 95,77, 0,0, 0,0, 92,137, 0,0, 0,0, 0,0, 0,0, 0,0, 95,55, 95,55, 95,55, 95,55, 95,55, 95,55, 95,55, 95,55, 95,55, 95,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 96,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 93,138, 96,55, 96,55, 96,55, 96,55, 96,55, 96,55, 96,55, 96,55, 96,55, 96,55, 94,139, 97,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 97,55, 97,55, 97,55, 97,55, 97,55, 97,55, 97,55, 97,55, 97,55, 97,55, 0,0, 98,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 95,140, 98,55, 98,55, 98,55, 98,55, 98,55, 98,55, 98,55, 98,55, 98,55, 98,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 96,141, 0,0, 0,0, 0,0, 0,0, 99,77, 0,0, 0,0, 96,142, 0,0, 0,0, 0,0, 0,0, 97,143, 99,55, 99,55, 99,55, 99,55, 99,55, 99,55, 99,55, 99,55, 99,55, 99,55, 100,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 100,55, 100,55, 100,55, 100,55, 100,55, 100,55, 100,55, 100,55, 100,55, 100,55, 101,77, 0,0, 98,144, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 101,55, 101,55, 101,55, 101,55, 101,55, 101,55, 101,55, 101,55, 101,55, 101,55, 102,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 102,55, 102,55, 102,55, 102,55, 102,55, 102,55, 102,55, 102,55, 102,55, 102,55, 103,77, 99,145, 0,0, 0,0, 100,146, 0,0, 0,0, 0,0, 0,0, 103,55, 103,55, 103,55, 103,55, 103,55, 103,55, 103,55, 103,55, 103,55, 103,55, 104,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 104,55, 104,55, 104,55, 104,55, 104,55, 104,55, 104,55, 104,55, 104,55, 104,55, 0,0, 101,147, 105,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 102,148, 105,55, 105,55, 105,55, 105,55, 105,55, 105,55, 105,55, 105,55, 105,55, 105,55, 0,0, 0,0, 0,0, 103,149, 0,0, 0,0, 0,0, 0,0, 0,0, 106,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 103,150, 106,55, 106,55, 106,55, 106,55, 106,55, 106,55, 106,55, 106,55, 106,55, 106,55, 107,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 107,55, 107,55, 107,55, 107,55, 107,55, 107,55, 107,55, 107,55, 107,55, 107,55, 0,0, 0,0, 0,0, 108,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 105,151, 108,55, 108,55, 108,55, 108,55, 108,55, 108,55, 108,55, 108,55, 108,55, 108,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 109,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 106,152, 109,55, 109,55, 109,55, 109,55, 109,55, 109,55, 109,55, 109,55, 109,55, 109,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 107,153, 110,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 108,154, 0,0, 110,55, 110,55, 110,55, 110,55, 110,55, 110,55, 110,55, 110,55, 110,55, 110,55, 111,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 111,55, 111,55, 111,55, 111,55, 111,55, 111,55, 111,55, 111,55, 111,55, 111,55, 0,0, 0,0, 112,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 109,155, 112,55, 112,55, 112,55, 112,55, 112,55, 112,55, 112,55, 112,55, 112,55, 112,55, 0,0, 0,0, 0,0, 110,156, 113,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 110,157, 0,0, 113,55, 113,55, 113,55, 113,55, 113,55, 113,55, 113,55, 113,55, 113,55, 113,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 111,158, 0,0, 0,0, 0,0, 0,0, 0,0, 111,159, 0,0, 0,0, 0,0, 120,77, 0,0, 0,0, 0,0, 112,160, 0,0, 0,0, 0,0, 112,161, 120,55, 120,55, 120,55, 120,55, 120,55, 120,55, 120,55, 120,55, 120,55, 120,55, 121,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 121,55, 121,55, 121,55, 121,55, 121,55, 121,55, 121,55, 121,55, 121,55, 121,55, 122,77, 0,0, 113,162, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 122,55, 122,55, 122,55, 122,55, 122,55, 122,55, 122,55, 122,55, 122,55, 122,55, 0,0, 123,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 120,163, 123,55, 123,55, 123,55, 123,55, 123,55, 123,55, 123,55, 123,55, 123,55, 123,55, 124,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 124,55, 124,55, 124,55, 124,55, 124,55, 124,55, 124,55, 124,55, 124,55, 124,55, 125,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 125,55, 125,55, 125,55, 125,55, 125,55, 125,55, 125,55, 125,55, 125,55, 125,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 126,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 123,164, 126,55, 126,55, 126,55, 126,55, 126,55, 126,55, 126,55, 126,55, 126,55, 126,55, 0,0, 0,0, 0,0, 0,0, 0,0, 124,165, 0,0, 0,0, 0,0, 0,0, 127,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 125,166, 127,55, 127,55, 127,55, 127,55, 127,55, 127,55, 127,55, 127,55, 127,55, 127,55, 128,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 128,55, 128,55, 128,55, 128,55, 128,55, 128,55, 128,55, 128,55, 128,55, 128,55, 129,77, 0,0, 0,0, 0,0, 0,0, 0,0, 126,167, 0,0, 0,0, 129,55, 129,55, 129,55, 129,55, 129,55, 129,55, 129,55, 129,55, 129,55, 129,55, 130,77, 127,168, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 130,55, 130,55, 130,55, 130,55, 130,55, 130,55, 130,55, 130,55, 130,55, 130,55, 0,0, 131,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 128,169, 131,55, 131,55, 131,55, 131,55, 131,55, 131,55, 131,55, 131,55, 131,55, 131,55, 132,77, 0,0, 0,0, 0,0, 129,170, 0,0, 0,0, 0,0, 0,0, 132,55, 132,55, 132,55, 132,55, 132,55, 132,55, 132,55, 132,55, 132,55, 132,55, 133,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 133,55, 133,55, 133,55, 133,55, 133,55, 133,55, 133,55, 133,55, 133,55, 133,55, 134,77, 131,171, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 134,55, 134,55, 134,55, 134,55, 134,55, 134,55, 134,55, 134,55, 134,55, 134,55, 135,77, 0,0, 0,0, 0,0, 0,0, 132,172, 0,0, 0,0, 0,0, 135,55, 135,55, 135,55, 135,55, 135,55, 135,55, 135,55, 135,55, 135,55, 135,55, 136,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 136,55, 136,55, 136,55, 136,55, 136,55, 136,55, 136,55, 136,55, 136,55, 136,55, 133,173, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 134,174, 137,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 135,175, 137,55, 137,55, 137,55, 137,55, 137,55, 137,55, 137,55, 137,55, 137,55, 137,55, 138,77, 0,0, 0,0, 0,0, 136,176, 0,0, 0,0, 0,0, 136,177, 138,55, 138,55, 138,55, 138,55, 138,55, 138,55, 138,55, 138,55, 138,55, 138,55, 139,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 139,55, 139,55, 139,55, 139,55, 139,55, 139,55, 139,55, 139,55, 139,55, 139,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 137,178, 140,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 138,179, 140,55, 140,55, 140,55, 140,55, 140,55, 140,55, 140,55, 140,55, 140,55, 140,55, 141,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 141,55, 141,55, 141,55, 141,55, 141,55, 141,55, 141,55, 141,55, 141,55, 141,55, 142,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 142,55, 142,55, 142,55, 142,55, 142,55, 142,55, 142,55, 142,55, 142,55, 142,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 140,180, 0,0, 0,0, 140,181, 143,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 141,182, 143,55, 143,55, 143,55, 143,55, 143,55, 143,55, 143,55, 143,55, 143,55, 143,55, 144,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 144,55, 144,55, 144,55, 144,55, 144,55, 144,55, 144,55, 144,55, 144,55, 144,55, 145,77, 0,0, 0,0, 0,0, 0,0, 142,183, 0,0, 0,0, 0,0, 145,55, 145,55, 145,55, 145,55, 145,55, 145,55, 145,55, 145,55, 145,55, 145,55, 146,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 146,55, 146,55, 146,55, 146,55, 146,55, 146,55, 146,55, 146,55, 146,55, 146,55, 147,77, 0,0, 144,184, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 147,55, 147,55, 147,55, 147,55, 147,55, 147,55, 147,55, 147,55, 147,55, 147,55, 148,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 148,55, 148,55, 148,55, 148,55, 148,55, 148,55, 148,55, 148,55, 148,55, 148,55, 149,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 149,55, 149,55, 149,55, 149,55, 149,55, 149,55, 149,55, 149,55, 149,55, 149,55, 150,77, 0,0, 146,185, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 150,55, 150,55, 150,55, 150,55, 150,55, 150,55, 150,55, 150,55, 150,55, 150,55, 151,77, 0,0, 0,0, 0,0, 0,0, 148,186, 0,0, 0,0, 0,0, 151,55, 151,55, 151,55, 151,55, 151,55, 151,55, 151,55, 151,55, 151,55, 151,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 152,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 149,187, 152,55, 152,55, 152,55, 152,55, 152,55, 152,55, 152,55, 152,55, 152,55, 152,55, 153,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 153,55, 153,55, 153,55, 153,55, 153,55, 153,55, 153,55, 153,55, 153,55, 153,55, 154,77, 0,0, 0,0, 0,0, 0,0, 0,0, 151,188, 0,0, 0,0, 154,55, 154,55, 154,55, 154,55, 154,55, 154,55, 154,55, 154,55, 154,55, 154,55, 155,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 155,55, 155,55, 155,55, 155,55, 155,55, 155,55, 155,55, 155,55, 155,55, 155,55, 156,77, 152,189, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 156,55, 156,55, 156,55, 156,55, 156,55, 156,55, 156,55, 156,55, 156,55, 156,55, 157,77, 153,190, 0,0, 154,191, 0,0, 0,0, 0,0, 0,0, 0,0, 157,55, 157,55, 157,55, 157,55, 157,55, 157,55, 157,55, 157,55, 157,55, 157,55, 158,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 158,55, 158,55, 158,55, 158,55, 158,55, 158,55, 158,55, 158,55, 158,55, 158,55, 0,0, 0,0, 155,192, 0,0, 0,0, 0,0, 0,0, 159,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 156,193, 156,194, 159,55, 159,55, 159,55, 159,55, 159,55, 159,55, 159,55, 159,55, 159,55, 159,55, 160,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 160,55, 160,55, 160,55, 160,55, 160,55, 160,55, 160,55, 160,55, 160,55, 160,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 161,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 158,195, 161,55, 161,55, 161,55, 161,55, 161,55, 161,55, 161,55, 161,55, 161,55, 161,55, 162,77, 0,0, 0,0, 159,196, 0,0, 0,0, 0,0, 0,0, 0,0, 162,55, 162,55, 162,55, 162,55, 162,55, 162,55, 162,55, 162,55, 162,55, 162,55, 0,0, 0,0, 0,0, 0,0, 163,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 160,197, 163,55, 163,55, 163,55, 163,55, 163,55, 163,55, 163,55, 163,55, 163,55, 163,55, 164,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 161,198, 164,55, 164,55, 164,55, 164,55, 164,55, 164,55, 164,55, 164,55, 164,55, 164,55, 165,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 165,55, 165,55, 165,55, 165,55, 165,55, 165,55, 165,55, 165,55, 165,55, 165,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 166,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 163,199, 166,55, 166,55, 166,55, 166,55, 166,55, 166,55, 166,55, 166,55, 166,55, 166,55, 167,77, 0,0, 164,200, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 167,55, 167,55, 167,55, 167,55, 167,55, 167,55, 167,55, 167,55, 167,55, 167,55, 168,77, 0,0, 0,0, 0,0, 0,0, 0,0, 165,201, 0,0, 0,0, 168,55, 168,55, 168,55, 168,55, 168,55, 168,55, 168,55, 168,55, 168,55, 168,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 169,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 166,202, 169,55, 169,55, 169,55, 169,55, 169,55, 169,55, 169,55, 169,55, 169,55, 169,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 167,203, 0,0, 170,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 168,204, 170,55, 170,55, 170,55, 170,55, 170,55, 170,55, 170,55, 170,55, 170,55, 170,55, 171,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 171,55, 171,55, 171,55, 171,55, 171,55, 171,55, 171,55, 171,55, 171,55, 171,55, 172,77, 0,0, 0,0, 169,205, 0,0, 0,0, 0,0, 0,0, 0,0, 172,55, 172,55, 172,55, 172,55, 172,55, 172,55, 172,55, 172,55, 172,55, 172,55, 173,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 173,55, 173,55, 173,55, 173,55, 173,55, 173,55, 173,55, 173,55, 173,55, 173,55, 174,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 174,55, 174,55, 174,55, 174,55, 174,55, 174,55, 174,55, 174,55, 174,55, 174,55, 0,0, 171,206, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 175,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 172,207, 175,55, 175,55, 175,55, 175,55, 175,55, 175,55, 175,55, 175,55, 175,55, 175,55, 0,0, 0,0, 0,0, 0,0, 176,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 173,208, 176,55, 176,55, 176,55, 176,55, 176,55, 176,55, 176,55, 176,55, 176,55, 176,55, 177,77, 0,0, 0,0, 0,0, 0,0, 0,0, 174,209, 0,0, 0,0, 177,55, 177,55, 177,55, 177,55, 177,55, 177,55, 177,55, 177,55, 177,55, 177,55, 0,0, 0,0, 178,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 175,210, 178,55, 178,55, 178,55, 178,55, 178,55, 178,55, 178,55, 178,55, 178,55, 178,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 176,211, 179,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 177,212, 0,0, 179,55, 179,55, 179,55, 179,55, 179,55, 179,55, 179,55, 179,55, 179,55, 179,55, 180,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 180,55, 180,55, 180,55, 180,55, 180,55, 180,55, 180,55, 180,55, 180,55, 180,55, 181,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 181,55, 181,55, 181,55, 181,55, 181,55, 181,55, 181,55, 181,55, 181,55, 181,55, 182,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 182,55, 182,55, 182,55, 182,55, 182,55, 182,55, 182,55, 182,55, 182,55, 182,55, 0,0, 179,213, 183,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 180,214, 0,0, 183,55, 183,55, 183,55, 183,55, 183,55, 183,55, 183,55, 183,55, 183,55, 183,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 184,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 181,215, 184,55, 184,55, 184,55, 184,55, 184,55, 184,55, 184,55, 184,55, 184,55, 184,55, 185,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 182,216, 185,55, 185,55, 185,55, 185,55, 185,55, 185,55, 185,55, 185,55, 185,55, 185,55, 0,0, 0,0, 0,0, 0,0, 186,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 183,217, 186,55, 186,55, 186,55, 186,55, 186,55, 186,55, 186,55, 186,55, 186,55, 186,55, 184,218, 187,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 187,55, 187,55, 187,55, 187,55, 187,55, 187,55, 187,55, 187,55, 187,55, 187,55, 188,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 185,219, 0,0, 188,55, 188,55, 188,55, 188,55, 188,55, 188,55, 188,55, 188,55, 188,55, 188,55, 189,77, 0,0, 186,220, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 189,55, 189,55, 189,55, 189,55, 189,55, 189,55, 189,55, 189,55, 189,55, 189,55, 190,77, 187,221, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 190,55, 190,55, 190,55, 190,55, 190,55, 190,55, 190,55, 190,55, 190,55, 190,55, 191,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 191,55, 191,55, 191,55, 191,55, 191,55, 191,55, 191,55, 191,55, 191,55, 191,55, 192,77, 0,0, 188,222, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 192,55, 192,55, 192,55, 192,55, 192,55, 192,55, 192,55, 192,55, 192,55, 192,55, 189,223, 193,77, 0,0, 190,224, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 193,55, 193,55, 193,55, 193,55, 193,55, 193,55, 193,55, 193,55, 193,55, 193,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 194,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 191,225, 194,55, 194,55, 194,55, 194,55, 194,55, 194,55, 194,55, 194,55, 194,55, 194,55, 0,0, 0,0, 0,0, 195,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 192,226, 195,55, 195,55, 195,55, 195,55, 195,55, 195,55, 195,55, 195,55, 195,55, 195,55, 196,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 196,55, 196,55, 196,55, 196,55, 196,55, 196,55, 196,55, 196,55, 196,55, 196,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 194,227, 197,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 195,228, 197,55, 197,55, 197,55, 197,55, 197,55, 197,55, 197,55, 197,55, 197,55, 197,55, 198,77, 0,0, 0,0, 0,0, 196,229, 0,0, 0,0, 0,0, 0,0, 198,55, 198,55, 198,55, 198,55, 198,55, 198,55, 198,55, 198,55, 198,55, 198,55, 199,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 199,55, 199,55, 199,55, 199,55, 199,55, 199,55, 199,55, 199,55, 199,55, 199,55, 200,77, 0,0, 0,0, 0,0, 0,0, 197,230, 0,0, 0,0, 0,0, 200,55, 200,55, 200,55, 200,55, 200,55, 200,55, 200,55, 200,55, 200,55, 200,55, 201,77, 0,0, 0,0, 0,0, 0,0, 198,231, 0,0, 0,0, 0,0, 201,55, 201,55, 201,55, 201,55, 201,55, 201,55, 201,55, 201,55, 201,55, 201,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 202,77, 199,232, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 200,233, 202,55, 202,55, 202,55, 202,55, 202,55, 202,55, 202,55, 202,55, 202,55, 202,55, 203,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 203,55, 203,55, 203,55, 203,55, 203,55, 203,55, 203,55, 203,55, 203,55, 203,55, 204,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 204,55, 204,55, 204,55, 204,55, 204,55, 204,55, 204,55, 204,55, 204,55, 204,55, 205,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 205,55, 205,55, 205,55, 205,55, 205,55, 205,55, 205,55, 205,55, 205,55, 205,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 206,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 203,234, 206,55, 206,55, 206,55, 206,55, 206,55, 206,55, 206,55, 206,55, 206,55, 206,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 204,235, 0,0, 0,0, 0,0, 207,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 205,236, 207,55, 207,55, 207,55, 207,55, 207,55, 207,55, 207,55, 207,55, 207,55, 207,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 208,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 206,237, 208,55, 208,55, 208,55, 208,55, 208,55, 208,55, 208,55, 208,55, 208,55, 208,55, 209,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 209,55, 209,55, 209,55, 209,55, 209,55, 209,55, 209,55, 209,55, 209,55, 209,55, 0,0, 0,0, 210,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 207,238, 210,55, 210,55, 210,55, 210,55, 210,55, 210,55, 210,55, 210,55, 210,55, 210,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 211,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 208,239, 211,55, 211,55, 211,55, 211,55, 211,55, 211,55, 211,55, 211,55, 211,55, 211,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 212,77, 0,0, 0,0, 209,240, 0,0, 0,0, 0,0, 0,0, 210,241, 212,55, 212,55, 212,55, 212,55, 212,55, 212,55, 212,55, 212,55, 212,55, 212,55, 213,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 213,55, 213,55, 213,55, 213,55, 213,55, 213,55, 213,55, 213,55, 213,55, 213,55, 214,77, 0,0, 0,0, 0,0, 0,0, 0,0, 211,242, 0,0, 0,0, 214,55, 214,55, 214,55, 214,55, 214,55, 214,55, 214,55, 214,55, 214,55, 214,55, 215,77, 0,0, 0,0, 212,243, 0,0, 0,0, 0,0, 0,0, 0,0, 215,55, 215,55, 215,55, 215,55, 215,55, 215,55, 215,55, 215,55, 215,55, 215,55, 0,0, 216,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 213,244, 216,55, 216,55, 216,55, 216,55, 216,55, 216,55, 216,55, 216,55, 216,55, 216,55, 217,77, 0,0, 0,0, 0,0, 214,245, 0,0, 0,0, 0,0, 0,0, 217,55, 217,55, 217,55, 217,55, 217,55, 217,55, 217,55, 217,55, 217,55, 217,55, 218,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 218,55, 218,55, 218,55, 218,55, 218,55, 218,55, 218,55, 218,55, 218,55, 218,55, 215,246, 219,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 216,247, 219,55, 219,55, 219,55, 219,55, 219,55, 219,55, 219,55, 219,55, 219,55, 219,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 220,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 217,248, 218,249, 220,55, 220,55, 220,55, 220,55, 220,55, 220,55, 220,55, 220,55, 220,55, 220,55, 0,0, 0,0, 0,0, 0,0, 0,0, 221,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 219,250, 221,55, 221,55, 221,55, 221,55, 221,55, 221,55, 221,55, 221,55, 221,55, 221,55, 222,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 222,55, 222,55, 222,55, 222,55, 222,55, 222,55, 222,55, 222,55, 222,55, 222,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 223,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 220,251, 223,55, 223,55, 223,55, 223,55, 223,55, 223,55, 223,55, 223,55, 223,55, 223,55, 0,0, 0,0, 0,0, 0,0, 0,0, 224,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 221,252, 224,55, 224,55, 224,55, 224,55, 224,55, 224,55, 224,55, 224,55, 224,55, 224,55, 225,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 222,253, 225,55, 225,55, 225,55, 225,55, 225,55, 225,55, 225,55, 225,55, 225,55, 225,55, 226,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 226,55, 226,55, 226,55, 226,55, 226,55, 226,55, 226,55, 226,55, 226,55, 226,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 227,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 224,254, 227,55, 227,55, 227,55, 227,55, 227,55, 227,55, 227,55, 227,55, 227,55, 227,55, 228,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 225,255, 0,0, 228,55, 228,55, 228,55, 228,55, 228,55, 228,55, 228,55, 228,55, 228,55, 228,55, 229,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 226,256, 0,0, 229,55, 229,55, 229,55, 229,55, 229,55, 229,55, 229,55, 229,55, 229,55, 229,55, 230,77, 0,0, 0,0, 0,0, 0,0, 227,257, 0,0, 0,0, 0,0, 230,55, 230,55, 230,55, 230,55, 230,55, 230,55, 230,55, 230,55, 230,55, 230,55, 231,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 231,55, 231,55, 231,55, 231,55, 231,55, 231,55, 231,55, 231,55, 231,55, 231,55, 232,77, 0,0, 229,258, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 232,55, 232,55, 232,55, 232,55, 232,55, 232,55, 232,55, 232,55, 232,55, 232,55, 233,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 233,55, 233,55, 233,55, 233,55, 233,55, 233,55, 233,55, 233,55, 233,55, 233,55, 234,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 234,55, 234,55, 234,55, 234,55, 234,55, 234,55, 234,55, 234,55, 234,55, 234,55, 235,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 235,55, 235,55, 235,55, 235,55, 235,55, 235,55, 235,55, 235,55, 235,55, 235,55, 232,259, 236,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 236,55, 236,55, 236,55, 236,55, 236,55, 236,55, 236,55, 236,55, 236,55, 236,55, 237,77, 233,260, 0,0, 0,0, 234,261, 0,0, 0,0, 0,0, 0,0, 237,55, 237,55, 237,55, 237,55, 237,55, 237,55, 237,55, 237,55, 237,55, 237,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 238,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 235,262, 238,55, 238,55, 238,55, 238,55, 238,55, 238,55, 238,55, 238,55, 238,55, 238,55, 239,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 239,55, 239,55, 239,55, 239,55, 239,55, 239,55, 239,55, 239,55, 239,55, 239,55, 0,0, 240,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 237,263, 240,55, 240,55, 240,55, 240,55, 240,55, 240,55, 240,55, 240,55, 240,55, 240,55, 241,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 241,55, 241,55, 241,55, 241,55, 241,55, 241,55, 241,55, 241,55, 241,55, 241,55, 242,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 242,55, 242,55, 242,55, 242,55, 242,55, 242,55, 242,55, 242,55, 242,55, 242,55, 243,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 243,55, 243,55, 243,55, 243,55, 243,55, 243,55, 243,55, 243,55, 243,55, 243,55, 244,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 244,55, 244,55, 244,55, 244,55, 244,55, 244,55, 244,55, 244,55, 244,55, 244,55, 241,264, 245,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 245,55, 245,55, 245,55, 245,55, 245,55, 245,55, 245,55, 245,55, 245,55, 245,55, 246,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 243,265, 0,0, 246,55, 246,55, 246,55, 246,55, 246,55, 246,55, 246,55, 246,55, 246,55, 246,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 247,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 244,266, 247,55, 247,55, 247,55, 247,55, 247,55, 247,55, 247,55, 247,55, 247,55, 247,55, 0,0, 0,0, 0,0, 0,0, 0,0, 248,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 245,267, 248,55, 248,55, 248,55, 248,55, 248,55, 248,55, 248,55, 248,55, 248,55, 248,55, 249,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 249,55, 249,55, 249,55, 249,55, 249,55, 249,55, 249,55, 249,55, 249,55, 249,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 250,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 247,268, 250,55, 250,55, 250,55, 250,55, 250,55, 250,55, 250,55, 250,55, 250,55, 250,55, 251,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 251,55, 251,55, 251,55, 251,55, 251,55, 251,55, 251,55, 251,55, 251,55, 251,55, 252,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 252,55, 252,55, 252,55, 252,55, 252,55, 252,55, 252,55, 252,55, 252,55, 252,55, 253,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 253,55, 253,55, 253,55, 253,55, 253,55, 253,55, 253,55, 253,55, 253,55, 253,55, 254,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 254,55, 254,55, 254,55, 254,55, 254,55, 254,55, 254,55, 254,55, 254,55, 254,55, 0,0, 255,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 252,269, 255,55, 255,55, 255,55, 255,55, 255,55, 255,55, 255,55, 255,55, 255,55, 255,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 256,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 253,270, 256,55, 256,55, 256,55, 256,55, 256,55, 256,55, 256,55, 256,55, 256,55, 256,55, 0,0, 0,0, 0,0, 254,271, 0,0, 257,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 255,272, 257,55, 257,55, 257,55, 257,55, 257,55, 257,55, 257,55, 257,55, 257,55, 257,55, 258,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 258,55, 258,55, 258,55, 258,55, 258,55, 258,55, 258,55, 258,55, 258,55, 258,55, 259,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 259,55, 259,55, 259,55, 259,55, 259,55, 259,55, 259,55, 259,55, 259,55, 259,55, 0,0, 0,0, 0,0, 0,0, 0,0, 260,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 257,273, 260,55, 260,55, 260,55, 260,55, 260,55, 260,55, 260,55, 260,55, 260,55, 260,55, 261,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 258,274, 0,0, 261,55, 261,55, 261,55, 261,55, 261,55, 261,55, 261,55, 261,55, 261,55, 261,55, 262,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 262,55, 262,55, 262,55, 262,55, 262,55, 262,55, 262,55, 262,55, 262,55, 262,55, 263,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 263,55, 263,55, 263,55, 263,55, 263,55, 263,55, 263,55, 263,55, 263,55, 263,55, 0,0, 260,275, 0,0, 0,0, 0,0, 0,0, 264,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 261,276, 264,55, 264,55, 264,55, 264,55, 264,55, 264,55, 264,55, 264,55, 264,55, 264,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 262,277, 0,0, 265,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 263,278, 265,55, 265,55, 265,55, 265,55, 265,55, 265,55, 265,55, 265,55, 265,55, 265,55, 266,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 266,55, 266,55, 266,55, 266,55, 266,55, 266,55, 266,55, 266,55, 266,55, 266,55, 267,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 267,55, 267,55, 267,55, 267,55, 267,55, 267,55, 267,55, 267,55, 267,55, 267,55, 268,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 268,55, 268,55, 268,55, 268,55, 268,55, 268,55, 268,55, 268,55, 268,55, 268,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 269,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 266,279, 269,55, 269,55, 269,55, 269,55, 269,55, 269,55, 269,55, 269,55, 269,55, 269,55, 270,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 270,55, 270,55, 270,55, 270,55, 270,55, 270,55, 270,55, 270,55, 270,55, 270,55, 0,0, 0,0, 0,0, 0,0, 0,0, 271,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 268,280, 271,55, 271,55, 271,55, 271,55, 271,55, 271,55, 271,55, 271,55, 271,55, 271,55, 0,0, 0,0, 272,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 269,281, 272,55, 272,55, 272,55, 272,55, 272,55, 272,55, 272,55, 272,55, 272,55, 272,55, 273,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 273,55, 273,55, 273,55, 273,55, 273,55, 273,55, 273,55, 273,55, 273,55, 273,55, 274,77, 0,0, 271,282, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 274,55, 274,55, 274,55, 274,55, 274,55, 274,55, 274,55, 274,55, 274,55, 274,55, 0,0, 275,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 272,283, 275,55, 275,55, 275,55, 275,55, 275,55, 275,55, 275,55, 275,55, 275,55, 275,55, 276,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 276,55, 276,55, 276,55, 276,55, 276,55, 276,55, 276,55, 276,55, 276,55, 276,55, 277,77, 0,0, 0,0, 0,0, 274,284, 0,0, 0,0, 0,0, 0,0, 277,55, 277,55, 277,55, 277,55, 277,55, 277,55, 277,55, 277,55, 277,55, 277,55, 278,77, 0,0, 0,0, 0,0, 0,0, 275,285, 0,0, 0,0, 0,0, 278,55, 278,55, 278,55, 278,55, 278,55, 278,55, 278,55, 278,55, 278,55, 278,55, 279,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 279,55, 279,55, 279,55, 279,55, 279,55, 279,55, 279,55, 279,55, 279,55, 279,55, 280,77, 276,286, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 280,55, 280,55, 280,55, 280,55, 280,55, 280,55, 280,55, 280,55, 280,55, 280,55, 281,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 281,55, 281,55, 281,55, 281,55, 281,55, 281,55, 281,55, 281,55, 281,55, 281,55, 278,287, 282,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 282,55, 282,55, 282,55, 282,55, 282,55, 282,55, 282,55, 282,55, 282,55, 282,55, 283,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 283,55, 283,55, 283,55, 283,55, 283,55, 283,55, 283,55, 283,55, 283,55, 283,55, 0,0, 0,0, 0,0, 0,0, 0,0, 284,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 281,288, 284,55, 284,55, 284,55, 284,55, 284,55, 284,55, 284,55, 284,55, 284,55, 284,55, 285,77, 0,0, 0,0, 0,0, 282,289, 0,0, 0,0, 0,0, 0,0, 285,55, 285,55, 285,55, 285,55, 285,55, 285,55, 285,55, 285,55, 285,55, 285,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 286,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 283,290, 286,55, 286,55, 286,55, 286,55, 286,55, 286,55, 286,55, 286,55, 286,55, 286,55, 287,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 287,55, 287,55, 287,55, 287,55, 287,55, 287,55, 287,55, 287,55, 287,55, 287,55, 288,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 288,55, 288,55, 288,55, 288,55, 288,55, 288,55, 288,55, 288,55, 288,55, 288,55, 289,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 289,55, 289,55, 289,55, 289,55, 289,55, 289,55, 289,55, 289,55, 289,55, 289,55, 286,291, 290,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 290,55, 290,55, 290,55, 290,55, 290,55, 290,55, 290,55, 290,55, 290,55, 290,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 291,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 288,292, 291,55, 291,55, 291,55, 291,55, 291,55, 291,55, 291,55, 291,55, 291,55, 291,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 289,293, 292,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 290,294, 292,55, 292,55, 292,55, 292,55, 292,55, 292,55, 292,55, 292,55, 292,55, 292,55, 293,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 293,55, 293,55, 293,55, 293,55, 293,55, 293,55, 293,55, 293,55, 293,55, 293,55, 294,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 294,55, 294,55, 294,55, 294,55, 294,55, 294,55, 294,55, 294,55, 294,55, 294,55, 295,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 295,55, 295,55, 295,55, 295,55, 295,55, 295,55, 295,55, 295,55, 295,55, 295,55, 0,0, 296,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 293,295, 296,55, 296,55, 296,55, 296,55, 296,55, 296,55, 296,55, 296,55, 296,55, 296,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 297,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 294,296, 297,55, 297,55, 297,55, 297,55, 297,55, 297,55, 297,55, 297,55, 297,55, 297,55, 298,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 295,297, 298,55, 298,55, 298,55, 298,55, 298,55, 298,55, 298,55, 298,55, 298,55, 298,55, 299,77, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 296,298, 299,55, 299,55, 299,55, 299,55, 299,55, 299,55, 299,55, 299,55, 299,55, 299,55, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 297,299, 0,0, 0,0, 0,0}; struct yysvf yysvec[] = { 0, 0, 0, yycrank+-1, 0, 0, yycrank+-95, yysvec+1, 0, yycrank+0, 0, yyvstop+1, yycrank+0, 0, yyvstop+3, yycrank+0, 0, yyvstop+6, yycrank+4, 0, yyvstop+8, yycrank+-19, 0, yyvstop+10, yycrank+0, 0, yyvstop+12, yycrank+157, 0, yyvstop+15, yycrank+0, 0, yyvstop+17, yycrank+-279, 0, yyvstop+20, yycrank+26, 0, yyvstop+22, yycrank+0, 0, yyvstop+25, yycrank+0, 0, yyvstop+28, yycrank+0, 0, yyvstop+31, yycrank+0, 0, yyvstop+34, yycrank+26, 0, yyvstop+37, yycrank+27, 0, yyvstop+40, yycrank+0, 0, yyvstop+43, yycrank+113, 0, yyvstop+46, yycrank+32, 0, yyvstop+49, yycrank+0, 0, yyvstop+52, yycrank+43, 0, yyvstop+55, yycrank+46, 0, yyvstop+58, yycrank+30, 0, yyvstop+61, yycrank+37, 0, yyvstop+64, yycrank+95, yysvec+9, yyvstop+67, yycrank+0, 0, yyvstop+70, yycrank+0, 0, yyvstop+73, yycrank+0, 0, yyvstop+76, yycrank+242, yysvec+9, yyvstop+79, yycrank+280, yysvec+9, yyvstop+82, yycrank+315, yysvec+9, yyvstop+85, yycrank+334, yysvec+9, yyvstop+88, yycrank+353, yysvec+9, yyvstop+91, yycrank+388, yysvec+9, yyvstop+94, yycrank+426, yysvec+9, yyvstop+97, yycrank+458, yysvec+9, yyvstop+100, yycrank+494, yysvec+9, yyvstop+103, yycrank+513, yysvec+9, yyvstop+106, yycrank+532, yysvec+9, yyvstop+109, yycrank+558, yysvec+9, yyvstop+112, yycrank+583, yysvec+9, yyvstop+115, yycrank+608, yysvec+9, yyvstop+118, yycrank+637, yysvec+9, yyvstop+121, yycrank+665, yysvec+9, yyvstop+124, yycrank+687, yysvec+9, yyvstop+127, yycrank+0, 0, yyvstop+130, yycrank+0, 0, yyvstop+133, yycrank+0, 0, yyvstop+136, yycrank+55, 0, yyvstop+139, yycrank+0, 0, yyvstop+141, yycrank+-28, yysvec+7, 0, yycrank+0, 0, yyvstop+143, yycrank+706, yysvec+9, yyvstop+145, yycrank+-40, yysvec+11, 0, yycrank+0, 0, yyvstop+147, yycrank+0, 0, yyvstop+149, yycrank+-423, 0, yyvstop+151, yycrank+0, 0, yyvstop+153, yycrank+0, 0, yyvstop+155, yycrank+28, 0, yyvstop+157, yycrank+0, 0, yyvstop+159, yycrank+0, 0, yyvstop+161, yycrank+0, 0, yyvstop+163, yycrank+123, 0, 0, yycrank+0, yysvec+20, yyvstop+165, yycrank+57, 0, 0, yycrank+0, 0, yyvstop+167, yycrank+60, 0, yyvstop+169, yycrank+0, 0, yyvstop+171, yycrank+0, 0, yyvstop+173, yycrank+0, 0, yyvstop+175, yycrank+0, 0, yyvstop+177, yycrank+61, 0, 0, yycrank+0, 0, yyvstop+179, yycrank+30, 0, yyvstop+181, yycrank+725, yysvec+9, yyvstop+183, yycrank+751, yysvec+9, yyvstop+185, yycrank+770, yysvec+9, yyvstop+187, yycrank+794, yysvec+9, yyvstop+189, yycrank+823, yysvec+9, yyvstop+191, yycrank+842, yysvec+9, yyvstop+194, yycrank+863, yysvec+9, yyvstop+196, yycrank+882, yysvec+9, yyvstop+198, yycrank+901, yysvec+9, yyvstop+200, yycrank+925, yysvec+9, yyvstop+202, yycrank+956, yysvec+9, yyvstop+204, yycrank+975, yysvec+9, yyvstop+206, yycrank+994, yysvec+9, yyvstop+209, yycrank+1013, yysvec+9, yyvstop+211, yycrank+1032, yysvec+9, yyvstop+213, yycrank+1063, yysvec+9, yyvstop+215, yycrank+1082, yysvec+9, yyvstop+217, yycrank+1101, yysvec+9, yyvstop+220, yycrank+1126, yysvec+9, yyvstop+222, yycrank+1146, yysvec+9, yyvstop+225, yycrank+1166, yysvec+9, yyvstop+228, yycrank+1196, yysvec+9, yyvstop+230, yycrank+1215, yysvec+9, yyvstop+232, yycrank+1234, yysvec+9, yyvstop+234, yycrank+1253, yysvec+9, yyvstop+236, yycrank+1272, yysvec+9, yyvstop+238, yycrank+1291, yysvec+9, yyvstop+241, yycrank+1312, yysvec+9, yyvstop+244, yycrank+1340, yysvec+9, yyvstop+246, yycrank+1359, yysvec+9, yyvstop+248, yycrank+1381, yysvec+9, yyvstop+250, yycrank+1407, yysvec+9, yyvstop+252, yycrank+1436, yysvec+9, yyvstop+254, yycrank+1455, yysvec+9, yyvstop+256, yycrank+1476, yysvec+9, yyvstop+258, yycrank+1499, yysvec+9, yyvstop+260, yycrank+0, 0, yyvstop+262, yycrank+0, 0, yyvstop+264, yycrank+0, yysvec+66, yyvstop+266, yycrank+0, 0, yyvstop+268, yycrank+0, 0, yyvstop+270, yycrank+0, 0, yyvstop+272, yycrank+1534, yysvec+9, yyvstop+274, yycrank+1553, yysvec+9, yyvstop+276, yycrank+1572, yysvec+9, yyvstop+279, yycrank+1592, yysvec+9, yyvstop+282, yycrank+1611, yysvec+9, yyvstop+284, yycrank+1630, yysvec+9, yyvstop+286, yycrank+1659, yysvec+9, yyvstop+288, yycrank+1688, yysvec+9, yyvstop+290, yycrank+1707, yysvec+9, yyvstop+292, yycrank+1726, yysvec+9, yyvstop+294, yycrank+1745, yysvec+9, yyvstop+296, yycrank+1765, yysvec+9, yyvstop+299, yycrank+1784, yysvec+9, yyvstop+301, yycrank+1803, yysvec+9, yyvstop+303, yycrank+1822, yysvec+9, yyvstop+305, yycrank+1841, yysvec+9, yyvstop+307, yycrank+1860, yysvec+9, yyvstop+309, yycrank+1895, yysvec+9, yyvstop+311, yycrank+1914, yysvec+9, yyvstop+313, yycrank+1933, yysvec+9, yyvstop+315, yycrank+1966, yysvec+9, yyvstop+318, yycrank+1985, yysvec+9, yyvstop+320, yycrank+2004, yysvec+9, yyvstop+322, yycrank+2039, yysvec+9, yyvstop+324, yycrank+2058, yysvec+9, yyvstop+327, yycrank+2077, yysvec+9, yyvstop+329, yycrank+2096, yysvec+9, yyvstop+332, yycrank+2115, yysvec+9, yyvstop+335, yycrank+2134, yysvec+9, yyvstop+338, yycrank+2153, yysvec+9, yyvstop+341, yycrank+2172, yysvec+9, yyvstop+343, yycrank+2191, yysvec+9, yyvstop+346, yycrank+2220, yysvec+9, yyvstop+349, yycrank+2239, yysvec+9, yyvstop+351, yycrank+2258, yysvec+9, yyvstop+353, yycrank+2277, yysvec+9, yyvstop+356, yycrank+2296, yysvec+9, yyvstop+358, yycrank+2315, yysvec+9, yyvstop+360, yycrank+2334, yysvec+9, yyvstop+363, yycrank+2360, yysvec+9, yyvstop+366, yycrank+2379, yysvec+9, yyvstop+369, yycrank+2404, yysvec+9, yyvstop+371, yycrank+2423, yysvec+9, yyvstop+373, yycrank+2446, yysvec+9, yyvstop+376, yycrank+2465, yysvec+9, yyvstop+378, yycrank+2484, yysvec+9, yyvstop+380, yycrank+2510, yysvec+9, yyvstop+382, yycrank+2529, yysvec+9, yyvstop+384, yycrank+2548, yysvec+9, yyvstop+386, yycrank+2573, yysvec+9, yyvstop+388, yycrank+2603, yysvec+9, yyvstop+390, yycrank+2622, yysvec+9, yyvstop+393, yycrank+2641, yysvec+9, yyvstop+395, yycrank+2660, yysvec+9, yyvstop+397, yycrank+2679, yysvec+9, yyvstop+399, yycrank+2706, yysvec+9, yyvstop+401, yycrank+2729, yysvec+9, yyvstop+403, yycrank+2748, yysvec+9, yyvstop+405, yycrank+2769, yysvec+9, yyvstop+407, yycrank+2799, yysvec+9, yyvstop+410, yycrank+2818, yysvec+9, yyvstop+413, yycrank+2837, yysvec+9, yyvstop+415, yycrank+2856, yysvec+9, yyvstop+417, yycrank+2877, yysvec+9, yyvstop+419, yycrank+2904, yysvec+9, yyvstop+421, yycrank+2923, yysvec+9, yyvstop+423, yycrank+2946, yysvec+9, yyvstop+425, yycrank+2966, yysvec+9, yyvstop+427, yycrank+2985, yysvec+9, yyvstop+429, yycrank+3004, yysvec+9, yyvstop+431, yycrank+3023, yysvec+9, yyvstop+433, yycrank+3042, yysvec+9, yyvstop+436, yycrank+3061, yysvec+9, yyvstop+438, yycrank+3081, yysvec+9, yyvstop+440, yycrank+3106, yysvec+9, yyvstop+443, yycrank+3128, yysvec+9, yyvstop+445, yycrank+3147, yysvec+9, yyvstop+447, yycrank+3182, yysvec+9, yyvstop+449, yycrank+3201, yysvec+9, yyvstop+451, yycrank+3220, yysvec+9, yyvstop+453, yycrank+3239, yysvec+9, yyvstop+455, yycrank+3258, yysvec+9, yyvstop+457, yycrank+3290, yysvec+9, yyvstop+460, yycrank+3309, yysvec+9, yyvstop+463, yycrank+3328, yysvec+9, yyvstop+465, yycrank+3347, yysvec+9, yyvstop+467, yycrank+3372, yysvec+9, yyvstop+469, yycrank+3401, yysvec+9, yyvstop+471, yycrank+3430, yysvec+9, yyvstop+473, yycrank+3449, yysvec+9, yyvstop+475, yycrank+3470, yysvec+9, yyvstop+477, yycrank+3498, yysvec+9, yyvstop+479, yycrank+3523, yysvec+9, yyvstop+481, yycrank+3542, yysvec+9, yyvstop+483, yycrank+3561, yysvec+9, yyvstop+485, yycrank+3580, yysvec+9, yyvstop+487, yycrank+3600, yysvec+9, yyvstop+489, yycrank+3619, yysvec+9, yyvstop+491, yycrank+3638, yysvec+9, yyvstop+493, yycrank+3658, yysvec+9, yyvstop+495, yycrank+3688, yysvec+9, yyvstop+497, yycrank+3712, yysvec+9, yyvstop+499, yycrank+3731, yysvec+9, yyvstop+501, yycrank+3757, yysvec+9, yyvstop+503, yycrank+3781, yysvec+9, yyvstop+506, yycrank+3800, yysvec+9, yyvstop+508, yycrank+3819, yysvec+9, yyvstop+510, yycrank+3845, yysvec+9, yyvstop+512, yycrank+3864, yysvec+9, yyvstop+514, yycrank+3883, yysvec+9, yyvstop+517, yycrank+3902, yysvec+9, yyvstop+519, yycrank+3921, yysvec+9, yyvstop+522, yycrank+3940, yysvec+9, yyvstop+525, yycrank+3959, yysvec+9, yyvstop+527, yycrank+3978, yysvec+9, yyvstop+529, yycrank+3997, yysvec+9, yyvstop+531, yycrank+4017, yysvec+9, yyvstop+533, yycrank+4036, yysvec+9, yyvstop+536, yycrank+4061, yysvec+9, yyvstop+538, yycrank+4080, yysvec+9, yyvstop+541, yycrank+4100, yysvec+9, yyvstop+544, yycrank+4119, yysvec+9, yyvstop+547, yycrank+4138, yysvec+9, yyvstop+549, yycrank+4157, yysvec+9, yyvstop+552, yycrank+4176, yysvec+9, yyvstop+554, yycrank+4196, yysvec+9, yyvstop+556, yycrank+4215, yysvec+9, yyvstop+558, yycrank+4240, yysvec+9, yyvstop+561, yycrank+4264, yysvec+9, yyvstop+563, yycrank+4283, yysvec+9, yyvstop+566, yycrank+4309, yysvec+9, yyvstop+569, yycrank+4328, yysvec+9, yyvstop+572, yycrank+4347, yysvec+9, yyvstop+575, yycrank+4366, yysvec+9, yyvstop+577, yycrank+4385, yysvec+9, yyvstop+579, yycrank+4405, yysvec+9, yyvstop+581, yycrank+4434, yysvec+9, yyvstop+583, yycrank+4458, yysvec+9, yyvstop+586, yycrank+4477, yysvec+9, yyvstop+588, yycrank+4496, yysvec+9, yyvstop+590, yycrank+4520, yysvec+9, yyvstop+593, yycrank+4539, yysvec+9, yyvstop+595, yycrank+4558, yysvec+9, yyvstop+597, yycrank+4577, yysvec+9, yyvstop+599, yycrank+4602, yysvec+9, yyvstop+601, yycrank+4640, yysvec+9, yyvstop+604, yycrank+4659, yysvec+9, yyvstop+607, yycrank+4678, yysvec+9, yyvstop+609, yycrank+4697, yysvec+9, yyvstop+612, yycrank+4722, yysvec+9, yyvstop+614, yycrank+4741, yysvec+9, yyvstop+616, yycrank+4765, yysvec+9, yyvstop+619, yycrank+4786, yysvec+9, yyvstop+621, yycrank+4805, yysvec+9, yyvstop+623, yycrank+4824, yysvec+9, yyvstop+626, yycrank+4844, yysvec+9, yyvstop+628, yycrank+4863, yysvec+9, yyvstop+630, yycrank+4882, yysvec+9, yyvstop+632, yycrank+4901, yysvec+9, yyvstop+635, yycrank+4920, yysvec+9, yyvstop+637, yycrank+4939, yysvec+9, yyvstop+640, yycrank+4958, yysvec+9, yyvstop+643, yycrank+4978, yysvec+9, yyvstop+645, yycrank+4997, yysvec+9, yyvstop+647, yycrank+5021, yysvec+9, yyvstop+649, yycrank+5040, yysvec+9, yyvstop+652, yycrank+5066, yysvec+9, yyvstop+655, yycrank+5085, yysvec+9, yyvstop+657, yycrank+5104, yysvec+9, yyvstop+660, yycrank+5123, yysvec+9, yyvstop+663, yycrank+5143, yysvec+9, yyvstop+665, yycrank+5172, yysvec+9, yyvstop+667, yycrank+5201, yysvec+9, yyvstop+670, yycrank+5220, yysvec+9, yyvstop+673, yycrank+5239, yysvec+9, yyvstop+675, yycrank+5258, yysvec+9, yyvstop+677, yycrank+5278, yysvec+9, yyvstop+679, yycrank+5303, yysvec+9, yyvstop+681, yycrank+5322, yysvec+9, yyvstop+683, yycrank+5341, yysvec+9, yyvstop+686, 0, 0, 0}; struct yywork *yytop = yycrank+5413; struct yysvf *yybgin = yysvec+1; char yymatch[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 34, 1, 36, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 1, 1, 1, 1, 1, 1, 1, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 1, 1, 1, 1, 95, 1, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; char yyextra[] = { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0}; /* Copyright (c) 1989 AT&T */ /* All Rights Reserved */ /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ #pragma ident "@(#)ncform 6.12 97/12/08 SMI" int yylineno =1; # define YYU(x) x # define NLSTATE yyprevious=YYNEWLINE struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; char yysbuf[YYLMAX]; char *yysptr = yysbuf; int *yyfnd; extern struct yysvf *yyestate; int yyprevious = YYNEWLINE; #if defined(__cplusplus) || defined(__STDC__) int yylook(void) #else yylook() #endif { register struct yysvf *yystate, **lsp; register struct yywork *yyt; struct yysvf *yyz; int yych, yyfirst; struct yywork *yyr; # ifdef LEXDEBUG int debug; # endif char *yylastch; /* start off machines */ # ifdef LEXDEBUG debug = 0; # endif yyfirst=1; if (!yymorfg) yylastch = yytext; else { yymorfg=0; yylastch = yytext+yyleng; } for(;;){ lsp = yylstate; yyestate = yystate = yybgin; if (yyprevious==YYNEWLINE) yystate++; for (;;){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); # endif yyt = yystate->yystoff; if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ yyz = yystate->yyother; if(yyz == 0)break; if(yyz->yystoff == yycrank)break; } #ifndef __cplusplus *yylastch++ = yych = input(); #else *yylastch++ = yych = lex_input(); #endif #ifdef YYISARRAY if(yylastch > &yytext[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } #else if (yylastch >= &yytext[ yytextsz ]) { int x = yylastch - yytext; yytextsz += YYTEXTSZINC; if (yytext == yy_tbuf) { yytext = (char *) malloc(yytextsz); memcpy(yytext, yy_tbuf, sizeof (yy_tbuf)); } else yytext = (char *) realloc(yytext, yytextsz); if (!yytext) { fprintf(yyout, "Cannot realloc yytext\n"); exit(1); } yylastch = yytext + x; } #endif yyfirst=0; tryagain: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"char "); allprint(yych); putchar('\n'); } # endif yyr = yyt; if ( (uintptr_t)yyt > (uintptr_t)yycrank){ yyt = yyr + yych; if (yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; if(lsp > &yylstate[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } goto contin; } } # ifdef YYOPTIM else if((uintptr_t)yyt < (uintptr_t)yycrank) { /* r < yycrank */ yyt = yyr = yycrank+(yycrank-yyt); # ifdef LEXDEBUG if(debug)fprintf(yyout,"compressed state\n"); # endif yyt = yyt + yych; if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; if(lsp > &yylstate[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } goto contin; } yyt = yyr + YYU(yymatch[yych]); # ifdef LEXDEBUG if(debug){ fprintf(yyout,"try fall back character "); allprint(YYU(yymatch[yych])); putchar('\n'); } # endif if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transition */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; if(lsp > &yylstate[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } goto contin; } } if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); # endif goto tryagain; } # endif else {unput(*--yylastch);break;} contin: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"state %d char ",yystate-yysvec-1); allprint(yych); putchar('\n'); } # endif ; } # ifdef LEXDEBUG if(debug){ fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); allprint(yych); putchar('\n'); } # endif while (lsp-- > yylstate){ *yylastch-- = 0; if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ yyolsp = lsp; if(yyextra[*yyfnd]){ /* must backup */ while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ lsp--; unput(*yylastch--); } } yyprevious = YYU(*yylastch); yylsp = lsp; yyleng = yylastch-yytext+1; yytext[yyleng] = 0; # ifdef LEXDEBUG if(debug){ fprintf(yyout,"\nmatch "); sprint(yytext); fprintf(yyout," action %d\n",*yyfnd); } # endif return(*yyfnd++); } unput(*yylastch); } if (yytext[0] == 0 /* && feof(yyin) */) { yysptr=yysbuf; return(0); } #ifndef __cplusplus yyprevious = yytext[0] = input(); if (yyprevious>0) output(yyprevious); #else yyprevious = yytext[0] = lex_input(); if (yyprevious>0) lex_output(yyprevious); #endif yylastch=yytext; # ifdef LEXDEBUG if(debug)putchar('\n'); # endif } } #if defined(__cplusplus) || defined(__STDC__) int yyback(int *p, int m) #else yyback(p, m) int *p; #endif { if (p==0) return(0); while (*p) { if (*p++ == m) return(1); } return(0); } /* the following are only used in the lex library */ #if defined(__cplusplus) || defined(__STDC__) int yyinput(void) #else yyinput() #endif { #ifndef __cplusplus return(input()); #else return(lex_input()); #endif } #if defined(__cplusplus) || defined(__STDC__) void yyoutput(int c) #else yyoutput(c) int c; #endif { #ifndef __cplusplus output(c); #else lex_output(c); #endif } #if defined(__cplusplus) || defined(__STDC__) void yyunput(int c) #else yyunput(c) int c; #endif { unput(c); }