1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <inttypes.h>
4 # define U(x) x
5 # define NLSTATE yyprevious=YYNEWLINE
6 # define BEGIN yybgin = yysvec + 1 +
7 # define INITIAL 0
8 # define YYLERR yysvec
9 # define YYSTATE (yyestate-yysvec-1)
10 # define YYOPTIM 1
11 # ifndef YYLMAX
12 # define YYLMAX BUFSIZ
13 # endif
14 #ifndef __cplusplus
15 # define output(c) (void)putc(c,yyout)
16 #else
17 # define lex_output(c) (void)putc(c,yyout)
18 #endif
19 
20 #if defined(__cplusplus) || defined(__STDC__)
21 
22 #if defined(__cplusplus) && defined(__EXTERN_C__)
23 extern "C" {
24 #endif
25 	int yyback(int *, int);
26 	int yyinput(void);
27 	int yylook(void);
28 	void yyoutput(int);
29 	int yyracc(int);
30 	int yyreject(void);
31 	void yyunput(int);
32 	int yylex(void);
33 #ifdef YYLEX_E
34 	void yywoutput(wchar_t);
35 	wchar_t yywinput(void);
36 	void yywunput(wchar_t);
37 #endif
38 #ifndef yyless
39 	int yyless(int);
40 #endif
41 #ifndef yywrap
42 	int yywrap(void);
43 #endif
44 #ifdef LEXDEBUG
45 	void allprint(char);
46 	void sprint(char *);
47 #endif
48 #if defined(__cplusplus) && defined(__EXTERN_C__)
49 }
50 #endif
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 	void exit(int);
56 #ifdef __cplusplus
57 }
58 #endif
59 
60 #endif
61 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
62 # define yymore() (yymorfg=1)
63 #ifndef __cplusplus
64 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
65 #else
66 # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
67 #endif
68 #define ECHO fprintf(yyout, "%s",yytext)
69 # define REJECT { nstr = yyreject(); goto yyfussy;}
70 int yyleng;
71 #define YYISARRAY
72 char yytext[YYLMAX];
73 int yymorfg;
74 extern char *yysptr, yysbuf[];
75 int yytchar;
76 FILE *yyin = {stdin}, *yyout = {stdout};
77 extern int yylineno;
78 struct yysvf {
79 	struct yywork *yystoff;
80 	struct yysvf *yyother;
81 	int *yystops;};
82 struct yysvf *yyestate;
83 extern struct yysvf yysvec[], *yybgin;
84 
85 # line 3 "awk.lx.l"
86 /*
87  * CDDL HEADER START
88  *
89  * The contents of this file are subject to the terms of the
90  * Common Development and Distribution License, Version 1.0 only
91  * (the "License").  You may not use this file except in compliance
92  * with the License.
93  *
94  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
95  * or http://www.opensolaris.org/os/licensing.
96  * See the License for the specific language governing permissions
97  * and limitations under the License.
98  *
99  * When distributing Covered Code, include this CDDL HEADER in each
100  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
101  * If applicable, add the following below this CDDL HEADER, with the
102  * fields enclosed by brackets "[]" replaced with your own identifying
103  * information: Portions Copyright [yyyy] [name of copyright owner]
104  *
105  * CDDL HEADER END
106  */
107 
108 
109 # line 25 "awk.lx.l"
110 /*
111  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
112  * Use is subject to license terms.
113  */
114 
115 
116 # line 30 "awk.lx.l"
117 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
118 
119 # line 31 "awk.lx.l"
120 /*	  All Rights Reserved  	*/
121 #pragma ident	"%Z%%M%	%I%	%E% SMI"
122 # define A 2
123 # define str 4
124 # define sc 6
125 # define reg 8
126 # define comment 10
127 
128 #include	<sys/types.h>
129 #include	"awk.h"
130 #include	"y.tab.h"
131 
132 #undef	input	/* defeat lex */
133 #undef	unput
134 
135 static void unput(int);
136 static void unputstr(char *);
137 
138 extern YYSTYPE	yylval;
139 extern int	infunc;
140 
141 off_t	lineno	= 1;
142 int	bracecnt = 0;
143 int	brackcnt  = 0;
144 int	parencnt = 0;
145 #define DEBUG
146 #ifdef	DEBUG
147 #	define	RET(x)	{if(dbg)printf("lex %s [%s]\n", tokname(x), yytext); return(x); }
148 #else
149 #	define	RET(x)	return(x)
150 #endif
151 
152 
153 # line 66 "awk.lx.l"
154 /*
155  * The standards (SUSV2) requires that Record size be atleast LINE_MAX.
156  * LINE_MAX is a standard variable defined in limits.h.
157  * Though nawk is not standards compliant, we let RECSIZE
158  * grow with LINE_MAX instead of the magic number 1024.
159  */
160 #define	CBUFLEN	(3 * LINE_MAX)
161 
162 #define	CADD	cbuf[clen++] = yytext[0]; \
163 		if (clen >= CBUFLEN-1) { \
164 			ERROR "string/reg expr %.10s... too long", cbuf SYNTAX; \
165 			BEGIN A; \
166 		}
167 
168 static uchar	cbuf[CBUFLEN];
169 static uchar	*s;
170 static int	clen, cflag;
171 # define YYNEWLINE 10
172 int yylex(){
173 int nstr; extern int yyprevious;
174 
175 # line 92 "awk.lx.l"
176 switch (yybgin-yysvec-1) {	/* witchcraft */
177 	case 0:
178 		BEGIN A;
179 		break;
180 	case sc:
181 		BEGIN A;
182 		RET('}');
183 	}
184 #ifdef __cplusplus
185 /* to avoid CC and lint complaining yyfussy not being used ...*/
186 static int __lex_hack = 0;
187 if (__lex_hack) goto yyfussy;
188 #endif
189 while((nstr = yylook()) >= 0)
190 yyfussy: switch(nstr){
191 case 0:
192 if(yywrap()) return(0); break;
193 case 1:
194 
195 # line 101 "awk.lx.l"
196 	{ lineno++; RET(NL); }
197 break;
198 case 2:
199 
200 # line 102 "awk.lx.l"
201 	{ ; }
202 break;
203 case 3:
204 
205 # line 103 "awk.lx.l"
206 { ; }
207 break;
208 case 4:
209 
210 # line 104 "awk.lx.l"
211 	{ RET(';'); }
212 break;
213 case 5:
214 
215 # line 106 "awk.lx.l"
216 { lineno++; }
217 break;
218 case 6:
219 
220 # line 107 "awk.lx.l"
221 { RET(XBEGIN); }
222 break;
223 case 7:
224 
225 # line 108 "awk.lx.l"
226 	{ RET(XEND); }
227 break;
228 case 8:
229 
230 # line 109 "awk.lx.l"
231 { if (infunc) ERROR "illegal nested function" SYNTAX; RET(FUNC); }
232 break;
233 case 9:
234 
235 # line 110 "awk.lx.l"
236 { if (!infunc) ERROR "return not in function" SYNTAX; RET(RETURN); }
237 break;
238 case 10:
239 
240 # line 111 "awk.lx.l"
241 	{ RET(AND); }
242 break;
243 case 11:
244 
245 # line 112 "awk.lx.l"
246 	{ RET(BOR); }
247 break;
248 case 12:
249 
250 # line 113 "awk.lx.l"
251 	{ RET(NOT); }
252 break;
253 case 13:
254 
255 # line 114 "awk.lx.l"
256 	{ yylval.i = NE; RET(NE); }
257 break;
258 case 14:
259 
260 # line 115 "awk.lx.l"
261 	{ yylval.i = MATCH; RET(MATCHOP); }
262 break;
263 case 15:
264 
265 # line 116 "awk.lx.l"
266 	{ yylval.i = NOTMATCH; RET(MATCHOP); }
267 break;
268 case 16:
269 
270 # line 117 "awk.lx.l"
271 	{ yylval.i = LT; RET(LT); }
272 break;
273 case 17:
274 
275 # line 118 "awk.lx.l"
276 	{ yylval.i = LE; RET(LE); }
277 break;
278 case 18:
279 
280 # line 119 "awk.lx.l"
281 	{ yylval.i = EQ; RET(EQ); }
282 break;
283 case 19:
284 
285 # line 120 "awk.lx.l"
286 	{ yylval.i = GE; RET(GE); }
287 break;
288 case 20:
289 
290 # line 121 "awk.lx.l"
291 	{ yylval.i = GT; RET(GT); }
292 break;
293 case 21:
294 
295 # line 122 "awk.lx.l"
296 	{ yylval.i = APPEND; RET(APPEND); }
297 break;
298 case 22:
299 
300 # line 123 "awk.lx.l"
301 	{ yylval.i = INCR; RET(INCR); }
302 break;
303 case 23:
304 
305 # line 124 "awk.lx.l"
306 	{ yylval.i = DECR; RET(DECR); }
307 break;
308 case 24:
309 
310 # line 125 "awk.lx.l"
311 	{ yylval.i = ADDEQ; RET(ASGNOP); }
312 break;
313 case 25:
314 
315 # line 126 "awk.lx.l"
316 	{ yylval.i = SUBEQ; RET(ASGNOP); }
317 break;
318 case 26:
319 
320 # line 127 "awk.lx.l"
321 	{ yylval.i = MULTEQ; RET(ASGNOP); }
322 break;
323 case 27:
324 
325 # line 128 "awk.lx.l"
326 	{ yylval.i = DIVEQ; RET(ASGNOP); }
327 break;
328 case 28:
329 
330 # line 129 "awk.lx.l"
331 	{ yylval.i = MODEQ; RET(ASGNOP); }
332 break;
333 case 29:
334 
335 # line 130 "awk.lx.l"
336 	{ yylval.i = POWEQ; RET(ASGNOP); }
337 break;
338 case 30:
339 
340 # line 131 "awk.lx.l"
341 { yylval.i = POWEQ; RET(ASGNOP); }
342 break;
343 case 31:
344 
345 # line 132 "awk.lx.l"
346 	{ yylval.i = ASSIGN; RET(ASGNOP); }
347 break;
348 case 32:
349 
350 # line 133 "awk.lx.l"
351 	{ RET(POWER); }
352 break;
353 case 33:
354 
355 # line 134 "awk.lx.l"
356 	{ RET(POWER); }
357 break;
358 case 34:
359 
360 # line 136 "awk.lx.l"
361 { yylval.cp = fieldadr(atoi(yytext+1)); RET(FIELD); }
362 break;
363 case 35:
364 
365 # line 137 "awk.lx.l"
366 { unputstr("(NF)"); return(INDIRECT); }
367 break;
368 case 36:
369 
370 # line 138 "awk.lx.l"
371 { int c, n;
372 		  c = input(); unput(c);
373 		  if (c == '(' || c == '[' || infunc && (n=isarg(yytext+1)) >= 0) {
374 			unputstr(yytext+1);
375 			return(INDIRECT);
376 		  } else {
377 			yylval.cp = setsymtab((uchar *)yytext+1,
378 				(uchar *)"",0.0,STR|NUM,symtab);
379 			RET(IVAR);
380 		  }
381 		}
382 break;
383 case 37:
384 
385 # line 149 "awk.lx.l"
386 	{ RET(INDIRECT); }
387 break;
388 case 38:
389 
390 # line 150 "awk.lx.l"
391 	{ yylval.cp = setsymtab((uchar *)yytext, (uchar *)"", 0.0, NUM, symtab); RET(VARNF); }
392 break;
393 case 39:
394 
395 # line 152 "awk.lx.l"
396 {
397 		  yylval.cp = setsymtab((uchar *)yytext, tostring((uchar *)yytext), atof(yytext), CON|NUM, symtab);
398 		  RET(NUMBER); }
399 break;
400 case 40:
401 
402 # line 156 "awk.lx.l"
403 { RET(WHILE); }
404 break;
405 case 41:
406 
407 # line 157 "awk.lx.l"
408 	{ RET(FOR); }
409 break;
410 case 42:
411 
412 # line 158 "awk.lx.l"
413 	{ RET(DO); }
414 break;
415 case 43:
416 
417 # line 159 "awk.lx.l"
418 	{ RET(IF); }
419 break;
420 case 44:
421 
422 # line 160 "awk.lx.l"
423 	{ RET(ELSE); }
424 break;
425 case 45:
426 
427 # line 161 "awk.lx.l"
428 	{ RET(NEXT); }
429 break;
430 case 46:
431 
432 # line 162 "awk.lx.l"
433 	{ RET(EXIT); }
434 break;
435 case 47:
436 
437 # line 163 "awk.lx.l"
438 { RET(BREAK); }
439 break;
440 case 48:
441 
442 # line 164 "awk.lx.l"
443 { RET(CONTINUE); }
444 break;
445 case 49:
446 
447 # line 165 "awk.lx.l"
448 { yylval.i = PRINT; RET(PRINT); }
449 break;
450 case 50:
451 
452 # line 166 "awk.lx.l"
453 { yylval.i = PRINTF; RET(PRINTF); }
454 break;
455 case 51:
456 
457 # line 167 "awk.lx.l"
458 { yylval.i = SPRINTF; RET(SPRINTF); }
459 break;
460 case 52:
461 
462 # line 168 "awk.lx.l"
463 { yylval.i = SPLIT; RET(SPLIT); }
464 break;
465 case 53:
466 
467 # line 169 "awk.lx.l"
468 { RET(SUBSTR); }
469 break;
470 case 54:
471 
472 # line 170 "awk.lx.l"
473 	{ yylval.i = SUB; RET(SUB); }
474 break;
475 case 55:
476 
477 # line 171 "awk.lx.l"
478 	{ yylval.i = GSUB; RET(GSUB); }
479 break;
480 case 56:
481 
482 # line 172 "awk.lx.l"
483 { RET(INDEX); }
484 break;
485 case 57:
486 
487 # line 173 "awk.lx.l"
488 { RET(MATCHFCN); }
489 break;
490 case 58:
491 
492 # line 174 "awk.lx.l"
493 	{ RET(IN); }
494 break;
495 case 59:
496 
497 # line 175 "awk.lx.l"
498 { RET(GETLINE); }
499 break;
500 case 60:
501 
502 # line 176 "awk.lx.l"
503 { RET(CLOSE); }
504 break;
505 case 61:
506 
507 # line 177 "awk.lx.l"
508 { RET(DELETE); }
509 break;
510 case 62:
511 
512 # line 178 "awk.lx.l"
513 { yylval.i = FLENGTH; RET(BLTIN); }
514 break;
515 case 63:
516 
517 # line 179 "awk.lx.l"
518 	{ yylval.i = FLOG; RET(BLTIN); }
519 break;
520 case 64:
521 
522 # line 180 "awk.lx.l"
523 	{ yylval.i = FINT; RET(BLTIN); }
524 break;
525 case 65:
526 
527 # line 181 "awk.lx.l"
528 	{ yylval.i = FEXP; RET(BLTIN); }
529 break;
530 case 66:
531 
532 # line 182 "awk.lx.l"
533 	{ yylval.i = FSQRT; RET(BLTIN); }
534 break;
535 case 67:
536 
537 # line 183 "awk.lx.l"
538 	{ yylval.i = FSIN; RET(BLTIN); }
539 break;
540 case 68:
541 
542 # line 184 "awk.lx.l"
543 	{ yylval.i = FCOS; RET(BLTIN); }
544 break;
545 case 69:
546 
547 # line 185 "awk.lx.l"
548 { yylval.i = FATAN; RET(BLTIN); }
549 break;
550 case 70:
551 
552 # line 186 "awk.lx.l"
553 { yylval.i = FSYSTEM; RET(BLTIN); }
554 break;
555 case 71:
556 
557 # line 187 "awk.lx.l"
558 	{ yylval.i = FRAND; RET(BLTIN); }
559 break;
560 case 72:
561 
562 # line 188 "awk.lx.l"
563 { yylval.i = FSRAND; RET(BLTIN); }
564 break;
565 case 73:
566 
567 # line 189 "awk.lx.l"
568 { yylval.i = FTOUPPER; RET(BLTIN); }
569 break;
570 case 74:
571 
572 # line 190 "awk.lx.l"
573 { yylval.i = FTOLOWER; RET(BLTIN); }
574 break;
575 case 75:
576 
577 # line 192 "awk.lx.l"
578 { int n, c;
579 		  c = input(); unput(c);	/* look for '(' */
580 		  if (c != '(' && infunc && (n=isarg(yytext)) >= 0) {
581 			yylval.i = n;
582 			RET(ARG);
583 		  } else {
584 			yylval.cp = setsymtab((uchar *)yytext,
585 				(uchar *)"",0.0,STR|NUM,symtab);
586 			if (c == '(') {
587 				RET(CALL);
588 			} else {
589 				RET(VAR);
590 			}
591 		  }
592 		}
593 break;
594 case 76:
595 
596 # line 207 "awk.lx.l"
597 	{ BEGIN str; clen = 0; }
598 break;
599 case 77:
600 
601 # line 209 "awk.lx.l"
602 	{ if (--bracecnt < 0) ERROR "extra }" SYNTAX; BEGIN sc; RET(';'); }
603 break;
604 case 78:
605 
606 # line 210 "awk.lx.l"
607 	{ if (--brackcnt < 0) ERROR "extra ]" SYNTAX; RET(']'); }
608 break;
609 case 79:
610 
611 # line 211 "awk.lx.l"
612 	{ if (--parencnt < 0) ERROR "extra )" SYNTAX; RET(')'); }
613 break;
614 case 80:
615 
616 # line 213 "awk.lx.l"
617 	{ if (yytext[0] == '{') bracecnt++;
618 		  else if (yytext[0] == '[') brackcnt++;
619 		  else if (yytext[0] == '(') parencnt++;
620 		  RET(yylval.i = yytext[0]); /* everything else */ }
621 break;
622 case 81:
623 
624 # line 218 "awk.lx.l"
625 { cbuf[clen++] = '\\'; cbuf[clen++] = yytext[1]; }
626 break;
627 case 82:
628 
629 # line 219 "awk.lx.l"
630 	{ ERROR "newline in regular expression %.10s...", cbuf SYNTAX; lineno++; BEGIN A; }
631 break;
632 case 83:
633 
634 # line 220 "awk.lx.l"
635 { BEGIN A;
636 		  cbuf[clen] = 0;
637 		  yylval.s = tostring(cbuf);
638 		  unput('/');
639 		  RET(REGEXPR); }
640 break;
641 case 84:
642 
643 # line 225 "awk.lx.l"
644 	{ CADD; }
645 break;
646 case 85:
647 
648 # line 227 "awk.lx.l"
649 	{ BEGIN A;
650 		  cbuf[clen] = 0; s = tostring(cbuf);
651 		  cbuf[clen] = ' '; cbuf[++clen] = 0;
652 		  yylval.cp = setsymtab(cbuf, s, 0.0, CON|STR, symtab);
653 		  RET(STRING); }
654 break;
655 case 86:
656 
657 # line 232 "awk.lx.l"
658 	{ ERROR "newline in string %.10s...", cbuf SYNTAX; lineno++; BEGIN A; }
659 break;
660 case 87:
661 
662 # line 233 "awk.lx.l"
663 { cbuf[clen++] = '"'; }
664 break;
665 case 88:
666 
667 # line 234 "awk.lx.l"
668 { cbuf[clen++] = '\n'; }
669 break;
670 case 89:
671 
672 # line 235 "awk.lx.l"
673 { cbuf[clen++] = '\t'; }
674 break;
675 case 90:
676 
677 # line 236 "awk.lx.l"
678 { cbuf[clen++] = '\f'; }
679 break;
680 case 91:
681 
682 # line 237 "awk.lx.l"
683 { cbuf[clen++] = '\r'; }
684 break;
685 case 92:
686 
687 # line 238 "awk.lx.l"
688 { cbuf[clen++] = '\b'; }
689 break;
690 case 93:
691 
692 # line 239 "awk.lx.l"
693 { cbuf[clen++] = '\v'; }
694 break;
695 case 94:
696 
697 # line 240 "awk.lx.l"
698 { cbuf[clen++] = '\007'; }
699 break;
700 case 95:
701 
702 # line 241 "awk.lx.l"
703 { cbuf[clen++] = '\\'; }
704 break;
705 case 96:
706 
707 # line 242 "awk.lx.l"
708 { int n;
709 		  sscanf(yytext+1, "%o", &n); cbuf[clen++] = n; }
710 break;
711 case 97:
712 
713 # line 244 "awk.lx.l"
714 { int n;	/* ANSI permits any number! */
715 		  sscanf(yytext+2, "%x", &n); cbuf[clen++] = n; }
716 break;
717 case 98:
718 
719 # line 246 "awk.lx.l"
720 { cbuf[clen++] = yytext[1]; }
721 break;
722 case 99:
723 
724 # line 247 "awk.lx.l"
725 	{ CADD; }
726 break;
727 case -1:
728 break;
729 default:
730 (void)fprintf(yyout,"bad switch yylook %d",nstr);
731 } return(0); }
732 /* end of yylex */
733 
734 # line 250 "awk.lx.l"
735 
736 void
737 startreg()
738 {
739 	BEGIN reg;
740 	clen = 0;
741 }
742 
743 /* input() and unput() are transcriptions of the standard lex
744    macros for input and output with additions for error message
745    printing.  God help us all if someone changes how lex works.
746 */
747 
748 uchar	ebuf[300];
749 uchar	*ep = ebuf;
750 
751 int
752 input(void)
753 {
754 	register int c;
755 	extern uchar *lexprog;
756 
757 	if (yysptr > yysbuf)
758 		c = U(*--yysptr);
759 	else if (lexprog != NULL)	/* awk '...' */
760 		c = *lexprog++;
761 	else				/* awk -f ... */
762 		c = pgetc();
763 	if (c == '\n')
764 		yylineno++;
765 	else if (c == EOF)
766 		c = 0;
767 	if (ep >= ebuf + sizeof ebuf)
768 		ep = ebuf;
769 	return *ep++ = c;
770 }
771 
772 static void
773 unput(int c)
774 {
775 	yytchar = c;
776 	if (yytchar == '\n')
777 		yylineno--;
778 	*yysptr++ = yytchar;
779 	if (--ep < ebuf)
780 		ep = ebuf + sizeof(ebuf) - 1;
781 }
782 
783 
784 static void
785 unputstr(char *s)
786 {
787 	int i;
788 
789 	for (i = strlen(s)-1; i >= 0; i--)
790 		unput(s[i]);
791 }
792 int yyvstop[] = {
793 0,
794 
795 80,
796 0,
797 
798 3,
799 80,
800 0,
801 
802 1,
803 0,
804 
805 12,
806 80,
807 0,
808 
809 76,
810 80,
811 0,
812 
813 2,
814 80,
815 0,
816 
817 37,
818 80,
819 0,
820 
821 80,
822 0,
823 
824 80,
825 0,
826 
827 79,
828 80,
829 0,
830 
831 80,
832 0,
833 
834 80,
835 0,
836 
837 80,
838 0,
839 
840 80,
841 0,
842 
843 80,
844 0,
845 
846 39,
847 80,
848 0,
849 
850 4,
851 80,
852 0,
853 
854 16,
855 80,
856 0,
857 
858 31,
859 80,
860 0,
861 
862 20,
863 80,
864 0,
865 
866 75,
867 80,
868 0,
869 
870 75,
871 80,
872 0,
873 
874 75,
875 80,
876 0,
877 
878 75,
879 80,
880 0,
881 
882 80,
883 0,
884 
885 78,
886 80,
887 0,
888 
889 33,
890 80,
891 0,
892 
893 75,
894 80,
895 0,
896 
897 75,
898 80,
899 0,
900 
901 75,
902 80,
903 0,
904 
905 75,
906 80,
907 0,
908 
909 75,
910 80,
911 0,
912 
913 75,
914 80,
915 0,
916 
917 75,
918 80,
919 0,
920 
921 75,
922 80,
923 0,
924 
925 75,
926 80,
927 0,
928 
929 75,
930 80,
931 0,
932 
933 75,
934 80,
935 0,
936 
937 75,
938 80,
939 0,
940 
941 75,
942 80,
943 0,
944 
945 75,
946 80,
947 0,
948 
949 75,
950 80,
951 0,
952 
953 75,
954 80,
955 0,
956 
957 80,
958 0,
959 
960 77,
961 80,
962 0,
963 
964 14,
965 80,
966 0,
967 
968 99,
969 0,
970 
971 86,
972 0,
973 
974 85,
975 99,
976 0,
977 
978 99,
979 0,
980 
981 84,
982 0,
983 
984 82,
985 0,
986 
987 83,
988 84,
989 0,
990 
991 84,
992 0,
993 
994 3,
995 0,
996 
997 13,
998 0,
999 
1000 15,
1001 0,
1002 
1003 2,
1004 0,
1005 
1006 34,
1007 0,
1008 
1009 36,
1010 0,
1011 
1012 36,
1013 0,
1014 
1015 28,
1016 0,
1017 
1018 10,
1019 0,
1020 
1021 32,
1022 0,
1023 
1024 26,
1025 0,
1026 
1027 22,
1028 0,
1029 
1030 24,
1031 0,
1032 
1033 23,
1034 0,
1035 
1036 25,
1037 0,
1038 
1039 39,
1040 0,
1041 
1042 27,
1043 0,
1044 
1045 39,
1046 0,
1047 
1048 39,
1049 0,
1050 
1051 17,
1052 0,
1053 
1054 18,
1055 0,
1056 
1057 19,
1058 0,
1059 
1060 21,
1061 0,
1062 
1063 75,
1064 0,
1065 
1066 75,
1067 0,
1068 
1069 75,
1070 0,
1071 
1072 38,
1073 75,
1074 0,
1075 
1076 5,
1077 0,
1078 
1079 29,
1080 0,
1081 
1082 75,
1083 0,
1084 
1085 75,
1086 0,
1087 
1088 75,
1089 0,
1090 
1091 75,
1092 0,
1093 
1094 75,
1095 0,
1096 
1097 42,
1098 75,
1099 0,
1100 
1101 75,
1102 0,
1103 
1104 75,
1105 0,
1106 
1107 75,
1108 0,
1109 
1110 75,
1111 0,
1112 
1113 75,
1114 0,
1115 
1116 75,
1117 0,
1118 
1119 43,
1120 75,
1121 0,
1122 
1123 58,
1124 75,
1125 0,
1126 
1127 75,
1128 0,
1129 
1130 75,
1131 0,
1132 
1133 75,
1134 0,
1135 
1136 75,
1137 0,
1138 
1139 75,
1140 0,
1141 
1142 75,
1143 0,
1144 
1145 75,
1146 0,
1147 
1148 75,
1149 0,
1150 
1151 75,
1152 0,
1153 
1154 75,
1155 0,
1156 
1157 75,
1158 0,
1159 
1160 75,
1161 0,
1162 
1163 75,
1164 0,
1165 
1166 75,
1167 0,
1168 
1169 75,
1170 0,
1171 
1172 11,
1173 0,
1174 
1175 98,
1176 0,
1177 
1178 87,
1179 98,
1180 0,
1181 
1182 96,
1183 98,
1184 0,
1185 
1186 95,
1187 98,
1188 0,
1189 
1190 94,
1191 98,
1192 0,
1193 
1194 92,
1195 98,
1196 0,
1197 
1198 90,
1199 98,
1200 0,
1201 
1202 88,
1203 98,
1204 0,
1205 
1206 91,
1207 98,
1208 0,
1209 
1210 89,
1211 98,
1212 0,
1213 
1214 93,
1215 98,
1216 0,
1217 
1218 98,
1219 0,
1220 
1221 81,
1222 0,
1223 
1224 35,
1225 36,
1226 0,
1227 
1228 30,
1229 0,
1230 
1231 39,
1232 0,
1233 
1234 75,
1235 0,
1236 
1237 7,
1238 75,
1239 0,
1240 
1241 75,
1242 0,
1243 
1244 75,
1245 0,
1246 
1247 75,
1248 0,
1249 
1250 75,
1251 0,
1252 
1253 68,
1254 75,
1255 0,
1256 
1257 75,
1258 0,
1259 
1260 75,
1261 0,
1262 
1263 75,
1264 0,
1265 
1266 65,
1267 75,
1268 0,
1269 
1270 41,
1271 75,
1272 0,
1273 
1274 75,
1275 0,
1276 
1277 75,
1278 0,
1279 
1280 75,
1281 0,
1282 
1283 75,
1284 0,
1285 
1286 64,
1287 75,
1288 0,
1289 
1290 75,
1291 0,
1292 
1293 63,
1294 75,
1295 0,
1296 
1297 75,
1298 0,
1299 
1300 75,
1301 0,
1302 
1303 75,
1304 0,
1305 
1306 75,
1307 0,
1308 
1309 75,
1310 0,
1311 
1312 67,
1313 75,
1314 0,
1315 
1316 75,
1317 0,
1318 
1319 75,
1320 0,
1321 
1322 75,
1323 0,
1324 
1325 75,
1326 0,
1327 
1328 54,
1329 75,
1330 0,
1331 
1332 75,
1333 0,
1334 
1335 75,
1336 0,
1337 
1338 75,
1339 0,
1340 
1341 75,
1342 0,
1343 
1344 96,
1345 0,
1346 
1347 97,
1348 0,
1349 
1350 75,
1351 0,
1352 
1353 75,
1354 0,
1355 
1356 75,
1357 0,
1358 
1359 75,
1360 0,
1361 
1362 75,
1363 0,
1364 
1365 75,
1366 0,
1367 
1368 44,
1369 75,
1370 0,
1371 
1372 46,
1373 75,
1374 0,
1375 
1376 8,
1377 75,
1378 0,
1379 
1380 75,
1381 0,
1382 
1383 55,
1384 75,
1385 0,
1386 
1387 75,
1388 0,
1389 
1390 75,
1391 0,
1392 
1393 75,
1394 0,
1395 
1396 45,
1397 75,
1398 0,
1399 
1400 75,
1401 0,
1402 
1403 71,
1404 75,
1405 0,
1406 
1407 75,
1408 0,
1409 
1410 75,
1411 0,
1412 
1413 75,
1414 0,
1415 
1416 66,
1417 75,
1418 0,
1419 
1420 75,
1421 0,
1422 
1423 75,
1424 0,
1425 
1426 75,
1427 0,
1428 
1429 75,
1430 0,
1431 
1432 75,
1433 0,
1434 
1435 75,
1436 0,
1437 
1438 96,
1439 0,
1440 
1441 6,
1442 75,
1443 0,
1444 
1445 69,
1446 75,
1447 0,
1448 
1449 47,
1450 75,
1451 0,
1452 
1453 60,
1454 75,
1455 0,
1456 
1457 75,
1458 0,
1459 
1460 75,
1461 0,
1462 
1463 75,
1464 0,
1465 
1466 75,
1467 0,
1468 
1469 56,
1470 75,
1471 0,
1472 
1473 75,
1474 0,
1475 
1476 57,
1477 75,
1478 0,
1479 
1480 49,
1481 75,
1482 0,
1483 
1484 75,
1485 0,
1486 
1487 52,
1488 75,
1489 0,
1490 
1491 75,
1492 0,
1493 
1494 72,
1495 75,
1496 0,
1497 
1498 75,
1499 0,
1500 
1501 75,
1502 0,
1503 
1504 75,
1505 0,
1506 
1507 75,
1508 0,
1509 
1510 40,
1511 75,
1512 0,
1513 
1514 75,
1515 0,
1516 
1517 61,
1518 75,
1519 0,
1520 
1521 75,
1522 0,
1523 
1524 75,
1525 0,
1526 
1527 62,
1528 75,
1529 0,
1530 
1531 50,
1532 75,
1533 0,
1534 
1535 9,
1536 75,
1537 0,
1538 
1539 75,
1540 0,
1541 
1542 53,
1543 75,
1544 0,
1545 
1546 70,
1547 75,
1548 0,
1549 
1550 75,
1551 0,
1552 
1553 75,
1554 0,
1555 
1556 75,
1557 0,
1558 
1559 75,
1560 0,
1561 
1562 59,
1563 75,
1564 0,
1565 
1566 51,
1567 75,
1568 0,
1569 
1570 74,
1571 75,
1572 0,
1573 
1574 73,
1575 75,
1576 0,
1577 
1578 48,
1579 75,
1580 0,
1581 
1582 8,
1583 75,
1584 0,
1585 0};
1586 # define YYTYPE unsigned char
1587 struct yywork { YYTYPE verify, advance; } yycrank[] = {
1588 0,0,	0,0,	3,13,	0,0,
1589 0,0,	0,0,	0,0,	0,0,
1590 0,0,	0,0,	3,14,	3,15,
1591 0,0,	0,0,	0,0,	0,0,
1592 0,0,	14,67,	0,0,	0,0,
1593 0,0,	5,59,	0,0,	0,0,
1594 0,0,	0,0,	0,0,	0,0,
1595 0,0,	5,59,	5,60,	0,0,
1596 0,0,	0,0,	3,16,	3,17,
1597 3,18,	3,19,	3,20,	3,21,
1598 14,67,	37,95,	3,22,	3,23,
1599 3,24,	70,0,	3,25,	3,26,
1600 3,27,	3,28,	6,61,	0,0,
1601 0,0,	0,0,	5,61,	0,0,
1602 0,0,	3,28,	0,0,	0,0,
1603 3,29,	3,30,	3,31,	3,32,
1604 0,0,	21,75,	3,33,	3,34,
1605 5,59,	10,65,	3,35,	23,76,
1606 3,33,	0,0,	16,68,	0,0,
1607 5,59,	0,0,	0,0,	3,36,
1608 0,0,	0,0,	0,0,	0,0,
1609 0,0,	5,59,	0,0,	24,78,
1610 9,63,	20,74,	23,77,	5,59,
1611 27,83,	3,37,	3,38,	3,39,
1612 9,63,	9,64,	3,40,	3,41,
1613 3,42,	3,43,	3,44,	3,45,
1614 3,46,	24,79,	3,47,	25,80,
1615 6,62,	3,48,	3,49,	3,50,
1616 5,62,	3,51,	10,66,	3,52,
1617 3,53,	3,54,	30,87,	31,88,
1618 3,55,	32,89,	32,90,	25,81,
1619 34,92,	3,56,	3,57,	3,58,
1620 4,16,	4,17,	4,18,	4,19,
1621 4,20,	4,21,	9,65,	9,63,
1622 4,22,	4,23,	4,24,	16,69,
1623 4,25,	4,26,	4,27,	9,63,
1624 35,93,	36,94,	39,96,	40,97,
1625 41,98,	43,101,	42,99,	44,103,
1626 9,63,	42,100,	4,29,	4,30,
1627 4,31,	4,32,	9,63,	43,102,
1628 45,105,	4,34,	47,109,	44,104,
1629 4,35,	48,111,	45,106,	46,107,
1630 18,70,	49,113,	47,110,	50,114,
1631 51,115,	4,36,	52,116,	48,112,
1632 18,70,	18,0,	52,117,	9,66,
1633 54,124,	46,108,	55,125,	56,126,
1634 76,141,	92,144,	82,86,	4,37,
1635 4,38,	4,39,	93,145,	97,146,
1636 4,40,	4,41,	4,42,	4,43,
1637 4,44,	4,45,	4,46,	98,147,
1638 4,47,	99,148,	101,151,	4,48,
1639 4,49,	4,50,	103,152,	4,51,
1640 100,149,	4,52,	4,53,	4,54,
1641 105,155,	100,150,	4,55,	18,70,
1642 106,156,	53,118,	82,86,	4,56,
1643 4,57,	4,58,	107,157,	18,70,
1644 53,119,	53,120,	53,121,	104,153,
1645 108,158,	53,122,	111,161,	112,162,
1646 18,70,	53,123,	104,154,	110,159,
1647 113,163,	114,164,	18,70,	19,71,
1648 19,71,	19,71,	19,71,	19,71,
1649 19,71,	19,71,	19,71,	19,71,
1650 19,71,	115,165,	116,166,	110,160,
1651 117,167,	118,168,	120,171,	121,172,
1652 19,72,	19,72,	19,72,	19,72,
1653 19,72,	19,72,	19,72,	19,72,
1654 19,72,	19,72,	19,72,	19,72,
1655 19,72,	19,73,	19,72,	19,72,
1656 19,72,	19,72,	19,72,	19,72,
1657 19,72,	19,72,	19,72,	19,72,
1658 19,72,	19,72,	122,173,	123,174,
1659 125,177,	144,180,	19,72,	146,181,
1660 19,72,	19,72,	19,72,	19,72,
1661 19,72,	19,72,	19,72,	19,72,
1662 19,72,	19,72,	19,72,	19,72,
1663 19,72,	19,72,	19,72,	19,72,
1664 19,72,	19,72,	19,72,	19,72,
1665 19,72,	19,72,	19,72,	19,72,
1666 19,72,	19,72,	26,82,	26,82,
1667 26,82,	26,82,	26,82,	26,82,
1668 26,82,	26,82,	26,82,	26,82,
1669 28,84,	147,182,	28,85,	28,85,
1670 28,85,	28,85,	28,85,	28,85,
1671 28,85,	28,85,	28,85,	28,85,
1672 33,91,	33,91,	33,91,	33,91,
1673 33,91,	33,91,	33,91,	33,91,
1674 33,91,	33,91,	119,169,	28,86,
1675 148,183,	149,184,	151,185,	152,186,
1676 119,170,	33,91,	33,91,	33,91,
1677 33,91,	33,91,	33,91,	33,91,
1678 33,91,	33,91,	33,91,	33,91,
1679 33,91,	33,91,	33,91,	33,91,
1680 33,91,	33,91,	33,91,	33,91,
1681 33,91,	33,91,	33,91,	33,91,
1682 33,91,	33,91,	33,91,	28,86,
1683 153,187,	156,188,	157,189,	33,91,
1684 158,190,	33,91,	33,91,	33,91,
1685 33,91,	33,91,	33,91,	33,91,
1686 33,91,	33,91,	33,91,	33,91,
1687 33,91,	33,91,	33,91,	33,91,
1688 33,91,	33,91,	33,91,	33,91,
1689 33,91,	33,91,	33,91,	33,91,
1690 33,91,	33,91,	33,91,	62,127,
1691 159,191,	66,139,	161,192,	163,193,
1692 164,194,	165,195,	166,196,	62,127,
1693 62,0,	66,139,	66,0,	71,71,
1694 71,71,	71,71,	71,71,	71,71,
1695 71,71,	71,71,	71,71,	71,71,
1696 71,71,	72,72,	72,72,	72,72,
1697 72,72,	72,72,	72,72,	72,72,
1698 72,72,	72,72,	72,72,	167,197,
1699 62,128,	169,198,	170,199,	171,200,
1700 73,72,	73,72,	73,72,	73,72,
1701 73,72,	73,72,	73,72,	73,72,
1702 73,72,	73,72,	62,129,	172,201,
1703 66,139,	173,202,	124,175,	72,72,
1704 174,203,	175,204,	62,127,	176,205,
1705 66,139,	177,206,	73,140,	124,176,
1706 180,208,	181,209,	182,210,	62,127,
1707 183,211,	66,139,	73,72,	184,212,
1708 185,213,	62,127,	188,214,	66,139,
1709 84,84,	84,84,	84,84,	84,84,
1710 84,84,	84,84,	84,84,	84,84,
1711 84,84,	84,84,	129,178,	129,178,
1712 129,178,	129,178,	129,178,	129,178,
1713 129,178,	129,178,	62,130,	189,215,
1714 191,216,	84,86,	192,217,	62,131,
1715 62,132,	193,218,	195,219,	197,220,
1716 62,133,	198,221,	199,222,	201,223,
1717 202,224,	203,225,	204,226,	205,227,
1718 62,134,	206,228,	212,229,	213,230,
1719 62,135,	214,231,	62,136,	215,232,
1720 62,137,	217,233,	62,138,	219,234,
1721 220,235,	86,142,	222,236,	86,142,
1722 224,237,	84,86,	86,143,	86,143,
1723 86,143,	86,143,	86,143,	86,143,
1724 86,143,	86,143,	86,143,	86,143,
1725 138,179,	138,179,	138,179,	138,179,
1726 138,179,	138,179,	138,179,	138,179,
1727 138,179,	138,179,	225,238,	226,239,
1728 227,240,	229,241,	231,242,	232,243,
1729 236,244,	138,179,	138,179,	138,179,
1730 138,179,	138,179,	138,179,	239,245,
1731 240,246,	140,72,	140,72,	140,72,
1732 140,72,	140,72,	140,72,	140,72,
1733 140,72,	140,72,	140,72,	142,143,
1734 142,143,	142,143,	142,143,	142,143,
1735 142,143,	142,143,	142,143,	142,143,
1736 142,143,	241,247,	242,248,	0,0,
1737 0,0,	138,179,	138,179,	138,179,
1738 138,179,	138,179,	138,179,	140,72,
1739 178,207,	178,207,	178,207,	178,207,
1740 178,207,	178,207,	178,207,	178,207,
1741 0,0};
1742 struct yysvf yysvec[] = {
1743 0,	0,	0,
1744 yycrank+0,	0,		0,
1745 yycrank+0,	0,		0,
1746 yycrank+-1,	0,		0,
1747 yycrank+-95,	yysvec+3,	0,
1748 yycrank+-20,	0,		0,
1749 yycrank+-16,	yysvec+5,	0,
1750 yycrank+0,	0,		0,
1751 yycrank+0,	0,		0,
1752 yycrank+-87,	0,		0,
1753 yycrank+-22,	yysvec+9,	0,
1754 yycrank+0,	0,		0,
1755 yycrank+0,	0,		0,
1756 yycrank+0,	0,		yyvstop+1,
1757 yycrank+8,	0,		yyvstop+3,
1758 yycrank+0,	0,		yyvstop+6,
1759 yycrank+13,	0,		yyvstop+8,
1760 yycrank+0,	0,		yyvstop+11,
1761 yycrank+-167,	0,		yyvstop+14,
1762 yycrank+191,	0,		yyvstop+17,
1763 yycrank+28,	0,		yyvstop+20,
1764 yycrank+27,	0,		yyvstop+22,
1765 yycrank+0,	0,		yyvstop+24,
1766 yycrank+29,	0,		yyvstop+27,
1767 yycrank+44,	0,		yyvstop+29,
1768 yycrank+62,	0,		yyvstop+31,
1769 yycrank+266,	0,		yyvstop+33,
1770 yycrank+31,	0,		yyvstop+35,
1771 yycrank+278,	0,		yyvstop+37,
1772 yycrank+0,	0,		yyvstop+40,
1773 yycrank+57,	0,		yyvstop+43,
1774 yycrank+58,	0,		yyvstop+46,
1775 yycrank+60,	0,		yyvstop+49,
1776 yycrank+288,	0,		yyvstop+52,
1777 yycrank+55,	yysvec+33,	yyvstop+55,
1778 yycrank+66,	yysvec+33,	yyvstop+58,
1779 yycrank+75,	yysvec+33,	yyvstop+61,
1780 yycrank+31,	0,		yyvstop+64,
1781 yycrank+0,	0,		yyvstop+66,
1782 yycrank+85,	0,		yyvstop+69,
1783 yycrank+31,	yysvec+33,	yyvstop+72,
1784 yycrank+34,	yysvec+33,	yyvstop+75,
1785 yycrank+42,	yysvec+33,	yyvstop+78,
1786 yycrank+48,	yysvec+33,	yyvstop+81,
1787 yycrank+43,	yysvec+33,	yyvstop+84,
1788 yycrank+49,	yysvec+33,	yyvstop+87,
1789 yycrank+66,	yysvec+33,	yyvstop+90,
1790 yycrank+60,	yysvec+33,	yyvstop+93,
1791 yycrank+64,	yysvec+33,	yyvstop+96,
1792 yycrank+72,	yysvec+33,	yyvstop+99,
1793 yycrank+70,	yysvec+33,	yyvstop+102,
1794 yycrank+58,	yysvec+33,	yyvstop+105,
1795 yycrank+77,	yysvec+33,	yyvstop+108,
1796 yycrank+112,	yysvec+33,	yyvstop+111,
1797 yycrank+69,	yysvec+33,	yyvstop+114,
1798 yycrank+78,	yysvec+33,	yyvstop+117,
1799 yycrank+59,	0,		yyvstop+120,
1800 yycrank+0,	0,		yyvstop+122,
1801 yycrank+0,	0,		yyvstop+125,
1802 yycrank+0,	0,		yyvstop+128,
1803 yycrank+0,	0,		yyvstop+130,
1804 yycrank+0,	0,		yyvstop+132,
1805 yycrank+-410,	0,		yyvstop+135,
1806 yycrank+0,	0,		yyvstop+137,
1807 yycrank+0,	0,		yyvstop+139,
1808 yycrank+0,	0,		yyvstop+141,
1809 yycrank+-412,	0,		yyvstop+144,
1810 yycrank+0,	yysvec+14,	yyvstop+146,
1811 yycrank+0,	0,		yyvstop+148,
1812 yycrank+0,	0,		yyvstop+150,
1813 yycrank+-35,	yysvec+18,	yyvstop+152,
1814 yycrank+375,	0,		yyvstop+154,
1815 yycrank+385,	yysvec+19,	yyvstop+156,
1816 yycrank+400,	yysvec+19,	yyvstop+158,
1817 yycrank+0,	0,		yyvstop+160,
1818 yycrank+0,	0,		yyvstop+162,
1819 yycrank+123,	0,		yyvstop+164,
1820 yycrank+0,	0,		yyvstop+166,
1821 yycrank+0,	0,		yyvstop+168,
1822 yycrank+0,	0,		yyvstop+170,
1823 yycrank+0,	0,		yyvstop+172,
1824 yycrank+0,	0,		yyvstop+174,
1825 yycrank+117,	yysvec+26,	yyvstop+176,
1826 yycrank+0,	0,		yyvstop+178,
1827 yycrank+436,	0,		yyvstop+180,
1828 yycrank+0,	yysvec+28,	yyvstop+182,
1829 yycrank+490,	0,		0,
1830 yycrank+0,	0,		yyvstop+184,
1831 yycrank+0,	0,		yyvstop+186,
1832 yycrank+0,	0,		yyvstop+188,
1833 yycrank+0,	0,		yyvstop+190,
1834 yycrank+0,	yysvec+33,	yyvstop+192,
1835 yycrank+114,	yysvec+33,	yyvstop+194,
1836 yycrank+122,	yysvec+33,	yyvstop+196,
1837 yycrank+0,	yysvec+33,	yyvstop+198,
1838 yycrank+0,	0,		yyvstop+201,
1839 yycrank+0,	0,		yyvstop+203,
1840 yycrank+94,	yysvec+33,	yyvstop+205,
1841 yycrank+98,	yysvec+33,	yyvstop+207,
1842 yycrank+90,	yysvec+33,	yyvstop+209,
1843 yycrank+98,	yysvec+33,	yyvstop+211,
1844 yycrank+94,	yysvec+33,	yyvstop+213,
1845 yycrank+0,	yysvec+33,	yyvstop+215,
1846 yycrank+91,	yysvec+33,	yyvstop+218,
1847 yycrank+122,	yysvec+33,	yyvstop+220,
1848 yycrank+98,	yysvec+33,	yyvstop+222,
1849 yycrank+106,	yysvec+33,	yyvstop+224,
1850 yycrank+106,	yysvec+33,	yyvstop+226,
1851 yycrank+111,	yysvec+33,	yyvstop+228,
1852 yycrank+0,	yysvec+33,	yyvstop+230,
1853 yycrank+135,	yysvec+33,	yyvstop+233,
1854 yycrank+120,	yysvec+33,	yyvstop+236,
1855 yycrank+128,	yysvec+33,	yyvstop+238,
1856 yycrank+120,	yysvec+33,	yyvstop+240,
1857 yycrank+117,	yysvec+33,	yyvstop+242,
1858 yycrank+144,	yysvec+33,	yyvstop+244,
1859 yycrank+140,	yysvec+33,	yyvstop+246,
1860 yycrank+136,	yysvec+33,	yyvstop+248,
1861 yycrank+143,	yysvec+33,	yyvstop+250,
1862 yycrank+238,	yysvec+33,	yyvstop+252,
1863 yycrank+140,	yysvec+33,	yyvstop+254,
1864 yycrank+158,	yysvec+33,	yyvstop+256,
1865 yycrank+184,	yysvec+33,	yyvstop+258,
1866 yycrank+168,	yysvec+33,	yyvstop+260,
1867 yycrank+354,	yysvec+33,	yyvstop+262,
1868 yycrank+179,	yysvec+33,	yyvstop+264,
1869 yycrank+0,	0,		yyvstop+266,
1870 yycrank+0,	0,		yyvstop+268,
1871 yycrank+0,	0,		yyvstop+270,
1872 yycrank+446,	0,		yyvstop+273,
1873 yycrank+0,	0,		yyvstop+276,
1874 yycrank+0,	0,		yyvstop+279,
1875 yycrank+0,	0,		yyvstop+282,
1876 yycrank+0,	0,		yyvstop+285,
1877 yycrank+0,	0,		yyvstop+288,
1878 yycrank+0,	0,		yyvstop+291,
1879 yycrank+0,	0,		yyvstop+294,
1880 yycrank+0,	0,		yyvstop+297,
1881 yycrank+500,	0,		yyvstop+300,
1882 yycrank+0,	0,		yyvstop+302,
1883 yycrank+525,	yysvec+19,	yyvstop+304,
1884 yycrank+0,	0,		yyvstop+307,
1885 yycrank+535,	0,		0,
1886 yycrank+0,	yysvec+142,	yyvstop+309,
1887 yycrank+212,	yysvec+33,	yyvstop+311,
1888 yycrank+0,	yysvec+33,	yyvstop+313,
1889 yycrank+177,	yysvec+33,	yyvstop+316,
1890 yycrank+228,	yysvec+33,	yyvstop+318,
1891 yycrank+233,	yysvec+33,	yyvstop+320,
1892 yycrank+233,	yysvec+33,	yyvstop+322,
1893 yycrank+0,	yysvec+33,	yyvstop+324,
1894 yycrank+249,	yysvec+33,	yyvstop+327,
1895 yycrank+250,	yysvec+33,	yyvstop+329,
1896 yycrank+264,	yysvec+33,	yyvstop+331,
1897 yycrank+0,	yysvec+33,	yyvstop+333,
1898 yycrank+0,	yysvec+33,	yyvstop+336,
1899 yycrank+282,	yysvec+33,	yyvstop+339,
1900 yycrank+274,	yysvec+33,	yyvstop+341,
1901 yycrank+286,	yysvec+33,	yyvstop+343,
1902 yycrank+311,	yysvec+33,	yyvstop+345,
1903 yycrank+0,	yysvec+33,	yyvstop+347,
1904 yycrank+311,	yysvec+33,	yyvstop+350,
1905 yycrank+0,	yysvec+33,	yyvstop+352,
1906 yycrank+316,	yysvec+33,	yyvstop+355,
1907 yycrank+300,	yysvec+33,	yyvstop+357,
1908 yycrank+307,	yysvec+33,	yyvstop+359,
1909 yycrank+318,	yysvec+33,	yyvstop+361,
1910 yycrank+326,	yysvec+33,	yyvstop+363,
1911 yycrank+0,	yysvec+33,	yyvstop+365,
1912 yycrank+340,	yysvec+33,	yyvstop+368,
1913 yycrank+341,	yysvec+33,	yyvstop+370,
1914 yycrank+331,	yysvec+33,	yyvstop+372,
1915 yycrank+349,	yysvec+33,	yyvstop+374,
1916 yycrank+346,	yysvec+33,	yyvstop+376,
1917 yycrank+348,	yysvec+33,	yyvstop+379,
1918 yycrank+354,	yysvec+33,	yyvstop+381,
1919 yycrank+355,	yysvec+33,	yyvstop+383,
1920 yycrank+361,	yysvec+33,	yyvstop+385,
1921 yycrank+556,	0,		yyvstop+387,
1922 yycrank+0,	yysvec+138,	yyvstop+389,
1923 yycrank+394,	yysvec+33,	yyvstop+391,
1924 yycrank+423,	yysvec+33,	yyvstop+393,
1925 yycrank+367,	yysvec+33,	yyvstop+395,
1926 yycrank+375,	yysvec+33,	yyvstop+397,
1927 yycrank+374,	yysvec+33,	yyvstop+399,
1928 yycrank+364,	yysvec+33,	yyvstop+401,
1929 yycrank+0,	yysvec+33,	yyvstop+403,
1930 yycrank+0,	yysvec+33,	yyvstop+406,
1931 yycrank+366,	yysvec+33,	yyvstop+409,
1932 yycrank+398,	yysvec+33,	yyvstop+412,
1933 yycrank+0,	yysvec+33,	yyvstop+414,
1934 yycrank+384,	yysvec+33,	yyvstop+417,
1935 yycrank+390,	yysvec+33,	yyvstop+419,
1936 yycrank+405,	yysvec+33,	yyvstop+421,
1937 yycrank+0,	yysvec+33,	yyvstop+423,
1938 yycrank+394,	yysvec+33,	yyvstop+426,
1939 yycrank+0,	yysvec+33,	yyvstop+428,
1940 yycrank+397,	yysvec+33,	yyvstop+431,
1941 yycrank+397,	yysvec+33,	yyvstop+433,
1942 yycrank+404,	yysvec+33,	yyvstop+435,
1943 yycrank+0,	yysvec+33,	yyvstop+437,
1944 yycrank+415,	yysvec+33,	yyvstop+440,
1945 yycrank+400,	yysvec+33,	yyvstop+442,
1946 yycrank+416,	yysvec+33,	yyvstop+444,
1947 yycrank+399,	yysvec+33,	yyvstop+446,
1948 yycrank+407,	yysvec+33,	yyvstop+448,
1949 yycrank+420,	yysvec+33,	yyvstop+450,
1950 yycrank+0,	0,		yyvstop+452,
1951 yycrank+0,	yysvec+33,	yyvstop+454,
1952 yycrank+0,	yysvec+33,	yyvstop+457,
1953 yycrank+0,	yysvec+33,	yyvstop+460,
1954 yycrank+0,	yysvec+33,	yyvstop+463,
1955 yycrank+412,	yysvec+33,	yyvstop+466,
1956 yycrank+422,	yysvec+33,	yyvstop+468,
1957 yycrank+420,	yysvec+33,	yyvstop+470,
1958 yycrank+417,	yysvec+33,	yyvstop+472,
1959 yycrank+0,	yysvec+33,	yyvstop+474,
1960 yycrank+425,	yysvec+33,	yyvstop+477,
1961 yycrank+0,	yysvec+33,	yyvstop+479,
1962 yycrank+429,	yysvec+33,	yyvstop+482,
1963 yycrank+422,	yysvec+33,	yyvstop+485,
1964 yycrank+0,	yysvec+33,	yyvstop+487,
1965 yycrank+418,	yysvec+33,	yyvstop+490,
1966 yycrank+0,	yysvec+33,	yyvstop+492,
1967 yycrank+422,	yysvec+33,	yyvstop+495,
1968 yycrank+449,	yysvec+33,	yyvstop+497,
1969 yycrank+458,	yysvec+33,	yyvstop+499,
1970 yycrank+459,	yysvec+33,	yyvstop+501,
1971 yycrank+0,	yysvec+33,	yyvstop+503,
1972 yycrank+444,	yysvec+33,	yyvstop+506,
1973 yycrank+0,	yysvec+33,	yyvstop+508,
1974 yycrank+451,	yysvec+33,	yyvstop+511,
1975 yycrank+462,	yysvec+33,	yyvstop+513,
1976 yycrank+0,	yysvec+33,	yyvstop+515,
1977 yycrank+0,	yysvec+33,	yyvstop+518,
1978 yycrank+0,	yysvec+33,	yyvstop+521,
1979 yycrank+462,	yysvec+33,	yyvstop+524,
1980 yycrank+0,	yysvec+33,	yyvstop+526,
1981 yycrank+0,	yysvec+33,	yyvstop+529,
1982 yycrank+457,	yysvec+33,	yyvstop+532,
1983 yycrank+458,	yysvec+33,	yyvstop+534,
1984 yycrank+492,	yysvec+33,	yyvstop+536,
1985 yycrank+484,	yysvec+33,	yyvstop+538,
1986 yycrank+0,	yysvec+33,	yyvstop+540,
1987 yycrank+0,	yysvec+33,	yyvstop+543,
1988 yycrank+0,	yysvec+33,	yyvstop+546,
1989 yycrank+0,	yysvec+33,	yyvstop+549,
1990 yycrank+0,	yysvec+33,	yyvstop+552,
1991 yycrank+0,	yysvec+33,	yyvstop+555,
1992 0,	0,	0};
1993 struct yywork *yytop = yycrank+611;
1994 struct yysvf *yybgin = yysvec+1;
1995 char yymatch[] = {
1996   0,   1,   1,   1,   1,   1,   1,   1,
1997   1,   9,  10,   1,   1,   1,   1,   1,
1998   1,   1,   1,   1,   1,   1,   1,   1,
1999   1,   1,   1,   1,   1,   1,   1,   1,
2000   9,   1,   1,   1,   1,   1,   1,   1,
2001   1,   1,   1,   1,   1,   1,   1,   1,
2002  48,  48,  48,  48,  48,  48,  48,  48,
2003  56,  56,   1,   1,   1,   1,   1,   1,
2004   1,  65,  65,  65,  65,  65,  65,  71,
2005  71,  71,  71,  71,  71,  71,  71,  71,
2006  71,  71,  71,  71,  71,  71,  71,  71,
2007  71,  71,  71,   1,   1,   1,   1,  71,
2008   1,  65,  65,  65,  65,  65,  65,  71,
2009  71,  71,  71,  71,  71,  71,  71,  71,
2010  71,  71,  71,  71,  71,  71,  71,  71,
2011  71,  71,  71,   1,   1,   1,   1,   1,
2012   1,   1,   1,   1,   1,   1,   1,   1,
2013   1,   1,   1,   1,   1,   1,   1,   1,
2014   1,   1,   1,   1,   1,   1,   1,   1,
2015   1,   1,   1,   1,   1,   1,   1,   1,
2016   1,   1,   1,   1,   1,   1,   1,   1,
2017   1,   1,   1,   1,   1,   1,   1,   1,
2018   1,   1,   1,   1,   1,   1,   1,   1,
2019   1,   1,   1,   1,   1,   1,   1,   1,
2020   1,   1,   1,   1,   1,   1,   1,   1,
2021   1,   1,   1,   1,   1,   1,   1,   1,
2022   1,   1,   1,   1,   1,   1,   1,   1,
2023   1,   1,   1,   1,   1,   1,   1,   1,
2024   1,   1,   1,   1,   1,   1,   1,   1,
2025   1,   1,   1,   1,   1,   1,   1,   1,
2026   1,   1,   1,   1,   1,   1,   1,   1,
2027   1,   1,   1,   1,   1,   1,   1,   1,
2028 0};
2029 char yyextra[] = {
2030 0,0,0,0,0,0,0,0,
2031 0,0,0,0,0,0,0,0,
2032 0,0,0,0,0,0,0,0,
2033 0,0,0,0,0,0,0,0,
2034 0,0,0,0,0,0,0,0,
2035 0,0,0,0,0,0,0,0,
2036 0,0,0,0,0,0,0,0,
2037 0,0,0,0,0,0,0,0,
2038 0,0,0,0,0,0,0,0,
2039 0,0,0,0,0,0,0,0,
2040 0,0,0,0,0,0,0,0,
2041 0,0,0,0,0,0,0,0,
2042 0,0,0,0,0,0,0,0,
2043 0};
2044 /*
2045  * CDDL HEADER START
2046  *
2047  * The contents of this file are subject to the terms of the
2048  * Common Development and Distribution License, Version 1.0 only
2049  * (the "License").  You may not use this file except in compliance
2050  * with the License.
2051  *
2052  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2053  * or http://www.opensolaris.org/os/licensing.
2054  * See the License for the specific language governing permissions
2055  * and limitations under the License.
2056  *
2057  * When distributing Covered Code, include this CDDL HEADER in each
2058  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2059  * If applicable, add the following below this CDDL HEADER, with the
2060  * fields enclosed by brackets "[]" replaced with your own identifying
2061  * information: Portions Copyright [yyyy] [name of copyright owner]
2062  *
2063  * CDDL HEADER END
2064  */
2065 
2066 /*	Copyright (c) 1989 AT&T	*/
2067 /*	  All Rights Reserved  	*/
2068 
2069 #pragma ident	"%Z%%M%	%I%	%E% SMI"
2070 
2071 int yylineno =1;
2072 # define YYU(x) x
2073 # define NLSTATE yyprevious=YYNEWLINE
2074 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
2075 char yysbuf[YYLMAX];
2076 char *yysptr = yysbuf;
2077 int *yyfnd;
2078 extern struct yysvf *yyestate;
2079 int yyprevious = YYNEWLINE;
2080 #if defined(__cplusplus) || defined(__STDC__)
2081 int yylook(void)
2082 #else
2083 yylook()
2084 #endif
2085 {
2086 	register struct yysvf *yystate, **lsp;
2087 	register struct yywork *yyt;
2088 	struct yysvf *yyz;
2089 	int yych, yyfirst;
2090 	struct yywork *yyr;
2091 # ifdef LEXDEBUG
2092 	int debug;
2093 # endif
2094 	char *yylastch;
2095 	/* start off machines */
2096 # ifdef LEXDEBUG
2097 	debug = 0;
2098 # endif
2099 	yyfirst=1;
2100 	if (!yymorfg)
2101 		yylastch = yytext;
2102 	else {
2103 		yymorfg=0;
2104 		yylastch = yytext+yyleng;
2105 		}
2106 	for(;;){
2107 		lsp = yylstate;
2108 		yyestate = yystate = yybgin;
2109 		if (yyprevious==YYNEWLINE) yystate++;
2110 		for (;;){
2111 # ifdef LEXDEBUG
2112 			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
2113 # endif
2114 			yyt = yystate->yystoff;
2115 			if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
2116 				yyz = yystate->yyother;
2117 				if(yyz == 0)break;
2118 				if(yyz->yystoff == yycrank)break;
2119 				}
2120 #ifndef __cplusplus
2121 			*yylastch++ = yych = input();
2122 #else
2123 			*yylastch++ = yych = lex_input();
2124 #endif
2125 #ifdef YYISARRAY
2126 			if(yylastch > &yytext[YYLMAX]) {
2127 				fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2128 				exit(1);
2129 			}
2130 #else
2131 			if (yylastch >= &yytext[ yytextsz ]) {
2132 				int	x = yylastch - yytext;
2133 
2134 				yytextsz += YYTEXTSZINC;
2135 				if (yytext == yy_tbuf) {
2136 				    yytext = (char *) malloc(yytextsz);
2137 				    memcpy(yytext, yy_tbuf, sizeof (yy_tbuf));
2138 				}
2139 				else
2140 				    yytext = (char *) realloc(yytext, yytextsz);
2141 				if (!yytext) {
2142 				    fprintf(yyout,
2143 					"Cannot realloc yytext\n");
2144 				    exit(1);
2145 				}
2146 				yylastch = yytext + x;
2147 			}
2148 #endif
2149 			yyfirst=0;
2150 		tryagain:
2151 # ifdef LEXDEBUG
2152 			if(debug){
2153 				fprintf(yyout,"char ");
2154 				allprint(yych);
2155 				putchar('\n');
2156 				}
2157 # endif
2158 			yyr = yyt;
2159 			if ( (uintptr_t)yyt > (uintptr_t)yycrank){
2160 				yyt = yyr + yych;
2161 				if (yyt <= yytop && yyt->verify+yysvec == yystate){
2162 					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
2163 						{unput(*--yylastch);break;}
2164 					*lsp++ = yystate = yyt->advance+yysvec;
2165 					if(lsp > &yylstate[YYLMAX]) {
2166 						fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2167 						exit(1);
2168 					}
2169 					goto contin;
2170 					}
2171 				}
2172 # ifdef YYOPTIM
2173 			else if((uintptr_t)yyt < (uintptr_t)yycrank) {	/* r < yycrank */
2174 				yyt = yyr = yycrank+(yycrank-yyt);
2175 # ifdef LEXDEBUG
2176 				if(debug)fprintf(yyout,"compressed state\n");
2177 # endif
2178 				yyt = yyt + yych;
2179 				if(yyt <= yytop && yyt->verify+yysvec == yystate){
2180 					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
2181 						{unput(*--yylastch);break;}
2182 					*lsp++ = yystate = yyt->advance+yysvec;
2183 					if(lsp > &yylstate[YYLMAX]) {
2184 						fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2185 						exit(1);
2186 					}
2187 					goto contin;
2188 					}
2189 				yyt = yyr + YYU(yymatch[yych]);
2190 # ifdef LEXDEBUG
2191 				if(debug){
2192 					fprintf(yyout,"try fall back character ");
2193 					allprint(YYU(yymatch[yych]));
2194 					putchar('\n');
2195 					}
2196 # endif
2197 				if(yyt <= yytop && yyt->verify+yysvec == yystate){
2198 					if(yyt->advance+yysvec == YYLERR)	/* error transition */
2199 						{unput(*--yylastch);break;}
2200 					*lsp++ = yystate = yyt->advance+yysvec;
2201 					if(lsp > &yylstate[YYLMAX]) {
2202 						fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2203 						exit(1);
2204 					}
2205 					goto contin;
2206 					}
2207 				}
2208 			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
2209 # ifdef LEXDEBUG
2210 				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
2211 # endif
2212 				goto tryagain;
2213 				}
2214 # endif
2215 			else
2216 				{unput(*--yylastch);break;}
2217 		contin:
2218 # ifdef LEXDEBUG
2219 			if(debug){
2220 				fprintf(yyout,"state %d char ",yystate-yysvec-1);
2221 				allprint(yych);
2222 				putchar('\n');
2223 				}
2224 # endif
2225 			;
2226 			}
2227 # ifdef LEXDEBUG
2228 		if(debug){
2229 			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
2230 			allprint(yych);
2231 			putchar('\n');
2232 			}
2233 # endif
2234 		while (lsp-- > yylstate){
2235 			*yylastch-- = 0;
2236 			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
2237 				yyolsp = lsp;
2238 				if(yyextra[*yyfnd]){		/* must backup */
2239 					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
2240 						lsp--;
2241 						unput(*yylastch--);
2242 						}
2243 					}
2244 				yyprevious = YYU(*yylastch);
2245 				yylsp = lsp;
2246 				yyleng = yylastch-yytext+1;
2247 				yytext[yyleng] = 0;
2248 # ifdef LEXDEBUG
2249 				if(debug){
2250 					fprintf(yyout,"\nmatch ");
2251 					sprint(yytext);
2252 					fprintf(yyout," action %d\n",*yyfnd);
2253 					}
2254 # endif
2255 				return(*yyfnd++);
2256 				}
2257 			unput(*yylastch);
2258 			}
2259 		if (yytext[0] == 0  /* && feof(yyin) */)
2260 			{
2261 			yysptr=yysbuf;
2262 			return(0);
2263 			}
2264 #ifndef __cplusplus
2265 		yyprevious = yytext[0] = input();
2266 		if (yyprevious>0)
2267 			output(yyprevious);
2268 #else
2269 		yyprevious = yytext[0] = lex_input();
2270 		if (yyprevious>0)
2271 			lex_output(yyprevious);
2272 #endif
2273 		yylastch=yytext;
2274 # ifdef LEXDEBUG
2275 		if(debug)putchar('\n');
2276 # endif
2277 		}
2278 	}
2279 #if defined(__cplusplus) || defined(__STDC__)
2280 int yyback(int *p, int m)
2281 #else
2282 yyback(p, m)
2283 	int *p;
2284 #endif
2285 {
2286 	if (p==0) return(0);
2287 	while (*p) {
2288 		if (*p++ == m)
2289 			return(1);
2290 	}
2291 	return(0);
2292 }
2293 	/* the following are only used in the lex library */
2294 #if defined(__cplusplus) || defined(__STDC__)
2295 int yyinput(void)
2296 #else
2297 yyinput()
2298 #endif
2299 {
2300 #ifndef __cplusplus
2301 	return(input());
2302 #else
2303 	return(lex_input());
2304 #endif
2305 	}
2306 #if defined(__cplusplus) || defined(__STDC__)
2307 void yyoutput(int c)
2308 #else
2309 yyoutput(c)
2310   int c;
2311 #endif
2312 {
2313 #ifndef __cplusplus
2314 	output(c);
2315 #else
2316 	lex_output(c);
2317 #endif
2318 	}
2319 #if defined(__cplusplus) || defined(__STDC__)
2320 void yyunput(int c)
2321 #else
2322 yyunput(c)
2323    int c;
2324 #endif
2325 {
2326 	unput(c);
2327 	}
2328