Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / zotnet / tws / dtimep.c-lexed
1 # include "stdio.h"
2 static int start_cond = 0;
3 #define BEGIN start_cond =
4 struct yysvf { 
5         struct yywork *yystoff;
6         struct yysvf *yyother;
7         int *yystops;};
8 # define Z 2
9 #ifndef lint
10 static char ident[] = "@(#)$Id: dtimep.lex,v 2.15 1993/02/26 22:07:40 jromine Exp $";
11 #endif
12 #include "tws.h"
13 #include "../h/strings.h"
14 #include <ctype.h>
15 #include <sys/types.h>
16 #if !defined(SYS5) && !defined(ZONEINFO)
17 #include <sys/timeb.h>
18 #endif /* !defined(SYS5) && !defined(ZONEINFO) */
19
20 #ifdef SYS5
21 extern int  daylight;
22 extern long timezone;
23 extern char *tzname[];
24 #endif /* SYS5 */
25
26 /*
27  * Patchable flag that says how to interpret NN/NN/NN dates. When
28  * true, we do it European style: DD/MM/YY. When false, we do it
29  * American style: MM/DD/YY.  Of course, these are all non-RFC822
30  * compliant.
31  */
32 int europeandate = 0;
33
34 /*
35  * Table to convert month names to numeric month.  We use the
36  * fact that the low order 5 bits of the sum of the 2nd & 3rd
37  * characters of the name is a hash with no collisions for the 12
38  * valid month names.  (The mask to 5 bits maps any combination of
39  * upper and lower case into the same hash value).
40  */
41 static  int month_map[] = {
42         0,
43         6,      /* 1 - Jul */
44         3,      /* 2 - Apr */
45         5,      /* 3 - Jun */
46         0,
47         10,     /* 5 - Nov */
48         0,
49         1,      /* 7 - Feb */
50         11,     /* 8 - Dec */
51         0,
52         0,
53         0,
54         0,
55         0,
56         0,
57         0,      /*15 - Jan */
58         0,
59         0,
60         0,
61         2,      /*19 - Mar */
62         0,
63         8,      /*21 - Sep */
64         0,
65         9,      /*23 - Oct */
66         0,
67         0,
68         4,      /*26 - May */
69         0,
70         7       /*28 - Aug */
71 };
72 /*
73  * Same trick for day-of-week using the hash function
74  *  (c1 & 7) + (c2 & 4)
75  */
76 static  int day_map[] = {
77         0,
78         0,
79         0,
80         6,      /* 3 - Sat */
81         4,      /* 4 - Thu */
82         0,
83         5,      /* 6 - Fri */
84         0,      /* 7 - Sun */
85         2,      /* 8 - Tue */
86         1       /* 9 - Mon */,
87         0,
88         3       /*11 - Wed */
89 };
90 #define SETDAY  { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
91                 tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP;\
92                 cp += 2; }
93 #define SETMONTH { tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
94                  cp += 2;\
95                  SKIPD;}
96 #define CVT1OR2 (i=(*cp++ - '0'), isdigit(*cp)? i*10 + (*cp++ - '0') : i)
97 #define CVT2      ((cp[0] - '0')*10 + (cp[1] - '0'))
98 #define CVT4    ((((cp[0] - '0')*10 + (cp[1] - '0'))*10 + \
99                                       (cp[2] - '0'))*10 + (cp[3] - '0'))
100 #define SKIPD   { while ( !isdigit(*cp++) ) ;  --cp; }
101 #define EXPZONE { tw.tw_flags &= ~TW_SZONE; tw.tw_flags |= TW_SZEXP; }
102 #define ZONE(x) { tw.tw_zone=(x); EXPZONE; }
103 #define ZONED(x) { ZONE(x); tw.tw_flags |= TW_DST; }
104 #define LC(c)   (isupper (c) ? tolower (c) : (c))
105
106 #ifdef  DSTXXX
107 #ifdef  _AIX
108 #include <sys/time.h>
109 #include <time.h>
110 #else
111 #ifndef BSD42
112 #include <time.h>
113 #else   /* BSD42 */
114 #include <sys/time.h>
115 #endif  /* BSD42 */
116 #endif
117
118 static  zonehack (tw)
119 register struct tws *tw;
120 {
121     register struct tm *tm;
122
123     if (twclock (tw) == -1L)
124         return;
125
126     tm = localtime (&tw -> tw_clock);
127     if (tm -> tm_isdst) {
128         tw -> tw_flags |= TW_DST;
129         tw -> tw_zone -= 60;
130     }
131 }
132 #endif  /* DSTXXX */
133 struct tws *dparsetime (str)
134         char *str;
135 {
136         register int i;
137         static struct tws tw;
138         register char *cp;
139         register int gotdate = 0;
140 #ifndef SYS5
141 #ifdef ZONEINFO
142         struct tm      *tm;
143         time_t          clock;
144 #else
145         struct timeb    tb;
146 #endif  /* ZONEINFO */
147 #endif  /* not SYS5 */
148         long tclock;
149
150         start_cond = 0;
151
152         /* Zero out the struct. */
153         bzero( (char *) &tw, sizeof tw);
154
155         /* Set default time zone. */
156 #ifdef SYS5
157         tzset( );
158         tw.tw_zone = -(timezone / 60);
159 #else
160 #ifdef ZONEINFO
161         time (&clock);
162         tm = localtime(&clock);
163         tw.tw_zone = tm->tm_gmtoff / 60;
164         if (tm -> tm_isdst)                     /* if DST is in effect */
165                 tw.tw_zone -= 60;               /* reset to normal offset */
166 #else
167         ftime( &tb );
168         tw.tw_zone = -tb.timezone;
169 #endif  /* ZONEINFO */
170 #endif  /* SYS5 */
171
172         while (isspace(*str))
173                 str++;
174         while ( 1 )
175                 switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) {
176
177                 case -1:
178                         if (!gotdate || tw.tw_year == 0)
179                                 return (struct tws *)0;
180                         /* fall through */
181                 case 0:
182                         if ( tw.tw_year == 0 ) {
183                                 /* Set default year. */
184                                 time (&tclock);
185                                 tw.tw_year = localtime(&tclock)->tm_year + 1900;
186                         }
187                         else if (tw.tw_year < 100) {
188                                 /* assume no 2-digit years > 1999 */
189                                 tw.tw_year += 1900;
190                         }
191                         return &tw;
192
193 case 1:
194                         SETDAY;
195 break;
196 case 2:
197                 {
198                                         cp++;
199                                         SETDAY;
200                                         }
201 break;
202 case 3:
203 {
204                                         if (europeandate) {
205                                                 /* European: DD/MM/YY */
206                                                 tw.tw_mday = CVT1OR2;
207                                                 cp++;
208                                                 tw.tw_mon  = CVT1OR2 - 1;
209                                         } else {
210                                                 /* American: MM/DD/YY */
211                                                 tw.tw_mon  = CVT1OR2 - 1;
212                                                 cp++;
213                                                 tw.tw_mday = CVT1OR2;
214                                         }
215                                         cp++;
216                                         for (i = 0; isdigit(*cp); )
217                                                 i = i*10 + (*cp++ - '0');
218                                         tw.tw_year = i;
219                                         gotdate++;      /* XXX */
220                                         }
221 break;
222 case 4:
223                 {
224                                         if (europeandate) {
225                                                 tw.tw_mday = CVT1OR2; cp++;
226                                                 tw.tw_mon  = CVT1OR2 - 1;
227                                         } else {
228                                                 tw.tw_mon = CVT1OR2 - 1; cp++;
229                                                 tw.tw_mday  = CVT1OR2;
230                                         }
231                                         gotdate++;
232                                         }
233 break;
234 case 5:
235 {
236                                         tw.tw_mday = CVT1OR2;
237                                         while ( !isalpha(*cp++) )
238                                                 ;
239                                         SETMONTH;
240                                         for (i = 0; isdigit(*cp); )
241                                                 i = i*10 + (*cp++ - '0');
242                                         tw.tw_year = i;
243                                         }
244 break;
245 case 6:
246               {
247                                         tw.tw_mday = CVT1OR2;
248                                         while ( ! isalpha( *cp++ ) )
249                                                 ;
250                                         SETMONTH;
251                                         }
252 break;
253 case 7:
254 {
255                                         cp++;
256                                         SETMONTH;
257                                         tw.tw_mday = CVT1OR2;
258                                         SKIPD;
259                                         for (i = 0; isdigit(*cp); )
260                                                 i = i*10 + (*cp++ - '0');
261                                         tw.tw_year = i;
262                                         }
263 break;
264 case 8:
265                 {
266                                         cp++;
267                                         SETMONTH;
268                                         tw.tw_mday = CVT1OR2;
269                                         }
270 break;
271 case 9:
272         {       /* hack: ctime w/o TZ */
273                                         tw.tw_hour = CVT1OR2; cp++;
274                                         tw.tw_min  = CVT1OR2; cp++;
275                                         tw.tw_sec  = CVT1OR2;
276                                         SKIPD;
277                                         tw.tw_year = CVT4; cp+=4;
278                                         }
279 break;
280 case 10:
281                         {
282                                         tw.tw_hour = CVT1OR2; cp++;
283                                         tw.tw_min  = CVT1OR2; cp++;
284                                         tw.tw_sec  = CVT1OR2;
285                                         BEGIN Z;
286                                         }
287 break;
288 case 11:
289                         {
290                                         tw.tw_hour = CVT1OR2; cp++;
291                                         tw.tw_min = CVT1OR2;
292                                         BEGIN Z;
293                                         }
294 break;
295 case 12:
296                         {
297                                         tw.tw_hour = CVT1OR2; cp++;
298                                         if (tw.tw_hour == 12)
299                                                 tw.tw_hour = 0;
300                                         tw.tw_min  = CVT1OR2;
301                                         BEGIN Z;
302                                         }
303 break;
304 case 13:
305                 {
306                                         tw.tw_hour = CVT1OR2; cp++;
307                                         if (tw.tw_hour == 12)
308                                                 tw.tw_hour = 0;
309                                         tw.tw_min  = CVT1OR2; cp++;
310                                         tw.tw_sec  = CVT1OR2;
311                                         BEGIN Z;
312                                         }
313 break;
314 case 14:
315                         {
316                                         tw.tw_hour = CVT1OR2; cp++;
317                                         if (tw.tw_hour != 12)
318                                                 tw.tw_hour += 12;
319                                         tw.tw_min  = CVT1OR2;
320                                         BEGIN Z;
321                                         }
322 break;
323 case 15:
324                 {
325                                         tw.tw_hour = CVT1OR2; cp++;
326                                         if (tw.tw_hour != 12)
327                                                 tw.tw_hour += 12;
328                                         tw.tw_min  = CVT1OR2; cp++;
329                                         tw.tw_sec  = CVT1OR2;
330                                         BEGIN Z;
331                                         }
332 break;
333 case 16:
334                 {
335                                         tw.tw_hour = CVT2; cp+=2;
336                                         tw.tw_min  = CVT2; cp+=2;
337                                         tw.tw_sec  = CVT2; cp+=2;
338                                         BEGIN Z;
339                                         }
340 break;
341 case 17:
342                         {
343                                         /*
344                                          * Luckly, 4 digit times in the range
345                                          * 1960-1999 aren't legal as hour
346                                          * and minutes.
347                                          */
348                                         tw.tw_year = CVT4; cp+=4;
349                                         }
350 break;
351 case 18:
352                 {
353                                         if (tw.tw_hour || tw.tw_min 
354                                                             || tw.tw_sec) {
355                                             tw.tw_year = CVT4; cp+=4;
356                                             tw.tw_zone = 0;
357                                         } else {
358                                             tw.tw_hour = CVT2; cp+=2;
359                                             tw.tw_min  = CVT2; cp+=2;
360                                             BEGIN Z;
361                                         }
362                                         }
363 break;
364 case 19:
365                         ZONE(0 * 60);
366 break;
367 case 20:
368                         ZONE(0 * 60);
369 break;
370 case 21:
371                         ZONE(2 * 60);
372 break;
373 case 22:
374                         ZONED(2 * 60);
375 break;
376 case 23:
377                         ZONE(-5 * 60);
378 break;
379 case 24:
380                         ZONED(-5 * 60);
381 break;
382 case 25:
383                         ZONE(-6 * 60);
384 break;
385 case 26:
386                         ZONED(-6 * 60);
387 break;
388 case 27:
389                         ZONE(-7 * 60);
390 break;
391 case 28:
392                         ZONED(-7 * 60);
393 break;
394 case 29:
395                         ZONE(-8 * 60);
396 break;
397 case 30:
398                         ZONED(-8 * 60);
399 break;
400 case 31:
401                         ZONE(-(3 * 60 + 30));
402 break;
403 case 32:
404                         ZONE(-4 * 60);
405 break;
406 case 33:
407                         ZONED(-4 * 60);
408 break;
409 case 34:
410                         ZONE(-9 * 60);
411 break;
412 case 35:
413                         ZONED(-9 * 60);
414 break;
415 case 36:
416                         ZONE(-10 * 60);
417 break;
418 case 37:
419                         ZONED(-10 * 60);
420 break;
421 case 38:
422                         ZONED(-1 * 60);
423 break;
424 case 39:
425                         {
426                                         tw.tw_zone = 60 * (('a'-1) - LC(*cp));
427                                         EXPZONE; 
428                                         }
429 break;
430 case 40:
431                         {
432                                         tw.tw_zone = 60 * ('a' - LC(*cp));
433                                         EXPZONE; 
434                                         }
435 break;
436 case 41:
437                         {
438                                         tw.tw_zone = 60 * (LC(*cp) - 'm');
439                                         EXPZONE; 
440                                         }
441 break;
442 case 42:
443                 {
444                                         cp++;
445                                         tw.tw_zone = ((cp[0] * 10 + cp[1])
446                                                      -('0' * 10   + '0'))*60
447                                                     +((cp[2] * 10 + cp[3])
448                                                      -('0' * 10   + '0'));
449                                         EXPZONE;
450 #ifdef  DSTXXX
451                                         zonehack (&tw);
452 #endif  /* DSTXXX */
453                                         cp += 4;
454                                         }
455 break;
456 case 43:
457                 {
458                                         cp++;
459                                         tw.tw_zone = (('0' * 10   + '0')
460                                                      -(cp[0] * 10 + cp[1]))*60
461                                                     +(('0' * 10   + '0')
462                                                      -(cp[2] * 10 + cp[3]));
463                                         EXPZONE;
464 #ifdef  DSTXXX
465                                         zonehack (&tw);
466 #endif  /* DSTXXX */
467                                         cp += 4;
468                                         }
469 break;
470 case 44:
471                 {
472                                         SKIPD;
473                                         tw.tw_year = CVT4; cp+=4;
474                                         }
475 break;
476 case 45:
477 case 46:
478 ;
479 break;
480 default: return(0);
481 } }
482 /* end of yylex */
483 int yyvstop[] = {
484 0,
485
486 46,
487 0,
488
489 45,
490 0,
491
492 46,
493 0,
494
495 39,
496 0,
497
498 39,
499 0,
500
501 39,
502 0,
503
504 39,
505 0,
506
507 39,
508 0,
509
510 39,
511 0,
512
513 39,
514 0,
515
516 39,
517 0,
518
519 39,
520 0,
521
522 40,
523 0,
524
525 40,
526 0,
527
528 41,
529 0,
530
531 41,
532 0,
533
534 41,
535 0,
536
537 41,
538 0,
539
540 41,
541 0,
542
543 41,
544 0,
545
546 41,
547 0,
548
549 41,
550 0,
551
552 41,
553 0,
554
555 19,
556 0,
557
558 4,
559 0,
560
561 4,
562 0,
563
564 11,
565 0,
566
567 1,
568 0,
569
570 1,
571 0,
572
573 1,
574 0,
575
576 1,
577 0,
578
579 1,
580 0,
581
582 1,
583 0,
584
585 1,
586 0,
587
588 33,
589 0,
590
591 32,
592 0,
593
594 38,
595 0,
596
597 26,
598 0,
599
600 25,
601 0,
602
603 24,
604 0,
605
606 23,
607 0,
608
609 20,
610 0,
611
612 37,
613 0,
614
615 36,
616 0,
617
618 22,
619 0,
620
621 21,
622 0,
623
624 28,
625 0,
626
627 27,
628 0,
629
630 31,
631 0,
632
633 30,
634 0,
635
636 29,
637 0,
638
639 35,
640 0,
641
642 34,
643 0,
644
645 4,
646 0,
647
648 4,
649 0,
650
651 4,
652 0,
653
654 18,
655 0,
656
657 11,
658 0,
659
660 11,
661 0,
662
663 6,
664 0,
665
666 6,
667 0,
668
669 6,
670 0,
671
672 6,
673 0,
674
675 6,
676 0,
677
678 6,
679 0,
680
681 6,
682 0,
683
684 6,
685 0,
686
687 6,
688 0,
689
690 6,
691 0,
692
693 6,
694 0,
695
696 6,
697 0,
698
699 17,
700 18,
701 0,
702
703 1,
704 0,
705
706 2,
707 0,
708
709 18,
710 0,
711
712 10,
713 0,
714
715 12,
716 0,
717
718 14,
719 0,
720
721 6,
722 0,
723
724 17,
725 18,
726 0,
727
728 8,
729 0,
730
731 44,
732 0,
733
734 42,
735 0,
736
737 43,
738 0,
739
740 2,
741 0,
742
743 3,
744 0,
745
746 16,
747 0,
748
749 10,
750 0,
751
752 10,
753 0,
754
755 5,
756 0,
757
758 8,
759 0,
760
761 8,
762 0,
763
764 1,
765 0,
766
767 3,
768 0,
769
770 3,
771 0,
772
773 13,
774 0,
775
776 15,
777 0,
778
779 6,
780 0,
781
782 5,
783 0,
784
785 5,
786 0,
787
788 5,
789 0,
790
791 5,
792 0,
793
794 7,
795 0,
796
797 9,
798 0,
799
800 7,
801 0,
802
803 7,
804 0,
805 0};
806 # define YYTYPE int
807 struct yywork { YYTYPE verify, advance; } yycrank[] = {
808 0,0,    0,0,    0,0,    0,0,    
809 0,0,    0,0,    0,0,    0,0,    
810 0,0,    0,0,    1,5,    1,6,    
811 0,0,    0,0,    0,0,    0,0,    
812 0,0,    0,0,    0,0,    0,0,    
813 0,0,    0,0,    0,0,    0,0,    
814 0,0,    0,0,    0,0,    0,0,    
815 0,0,    0,0,    0,0,    0,0,    
816 0,0,    1,5,    0,0,    0,0,    
817 3,21,   3,6,    5,5,    0,0,    
818 0,0,    1,7,    0,0,    0,0,    
819 0,0,    0,0,    0,0,    0,0,    
820 0,0,    1,8,    1,9,    1,8,    
821 1,10,   1,10,   1,10,   1,10,   
822 1,10,   1,10,   1,10,   3,21,   
823 0,0,    5,5,    0,0,    0,0,    
824 0,0,    0,0,    0,0,    3,7,    
825 0,0,    0,0,    3,22,   0,0,    
826 3,23,   0,0,    0,0,    3,8,    
827 3,9,    3,8,    3,10,   3,10,   
828 3,10,   3,10,   3,10,   3,10,   
829 3,10,   9,63,   10,64,  10,64,  
830 10,64,  10,64,  10,64,  10,64,  
831 10,64,  10,64,  10,64,  10,64,  
832 22,83,  22,83,  1,11,   0,0,    
833 0,0,    1,12,   0,0,    1,13,   
834 0,0,    0,0,    0,0,    1,14,   
835 0,0,    0,0,    1,15,   1,16,   
836 1,17,   0,0,    0,0,    0,0,    
837 1,18,   1,19,   0,0,    0,0,    
838 1,20,   0,0,    0,0,    0,0,    
839 3,24,   3,25,   3,26,   3,27,   
840 3,28,   3,29,   3,30,   3,31,   
841 3,32,   3,33,   3,34,   3,34,   
842 3,35,   3,36,   3,37,   3,38,   
843 3,39,   3,39,   3,40,   3,41,   
844 3,42,   3,39,   3,43,   3,39,   
845 3,44,   7,45,   8,50,   12,67,  
846 11,65,  16,74,  13,68,  14,70,  
847 7,46,   11,66,  15,72,  17,75,  
848 18,76,  19,79,  7,47,   7,48,   
849 18,77,  20,81,  7,49,   13,69,  
850 25,99,  30,104, 42,114, 45,117, 
851 15,73,  8,50,   19,80,  14,71,  
852 46,118, 21,21,  36,74,  49,123, 
853 18,78,  47,119, 36,111, 56,139, 
854 23,84,  23,84,  8,51,   26,100, 
855 8,52,   8,53,   8,53,   8,53,   
856 8,53,   8,53,   8,53,   8,53,   
857 8,53,   8,53,   8,53,   8,54,   
858 21,21,  47,120, 26,101, 55,137, 
859 57,140, 59,143, 60,144, 61,145, 
860 55,138, 62,146, 65,148, 66,149, 
861 28,102, 31,105, 24,97,  38,112, 
862 21,82,  21,82,  21,82,  21,82,  
863 21,82,  21,82,  21,82,  21,82,  
864 21,82,  21,82,  24,65,  28,103, 
865 31,106, 24,98,  38,113, 24,66,  
866 67,150, 23,85,  23,86,  23,87,  
867 48,121, 23,88,  8,55,   23,89,  
868 23,90,  8,56,   23,91,  8,57,   
869 44,115, 23,92,  23,93,  8,58,   
870 23,94,  48,122, 8,59,   8,60,   
871 8,61,   23,95,  50,50,  33,70,  
872 8,62,   23,96,  33,107, 44,116, 
873 35,72,  68,151, 69,152, 35,109, 
874 70,153, 71,154, 73,158, 71,155, 
875 74,159, 58,141, 51,124, 75,160, 
876 76,161, 33,108, 35,73,  33,71,  
877 77,162, 50,50,  35,110, 52,134, 
878 52,134, 52,134, 52,134, 52,134, 
879 52,134, 52,134, 52,134, 52,134, 
880 52,134, 58,142, 50,124, 78,163, 
881 79,164, 51,124, 53,135, 53,135, 
882 53,135, 53,135, 53,135, 53,135, 
883 53,135, 53,135, 53,135, 53,135, 
884 80,165, 81,166, 93,111, 97,170, 
885 98,171, 51,133, 51,133, 51,133, 
886 51,133, 51,133, 51,133, 51,133, 
887 51,133, 51,133, 51,133, 54,136, 
888 54,136, 54,136, 54,136, 54,136, 
889 54,136, 54,136, 54,136, 54,136, 
890 54,136, 63,135, 63,135, 63,135, 
891 63,135, 63,135, 63,135, 63,147, 
892 63,147, 63,147, 63,147, 64,50,  
893 99,172, 72,156, 50,125, 100,173,        
894 85,97,  50,126, 101,174,        50,127, 
895 72,157, 91,107, 92,109, 50,128, 
896 102,175,        103,176,        50,129, 50,130, 
897 50,131, 104,177,        51,55,  85,98,  
898 50,132, 51,56,  64,50,  51,57,  
899 91,108, 92,110, 105,178,        51,58,  
900 106,179,        107,180,        51,59,  51,60,  
901 51,61,  108,181,        109,182,        64,51,  
902 51,62,  64,52,  82,167, 82,167, 
903 82,167, 82,167, 82,167, 82,167, 
904 82,167, 82,167, 82,167, 82,167, 
905 64,54,  83,168, 83,168, 83,168, 
906 83,168, 83,168, 83,168, 83,168, 
907 83,168, 83,168, 83,168, 84,169, 
908 84,169, 84,169, 84,169, 84,169, 
909 84,169, 84,169, 84,169, 84,169, 
910 84,169, 110,183,        111,184,        112,185,        
911 113,186,        115,187,        116,188,        117,189,        
912 118,190,        119,191,        120,192,        121,193,        
913 122,194,        123,195,        126,198,        124,124,        
914 125,196,        127,199,        129,202,        64,55,  
915 128,200,        125,197,        64,56,  130,203,        
916 64,57,  131,204,        132,205,        133,206,        
917 64,58,  137,216,        138,217,        64,59,  
918 64,60,  64,61,  139,218,        140,219,        
919 141,220,        64,62,  124,124,        134,206,        
920 128,201,        142,221,        143,223,        142,222,        
921 144,225,        145,226,        146,227,        153,236,        
922 155,157,        143,224,        133,206,        135,210,        
923 135,210,        135,210,        135,210,        135,210,        
924 135,210,        135,210,        135,210,        135,210,        
925 135,210,        158,238,        134,206,        133,207,        
926 159,239,        160,240,        133,208,        133,208,        
927 133,208,        133,208,        133,208,        133,208,        
928 133,208,        133,208,        133,208,        133,208,        
929 148,229,        134,207,        134,209,        134,209,        
930 134,209,        134,209,        134,209,        134,209,        
931 134,209,        134,209,        134,209,        134,209,        
932 136,211,        147,228,        147,228,        147,228,        
933 147,228,        147,228,        147,228,        147,228,        
934 147,228,        147,228,        147,228,        148,229,        
935 149,229,        150,229,        151,229,        124,125,        
936 162,242,        163,243,        124,126,        189,250,        
937 124,127,        190,252,        192,254,        136,211,        
938 124,128,        196,258,        191,250,        124,129,        
939 124,130,        124,131,        152,234,        154,229,        
940 156,229,        124,132,        157,229,        149,229,        
941 150,229,        151,229,        161,234,        136,212,        
942 136,212,        136,212,        136,212,        136,212,        
943 136,212,        136,212,        136,212,        136,212,        
944 136,212,        136,213,        197,259,        164,234,        
945 165,234,        152,234,        154,229,        156,229,        
946 166,234,        157,229,        198,260,        199,261,        
947 193,250,        161,234,        194,250,        200,262,        
948 202,265,        152,234,        195,250,        201,263,        
949 203,267,        201,264,        204,268,        202,266,        
950 205,269,        161,234,        164,234,        165,234,        
951 208,207,        209,207,        189,251,        166,234,        
952 212,213,        206,206,        214,274,        215,275,        
953 148,230,        220,283,        164,234,        165,234,        
954 136,214,        222,224,        225,285,        166,234,        
955 167,247,        167,247,        167,247,        167,247,        
956 167,247,        167,247,        167,247,        167,247,        
957 167,247,        167,247,        191,253,        136,215,        
958 206,206,        150,232,        168,248,        168,248,        
959 168,248,        168,248,        168,248,        168,248,        
960 168,248,        168,248,        168,248,        168,248,        
961 211,211,        226,286,        227,287,        151,233,        
962 149,231,        152,235,        156,237,        169,249,        
963 169,249,        169,249,        169,249,        169,249,        
964 169,249,        169,249,        169,249,        169,249,        
965 169,249,        193,255,        230,157,        195,257,        
966 194,256,        231,290,        232,291,        211,211,        
967 233,292,        235,293,        236,294,        154,157,        
968 237,157,        238,295,        161,241,        210,271,        
969 239,296,        240,297,        241,298,        242,299,        
970 243,300,        244,301,        245,302,        246,303,        
971 164,244,        166,246,        165,245,        207,270,        
972 207,270,        207,270,        207,270,        207,270,        
973 207,270,        207,270,        207,270,        207,270,        
974 207,270,        250,307,        210,271,        213,273,        
975 213,273,        213,273,        213,273,        213,273,        
976 213,273,        213,273,        213,273,        213,273,        
977 213,273,        251,308,        216,276,        228,288,        
978 234,234,        252,309,        210,272,        210,272,        
979 210,272,        210,272,        210,272,        210,272,        
980 210,272,        210,272,        210,272,        210,272,        
981 253,310,        217,276,        254,311,        255,312,        
982 256,313,        257,314,        276,330,        279,224,        
983 211,214,        216,276,        228,288,        234,234,        
984 258,266,        260,266,        280,332,        218,276,        
985 265,266,        281,333,        282,334,        283,335,        
986 284,224,        285,336,        216,277,        211,215,        
987 217,276,        216,278,        216,278,        216,278,        
988 216,278,        216,278,        216,278,        216,278,        
989 216,278,        216,278,        216,278,        258,266,        
990 260,266,        217,277,        218,276,        265,266,        
991 217,278,        217,278,        217,278,        217,278,        
992 217,278,        217,278,        217,278,        217,278,        
993 217,278,        217,278,        219,276,        218,277,        
994 259,266,        286,337,        218,278,        218,278,        
995 218,278,        218,278,        218,278,        218,278,        
996 218,278,        218,278,        218,278,        218,278,        
997 264,266,        263,266,        287,338,        290,157,        
998 291,342,        292,343,        293,344,        294,345,        
999 296,346,        219,276,        297,347,        259,266,        
1000 221,276,        266,266,        271,271,        298,348,        
1001 274,274,        262,266,        216,279,        299,349,        
1002 301,350,        302,351,        219,277,        264,266,        
1003 263,266,        219,278,        219,278,        219,278,        
1004 219,278,        219,278,        219,278,        219,278,        
1005 219,278,        219,278,        219,278,        221,276,        
1006 266,266,        271,271,        223,276,        274,274,        
1007 262,266,        260,317,        265,320,        218,281,        
1008 258,315,        217,280,        275,275,        303,352,        
1009 221,277,        288,288,        308,353,        221,278,        
1010 221,278,        221,278,        221,278,        221,278,        
1011 221,278,        221,278,        221,278,        221,278,        
1012 221,278,        223,276,        310,354,        312,355,        
1013 224,276,        261,266,        268,266,        267,266,        
1014 313,356,        275,275,        269,266,        314,357,        
1015 288,288,        315,266,        223,277,        229,229,        
1016 316,358,        223,278,        223,278,        223,278,        
1017 223,278,        223,278,        223,278,        223,278,        
1018 223,278,        223,278,        223,278,        224,276,        
1019 261,266,        268,266,        267,266,        219,282,        
1020 264,266,        269,266,        317,359,        318,360,        
1021 259,316,        319,361,        229,229,        320,266,        
1022 224,277,        321,362,        322,363,        224,278,        
1023 224,278,        224,278,        224,278,        224,278,        
1024 224,278,        224,278,        224,278,        224,278,        
1025 224,278,        263,266,        229,289,        229,289,        
1026 229,289,        229,289,        229,289,        229,289,        
1027 229,289,        229,289,        229,289,        229,289,        
1028 221,224,        262,319,        323,364,        328,368,        
1029 223,284,        247,304,        247,304,        247,304,        
1030 247,304,        247,304,        247,304,        247,304,        
1031 247,304,        247,304,        247,304,        248,305,        
1032 248,305,        248,305,        248,305,        248,305,        
1033 248,305,        248,305,        248,305,        248,305,        
1034 248,305,        249,306,        249,306,        249,306,        
1035 249,306,        249,306,        249,306,        249,306,        
1036 249,306,        249,306,        249,306,        267,321,        
1037 329,369,        330,370,        332,224,        333,373,        
1038 334,374,        335,375,        336,376,        337,377,        
1039 268,322,        338,378,        261,318,        341,340,        
1040 342,380,        343,381,        344,234,        273,326,        
1041 325,325,        269,323,        270,324,        270,324,        
1042 270,324,        270,324,        270,324,        270,324,        
1043 270,324,        270,324,        270,324,        270,324,        
1044 272,325,        272,325,        272,325,        272,325,        
1045 272,325,        272,325,        272,325,        272,325,        
1046 272,325,        272,325,        273,326,        325,325,        
1047 345,157,        277,277,        278,331,        278,331,        
1048 278,331,        278,331,        278,331,        278,331,        
1049 278,331,        278,331,        278,331,        278,331,        
1050 324,365,        339,339,        273,327,        273,327,        
1051 273,327,        273,327,        273,327,        273,327,        
1052 273,327,        273,327,        273,327,        273,327,        
1053 277,277,        346,382,        347,157,        289,339,        
1054 348,383,        349,384,        350,385,        352,386,        
1055 353,250,        354,387,        355,388,        324,365,        
1056 339,339,        357,389,        358,266,        359,390,        
1057 277,278,        277,278,        277,278,        277,278,        
1058 277,278,        277,278,        277,278,        277,278,        
1059 277,278,        277,278,        289,339,        324,366,        
1060 324,366,        324,366,        324,366,        324,366,        
1061 324,366,        324,366,        324,366,        324,366,        
1062 324,366,        326,326,        289,340,        273,328,        
1063 327,326,        331,371,        289,341,        289,341,        
1064 289,341,        289,341,        289,341,        289,341,        
1065 289,341,        289,341,        289,341,        289,341,        
1066 340,379,        360,391,        273,329,        361,392,        
1067 362,393,        363,394,        364,395,        367,396,        
1068 326,326,        373,399,        374,400,        327,326,        
1069 331,371,        375,224,        376,401,        365,365,        
1070 377,224,        378,402,        384,404,        386,405,        
1071 389,406,        390,407,        391,408,        340,379,        
1072 392,266,        326,367,        368,368,        369,369,        
1073 331,372,        331,372,        331,372,        331,372,        
1074 331,372,        331,372,        331,372,        331,372,        
1075 331,372,        331,372,        365,365,        366,365,        
1076 366,365,        366,365,        366,365,        366,365,        
1077 366,365,        366,365,        366,365,        366,365,        
1078 366,365,        368,368,        369,369,        370,370,        
1079 371,371,        372,398,        372,398,        372,398,        
1080 372,398,        372,398,        372,398,        372,398,        
1081 372,398,        372,398,        372,398,        379,379,        
1082 393,409,        394,266,        395,410,        396,411,        
1083 396,411,        396,411,        396,411,        397,412,        
1084 398,371,        326,328,        370,370,        371,371,        
1085 327,328,        402,413,        410,415,        0,0,    
1086 0,0,    0,0,    0,0,    0,0,    
1087 0,0,    0,0,    379,379,        0,0,    
1088 326,329,        0,0,    0,0,    327,329,        
1089 0,0,    0,0,    0,0,    398,371,        
1090 0,0,    0,0,    0,0,    0,0,    
1091 0,0,    0,0,    379,403,        379,403,        
1092 379,403,        379,403,        379,403,        379,403,        
1093 379,403,        379,403,        379,403,        379,403,        
1094 403,414,        403,414,        403,414,        403,414,        
1095 403,414,        403,414,        403,414,        403,414,        
1096 403,414,        403,414,        411,416,        411,416,        
1097 411,416,        411,416,        411,416,        411,416,        
1098 411,416,        411,416,        411,416,        411,416,        
1099 412,412,        414,417,        417,417,        0,0,    
1100 0,0,    0,0,    0,0,    0,0,    
1101 371,397,        418,417,        418,417,        418,417,        
1102 418,417,        418,417,        418,417,        418,417,        
1103 418,417,        418,417,        418,417,        0,0,    
1104 0,0,    0,0,    0,0,    412,412,        
1105 414,417,        417,417,        0,0,    0,0,    
1106 0,0,    0,0,    0,0,    0,0,    
1107 0,0,    0,0,    0,0,    0,0,    
1108 0,0,    0,0,    0,0,    0,0,    
1109 414,418,        414,418,        414,418,        414,418,        
1110 414,418,        414,418,        414,418,        414,418,        
1111 414,418,        414,418,        0,0,    0,0,    
1112 0,0};
1113 struct yysvf yysvec[] = {
1114 0,      0,      0,
1115 yycrank+1,      0,              0,      
1116 yycrank+0,      yysvec+1,       0,      
1117 yycrank+27,     0,              0,      
1118 yycrank+0,      yysvec+3,       0,      
1119 yycrank+29,     0,              yyvstop+1,
1120 yycrank+0,      0,              yyvstop+3,
1121 yycrank+47,     0,              0,      
1122 yycrank+141,    0,              0,      
1123 yycrank+28,     yysvec+8,       0,      
1124 yycrank+38,     yysvec+8,       0,      
1125 yycrank+40,     0,              0,      
1126 yycrank+50,     0,              0,      
1127 yycrank+53,     0,              0,      
1128 yycrank+58,     0,              0,      
1129 yycrank+61,     0,              0,      
1130 yycrank+42,     0,              0,      
1131 yycrank+60,     0,              0,      
1132 yycrank+63,     0,              0,      
1133 yycrank+57,     0,              0,      
1134 yycrank+64,     0,              0,      
1135 yycrank+168,    0,              yyvstop+5,
1136 yycrank+48,     0,              0,      
1137 yycrank+136,    0,              0,      
1138 yycrank+114,    0,              yyvstop+7,
1139 yycrank+53,     0,              yyvstop+9,
1140 yycrank+87,     0,              yyvstop+11,
1141 yycrank+0,      yysvec+12,      yyvstop+13,
1142 yycrank+112,    0,              yyvstop+15,
1143 yycrank+0,      yysvec+13,      yyvstop+17,
1144 yycrank+60,     0,              yyvstop+19,
1145 yycrank+113,    0,              yyvstop+21,
1146 yycrank+0,      0,              yyvstop+23,
1147 yycrank+158,    0,              0,      
1148 yycrank+0,      0,              yyvstop+25,
1149 yycrank+163,    0,              yyvstop+27,
1150 yycrank+67,     0,              yyvstop+29,
1151 yycrank+0,      yysvec+17,      yyvstop+31,
1152 yycrank+115,    0,              yyvstop+33,
1153 yycrank+0,      0,              yyvstop+35,
1154 yycrank+0,      yysvec+18,      yyvstop+37,
1155 yycrank+0,      yysvec+19,      yyvstop+39,
1156 yycrank+54,     0,              yyvstop+41,
1157 yycrank+0,      yysvec+20,      yyvstop+43,
1158 yycrank+144,    0,              yyvstop+45,
1159 yycrank+57,     0,              0,      
1160 yycrank+65,     0,              0,      
1161 yycrank+84,     0,              0,      
1162 yycrank+132,    0,              0,      
1163 yycrank+78,     0,              0,      
1164 yycrank+245,    0,              0,      
1165 yycrank+261,    0,              0,      
1166 yycrank+231,    0,              0,      
1167 yycrank+246,    yysvec+8,       0,      
1168 yycrank+271,    0,              0,      
1169 yycrank+91,     0,              0,      
1170 yycrank+82,     0,              0,      
1171 yycrank+103,    0,              0,      
1172 yycrank+172,    0,              0,      
1173 yycrank+108,    0,              0,      
1174 yycrank+95,     0,              0,      
1175 yycrank+108,    0,              0,      
1176 yycrank+108,    0,              0,      
1177 yycrank+281,    yysvec+8,       0,      
1178 yycrank+330,    0,              0,      
1179 yycrank+96,     0,              0,      
1180 yycrank+108,    0,              0,      
1181 yycrank+133,    0,              0,      
1182 yycrank+163,    0,              0,      
1183 yycrank+157,    0,              0,      
1184 yycrank+154,    0,              0,      
1185 yycrank+157,    0,              0,      
1186 yycrank+227,    0,              0,      
1187 yycrank+156,    0,              0,      
1188 yycrank+150,    0,              0,      
1189 yycrank+155,    0,              0,      
1190 yycrank+156,    0,              0,      
1191 yycrank+164,    0,              0,      
1192 yycrank+181,    0,              0,      
1193 yycrank+175,    0,              0,      
1194 yycrank+203,    0,              0,      
1195 yycrank+205,    0,              0,      
1196 yycrank+330,    0,              0,      
1197 yycrank+341,    0,              0,      
1198 yycrank+351,    0,              0,      
1199 yycrank+244,    0,              0,      
1200 yycrank+0,      yysvec+25,      0,      
1201 yycrank+0,      yysvec+26,      0,      
1202 yycrank+0,      yysvec+28,      0,      
1203 yycrank+0,      yysvec+30,      0,      
1204 yycrank+0,      yysvec+31,      0,      
1205 yycrank+249,    0,              0,      
1206 yycrank+250,    0,              0,      
1207 yycrank+191,    0,              0,      
1208 yycrank+0,      yysvec+38,      0,      
1209 yycrank+0,      yysvec+42,      0,      
1210 yycrank+0,      yysvec+44,      0,      
1211 yycrank+191,    0,              0,      
1212 yycrank+192,    0,              0,      
1213 yycrank+224,    0,              0,      
1214 yycrank+227,    0,              0,      
1215 yycrank+230,    0,              0,      
1216 yycrank+236,    0,              0,      
1217 yycrank+237,    0,              0,      
1218 yycrank+241,    0,              0,      
1219 yycrank+250,    0,              0,      
1220 yycrank+252,    0,              0,      
1221 yycrank+253,    0,              0,      
1222 yycrank+257,    0,              0,      
1223 yycrank+258,    0,              0,      
1224 yycrank+293,    0,              0,      
1225 yycrank+294,    0,              0,      
1226 yycrank+295,    0,              0,      
1227 yycrank+296,    0,              0,      
1228 yycrank+0,      0,              yyvstop+47,
1229 yycrank+297,    0,              0,      
1230 yycrank+298,    0,              0,      
1231 yycrank+310,    0,              0,      
1232 yycrank+306,    0,              0,      
1233 yycrank+301,    0,              0,      
1234 yycrank+308,    0,              0,      
1235 yycrank+302,    0,              0,      
1236 yycrank+319,    0,              0,      
1237 yycrank+321,    0,              0,      
1238 yycrank+414,    0,              0,      
1239 yycrank+312,    0,              0,      
1240 yycrank+321,    0,              0,      
1241 yycrank+324,    0,              0,      
1242 yycrank+331,    0,              0,      
1243 yycrank+329,    0,              0,      
1244 yycrank+320,    0,              0,      
1245 yycrank+334,    0,              0,      
1246 yycrank+333,    0,              0,      
1247 yycrank+426,    0,              yyvstop+49,
1248 yycrank+438,    0,              yyvstop+51,
1249 yycrank+411,    0,              0,      
1250 yycrank+487,    0,              yyvstop+53,
1251 yycrank+323,    0,              0,      
1252 yycrank+335,    0,              0,      
1253 yycrank+343,    0,              0,      
1254 yycrank+345,    0,              0,      
1255 yycrank+334,    0,              0,      
1256 yycrank+341,    0,              0,      
1257 yycrank+336,    0,              0,      
1258 yycrank+334,    0,              0,      
1259 yycrank+337,    0,              0,      
1260 yycrank+342,    0,              0,      
1261 yycrank+449,    0,              0,      
1262 yycrank+475,    0,              0,      
1263 yycrank+499,    0,              0,      
1264 yycrank+500,    0,              0,      
1265 yycrank+501,    0,              0,      
1266 yycrank+517,    0,              yyvstop+55,
1267 yycrank+338,    yysvec+149,     0,      
1268 yycrank+518,    0,              0,      
1269 yycrank+355,    yysvec+150,     0,      
1270 yycrank+519,    0,              0,      
1271 yycrank+521,    0,              0,      
1272 yycrank+369,    yysvec+152,     yyvstop+57,
1273 yycrank+371,    yysvec+150,     0,      
1274 yycrank+362,    yysvec+157,     0,      
1275 yycrank+525,    0,              yyvstop+59,
1276 yycrank+396,    yysvec+157,     0,      
1277 yycrank+413,    yysvec+152,     yyvstop+61,
1278 yycrank+538,    0,              yyvstop+63,
1279 yycrank+539,    0,              yyvstop+65,
1280 yycrank+543,    0,              yyvstop+67,
1281 yycrank+540,    0,              0,      
1282 yycrank+554,    0,              0,      
1283 yycrank+571,    0,              0,      
1284 yycrank+0,      0,              yyvstop+69,
1285 yycrank+0,      0,              yyvstop+71,
1286 yycrank+0,      0,              yyvstop+73,
1287 yycrank+0,      0,              yyvstop+75,
1288 yycrank+0,      0,              yyvstop+77,
1289 yycrank+0,      0,              yyvstop+79,
1290 yycrank+0,      0,              yyvstop+81,
1291 yycrank+0,      0,              yyvstop+83,
1292 yycrank+0,      0,              yyvstop+85,
1293 yycrank+0,      0,              yyvstop+87,
1294 yycrank+0,      0,              yyvstop+89,
1295 yycrank+0,      0,              yyvstop+91,
1296 yycrank+0,      0,              yyvstop+93,
1297 yycrank+0,      0,              yyvstop+95,
1298 yycrank+0,      0,              yyvstop+97,
1299 yycrank+0,      0,              yyvstop+99,
1300 yycrank+0,      0,              yyvstop+101,
1301 yycrank+0,      0,              yyvstop+103,
1302 yycrank+0,      0,              yyvstop+105,
1303 yycrank+474,    0,              0,      
1304 yycrank+417,    yysvec+189,     0,      
1305 yycrank+481,    0,              0,      
1306 yycrank+418,    yysvec+189,     0,      
1307 yycrank+515,    0,              0,      
1308 yycrank+517,    0,              0,      
1309 yycrank+521,    0,              0,      
1310 yycrank+407,    0,              0,      
1311 yycrank+443,    0,              0,      
1312 yycrank+455,    0,              0,      
1313 yycrank+457,    0,              0,      
1314 yycrank+449,    0,              0,      
1315 yycrank+455,    0,              0,      
1316 yycrank+446,    0,              0,      
1317 yycrank+446,    0,              0,      
1318 yycrank+450,    0,              0,      
1319 yycrank+456,    0,              0,      
1320 yycrank+568,    0,              yyvstop+107,
1321 yycrank+607,    0,              0,      
1322 yycrank+527,    yysvec+206,     yyvstop+109,
1323 yycrank+526,    yysvec+206,     yyvstop+111,
1324 yycrank+634,    0,              yyvstop+113,
1325 yycrank+603,    0,              yyvstop+115,
1326 yycrank+518,    yysvec+211,     yyvstop+117,
1327 yycrank+619,    0,              0,      
1328 yycrank+469,    0,              0,      
1329 yycrank+470,    0,              0,      
1330 yycrank+669,    0,              yyvstop+119,
1331 yycrank+684,    0,              yyvstop+121,
1332 yycrank+698,    0,              yyvstop+123,
1333 yycrank+733,    0,              yyvstop+125,
1334 yycrank+464,    yysvec+217,     yyvstop+127,
1335 yycrank+759,    0,              yyvstop+129,
1336 yycrank+484,    yysvec+218,     yyvstop+131,
1337 yycrank+785,    0,              yyvstop+133,
1338 yycrank+811,    0,              yyvstop+135,
1339 yycrank+485,    yysvec+218,     yyvstop+137,
1340 yycrank+502,    yysvec+224,     yyvstop+139,
1341 yycrank+498,    yysvec+224,     yyvstop+141,
1342 yycrank+670,    yysvec+210,     yyvstop+143,
1343 yycrank+822,    0,              0,      
1344 yycrank+522,    0,              0,      
1345 yycrank+518,    0,              0,      
1346 yycrank+525,    0,              0,      
1347 yycrank+519,    0,              0,      
1348 yycrank+671,    0,              yyvstop+146,
1349 yycrank+540,    0,              0,      
1350 yycrank+541,    0,              0,      
1351 yycrank+536,    0,              0,      
1352 yycrank+544,    0,              0,      
1353 yycrank+535,    0,              0,      
1354 yycrank+547,    0,              0,      
1355 yycrank+532,    0,              0,      
1356 yycrank+546,    0,              0,      
1357 yycrank+551,    0,              0,      
1358 yycrank+534,    0,              0,      
1359 yycrank+550,    0,              0,      
1360 yycrank+550,    0,              0,      
1361 yycrank+837,    0,              0,      
1362 yycrank+847,    0,              0,      
1363 yycrank+857,    0,              0,      
1364 yycrank+621,    0,              yyvstop+148,
1365 yycrank+580,    0,              0,      
1366 yycrank+584,    0,              0,      
1367 yycrank+578,    0,              0,      
1368 yycrank+597,    0,              0,      
1369 yycrank+580,    0,              0,      
1370 yycrank+596,    0,              0,      
1371 yycrank+596,    0,              0,      
1372 yycrank+695,    yysvec+216,     0,      
1373 yycrank+735,    yysvec+217,     0,      
1374 yycrank+696,    yysvec+218,     0,      
1375 yycrank+812,    yysvec+219,     0,      
1376 yycrank+764,    yysvec+217,     0,      
1377 yycrank+748,    yysvec+221,     0,      
1378 yycrank+747,    yysvec+218,     0,      
1379 yycrank+699,    yysvec+223,     0,      
1380 yycrank+760,    yysvec+224,     0,      
1381 yycrank+814,    yysvec+218,     0,      
1382 yycrank+813,    yysvec+224,     0,      
1383 yycrank+817,    yysvec+224,     0,      
1384 yycrank+886,    0,              0,      
1385 yycrank+761,    0,              yyvstop+150,
1386 yycrank+896,    0,              0,      
1387 yycrank+922,    0,              yyvstop+152,
1388 yycrank+763,    0,              yyvstop+154,
1389 yycrank+793,    0,              yyvstop+156,
1390 yycrank+601,    yysvec+224,     yyvstop+158,
1391 yycrank+948,    0,              0,      
1392 yycrank+910,    0,              0,      
1393 yycrank+591,    0,              0,      
1394 yycrank+591,    0,              0,      
1395 yycrank+600,    0,              0,      
1396 yycrank+593,    0,              0,      
1397 yycrank+614,    0,              0,      
1398 yycrank+608,    0,              0,      
1399 yycrank+604,    0,              0,      
1400 yycrank+647,    0,              0,      
1401 yycrank+657,    0,              0,      
1402 yycrank+796,    0,              yyvstop+160,
1403 yycrank+974,    0,              yyvstop+163,
1404 yycrank+643,    0,              0,      
1405 yycrank+662,    0,              0,      
1406 yycrank+664,    0,              0,      
1407 yycrank+641,    0,              0,      
1408 yycrank+649,    0,              0,      
1409 yycrank+0,      yysvec+293,     0,      
1410 yycrank+666,    0,              0,      
1411 yycrank+665,    0,              0,      
1412 yycrank+671,    0,              0,      
1413 yycrank+666,    0,              0,      
1414 yycrank+0,      yysvec+293,     0,      
1415 yycrank+676,    0,              0,      
1416 yycrank+680,    0,              0,      
1417 yycrank+688,    0,              0,      
1418 yycrank+0,      0,              yyvstop+165,
1419 yycrank+0,      0,              yyvstop+167,
1420 yycrank+0,      0,              yyvstop+169,
1421 yycrank+0,      0,              yyvstop+171,
1422 yycrank+685,    0,              0,      
1423 yycrank+0,      yysvec+308,     0,      
1424 yycrank+718,    0,              0,      
1425 yycrank+0,      yysvec+308,     0,      
1426 yycrank+719,    0,              0,      
1427 yycrank+727,    0,              0,      
1428 yycrank+712,    0,              0,      
1429 yycrank+721,    0,              0,      
1430 yycrank+717,    0,              0,      
1431 yycrank+741,    0,              0,      
1432 yycrank+734,    0,              0,      
1433 yycrank+756,    0,              0,      
1434 yycrank+751,    0,              0,      
1435 yycrank+748,    0,              0,      
1436 yycrank+760,    0,              0,      
1437 yycrank+781,    0,              0,      
1438 yycrank+959,    0,              yyvstop+173,
1439 yycrank+923,    0,              yyvstop+175,
1440 yycrank+1008,   0,              yyvstop+177,
1441 yycrank+1011,   0,              yyvstop+179,
1442 yycrank+774,    0,              0,      
1443 yycrank+807,    0,              0,      
1444 yycrank+801,    0,              0,      
1445 yycrank+1012,   0,              yyvstop+181,
1446 yycrank+802,    0,              0,      
1447 yycrank+821,    0,              0,      
1448 yycrank+823,    0,              0,      
1449 yycrank+807,    0,              0,      
1450 yycrank+824,    0,              0,      
1451 yycrank+822,    0,              0,      
1452 yycrank+816,    0,              0,      
1453 yycrank+960,    0,              yyvstop+183,
1454 yycrank+1023,   0,              0,      
1455 yycrank+883,    yysvec+339,     yyvstop+185,
1456 yycrank+827,    0,              0,      
1457 yycrank+815,    0,              0,      
1458 yycrank+886,    yysvec+234,     yyvstop+187,
1459 yycrank+835,    0,              0,      
1460 yycrank+880,    0,              0,      
1461 yycrank+868,    0,              0,      
1462 yycrank+887,    0,              0,      
1463 yycrank+887,    0,              0,      
1464 yycrank+889,    0,              0,      
1465 yycrank+0,      yysvec+293,     0,      
1466 yycrank+887,    0,              0,      
1467 yycrank+947,    0,              0,      
1468 yycrank+892,    0,              0,      
1469 yycrank+893,    0,              0,      
1470 yycrank+0,      yysvec+308,     0,      
1471 yycrank+893,    0,              0,      
1472 yycrank+878,    0,              0,      
1473 yycrank+897,    0,              0,      
1474 yycrank+936,    0,              0,      
1475 yycrank+921,    0,              0,      
1476 yycrank+938,    0,              0,      
1477 yycrank+936,    0,              0,      
1478 yycrank+929,    0,              0,      
1479 yycrank+1038,   0,              yyvstop+189,
1480 yycrank+1023,   yysvec+324,     yyvstop+191,
1481 yycrank+982,    0,              0,      
1482 yycrank+1049,   0,              yyvstop+193,
1483 yycrank+1050,   0,              yyvstop+195,
1484 yycrank+1074,   0,              yyvstop+197,
1485 yycrank+1075,   0,              yyvstop+199,
1486 yycrank+1037,   yysvec+331,     yyvstop+201,
1487 yycrank+940,    0,              0,      
1488 yycrank+928,    0,              0,      
1489 yycrank+924,    0,              0,      
1490 yycrank+945,    0,              0,      
1491 yycrank+934,    0,              0,      
1492 yycrank+951,    0,              0,      
1493 yycrank+1086,   0,              0,      
1494 yycrank+0,      yysvec+347,     0,      
1495 yycrank+0,      yysvec+345,     0,      
1496 yycrank+0,      yysvec+347,     0,      
1497 yycrank+0,      yysvec+293,     0,      
1498 yycrank+949,    0,              0,      
1499 yycrank+0,      yysvec+293,     0,      
1500 yycrank+954,    0,              0,      
1501 yycrank+0,      yysvec+308,     0,      
1502 yycrank+0,      yysvec+308,     0,      
1503 yycrank+955,    0,              0,      
1504 yycrank+952,    0,              0,      
1505 yycrank+940,    0,              0,      
1506 yycrank+935,    0,              0,      
1507 yycrank+995,    0,              0,      
1508 yycrank+983,    0,              0,      
1509 yycrank+1000,   0,              0,      
1510 yycrank+1045,   0,              0,      
1511 yycrank+987,    0,              0,      
1512 yycrank+1095,   0,              yyvstop+203,
1513 yycrank+0,      yysvec+377,     0,      
1514 yycrank+0,      yysvec+375,     0,      
1515 yycrank+0,      yysvec+377,     0,      
1516 yycrank+1008,   0,              0,      
1517 yycrank+1096,   0,              0,      
1518 yycrank+0,      yysvec+347,     0,      
1519 yycrank+0,      yysvec+293,     0,      
1520 yycrank+0,      yysvec+308,     0,      
1521 yycrank+0,      yysvec+394,     0,      
1522 yycrank+0,      yysvec+392,     0,      
1523 yycrank+0,      yysvec+394,     0,      
1524 yycrank+1009,   0,              0,      
1525 yycrank+1106,   0,              0,      
1526 yycrank+1155,   0,              yyvstop+205,
1527 yycrank+0,      yysvec+377,     0,      
1528 yycrank+1156,   0,              yyvstop+207,
1529 yycrank+0,      yysvec+394,     0,      
1530 yycrank+0,      0,              yyvstop+209,
1531 yycrank+1157,   0,              yyvstop+211,
1532 yycrank+1125,   yysvec+414,     yyvstop+213,
1533 0,      0,      0};
1534 struct yywork *yytop = yycrank+1213;
1535 struct yysvf *yybgin = yysvec+1;
1536 char yymatch[] = {
1537 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1538 01  ,011 ,01  ,01  ,01  ,01  ,01  ,01  ,
1539 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1540 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1541 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1542 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1543 '0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'6' ,'6' ,
1544 '6' ,'6' ,01  ,01  ,01  ,01  ,01  ,01  ,
1545 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1546 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1547 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1548 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1549 01  ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
1550 'a' ,'a' ,01  ,'k' ,'k' ,'k' ,'n' ,'n' ,
1551 'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,
1552 'n' ,'n' ,01  ,01  ,01  ,01  ,01  ,01  ,
1553 0};
1554 char yyextra[] = {
1555 0,0,0,0,0,0,0,0,
1556 0,0,0,0,0,0,0,0,
1557 0,0,0,0,0,0,0,0,
1558 0,0,0,0,0,0,0,0,
1559 0,0,0,0,0,0,0,0,
1560 0,0,0,0,0,0,0,0,
1561 0};
1562 #ifndef lint
1563 static  char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
1564 #endif
1565