VTK
vtkVRMLImporter_Yacc.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVRMLInternal_Yacc.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
20 #ifndef vtkVRMLImporter_Yacc_h
21 #define vtkVRMLImporter_Yacc_h
22 
23 
24 #include "vtkFloatArray.h"
25 #include "vtkIdTypeArray.h"
26 #include "vtkPoints.h"
27 #include "vtkVRML.h"
28 #include "vtkVRMLImporter.h"
29 
30 #include <cassert>
31 #include <cstdio>
32 #include <cstring>
33 
34 //
35 // The VrmlNodeType class is responsible for storing information about node
36 // or prototype types.
37 //
38 
39 // used to hold the VRML DEF names and assoc vtkObjects
41 public:
42  vtkVRMLUseStruct( char *n, vtkObject *o) { defName = n; defObject = o; }
43  char *defName;
45 
46  void* operator new(size_t n)
47  {
48  return vtkVRMLAllocator::AllocateMemory(n);
49  }
50 
51  void operator delete(void *vtkNotUsed(ptr)) {}
52 };
53 
54 
55 
56 class VrmlNodeType {
57 public:
58  // Constructor. Takes name of new type (e.g. "Transform" or "Box")
59  // Copies the string given as name.
60  VrmlNodeType(const char *nm);
61 
62  // Destructor exists mainly to deallocate storage for name
63  ~VrmlNodeType();
64 
65  // Routines for adding/getting eventIns/Outs/fields
66  void addEventIn(const char *name, int type);
67  void addEventOut(const char *name, int type);
68  void addField(const char *name, int type);
69  void addExposedField(const char *name, int type);
70 
71  int hasEventIn(const char *name) const;
72  int hasEventOut(const char *name) const;
73  int hasField(const char *name) const;
74  int hasExposedField(const char *name) const;
75 
76  const char *getName() const { return name; }
77 
78  void* operator new(size_t n)
79  {
80  return vtkVRMLAllocator::AllocateMemory(n);
81  }
82 
83  void operator delete(void *vtkNotUsed(ptr)) {}
84 
85  struct NameTypeRec {
86  char *name;
87  int type;
88 
89  void* operator new(size_t n)
90  {
91  return vtkVRMLAllocator::AllocateMemory(n);
92  }
93 
94  void operator delete(void *vtkNotUsed(ptr)) {}
95 
96  };
97 
98  // This is used to keep track of which field in which type of node is being
99  // parsed. Field are nested (nodes are contained inside MFNode/SFNode fields)
100  // so a stack of these is needed:
101  struct FieldRec
102  {
104  const char *fieldName;
105  };
106 
107 private:
108  void add(vtkVRMLVectorType<NameTypeRec*> &,const char *,int);
109  int has(const vtkVRMLVectorType<NameTypeRec*> &,const char *) const;
110 
111  char *name;
112 
113  vtkVRMLVectorType<NameTypeRec*> eventIns;
114  vtkVRMLVectorType<NameTypeRec*> eventOuts;
115  vtkVRMLVectorType<NameTypeRec*> fields;
116 };
117 
119 {
120 public:
121  vtkVRMLYaccData();
122  ~vtkVRMLYaccData();
123  typedef unsigned char YY_CHAR;
124  typedef int yy_state_type;
125 private:
126  vtkVRMLYaccData(const vtkVRMLYaccData&) = delete;
127  vtkVRMLYaccData& operator=(const vtkVRMLYaccData&) = delete;
128 public:
129  // Parser variables and functions:
130  // Currently-being-define proto. Prototypes may be nested, so a stack
131  // is needed:
132  vtkVRMLVectorType<VrmlNodeType*> *CurrentProtoStack;// = nullptr;
133 
134  // Some helper routines defined below:
135  void beginProto(const char *);
136  void endProto();
137 
138  int addField(const char *type, const char *name);
139  int addEventIn(const char *type, const char *name);
140  int addEventOut(const char *type, const char *name);
141  int addExposedField(const char *type, const char *name);
142  int add(void (VrmlNodeType::*)(const char *, int), const char *,
143  const char *);
144  int fieldType(const char *type);
145  void inScript();
146  void expect(int type);
147 
148  void yyerror(const char *);
149  int yylex(vtkVRMLImporter* self);
150 
151  class FakeAlloca;
152 
153  typedef union {
154  char *string;
155 
156  /* Other types that will be needed by a true VRML implementation
157  * (but are not defined by this parser due to the complexity):
158  * Node *node;
159  * list<Node *> *nodeList;
160  */
161 
162  float sffloat;
166  int sfint;
167  } YYSTYPE;
168 
169 
170  typedef
171  struct yyltype
172  {
178  char *text;
179  }
180  yyltype;
181 
182 
183  int yychar; /* the lookahead symbol */
184  YYSTYPE yylval; /* the semantic value of the */
185  /* lookahead symbol */
186  yyltype yylloc; /* location data for the lookahead */
187  /* symbol */
188  int yynerrs; /* number of parse errors so far */
189  // Lexer variables and functions:
190  int yyleng;
191  FILE *yyin, *yyout;
192  int yywrap(void );
193 
195  {
197 
198  char *yy_ch_buf; /* input buffer */
199  char *yy_buf_pos; /* current position in input buffer */
200 
201  /* Size of input buffer in bytes, not including room for EOB
202  * characters.
203  */
205 
206  /* Number of characters read into yy_ch_buf, not including EOB
207  * characters.
208  */
210 
211  /* Whether this is an "interactive" input source; if so, and
212  * if we're using stdio for input, then we want to use getc()
213  * instead of fread(), to make sure we stop fetching input after
214  * each newline.
215  */
217 
218  /* Whether to try to fill the input buffer when we reach the
219  * end of it.
220  */
222 
224  YY_BUFFER_NEW=0,
225  YY_BUFFER_NORMAL=1,
226  /* When an EOF's been seen but there's still some text to process
227  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
228  * shouldn't try reading from the input source any more. We might
229  * still have a bunch of tokens to match, though, because of
230  * possible backing-up.
231  *
232  * When we actually see the EOF, we change the status to "new"
233  * (via yyrestart()), so that the user can continue scanning by
234  * just pointing yyin at a new input file.
235  */
236  YY_BUFFER_EOF_PENDING=2
237  };
239 
240  };
242 
243  YY_BUFFER_STATE yy_current_buffer;// = 0;
244 
245  /* yy_hold_char holds the character lost when yytext is formed. */
247 
248  int yy_n_chars; /* number of characters read into yy_ch_buf */
249 
250 
251  /* Points to current character in buffer. */
252  char *yy_c_buf_p;// = (char *) 0;
253  int yy_init;// = 1; /* whether we need to initialize */
254  int yy_start;// = 0; /* start state number */
255 
256  /* Flag which is used to allow yywrap()'s to do buffer switches
257  * instead of setting up a fresh yyin. A bit of a hack ...
258  */
260 
261  void yyrestart ( FILE *input_file );
262  void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
263  void yy_load_buffer_state ( void );
264  YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
265  void yy_delete_buffer ( YY_BUFFER_STATE b );
266  void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
267 
268  void *yy_flex_alloc ( unsigned int );
269  void *yy_flex_realloc ( void *, unsigned int );
270  void yy_flex_free ( void * );
271 
272  char *yytext;
273 
274  yy_state_type yy_get_previous_state ( void );
275  yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
276  int yy_get_next_buffer ( void );
277  void yy_fatal_error ( const char msg[] );
278 
279  yy_state_type yy_last_accepting_state;
281 
282  int yy_flex_debug;// = 1;
283 
284  // used to reset the lexer input after initialization of VRML nodes
285  void (*theyyInput)(char *, int &, int, vtkVRMLYaccData*);
286 
287 
288  /* Current line number */
289  int currentLineNumber;// = 1;
290  void yyResetLineNumber() { currentLineNumber = 1; }
291 
292  /* The YACC parser sets this to a token to direct the lexer */
293  /* in cases where just syntax isn't enough: */
294  int expectToken;// = 0;
295 
296  /* True when parsing a multiple-valued field: */
297  int parsing_mf;// = 0;
298 
299  /* These are used when parsing SFImage fields: */
300  int sfImageIntsParsed;// = 0;
302 
303  int yydebug; /* nonzero means print parse trace */
304  int yyparse(vtkVRMLImporter* self);
305 
306  static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self);
307  static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self);
308 
309  int memyyInput_i;// = 0;
310  int memyyInput_j;// = 0;
311 
312  // Used during the parsing
313  int creatingDEF;// = 0;
314  char *curDEFName;
315 
316  // Node types are stored in this data structure:
317  vtkVRMLVectorType<VrmlNodeType*>* typeList;
318  vtkVRMLVectorType<vtkVRMLUseStruct *>* useList;
319  vtkVRMLVectorType<VrmlNodeType::FieldRec*>* currentField;
320 
321  // Moved from VrmlNodeType when getting rid of static data
322  //
323  // Namespace management functions. PROTO definitions add node types
324  // to the namespace. PROTO implementations are a separate node
325  // namespace, and require that any nested PROTOs NOT be available
326  // outside the PROTO implementation.
327  // addToNameSpace will print an error to stderr if the given type
328  // is already defined.
329  void addToNameSpace(VrmlNodeType *);
330  void pushNameSpace();
331  void popNameSpace();
332 
333  // Find a node type, given its name. Returns nullptr if type is not defined.
334  const VrmlNodeType *find(const char *nm);
335 
336 };
337 
338 //------------------------------------------------------------------------------------
339 //
340 // Implementation of the above begins here
341 //
342 
344 {
345  assert(nm != nullptr);
346  name = static_cast<char*>(
347  vtkVRMLAllocator::AllocateMemory((strlen(nm)+1)*sizeof(char)));
348  strcpy(name, nm);
349 }
350 
352 {
353  // Free strings duplicated when fields/eventIns/eventOuts added:
354 
355  int i;
356  for (i = 0;i < eventIns.Count(); i++)
357  {
358  NameTypeRec *r = eventIns[i];
359 // free(r->name);
360  delete r;
361  }
362  for (i = 0;i < eventOuts.Count(); i++)
363  {
364  NameTypeRec *r = eventOuts[i];
365 // free(r->name);
366  delete r;
367  }
368  for (i = 0;i < fields.Count(); i++)
369  {
370  NameTypeRec *r = fields[i];
371 // free(r->name);
372  delete r;
373  }
374 }
375 void
376 VrmlNodeType::addEventIn(const char *nodeName, int type)
377 {
378  add(eventIns, nodeName, type);
379 };
380 void
381 VrmlNodeType::addEventOut(const char *nodeName, int type)
382 {
383  add(eventOuts, nodeName, type);
384 };
385 void
386 VrmlNodeType::addField(const char *nodeName, int type)
387 {
388  add(fields, nodeName, type);
389 };
390 void
391 VrmlNodeType::addExposedField(const char *nodeName, int type)
392 {
393  size_t length = 20 + strlen(nodeName);
394  std::vector<char> tmp(length);
395  add(fields, nodeName, type);
396  snprintf(&tmp[0], length, "set_%s", nodeName);
397  add(eventIns, &tmp[0], type);
398  snprintf(&tmp[0], length, "%s_changed", nodeName);
399  add(eventOuts, &tmp[0], type);
400 };
401 
402 void
403 VrmlNodeType::add(vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName, int type)
404 {
405  NameTypeRec *r = new NameTypeRec;
406  r->name = vtkVRMLAllocator::StrDup(nodeName); //strdup(nodeName);
407  r->type = type;
408  recs += r;
409 }
410 
411 int
412 VrmlNodeType::hasEventIn(const char *nodeName) const
413 {
414  return has(eventIns, nodeName);
415 }
416 int
417 VrmlNodeType::hasEventOut(const char *nodeName) const
418 {
419  return has(eventOuts, nodeName);
420 }
421 int
422 VrmlNodeType::hasField(const char *nodeName) const
423 {
424  return has(fields, nodeName);
425 }
426 int
427 VrmlNodeType::hasExposedField(const char *nodeName) const
428 {
429  // Must have field "name", eventIn "set_name", and eventOut
430  // "name_changed", all with same type:
431  int type;
432  if ( (type = has(fields, nodeName)) == 0) return 0;
433 
434  if (type != has(eventIns, nodeName)) return 0;
435 
436  if (type != has(eventOuts, nodeName)) return 0;
437 
438  return type;
439 }
440 int
441 VrmlNodeType::has(const vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName) const
442 {
443  for (int i = 0;i < recs.Count(); i++)
444  {
445  NameTypeRec *n = recs.Get(i);
446  if (strcmp(n->name, nodeName) == 0)
447  return n->type;
448  }
449  return 0;
450 }
451 
452 
453 
454 
455 //----------------------------------------------------------------------------
457 {
458  yy_current_buffer = nullptr;
459  yy_c_buf_p = nullptr;
460  yy_init = 1;
461  yy_start = 0;
462  yy_flex_debug = 1;
463  yyin = nullptr;
464  yyout = nullptr;
465  currentLineNumber = 1;
466  expectToken = 0;
467  parsing_mf = 0;
468  sfImageIntsExpected = 0;
469  sfImageIntsParsed = 0;
470  memyyInput_i = 0;
471  memyyInput_j = 0;
472  creatingDEF = 0;
473  theyyInput = nullptr;
474 
475  typeList = nullptr;
476  useList = nullptr;
477  currentField = nullptr;
478 }
479 
480 //----------------------------------------------------------------------------
482 {
483  if (yy_current_buffer)
484  {
485  yy_delete_buffer(yy_current_buffer);
486  yy_current_buffer = nullptr;
487  }
488 }
489 
490 
492 {
493  if (find(_type->getName()) != nullptr)
494  {
495  cerr << "PROTO " << _type->getName() << " already defined\n";
496  return;
497  }
498  *typeList += _type;
499 }
500 
501 //
502 // One list is used to store all the node types. Nested namespaces are
503 // separated by nullptr elements.
504 // This isn't terribly efficient, but it is nice and simple.
505 //
507 {
508  *typeList += (VrmlNodeType *) nullptr;
509 }
510 
512 {
513  // Remove everything up to and including the next nullptr marker:
514  for (int i = 0;i < typeList->Count(); i++)
515  {
516  VrmlNodeType *nodeType = typeList->Pop();
517 
518  if (nodeType == nullptr)
519  {
520  break;
521  }
522  else
523  {
524  // NOTE: Instead of just deleting the VrmlNodeTypes, you will
525  // probably want to reference count or garbage collect them, since
526  // any nodes created as part of the PROTO implementation will
527  // probably point back to their VrmlNodeType structure.
528  delete nodeType;
529  }
530  }
531 }
532 
533 const VrmlNodeType* vtkVRMLYaccData::find(const char *_name)
534 {
535  // Look through the type stack:
536  for (int i = 0;i < typeList->Count(); i++)
537  {
538  const VrmlNodeType *nt = (*typeList)[i];
539  if (nt != nullptr && strcmp(nt->getName(),_name) == 0)
540  {
541  return nt;
542  }
543  }
544  return nullptr;
545 }
546 
547 
548 // Begin of Auto-generated Parser Code
549 
550 
551 /* A Bison parser, made from parser.y with Bison version GNU Bison version 1.24
552  */
553 
554 #define YYBISON 1 /* Identify Bison output. */
555 
556 #define IDENTIFIER 258
557 #define DEF 259
558 #define USE 260
559 #define PROTO 261
560 #define EXTERNPROTO 262
561 #define TO 263
562 #define IS 264
563 #define ROUTE 265
564 #define SFN_NULL 266
565 #define EVENTIN 267
566 #define EVENTOUT 268
567 #define FIELD 269
568 #define EXPOSEDFIELD 270
569 #define SFBOOL 271
570 #define SFCOLOR 272
571 #define SFFLOAT 273
572 #define SFIMAGE 274
573 #define SFINT32 275
574 #define SFNODE 276
575 #define SFROTATION 277
576 #define SFSTRING 278
577 #define SFTIME 279
578 #define SFVEC2F 280
579 #define SFVEC3F 281
580 #define MFCOLOR 282
581 #define MFFLOAT 283
582 #define MFINT32 284
583 #define MFROTATION 285
584 #define MFSTRING 286
585 #define MFVEC2F 287
586 #define MFVEC3F 288
587 #define MFNODE 289
588 
589 
590 
591 //
592 // Parser for VRML 2.0 files.
593 // This is a minimal parser that does NOT generate an in-memory scene graph.
594 //
595 
596 // The original parser was developed on a Windows 95 PC with
597 // Borland's C++ 5.0 development tools. This was then ported
598 // to a Windows 95 PC with Microsoft's MSDEV C++ 4.0 development
599 // tools. The port introduced the ifdef's for
600 // USING_BORLAND_CPP_5 : since this provides a "std namespace",
601 // TWO_ARGUMENTS_FOR_STL_STACK : STL is a moving target. The stack template
602 // class takes either one or two arguments.
603 
604 
605 #define YYDEBUG 1
606 
607 #include <stdlib.h>
608 
609 
610 
611 
612 // This is used when the parser knows what kind of token it expects
613 // to get next-- used when parsing field values (whose types are declared
614 // and read by the parser) and at certain other places:
615 //extern int expectToken;
616 
617 // Current line number (set by lexer)
618 //extern int currentLineNumber;
619 
620 // Some helper routines defined below:
621 //static void beginProto(const char *);
622 //static void endProto();
623 
624 //static int addField(const char *type, const char *name);
625 //static int addEventIn(const char *type, const char *name);
626 //static int addEventOut(const char *type, const char *name);
627 //static int addExposedField(const char *type, const char *name);
628 //static int add(void (VrmlNodeType::*)(const char *, int), const char *,
629 // const char *);
630 //static int fieldType(const char *type);
631 //static void inScript();
632 //static void expect(int type);
633 
634 //void yyerror(const char *);
635 //int yylex(vtkVRMLImporter* self);
636 
637 
638 
639 #ifndef YYLTYPE
640 
641 #define YYLTYPE yyltype
642 #endif
643 
644 #define YYFINAL 128
645 #define YYFLAG -32768
646 #define YYNTBASE 40
647 
648 #define YYTRANSLATE(x) ((unsigned)(x) <= 289 ? yytranslate[x] : 68)
649 
650 static const char yytranslate[] = { 0,
651  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
652  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
653  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
654  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
655  2, 2, 2, 2, 2, 39, 2, 2, 2, 2,
656  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
657  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
658  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
659  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
660  35, 2, 36, 2, 2, 2, 2, 2, 2, 2,
661  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
662  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
663  2, 2, 37, 2, 38, 2, 2, 2, 2, 2,
664  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
665  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
666  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
667  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
668  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
669  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
670  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
671  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
672  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
673  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
674  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
675  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
676  2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
677  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
678  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
679  26, 27, 28, 29, 30, 31, 32, 33, 34
680 };
681 
682 #if YYDEBUG != 0
683 static const short yyprhs[] = { 0,
684  0, 2, 3, 6, 8, 10, 12, 14, 15, 16,
685  22, 25, 27, 29, 30, 40, 41, 42, 51, 52,
686  55, 59, 63, 64, 70, 71, 77, 78, 81, 85,
687  89, 93, 97, 106, 107, 113, 114, 117, 118, 122,
688  124, 126, 130, 134, 135, 141, 147, 153, 155, 157,
689  159, 161, 163, 165, 167, 169, 171, 173, 175, 177,
690  179, 181, 183, 185, 187, 190, 193, 196, 199, 203,
691  205, 206
692 };
693 
694 static const short yyrhs[] = { 41,
695  0, 0, 41, 42, 0, 43, 0, 46, 0, 58,
696  0, 59, 0, 0, 0, 4, 44, 3, 45, 59,
697  0, 5, 3, 0, 47, 0, 49, 0, 0, 6,
698  3, 48, 35, 52, 36, 37, 41, 38, 0, 0,
699  0, 7, 3, 50, 35, 56, 36, 51, 65, 0,
700  0, 52, 53, 0, 12, 3, 3, 0, 13, 3,
701  3, 0, 0, 14, 3, 3, 54, 65, 0, 0,
702  15, 3, 3, 55, 65, 0, 0, 56, 57, 0,
703  12, 3, 3, 0, 13, 3, 3, 0, 14, 3,
704  3, 0, 15, 3, 3, 0, 10, 3, 39, 3,
705  8, 3, 39, 3, 0, 0, 3, 60, 37, 61,
706  38, 0, 0, 61, 62, 0, 0, 3, 63, 65,
707  0, 58, 0, 46, 0, 12, 3, 3, 0, 13,
708  3, 3, 0, 0, 14, 3, 3, 64, 65, 0,
709  12, 3, 3, 9, 3, 0, 13, 3, 3, 9,
710  3, 0, 16, 0, 17, 0, 27, 0, 18, 0,
711  28, 0, 19, 0, 20, 0, 29, 0, 22, 0,
712  30, 0, 23, 0, 31, 0, 24, 0, 25, 0,
713  32, 0, 26, 0, 33, 0, 21, 43, 0, 21,
714  11, 0, 34, 66, 0, 9, 3, 0, 35, 67,
715  36, 0, 43, 0, 0, 67, 43, 0
716 };
717 
718 #endif
719 
720 #if YYDEBUG != 0
721 static const short yyrline[] = { 0,
722  106, 109, 111, 114, 116, 117, 120, 122, 123, 124,
723  125, 128, 130, 133, 135, 139, 141, 143, 145, 147,
724  150, 153, 155, 157, 158, 160, 163, 165, 168, 171,
725  173, 175, 179, 184, 186, 189, 191, 194, 196, 197,
726  198, 201, 202, 203, 206, 207, 209, 213, 215, 216,
727  217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
728  227, 228, 229, 230, 232, 233, 234, 235, 238, 240,
729  243, 245
730 };
731 
732 static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
733  "DEF","USE","PROTO","EXTERNPROTO","TO","IS","ROUTE","SFN_NULL","EVENTIN","EVENTOUT",
734  "FIELD","EXPOSEDFIELD","SFBOOL","SFCOLOR","SFFLOAT","SFIMAGE","SFINT32","SFNODE",
735  "SFROTATION","SFSTRING","SFTIME","SFVEC2F","SFVEC3F","MFCOLOR","MFFLOAT","MFINT32",
736  "MFROTATION","MFSTRING","MFVEC2F","MFVEC3F","MFNODE","'['","']'","'{'","'}'",
737  "'.'","vrmlscene","declarations","declaration","nodeDeclaration","@1","@2","protoDeclaration",
738  "proto","@3","externproto","@4","@5","interfaceDeclarations","interfaceDeclaration",
739  "@6","@7","externInterfaceDeclarations","externInterfaceDeclaration","routeDeclaration",
740  "node","@8","nodeGuts","nodeGut","@9","@10","fieldValue","mfnodeValue","nodes",
741  ""
742 };
743 #endif
744 
745 static const short yyr1[] = { 0,
746  40, 41, 41, 42, 42, 42, 43, 44, 45, 43,
747  43, 46, 46, 48, 47, 50, 51, 49, 52, 52,
748  53, 53, 54, 53, 55, 53, 56, 56, 57, 57,
749  57, 57, 58, 60, 59, 61, 61, 63, 62, 62,
750  62, 62, 62, 64, 62, 62, 62, 65, 65, 65,
751  65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
752  65, 65, 65, 65, 65, 65, 65, 65, 66, 66,
753  67, 67
754 };
755 
756 static const short yyr2[] = { 0,
757  1, 0, 2, 1, 1, 1, 1, 0, 0, 5,
758  2, 1, 1, 0, 9, 0, 0, 8, 0, 2,
759  3, 3, 0, 5, 0, 5, 0, 2, 3, 3,
760  3, 3, 8, 0, 5, 0, 2, 0, 3, 1,
761  1, 3, 3, 0, 5, 5, 5, 1, 1, 1,
762  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
763  1, 1, 1, 1, 2, 2, 2, 2, 3, 1,
764  0, 2
765 };
766 
767 static const short yydefact[] = { 2,
768  1, 34, 8, 0, 0, 0, 0, 3, 4, 5,
769  12, 13, 6, 7, 0, 0, 11, 14, 16, 0,
770  36, 9, 0, 0, 0, 0, 0, 19, 27, 0,
771  38, 0, 0, 0, 35, 41, 40, 37, 10, 0,
772  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773  0, 20, 0, 0, 0, 0, 17, 28, 0, 0,
774  48, 49, 51, 53, 54, 0, 56, 58, 60, 61,
775  63, 50, 52, 55, 57, 59, 62, 64, 0, 39,
776  42, 43, 44, 0, 0, 0, 0, 2, 0, 0,
777  0, 0, 0, 0, 68, 66, 65, 71, 70, 67,
778  0, 0, 0, 21, 22, 23, 25, 0, 29, 30,
779  31, 32, 18, 33, 0, 46, 47, 45, 0, 0,
780  15, 69, 72, 24, 26, 0, 0, 0
781 };
782 
783 static const short yydefgoto[] = { 126,
784  1, 8, 9, 16, 27, 10, 11, 23, 12, 24,
785  93, 40, 52, 119, 120, 41, 58, 13, 14, 15,
786  26, 38, 43, 103, 80, 100, 115
787 };
788 
789 static const short yypact[] = {-32768,
790  79,-32768,-32768, -1, 0, 3, 4,-32768,-32768,-32768,
791  -32768,-32768,-32768,-32768, -28, 11,-32768,-32768,-32768, -18,
792  -32768,-32768, -6, 5, 32, -2, 38,-32768,-32768, 35,
793  -32768, 39, 41, 45,-32768,-32768,-32768,-32768,-32768, 19,
794  66, 48, 43, 50, 51, 54, 84, 85, 87, 88,
795  55,-32768, 90, 91, 92, 93,-32768,-32768, 58, 95,
796  -32768,-32768,-32768,-32768,-32768, 34,-32768,-32768,-32768,-32768,
797  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 23,-32768,
798  94, 96,-32768, 97, 98, 101, 103,-32768, 104, 105,
799  106, 107, 43, 108,-32768,-32768,-32768,-32768,-32768,-32768,
800  109, 110, 43,-32768,-32768,-32768,-32768, 12,-32768,-32768,
801  -32768,-32768,-32768,-32768, 20,-32768,-32768,-32768, 43, 43,
802  -32768,-32768,-32768,-32768,-32768, 99, 114,-32768
803 };
804 
805 static const short yypgoto[] = {-32768,
806  27,-32768, -66,-32768,-32768, 100,-32768,-32768,-32768,-32768,
807  -32768,-32768,-32768,-32768,-32768,-32768,-32768, 102, 89,-32768,
808  -32768,-32768,-32768,-32768, -73,-32768,-32768
809 };
810 
811 
812 #define YYLAST 128
813 
814 
815 static const short yytable[] = { 97,
816  31, 17, 18, 5, 6, 19, 20, 7, 21, 32,
817  33, 34, 99, 22, 2, 3, 4, 5, 6, 113,
818  25, 7, 2, 3, 4, 2, 3, 4, 28, 118,
819  47, 48, 49, 50, 30, 35, 2, 3, 4, 29,
820  2, 44, 42, 45, 96, 124, 125, 46, 123, 121,
821  59, 60, 81, 82, 51, 122, 83, 98, 61, 62,
822  63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
823  73, 74, 75, 76, 77, 78, 79, 53, 54, 55,
824  56, 2, 3, 4, 5, 6, 84, 85, 7, 86,
825  87, 88, 89, 90, 91, 92, 94, 95, 127, 104,
826  105, 57, 101, 106, 102, 107, 109, 110, 111, 112,
827  114, 116, 117, 128, 108, 39, 0, 0, 0, 0,
828  0, 0, 0, 0, 0, 36, 0, 37
829 };
830 
831 static const short yycheck[] = { 66,
832  3, 3, 3, 6, 7, 3, 3, 10, 37, 12,
833  13, 14, 79, 3, 3, 4, 5, 6, 7, 93,
834  39, 10, 3, 4, 5, 3, 4, 5, 35, 103,
835  12, 13, 14, 15, 3, 38, 3, 4, 5, 35,
836  3, 3, 8, 3, 11, 119, 120, 3, 115, 38,
837  3, 9, 3, 3, 36, 36, 3, 35, 16, 17,
838  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
839  28, 29, 30, 31, 32, 33, 34, 12, 13, 14,
840  15, 3, 4, 5, 6, 7, 3, 3, 10, 3,
841  3, 37, 3, 3, 3, 3, 39, 3, 0, 3,
842  3, 36, 9, 3, 9, 3, 3, 3, 3, 3,
843  3, 3, 3, 0, 88, 27, -1, -1, -1, -1,
844  -1, -1, -1, -1, -1, 26, -1, 26
845 };
846 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
847 
848 
849 /* Skeleton output parser for bison,
850  Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
851 
852  This program is free software; you can redistribute it and/or modify
853  it under the terms of the GNU General Public License as published by
854  the Free Software Foundation; either version 2, or (at your option)
855  any later version.
856 
857  This program is distributed in the hope that it will be useful,
858  but WITHOUT ANY WARRANTY; without even the implied warranty of
859  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
860  GNU General Public License for more details.
861 
862  You should have received a copy of the GNU General Public License
863  along with this program; if not, write to the Free Software
864  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
865 
866 /* As a special exception, when this file is copied by Bison into a
867  Bison output file, you may use that output file without restriction.
868  This special exception was added by the Free Software Foundation
869  in version 1.24 of Bison. */
870 
871 //extern int yylex(vtkVRMLImporter* self);
872 //extern void yyerror();
873 
874 #include <list>
875 //
876 // This file was originally generated from a yacc grammar source
877 // file, but subsequently it has been locally modified to suit
878 // VTK's needs. The use of alloca -- part of the original parser
879 // boilerplate became problematic because the confusing
880 // preprocessor #defines with respect to alloca were causing
881 // compile problems with newer versions of CLang.
882 //
883 // This class replaces alloca with a malloc-based allocator that
884 // cleans up after itself when the FakeAlloca object goes out of
885 // scope. Whatever performance penalty this incurs is minor and
886 // would only be noticeably if a very large, deeply nested VRML
887 // file was imported; in the real world, I think alloca was very
888 // rarely called here.
889 
891 {
892 public:
893  typedef std::list<void *> list_type;
895  {
896  for(list_type::iterator it = this->m_allocs.begin();
897  it != this->m_allocs.end(); ++it)
898  {
899  free(*it);
900  }
901  }
902  void *Allocate(size_t size)
903  {
904  void *rval = malloc(size);
905  m_allocs.push_back(rval);
906  return rval;
907  }
908 private:
909  list_type m_allocs;
910 };
911 /* This is the parser code that is written into each bison parser
912  when the %semantic_parser declaration is not specified in the grammar.
913  It was written by Richard Stallman by simplifying the hairy parser
914  used when %semantic_parser is specified. */
915 
916 /* Note: there must be only one dollar sign in this file.
917  It is replaced by the list of actions, each action
918  as one case of the switch. */
919 
920 #define yyerrok (yyerrstatus = 0)
921 #define yyclearin (yychar = YYEMPTY)
922 #define YYEMPTY -2
923 #define YYEOF 0
924 #define YYACCEPT return(0)
925 #define YYABORT return(1)
926 #define YYERROR goto yyerrlab1
927 /* Like YYERROR except do call yyerror.
928  This remains here temporarily to ease the
929  transition to the new meaning of YYERROR, for GCC.
930  Once GCC version 2 has supplanted version 1, this can go. */
931 #define YYFAIL goto yyerrlab
932 #define YYRECOVERING() (!!yyerrstatus)
933 #define YYBACKUP(token, value) \
934 do \
935  if (yychar == YYEMPTY && yylen == 1) \
936  { yychar = (token), yylval = (value); \
937  yychar1 = YYTRANSLATE (yychar); \
938  YYPOPSTACK; \
939  goto yybackup; \
940  } \
941  else \
942  { yyerror ("syntax error: cannot back up"); YYERROR; } \
943 while (0)
944 
945 #define YYTERROR 1
946 #define YYERRCODE 256
947 
948 
949 /* YYINITDEPTH indicates the initial size of the parser's stacks */
950 
951 #ifndef YYINITDEPTH
952 #define YYINITDEPTH 200
953 #endif
954 
955 /* YYMAXDEPTH is the maximum size the stacks can grow to
956  (effective only if the built-in stack extension method is used). */
957 
958 #if defined(YYMAXDEPTH) && (YYMAXDEPTH == 0)
959 #undef YYMAXDEPTH
960 #endif
961 
962 #ifndef YYMAXDEPTH
963 #define YYMAXDEPTH 10000
964 #endif
965 
966 static void
967 __yy_memcpy (char *from, char *to, int count)
968 {
969  char *f = from;
970  char *t = to;
971  int i = count;
972 
973  while (i-- > 0)
974  *t++ = *f++;
975 }
976 
977 
979 {
980  FakeAlloca yyallocator;
981  int yystate;
982  int yyn;
983  short *yyssp;
984  YYSTYPE *yyvsp;
985  int yyerrstatus; /* number of tokens to shift before error messages enabled */
986  int yychar1 = 0; /* lookahead token as an internal (translated) token number */
987 
988  short yyssa[YYINITDEPTH]; /* the state stack */
989  YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
990 
991  short *yyss = yyssa; /* refer to the stacks through separate pointers */
992  YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
993 
994 #ifdef YYLSP_NEEDED
995  YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
996  YYLTYPE *yyls = yylsa;
997  YYLTYPE *yylsp;
998 
999 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1000 #else
1001 #define YYPOPSTACK (yyvsp--, yyssp--)
1002 #endif
1003 
1004  int yystacksize = YYINITDEPTH;
1005 
1006 #ifdef YYPURE
1007  int yychar;
1008  YYSTYPE yylval;
1009  int yynerrs;
1010 #ifdef YYLSP_NEEDED
1011  YYLTYPE yylloc;
1012 #endif
1013 #endif
1014 
1015  YYSTYPE yyval; /* the variable used to return */
1016  /* semantic values from the action */
1017  /* routines */
1018 
1019  int yylen;
1020 
1021 #if YYDEBUG != 0
1022  if (yydebug)
1023  fprintf(stderr, "Starting parse\n");
1024 #endif
1025 
1026  yystate = 0;
1027  yyerrstatus = 0;
1028  yynerrs = 0;
1029  yychar = YYEMPTY; /* Cause a token to be read. */
1030 
1031  /* Initialize stack pointers.
1032  Waste one element of value and location stack
1033  so that they stay on the same level as the state stack.
1034  The wasted elements are never initialized. */
1035 
1036  yyssp = yyss - 1;
1037  yyvsp = yyvs;
1038 #ifdef YYLSP_NEEDED
1039  yylsp = yyls;
1040 #endif
1041 
1042  /* Push a new state, which is found in yystate . */
1043  /* In all cases, when you get here, the value and location stacks
1044  have just been pushed. so pushing a state here evens the stacks. */
1045  yynewstate:
1046 
1047  *++yyssp = yystate;
1048 
1049  if (yyssp >= yyss + yystacksize - 1)
1050  {
1051  /* Give user a chance to reallocate the stack */
1052  /* Use copies of these so that the &'s don't force the real ones into memory. */
1053  YYSTYPE *yyvs1 = yyvs;
1054  short *yyss1 = yyss;
1055 #ifdef YYLSP_NEEDED
1056  YYLTYPE *yyls1 = yyls;
1057 #endif
1058 
1059  /* Get the current used size of the three stacks, in elements. */
1060  int size = yyssp - yyss + 1;
1061 
1062 #ifdef yyoverflow
1063  /* Each stack pointer address is followed by the size of
1064  the data in use in that stack, in bytes. */
1065 #ifdef YYLSP_NEEDED
1066  /* This used to be a conditional around just the two extra args,
1067  but that might be undefined if yyoverflow is a macro. */
1068  yyoverflow("parser stack overflow",
1069  &yyss1, size * sizeof (*yyssp),
1070  &yyvs1, size * sizeof (*yyvsp),
1071  &yyls1, size * sizeof (*yylsp),
1072  &yystacksize);
1073 #else
1074  yyoverflow("parser stack overflow",
1075  &yyss1, size * sizeof (*yyssp),
1076  &yyvs1, size * sizeof (*yyvsp),
1077  &yystacksize);
1078 #endif
1079 
1080  yyss = yyss1; yyvs = yyvs1;
1081 #ifdef YYLSP_NEEDED
1082  yyls = yyls1;
1083 #endif
1084 #else /* no yyoverflow */
1085  /* Extend the stack our own way. */
1086  if (yystacksize >= YYMAXDEPTH)
1087  {
1088  yyerror("parser stack overflow");
1089  return 2;
1090  }
1091  yystacksize *= 2;
1092  if (yystacksize > YYMAXDEPTH)
1093  yystacksize = YYMAXDEPTH;
1094  yyss = (short *) yyallocator.Allocate (yystacksize * sizeof (*yyssp));
1095  __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
1096  yyvs = (YYSTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yyvsp));
1097  __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
1098 #ifdef YYLSP_NEEDED
1099  yyls = (YYLTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yylsp));
1100  __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
1101 #endif
1102 #endif /* no yyoverflow */
1103 
1104  yyssp = yyss + size - 1;
1105  yyvsp = yyvs + size - 1;
1106 #ifdef YYLSP_NEEDED
1107  yylsp = yyls + size - 1;
1108 #endif
1109 
1110 #if YYDEBUG != 0
1111  if (yydebug)
1112  fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1113 #endif
1114 
1115  if (yyssp >= yyss + yystacksize - 1)
1116  YYABORT;
1117  }
1118 
1119 #if YYDEBUG != 0
1120  if (yydebug)
1121  fprintf(stderr, "Entering state %d\n", yystate);
1122 #endif
1123 
1124  goto yybackup;
1125  yybackup:
1126 
1127  /* Do appropriate processing given the current state. */
1128  /* Read a lookahead token if we need one and don't already have one. */
1129  /* yyresume: */
1130 
1131  /* First try to decide what to do without reference to lookahead token. */
1132 
1133  yyn = yypact[yystate];
1134  if (yyn == YYFLAG)
1135  goto yydefault;
1136 
1137  /* Not known => get a lookahead token if don't already have one. */
1138 
1139  /* yychar is either YYEMPTY or YYEOF
1140  or a valid token in external form. */
1141 
1142  if (yychar == YYEMPTY)
1143  {
1144 #if YYDEBUG != 0
1145  if (yydebug)
1146  fprintf(stderr, "Reading a token: ");
1147 #endif
1148  yychar = yylex(self);
1149  }
1150 
1151  /* Convert token to internal form (in yychar1) for indexing tables with */
1152 
1153  if (yychar <= 0) /* This means end of input. */
1154  {
1155  yychar1 = 0;
1156  yychar = YYEOF; /* Don't call YYLEX any more */
1157 
1158 #if YYDEBUG != 0
1159  if (yydebug)
1160  fprintf(stderr, "Now at end of input.\n");
1161 #endif
1162  }
1163  else
1164  {
1165  yychar1 = YYTRANSLATE(yychar);
1166 
1167 #if YYDEBUG != 0
1168  if (yydebug)
1169  {
1170  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1171  /* Give the individual parser a way to print the precise meaning
1172  of a token, for further debugging info. */
1173 #ifdef YYPRINT
1174  YYPRINT (stderr, yychar, yylval);
1175 #endif
1176  fprintf (stderr, ")\n");
1177  }
1178 #endif
1179  }
1180 
1181  yyn += yychar1;
1182  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1183  goto yydefault;
1184 
1185  yyn = yytable[yyn];
1186 
1187  /* yyn is what to do for this token type in this state.
1188  Negative => reduce, -yyn is rule number.
1189  Positive => shift, yyn is new state.
1190  New state is final state => don't bother to shift,
1191  just return success.
1192  0, or most negative number => error. */
1193 
1194  if (yyn < 0)
1195  {
1196  if (yyn == YYFLAG)
1197  goto yyerrlab;
1198  yyn = -yyn;
1199  goto yyreduce;
1200  }
1201  else if (yyn == 0)
1202  goto yyerrlab;
1203 
1204  if (yyn == YYFINAL)
1205  YYACCEPT;
1206 
1207  /* Shift the lookahead token. */
1208 
1209 #if YYDEBUG != 0
1210  if (yydebug)
1211  fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1212 #endif
1213 
1214  /* Discard the token being shifted unless it is eof. */
1215  if (yychar != YYEOF)
1216  yychar = YYEMPTY;
1217 
1218  *++yyvsp = yylval;
1219 #ifdef YYLSP_NEEDED
1220  *++yylsp = yylloc;
1221 #endif
1222 
1223  /* count tokens shifted since error; after three, turn off error status. */
1224  if (yyerrstatus) yyerrstatus--;
1225 
1226  yystate = yyn;
1227  goto yynewstate;
1228 
1229  /* Do the default action for the current state. */
1230  yydefault:
1231 
1232  yyn = yydefact[yystate];
1233  if (yyn == 0)
1234  goto yyerrlab;
1235 
1236  /* Do a reduction. yyn is the number of a rule to reduce with. */
1237  yyreduce:
1238  yylen = yyr2[yyn];
1239  if (yylen > 0)
1240  yyval = yyvsp[1-yylen]; /* implement default value of the action */
1241  else
1242  yyval.sfint = 0;
1243 
1244 #if YYDEBUG != 0
1245  if (yydebug)
1246  {
1247  int i;
1248 
1249  fprintf (stderr, "Reducing via rule %d (line %d), ",
1250  yyn, yyrline[yyn]);
1251 
1252  /* Print the symbols being reduced, and their result. */
1253  for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1254  fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1255  fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1256  }
1257 #endif
1258 
1259 
1260  // Note: several free() methods are commented out due to the use of
1261  // vtkVRMLAllocator.
1262  switch (yyn) {
1263 
1264  case 8:
1265  { creatingDEF = 1; ;
1266  break;}
1267  case 9:
1268  { curDEFName = yyvsp[0].string; ;
1269  break;}
1270  case 10:
1271  { creatingDEF = 0; ;
1272  break;}
1273  case 11:
1274  { self->useNode(yyvsp[0].string);//free(yyvsp[0].string); ;
1275  break;}
1276  case 14:
1277  { beginProto(yyvsp[0].string); ;
1278  break;}
1279  case 15:
1280  { endProto(); //free(yyvsp[-7].string);
1281  break;}
1282  case 16:
1283  { beginProto(yyvsp[0].string); ;
1284  break;}
1285  case 17:
1286  { expect(MFSTRING); ;
1287  break;}
1288  case 18:
1289  { endProto(); //free(yyvsp[-6].string); ;
1290  break;}
1291  case 21:
1292  { addEventIn(yyvsp[-1].string, yyvsp[0].string);
1293  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1294  break;}
1295  case 22:
1296  { addEventOut(yyvsp[-1].string, yyvsp[0].string);
1297  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1298  break;}
1299  case 23:
1300  { int type = addField(yyvsp[-1].string, yyvsp[0].string);
1301  expect(type); ;
1302  break;}
1303  case 24:
1304  { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1305  break;}
1306  case 25:
1307  { int type = addExposedField(yyvsp[-1].string, yyvsp[0].string);
1308  expect(type); ;
1309  break;}
1310  case 26:
1311  { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1312  break;}
1313  case 29:
1314  { addEventIn(yyvsp[-1].string, yyvsp[0].string);
1315  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1316  break;}
1317  case 30:
1318  { addEventOut(yyvsp[-1].string, yyvsp[0].string);
1319  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1320  break;}
1321  case 31:
1322  { addField(yyvsp[-1].string, yyvsp[0].string);
1323  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1324  break;}
1325  case 32:
1326  { addExposedField(yyvsp[-1].string, yyvsp[0].string);
1327  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1328  break;}
1329  case 33:
1330  { //free(yyvsp[-6].string); free(yyvsp[-4].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1331  break;}
1332  case 34:
1333  { self->enterNode(yyvsp[0].string); ;
1334  break;}
1335  case 35:
1336  { self->exitNode(); //free(yyvsp[-4].string);
1337  break;}
1338  case 38:
1339  { self->enterField(yyvsp[0].string); ;
1340  break;}
1341  case 39:
1342  { self->exitField(); //free(yyvsp[-2].string); ;
1343  break;}
1344  case 42:
1345  { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1346  break;}
1347  case 43:
1348  { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1349  break;}
1350  case 44:
1351  { inScript();
1352  int type = fieldType(yyvsp[-1].string);
1353  expect(type); ;
1354  break;}
1355  case 45:
1356  { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1357  break;}
1358  case 46:
1359  { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1360  break;}
1361  case 47:
1362  { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1363  break;}
1364  case 49:
1365  {;
1366  break;}
1367  case 50:
1368  { break;}
1369  case 55:
1370  { break;}
1371  case 63:
1372  { ;
1373  break;}
1374  case 64:
1375  { break;}
1376  case 68:
1377  { //free(yyvsp[0].string); ;
1378  break;}
1379  }
1380  /* the action file gets copied in in place of this dollarsign */
1381 
1382 
1383  yyvsp -= yylen;
1384  yyssp -= yylen;
1385 #ifdef YYLSP_NEEDED
1386  yylsp -= yylen;
1387 #endif
1388 
1389 #if YYDEBUG != 0
1390  if (yydebug)
1391  {
1392  short *ssp1 = yyss - 1;
1393  fprintf (stderr, "state stack now");
1394  while (ssp1 != yyssp)
1395  fprintf (stderr, " %d", *++ssp1);
1396  fprintf (stderr, "\n");
1397  }
1398 #endif
1399 
1400  *++yyvsp = yyval;
1401 
1402 #ifdef YYLSP_NEEDED
1403  yylsp++;
1404  if (yylen == 0)
1405  {
1406  yylsp->first_line = yylloc.first_line;
1407  yylsp->first_column = yylloc.first_column;
1408  yylsp->last_line = (yylsp-1)->last_line;
1409  yylsp->last_column = (yylsp-1)->last_column;
1410  yylsp->text = 0;
1411  }
1412  else
1413  {
1414  yylsp->last_line = (yylsp+yylen-1)->last_line;
1415  yylsp->last_column = (yylsp+yylen-1)->last_column;
1416  }
1417 #endif
1418 
1419  /* Now "shift" the result of the reduction.
1420  Determine what state that goes to,
1421  based on the state we popped back to
1422  and the rule number reduced by. */
1423 
1424  yyn = yyr1[yyn];
1425 
1426  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1427  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1428  yystate = yytable[yystate];
1429  else
1430  yystate = yydefgoto[yyn - YYNTBASE];
1431 
1432  goto yynewstate;
1433 
1434  yyerrlab: /* here on detecting error */
1435 
1436  if (! yyerrstatus)
1437  /* If not already recovering from an error, report this error. */
1438  {
1439  ++yynerrs;
1440 
1441 #ifdef YYERROR_VERBOSE
1442  yyn = yypact[yystate];
1443 
1444  if (yyn > YYFLAG && yyn < YYLAST)
1445  {
1446  int size = 0;
1447  char *msg;
1448  int x, count;
1449 
1450  count = 0;
1451  /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1452  for (x = (yyn < 0 ? -yyn : 0);
1453  x < (sizeof(yytname) / sizeof(char *)); x++)
1454  if (yycheck[x + yyn] == x)
1455  size += strlen(yytname[x]) + 15, count++;
1456  msg = (char *) malloc(size + 15);
1457  if (msg != 0)
1458  {
1459  strcpy(msg, "parse error");
1460 
1461  if (count < 5)
1462  {
1463  count = 0;
1464  for (x = (yyn < 0 ? -yyn : 0);
1465  x < (sizeof(yytname) / sizeof(char *)); x++)
1466  if (yycheck[x + yyn] == x)
1467  {
1468  strcat(msg, count == 0 ? ", expecting `" : " or `");
1469  strcat(msg, yytname[x]);
1470  strcat(msg, "'");
1471  count++;
1472  }
1473  }
1474  yyerror(msg);
1475  free(msg);
1476  }
1477  else
1478  yyerror ("parse error; also virtual memory exceeded");
1479  }
1480  else
1481 #endif /* YYERROR_VERBOSE */
1482  yyerror("parse error");
1483  }
1484 
1485  goto yyerrlab1;
1486  yyerrlab1: /* here on error raised explicitly by an action */
1487 
1488  if (yyerrstatus == 3)
1489  {
1490  /* if just tried and failed to reuse lookahead token after an error, discard it. */
1491 
1492  /* return failure if at end of input */
1493  if (yychar == YYEOF)
1494  YYABORT;
1495 
1496 #if YYDEBUG != 0
1497  if (yydebug)
1498  fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1499 #endif
1500 
1501  yychar = YYEMPTY;
1502  }
1503 
1504  /* Else will try to reuse lookahead token
1505  after shifting the error token. */
1506 
1507  yyerrstatus = 3; /* Each real token shifted decrements this */
1508 
1509  goto yyerrhandle;
1510 
1511  yyerrdefault: /* current state does not do anything special for the error token. */
1512 
1513 #if 0
1514  /* This is wrong; only states that explicitly want error tokens
1515  should shift them. */
1516  yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1517  if (yyn) goto yydefault;
1518 #endif
1519 
1520  yyerrpop: /* pop the current state because it cannot handle the error token */
1521 
1522  if (yyssp == yyss) YYABORT;
1523  yyvsp--;
1524  yystate = *--yyssp;
1525 #ifdef YYLSP_NEEDED
1526  yylsp--;
1527 #endif
1528 
1529 #if YYDEBUG != 0
1530  if (yydebug)
1531  {
1532  short *ssp1 = yyss - 1;
1533  fprintf (stderr, "Error: state stack now");
1534  while (ssp1 != yyssp)
1535  fprintf (stderr, " %d", *++ssp1);
1536  fprintf (stderr, "\n");
1537  }
1538 #endif
1539 
1540  yyerrhandle:
1541 
1542  yyn = yypact[yystate];
1543  if (yyn == YYFLAG)
1544  goto yyerrdefault;
1545 
1546  yyn += YYTERROR;
1547  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1548  goto yyerrdefault;
1549 
1550  yyn = yytable[yyn];
1551  if (yyn < 0)
1552  {
1553  if (yyn == YYFLAG)
1554  goto yyerrpop;
1555  yyn = -yyn;
1556  goto yyreduce;
1557  }
1558  else if (yyn == 0)
1559  goto yyerrpop;
1560 
1561  if (yyn == YYFINAL)
1562  YYACCEPT;
1563 
1564 #if YYDEBUG != 0
1565  if (yydebug)
1566  fprintf(stderr, "Shifting error token, ");
1567 #endif
1568 
1569  *++yyvsp = yylval;
1570 #ifdef YYLSP_NEEDED
1571  *++yylsp = yylloc;
1572 #endif
1573 
1574  yystate = yyn;
1575  goto yynewstate;
1576 }
1577 
1578 
1579 void vtkVRMLYaccData::yyerror(const char *msg)
1580 {
1581  cerr << "Error near line " << currentLineNumber << ": " << msg << "\n";
1582  expect(0);
1583 }
1584 
1585 void vtkVRMLYaccData::beginProto(const char *protoName)
1586 {
1587  // Any protos in the implementation are in a local namespace:
1588  pushNameSpace();
1589 
1590  VrmlNodeType *t = new VrmlNodeType(protoName);
1591  *CurrentProtoStack += t;
1592 }
1593 
1595 {
1596  // Make any protos defined in implementation unavailable:
1597  popNameSpace();
1598 
1599  // Add this proto definition:
1600  if (CurrentProtoStack->Count() == 0)
1601  {
1602  cerr << "Error: Empty PROTO stack!\n";
1603  }
1604  else
1605  {
1606  VrmlNodeType *t = CurrentProtoStack->Top();
1607  CurrentProtoStack->Pop();
1608  addToNameSpace(t);
1609  }
1610 }
1611 
1612 int vtkVRMLYaccData::addField(const char *type, const char *name)
1613 {
1614  return add(&VrmlNodeType::addField, type, name);
1615 }
1616 
1617 int vtkVRMLYaccData::addEventIn(const char *type, const char *name)
1618 {
1619  return add(&VrmlNodeType::addEventIn, type, name);
1620 }
1621 int vtkVRMLYaccData::addEventOut(const char *type, const char *name)
1622 {
1623  return add(&VrmlNodeType::addEventOut, type, name);
1624 }
1625 int vtkVRMLYaccData::addExposedField(const char *type, const char *name)
1626 {
1627  return add(&VrmlNodeType::addExposedField, type, name);
1628 }
1629 
1630 int vtkVRMLYaccData::add(void (VrmlNodeType::*func)(const char *, int),
1631  const char *typeString, const char *name)
1632 {
1633  int type = fieldType(typeString);
1634 
1635  if (type == 0)
1636  {
1637  cerr << "Error: invalid field type: " << type << "\n";
1638  }
1639 
1640  // Need to add support for Script nodes:
1641  // if (inScript) ... ???
1642 
1643  if (CurrentProtoStack->Count() == 0)
1644  {
1645  cerr << "Error: declaration outside of prototype\n";
1646  return 0;
1647  }
1648  VrmlNodeType *t = CurrentProtoStack->Top();
1649  (t->*func)(name, type);
1650 
1651  return type;
1652 }
1653 
1654 int vtkVRMLYaccData::fieldType(const char *type)
1655 {
1656  if (strcmp(type, "SFBool") == 0) return SFBOOL;
1657  if (strcmp(type, "SFColor") == 0) return SFCOLOR;
1658  if (strcmp(type, "SFFloat") == 0) return SFFLOAT;
1659  if (strcmp(type, "SFImage") == 0) return SFIMAGE;
1660  if (strcmp(type, "SFInt32") == 0) return SFINT32;
1661  if (strcmp(type, "SFNode") == 0) return SFNODE;
1662  if (strcmp(type, "SFRotation") == 0) return SFROTATION;
1663  if (strcmp(type, "SFString") == 0) return SFSTRING;
1664  if (strcmp(type, "SFTime") == 0) return SFTIME;
1665  if (strcmp(type, "SFVec2f") == 0) return SFVEC2F;
1666  if (strcmp(type, "SFVec3f") == 0) return SFVEC3F;
1667  if (strcmp(type, "MFColor") == 0) return MFCOLOR;
1668  if (strcmp(type, "MFFloat") == 0) return MFFLOAT;
1669  if (strcmp(type, "MFInt32") == 0) return MFINT32;
1670  if (strcmp(type, "MFNode") == 0) return MFNODE;
1671  if (strcmp(type, "MFRotation") == 0) return MFROTATION;
1672  if (strcmp(type, "MFString") == 0) return MFSTRING;
1673  if (strcmp(type, "MFVec2f") == 0) return MFVEC2F;
1674  if (strcmp(type, "MFVec3f") == 0) return MFVEC3F;
1675 
1676  cerr << "Illegal field type: " << type << "\n";
1677 
1678  return 0;
1679 }
1680 
1682 {
1683  VrmlNodeType::FieldRec *fr = currentField->Top();
1684  if (fr->nodeType == nullptr ||
1685  strcmp(fr->nodeType->getName(), "Script") != 0)
1686  {
1687  yyerror("interface declaration outside of Script or prototype");
1688  }
1689 }
1690 
1691 
1693 {
1694  expectToken = type;
1695 }
1696 
1697 // End of Auto-generated Parser Code
1698 // Begin of Auto-generated Lexer Code
1699 
1700 /* A lexical scanner generated by flex */
1701 
1702 
1703 #define FLEX_SCANNER
1704 
1705 #ifdef _WIN32
1706 #include <io.h>
1707 #else
1708 #include <unistd.h>
1709 #endif
1710 
1711 /* Use prototypes in function declarations. */
1712 #define YY_USE_PROTOS
1713 #define YY_PROTO(proto) proto
1714 
1715 /* Returned upon end-of-file. */
1716 #define YY_NULL 0
1717 
1718 /* Promotes a possibly negative, possibly signed char to an unsigned
1719  * integer for use as an array index. If the signed char is negative,
1720  * we want to instead treat it as an 8-bit unsigned char, hence the
1721  * double cast.
1722  */
1723 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
1724 
1725 /* Enter a start condition. This macro really ought to take a parameter,
1726  * but we do it the disgusting crufty way forced on us by the ()-less
1727  * definition of BEGIN.
1728  */
1729 #define BEGIN yy_start = 1 + 2 *
1730 
1731 /* Translate the current start state into a value that can be later handed
1732  * to BEGIN to return to the state.
1733  */
1734 #define YY_START ((yy_start - 1) / 2)
1735 
1736 /* Action number for EOF rule of a given start state. */
1737 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
1738 
1739 /* Special action meaning "start processing a new file". Now included
1740  * only for backward compatibility with previous versions of flex.
1741  */
1742 #define YY_NEW_FILE yyrestart( yyin )
1743 
1744 #define YY_END_OF_BUFFER_CHAR 0
1745 
1746 /* Size of default input buffer. */
1747 #define YY_BUF_SIZE 16384
1748 
1749 //typedef struct yy_buffer_state *YY_BUFFER_STATE;
1750 
1751 //extern int yyleng;
1752 //extern FILE *yyin, *yyout;
1753 
1754 #ifdef __cplusplus
1755 extern "C" {
1756 #endif
1757  //extern int yywrap YY_PROTO(( void ));
1758 #ifdef __cplusplus
1759 }
1760 #endif
1761 
1762 #define EOB_ACT_CONTINUE_SCAN 0
1763 #define EOB_ACT_END_OF_FILE 1
1764 #define EOB_ACT_LAST_MATCH 2
1765 
1766 /* The funky do-while in the following #define is used to turn the definition
1767  * int a single C statement (which needs a semi-colon terminator). This
1768  * avoids problems with code like:
1769  *
1770  * if ( condition_holds )
1771  * yyless( 5 );
1772  * else
1773  * do_something_else();
1774  *
1775  * Prior to using the do-while the compiler would get upset at the
1776  * "else" because it interpreted the "if" statement as being all
1777  * done when it reached the ';' after the yyless() call.
1778  */
1779 
1780 /* Return all but the first 'n' matched characters back to the input stream. */
1781 
1782 #define yyless(n) \
1783  do \
1784  { \
1785  /* Undo effects of setting up yytext. */ \
1786  *yy_cp = yy_hold_char; \
1787  yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
1788  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
1789  } \
1790  while ( 0 )
1791 
1792 
1793 //struct yy_buffer_state
1794 //{
1795 // FILE *yy_input_file;
1796 
1797 // char *yy_ch_buf; /* input buffer */
1798 // char *yy_buf_pos; /* current position in input buffer */
1799 
1800  /* Size of input buffer in bytes, not including room for EOB
1801  * characters.
1802  */
1803 // int yy_buf_size;
1804 
1805  /* Number of characters read into yy_ch_buf, not including EOB
1806  * characters.
1807  */
1808 // int yy_n_chars;
1809 
1810  /* Whether this is an "interactive" input source; if so, and
1811  * if we're using stdio for input, then we want to use getc()
1812  * instead of fread(), to make sure we stop fetching input after
1813  * each newline.
1814  */
1815 // int yy_is_interactive;
1816 
1817  /* Whether to try to fill the input buffer when we reach the
1818  * end of it.
1819  */
1820 // int yy_fill_buffer;
1821 
1822 // int yy_buffer_status;
1823 //#define YY_BUFFER_NEW 0
1824 //#define YY_BUFFER_NORMAL 1
1825  /* When an EOF's been seen but there's still some text to process
1826  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
1827  * shouldn't try reading from the input source any more. We might
1828  * still have a bunch of tokens to match, though, because of
1829  * possible backing-up.
1830  *
1831  * When we actually see the EOF, we change the status to "new"
1832  * (via yyrestart()), so that the user can continue scanning by
1833  * just pointing yyin at a new input file.
1834  */
1835 //#define YY_BUFFER_EOF_PENDING 2
1836 //};
1837 
1838 //static YY_BUFFER_STATE yy_current_buffer = 0;
1839 
1840 /* We provide macros for accessing buffer states in case in the
1841  * future we want to put the buffer states in a more general
1842  * "scanner state".
1843  */
1844 #define YY_CURRENT_BUFFER yy_current_buffer
1845 
1846 
1847 /* yy_hold_char holds the character lost when yytext is formed. */
1848 //static char yy_hold_char;
1849 
1850 //static int yy_n_chars; /* number of characters read into yy_ch_buf */
1851 
1852 
1853 //int yyleng;
1854 
1855 /* Points to current character in buffer. */
1856 //static char *yy_c_buf_p = (char *) 0;
1857 //static int yy_init = 1; /* whether we need to initialize */
1858 //static int yy_start = 0; /* start state number */
1859 
1860 /* Flag which is used to allow yywrap()'s to do buffer switches
1861  * instead of setting up a fresh yyin. A bit of a hack ...
1862  */
1863 //static int yy_did_buffer_switch_on_eof;
1864 
1865 //void yyrestart YY_PROTO(( FILE *input_file ));
1866 //void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
1867 //void yy_load_buffer_state YY_PROTO(( void ));
1868 //YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
1869 //void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
1870 //void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
1871 
1872 //static void *yy_flex_alloc YY_PROTO(( unsigned int ));
1873 //static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));
1874 //static void yy_flex_free YY_PROTO(( void * ));
1875 
1876 #define yy_new_buffer yy_create_buffer
1877 
1878 #define INITIAL 0
1879 #define NODE 1
1880 #define SFB 2
1881 #define SFC 3
1882 #define SFF 4
1883 #define SFIMG 5
1884 #define SFI 6
1885 #define SFR 7
1886 #define SFS 8
1887 #define SFT 9
1888 #define SFV2 10
1889 #define SFV3 11
1890 #define MFC 12
1891 #define MFF 13
1892 #define MFI 14
1893 #define MFR 15
1894 #define MFS 16
1895 #define MFV2 17
1896 #define MFV3 18
1897 #define IN_SFS 19
1898 #define IN_MFS 20
1899 #define IN_SFIMG 21
1900 
1901 #define FLEX_DEBUG
1902 //FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
1903 //extern char *yytext;
1904 #define yytext_ptr yytext
1905 
1906 #ifndef yytext_ptr
1907 //static void yy_flex_strncpy YY_PROTO(( char *, const char *, int ));
1908 #endif
1909 
1910 //static yy_state_type yy_get_previous_state YY_PROTO(( void ));
1911 //static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
1912 //static int yy_get_next_buffer YY_PROTO(( void ));
1913 //static void yy_fatal_error YY_PROTO(( const char msg[] ));
1914 
1915 /* Done after the current pattern has been matched and before the
1916  * corresponding action - sets up yytext.
1917  */
1918 #define YY_DO_BEFORE_ACTION \
1919  yytext_ptr = yy_bp; \
1920  yyleng = yy_cp - yy_bp; \
1921  yy_hold_char = *yy_cp; \
1922  *yy_cp = '\0'; \
1923  yy_c_buf_p = yy_cp;
1924 
1925 #define YY_END_OF_BUFFER 50
1926 static const short int yy_accept[949] =
1927 { 0,
1928  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1929  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932  0, 0, 0, 0, 50, 48, 46, 47, 46, 14,
1933  46, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1934  14, 48, 48, 48, 48, 48, 48, 48, 48, 25,
1935  48, 48, 48, 48, 23, 23, 48, 48, 48, 38,
1936  36, 38, 38, 48, 48, 35, 48, 48, 48, 48,
1937  48, 48, 48, 48, 48, 48, 19, 20, 48, 48,
1938 
1939  26, 17, 48, 24, 24, 18, 48, 48, 48, 39,
1940  37, 39, 39, 48, 48, 48, 48, 48, 48, 41,
1941  41, 42, 41, 41, 43, 48, 45, 45, 46, 47,
1942  46, 47, 47, 46, 46, 46, 46, 14, 14, 14,
1943  7, 14, 14, 14, 6, 14, 14, 14, 14, 0,
1944  15, 0, 0, 0, 0, 0, 0, 0, 0, 25,
1945  25, 0, 0, 0, 0, 0, 23, 23, 0, 0,
1946  0, 0, 0, 0, 38, 38, 38, 15, 0, 35,
1947  35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 
1950  16, 0, 26, 26, 0, 24, 24, 0, 0, 0,
1951  0, 0, 0, 39, 39, 39, 16, 0, 0, 0,
1952  0, 0, 0, 0, 0, 0, 0, 0, 0, 41,
1953  41, 41, 41, 41, 41, 40, 45, 45, 47, 47,
1954  47, 46, 4, 14, 14, 14, 14, 5, 14, 14,
1955  14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956  0, 0, 0, 0, 0, 25, 0, 44, 44, 0,
1957  0, 0, 0, 44, 44, 0, 23, 0, 0, 0,
1958  0, 0, 0, 0, 0, 0, 0, 0, 0, 35,
1959  0, 0, 27, 0, 0, 0, 0, 0, 27, 0,
1960 
1961  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963  0, 0, 0, 0, 26, 24, 0, 0, 0, 0,
1964  0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
1965  0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
1966  0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
1967  46, 14, 9, 14, 14, 14, 14, 14, 0, 21,
1968  0, 0, 0, 0, 0, 0, 0, 0, 44, 44,
1969  0, 0, 0, 0, 0, 0, 0, 0, 27, 0,
1970  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1971 
1972  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1973  0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
1974  0, 0, 0, 0, 0, 0, 46, 14, 2, 8,
1975  14, 14, 12, 22, 0, 0, 33, 0, 0, 0,
1976  0, 0, 33, 0, 0, 0, 0, 33, 0, 0,
1977  0, 33, 0, 0, 0, 0, 0, 33, 0, 0,
1978  0, 44, 44, 44, 44, 0, 0, 0, 0, 0,
1979  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1980  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981  0, 0, 0, 27, 0, 0, 27, 0, 0, 29,
1982 
1983  0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
1984  29, 0, 0, 0, 29, 0, 0, 0, 0, 0,
1985  29, 0, 0, 0, 0, 0, 34, 0, 0, 0,
1986  0, 0, 34, 0, 0, 0, 0, 34, 0, 0,
1987  0, 34, 0, 0, 0, 0, 0, 34, 0, 0,
1988  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990  0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
1991  0, 0, 28, 0, 0, 30, 0, 0, 0, 0,
1992  0, 30, 0, 0, 0, 0, 30, 0, 0, 0,
1993 
1994  30, 0, 0, 0, 0, 0, 30, 0, 0, 0,
1995  46, 14, 14, 14, 14, 33, 0, 0, 33, 0,
1996  33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998  0, 0, 29, 0, 0, 29, 0, 29, 0, 0,
1999  34, 0, 0, 34, 0, 34, 0, 0, 0, 0,
2000  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001  0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
2002  30, 0, 30, 0, 0, 46, 14, 10, 14, 14,
2003  0, 33, 0, 0, 33, 0, 0, 33, 0, 33,
2004 
2005  0, 0, 33, 0, 0, 31, 0, 0, 0, 0,
2006  0, 31, 0, 0, 0, 0, 31, 0, 0, 31,
2007  0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
2008  0, 31, 0, 0, 0, 31, 0, 0, 0, 0,
2009  0, 31, 0, 0, 0, 0, 0, 0, 0, 31,
2010  0, 0, 0, 0, 29, 0, 0, 29, 0, 0,
2011  29, 0, 29, 0, 0, 29, 0, 34, 0, 0,
2012  34, 0, 0, 34, 0, 34, 0, 0, 34, 0,
2013  0, 32, 0, 0, 0, 0, 0, 32, 0, 0,
2014  0, 0, 32, 0, 0, 32, 0, 0, 0, 0,
2015 
2016  0, 32, 0, 0, 0, 0, 0, 32, 0, 0,
2017  0, 32, 0, 0, 0, 0, 0, 32, 0, 0,
2018  0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
2019  30, 0, 0, 30, 0, 0, 30, 0, 30, 0,
2020  0, 30, 46, 14, 11, 14, 31, 0, 0, 31,
2021  0, 31, 0, 0, 31, 0, 31, 0, 0, 31,
2022  0, 32, 0, 0, 32, 0, 32, 0, 0, 32,
2023  0, 32, 0, 0, 32, 0, 46, 14, 14, 0,
2024  31, 0, 0, 31, 0, 0, 31, 0, 31, 0,
2025  0, 31, 0, 0, 31, 0, 31, 0, 0, 31,
2026 
2027  0, 0, 31, 0, 32, 0, 0, 32, 0, 0,
2028  32, 0, 32, 0, 0, 32, 0, 0, 32, 0,
2029  32, 0, 0, 32, 0, 0, 32, 46, 14, 14,
2030  46, 3, 14, 46, 13, 46, 46, 46, 46, 46,
2031  1, 46, 1, 1, 1, 1, 1, 0
2032 } ;
2033 
2034 static const int yy_ec[256] =
2035 { 0,
2036  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
2037  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
2038  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2039  1, 4, 5, 6, 7, 5, 5, 5, 1, 5,
2040  5, 5, 8, 2, 9, 10, 5, 11, 12, 13,
2041  12, 12, 12, 12, 12, 14, 12, 5, 5, 5,
2042  5, 5, 5, 5, 15, 16, 16, 17, 18, 19,
2043  5, 5, 20, 5, 5, 21, 22, 23, 24, 25,
2044  5, 26, 27, 28, 29, 30, 5, 31, 5, 5,
2045  32, 33, 34, 5, 5, 5, 16, 16, 16, 35,
2046 
2047  36, 37, 5, 5, 38, 5, 5, 39, 5, 40,
2048  41, 42, 5, 5, 43, 44, 45, 46, 5, 47,
2049  5, 5, 1, 5, 1, 5, 5, 5, 5, 5,
2050  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2051  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2052  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2053  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2054  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2055  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2056  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2057 
2058  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2059  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2060  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2061  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2062  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2063  5, 5, 5, 5, 5
2064 } ;
2065 
2066 static const int yy_meta[48] =
2067 { 0,
2068  1, 2, 3, 2, 4, 5, 6, 4, 4, 1,
2069  7, 7, 7, 7, 7, 7, 7, 7, 7, 4,
2070  4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2071  4, 8, 1, 8, 7, 7, 7, 4, 4, 4,
2072  4, 4, 4, 4, 4, 4, 4
2073 } ;
2074 
2075 static const short int yy_base[1090] =
2076 { 0,
2077  0, 6, 13, 0, 59, 65, 92, 0, 104, 110,
2078  116, 122, 128, 134, 140, 146, 159, 165, 164, 177,
2079  183, 189, 195, 201, 207, 233, 259, 285, 311, 337,
2080  363, 389, 422, 455, 481, 507, 533, 559, 222, 228,
2081  256, 274, 324, 350, 787, 7663, 73, 79, 280, 0,
2082  247, 768, 753, 751, 745, 726, 725, 719, 715, 18,
2083  685, 702, 687, 682, 78, 96, 592, 170, 289, 368,
2084  300, 627, 51, 315, 380, 328, 342, 354, 673, 0,
2085  7663, 410, 677, 420, 376, 427, 436, 394, 708, 454,
2086  458, 743, 466, 470, 778, 676, 7663, 7663, 486, 491,
2087 
2088  496, 7663, 511, 517, 522, 7663, 544, 538, 813, 0,
2089  7663, 579, 665, 549, 563, 848, 604, 576, 883, 0,
2090  605, 7663, 617, 672, 7663, 631, 635, 639, 652, 302,
2091  658, 665, 666, 686, 692, 698, 725, 0, 652, 636,
2092  0, 636, 613, 607, 0, 617, 597, 590, 591, 605,
2093  7663, 596, 722, 0, 727, 918, 931, 751, 755, 792,
2094  759, 821, 0, 944, 957, 805, 786, 0, 825, 0,
2095  830, 970, 983, 856, 0, 869, 875, 0, 834, 900,
2096  987, 891, 895, 0, 996, 1022, 1035, 1003, 1007, 0,
2097  1040, 1053, 1066, 1073, 1077, 0, 1082, 1095, 1108, 1115,
2098 
2099  7663, 1119, 1124, 1132, 1140, 1144, 0, 1150, 0, 1159,
2100  1172, 1185, 1192, 0, 1205, 1211, 0, 1208, 0, 1213,
2101  1244, 1257, 1220, 1261, 1274, 1283, 1309, 1322, 1290, 0,
2102  1335, 1341, 1347, 1353, 1359, 7663, 1294, 0, 1234, 1365,
2103  1366, 1372, 0, 604, 580, 572, 569, 0, 552, 537,
2104  501, 511, 519, 1370, 1374, 1393, 1428, 1441, 0, 0,
2105  0, 1410, 1378, 1454, 1407, 1411, 1458, 1462, 1466, 1508,
2106  1521, 1534, 1547, 1560, 191, 1479, 0, 1477, 1483, 1606,
2107  1641, 1654, 0, 0, 0, 1575, 1487, 1667, 1491, 1572,
2108  1584, 1576, 1623, 1680, 0, 0, 0, 0, 230, 1588,
2109 
2110  1693, 1615, 1592, 1706, 1741, 0, 0, 0, 0, 1723,
2111  1720, 1758, 1725, 1762, 1775, 1810, 0, 0, 0, 0,
2112  1792, 1789, 1827, 1793, 1831, 0, 1836, 1840, 1853, 1888,
2113  0, 0, 0, 0, 1870, 1867, 1905, 1872, 1909, 1914,
2114  1949, 0, 0, 0, 0, 238, 1922, 1962, 1927, 1931,
2115  1975, 2010, 0, 0, 0, 0, 1992, 1935, 2027, 0,
2116  2040, 500, 0, 488, 493, 444, 443, 450, 456, 7663,
2117  1990, 2060, 2073, 2037, 2086, 2099, 2112, 2044, 0, 2116,
2118  1995, 2162, 2175, 2128, 2188, 2201, 2214, 2227, 2132, 2146,
2119  2240, 2253, 2288, 2301, 2261, 2314, 2327, 2340, 2353, 2366,
2120 
2121  2401, 2414, 2268, 2427, 2440, 2453, 2466, 2479, 2514, 2527,
2122  2374, 2540, 2553, 2566, 2579, 2383, 2487, 2592, 2605, 2640,
2123  2653, 2494, 2666, 2679, 2692, 2705, 2281, 437, 0, 0,
2124  50, 386, 0, 7663, 2379, 2498, 2622, 2718, 2731, 0,
2125  0, 0, 239, 2613, 2744, 2757, 2770, 2783, 2818, 2792,
2126  2617, 2831, 2866, 0, 0, 0, 0, 272, 2796, 2800,
2127  2845, 0, 2881, 205, 285, 2840, 2804, 2927, 2962, 2975,
2128  0, 0, 0, 2944, 2941, 2988, 3001, 3014, 3027, 3062,
2129  2946, 3035, 3075, 3110, 0, 0, 0, 0, 3092, 3039,
2130  3043, 3127, 3047, 3089, 3162, 3175, 400, 3094, 3135, 3144,
2131 
2132  3188, 3201, 0, 0, 0, 417, 3139, 3214, 3227, 3240,
2133  3253, 3288, 3262, 3266, 3301, 3336, 0, 0, 0, 0,
2134  437, 3270, 3274, 3315, 3310, 3341, 3346, 3381, 3394, 0,
2135  0, 0, 548, 3354, 3407, 3420, 3433, 3446, 3481, 3359,
2136  3363, 3494, 3529, 0, 0, 0, 0, 562, 3367, 3454,
2137  3463, 3503, 3458, 3542, 3577, 3590, 0, 0, 0, 3559,
2138  3507, 3603, 3616, 3629, 3642, 3677, 3512, 3556, 3690, 3725,
2139  0, 0, 0, 0, 3659, 3560, 3656, 3738, 3660, 3698,
2140  3773, 3786, 645, 3703, 3707, 3755, 3799, 3812, 0, 0,
2141  0, 661, 3711, 3825, 3838, 3851, 3864, 3899, 3747, 3872,
2142 
2143  3912, 3947, 0, 0, 0, 0, 680, 3876, 3880, 3926,
2144  3925, 390, 370, 351, 323, 3952, 3960, 3987, 4000, 4035,
2145  4048, 3967, 4083, 4096, 4131, 4144, 4008, 4157, 4170, 4183,
2146  4196, 4209, 4244, 4257, 4270, 4283, 4296, 4331, 4015, 4344,
2147  4357, 4370, 4065, 4056, 4383, 4396, 4431, 4444, 4104, 4479,
2148  4113, 4217, 4492, 4505, 4540, 4553, 4224, 4588, 4601, 4636,
2149  4649, 4304, 4662, 4675, 4688, 4701, 4714, 4749, 4762, 4775,
2150  4788, 4801, 4836, 4311, 4849, 4862, 4875, 4413, 4404, 4888,
2151  4901, 4936, 4949, 4452, 4984, 2858, 304, 0, 274, 296,
2152  3884, 3971, 4997, 5010, 688, 5023, 5036, 4522, 4019, 5049,
2153 
2154  5062, 5075, 689, 4061, 4108, 4461, 5088, 5101, 0, 0,
2155  0, 695, 4228, 5114, 5127, 5140, 5153, 4316, 4408, 5188,
2156  5223, 5236, 0, 0, 0, 712, 4456, 4519, 4570, 5249,
2157  5262, 5275, 5310, 4524, 4561, 5323, 5358, 0, 0, 0,
2158  0, 740, 4565, 4609, 4618, 4613, 5371, 5384, 5397, 5410,
2159  4722, 4726, 4731, 4809, 4813, 5445, 5458, 757, 5471, 5484,
2160  4918, 4817, 5497, 5510, 5523, 765, 4821, 4915, 5536, 5549,
2161  838, 5562, 5575, 4966, 4919, 5588, 5601, 5614, 862, 4964,
2162  4968, 5167, 5627, 5640, 0, 0, 0, 931, 5161, 5653,
2163  5666, 5679, 5692, 5197, 5201, 5727, 5762, 5775, 0, 0,
2164 
2165  0, 986, 5205, 5209, 5292, 5788, 5801, 5814, 5849, 5284,
2166  5331, 5862, 5897, 0, 0, 0, 0, 1022, 5335, 5339,
2167  5427, 5343, 5910, 5923, 5936, 5949, 5418, 5422, 5706, 5700,
2168  5735, 5984, 5997, 1023, 6010, 6023, 5831, 5739, 6036, 6049,
2169  6062, 1025, 5752, 268, 0, 250, 5879, 5828, 6075, 6088,
2170  6123, 6136, 5870, 6171, 6184, 6219, 6232, 5957, 6267, 6280,
2171  6315, 5966, 6096, 6103, 5833, 6144, 5875, 6151, 6192, 5962,
2172  6199, 6108, 6240, 6247, 6156, 6288, 6301, 236, 204, 6203,
2173  6251, 6328, 0, 1065, 3, 277, 6341, 6340, 6376, 6389,
2174  0, 1123, 376, 411, 6402, 6344, 6437, 6450, 0, 1129,
2175 
2176  435, 443, 6463, 6349, 6353, 6357, 6361, 6401, 6410, 6414,
2177  6464, 6418, 6499, 6422, 6472, 6478, 6504, 6508, 6513, 6521,
2178  6525, 6529, 6533, 6539, 6547, 6551, 6556, 3328, 213, 194,
2179  6569, 0, 188, 6575, 0, 6491, 3939, 5180, 5719, 6307,
2180  6579, 6586, 6592, 6593, 6599, 6600, 6606, 7663, 6619, 6627,
2181  6635, 6643, 6651, 6656, 6663, 6671, 6679, 6686, 6694, 6702,
2182  6710, 6718, 6726, 6733, 163, 6740, 6748, 6756, 6764, 157,
2183  6772, 6780, 6788, 6796, 6804, 104, 6812, 6820, 6825, 6832,
2184  6840, 6847, 93, 6854, 90, 6862, 6870, 66, 6878, 6886,
2185  6894, 6902, 6910, 6918, 6926, 6934, 6942, 6950, 6958, 6966,
2186 
2187  6974, 6982, 6990, 6998, 7006, 7011, 7018, 7026, 7034, 64,
2188  7042, 7050, 7058, 7066, 7074, 7082, 7090, 7098, 7106, 7114,
2189  7122, 7130, 7138, 7146, 7154, 7162, 7170, 7178, 7183, 7190,
2190  7198, 7206, 7214, 7222, 7230, 7238, 7246, 7254, 7262, 7270,
2191  7278, 7286, 7294, 7302, 7310, 7318, 7326, 7334, 7342, 7350,
2192  7358, 7366, 7374, 7382, 7387, 7394, 7402, 7410, 7418, 7426,
2193  7434, 7442, 7450, 7458, 7466, 7474, 7482, 7490, 7498, 7506,
2194  7514, 7522, 7530, 7538, 7546, 7554, 7562, 7570, 7578, 7586,
2195  7591, 7598, 7606, 7614, 7622, 7630, 7638, 7646, 7654
2196 } ;
2197 
2198 static const short int yy_def[1090] =
2199 { 0,
2200  949, 949, 948, 3, 949, 949, 949, 7, 7, 7,
2201  7, 7, 7, 7, 7, 7, 950, 950, 7, 7,
2202  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2203  7, 7, 951, 951, 7, 7, 7, 7, 952, 952,
2204  952, 952, 7, 7, 948, 948, 948, 948, 953, 954,
2205  953, 954, 954, 954, 954, 954, 954, 954, 954, 954,
2206  954, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2207  948, 948, 72, 948, 948, 948, 948, 948, 948, 955,
2208  948, 956, 955, 948, 948, 948, 948, 948, 948, 948,
2209  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2210 
2211  948, 948, 948, 948, 948, 948, 948, 948, 948, 957,
2212  948, 958, 957, 948, 948, 948, 948, 948, 948, 959,
2213  959, 948, 960, 959, 948, 948, 948, 948, 948, 948,
2214  953, 948, 961, 953, 953, 953, 953, 954, 954, 954,
2215  954, 954, 954, 954, 954, 954, 954, 954, 954, 948,
2216  948, 948, 948, 67, 67, 948, 962, 948, 948, 948,
2217  948, 948, 73, 948, 963, 964, 948, 965, 948, 79,
2218  79, 948, 966, 948, 955, 956, 956, 955, 948, 948,
2219  948, 948, 948, 89, 89, 948, 967, 948, 948, 92,
2220  92, 948, 968, 948, 948, 95, 95, 948, 969, 948,
2221 
2222  948, 948, 948, 948, 948, 948, 970, 948, 109, 109,
2223  948, 971, 948, 957, 958, 958, 957, 948, 116, 116,
2224  948, 972, 948, 948, 948, 225, 948, 973, 948, 974,
2225  974, 975, 975, 975, 975, 948, 948, 976, 977, 977,
2226  977, 978, 979, 979, 979, 979, 979, 979, 979, 979,
2227  979, 948, 948, 948, 948, 948, 980, 980, 258, 258,
2228  258, 258, 948, 948, 948, 948, 948, 948, 948, 981,
2229  981, 981, 981, 981, 274, 982, 983, 948, 948, 948,
2230  984, 984, 282, 282, 282, 282, 948, 948, 948, 948,
2231  948, 948, 948, 967, 294, 294, 294, 294, 294, 948,
2232 
2233  948, 948, 948, 948, 968, 305, 305, 305, 305, 305,
2234  948, 948, 948, 948, 948, 969, 316, 316, 316, 316,
2235  316, 948, 948, 948, 948, 985, 948, 948, 948, 971,
2236  330, 330, 330, 330, 330, 948, 948, 948, 948, 948,
2237  972, 341, 341, 341, 341, 341, 948, 948, 948, 948,
2238  948, 973, 352, 352, 352, 352, 352, 948, 948, 976,
2239  978, 979, 979, 979, 979, 979, 979, 979, 948, 948,
2240  256, 948, 986, 948, 258, 948, 987, 258, 988, 274,
2241  280, 948, 989, 948, 282, 948, 990, 385, 948, 948,
2242  991, 948, 948, 992, 948, 993, 948, 994, 993, 948,
2243 
2244  948, 995, 948, 996, 948, 997, 996, 948, 948, 998,
2245  948, 999, 948, 1000, 999, 948, 948, 1001, 948, 948,
2246  1002, 948, 1003, 948, 1004, 1003, 1005, 1006, 1006, 1006,
2247  1006, 1006, 1006, 948, 948, 948, 948, 1007, 1007, 439,
2248  439, 439, 439, 948, 948, 1008, 1008, 447, 1009, 948,
2249  948, 948, 1009, 453, 453, 453, 453, 453, 447, 447,
2250  448, 1010, 948, 463, 463, 948, 948, 948, 1011, 1011,
2251  470, 470, 470, 470, 948, 948, 1012, 1012, 478, 1013,
2252  948, 948, 948, 1013, 484, 484, 484, 484, 484, 478,
2253  478, 478, 948, 948, 1014, 1014, 496, 948, 948, 948,
2254 
2255  1015, 1015, 502, 502, 502, 502, 948, 948, 1016, 1016,
2256  510, 1017, 948, 948, 948, 1017, 516, 516, 516, 516,
2257  516, 510, 510, 511, 948, 948, 948, 1018, 1018, 529,
2258  529, 529, 529, 948, 948, 1019, 1019, 537, 1020, 948,
2259  948, 948, 1020, 543, 543, 543, 543, 543, 537, 537,
2260  538, 948, 948, 948, 1021, 1021, 556, 556, 556, 556,
2261  948, 948, 1022, 1022, 564, 1023, 948, 948, 948, 1023,
2262  570, 570, 570, 570, 570, 564, 564, 564, 948, 948,
2263  1024, 1024, 582, 948, 948, 948, 1025, 1025, 588, 588,
2264  588, 588, 948, 948, 1026, 1026, 596, 1027, 948, 948,
2265 
2266  948, 1027, 602, 602, 602, 602, 602, 596, 596, 597,
2267  1028, 1029, 1029, 1029, 1029, 948, 948, 1030, 1031, 1031,
2268  948, 948, 1032, 948, 948, 1033, 948, 1034, 948, 1035,
2269  1034, 1036, 1036, 948, 1037, 1036, 948, 1035, 948, 1038,
2270  1037, 1038, 948, 948, 1039, 1040, 1040, 948, 948, 1041,
2271  948, 948, 1042, 1043, 1043, 948, 948, 1044, 948, 948,
2272  1045, 948, 1046, 948, 1047, 1046, 1048, 1048, 948, 1049,
2273  1048, 948, 1047, 948, 1050, 1049, 1050, 948, 948, 1051,
2274  1052, 1052, 948, 948, 1053, 1054, 1055, 1055, 1055, 1055,
2275  948, 948, 1056, 1056, 694, 1057, 1057, 697, 948, 948,
2276 
2277  1058, 1058, 702, 948, 948, 948, 1059, 1059, 708, 708,
2278  708, 708, 948, 948, 1060, 1060, 716, 948, 948, 948,
2279  1061, 1061, 722, 722, 722, 722, 716, 716, 717, 1062,
2280  1062, 731, 1063, 948, 948, 948, 1063, 737, 737, 737,
2281  737, 737, 731, 731, 732, 948, 948, 1064, 1064, 749,
2282  749, 749, 750, 948, 948, 1065, 1065, 757, 1066, 1066,
2283  760, 948, 948, 1067, 1067, 765, 948, 948, 1068, 1068,
2284  770, 1069, 1069, 773, 948, 948, 1070, 1070, 778, 948,
2285  948, 948, 1071, 1071, 784, 784, 784, 784, 948, 948,
2286  1072, 1072, 792, 948, 948, 948, 1073, 1073, 798, 798,
2287 
2288  798, 798, 792, 792, 793, 1074, 1074, 807, 1075, 948,
2289  948, 948, 1075, 813, 813, 813, 813, 813, 807, 807,
2290  808, 948, 948, 1076, 1076, 825, 825, 825, 826, 948,
2291  948, 1077, 1077, 833, 1078, 1078, 836, 948, 948, 1079,
2292  1079, 841, 1080, 1081, 1081, 1081, 948, 948, 1082, 1083,
2293  1083, 948, 948, 1084, 1085, 1085, 948, 948, 1086, 1087,
2294  1087, 948, 948, 784, 793, 792, 796, 948, 798, 808,
2295  807, 812, 948, 813, 826, 825, 1080, 1081, 1081, 948,
2296  948, 1082, 882, 882, 851, 851, 851, 948, 948, 1084,
2297  890, 890, 856, 856, 856, 948, 948, 1086, 898, 898,
2298 
2299  861, 861, 861, 948, 948, 784, 784, 784, 792, 792,
2300  793, 948, 948, 798, 798, 798, 807, 807, 808, 948,
2301  823, 813, 813, 813, 825, 825, 826, 1080, 1081, 1081,
2302  1080, 1081, 1081, 1080, 1081, 1080, 1080, 1088, 1088, 1088,
2303  948, 1088, 948, 1089, 1089, 1089, 1089, 0, 948, 948,
2304  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2305  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2306  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2307  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2308  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2309 
2310  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2311  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2312  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2313  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2314  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2315  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2316  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2317  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2318  948, 948, 948, 948, 948, 948, 948, 948, 948
2319 } ;
2320 
2321 static const short int yy_nxt[7711] =
2322 { 0,
2323  948, 47, 48, 47, 948, 948, 49, 47, 48, 47,
2324  469, 472, 49, 46, 47, 48, 47, 50, 46, 51,
2325  46, 46, 46, 46, 46, 46, 46, 50, 50, 52,
2326  53, 50, 54, 50, 50, 55, 50, 56, 57, 50,
2327  58, 59, 50, 50, 46, 46, 46, 50, 60, 61,
2328  50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
2329  47, 48, 47, 147, 148, 51, 47, 48, 47, 613,
2330  462, 51, 462, 614, 129, 130, 129, 62, 63, 131,
2331  132, 948, 132, 62, 63, 133, 64, 153, 154, 154,
2332  154, 154, 64, 47, 48, 47, 326, 948, 51, 277,
2333 
2334  65, 66, 67, 67, 67, 67, 155, 155, 155, 155,
2335  360, 63, 68, 69, 70, 70, 70, 70, 68, 69,
2336  70, 70, 70, 70, 71, 46, 72, 73, 73, 73,
2337  71, 46, 72, 73, 73, 73, 74, 46, 75, 76,
2338  76, 76, 74, 46, 75, 76, 76, 76, 77, 78,
2339  79, 79, 79, 79, 77, 78, 79, 79, 79, 79,
2340  47, 48, 47, 326, 81, 82, 47, 48, 47, 277,
2341  81, 82, 84, 85, 86, 86, 86, 86, 83, 159,
2342  160, 160, 160, 160, 83, 84, 85, 86, 86, 86,
2343  86, 87, 88, 89, 89, 89, 89, 87, 88, 89,
2344 
2345  89, 89, 89, 90, 91, 92, 92, 92, 92, 90,
2346  91, 92, 92, 92, 92, 93, 94, 95, 95, 95,
2347  95, 270, 935, 121, 48, 121, 96, 122, 123, 121,
2348  48, 121, 933, 122, 123, 270, 932, 270, 97, 930,
2349  98, 93, 94, 95, 95, 95, 95, 391, 135, 130,
2350  135, 270, 96, 136, 124, 418, 618, 121, 48, 121,
2351  124, 125, 123, 929, 97, 391, 98, 99, 100, 101,
2352  101, 101, 101, 418, 618, 121, 48, 121, 96, 125,
2353  123, 135, 130, 135, 469, 472, 136, 879, 124, 623,
2354  102, 878, 98, 99, 100, 101, 101, 101, 101, 161,
2355 
2356  161, 161, 161, 132, 96, 132, 124, 623, 133, 137,
2357  163, 163, 163, 163, 846, 270, 102, 845, 98, 103,
2358  46, 104, 105, 105, 105, 167, 167, 167, 167, 844,
2359  96, 270, 126, 46, 127, 128, 128, 128, 167, 167,
2360  167, 167, 106, 46, 98, 103, 46, 104, 105, 105,
2361  105, 169, 170, 170, 170, 170, 96, 690, 126, 46,
2362  127, 128, 128, 128, 171, 171, 171, 171, 106, 46,
2363  98, 107, 108, 109, 109, 109, 109, 159, 160, 160,
2364  160, 160, 96, 281, 284, 162, 181, 181, 181, 181,
2365  167, 167, 167, 167, 102, 689, 98, 107, 108, 109,
2366 
2367  109, 109, 109, 162, 185, 185, 185, 185, 96, 688,
2368  168, 135, 130, 135, 687, 134, 177, 391, 281, 284,
2369  102, 615, 98, 47, 48, 47, 168, 111, 112, 179,
2370  180, 180, 180, 180, 645, 391, 179, 180, 180, 180,
2371  180, 113, 484, 487, 182, 183, 184, 184, 184, 184,
2372  484, 487, 645, 102, 650, 98, 47, 48, 47, 612,
2373  111, 112, 182, 189, 190, 190, 190, 190, 191, 191,
2374  191, 191, 650, 434, 113, 195, 196, 196, 196, 196,
2375  197, 197, 197, 197, 433, 432, 102, 431, 98, 114,
2376  115, 116, 116, 116, 116, 202, 203, 203, 203, 203,
2377 
2378  96, 204, 204, 204, 204, 202, 203, 203, 203, 203,
2379  430, 429, 102, 205, 98, 114, 115, 116, 116, 116,
2380  116, 206, 206, 206, 206, 428, 96, 206, 206, 206,
2381  206, 205, 206, 206, 206, 206, 370, 369, 102, 368,
2382  98, 117, 118, 119, 119, 119, 119, 207, 210, 210,
2383  210, 210, 96, 208, 209, 209, 209, 209, 218, 219,
2384  219, 219, 219, 207, 97, 653, 98, 117, 118, 119,
2385  119, 119, 119, 220, 220, 220, 220, 367, 96, 658,
2386  135, 130, 135, 653, 134, 216, 226, 226, 226, 226,
2387  97, 366, 98, 156, 156, 156, 365, 658, 157, 364,
2388 
2389  363, 153, 154, 154, 154, 154, 231, 130, 231, 158,
2390  134, 232, 134, 224, 225, 225, 225, 225, 234, 130,
2391  234, 362, 134, 235, 253, 252, 251, 158, 164, 164,
2392  164, 250, 249, 165, 248, 247, 246, 163, 163, 163,
2393  163, 237, 237, 237, 237, 237, 237, 237, 237, 237,
2394  237, 237, 237, 129, 130, 129, 245, 166, 131, 135,
2395  130, 135, 418, 244, 136, 238, 132, 240, 132, 240,
2396  243, 133, 241, 166, 172, 172, 172, 236, 680, 173,
2397  418, 238, 169, 170, 170, 170, 170, 135, 130, 135,
2398  174, 217, 136, 135, 130, 135, 680, 685, 136, 135,
2399 
2400  130, 135, 201, 178, 136, 618, 623, 152, 174, 186,
2401  186, 186, 849, 151, 187, 685, 150, 183, 184, 184,
2402  184, 184, 149, 618, 623, 188, 135, 130, 135, 854,
2403  849, 136, 155, 155, 155, 155, 948, 155, 155, 155,
2404  155, 146, 145, 188, 192, 192, 192, 854, 144, 193,
2405  242, 143, 189, 190, 190, 190, 190, 859, 263, 263,
2406  194, 264, 264, 264, 264, 161, 161, 161, 161, 161,
2407  161, 161, 161, 142, 645, 859, 162, 141, 194, 198,
2408  198, 198, 650, 140, 199, 139, 948, 195, 196, 196,
2409  196, 196, 645, 948, 162, 200, 167, 167, 167, 167,
2410 
2411  650, 159, 160, 160, 160, 160, 164, 164, 164, 162,
2412  948, 165, 948, 200, 211, 211, 211, 948, 948, 212,
2413  948, 948, 208, 209, 209, 209, 209, 162, 265, 265,
2414  213, 266, 266, 266, 266, 171, 171, 171, 171, 948,
2415  171, 171, 171, 171, 181, 181, 181, 181, 213, 221,
2416  221, 221, 948, 948, 222, 653, 948, 218, 219, 219,
2417  219, 219, 948, 287, 287, 223, 288, 288, 288, 288,
2418  135, 130, 135, 653, 134, 177, 135, 130, 135, 658,
2419  134, 177, 948, 223, 227, 227, 227, 948, 948, 228,
2420  948, 948, 224, 225, 225, 225, 225, 658, 289, 289,
2421 
2422  229, 290, 290, 290, 290, 185, 185, 185, 185, 179,
2423  180, 180, 180, 180, 948, 948, 948, 182, 229, 156,
2424  156, 156, 948, 948, 157, 948, 254, 255, 256, 256,
2425  256, 256, 258, 156, 258, 182, 948, 259, 948, 260,
2426  261, 262, 262, 262, 262, 164, 164, 164, 864, 948,
2427  165, 948, 267, 948, 268, 269, 269, 269, 271, 164,
2428  271, 948, 948, 272, 948, 273, 864, 274, 275, 275,
2429  275, 172, 172, 172, 948, 948, 173, 948, 278, 279,
2430  280, 280, 280, 280, 282, 172, 282, 948, 948, 283,
2431  948, 284, 285, 286, 286, 286, 286, 181, 181, 181,
2432 
2433  181, 948, 948, 869, 182, 948, 185, 185, 185, 185,
2434  300, 300, 948, 301, 301, 301, 301, 191, 191, 191,
2435  191, 869, 182, 186, 186, 186, 948, 948, 187, 948,
2436  291, 292, 293, 293, 293, 293, 295, 186, 295, 874,
2437  680, 296, 685, 297, 298, 299, 299, 299, 299, 948,
2438  191, 191, 191, 191, 192, 192, 192, 874, 680, 193,
2439  685, 302, 303, 304, 304, 304, 304, 306, 192, 306,
2440  948, 948, 307, 948, 308, 309, 310, 310, 310, 310,
2441  311, 311, 849, 312, 312, 312, 312, 197, 197, 197,
2442  197, 948, 197, 197, 197, 197, 198, 198, 198, 948,
2443 
2444  849, 199, 948, 313, 314, 315, 315, 315, 315, 317,
2445  198, 317, 948, 948, 318, 948, 319, 320, 321, 321,
2446  321, 321, 322, 322, 948, 323, 323, 323, 323, 204,
2447  204, 204, 204, 202, 203, 203, 203, 203, 948, 948,
2448  854, 205, 204, 204, 204, 204, 859, 324, 324, 205,
2449  325, 325, 325, 325, 206, 206, 206, 206, 854, 205,
2450  210, 210, 210, 210, 859, 948, 948, 205, 948, 210,
2451  210, 210, 210, 211, 211, 211, 948, 948, 212, 948,
2452  327, 328, 329, 329, 329, 329, 331, 211, 331, 948,
2453  948, 332, 948, 333, 334, 335, 335, 335, 335, 336,
2454 
2455  336, 948, 337, 337, 337, 337, 135, 130, 135, 948,
2456  134, 216, 135, 130, 135, 948, 134, 216, 220, 220,
2457  220, 220, 948, 220, 220, 220, 220, 347, 347, 948,
2458  348, 348, 348, 348, 948, 240, 134, 240, 134, 948,
2459  241, 948, 134, 948, 134, 221, 221, 221, 948, 948,
2460  222, 948, 338, 339, 340, 340, 340, 340, 342, 221,
2461  342, 948, 948, 343, 948, 344, 345, 346, 346, 346,
2462  346, 226, 226, 226, 226, 227, 227, 227, 948, 948,
2463  228, 948, 948, 224, 225, 225, 225, 225, 948, 948,
2464  948, 229, 948, 226, 226, 226, 226, 358, 358, 948,
2465 
2466  359, 359, 359, 359, 237, 237, 237, 237, 948, 229,
2467  227, 227, 227, 948, 948, 228, 948, 349, 350, 351,
2468  351, 351, 351, 353, 227, 353, 948, 948, 354, 948,
2469  355, 356, 357, 357, 357, 357, 231, 130, 231, 948,
2470  948, 232, 234, 130, 234, 948, 134, 235, 234, 130,
2471  234, 948, 134, 235, 234, 130, 234, 948, 134, 235,
2472  234, 130, 234, 948, 134, 235, 240, 240, 240, 240,
2473  948, 241, 241, 135, 130, 135, 948, 948, 136, 255,
2474  256, 256, 256, 256, 371, 371, 371, 371, 264, 264,
2475  264, 264, 948, 361, 372, 372, 372, 948, 948, 373,
2476 
2477  948, 948, 255, 256, 256, 256, 256, 948, 948, 948,
2478  374, 375, 376, 375, 948, 948, 377, 266, 266, 266,
2479  266, 266, 266, 266, 266, 948, 948, 378, 374, 258,
2480  156, 258, 948, 948, 259, 948, 260, 261, 262, 262,
2481  262, 262, 258, 156, 258, 378, 948, 259, 948, 260,
2482  261, 262, 262, 262, 262, 156, 156, 156, 948, 948,
2483  157, 948, 948, 948, 264, 264, 264, 264, 269, 269,
2484  269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2485  164, 164, 164, 948, 948, 165, 279, 280, 280, 280,
2486  280, 948, 379, 381, 381, 381, 381, 288, 288, 288,
2487 
2488  288, 290, 290, 290, 290, 948, 948, 948, 379, 271,
2489  164, 271, 948, 948, 272, 948, 273, 948, 274, 275,
2490  275, 275, 271, 164, 271, 948, 948, 272, 948, 273,
2491  948, 274, 275, 275, 275, 271, 164, 271, 948, 948,
2492  272, 948, 273, 948, 274, 275, 275, 275, 271, 164,
2493  271, 948, 948, 272, 948, 273, 948, 274, 275, 275,
2494  275, 271, 164, 271, 948, 948, 272, 948, 273, 948,
2495  274, 275, 275, 275, 948, 948, 385, 386, 385, 948,
2496  948, 387, 290, 290, 290, 290, 389, 389, 389, 389,
2497  380, 948, 388, 292, 293, 293, 293, 293, 301, 301,
2498 
2499  301, 301, 392, 392, 392, 392, 380, 382, 382, 382,
2500  388, 948, 383, 948, 948, 279, 280, 280, 280, 280,
2501  948, 948, 948, 384, 303, 304, 304, 304, 304, 948,
2502  948, 948, 292, 293, 293, 293, 293, 948, 948, 948,
2503  390, 384, 282, 172, 282, 948, 948, 283, 948, 284,
2504  285, 286, 286, 286, 286, 282, 172, 282, 390, 948,
2505  283, 948, 284, 285, 286, 286, 286, 286, 172, 172,
2506  172, 948, 948, 173, 948, 948, 948, 288, 288, 288,
2507  288, 295, 186, 295, 948, 948, 296, 948, 297, 298,
2508  299, 299, 299, 299, 186, 186, 186, 948, 948, 187,
2509 
2510  948, 948, 948, 301, 301, 301, 301, 393, 393, 393,
2511  948, 948, 394, 948, 948, 303, 304, 304, 304, 304,
2512  948, 948, 948, 395, 396, 397, 396, 948, 948, 398,
2513  312, 312, 312, 312, 314, 315, 315, 315, 315, 948,
2514  399, 395, 306, 192, 306, 948, 948, 307, 948, 308,
2515  309, 310, 310, 310, 310, 948, 948, 948, 399, 192,
2516  192, 192, 948, 948, 193, 948, 948, 948, 312, 312,
2517  312, 312, 400, 400, 400, 400, 401, 401, 401, 948,
2518  948, 402, 948, 948, 314, 315, 315, 315, 315, 948,
2519  948, 948, 403, 404, 405, 404, 948, 948, 406, 323,
2520 
2521  323, 323, 323, 325, 325, 325, 325, 948, 948, 407,
2522  403, 317, 198, 317, 948, 948, 318, 948, 319, 320,
2523  321, 321, 321, 321, 948, 948, 948, 407, 198, 198,
2524  198, 948, 948, 199, 948, 948, 948, 323, 323, 323,
2525  323, 325, 325, 325, 325, 328, 329, 329, 329, 329,
2526  408, 408, 408, 408, 409, 409, 409, 948, 948, 410,
2527  948, 948, 328, 329, 329, 329, 329, 948, 948, 948,
2528  411, 412, 413, 412, 948, 948, 414, 337, 337, 337,
2529  337, 339, 340, 340, 340, 340, 948, 415, 411, 331,
2530  211, 331, 948, 948, 332, 948, 333, 334, 335, 335,
2531 
2532  335, 335, 948, 948, 948, 415, 211, 211, 211, 948,
2533  948, 212, 948, 948, 948, 337, 337, 337, 337, 416,
2534  416, 416, 416, 339, 340, 340, 340, 340, 948, 948,
2535  948, 417, 348, 348, 348, 348, 350, 351, 351, 351,
2536  351, 419, 419, 419, 419, 359, 359, 359, 359, 417,
2537  342, 221, 342, 948, 948, 343, 948, 344, 345, 346,
2538  346, 346, 346, 221, 221, 221, 948, 948, 222, 948,
2539  948, 948, 348, 348, 348, 348, 420, 420, 420, 948,
2540  948, 421, 948, 948, 350, 351, 351, 351, 351, 948,
2541  948, 948, 422, 423, 424, 423, 948, 948, 425, 948,
2542 
2543  371, 371, 371, 371, 948, 381, 381, 381, 381, 426,
2544  422, 353, 227, 353, 948, 948, 354, 948, 355, 356,
2545  357, 357, 357, 357, 948, 948, 948, 426, 227, 227,
2546  227, 948, 948, 228, 948, 948, 948, 359, 359, 359,
2547  359, 135, 130, 135, 444, 444, 136, 445, 445, 445,
2548  445, 459, 460, 948, 461, 461, 461, 461, 948, 948,
2549  427, 372, 372, 372, 948, 948, 373, 948, 435, 436,
2550  437, 437, 437, 437, 439, 372, 439, 948, 948, 440,
2551  948, 441, 442, 443, 443, 443, 443, 375, 376, 375,
2552  948, 948, 377, 948, 446, 447, 448, 448, 448, 448,
2553 
2554  376, 376, 376, 948, 948, 449, 948, 450, 451, 452,
2555  452, 452, 452, 454, 376, 454, 948, 948, 455, 948,
2556  456, 457, 458, 458, 458, 458, 463, 464, 464, 464,
2557  465, 465, 465, 465, 465, 475, 475, 948, 476, 476,
2558  476, 476, 389, 389, 389, 389, 270, 948, 948, 390,
2559  465, 465, 465, 493, 493, 948, 494, 494, 494, 494,
2560  948, 948, 270, 382, 382, 382, 948, 390, 383, 948,
2561  466, 467, 468, 468, 468, 468, 470, 382, 470, 948,
2562  948, 471, 948, 472, 473, 474, 474, 474, 474, 385,
2563  386, 385, 948, 948, 387, 948, 477, 478, 479, 479,
2564 
2565  479, 479, 386, 386, 386, 948, 948, 480, 948, 481,
2566  482, 483, 483, 483, 483, 485, 386, 485, 948, 948,
2567  486, 948, 487, 488, 489, 489, 489, 489, 282, 172,
2568  282, 948, 948, 283, 490, 491, 285, 492, 492, 492,
2569  492, 295, 186, 295, 948, 948, 296, 495, 496, 298,
2570  497, 497, 497, 497, 393, 393, 393, 948, 948, 394,
2571  948, 948, 948, 392, 392, 392, 392, 948, 507, 507,
2572  395, 508, 508, 508, 508, 534, 534, 948, 535, 535,
2573  535, 535, 135, 130, 611, 948, 948, 136, 395, 393,
2574  393, 393, 948, 948, 394, 948, 498, 499, 500, 500,
2575 
2576  500, 500, 502, 393, 502, 948, 948, 503, 948, 504,
2577  505, 506, 506, 506, 506, 396, 397, 396, 948, 948,
2578  398, 948, 509, 510, 511, 511, 511, 511, 397, 397,
2579  397, 948, 948, 512, 948, 513, 514, 515, 515, 515,
2580  515, 517, 397, 517, 948, 948, 518, 948, 519, 520,
2581  521, 521, 521, 521, 306, 192, 306, 948, 948, 307,
2582  522, 523, 309, 524, 524, 524, 524, 401, 401, 401,
2583  948, 948, 402, 948, 948, 948, 400, 400, 400, 400,
2584  948, 561, 561, 403, 562, 562, 562, 562, 436, 437,
2585  437, 437, 437, 416, 416, 416, 416, 948, 948, 948,
2586 
2587  417, 403, 401, 401, 401, 948, 948, 402, 948, 525,
2588  526, 527, 527, 527, 527, 529, 401, 529, 417, 948,
2589  530, 948, 531, 532, 533, 533, 533, 533, 404, 405,
2590  404, 948, 948, 406, 948, 536, 537, 538, 538, 538,
2591  538, 405, 405, 405, 948, 948, 539, 948, 540, 541,
2592  542, 542, 542, 542, 544, 405, 544, 948, 948, 545,
2593  948, 546, 547, 548, 548, 548, 548, 317, 198, 317,
2594  948, 948, 318, 549, 550, 320, 551, 551, 551, 551,
2595  409, 409, 409, 948, 948, 410, 948, 948, 948, 408,
2596  408, 408, 408, 948, 579, 579, 411, 580, 580, 580,
2597 
2598  580, 593, 593, 948, 594, 594, 594, 594, 616, 616,
2599  616, 616, 948, 948, 411, 409, 409, 409, 948, 948,
2600  410, 948, 552, 553, 554, 554, 554, 554, 556, 409,
2601  556, 948, 948, 557, 948, 558, 559, 560, 560, 560,
2602  560, 412, 413, 412, 948, 948, 414, 948, 563, 564,
2603  565, 565, 565, 565, 413, 413, 413, 948, 948, 566,
2604  948, 567, 568, 569, 569, 569, 569, 571, 413, 571,
2605  948, 948, 572, 948, 573, 574, 575, 575, 575, 575,
2606  331, 211, 331, 948, 948, 332, 576, 577, 334, 578,
2607  578, 578, 578, 342, 221, 342, 948, 948, 343, 581,
2608 
2609  582, 345, 583, 583, 583, 583, 420, 420, 420, 948,
2610  948, 421, 948, 948, 948, 419, 419, 419, 419, 948,
2611  948, 948, 422, 445, 445, 445, 445, 621, 621, 621,
2612  621, 436, 437, 437, 437, 437, 948, 948, 948, 617,
2613  422, 420, 420, 420, 948, 948, 421, 948, 584, 585,
2614  586, 586, 586, 586, 588, 420, 588, 617, 948, 589,
2615  948, 590, 591, 592, 592, 592, 592, 423, 424, 423,
2616  948, 948, 425, 948, 595, 596, 597, 597, 597, 597,
2617  424, 424, 424, 948, 948, 598, 948, 599, 600, 601,
2618  601, 601, 601, 603, 424, 603, 948, 948, 604, 948,
2619 
2620  605, 606, 607, 607, 607, 607, 353, 227, 353, 948,
2621  948, 354, 608, 609, 356, 610, 610, 610, 610, 439,
2622  372, 439, 948, 948, 440, 948, 441, 442, 443, 443,
2623  443, 443, 439, 372, 439, 948, 948, 440, 948, 441,
2624  442, 443, 443, 443, 443, 372, 372, 372, 948, 948,
2625  373, 948, 948, 948, 445, 445, 445, 445, 258, 156,
2626  258, 948, 948, 259, 948, 260, 447, 448, 448, 448,
2627  448, 258, 156, 258, 948, 948, 259, 948, 260, 261,
2628  619, 619, 619, 619, 375, 376, 375, 948, 948, 377,
2629  948, 948, 447, 448, 448, 448, 448, 948, 948, 948,
2630 
2631  620, 451, 452, 452, 452, 452, 461, 461, 461, 461,
2632  461, 461, 461, 461, 624, 624, 624, 624, 620, 454,
2633  376, 454, 948, 948, 455, 948, 456, 457, 458, 458,
2634  458, 458, 372, 372, 372, 948, 948, 373, 948, 948,
2635  451, 452, 452, 452, 452, 948, 948, 948, 622, 467,
2636  468, 468, 468, 468, 261, 461, 461, 461, 461, 135,
2637  130, 135, 378, 948, 136, 948, 622, 454, 376, 454,
2638  843, 948, 455, 948, 456, 457, 458, 458, 458, 458,
2639  378, 270, 271, 164, 271, 270, 270, 272, 270, 273,
2640  270, 463, 464, 464, 464, 465, 465, 465, 465, 465,
2641 
2642  270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
2643  270, 380, 270, 270, 270, 465, 465, 465, 270, 270,
2644  270, 270, 270, 270, 270, 270, 270, 380, 625, 625,
2645  625, 948, 948, 626, 948, 948, 467, 468, 468, 468,
2646  468, 948, 948, 948, 627, 628, 629, 628, 948, 948,
2647  630, 476, 476, 476, 476, 482, 483, 483, 483, 483,
2648  948, 631, 627, 470, 382, 470, 948, 948, 471, 948,
2649  472, 473, 474, 474, 474, 474, 470, 382, 470, 631,
2650  948, 471, 948, 472, 473, 474, 474, 474, 474, 382,
2651  382, 382, 948, 948, 383, 948, 948, 948, 476, 476,
2652 
2653  476, 476, 282, 172, 282, 948, 948, 283, 948, 284,
2654  478, 479, 479, 479, 479, 282, 172, 282, 948, 948,
2655  283, 948, 284, 285, 632, 632, 632, 632, 633, 634,
2656  633, 948, 948, 635, 948, 948, 478, 479, 479, 479,
2657  479, 948, 948, 948, 636, 637, 637, 637, 637, 492,
2658  492, 492, 492, 492, 492, 492, 492, 494, 494, 494,
2659  494, 948, 636, 485, 386, 485, 948, 948, 486, 948,
2660  487, 488, 489, 489, 489, 489, 629, 629, 629, 948,
2661  948, 638, 948, 948, 482, 483, 483, 483, 483, 948,
2662  948, 948, 639, 640, 634, 640, 948, 948, 641, 494,
2663 
2664  494, 494, 494, 499, 500, 500, 500, 500, 948, 642,
2665  639, 485, 386, 485, 948, 948, 486, 948, 487, 488,
2666  489, 489, 489, 489, 948, 948, 948, 642, 385, 386,
2667  385, 948, 948, 387, 948, 948, 948, 492, 492, 492,
2668  492, 948, 948, 948, 388, 643, 643, 643, 643, 508,
2669  508, 508, 508, 499, 500, 500, 500, 500, 948, 948,
2670  948, 644, 388, 295, 186, 295, 948, 948, 296, 948,
2671  297, 298, 497, 497, 497, 497, 295, 186, 295, 644,
2672  948, 296, 948, 297, 298, 497, 497, 497, 497, 502,
2673  393, 502, 948, 948, 503, 948, 504, 505, 506, 506,
2674 
2675  506, 506, 502, 393, 502, 948, 948, 503, 948, 504,
2676  505, 506, 506, 506, 506, 393, 393, 393, 948, 948,
2677  394, 948, 948, 948, 508, 508, 508, 508, 306, 192,
2678  306, 948, 948, 307, 948, 308, 510, 511, 511, 511,
2679  511, 306, 192, 306, 948, 948, 307, 948, 308, 309,
2680  646, 646, 646, 646, 396, 397, 396, 948, 948, 398,
2681  948, 948, 510, 511, 511, 511, 511, 948, 948, 948,
2682  647, 514, 515, 515, 515, 515, 648, 648, 648, 648,
2683  524, 524, 524, 524, 524, 524, 524, 524, 647, 517,
2684  397, 517, 948, 948, 518, 948, 519, 520, 521, 521,
2685 
2686  521, 521, 393, 393, 393, 948, 948, 394, 948, 948,
2687  514, 515, 515, 515, 515, 948, 948, 948, 649, 526,
2688  527, 527, 527, 527, 309, 524, 524, 524, 524, 135,
2689  130, 931, 399, 948, 136, 948, 649, 517, 397, 517,
2690  948, 948, 518, 948, 519, 520, 521, 521, 521, 521,
2691  399, 651, 651, 651, 651, 526, 527, 527, 527, 527,
2692  948, 948, 948, 652, 535, 535, 535, 535, 541, 542,
2693  542, 542, 542, 656, 656, 656, 656, 551, 551, 551,
2694  551, 652, 529, 401, 529, 948, 948, 530, 948, 531,
2695  532, 533, 533, 533, 533, 529, 401, 529, 948, 948,
2696 
2697  530, 948, 531, 532, 533, 533, 533, 533, 401, 401,
2698  401, 948, 948, 402, 948, 948, 948, 535, 535, 535,
2699  535, 317, 198, 317, 948, 948, 318, 948, 319, 537,
2700  538, 538, 538, 538, 317, 198, 317, 948, 948, 318,
2701  948, 319, 320, 654, 654, 654, 654, 404, 405, 404,
2702  948, 948, 406, 948, 948, 537, 538, 538, 538, 538,
2703  948, 948, 948, 655, 551, 551, 551, 551, 659, 659,
2704  659, 659, 320, 551, 551, 551, 551, 948, 948, 948,
2705  407, 655, 544, 405, 544, 948, 948, 545, 948, 546,
2706  547, 548, 548, 548, 548, 401, 401, 401, 407, 948,
2707 
2708  402, 948, 948, 541, 542, 542, 542, 542, 948, 948,
2709  948, 657, 553, 554, 554, 554, 554, 562, 562, 562,
2710  562, 568, 569, 569, 569, 569, 948, 948, 948, 657,
2711  544, 405, 544, 948, 948, 545, 948, 546, 547, 548,
2712  548, 548, 548, 660, 660, 660, 948, 948, 661, 948,
2713  948, 553, 554, 554, 554, 554, 948, 948, 948, 662,
2714  663, 664, 663, 948, 948, 665, 672, 672, 672, 672,
2715  578, 578, 578, 578, 948, 948, 666, 662, 556, 409,
2716  556, 948, 948, 557, 948, 558, 559, 560, 560, 560,
2717  560, 556, 409, 556, 666, 948, 557, 948, 558, 559,
2718 
2719  560, 560, 560, 560, 409, 409, 409, 948, 948, 410,
2720  948, 948, 948, 562, 562, 562, 562, 331, 211, 331,
2721  948, 948, 332, 948, 333, 564, 565, 565, 565, 565,
2722  331, 211, 331, 948, 948, 332, 948, 333, 334, 667,
2723  667, 667, 667, 668, 669, 668, 948, 948, 670, 948,
2724  948, 564, 565, 565, 565, 565, 948, 948, 948, 671,
2725  675, 669, 675, 948, 948, 676, 578, 578, 578, 578,
2726  580, 580, 580, 580, 948, 948, 677, 671, 571, 413,
2727  571, 948, 948, 572, 948, 573, 574, 575, 575, 575,
2728  575, 664, 664, 664, 677, 948, 673, 948, 948, 568,
2729 
2730  569, 569, 569, 569, 948, 948, 948, 674, 580, 580,
2731  580, 580, 585, 586, 586, 586, 586, 678, 678, 678,
2732  678, 594, 594, 594, 594, 674, 571, 413, 571, 948,
2733  948, 572, 948, 573, 574, 575, 575, 575, 575, 412,
2734  413, 412, 948, 948, 414, 948, 948, 948, 578, 578,
2735  578, 578, 948, 948, 948, 415, 600, 601, 601, 601,
2736  601, 948, 948, 948, 585, 586, 586, 586, 586, 948,
2737  948, 948, 679, 415, 342, 221, 342, 948, 948, 343,
2738  948, 344, 345, 583, 583, 583, 583, 342, 221, 342,
2739  679, 948, 343, 948, 344, 345, 583, 583, 583, 583,
2740 
2741  588, 420, 588, 948, 948, 589, 948, 590, 591, 592,
2742  592, 592, 592, 588, 420, 588, 948, 948, 589, 948,
2743  590, 591, 592, 592, 592, 592, 420, 420, 420, 948,
2744  948, 421, 948, 948, 948, 594, 594, 594, 594, 353,
2745  227, 353, 948, 948, 354, 948, 355, 596, 597, 597,
2746  597, 597, 353, 227, 353, 948, 948, 354, 948, 355,
2747  356, 681, 681, 681, 681, 423, 424, 423, 948, 948,
2748  425, 948, 948, 596, 597, 597, 597, 597, 948, 948,
2749  948, 682, 683, 683, 683, 683, 610, 610, 610, 610,
2750  610, 610, 610, 610, 692, 692, 692, 692, 948, 682,
2751 
2752  603, 424, 603, 948, 948, 604, 948, 605, 606, 607,
2753  607, 607, 607, 420, 420, 420, 948, 948, 421, 948,
2754  948, 600, 601, 601, 601, 601, 135, 130, 135, 684,
2755  948, 136, 948, 948, 948, 356, 610, 610, 610, 610,
2756  135, 130, 135, 426, 948, 136, 948, 684, 603, 424,
2757  603, 948, 938, 604, 686, 605, 606, 607, 607, 607,
2758  607, 426, 616, 616, 616, 616, 948, 691, 691, 617,
2759  692, 692, 692, 692, 699, 699, 948, 700, 700, 700,
2760  700, 692, 692, 692, 692, 948, 948, 617, 439, 372,
2761  439, 948, 948, 440, 693, 694, 442, 695, 695, 695,
2762 
2763  695, 375, 376, 375, 948, 948, 377, 948, 260, 261,
2764  619, 619, 619, 619, 948, 713, 713, 620, 714, 714,
2765  714, 714, 746, 746, 948, 747, 747, 747, 747, 700,
2766  700, 700, 700, 948, 948, 620, 258, 156, 258, 948,
2767  948, 259, 696, 697, 261, 698, 698, 698, 698, 372,
2768  372, 372, 948, 948, 373, 948, 948, 948, 621, 621,
2769  621, 621, 948, 754, 754, 622, 755, 755, 755, 755,
2770  705, 706, 706, 706, 706, 643, 643, 643, 643, 948,
2771  948, 948, 644, 622, 454, 376, 454, 948, 948, 455,
2772  701, 702, 457, 703, 703, 703, 703, 625, 625, 625,
2773 
2774  644, 948, 626, 948, 948, 948, 624, 624, 624, 624,
2775  948, 762, 762, 627, 763, 763, 763, 763, 847, 847,
2776  847, 847, 948, 651, 651, 651, 651, 948, 948, 948,
2777  652, 627, 625, 625, 625, 948, 948, 626, 948, 704,
2778  705, 706, 706, 706, 706, 708, 625, 708, 652, 948,
2779  709, 948, 710, 711, 712, 712, 712, 712, 628, 629,
2780  628, 948, 948, 630, 948, 715, 716, 717, 717, 717,
2781  717, 629, 629, 629, 948, 948, 638, 948, 718, 719,
2782  720, 720, 720, 720, 722, 629, 722, 948, 948, 723,
2783  948, 724, 725, 726, 726, 726, 726, 470, 382, 470,
2784 
2785  948, 948, 471, 727, 728, 473, 729, 729, 729, 729,
2786  633, 634, 633, 948, 948, 635, 948, 284, 285, 632,
2787  632, 632, 632, 948, 767, 767, 636, 768, 768, 768,
2788  768, 775, 775, 948, 776, 776, 776, 776, 714, 714,
2789  714, 714, 948, 948, 636, 633, 634, 633, 948, 948,
2790  635, 948, 730, 731, 732, 732, 732, 732, 634, 634,
2791  634, 948, 948, 733, 948, 734, 735, 736, 736, 736,
2792  736, 738, 634, 738, 948, 948, 739, 948, 740, 741,
2793  742, 742, 742, 742, 282, 172, 282, 948, 948, 283,
2794  743, 744, 285, 745, 745, 745, 745, 629, 629, 629,
2795 
2796  948, 948, 638, 948, 948, 948, 637, 637, 637, 637,
2797  948, 789, 789, 639, 790, 790, 790, 790, 822, 822,
2798  948, 823, 823, 823, 823, 719, 720, 720, 720, 720,
2799  948, 639, 722, 629, 722, 948, 948, 723, 948, 724,
2800  725, 726, 726, 726, 726, 640, 634, 640, 948, 948,
2801  641, 948, 748, 749, 750, 750, 750, 750, 738, 634,
2802  738, 948, 948, 739, 948, 740, 741, 742, 742, 742,
2803  742, 485, 386, 485, 948, 948, 486, 751, 752, 488,
2804  753, 753, 753, 753, 502, 393, 502, 948, 948, 503,
2805  756, 757, 505, 758, 758, 758, 758, 396, 397, 396,
2806 
2807  948, 948, 398, 948, 308, 309, 646, 646, 646, 646,
2808  948, 830, 830, 647, 831, 831, 831, 831, 852, 852,
2809  852, 852, 948, 678, 678, 678, 678, 948, 948, 948,
2810  679, 647, 306, 192, 306, 948, 948, 307, 759, 760,
2811  309, 761, 761, 761, 761, 393, 393, 393, 679, 948,
2812  394, 948, 948, 948, 648, 648, 648, 648, 948, 838,
2813  838, 649, 839, 839, 839, 839, 729, 729, 729, 729,
2814  705, 706, 706, 706, 706, 948, 948, 948, 848, 649,
2815  517, 397, 517, 948, 948, 518, 764, 765, 520, 766,
2816  766, 766, 766, 529, 401, 529, 848, 948, 530, 769,
2817 
2818  770, 532, 771, 771, 771, 771, 404, 405, 404, 948,
2819  948, 406, 948, 319, 320, 654, 654, 654, 654, 948,
2820  948, 948, 655, 375, 376, 375, 948, 948, 377, 729,
2821  729, 729, 729, 735, 736, 736, 736, 736, 948, 378,
2822  655, 317, 198, 317, 948, 948, 318, 772, 773, 320,
2823  774, 774, 774, 774, 401, 401, 401, 378, 948, 402,
2824  948, 948, 948, 656, 656, 656, 656, 948, 948, 948,
2825  657, 857, 857, 857, 857, 745, 745, 745, 745, 473,
2826  729, 729, 729, 729, 948, 948, 948, 631, 657, 544,
2827  405, 544, 948, 948, 545, 777, 778, 547, 779, 779,
2828 
2829  779, 779, 660, 660, 660, 631, 948, 661, 948, 948,
2830  948, 659, 659, 659, 659, 948, 948, 948, 662, 745,
2831  745, 745, 745, 747, 747, 747, 747, 285, 745, 745,
2832  745, 745, 948, 948, 948, 388, 662, 660, 660, 660,
2833  948, 948, 661, 948, 780, 781, 782, 782, 782, 782,
2834  784, 660, 784, 388, 948, 785, 948, 786, 787, 788,
2835  788, 788, 788, 663, 664, 663, 948, 948, 665, 948,
2836  791, 792, 793, 793, 793, 793, 664, 664, 664, 948,
2837  948, 673, 948, 794, 795, 796, 796, 796, 796, 798,
2838  664, 798, 948, 948, 799, 948, 800, 801, 802, 802,
2839 
2840  802, 802, 556, 409, 556, 948, 948, 557, 803, 804,
2841  559, 805, 805, 805, 805, 668, 669, 668, 948, 948,
2842  670, 948, 333, 334, 667, 667, 667, 667, 948, 948,
2843  948, 671, 753, 753, 753, 753, 753, 753, 753, 753,
2844  488, 753, 753, 753, 753, 948, 948, 948, 642, 671,
2845  668, 669, 668, 948, 948, 670, 948, 806, 807, 808,
2846  808, 808, 808, 669, 669, 669, 642, 948, 809, 948,
2847  810, 811, 812, 812, 812, 812, 814, 669, 814, 948,
2848  948, 815, 948, 816, 817, 818, 818, 818, 818, 331,
2849  211, 331, 948, 948, 332, 819, 820, 334, 821, 821,
2850 
2851  821, 821, 664, 664, 664, 948, 948, 673, 948, 948,
2852  948, 672, 672, 672, 672, 948, 948, 948, 674, 755,
2853  755, 755, 755, 755, 755, 755, 755, 763, 763, 763,
2854  763, 768, 768, 768, 768, 948, 674, 798, 664, 798,
2855  948, 948, 799, 948, 800, 801, 802, 802, 802, 802,
2856  675, 669, 675, 948, 948, 676, 948, 824, 825, 826,
2857  826, 826, 826, 814, 669, 814, 948, 948, 815, 948,
2858  816, 817, 818, 818, 818, 818, 571, 413, 571, 948,
2859  948, 572, 827, 828, 574, 829, 829, 829, 829, 588,
2860  420, 588, 948, 948, 589, 832, 833, 591, 834, 834,
2861 
2862  834, 834, 423, 424, 423, 948, 948, 425, 948, 355,
2863  356, 681, 681, 681, 681, 948, 948, 948, 682, 396,
2864  397, 396, 948, 948, 398, 768, 768, 768, 768, 776,
2865  776, 776, 776, 948, 948, 399, 682, 353, 227, 353,
2866  948, 948, 354, 835, 836, 356, 837, 837, 837, 837,
2867  420, 420, 420, 399, 948, 421, 948, 948, 948, 683,
2868  683, 683, 683, 948, 948, 948, 684, 404, 405, 404,
2869  948, 948, 406, 781, 782, 782, 782, 782, 862, 862,
2870  862, 862, 948, 407, 684, 603, 424, 603, 948, 948,
2871  604, 840, 841, 606, 842, 842, 842, 842, 439, 372,
2872 
2873  439, 407, 948, 440, 948, 441, 442, 695, 695, 695,
2874  695, 439, 372, 439, 948, 948, 440, 948, 441, 442,
2875  695, 695, 695, 695, 258, 156, 258, 948, 948, 259,
2876  948, 260, 261, 698, 698, 698, 698, 258, 156, 258,
2877  948, 948, 259, 948, 260, 261, 698, 698, 698, 698,
2878  372, 372, 372, 948, 948, 373, 948, 948, 948, 700,
2879  700, 700, 700, 454, 376, 454, 948, 948, 455, 948,
2880  456, 457, 703, 703, 703, 703, 454, 376, 454, 948,
2881  948, 455, 948, 456, 457, 703, 703, 703, 703, 708,
2882  625, 708, 948, 948, 709, 948, 710, 711, 712, 712,
2883 
2884  712, 712, 708, 625, 708, 948, 948, 709, 948, 710,
2885  711, 712, 712, 712, 712, 625, 625, 625, 948, 948,
2886  626, 948, 948, 948, 714, 714, 714, 714, 470, 382,
2887  470, 948, 948, 471, 948, 472, 716, 717, 717, 717,
2888  717, 470, 382, 470, 948, 948, 471, 948, 472, 473,
2889  850, 850, 850, 850, 628, 629, 628, 948, 948, 630,
2890  948, 948, 716, 717, 717, 717, 717, 948, 948, 948,
2891  851, 790, 790, 790, 790, 948, 781, 782, 782, 782,
2892  782, 940, 941, 940, 863, 948, 942, 948, 851, 625,
2893  625, 625, 948, 948, 626, 948, 948, 719, 720, 720,
2894 
2895  720, 720, 863, 948, 948, 853, 795, 796, 796, 796,
2896  796, 867, 867, 867, 867, 805, 805, 805, 805, 805,
2897  805, 805, 805, 853, 722, 629, 722, 948, 948, 723,
2898  948, 724, 725, 726, 726, 726, 726, 722, 629, 722,
2899  948, 948, 723, 948, 724, 725, 726, 726, 726, 726,
2900  282, 172, 282, 948, 948, 283, 948, 284, 731, 732,
2901  732, 732, 732, 282, 172, 282, 948, 948, 283, 948,
2902  284, 285, 855, 855, 855, 855, 633, 634, 633, 948,
2903  948, 635, 948, 948, 731, 732, 732, 732, 732, 948,
2904  948, 948, 856, 811, 812, 812, 812, 812, 948, 948,
2905 
2906  948, 559, 805, 805, 805, 805, 948, 948, 948, 666,
2907  856, 738, 634, 738, 948, 948, 739, 948, 740, 741,
2908  742, 742, 742, 742, 629, 629, 629, 666, 948, 638,
2909  948, 948, 735, 736, 736, 736, 736, 948, 948, 948,
2910  858, 872, 872, 872, 872, 821, 821, 821, 821, 821,
2911  821, 821, 821, 823, 823, 823, 823, 948, 858, 738,
2912  634, 738, 948, 948, 739, 948, 740, 741, 742, 742,
2913  742, 742, 629, 629, 629, 948, 948, 638, 948, 948,
2914  948, 747, 747, 747, 747, 485, 386, 485, 948, 948,
2915  486, 948, 487, 749, 750, 750, 750, 750, 485, 386,
2916 
2917  485, 948, 948, 486, 948, 487, 488, 860, 860, 860,
2918  860, 640, 634, 640, 948, 948, 641, 948, 948, 749,
2919  750, 750, 750, 750, 948, 948, 948, 861, 829, 829,
2920  829, 829, 829, 829, 829, 829, 334, 821, 821, 821,
2921  821, 948, 948, 948, 415, 861, 502, 393, 502, 948,
2922  948, 503, 948, 504, 505, 758, 758, 758, 758, 502,
2923  393, 502, 415, 948, 503, 948, 504, 505, 758, 758,
2924  758, 758, 306, 192, 306, 948, 948, 307, 948, 308,
2925  309, 761, 761, 761, 761, 306, 192, 306, 948, 948,
2926  307, 948, 308, 309, 761, 761, 761, 761, 393, 393,
2927 
2928  393, 948, 948, 394, 948, 948, 948, 763, 763, 763,
2929  763, 517, 397, 517, 948, 948, 518, 948, 519, 520,
2930  766, 766, 766, 766, 517, 397, 517, 948, 948, 518,
2931  948, 519, 520, 766, 766, 766, 766, 529, 401, 529,
2932  948, 948, 530, 948, 531, 532, 771, 771, 771, 771,
2933  529, 401, 529, 948, 948, 530, 948, 531, 532, 771,
2934  771, 771, 771, 317, 198, 317, 948, 948, 318, 948,
2935  319, 320, 774, 774, 774, 774, 317, 198, 317, 948,
2936  948, 318, 948, 319, 320, 774, 774, 774, 774, 401,
2937  401, 401, 948, 948, 402, 948, 948, 948, 776, 776,
2938 
2939  776, 776, 544, 405, 544, 948, 948, 545, 948, 546,
2940  547, 779, 779, 779, 779, 544, 405, 544, 948, 948,
2941  545, 948, 546, 547, 779, 779, 779, 779, 784, 660,
2942  784, 948, 948, 785, 948, 786, 787, 788, 788, 788,
2943  788, 784, 660, 784, 948, 948, 785, 948, 786, 787,
2944  788, 788, 788, 788, 660, 660, 660, 948, 948, 661,
2945  948, 948, 948, 790, 790, 790, 790, 556, 409, 556,
2946  948, 948, 557, 948, 558, 792, 793, 793, 793, 793,
2947  556, 409, 556, 948, 948, 557, 948, 558, 559, 865,
2948  865, 865, 865, 663, 664, 663, 948, 948, 665, 948,
2949 
2950  948, 792, 793, 793, 793, 793, 948, 948, 948, 866,
2951  831, 831, 831, 831, 948, 574, 829, 829, 829, 829,
2952  940, 941, 940, 677, 948, 942, 948, 866, 660, 660,
2953  660, 948, 948, 661, 948, 948, 795, 796, 796, 796,
2954  796, 677, 948, 948, 868, 831, 831, 831, 831, 839,
2955  839, 839, 839, 135, 130, 135, 948, 948, 136, 948,
2956  948, 877, 868, 798, 664, 798, 948, 948, 799, 948,
2957  800, 801, 802, 802, 802, 802, 798, 664, 798, 948,
2958  948, 799, 948, 800, 801, 802, 802, 802, 802, 331,
2959  211, 331, 948, 948, 332, 948, 333, 807, 808, 808,
2960 
2961  808, 808, 331, 211, 331, 948, 948, 332, 948, 333,
2962  334, 870, 870, 870, 870, 668, 669, 668, 948, 948,
2963  670, 948, 948, 807, 808, 808, 808, 808, 948, 948,
2964  948, 871, 423, 424, 423, 880, 880, 425, 881, 881,
2965  881, 881, 559, 865, 865, 865, 865, 948, 426, 871,
2966  814, 669, 814, 948, 948, 815, 948, 816, 817, 818,
2967  818, 818, 818, 664, 664, 664, 426, 948, 673, 948,
2968  948, 811, 812, 812, 812, 812, 948, 888, 888, 873,
2969  889, 889, 889, 889, 948, 867, 867, 867, 867, 847,
2970  847, 847, 847, 948, 948, 948, 848, 873, 814, 669,
2971 
2972  814, 948, 948, 815, 948, 816, 817, 818, 818, 818,
2973  818, 664, 664, 664, 848, 948, 673, 948, 948, 948,
2974  823, 823, 823, 823, 571, 413, 571, 948, 948, 572,
2975  948, 573, 825, 826, 826, 826, 826, 571, 413, 571,
2976  948, 948, 572, 948, 573, 574, 875, 875, 875, 875,
2977  675, 669, 675, 948, 948, 676, 948, 948, 825, 826,
2978  826, 826, 826, 948, 896, 896, 876, 897, 897, 897,
2979  897, 334, 870, 870, 870, 870, 862, 862, 862, 862,
2980  948, 948, 948, 863, 876, 588, 420, 588, 948, 948,
2981  589, 948, 590, 591, 834, 834, 834, 834, 588, 420,
2982 
2983  588, 863, 948, 589, 948, 590, 591, 834, 834, 834,
2984  834, 353, 227, 353, 948, 948, 354, 948, 355, 356,
2985  837, 837, 837, 837, 353, 227, 353, 948, 948, 354,
2986  948, 355, 356, 837, 837, 837, 837, 420, 420, 420,
2987  948, 948, 421, 948, 948, 948, 839, 839, 839, 839,
2988  603, 424, 603, 948, 948, 604, 948, 605, 606, 842,
2989  842, 842, 842, 603, 424, 603, 948, 948, 604, 948,
2990  605, 606, 842, 842, 842, 842, 708, 625, 708, 948,
2991  948, 709, 882, 883, 711, 884, 884, 884, 884, 628,
2992  629, 628, 948, 948, 630, 948, 472, 473, 850, 850,
2993 
2994  850, 850, 948, 904, 904, 851, 905, 905, 905, 905,
2995  906, 907, 948, 908, 908, 908, 908, 948, 872, 872,
2996  872, 872, 948, 851, 470, 382, 470, 948, 948, 471,
2997  885, 886, 473, 887, 887, 887, 887, 625, 625, 625,
2998  948, 948, 626, 948, 948, 948, 852, 852, 852, 852,
2999  948, 909, 910, 853, 911, 911, 911, 911, 912, 912,
3000  948, 913, 913, 913, 913, 574, 875, 875, 875, 875,
3001  948, 853, 722, 629, 722, 948, 948, 723, 890, 891,
3002  725, 892, 892, 892, 892, 633, 634, 633, 948, 948,
3003  635, 948, 284, 285, 855, 855, 855, 855, 948, 914,
3004 
3005  915, 856, 916, 916, 916, 916, 917, 918, 948, 919,
3006  919, 919, 919, 881, 881, 881, 881, 948, 948, 856,
3007  282, 172, 282, 948, 948, 283, 893, 894, 285, 895,
3008  895, 895, 895, 629, 629, 629, 948, 948, 638, 948,
3009  948, 948, 857, 857, 857, 857, 948, 920, 920, 858,
3010  921, 921, 921, 921, 922, 923, 948, 924, 924, 924,
3011  924, 881, 881, 881, 881, 948, 948, 858, 738, 634,
3012  738, 948, 948, 739, 898, 899, 741, 900, 900, 900,
3013  900, 640, 634, 640, 948, 948, 641, 948, 487, 488,
3014  860, 860, 860, 860, 948, 925, 926, 861, 927, 927,
3015 
3016  927, 927, 135, 130, 135, 948, 948, 136, 940, 941,
3017  940, 928, 948, 942, 948, 861, 485, 386, 485, 948,
3018  948, 486, 901, 902, 488, 903, 903, 903, 903, 708,
3019  625, 708, 948, 948, 709, 948, 710, 711, 884, 884,
3020  884, 884, 628, 629, 628, 948, 948, 630, 469, 472,
3021  889, 889, 889, 889, 897, 897, 897, 897, 631, 905,
3022  905, 905, 905, 905, 905, 905, 905, 908, 908, 908,
3023  908, 908, 908, 908, 908, 948, 631, 625, 625, 625,
3024  948, 948, 626, 948, 948, 948, 889, 889, 889, 889,
3025  722, 629, 722, 948, 948, 723, 948, 724, 725, 892,
3026 
3027  892, 892, 892, 633, 634, 633, 948, 948, 635, 281,
3028  284, 908, 908, 908, 908, 948, 948, 948, 864, 388,
3029  911, 911, 911, 911, 911, 911, 911, 911, 913, 913,
3030  913, 913, 916, 916, 916, 916, 864, 388, 629, 629,
3031  629, 948, 948, 638, 948, 948, 948, 897, 897, 897,
3032  897, 738, 634, 738, 948, 948, 739, 948, 740, 741,
3033  900, 900, 900, 900, 640, 634, 640, 948, 948, 641,
3034  484, 487, 948, 559, 911, 911, 911, 911, 948, 948,
3035  642, 666, 916, 916, 916, 916, 948, 948, 916, 916,
3036  916, 916, 135, 130, 135, 869, 948, 136, 642, 666,
3037 
3038  660, 660, 660, 948, 948, 661, 948, 948, 948, 913,
3039  913, 913, 913, 869, 919, 919, 919, 919, 919, 919,
3040  919, 919, 334, 919, 919, 919, 919, 937, 948, 948,
3041  415, 921, 921, 921, 921, 921, 921, 921, 921, 924,
3042  924, 924, 924, 924, 924, 924, 924, 948, 415, 924,
3043  924, 924, 924, 948, 948, 948, 874, 927, 927, 927,
3044  927, 927, 927, 927, 927, 574, 927, 927, 927, 927,
3045  135, 130, 135, 677, 874, 136, 135, 130, 135, 948,
3046  943, 136, 943, 948, 948, 944, 948, 940, 941, 940,
3047  948, 677, 942, 943, 946, 943, 946, 948, 944, 947,
3048 
3049  946, 946, 946, 946, 948, 947, 947, 946, 948, 946,
3050  948, 948, 947, 934, 948, 948, 948, 948, 936, 46,
3051  46, 46, 46, 46, 46, 46, 46, 80, 80, 80,
3052  80, 80, 80, 80, 80, 110, 110, 110, 110, 110,
3053  110, 110, 110, 120, 120, 120, 120, 120, 120, 120,
3054  120, 134, 134, 134, 134, 134, 134, 134, 134, 138,
3055  948, 948, 138, 175, 948, 948, 175, 948, 175, 175,
3056  175, 176, 176, 176, 176, 176, 176, 176, 176, 214,
3057  948, 948, 214, 948, 214, 214, 215, 215, 215, 215,
3058  215, 215, 215, 215, 230, 230, 948, 230, 948, 230,
3059 
3060  230, 230, 233, 233, 233, 233, 233, 233, 233, 233,
3061  239, 239, 948, 239, 239, 239, 239, 239, 257, 257,
3062  257, 257, 257, 257, 257, 257, 270, 270, 270, 270,
3063  270, 270, 270, 270, 276, 276, 948, 948, 276, 276,
3064  281, 281, 281, 281, 281, 281, 281, 281, 294, 294,
3065  294, 294, 294, 294, 294, 294, 305, 305, 305, 305,
3066  305, 305, 305, 305, 316, 316, 316, 316, 316, 316,
3067  316, 316, 330, 330, 330, 330, 330, 330, 330, 330,
3068  341, 341, 341, 341, 341, 341, 341, 341, 352, 352,
3069  352, 352, 352, 352, 352, 352, 230, 230, 948, 230,
3070 
3071  948, 230, 230, 230, 233, 233, 233, 233, 233, 233,
3072  233, 233, 239, 239, 948, 239, 239, 239, 239, 239,
3073  134, 134, 134, 134, 134, 134, 134, 134, 138, 948,
3074  948, 138, 257, 257, 257, 257, 257, 257, 257, 257,
3075  270, 270, 270, 270, 270, 270, 270, 270, 276, 276,
3076  948, 948, 276, 276, 281, 281, 281, 281, 281, 281,
3077  281, 281, 438, 438, 438, 438, 438, 438, 438, 438,
3078  453, 453, 453, 453, 453, 453, 453, 453, 469, 469,
3079  469, 469, 469, 469, 469, 469, 484, 484, 484, 484,
3080  484, 484, 484, 484, 294, 294, 294, 294, 294, 294,
3081 
3082  294, 294, 501, 501, 501, 501, 501, 501, 501, 501,
3083  305, 305, 305, 305, 305, 305, 305, 305, 516, 516,
3084  516, 516, 516, 516, 516, 516, 528, 528, 528, 528,
3085  528, 528, 528, 528, 316, 316, 316, 316, 316, 316,
3086  316, 316, 543, 543, 543, 543, 543, 543, 543, 543,
3087  555, 555, 555, 555, 555, 555, 555, 555, 330, 330,
3088  330, 330, 330, 330, 330, 330, 570, 570, 570, 570,
3089  570, 570, 570, 570, 341, 341, 341, 341, 341, 341,
3090  341, 341, 587, 587, 587, 587, 587, 587, 587, 587,
3091  352, 352, 352, 352, 352, 352, 352, 352, 602, 602,
3092 
3093  602, 602, 602, 602, 602, 602, 134, 134, 134, 134,
3094  134, 134, 134, 134, 138, 948, 948, 138, 438, 438,
3095  438, 438, 438, 438, 438, 438, 257, 257, 257, 257,
3096  257, 257, 257, 257, 453, 453, 453, 453, 453, 453,
3097  453, 453, 469, 469, 469, 469, 469, 469, 469, 469,
3098  281, 281, 281, 281, 281, 281, 281, 281, 484, 484,
3099  484, 484, 484, 484, 484, 484, 294, 294, 294, 294,
3100  294, 294, 294, 294, 501, 501, 501, 501, 501, 501,
3101  501, 501, 305, 305, 305, 305, 305, 305, 305, 305,
3102  516, 516, 516, 516, 516, 516, 516, 516, 528, 528,
3103 
3104  528, 528, 528, 528, 528, 528, 316, 316, 316, 316,
3105  316, 316, 316, 316, 543, 543, 543, 543, 543, 543,
3106  543, 543, 555, 555, 555, 555, 555, 555, 555, 555,
3107  330, 330, 330, 330, 330, 330, 330, 330, 570, 570,
3108  570, 570, 570, 570, 570, 570, 341, 341, 341, 341,
3109  341, 341, 341, 341, 587, 587, 587, 587, 587, 587,
3110  587, 587, 352, 352, 352, 352, 352, 352, 352, 352,
3111  602, 602, 602, 602, 602, 602, 602, 602, 134, 134,
3112  134, 134, 134, 134, 134, 134, 138, 948, 948, 138,
3113  438, 438, 438, 438, 438, 438, 438, 438, 257, 257,
3114 
3115  257, 257, 257, 257, 257, 257, 453, 453, 453, 453,
3116  453, 453, 453, 453, 707, 707, 707, 707, 707, 707,
3117  707, 707, 469, 469, 469, 469, 469, 469, 469, 469,
3118  721, 721, 721, 721, 721, 721, 721, 721, 281, 281,
3119  281, 281, 281, 281, 281, 281, 737, 737, 737, 737,
3120  737, 737, 737, 737, 484, 484, 484, 484, 484, 484,
3121  484, 484, 501, 501, 501, 501, 501, 501, 501, 501,
3122  305, 305, 305, 305, 305, 305, 305, 305, 516, 516,
3123  516, 516, 516, 516, 516, 516, 528, 528, 528, 528,
3124  528, 528, 528, 528, 316, 316, 316, 316, 316, 316,
3125 
3126  316, 316, 543, 543, 543, 543, 543, 543, 543, 543,
3127  783, 783, 783, 783, 783, 783, 783, 783, 555, 555,
3128  555, 555, 555, 555, 555, 555, 797, 797, 797, 797,
3129  797, 797, 797, 797, 330, 330, 330, 330, 330, 330,
3130  330, 330, 813, 813, 813, 813, 813, 813, 813, 813,
3131  570, 570, 570, 570, 570, 570, 570, 570, 587, 587,
3132  587, 587, 587, 587, 587, 587, 352, 352, 352, 352,
3133  352, 352, 352, 352, 602, 602, 602, 602, 602, 602,
3134  602, 602, 134, 134, 134, 134, 134, 134, 134, 134,
3135  138, 948, 948, 138, 438, 438, 438, 438, 438, 438,
3136 
3137  438, 438, 257, 257, 257, 257, 257, 257, 257, 257,
3138  453, 453, 453, 453, 453, 453, 453, 453, 707, 707,
3139  707, 707, 707, 707, 707, 707, 469, 469, 469, 469,
3140  469, 469, 469, 469, 721, 721, 721, 721, 721, 721,
3141  721, 721, 281, 281, 281, 281, 281, 281, 281, 281,
3142  737, 737, 737, 737, 737, 737, 737, 737, 484, 484,
3143  484, 484, 484, 484, 484, 484, 501, 501, 501, 501,
3144  501, 501, 501, 501, 305, 305, 305, 305, 305, 305,
3145  305, 305, 516, 516, 516, 516, 516, 516, 516, 516,
3146  528, 528, 528, 528, 528, 528, 528, 528, 316, 316,
3147 
3148  316, 316, 316, 316, 316, 316, 543, 543, 543, 543,
3149  543, 543, 543, 543, 783, 783, 783, 783, 783, 783,
3150  783, 783, 555, 555, 555, 555, 555, 555, 555, 555,
3151  797, 797, 797, 797, 797, 797, 797, 797, 330, 330,
3152  330, 330, 330, 330, 330, 330, 813, 813, 813, 813,
3153  813, 813, 813, 813, 570, 570, 570, 570, 570, 570,
3154  570, 570, 587, 587, 587, 587, 587, 587, 587, 587,
3155  352, 352, 352, 352, 352, 352, 352, 352, 602, 602,
3156  602, 602, 602, 602, 602, 602, 134, 134, 134, 134,
3157  134, 134, 134, 134, 138, 948, 948, 138, 707, 707,
3158 
3159  707, 707, 707, 707, 707, 707, 469, 469, 469, 469,
3160  469, 469, 469, 469, 721, 721, 721, 721, 721, 721,
3161  721, 721, 281, 281, 281, 281, 281, 281, 281, 281,
3162  737, 737, 737, 737, 737, 737, 737, 737, 484, 484,
3163  484, 484, 484, 484, 484, 484, 939, 939, 939, 939,
3164  939, 939, 939, 939, 945, 945, 948, 945, 945, 945,
3165  945, 945, 45, 948, 948, 948, 948, 948, 948, 948,
3166  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3167  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3168  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3169 
3170  948, 948, 948, 948, 948, 948, 948, 948, 948, 948
3171 } ;
3172 
3173 static const short int yy_chk[7711] =
3174 { 0,
3175  0, 1, 1, 1, 0, 0, 1, 2, 2, 2,
3176  885, 885, 2, 3, 3, 3, 3, 3, 3, 3,
3177  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3178  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3179  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3180  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3181  5, 5, 5, 60, 60, 5, 6, 6, 6, 431,
3182  1010, 6, 988, 431, 47, 47, 47, 5, 5, 47,
3183  48, 73, 48, 6, 6, 48, 5, 65, 65, 65,
3184  65, 65, 6, 7, 7, 7, 985, 73, 7, 983,
3185 
3186  7, 7, 7, 7, 7, 7, 66, 66, 66, 66,
3187  976, 7, 9, 9, 9, 9, 9, 9, 10, 10,
3188  10, 10, 10, 10, 11, 11, 11, 11, 11, 11,
3189  12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
3190  13, 13, 14, 14, 14, 14, 14, 14, 15, 15,
3191  15, 15, 15, 15, 16, 16, 16, 16, 16, 16,
3192  17, 17, 17, 970, 17, 17, 18, 18, 18, 965,
3193  18, 18, 19, 19, 19, 19, 19, 19, 17, 68,
3194  68, 68, 68, 68, 18, 20, 20, 20, 20, 20,
3195  20, 21, 21, 21, 21, 21, 21, 22, 22, 22,
3196 
3197  22, 22, 22, 23, 23, 23, 23, 23, 23, 24,
3198  24, 24, 24, 24, 24, 25, 25, 25, 25, 25,
3199  25, 275, 933, 39, 39, 39, 25, 39, 39, 40,
3200  40, 40, 930, 40, 40, 464, 929, 275, 25, 879,
3201  25, 26, 26, 26, 26, 26, 26, 299, 51, 51,
3202  51, 464, 26, 51, 39, 346, 443, 41, 41, 41,
3203  40, 41, 41, 878, 26, 299, 26, 27, 27, 27,
3204  27, 27, 27, 346, 443, 42, 42, 42, 27, 42,
3205  42, 49, 49, 49, 886, 886, 49, 846, 41, 458,
3206  27, 844, 27, 28, 28, 28, 28, 28, 28, 69,
3207 
3208  69, 69, 69, 130, 28, 130, 42, 458, 130, 49,
3209  71, 71, 71, 71, 690, 465, 28, 689, 28, 29,
3210  29, 29, 29, 29, 29, 74, 74, 74, 74, 687,
3211  29, 465, 43, 43, 43, 43, 43, 43, 76, 76,
3212  76, 76, 29, 43, 29, 30, 30, 30, 30, 30,
3213  30, 77, 77, 77, 77, 77, 30, 615, 44, 44,
3214  44, 44, 44, 44, 78, 78, 78, 78, 30, 44,
3215  30, 31, 31, 31, 31, 31, 31, 70, 70, 70,
3216  70, 70, 31, 893, 893, 70, 85, 85, 85, 85,
3217  75, 75, 75, 75, 31, 614, 31, 32, 32, 32,
3218 
3219  32, 32, 32, 70, 88, 88, 88, 88, 32, 613,
3220  75, 82, 82, 82, 612, 82, 82, 497, 894, 894,
3221  32, 432, 32, 33, 33, 33, 75, 33, 33, 84,
3222  84, 84, 84, 84, 506, 497, 86, 86, 86, 86,
3223  86, 33, 901, 901, 86, 87, 87, 87, 87, 87,
3224  902, 902, 506, 33, 521, 33, 34, 34, 34, 428,
3225  34, 34, 86, 90, 90, 90, 90, 90, 91, 91,
3226  91, 91, 521, 369, 34, 93, 93, 93, 93, 93,
3227  94, 94, 94, 94, 368, 367, 34, 366, 34, 35,
3228  35, 35, 35, 35, 35, 99, 99, 99, 99, 99,
3229 
3230  35, 100, 100, 100, 100, 101, 101, 101, 101, 101,
3231  365, 364, 35, 101, 35, 36, 36, 36, 36, 36,
3232  36, 103, 103, 103, 103, 362, 36, 104, 104, 104,
3233  104, 101, 105, 105, 105, 105, 253, 252, 36, 251,
3234  36, 37, 37, 37, 37, 37, 37, 104, 108, 108,
3235  108, 108, 37, 107, 107, 107, 107, 107, 114, 114,
3236  114, 114, 114, 104, 37, 533, 37, 38, 38, 38,
3237  38, 38, 38, 115, 115, 115, 115, 250, 38, 548,
3238  112, 112, 112, 533, 112, 112, 118, 118, 118, 118,
3239  38, 249, 38, 67, 67, 67, 247, 548, 67, 246,
3240 
3241  245, 67, 67, 67, 67, 67, 121, 121, 121, 67,
3242  112, 121, 112, 117, 117, 117, 117, 117, 123, 123,
3243  123, 244, 123, 123, 152, 150, 149, 67, 72, 72,
3244  72, 148, 147, 72, 146, 144, 143, 72, 72, 72,
3245  72, 126, 126, 126, 126, 127, 127, 127, 127, 128,
3246  128, 128, 128, 129, 129, 129, 142, 72, 129, 131,
3247  131, 131, 583, 140, 131, 127, 132, 133, 132, 133,
3248  139, 132, 133, 72, 79, 79, 79, 124, 592, 79,
3249  583, 127, 79, 79, 79, 79, 79, 134, 134, 134,
3250  79, 113, 134, 135, 135, 135, 592, 607, 135, 136,
3251 
3252  136, 136, 96, 83, 136, 695, 703, 64, 79, 89,
3253  89, 89, 712, 63, 89, 607, 62, 89, 89, 89,
3254  89, 89, 61, 695, 703, 89, 137, 137, 137, 726,
3255  712, 137, 153, 153, 153, 153, 155, 155, 155, 155,
3256  155, 59, 58, 89, 92, 92, 92, 726, 57, 92,
3257  137, 56, 92, 92, 92, 92, 92, 742, 158, 158,
3258  92, 158, 158, 158, 158, 159, 159, 159, 159, 161,
3259  161, 161, 161, 55, 758, 742, 161, 54, 92, 95,
3260  95, 95, 766, 53, 95, 52, 45, 95, 95, 95,
3261  95, 95, 758, 0, 161, 95, 167, 167, 167, 167,
3262 
3263  766, 160, 160, 160, 160, 160, 166, 166, 166, 160,
3264  0, 166, 0, 95, 109, 109, 109, 0, 0, 109,
3265  0, 0, 109, 109, 109, 109, 109, 160, 162, 162,
3266  109, 162, 162, 162, 162, 169, 169, 169, 169, 171,
3267  171, 171, 171, 171, 179, 179, 179, 179, 109, 116,
3268  116, 116, 0, 0, 116, 771, 0, 116, 116, 116,
3269  116, 116, 0, 174, 174, 116, 174, 174, 174, 174,
3270  176, 176, 176, 771, 176, 176, 177, 177, 177, 779,
3271  177, 177, 0, 116, 119, 119, 119, 0, 0, 119,
3272  0, 0, 119, 119, 119, 119, 119, 779, 182, 182,
3273 
3274  119, 182, 182, 182, 182, 183, 183, 183, 183, 180,
3275  180, 180, 180, 180, 0, 0, 0, 180, 119, 156,
3276  156, 156, 0, 0, 156, 0, 156, 156, 156, 156,
3277  156, 156, 157, 157, 157, 180, 0, 157, 0, 157,
3278  157, 157, 157, 157, 157, 164, 164, 164, 788, 0,
3279  164, 0, 164, 0, 164, 164, 164, 164, 165, 165,
3280  165, 0, 0, 165, 0, 165, 788, 165, 165, 165,
3281  165, 172, 172, 172, 0, 0, 172, 0, 172, 172,
3282  172, 172, 172, 172, 173, 173, 173, 0, 0, 173,
3283  0, 173, 173, 173, 173, 173, 173, 181, 181, 181,
3284 
3285  181, 0, 0, 802, 181, 185, 185, 185, 185, 185,
3286  188, 188, 0, 188, 188, 188, 188, 189, 189, 189,
3287  189, 802, 181, 186, 186, 186, 0, 0, 186, 0,
3288  186, 186, 186, 186, 186, 186, 187, 187, 187, 818,
3289  834, 187, 842, 187, 187, 187, 187, 187, 187, 191,
3290  191, 191, 191, 191, 192, 192, 192, 818, 834, 192,
3291  842, 192, 192, 192, 192, 192, 192, 193, 193, 193,
3292  0, 0, 193, 0, 193, 193, 193, 193, 193, 193,
3293  194, 194, 884, 194, 194, 194, 194, 195, 195, 195,
3294  195, 197, 197, 197, 197, 197, 198, 198, 198, 0,
3295 
3296  884, 198, 0, 198, 198, 198, 198, 198, 198, 199,
3297  199, 199, 0, 0, 199, 0, 199, 199, 199, 199,
3298  199, 199, 200, 200, 0, 200, 200, 200, 200, 202,
3299  202, 202, 202, 203, 203, 203, 203, 203, 0, 0,
3300  892, 203, 204, 204, 204, 204, 900, 205, 205, 204,
3301  205, 205, 205, 205, 206, 206, 206, 206, 892, 203,
3302  208, 208, 208, 208, 900, 0, 0, 204, 210, 210,
3303  210, 210, 210, 211, 211, 211, 0, 0, 211, 0,
3304  211, 211, 211, 211, 211, 211, 212, 212, 212, 0,
3305  0, 212, 0, 212, 212, 212, 212, 212, 212, 213,
3306 
3307  213, 0, 213, 213, 213, 213, 215, 215, 215, 0,
3308  215, 215, 216, 216, 216, 0, 216, 216, 218, 218,
3309  218, 218, 220, 220, 220, 220, 220, 223, 223, 0,
3310  223, 223, 223, 223, 0, 239, 215, 239, 215, 0,
3311  239, 0, 216, 0, 216, 221, 221, 221, 0, 0,
3312  221, 0, 221, 221, 221, 221, 221, 221, 222, 222,
3313  222, 0, 0, 222, 0, 222, 222, 222, 222, 222,
3314  222, 224, 224, 224, 224, 225, 225, 225, 0, 0,
3315  225, 0, 0, 225, 225, 225, 225, 225, 0, 0,
3316  0, 225, 226, 226, 226, 226, 226, 229, 229, 0,
3317 
3318  229, 229, 229, 229, 237, 237, 237, 237, 0, 225,
3319  227, 227, 227, 0, 0, 227, 0, 227, 227, 227,
3320  227, 227, 227, 228, 228, 228, 0, 0, 228, 0,
3321  228, 228, 228, 228, 228, 228, 231, 231, 231, 0,
3322  0, 231, 232, 232, 232, 0, 232, 232, 233, 233,
3323  233, 0, 233, 233, 234, 234, 234, 0, 234, 234,
3324  235, 235, 235, 0, 235, 235, 240, 241, 240, 241,
3325  0, 240, 241, 242, 242, 242, 0, 0, 242, 254,
3326  254, 254, 254, 254, 255, 255, 255, 255, 263, 263,
3327  263, 263, 0, 242, 256, 256, 256, 0, 0, 256,
3328 
3329  0, 0, 256, 256, 256, 256, 256, 0, 0, 0,
3330  256, 262, 262, 262, 0, 0, 262, 265, 265, 265,
3331  265, 266, 266, 266, 266, 0, 0, 262, 256, 257,
3332  257, 257, 0, 0, 257, 0, 257, 257, 257, 257,
3333  257, 257, 258, 258, 258, 262, 0, 258, 0, 258,
3334  258, 258, 258, 258, 258, 264, 264, 264, 0, 0,
3335  264, 0, 0, 0, 264, 264, 264, 264, 267, 267,
3336  267, 267, 268, 268, 268, 268, 269, 269, 269, 269,
3337  276, 276, 276, 0, 0, 276, 278, 278, 278, 278,
3338  278, 0, 268, 279, 279, 279, 279, 287, 287, 287,
3339 
3340  287, 289, 289, 289, 289, 0, 0, 0, 268, 270,
3341  270, 270, 0, 0, 270, 0, 270, 0, 270, 270,
3342  270, 270, 271, 271, 271, 0, 0, 271, 0, 271,
3343  0, 271, 271, 271, 271, 272, 272, 272, 0, 0,
3344  272, 0, 272, 0, 272, 272, 272, 272, 273, 273,
3345  273, 0, 0, 273, 0, 273, 0, 273, 273, 273,
3346  273, 274, 274, 274, 0, 0, 274, 0, 274, 0,
3347  274, 274, 274, 274, 0, 0, 286, 286, 286, 0,
3348  0, 286, 290, 290, 290, 290, 292, 292, 292, 292,
3349  274, 0, 286, 291, 291, 291, 291, 291, 300, 300,
3350 
3351  300, 300, 303, 303, 303, 303, 274, 280, 280, 280,
3352  286, 0, 280, 0, 0, 280, 280, 280, 280, 280,
3353  0, 0, 0, 280, 302, 302, 302, 302, 302, 0,
3354  0, 0, 293, 293, 293, 293, 293, 0, 0, 0,
3355  293, 280, 281, 281, 281, 0, 0, 281, 0, 281,
3356  281, 281, 281, 281, 281, 282, 282, 282, 293, 0,
3357  282, 0, 282, 282, 282, 282, 282, 282, 288, 288,
3358  288, 0, 0, 288, 0, 0, 0, 288, 288, 288,
3359  288, 294, 294, 294, 0, 0, 294, 0, 294, 294,
3360  294, 294, 294, 294, 301, 301, 301, 0, 0, 301,
3361 
3362  0, 0, 0, 301, 301, 301, 301, 304, 304, 304,
3363  0, 0, 304, 0, 0, 304, 304, 304, 304, 304,
3364  0, 0, 0, 304, 310, 310, 310, 0, 0, 310,
3365  311, 311, 311, 311, 313, 313, 313, 313, 313, 0,
3366  310, 304, 305, 305, 305, 0, 0, 305, 0, 305,
3367  305, 305, 305, 305, 305, 0, 0, 0, 310, 312,
3368  312, 312, 0, 0, 312, 0, 0, 0, 312, 312,
3369  312, 312, 314, 314, 314, 314, 315, 315, 315, 0,
3370  0, 315, 0, 0, 315, 315, 315, 315, 315, 0,
3371  0, 0, 315, 321, 321, 321, 0, 0, 321, 322,
3372 
3373  322, 322, 322, 324, 324, 324, 324, 0, 0, 321,
3374  315, 316, 316, 316, 0, 0, 316, 0, 316, 316,
3375  316, 316, 316, 316, 0, 0, 0, 321, 323, 323,
3376  323, 0, 0, 323, 0, 0, 0, 323, 323, 323,
3377  323, 325, 325, 325, 325, 327, 327, 327, 327, 327,
3378  328, 328, 328, 328, 329, 329, 329, 0, 0, 329,
3379  0, 0, 329, 329, 329, 329, 329, 0, 0, 0,
3380  329, 335, 335, 335, 0, 0, 335, 336, 336, 336,
3381  336, 338, 338, 338, 338, 338, 0, 335, 329, 330,
3382  330, 330, 0, 0, 330, 0, 330, 330, 330, 330,
3383 
3384  330, 330, 0, 0, 0, 335, 337, 337, 337, 0,
3385  0, 337, 0, 0, 0, 337, 337, 337, 337, 339,
3386  339, 339, 339, 340, 340, 340, 340, 340, 0, 0,
3387  0, 340, 347, 347, 347, 347, 349, 349, 349, 349,
3388  349, 350, 350, 350, 350, 358, 358, 358, 358, 340,
3389  341, 341, 341, 0, 0, 341, 0, 341, 341, 341,
3390  341, 341, 341, 348, 348, 348, 0, 0, 348, 0,
3391  0, 0, 348, 348, 348, 348, 351, 351, 351, 0,
3392  0, 351, 0, 0, 351, 351, 351, 351, 351, 0,
3393  0, 0, 351, 357, 357, 357, 0, 0, 357, 371,
3394 
3395  371, 371, 371, 371, 381, 381, 381, 381, 381, 357,
3396  351, 352, 352, 352, 0, 0, 352, 0, 352, 352,
3397  352, 352, 352, 352, 0, 0, 0, 357, 359, 359,
3398  359, 0, 0, 359, 0, 0, 0, 359, 359, 359,
3399  359, 361, 361, 361, 374, 374, 361, 374, 374, 374,
3400  374, 378, 378, 0, 378, 378, 378, 378, 0, 0,
3401  361, 372, 372, 372, 0, 0, 372, 0, 372, 372,
3402  372, 372, 372, 372, 373, 373, 373, 0, 0, 373,
3403  0, 373, 373, 373, 373, 373, 373, 375, 375, 375,
3404  0, 0, 375, 0, 375, 375, 375, 375, 375, 375,
3405 
3406  376, 376, 376, 0, 0, 376, 0, 376, 376, 376,
3407  376, 376, 376, 377, 377, 377, 0, 0, 377, 0,
3408  377, 377, 377, 377, 377, 377, 380, 380, 380, 380,
3409  380, 380, 380, 380, 380, 384, 384, 0, 384, 384,
3410  384, 384, 389, 389, 389, 389, 380, 0, 0, 389,
3411  380, 380, 380, 390, 390, 0, 390, 390, 390, 390,
3412  0, 0, 380, 382, 382, 382, 0, 389, 382, 0,
3413  382, 382, 382, 382, 382, 382, 383, 383, 383, 0,
3414  0, 383, 0, 383, 383, 383, 383, 383, 383, 385,
3415  385, 385, 0, 0, 385, 0, 385, 385, 385, 385,
3416 
3417  385, 385, 386, 386, 386, 0, 0, 386, 0, 386,
3418  386, 386, 386, 386, 386, 387, 387, 387, 0, 0,
3419  387, 0, 387, 387, 387, 387, 387, 387, 388, 388,
3420  388, 0, 0, 388, 388, 388, 388, 388, 388, 388,
3421  388, 391, 391, 391, 0, 0, 391, 391, 391, 391,
3422  391, 391, 391, 391, 392, 392, 392, 0, 0, 392,
3423  0, 0, 0, 392, 392, 392, 392, 0, 395, 395,
3424  392, 395, 395, 395, 395, 403, 403, 0, 403, 403,
3425  403, 403, 427, 427, 427, 0, 0, 427, 392, 393,
3426  393, 393, 0, 0, 393, 0, 393, 393, 393, 393,
3427 
3428  393, 393, 394, 394, 394, 0, 0, 394, 0, 394,
3429  394, 394, 394, 394, 394, 396, 396, 396, 0, 0,
3430  396, 0, 396, 396, 396, 396, 396, 396, 397, 397,
3431  397, 0, 0, 397, 0, 397, 397, 397, 397, 397,
3432  397, 398, 398, 398, 0, 0, 398, 0, 398, 398,
3433  398, 398, 398, 398, 399, 399, 399, 0, 0, 399,
3434  399, 399, 399, 399, 399, 399, 399, 400, 400, 400,
3435  0, 0, 400, 0, 0, 0, 400, 400, 400, 400,
3436  0, 411, 411, 400, 411, 411, 411, 411, 435, 435,
3437  435, 435, 435, 416, 416, 416, 416, 0, 0, 0,
3438 
3439  416, 400, 401, 401, 401, 0, 0, 401, 0, 401,
3440  401, 401, 401, 401, 401, 402, 402, 402, 416, 0,
3441  402, 0, 402, 402, 402, 402, 402, 402, 404, 404,
3442  404, 0, 0, 404, 0, 404, 404, 404, 404, 404,
3443  404, 405, 405, 405, 0, 0, 405, 0, 405, 405,
3444  405, 405, 405, 405, 406, 406, 406, 0, 0, 406,
3445  0, 406, 406, 406, 406, 406, 406, 407, 407, 407,
3446  0, 0, 407, 407, 407, 407, 407, 407, 407, 407,
3447  408, 408, 408, 0, 0, 408, 0, 0, 0, 408,
3448  408, 408, 408, 0, 417, 417, 408, 417, 417, 417,
3449 
3450  417, 422, 422, 0, 422, 422, 422, 422, 436, 436,
3451  436, 436, 0, 0, 408, 409, 409, 409, 0, 0,
3452  409, 0, 409, 409, 409, 409, 409, 409, 410, 410,
3453  410, 0, 0, 410, 0, 410, 410, 410, 410, 410,
3454  410, 412, 412, 412, 0, 0, 412, 0, 412, 412,
3455  412, 412, 412, 412, 413, 413, 413, 0, 0, 413,
3456  0, 413, 413, 413, 413, 413, 413, 414, 414, 414,
3457  0, 0, 414, 0, 414, 414, 414, 414, 414, 414,
3458  415, 415, 415, 0, 0, 415, 415, 415, 415, 415,
3459  415, 415, 415, 418, 418, 418, 0, 0, 418, 418,
3460 
3461  418, 418, 418, 418, 418, 418, 419, 419, 419, 0,
3462  0, 419, 0, 0, 0, 419, 419, 419, 419, 0,
3463  0, 0, 419, 444, 444, 444, 444, 451, 451, 451,
3464  451, 437, 437, 437, 437, 437, 0, 0, 0, 437,
3465  419, 420, 420, 420, 0, 0, 420, 0, 420, 420,
3466  420, 420, 420, 420, 421, 421, 421, 437, 0, 421,
3467  0, 421, 421, 421, 421, 421, 421, 423, 423, 423,
3468  0, 0, 423, 0, 423, 423, 423, 423, 423, 423,
3469  424, 424, 424, 0, 0, 424, 0, 424, 424, 424,
3470  424, 424, 424, 425, 425, 425, 0, 0, 425, 0,
3471 
3472  425, 425, 425, 425, 425, 425, 426, 426, 426, 0,
3473  0, 426, 426, 426, 426, 426, 426, 426, 426, 438,
3474  438, 438, 0, 0, 438, 0, 438, 438, 438, 438,
3475  438, 438, 439, 439, 439, 0, 0, 439, 0, 439,
3476  439, 439, 439, 439, 439, 445, 445, 445, 0, 0,
3477  445, 0, 0, 0, 445, 445, 445, 445, 446, 446,
3478  446, 0, 0, 446, 0, 446, 446, 446, 446, 446,
3479  446, 447, 447, 447, 0, 0, 447, 0, 447, 447,
3480  447, 447, 447, 447, 448, 448, 448, 0, 0, 448,
3481  0, 0, 448, 448, 448, 448, 448, 0, 0, 0,
3482 
3483  448, 450, 450, 450, 450, 450, 459, 459, 459, 459,
3484  460, 460, 460, 460, 467, 467, 467, 467, 448, 449,
3485  449, 449, 0, 0, 449, 0, 449, 449, 449, 449,
3486  449, 449, 452, 452, 452, 0, 0, 452, 0, 0,
3487  452, 452, 452, 452, 452, 0, 0, 0, 452, 466,
3488  466, 466, 466, 466, 461, 461, 461, 461, 461, 686,
3489  686, 686, 461, 0, 686, 0, 452, 453, 453, 453,
3490  686, 0, 453, 0, 453, 453, 453, 453, 453, 453,
3491  461, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3492  463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3493 
3494  463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3495  463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3496  463, 463, 463, 463, 463, 463, 463, 463, 468, 468,
3497  468, 0, 0, 468, 0, 0, 468, 468, 468, 468,
3498  468, 0, 0, 0, 468, 474, 474, 474, 0, 0,
3499  474, 475, 475, 475, 475, 481, 481, 481, 481, 481,
3500  0, 474, 468, 469, 469, 469, 0, 0, 469, 0,
3501  469, 469, 469, 469, 469, 469, 470, 470, 470, 474,
3502  0, 470, 0, 470, 470, 470, 470, 470, 470, 476,
3503  476, 476, 0, 0, 476, 0, 0, 0, 476, 476,
3504 
3505  476, 476, 477, 477, 477, 0, 0, 477, 0, 477,
3506  477, 477, 477, 477, 477, 478, 478, 478, 0, 0,
3507  478, 0, 478, 478, 478, 478, 478, 478, 479, 479,
3508  479, 0, 0, 479, 0, 0, 479, 479, 479, 479,
3509  479, 0, 0, 0, 479, 482, 482, 482, 482, 490,
3510  490, 490, 490, 491, 491, 491, 491, 493, 493, 493,
3511  493, 0, 479, 480, 480, 480, 0, 0, 480, 0,
3512  480, 480, 480, 480, 480, 480, 483, 483, 483, 0,
3513  0, 483, 0, 0, 483, 483, 483, 483, 483, 0,
3514  0, 0, 483, 489, 489, 489, 0, 0, 489, 494,
3515 
3516  494, 494, 494, 498, 498, 498, 498, 498, 0, 489,
3517  483, 484, 484, 484, 0, 0, 484, 0, 484, 484,
3518  484, 484, 484, 484, 0, 0, 0, 489, 492, 492,
3519  492, 0, 0, 492, 0, 0, 0, 492, 492, 492,
3520  492, 0, 0, 0, 492, 499, 499, 499, 499, 507,
3521  507, 507, 507, 500, 500, 500, 500, 500, 0, 0,
3522  0, 500, 492, 495, 495, 495, 0, 0, 495, 0,
3523  495, 495, 495, 495, 495, 495, 496, 496, 496, 500,
3524  0, 496, 0, 496, 496, 496, 496, 496, 496, 501,
3525  501, 501, 0, 0, 501, 0, 501, 501, 501, 501,
3526 
3527  501, 501, 502, 502, 502, 0, 0, 502, 0, 502,
3528  502, 502, 502, 502, 502, 508, 508, 508, 0, 0,
3529  508, 0, 0, 0, 508, 508, 508, 508, 509, 509,
3530  509, 0, 0, 509, 0, 509, 509, 509, 509, 509,
3531  509, 510, 510, 510, 0, 0, 510, 0, 510, 510,
3532  510, 510, 510, 510, 511, 511, 511, 0, 0, 511,
3533  0, 0, 511, 511, 511, 511, 511, 0, 0, 0,
3534  511, 513, 513, 513, 513, 513, 514, 514, 514, 514,
3535  522, 522, 522, 522, 523, 523, 523, 523, 511, 512,
3536  512, 512, 0, 0, 512, 0, 512, 512, 512, 512,
3537 
3538  512, 512, 515, 515, 515, 0, 0, 515, 0, 0,
3539  515, 515, 515, 515, 515, 0, 0, 0, 515, 525,
3540  525, 525, 525, 525, 524, 524, 524, 524, 524, 928,
3541  928, 928, 524, 0, 928, 0, 515, 516, 516, 516,
3542  0, 0, 516, 0, 516, 516, 516, 516, 516, 516,
3543  524, 526, 526, 526, 526, 527, 527, 527, 527, 527,
3544  0, 0, 0, 527, 534, 534, 534, 534, 540, 540,
3545  540, 540, 540, 541, 541, 541, 541, 549, 549, 549,
3546  549, 527, 528, 528, 528, 0, 0, 528, 0, 528,
3547  528, 528, 528, 528, 528, 529, 529, 529, 0, 0,
3548 
3549  529, 0, 529, 529, 529, 529, 529, 529, 535, 535,
3550  535, 0, 0, 535, 0, 0, 0, 535, 535, 535,
3551  535, 536, 536, 536, 0, 0, 536, 0, 536, 536,
3552  536, 536, 536, 536, 537, 537, 537, 0, 0, 537,
3553  0, 537, 537, 537, 537, 537, 537, 538, 538, 538,
3554  0, 0, 538, 0, 0, 538, 538, 538, 538, 538,
3555  0, 0, 0, 538, 550, 550, 550, 550, 553, 553,
3556  553, 553, 551, 551, 551, 551, 551, 0, 0, 0,
3557  551, 538, 539, 539, 539, 0, 0, 539, 0, 539,
3558  539, 539, 539, 539, 539, 542, 542, 542, 551, 0,
3559 
3560  542, 0, 0, 542, 542, 542, 542, 542, 0, 0,
3561  0, 542, 552, 552, 552, 552, 552, 561, 561, 561,
3562  561, 567, 567, 567, 567, 567, 0, 0, 0, 542,
3563  543, 543, 543, 0, 0, 543, 0, 543, 543, 543,
3564  543, 543, 543, 554, 554, 554, 0, 0, 554, 0,
3565  0, 554, 554, 554, 554, 554, 0, 0, 0, 554,
3566  560, 560, 560, 0, 0, 560, 568, 568, 568, 568,
3567  576, 576, 576, 576, 0, 0, 560, 554, 555, 555,
3568  555, 0, 0, 555, 0, 555, 555, 555, 555, 555,
3569  555, 556, 556, 556, 560, 0, 556, 0, 556, 556,
3570 
3571  556, 556, 556, 556, 562, 562, 562, 0, 0, 562,
3572  0, 0, 0, 562, 562, 562, 562, 563, 563, 563,
3573  0, 0, 563, 0, 563, 563, 563, 563, 563, 563,
3574  564, 564, 564, 0, 0, 564, 0, 564, 564, 564,
3575  564, 564, 564, 565, 565, 565, 0, 0, 565, 0,
3576  0, 565, 565, 565, 565, 565, 0, 0, 0, 565,
3577  575, 575, 575, 0, 0, 575, 577, 577, 577, 577,
3578  579, 579, 579, 579, 0, 0, 575, 565, 566, 566,
3579  566, 0, 0, 566, 0, 566, 566, 566, 566, 566,
3580  566, 569, 569, 569, 575, 0, 569, 0, 0, 569,
3581 
3582  569, 569, 569, 569, 0, 0, 0, 569, 580, 580,
3583  580, 580, 584, 584, 584, 584, 584, 585, 585, 585,
3584  585, 593, 593, 593, 593, 569, 570, 570, 570, 0,
3585  0, 570, 0, 570, 570, 570, 570, 570, 570, 578,
3586  578, 578, 0, 0, 578, 0, 0, 0, 578, 578,
3587  578, 578, 0, 0, 0, 578, 599, 599, 599, 599,
3588  599, 0, 0, 0, 586, 586, 586, 586, 586, 0,
3589  0, 0, 586, 578, 581, 581, 581, 0, 0, 581,
3590  0, 581, 581, 581, 581, 581, 581, 582, 582, 582,
3591  586, 0, 582, 0, 582, 582, 582, 582, 582, 582,
3592 
3593  587, 587, 587, 0, 0, 587, 0, 587, 587, 587,
3594  587, 587, 587, 588, 588, 588, 0, 0, 588, 0,
3595  588, 588, 588, 588, 588, 588, 594, 594, 594, 0,
3596  0, 594, 0, 0, 0, 594, 594, 594, 594, 595,
3597  595, 595, 0, 0, 595, 0, 595, 595, 595, 595,
3598  595, 595, 596, 596, 596, 0, 0, 596, 0, 596,
3599  596, 596, 596, 596, 596, 597, 597, 597, 0, 0,
3600  597, 0, 0, 597, 597, 597, 597, 597, 0, 0,
3601  0, 597, 600, 600, 600, 600, 608, 608, 608, 608,
3602  609, 609, 609, 609, 691, 691, 691, 691, 0, 597,
3603 
3604  598, 598, 598, 0, 0, 598, 0, 598, 598, 598,
3605  598, 598, 598, 601, 601, 601, 0, 0, 601, 0,
3606  0, 601, 601, 601, 601, 601, 611, 611, 611, 601,
3607  0, 611, 0, 0, 0, 610, 610, 610, 610, 610,
3608  937, 937, 937, 610, 0, 937, 0, 601, 602, 602,
3609  602, 0, 937, 602, 611, 602, 602, 602, 602, 602,
3610  602, 610, 616, 616, 616, 616, 0, 617, 617, 616,
3611  617, 617, 617, 617, 622, 622, 0, 622, 622, 622,
3612  622, 692, 692, 692, 692, 0, 0, 616, 618, 618,
3613  618, 0, 0, 618, 618, 618, 618, 618, 618, 618,
3614 
3615  618, 619, 619, 619, 0, 0, 619, 0, 619, 619,
3616  619, 619, 619, 619, 0, 627, 627, 619, 627, 627,
3617  627, 627, 639, 639, 0, 639, 639, 639, 639, 699,
3618  699, 699, 699, 0, 0, 619, 620, 620, 620, 0,
3619  0, 620, 620, 620, 620, 620, 620, 620, 620, 621,
3620  621, 621, 0, 0, 621, 0, 0, 0, 621, 621,
3621  621, 621, 0, 644, 644, 621, 644, 644, 644, 644,
3622  704, 704, 704, 704, 704, 643, 643, 643, 643, 0,
3623  0, 0, 643, 621, 623, 623, 623, 0, 0, 623,
3624  623, 623, 623, 623, 623, 623, 623, 624, 624, 624,
3625 
3626  643, 0, 624, 0, 0, 0, 624, 624, 624, 624,
3627  0, 649, 649, 624, 649, 649, 649, 649, 705, 705,
3628  705, 705, 0, 651, 651, 651, 651, 0, 0, 0,
3629  651, 624, 625, 625, 625, 0, 0, 625, 0, 625,
3630  625, 625, 625, 625, 625, 626, 626, 626, 651, 0,
3631  626, 0, 626, 626, 626, 626, 626, 626, 628, 628,
3632  628, 0, 0, 628, 0, 628, 628, 628, 628, 628,
3633  628, 629, 629, 629, 0, 0, 629, 0, 629, 629,
3634  629, 629, 629, 629, 630, 630, 630, 0, 0, 630,
3635  0, 630, 630, 630, 630, 630, 630, 631, 631, 631,
3636 
3637  0, 0, 631, 631, 631, 631, 631, 631, 631, 631,
3638  632, 632, 632, 0, 0, 632, 0, 632, 632, 632,
3639  632, 632, 632, 0, 652, 652, 632, 652, 652, 652,
3640  652, 657, 657, 0, 657, 657, 657, 657, 713, 713,
3641  713, 713, 0, 0, 632, 633, 633, 633, 0, 0,
3642  633, 0, 633, 633, 633, 633, 633, 633, 634, 634,
3643  634, 0, 0, 634, 0, 634, 634, 634, 634, 634,
3644  634, 635, 635, 635, 0, 0, 635, 0, 635, 635,
3645  635, 635, 635, 635, 636, 636, 636, 0, 0, 636,
3646  636, 636, 636, 636, 636, 636, 636, 637, 637, 637,
3647 
3648  0, 0, 637, 0, 0, 0, 637, 637, 637, 637,
3649  0, 662, 662, 637, 662, 662, 662, 662, 674, 674,
3650  0, 674, 674, 674, 674, 718, 718, 718, 718, 718,
3651  0, 637, 638, 638, 638, 0, 0, 638, 0, 638,
3652  638, 638, 638, 638, 638, 640, 640, 640, 0, 0,
3653  640, 0, 640, 640, 640, 640, 640, 640, 641, 641,
3654  641, 0, 0, 641, 0, 641, 641, 641, 641, 641,
3655  641, 642, 642, 642, 0, 0, 642, 642, 642, 642,
3656  642, 642, 642, 642, 645, 645, 645, 0, 0, 645,
3657  645, 645, 645, 645, 645, 645, 645, 646, 646, 646,
3658 
3659  0, 0, 646, 0, 646, 646, 646, 646, 646, 646,
3660  0, 679, 679, 646, 679, 679, 679, 679, 719, 719,
3661  719, 719, 0, 678, 678, 678, 678, 0, 0, 0,
3662  678, 646, 647, 647, 647, 0, 0, 647, 647, 647,
3663  647, 647, 647, 647, 647, 648, 648, 648, 678, 0,
3664  648, 0, 0, 0, 648, 648, 648, 648, 0, 684,
3665  684, 648, 684, 684, 684, 684, 727, 727, 727, 727,
3666  706, 706, 706, 706, 706, 0, 0, 0, 706, 648,
3667  650, 650, 650, 0, 0, 650, 650, 650, 650, 650,
3668  650, 650, 650, 653, 653, 653, 706, 0, 653, 653,
3669 
3670  653, 653, 653, 653, 653, 653, 654, 654, 654, 0,
3671  0, 654, 0, 654, 654, 654, 654, 654, 654, 0,
3672  0, 0, 654, 698, 698, 698, 0, 0, 698, 728,
3673  728, 728, 728, 734, 734, 734, 734, 734, 0, 698,
3674  654, 655, 655, 655, 0, 0, 655, 655, 655, 655,
3675  655, 655, 655, 655, 656, 656, 656, 698, 0, 656,
3676  0, 0, 0, 656, 656, 656, 656, 0, 0, 0,
3677  656, 735, 735, 735, 735, 743, 743, 743, 743, 729,
3678  729, 729, 729, 729, 0, 0, 0, 729, 656, 658,
3679  658, 658, 0, 0, 658, 658, 658, 658, 658, 658,
3680 
3681  658, 658, 659, 659, 659, 729, 0, 659, 0, 0,
3682  0, 659, 659, 659, 659, 0, 0, 0, 659, 744,
3683  744, 744, 744, 746, 746, 746, 746, 745, 745, 745,
3684  745, 745, 0, 0, 0, 745, 659, 660, 660, 660,
3685  0, 0, 660, 0, 660, 660, 660, 660, 660, 660,
3686  661, 661, 661, 745, 0, 661, 0, 661, 661, 661,
3687  661, 661, 661, 663, 663, 663, 0, 0, 663, 0,
3688  663, 663, 663, 663, 663, 663, 664, 664, 664, 0,
3689  0, 664, 0, 664, 664, 664, 664, 664, 664, 665,
3690  665, 665, 0, 0, 665, 0, 665, 665, 665, 665,
3691 
3692  665, 665, 666, 666, 666, 0, 0, 666, 666, 666,
3693  666, 666, 666, 666, 666, 667, 667, 667, 0, 0,
3694  667, 0, 667, 667, 667, 667, 667, 667, 0, 0,
3695  0, 667, 751, 751, 751, 751, 752, 752, 752, 752,
3696  753, 753, 753, 753, 753, 0, 0, 0, 753, 667,
3697  668, 668, 668, 0, 0, 668, 0, 668, 668, 668,
3698  668, 668, 668, 669, 669, 669, 753, 0, 669, 0,
3699  669, 669, 669, 669, 669, 669, 670, 670, 670, 0,
3700  0, 670, 0, 670, 670, 670, 670, 670, 670, 671,
3701  671, 671, 0, 0, 671, 671, 671, 671, 671, 671,
3702 
3703  671, 671, 672, 672, 672, 0, 0, 672, 0, 0,
3704  0, 672, 672, 672, 672, 0, 0, 0, 672, 754,
3705  754, 754, 754, 755, 755, 755, 755, 762, 762, 762,
3706  762, 767, 767, 767, 767, 0, 672, 673, 673, 673,
3707  0, 0, 673, 0, 673, 673, 673, 673, 673, 673,
3708  675, 675, 675, 0, 0, 675, 0, 675, 675, 675,
3709  675, 675, 675, 676, 676, 676, 0, 0, 676, 0,
3710  676, 676, 676, 676, 676, 676, 677, 677, 677, 0,
3711  0, 677, 677, 677, 677, 677, 677, 677, 677, 680,
3712  680, 680, 0, 0, 680, 680, 680, 680, 680, 680,
3713 
3714  680, 680, 681, 681, 681, 0, 0, 681, 0, 681,
3715  681, 681, 681, 681, 681, 0, 0, 0, 681, 761,
3716  761, 761, 0, 0, 761, 768, 768, 768, 768, 775,
3717  775, 775, 775, 0, 0, 761, 681, 682, 682, 682,
3718  0, 0, 682, 682, 682, 682, 682, 682, 682, 682,
3719  683, 683, 683, 761, 0, 683, 0, 0, 0, 683,
3720  683, 683, 683, 0, 0, 0, 683, 774, 774, 774,
3721  0, 0, 774, 780, 780, 780, 780, 780, 781, 781,
3722  781, 781, 0, 774, 683, 685, 685, 685, 0, 0,
3723  685, 685, 685, 685, 685, 685, 685, 685, 693, 693,
3724 
3725  693, 774, 0, 693, 0, 693, 693, 693, 693, 693,
3726  693, 694, 694, 694, 0, 0, 694, 0, 694, 694,
3727  694, 694, 694, 694, 696, 696, 696, 0, 0, 696,
3728  0, 696, 696, 696, 696, 696, 696, 697, 697, 697,
3729  0, 0, 697, 0, 697, 697, 697, 697, 697, 697,
3730  700, 700, 700, 0, 0, 700, 0, 0, 0, 700,
3731  700, 700, 700, 701, 701, 701, 0, 0, 701, 0,
3732  701, 701, 701, 701, 701, 701, 702, 702, 702, 0,
3733  0, 702, 0, 702, 702, 702, 702, 702, 702, 707,
3734  707, 707, 0, 0, 707, 0, 707, 707, 707, 707,
3735 
3736  707, 707, 708, 708, 708, 0, 0, 708, 0, 708,
3737  708, 708, 708, 708, 708, 714, 714, 714, 0, 0,
3738  714, 0, 0, 0, 714, 714, 714, 714, 715, 715,
3739  715, 0, 0, 715, 0, 715, 715, 715, 715, 715,
3740  715, 716, 716, 716, 0, 0, 716, 0, 716, 716,
3741  716, 716, 716, 716, 717, 717, 717, 0, 0, 717,
3742  0, 0, 717, 717, 717, 717, 717, 0, 0, 0,
3743  717, 789, 789, 789, 789, 0, 782, 782, 782, 782,
3744  782, 938, 938, 938, 782, 0, 938, 0, 717, 720,
3745  720, 720, 0, 0, 720, 0, 0, 720, 720, 720,
3746 
3747  720, 720, 782, 0, 0, 720, 794, 794, 794, 794,
3748  794, 795, 795, 795, 795, 803, 803, 803, 803, 804,
3749  804, 804, 804, 720, 721, 721, 721, 0, 0, 721,
3750  0, 721, 721, 721, 721, 721, 721, 722, 722, 722,
3751  0, 0, 722, 0, 722, 722, 722, 722, 722, 722,
3752  730, 730, 730, 0, 0, 730, 0, 730, 730, 730,
3753  730, 730, 730, 731, 731, 731, 0, 0, 731, 0,
3754  731, 731, 731, 731, 731, 731, 732, 732, 732, 0,
3755  0, 732, 0, 0, 732, 732, 732, 732, 732, 0,
3756  0, 0, 732, 810, 810, 810, 810, 810, 0, 0,
3757 
3758  0, 805, 805, 805, 805, 805, 0, 0, 0, 805,
3759  732, 733, 733, 733, 0, 0, 733, 0, 733, 733,
3760  733, 733, 733, 733, 736, 736, 736, 805, 0, 736,
3761  0, 0, 736, 736, 736, 736, 736, 0, 0, 0,
3762  736, 811, 811, 811, 811, 819, 819, 819, 819, 820,
3763  820, 820, 820, 822, 822, 822, 822, 0, 736, 737,
3764  737, 737, 0, 0, 737, 0, 737, 737, 737, 737,
3765  737, 737, 747, 747, 747, 0, 0, 747, 0, 0,
3766  0, 747, 747, 747, 747, 748, 748, 748, 0, 0,
3767  748, 0, 748, 748, 748, 748, 748, 748, 749, 749,
3768 
3769  749, 0, 0, 749, 0, 749, 749, 749, 749, 749,
3770  749, 750, 750, 750, 0, 0, 750, 0, 0, 750,
3771  750, 750, 750, 750, 0, 0, 0, 750, 827, 827,
3772  827, 827, 828, 828, 828, 828, 821, 821, 821, 821,
3773  821, 0, 0, 0, 821, 750, 756, 756, 756, 0,
3774  0, 756, 0, 756, 756, 756, 756, 756, 756, 757,
3775  757, 757, 821, 0, 757, 0, 757, 757, 757, 757,
3776  757, 757, 759, 759, 759, 0, 0, 759, 0, 759,
3777  759, 759, 759, 759, 759, 760, 760, 760, 0, 0,
3778  760, 0, 760, 760, 760, 760, 760, 760, 763, 763,
3779 
3780  763, 0, 0, 763, 0, 0, 0, 763, 763, 763,
3781  763, 764, 764, 764, 0, 0, 764, 0, 764, 764,
3782  764, 764, 764, 764, 765, 765, 765, 0, 0, 765,
3783  0, 765, 765, 765, 765, 765, 765, 769, 769, 769,
3784  0, 0, 769, 0, 769, 769, 769, 769, 769, 769,
3785  770, 770, 770, 0, 0, 770, 0, 770, 770, 770,
3786  770, 770, 770, 772, 772, 772, 0, 0, 772, 0,
3787  772, 772, 772, 772, 772, 772, 773, 773, 773, 0,
3788  0, 773, 0, 773, 773, 773, 773, 773, 773, 776,
3789  776, 776, 0, 0, 776, 0, 0, 0, 776, 776,
3790 
3791  776, 776, 777, 777, 777, 0, 0, 777, 0, 777,
3792  777, 777, 777, 777, 777, 778, 778, 778, 0, 0,
3793  778, 0, 778, 778, 778, 778, 778, 778, 783, 783,
3794  783, 0, 0, 783, 0, 783, 783, 783, 783, 783,
3795  783, 784, 784, 784, 0, 0, 784, 0, 784, 784,
3796  784, 784, 784, 784, 790, 790, 790, 0, 0, 790,
3797  0, 0, 0, 790, 790, 790, 790, 791, 791, 791,
3798  0, 0, 791, 0, 791, 791, 791, 791, 791, 791,
3799  792, 792, 792, 0, 0, 792, 0, 792, 792, 792,
3800  792, 792, 792, 793, 793, 793, 0, 0, 793, 0,
3801 
3802  0, 793, 793, 793, 793, 793, 0, 0, 0, 793,
3803  830, 830, 830, 830, 0, 829, 829, 829, 829, 829,
3804  939, 939, 939, 829, 0, 939, 0, 793, 796, 796,
3805  796, 0, 0, 796, 0, 0, 796, 796, 796, 796,
3806  796, 829, 0, 0, 796, 831, 831, 831, 831, 838,
3807  838, 838, 838, 843, 843, 843, 0, 0, 843, 0,
3808  0, 843, 796, 797, 797, 797, 0, 0, 797, 0,
3809  797, 797, 797, 797, 797, 797, 798, 798, 798, 0,
3810  0, 798, 0, 798, 798, 798, 798, 798, 798, 806,
3811  806, 806, 0, 0, 806, 0, 806, 806, 806, 806,
3812 
3813  806, 806, 807, 807, 807, 0, 0, 807, 0, 807,
3814  807, 807, 807, 807, 807, 808, 808, 808, 0, 0,
3815  808, 0, 0, 808, 808, 808, 808, 808, 0, 0,
3816  0, 808, 837, 837, 837, 848, 848, 837, 848, 848,
3817  848, 848, 865, 865, 865, 865, 865, 0, 837, 808,
3818  809, 809, 809, 0, 0, 809, 0, 809, 809, 809,
3819  809, 809, 809, 812, 812, 812, 837, 0, 812, 0,
3820  0, 812, 812, 812, 812, 812, 0, 853, 853, 812,
3821  853, 853, 853, 853, 867, 867, 867, 867, 867, 847,
3822  847, 847, 847, 0, 0, 0, 847, 812, 813, 813,
3823 
3824  813, 0, 0, 813, 0, 813, 813, 813, 813, 813,
3825  813, 823, 823, 823, 847, 0, 823, 0, 0, 0,
3826  823, 823, 823, 823, 824, 824, 824, 0, 0, 824,
3827  0, 824, 824, 824, 824, 824, 824, 825, 825, 825,
3828  0, 0, 825, 0, 825, 825, 825, 825, 825, 825,
3829  826, 826, 826, 0, 0, 826, 0, 0, 826, 826,
3830  826, 826, 826, 0, 858, 858, 826, 858, 858, 858,
3831  858, 870, 870, 870, 870, 870, 862, 862, 862, 862,
3832  0, 0, 0, 862, 826, 832, 832, 832, 0, 0,
3833  832, 0, 832, 832, 832, 832, 832, 832, 833, 833,
3834 
3835  833, 862, 0, 833, 0, 833, 833, 833, 833, 833,
3836  833, 835, 835, 835, 0, 0, 835, 0, 835, 835,
3837  835, 835, 835, 835, 836, 836, 836, 0, 0, 836,
3838  0, 836, 836, 836, 836, 836, 836, 839, 839, 839,
3839  0, 0, 839, 0, 0, 0, 839, 839, 839, 839,
3840  840, 840, 840, 0, 0, 840, 0, 840, 840, 840,
3841  840, 840, 840, 841, 841, 841, 0, 0, 841, 0,
3842  841, 841, 841, 841, 841, 841, 849, 849, 849, 0,
3843  0, 849, 849, 849, 849, 849, 849, 849, 849, 850,
3844  850, 850, 0, 0, 850, 0, 850, 850, 850, 850,
3845 
3846  850, 850, 0, 863, 863, 850, 863, 863, 863, 863,
3847  864, 864, 0, 864, 864, 864, 864, 872, 872, 872,
3848  872, 872, 0, 850, 851, 851, 851, 0, 0, 851,
3849  851, 851, 851, 851, 851, 851, 851, 852, 852, 852,
3850  0, 0, 852, 0, 0, 0, 852, 852, 852, 852,
3851  0, 866, 866, 852, 866, 866, 866, 866, 868, 868,
3852  0, 868, 868, 868, 868, 875, 875, 875, 875, 875,
3853  0, 852, 854, 854, 854, 0, 0, 854, 854, 854,
3854  854, 854, 854, 854, 854, 855, 855, 855, 0, 0,
3855  855, 0, 855, 855, 855, 855, 855, 855, 0, 869,
3856 
3857  869, 855, 869, 869, 869, 869, 871, 871, 0, 871,
3858  871, 871, 871, 880, 880, 880, 880, 0, 0, 855,
3859  856, 856, 856, 0, 0, 856, 856, 856, 856, 856,
3860  856, 856, 856, 857, 857, 857, 0, 0, 857, 0,
3861  0, 0, 857, 857, 857, 857, 0, 873, 873, 857,
3862  873, 873, 873, 873, 874, 874, 0, 874, 874, 874,
3863  874, 881, 881, 881, 881, 0, 0, 857, 859, 859,
3864  859, 0, 0, 859, 859, 859, 859, 859, 859, 859,
3865  859, 860, 860, 860, 0, 0, 860, 0, 860, 860,
3866  860, 860, 860, 860, 0, 876, 876, 860, 876, 876,
3867 
3868  876, 876, 877, 877, 877, 0, 0, 877, 940, 940,
3869  940, 877, 0, 940, 0, 860, 861, 861, 861, 0,
3870  0, 861, 861, 861, 861, 861, 861, 861, 861, 882,
3871  882, 882, 0, 0, 882, 0, 882, 882, 882, 882,
3872  882, 882, 887, 887, 887, 0, 0, 887, 887, 887,
3873  888, 888, 888, 888, 896, 896, 896, 896, 887, 904,
3874  904, 904, 904, 905, 905, 905, 905, 906, 906, 906,
3875  906, 907, 907, 907, 907, 0, 887, 889, 889, 889,
3876  0, 0, 889, 0, 0, 0, 889, 889, 889, 889,
3877  890, 890, 890, 0, 0, 890, 0, 890, 890, 890,
3878 
3879  890, 890, 890, 895, 895, 895, 0, 0, 895, 895,
3880  895, 908, 908, 908, 908, 0, 0, 0, 908, 895,
3881  909, 909, 909, 909, 910, 910, 910, 910, 912, 912,
3882  912, 912, 914, 914, 914, 914, 908, 895, 897, 897,
3883  897, 0, 0, 897, 0, 0, 0, 897, 897, 897,
3884  897, 898, 898, 898, 0, 0, 898, 0, 898, 898,
3885  898, 898, 898, 898, 903, 903, 903, 0, 0, 903,
3886  903, 903, 0, 911, 911, 911, 911, 911, 0, 0,
3887  903, 911, 915, 915, 915, 915, 0, 0, 916, 916,
3888  916, 916, 936, 936, 936, 916, 0, 936, 903, 911,
3889 
3890  913, 913, 913, 0, 0, 913, 0, 0, 0, 913,
3891  913, 913, 913, 916, 917, 917, 917, 917, 918, 918,
3892  918, 918, 919, 919, 919, 919, 919, 936, 0, 0,
3893  919, 920, 920, 920, 920, 921, 921, 921, 921, 922,
3894  922, 922, 922, 923, 923, 923, 923, 0, 919, 924,
3895  924, 924, 924, 0, 0, 0, 924, 925, 925, 925,
3896  925, 926, 926, 926, 926, 927, 927, 927, 927, 927,
3897  931, 931, 931, 927, 924, 931, 934, 934, 934, 0,
3898  941, 934, 941, 0, 0, 941, 0, 942, 942, 942,
3899  0, 927, 942, 943, 944, 943, 944, 0, 943, 944,
3900 
3901  945, 946, 945, 946, 0, 945, 946, 947, 0, 947,
3902  0, 0, 947, 931, 0, 0, 0, 0, 934, 949,
3903  949, 949, 949, 949, 949, 949, 949, 950, 950, 950,
3904  950, 950, 950, 950, 950, 951, 951, 951, 951, 951,
3905  951, 951, 951, 952, 952, 952, 952, 952, 952, 952,
3906  952, 953, 953, 953, 953, 953, 953, 953, 953, 954,
3907  0, 0, 954, 955, 0, 0, 955, 0, 955, 955,
3908  955, 956, 956, 956, 956, 956, 956, 956, 956, 957,
3909  0, 0, 957, 0, 957, 957, 958, 958, 958, 958,
3910  958, 958, 958, 958, 959, 959, 0, 959, 0, 959,
3911 
3912  959, 959, 960, 960, 960, 960, 960, 960, 960, 960,
3913  961, 961, 0, 961, 961, 961, 961, 961, 962, 962,
3914  962, 962, 962, 962, 962, 962, 963, 963, 963, 963,
3915  963, 963, 963, 963, 964, 964, 0, 0, 964, 964,
3916  966, 966, 966, 966, 966, 966, 966, 966, 967, 967,
3917  967, 967, 967, 967, 967, 967, 968, 968, 968, 968,
3918  968, 968, 968, 968, 969, 969, 969, 969, 969, 969,
3919  969, 969, 971, 971, 971, 971, 971, 971, 971, 971,
3920  972, 972, 972, 972, 972, 972, 972, 972, 973, 973,
3921  973, 973, 973, 973, 973, 973, 974, 974, 0, 974,
3922 
3923  0, 974, 974, 974, 975, 975, 975, 975, 975, 975,
3924  975, 975, 977, 977, 0, 977, 977, 977, 977, 977,
3925  978, 978, 978, 978, 978, 978, 978, 978, 979, 0,
3926  0, 979, 980, 980, 980, 980, 980, 980, 980, 980,
3927  981, 981, 981, 981, 981, 981, 981, 981, 982, 982,
3928  0, 0, 982, 982, 984, 984, 984, 984, 984, 984,
3929  984, 984, 986, 986, 986, 986, 986, 986, 986, 986,
3930  987, 987, 987, 987, 987, 987, 987, 987, 989, 989,
3931  989, 989, 989, 989, 989, 989, 990, 990, 990, 990,
3932  990, 990, 990, 990, 991, 991, 991, 991, 991, 991,
3933 
3934  991, 991, 992, 992, 992, 992, 992, 992, 992, 992,
3935  993, 993, 993, 993, 993, 993, 993, 993, 994, 994,
3936  994, 994, 994, 994, 994, 994, 995, 995, 995, 995,
3937  995, 995, 995, 995, 996, 996, 996, 996, 996, 996,
3938  996, 996, 997, 997, 997, 997, 997, 997, 997, 997,
3939  998, 998, 998, 998, 998, 998, 998, 998, 999, 999,
3940  999, 999, 999, 999, 999, 999, 1000, 1000, 1000, 1000,
3941  1000, 1000, 1000, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
3942  1001, 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
3943  1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004,
3944 
3945  1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005, 1005, 1005,
3946  1005, 1005, 1005, 1005, 1006, 0, 0, 1006, 1007, 1007,
3947  1007, 1007, 1007, 1007, 1007, 1007, 1008, 1008, 1008, 1008,
3948  1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009,
3949  1009, 1009, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
3950  1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013,
3951  1013, 1013, 1013, 1013, 1013, 1013, 1014, 1014, 1014, 1014,
3952  1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015,
3953  1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
3954  1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018,
3955 
3956  1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, 1019,
3957  1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020,
3958  1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
3959  1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023,
3960  1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024,
3961  1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025,
3962  1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
3963  1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028,
3964  1028, 1028, 1028, 1028, 1028, 1028, 1029, 0, 0, 1029,
3965  1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031,
3966 
3967  1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032, 1032, 1032,
3968  1032, 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033,
3969  1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
3970  1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036,
3971  1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, 1037,
3972  1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038,
3973  1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
3974  1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041,
3975  1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042,
3976  1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043,
3977 
3978  1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,
3979  1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, 1046,
3980  1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047, 1047, 1047,
3981  1047, 1047, 1047, 1047, 1048, 1048, 1048, 1048, 1048, 1048,
3982  1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049,
3983  1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051,
3984  1051, 1051, 1051, 1051, 1051, 1051, 1052, 1052, 1052, 1052,
3985  1052, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053,
3986  1053, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054,
3987  1055, 0, 0, 1055, 1056, 1056, 1056, 1056, 1056, 1056,
3988 
3989  1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
3990  1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059,
3991  1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060, 1060, 1060,
3992  1060, 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061,
3993  1061, 1061, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
3994  1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, 1064,
3995  1064, 1064, 1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065,
3996  1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066, 1066,
3997  1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
3998  1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069,
3999 
4000  1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070,
4001  1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071,
4002  1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
4003  1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074,
4004  1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075,
4005  1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076,
4006  1076, 1076, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
4007  1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1079,
4008  1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080,
4009  1080, 1080, 1080, 1080, 1081, 0, 0, 1081, 1082, 1082,
4010 
4011  1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083,
4012  1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084,
4013  1084, 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
4014  1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1087, 1087,
4015  1087, 1087, 1087, 1087, 1087, 1087, 1088, 1088, 1088, 1088,
4016  1088, 1088, 1088, 1088, 1089, 1089, 0, 1089, 1089, 1089,
4017  1089, 1089, 948, 948, 948, 948, 948, 948, 948, 948,
4018  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
4019  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
4020  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
4021 
4022  948, 948, 948, 948, 948, 948, 948, 948, 948, 948
4023 } ;
4024 
4025 //static yy_state_type yy_last_accepting_state;
4026 //static char *yy_last_accepting_cpos;
4027 
4028 //extern int yy_flex_debug;
4029 //int yy_flex_debug = 1;
4030 
4031 static const short int yy_rule_linenum[49] =
4032 { 0,
4033  122, 127, 128, 129, 130, 131, 132, 133, 134, 135,
4034  136, 137, 138, 141, 145, 149, 157, 160, 164, 169,
4035  177, 178, 180, 184, 195, 199, 205, 206, 211, 220,
4036  234, 235, 240, 249, 260, 263, 264, 266, 270, 274,
4037  279, 281, 282, 289, 295, 302, 305, 309
4038 } ;
4039 
4040 /* The intent behind this definition is that it'll catch
4041  * any uses of REJECT which flex missed.
4042  */
4043 #define REJECT reject_used_but_not_detected
4044 #define yymore() yymore_used_but_not_detected
4045 #define YY_MORE_ADJ 0
4046 //char *yytext;
4047 /**************************************************
4048  * VRML 2.0 Parser
4049  * Copyright (C) 1996 Silicon Graphics, Inc.
4050  *
4051  * Author(s) : Gavin Bell
4052  * Daniel Woods (first port)
4053  **************************************************
4054  */
4055 //#include "tokens.h"
4056 #include <string.h>
4057 
4058 // used to reset the lexer input after initialization of VRML nodes
4059 //static void (*theyyInput)(char *, int &, int);
4060 
4061 // We define the YY_INPUT so we an change the input source later
4062 #define YY_INPUT(buf, result, max_size) (*theyyInput)(buf, result, max_size,this);
4063 
4064 /* Current line number */
4065 //int currentLineNumber = 1;
4066 //void yyResetLineNumber() { currentLineNumber = 1; }
4067 
4068 //extern void yyerror(const char *);
4069 
4070  /* The YACC parser sets this to a token to direct the lexer */
4071  /* in cases where just syntax isn't enough: */
4072 //int expectToken = 0;
4073 
4074 /* True when parsing a multiple-valued field: */
4075 //static int parsing_mf = 0;
4076 
4077 /* These are used when parsing SFImage fields: */
4078 //static int sfImageIntsParsed = 0;
4079 //static int sfImageIntsExpected = 0;
4080 
4081 #ifdef __cplusplus
4082 //extern "C"
4083 #endif
4085 
4086 /* Normal state: parsing nodes. The initial start state is used */
4087 /* only to recognize the VRML header. */
4088 /* Start tokens for all of the field types, */
4089 /* except for MFNode and SFNode, which are almost completely handled */
4090 /* by the parser: */
4091 /* Big hairy expression for floating point numbers: */
4092 /* Ints are decimal or hex (0x##): */
4093 /* Whitespace. Using this pattern can screw up currentLineNumber, */
4094 /* so it is only used wherever it is really convenient and it is */
4095 /* extremely unlikely that the user will put in a carriage return */
4096 /* (example: between the floats in an SFVec3f) */
4097 /* And the same pattern without the newline */
4098 /* Legal characters to start an identifier */
4099 /* Legal other characters in an identifier */
4100 
4101 /* Macros after this point can all be overridden by user definitions in
4102  * section 1.
4103  */
4104 
4105 #ifdef YY_MALLOC_DECL
4106 YY_MALLOC_DECL
4107 #else
4108 #if __STDC__
4109 #ifndef __cplusplus
4110 #include <stdlib.h>
4111 #endif
4112 #else
4113 /* Just try to get by without declaring the routines. This will fail
4114  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
4115  * or sizeof(void*) != sizeof(int).
4116  */
4117 #endif
4118 #endif
4119 
4120 /* Amount of stuff to slurp up with each read. */
4121 #ifndef YY_READ_BUF_SIZE
4122 #define YY_READ_BUF_SIZE 8192
4123 #endif
4124 
4125 /* Copy whatever the last rule matched to the standard output. */
4126 
4127 #ifndef ECHO
4128 /* This used to be an fputs(), but since the string might contain NUL's,
4129  * we now use fwrite().
4130  */
4131 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
4132 #endif
4133 
4134 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
4135  * is returned in "result".
4136  */
4137 #ifndef YY_INPUT
4138 #define YY_INPUT(buf,result,max_size) \
4139  if ( yy_current_buffer->yy_is_interactive ) \
4140  { \
4141  int c = getc( yyin ); \
4142  result = c == EOF ? 0 : 1; \
4143  buf[0] = (char) c; \
4144  } \
4145  else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
4146  && ferror( yyin ) ) \
4147  YY_FATAL_ERROR( "input in flex scanner failed" );
4148 #endif
4149 
4150 /* No semi-colon after return; correct usage is to write "yyterminate();" -
4151  * we don't want an extra ';' after the "return" because that will cause
4152  * some compilers to complain about unreachable statements.
4153  */
4154 #ifndef yyterminate
4155 #define yyterminate() return YY_NULL
4156 #endif
4157 
4158 /* Number of entries by which start-condition stack grows. */
4159 #ifndef YY_START_STACK_INCR
4160 #define YY_START_STACK_INCR 25
4161 #endif
4162 
4163 /* Report a fatal error. */
4164 #ifndef YY_FATAL_ERROR
4165 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
4166 #endif
4167 
4168 /* Default declaration of generated scanner - a define so the user can
4169  * easily add parameters.
4170  */
4171 #ifndef YY_DECL
4172 #define YY_DECL int yylex ( vtkVRMLImporter* self )
4173 #endif
4174 
4175 /* Code executed at the beginning of each rule, after yytext and yyleng
4176  * have been set up.
4177  */
4178 #ifndef YY_USER_ACTION
4179 #define YY_USER_ACTION
4180 #endif
4181 
4182 /* Code executed at the end of each rule. */
4183 #ifndef YY_BREAK
4184 #define YY_BREAK break;
4185 #endif
4186 
4187 
4189 {
4190  yy_state_type yy_current_state;
4191  char *yy_cp, *yy_bp;
4192  int yy_act;
4193 
4194 
4195 
4196 
4197  /* Switch into a new start state if the parser */
4198  /* just told us that we've read a field name */
4199  /* and should expect a field value (or IS) */
4200  if (expectToken != 0) {
4201  if (yy_flex_debug)
4202  fprintf(stderr,"LEX--> Start State %d\n", expectToken);
4203 
4204  /*
4205  * Annoying. This big switch is necessary because
4206  * LEX wants to assign particular numbers to start
4207  * tokens, and YACC wants to define all the tokens
4208  * used, too. Sigh.
4209  */
4210  switch(expectToken) {
4211  case SFBOOL: BEGIN SFB; break;
4212  case SFCOLOR: BEGIN SFC; break;
4213  case SFFLOAT: BEGIN SFF; break;
4214  case SFIMAGE: BEGIN SFIMG; break;
4215  case SFINT32: BEGIN SFI; break;
4216  case SFROTATION: BEGIN SFR; break;
4217  case SFSTRING: BEGIN SFS; break;
4218  case SFTIME: BEGIN SFT; break;
4219  case SFVEC2F: BEGIN SFV2; break;
4220  case SFVEC3F: BEGIN SFV3; break;
4221  case MFCOLOR: BEGIN MFC; break;
4222  case MFFLOAT: BEGIN MFF; break;
4223  case MFINT32: BEGIN MFI; break;
4224  case MFROTATION: BEGIN MFR; break;
4225  case MFSTRING: BEGIN MFS; break;
4226  case MFVEC2F: BEGIN MFV2; break;
4227  case MFVEC3F: BEGIN MFV3; break;
4228 
4229  /* SFNode and MFNode are special. Here the lexer just returns */
4230  /* "marker tokens" so the parser knows what type of field is */
4231  /* being parsed; unlike the other fields, parsing of SFNode/MFNode */
4232  /* field happens in the parser. */
4233  case MFNODE: expectToken = 0; return MFNODE;
4234  case SFNODE: expectToken = 0; return SFNODE;
4235 
4236  default: yyerror("ACK: Bad expectToken"); break;
4237  }
4238  }
4239 
4240 
4241  /* This is more complicated than they really need to be because */
4242  /* I was ambitious and made the whitespace-matching rule aggressive */
4243 
4244  if ( yy_init )
4245  {
4246 #ifdef YY_USER_INIT
4247  YY_USER_INIT;
4248 #endif
4249 
4250  if ( ! yy_start )
4251  yy_start = 1; /* first start state */
4252 
4253  if ( ! yyin )
4254  yyin = stdin;
4255 
4256  if ( ! yyout )
4257  yyout = stdout;
4258 
4259  if ( yy_current_buffer )
4260  yy_init_buffer( yy_current_buffer, yyin );
4261  else
4262  yy_current_buffer =
4263  yy_create_buffer( yyin, YY_BUF_SIZE );
4264 
4265  yy_load_buffer_state();
4266 
4267  yy_init = 0;
4268  }
4269 
4270  while ( 1 ) /* loops until end-of-file is reached */
4271  {
4272  yy_cp = yy_c_buf_p;
4273 
4274  /* Support of yytext. */
4275  *yy_cp = yy_hold_char;
4276 
4277  /* yy_bp points to the position in yy_ch_buf of the start of
4278  * the current run.
4279  */
4280  yy_bp = yy_cp;
4281 
4282  yy_current_state = yy_start;
4283  yy_match:
4284  do
4285  {
4286  YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4287  if ( yy_accept[yy_current_state] )
4288  {
4289  yy_last_accepting_state = yy_current_state;
4290  yy_last_accepting_cpos = yy_cp;
4291  }
4292  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4293  {
4294  yy_current_state = (int) yy_def[yy_current_state];
4295  if ( yy_current_state >= 949 )
4296  yy_c = yy_meta[(unsigned int) yy_c];
4297  }
4298  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4299  ++yy_cp;
4300  }
4301  while ( yy_base[yy_current_state] != 7663 );
4302 
4303  yy_find_action:
4304  yy_act = yy_accept[yy_current_state];
4305 
4307 
4308 
4309  do_action: /* This label is used only to access EOF actions. */
4310 
4311  if ( yy_flex_debug )
4312  {
4313  if ( yy_act == 0 )
4314  fprintf( stderr, "--scanner backing up\n" );
4315  else if ( yy_act < 49 )
4316  fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
4317  yy_rule_linenum[yy_act], yytext );
4318  else if ( yy_act == 49 )
4319  fprintf( stderr, "--accepting default rule (\"%s\")\n",
4320  yytext );
4321  else if ( yy_act == 50 )
4322  fprintf( stderr, "--(end of buffer or a NUL)\n" );
4323  else
4324  fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
4325  }
4326 
4327  switch ( yy_act )
4328  { /* beginning of action switch */
4329  case 0: /* must back up */
4330  /* undo the effects of YY_DO_BEFORE_ACTION */
4331  *yy_cp = yy_hold_char;
4332  yy_cp = yy_last_accepting_cpos;
4333  yy_current_state = yy_last_accepting_state;
4334  goto yy_find_action;
4335 
4336  case 1:
4338  { BEGIN NODE; }
4339  YY_BREAK
4340  /* The lexer is in the NODE state when parsing nodes, either */
4341  /* top-level nodes in the .wrl file, in a prototype implementation, */
4342  /* or when parsing the contents of SFNode or MFNode fields. */
4343  case 2:
4345  { return PROTO; }
4346  case 3:
4348  { return EXTERNPROTO; }
4349  case 4:
4351  { return DEF; }
4352  case 5:
4354  { return USE; }
4355  case 6:
4357  { return TO; }
4358  case 7:
4360  { return IS; }
4361  case 8:
4363  { return ROUTE; }
4364  case 9:
4366  { return SFN_NULL; }
4367  case 10:
4369  { return EVENTIN; }
4370  case 11:
4372  { return EVENTOUT; }
4373  case 12:
4375  { return FIELD; }
4376  case 13:
4378  { return EXPOSEDFIELD; }
4379  /* Legal identifiers: */
4380  case 14:
4382  {
4383  yylval.string = vtkVRMLAllocator::StrDup(yytext);
4384  return IDENTIFIER; }
4385  /* All fields may have an IS declaration: */
4386  case 15:
4388  { BEGIN NODE;
4389  expectToken = 0;
4390  yyless(0);
4391  }
4392  YY_BREAK
4393  case 16:
4395  { BEGIN NODE;
4396  expectToken = 0;
4397  yyless(0); /* put back the IS */
4398  }
4399  YY_BREAK
4400  /* All MF field types other than MFNode are completely parsed here */
4401  /* in the lexer, and one token is returned to the parser. They all */
4402  /* share the same rules for open and closing brackets: */
4403  case 17:
4405  { if (parsing_mf) yyerror("Double [");
4406  parsing_mf = 1;
4407  yylval.vec2f = self->FloatArrayNew();
4408  yylval.vec2f->SetNumberOfComponents(2);
4409  }
4410  YY_BREAK
4411  case 18:
4413  { if (parsing_mf) yyerror("Double [");
4414  parsing_mf = 1;
4415  yylval.mfint32 = self->IdTypeArrayNew();
4416  }
4417  YY_BREAK
4418  case 19:
4420  { if (parsing_mf) yyerror("Double [");
4421  parsing_mf = 1;
4422  yylval.vec3f = self->PointsNew();
4423  }
4424  YY_BREAK
4425  case 20:
4427  { if (!parsing_mf) yyerror("Unmatched ]");
4428  int tokenFieldType = expectToken;
4429  BEGIN NODE;
4430  parsing_mf = 0;
4431  expectToken = 0;
4432  return tokenFieldType;
4433  }
4434  case 21:
4436  { BEGIN NODE; expectToken = 0; yylval.sfint = 1; return SFBOOL; }
4437  case 22:
4439  { BEGIN NODE; expectToken = 0; yylval.sfint = 0; return SFBOOL; }
4440  case 23:
4442  { BEGIN NODE; expectToken = 0;
4443  yylval.sfint = atoi(yytext);
4444  return SFINT32;
4445  }
4446  case 24:
4448  { if (parsing_mf) {
4449  int num;
4450  num = atoi(yytext);
4451  yylval.mfint32->InsertNextValue(num);
4452  }
4453  else {
4454  BEGIN NODE; expectToken = 0; return MFINT32;
4455  }
4456  }
4457  YY_BREAK
4458  /* All the floating-point types are pretty similar: */
4459  case 25:
4461  { BEGIN NODE; expectToken = 0; float num;
4462  sscanf(yytext, "%f", &num);
4463  yylval.sffloat = num;
4464  return SFFLOAT; }
4465  case 26:
4467  { if (parsing_mf) ; /* Add to array... */
4468  else {
4469  /* No open bracket means a single value: */
4470  BEGIN NODE; expectToken = 0; return MFFLOAT;
4471  }
4472  }
4473  YY_BREAK
4474  case 27:
4476  { BEGIN NODE; expectToken = 0; return SFVEC2F; }
4477  case 28:
4479  {
4480  if (parsing_mf)
4481  {
4482  // .. add to array...
4483  float num[2];
4484  num[0] = atof(strtok(yytext, " "));
4485  num[1] = atof(strtok(nullptr, " "));
4486  // equivalent to: sscanf(yytext, "%f %f", &num[0], &num[1]);
4487  yylval.vec2f->InsertNextTuple(num);
4488  }
4489  else
4490  {
4491  BEGIN NODE; expectToken = 0;
4492  return MFVEC2F;
4493  }
4494  }
4495  YY_BREAK
4496  case 29:
4498  { BEGIN NODE; expectToken = 0;
4499  float num[3];
4500  yylval.vec3f = self->PointsNew();
4501  num[0] = atof(strtok(yytext, " "));
4502  num[1] = atof(strtok(nullptr, " "));
4503  num[2] = atof(strtok(nullptr, " "));
4504  //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
4505  yylval.vec3f->InsertPoint(0, num);
4506  return SFVEC3F; }
4507  case 30:
4509  { if (parsing_mf) { /* .. add to array... */
4510  float num[3];
4511  num[0] = atof(strtok(yytext, " "));
4512  num[1] = atof(strtok(nullptr, " "));
4513  num[2] = atof(strtok(nullptr, " "));
4514  //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
4515  yylval.vec3f->InsertNextPoint(num);
4516  //return MFVEC3F;
4517  }
4518  else {
4519  BEGIN NODE; expectToken = 0;
4520  return MFVEC3F;
4521  }
4522  }
4523  YY_BREAK
4524  case 31:
4526  { BEGIN NODE; expectToken = 0; return SFROTATION; }
4527  case 32:
4529  { if (parsing_mf) ; /* .. add to array... */
4530  else {
4531  BEGIN NODE; expectToken = 0; return MFROTATION;
4532  }
4533  }
4534  YY_BREAK
4535  case 33:
4537  { BEGIN NODE; expectToken = 0;
4538  float num[3];
4539  yylval.vec3f = self->PointsNew();
4540  num[0] = atof(strtok(yytext, " "));
4541  num[1] = atof(strtok(nullptr, " "));
4542  num[2] = atof(strtok(nullptr, " "));
4543  //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
4544  yylval.vec3f->InsertPoint(0, num);
4545  return SFCOLOR; }
4546  case 34:
4548  { if (parsing_mf) { /* .. add to array... */
4549  float num[3];
4550  num[0] = atof(strtok(yytext, " "));
4551  num[1] = atof(strtok(nullptr, " "));
4552  num[2] = atof(strtok(nullptr, " "));
4553  yylval.vec3f->InsertNextPoint(num);
4554  }
4555  else {
4556  BEGIN NODE; expectToken = 0; return MFCOLOR;
4557  }
4558  }
4559  YY_BREAK
4560  case 35:
4562  { BEGIN NODE; expectToken = 0; return SFTIME; }
4563  /* SFString/MFString */
4564  case 36:
4566  { BEGIN IN_SFS; }
4567  YY_BREAK
4568  case 37:
4570  { BEGIN IN_MFS; }
4571  YY_BREAK
4572  /* Anything besides open-quote (or whitespace) is an error: */
4573  case 38:
4575  { yyerror("String missing open-quote");
4576  BEGIN NODE; expectToken = 0; return SFSTRING;
4577  }
4578  /* Expect open-quote, open-bracket, or whitespace: */
4579  case 39:
4581  { yyerror("String missing open-quote");
4582  BEGIN NODE; expectToken = 0; return MFSTRING;
4583  }
4584  /* Backslashed-quotes are OK: */
4585  case 40:
4587  ;
4588  YY_BREAK
4589  /* Gobble up anything besides quotes and newlines. */
4590  /* Newlines are legal in strings, but we exclude them here so */
4591  /* that line number are counted correctly by the catch-all newline */
4592  /* rule that applies to everything. */
4593  case 41:
4595  ;
4596  YY_BREAK
4597  /* Quote ends the string: */
4598  case 42:
4600  { BEGIN NODE; expectToken = 0; return SFSTRING; }
4601  case 43:
4603  { if (parsing_mf) BEGIN MFS; /* ... add to array ... */
4604  else {
4605  BEGIN NODE; expectToken = 0; return MFSTRING;
4606  }
4607  }
4608  YY_BREAK
4609  /* SFImage: width height numComponents then width*height integers: */
4610  case 44:
4612  { int w, h;
4613  sscanf(yytext, "%d %d", &w, &h);
4614  sfImageIntsExpected = 1+w*h;
4615  sfImageIntsParsed = 0;
4616  BEGIN IN_SFIMG;
4617  }
4618  YY_BREAK
4619  case 45:
4621  { ++sfImageIntsParsed;
4622  if (sfImageIntsParsed == sfImageIntsExpected) {
4623  BEGIN NODE; expectToken = 0; return SFIMAGE;
4624  }
4625  }
4626  YY_BREAK
4627  /* Whitespace and catch-all rules apply to all start states: */
4628  case 46:
4630  ;
4631  YY_BREAK
4632  /* This is also whitespace, but we'll keep track of line number */
4633  /* to report in errors: */
4634  case 47:
4636  { ++currentLineNumber; }
4637  YY_BREAK
4638  /* This catch-all rule catches anything not covered by any of */
4639  /* the above: */
4640  case 48:
4642  { return yytext[0]; }
4643  case 49:
4645  YY_FATAL_ERROR( "flex scanner jammed" );
4646  YY_BREAK
4647  case YY_STATE_EOF(INITIAL):
4648  case YY_STATE_EOF(NODE):
4649  case YY_STATE_EOF(SFB):
4650  case YY_STATE_EOF(SFC):
4651  case YY_STATE_EOF(SFF):
4652  case YY_STATE_EOF(SFIMG):
4653  case YY_STATE_EOF(SFI):
4654  case YY_STATE_EOF(SFR):
4655  case YY_STATE_EOF(SFS):
4656  case YY_STATE_EOF(SFT):
4657  case YY_STATE_EOF(SFV2):
4658  case YY_STATE_EOF(SFV3):
4659  case YY_STATE_EOF(MFC):
4660  case YY_STATE_EOF(MFF):
4661  case YY_STATE_EOF(MFI):
4662  case YY_STATE_EOF(MFR):
4663  case YY_STATE_EOF(MFS):
4664  case YY_STATE_EOF(MFV2):
4665  case YY_STATE_EOF(MFV3):
4666  case YY_STATE_EOF(IN_SFS):
4667  case YY_STATE_EOF(IN_MFS):
4668  case YY_STATE_EOF(IN_SFIMG):
4669  yyterminate();
4670 
4671  case YY_END_OF_BUFFER:
4672  {
4673  /* Amount of text matched not including the EOB char. */
4674  int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1;
4675 
4676  /* Undo the effects of YY_DO_BEFORE_ACTION. */
4677  *yy_cp = yy_hold_char;
4678 
4679  if ( yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_NEW )
4680  {
4681  /* We're scanning a new file or input source. It's
4682  * possible that this happened because the user
4683  * just pointed yyin at a new source and called
4684  * yylex(). If so, then we have to assure
4685  * consistency between yy_current_buffer and our
4686  * globals. Here is the right place to do so, because
4687  * this is the first action (other than possibly a
4688  * back-up) that will match for the new input source.
4689  */
4690  yy_n_chars = yy_current_buffer->yy_n_chars;
4691  yy_current_buffer->yy_input_file = yyin;
4692  yy_current_buffer->yy_buffer_status = yy_buffer_state::YY_BUFFER_NORMAL;
4693  }
4694 
4695  /* Note that here we test for yy_c_buf_p "<=" to the position
4696  * of the first EOB in the buffer, since yy_c_buf_p will
4697  * already have been incremented past the NUL character
4698  * (since all states make transitions on EOB to the
4699  * end-of-buffer state). Contrast this with the test
4700  * in input().
4701  */
4702  if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4703  { /* This was really a NUL. */
4704  yy_state_type yy_next_state;
4705 
4706  yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
4707 
4708  yy_current_state = yy_get_previous_state();
4709 
4710  /* Okay, we're now positioned to make the NUL
4711  * transition. We couldn't have
4712  * yy_get_previous_state() go ahead and do it
4713  * for us because it doesn't know how to deal
4714  * with the possibility of jamming (and we don't
4715  * want to build jamming into it because then it
4716  * will run more slowly).
4717  */
4718 
4719  yy_next_state = yy_try_NUL_trans( yy_current_state );
4720 
4721  yy_bp = yytext_ptr + YY_MORE_ADJ;
4722 
4723  if ( yy_next_state )
4724  {
4725  /* Consume the NUL. */
4726  yy_cp = ++yy_c_buf_p;
4727  yy_current_state = yy_next_state;
4728  goto yy_match;
4729  }
4730 
4731  else
4732  {
4733  yy_cp = yy_c_buf_p;
4734  goto yy_find_action;
4735  }
4736  }
4737 
4738  else switch ( yy_get_next_buffer() )
4739  {
4740  case EOB_ACT_END_OF_FILE:
4741  {
4742  yy_did_buffer_switch_on_eof = 0;
4743 
4744  if ( yywrap() )
4745  {
4746  /* Note: because we've taken care in
4747  * yy_get_next_buffer() to have set up
4748  * yytext, we can now set up
4749  * yy_c_buf_p so that if some total
4750  * hoser (like flex itself) wants to
4751  * call the scanner after we return the
4752  * YY_NULL, it'll still work - another
4753  * YY_NULL will get returned.
4754  */
4755  yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
4756 
4757  yy_act = YY_STATE_EOF(YY_START);
4758  goto do_action;
4759  }
4760 
4761  else
4762  {
4763  if ( ! yy_did_buffer_switch_on_eof )
4764  YY_NEW_FILE;
4765  }
4766  break;
4767  }
4768 
4769  case EOB_ACT_CONTINUE_SCAN:
4770  yy_c_buf_p =
4771  yytext_ptr + yy_amount_of_matched_text;
4772 
4773  yy_current_state = yy_get_previous_state();
4774 
4775  yy_cp = yy_c_buf_p;
4776  yy_bp = yytext_ptr + YY_MORE_ADJ;
4777  goto yy_match;
4778 
4779  case EOB_ACT_LAST_MATCH:
4780  yy_c_buf_p =
4781  &yy_current_buffer->yy_ch_buf[yy_n_chars];
4782 
4783  yy_current_state = yy_get_previous_state();
4784 
4785  yy_cp = yy_c_buf_p;
4786  yy_bp = yytext_ptr + YY_MORE_ADJ;
4787  goto yy_find_action;
4788  }
4789  break;
4790  }
4791 
4792  default:
4794  "fatal flex scanner internal error--no action found" );
4795  } /* end of action switch */
4796  } /* end of scanning one token */
4797 } /* end of yylex */
4798 
4799 
4800 /* yy_get_next_buffer - try to read in a new buffer
4801  *
4802  * Returns a code representing an action:
4803  * EOB_ACT_LAST_MATCH -
4804  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4805  * EOB_ACT_END_OF_FILE - end of file
4806  */
4807 
4809 {
4810  char *dest = yy_current_buffer->yy_ch_buf;
4811  char *source = yytext_ptr - 1; /* copy prev. char, too */
4812  int number_to_move, i;
4813  int ret_val;
4814 
4815  if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
4817  "fatal flex scanner internal error--end of buffer missed" );
4818 
4819  if ( yy_current_buffer->yy_fill_buffer == 0 )
4820  { /* Don't try to fill the buffer, so this is an EOF. */
4821  if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
4822  {
4823  /* We matched a singled characater, the EOB, so
4824  * treat this as a final EOF.
4825  */
4826  return EOB_ACT_END_OF_FILE;
4827  }
4828 
4829  else
4830  {
4831  /* We matched some text prior to the EOB, first
4832  * process it.
4833  */
4834  return EOB_ACT_LAST_MATCH;
4835  }
4836  }
4837 
4838  /* Try to read more data. */
4839 
4840  /* First move last chars to start of buffer. */
4841  number_to_move = yy_c_buf_p - yytext_ptr;
4842 
4843  for ( i = 0; i < number_to_move; ++i )
4844  *(dest++) = *(source++);
4845 
4846  if ( yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_EOF_PENDING )
4847  /* don't do the read, it's not guaranteed to return an EOF,
4848  * just force an EOF
4849  */
4850  yy_n_chars = 0;
4851 
4852  else
4853  {
4854  int num_to_read =
4855  yy_current_buffer->yy_buf_size - number_to_move - 1;
4856 
4857  while ( num_to_read <= 0 )
4858  { /* Not enough room in the buffer - grow it. */
4859 #ifdef YY_USES_REJECT
4861  "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4862 #else
4863 
4864  /* just a shorter name for the current buffer */
4865  YY_BUFFER_STATE b = yy_current_buffer;
4866 
4867  int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf;
4868 
4869  b->yy_buf_size *= 2;
4870  b->yy_ch_buf = (char *)
4871  yy_flex_realloc( (void *) b->yy_ch_buf,
4872  b->yy_buf_size );
4873 
4874  if ( ! b->yy_ch_buf )
4876  "fatal error - scanner input buffer overflow" );
4877 
4878  yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4879 
4880  num_to_read = yy_current_buffer->yy_buf_size -
4881  number_to_move - 1;
4882 #endif
4883  }
4884 
4885  if ( num_to_read > YY_READ_BUF_SIZE )
4886  num_to_read = YY_READ_BUF_SIZE;
4887 
4888  /* Read in more data. */
4889  YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
4890  yy_n_chars, num_to_read );
4891  }
4892 
4893  if ( yy_n_chars == 0 )
4894  {
4895  if ( number_to_move - YY_MORE_ADJ == 1 )
4896  {
4897  ret_val = EOB_ACT_END_OF_FILE;
4898  yyrestart( yyin );
4899  }
4900 
4901  else
4902  {
4903  ret_val = EOB_ACT_LAST_MATCH;
4904  yy_current_buffer->yy_buffer_status =
4905  yy_buffer_state::YY_BUFFER_EOF_PENDING;
4906  }
4907  }
4908 
4909  else
4910  ret_val = EOB_ACT_CONTINUE_SCAN;
4911 
4912  yy_n_chars += number_to_move;
4913  yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4914  yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4915 
4916  /* yytext begins at the second character in yy_ch_buf; the first
4917  * character is the one which preceded it before reading in the latest
4918  * buffer; it needs to be kept around in case it's a newline, so
4919  * yy_get_previous_state() will have with '^' rules active.
4920  */
4921 
4922  yytext_ptr = &yy_current_buffer->yy_ch_buf[1];
4923 
4924  return ret_val;
4925 }
4926 
4927 
4928 /* yy_get_previous_state - get the state just before the EOB char was reached */
4929 
4931 {
4932  yy_state_type yy_current_state;
4933  char *yy_cp;
4934 
4935  yy_current_state = yy_start;
4936 
4937  for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
4938  {
4939  YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4940  if ( yy_accept[yy_current_state] )
4941  {
4942  yy_last_accepting_state = yy_current_state;
4943  yy_last_accepting_cpos = yy_cp;
4944  }
4945  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4946  {
4947  yy_current_state = (int) yy_def[yy_current_state];
4948  if ( yy_current_state >= 949 )
4949  yy_c = yy_meta[(unsigned int) yy_c];
4950  }
4951  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4952  }
4953 
4954  return yy_current_state;
4955 }
4956 
4957 
4958 /* yy_try_NUL_trans - try to make a transition on the NUL character
4959  *
4960  * synopsis
4961  * next_state = yy_try_NUL_trans( current_state );
4962  */
4963 
4965 {
4966  int yy_is_jam;
4967  char *yy_cp = yy_c_buf_p;
4968 
4969  YY_CHAR yy_c = 1;
4970  if ( yy_accept[yy_current_state] )
4971  {
4972  yy_last_accepting_state = yy_current_state;
4973  yy_last_accepting_cpos = yy_cp;
4974  }
4975  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4976  {
4977  yy_current_state = (int) yy_def[yy_current_state];
4978  if ( yy_current_state >= 949 )
4979  yy_c = yy_meta[(unsigned int) yy_c];
4980  }
4981  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4982  yy_is_jam = (yy_current_state == 948);
4983 
4984  return yy_is_jam ? 0 : yy_current_state;
4985 }
4986 
4987 
4988 
4989 void vtkVRMLYaccData::yyrestart( FILE *input_file )
4990 {
4991  if ( ! yy_current_buffer )
4992  yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
4993 
4994  yy_init_buffer( yy_current_buffer, input_file );
4995  yy_load_buffer_state();
4996 }
4997 
4998 
5000 {
5001  if ( yy_current_buffer == new_buffer )
5002  return;
5003 
5004  if ( yy_current_buffer )
5005  {
5006  /* Flush out information for old buffer. */
5007  *yy_c_buf_p = yy_hold_char;
5008  yy_current_buffer->yy_buf_pos = yy_c_buf_p;
5009  yy_current_buffer->yy_n_chars = yy_n_chars;
5010  }
5011 
5012  yy_current_buffer = new_buffer;
5013  yy_load_buffer_state();
5014 
5015  /* We don't actually know whether we did this switch during
5016  * EOF (yywrap()) processing, but the only time this flag
5017  * is looked at is after yywrap() is called, so it's safe
5018  * to go ahead and always set it.
5019  */
5020  yy_did_buffer_switch_on_eof = 1;
5021 }
5022 
5023 
5025 {
5026  yy_n_chars = yy_current_buffer->yy_n_chars;
5027  yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
5028  yyin = yy_current_buffer->yy_input_file;
5029  yy_hold_char = *yy_c_buf_p;
5030 }
5031 
5032 
5034 {
5035  YY_BUFFER_STATE b;
5036 
5037  b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
5038 
5039  if ( ! b )
5040  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5041 
5042  b->yy_buf_size = size;
5043 
5044  /* yy_ch_buf has to be 2 characters longer than the size given because
5045  * we need to put in 2 end-of-buffer characters.
5046  */
5047  b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
5048 
5049  if ( ! b->yy_ch_buf )
5050  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5051 
5052  yy_init_buffer( b, file );
5053 
5054  return b;
5055 }
5056 
5057 
5059 {
5060  if ( b == yy_current_buffer )
5061  yy_current_buffer = (YY_BUFFER_STATE) nullptr;
5062 
5063  yy_flex_free( (void *) b->yy_ch_buf );
5064  yy_flex_free( (void *) b );
5065 }
5066 
5067 
5069 {
5070  b->yy_input_file = file;
5071 
5072  /* We put in the '\n' and start reading from [1] so that an
5073  * initial match-at-newline will be true.
5074  */
5075 
5076  b->yy_ch_buf[0] = '\n';
5077  b->yy_n_chars = 1;
5078 
5079  /* We always need two end-of-buffer characters. The first causes
5080  * a transition to the end-of-buffer state. The second causes
5081  * a jam in that state.
5082  */
5085 
5086  b->yy_buf_pos = &b->yy_ch_buf[1];
5087 
5088  b->yy_is_interactive = file ? isatty( fileno(file) ) : 0;
5089 
5090  b->yy_fill_buffer = 1;
5091 
5092  b->yy_buffer_status = yy_buffer_state::YY_BUFFER_NEW;
5093 }
5094 
5095 
5096 void vtkVRMLYaccData::yy_fatal_error( const char msg[] )
5097 {
5098  (void) fprintf( stderr, "%s\n", msg );
5099  exit( 1 );
5100 }
5101 
5102 
5103 
5104 /* Redefine yyless() so it works in section 3 code. */
5105 
5106 #undef yyless
5107 #define yyless(n) \
5108  do \
5109  { \
5110  /* Undo effects of setting up yytext. */ \
5111  yytext[yyleng] = yy_hold_char; \
5112  yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
5113  yy_hold_char = *yy_c_buf_p; \
5114  *yy_c_buf_p = '\0'; \
5115  yyleng = n; \
5116  } \
5117  while ( 0 )
5118 
5119 
5120 /* Internal utility routines. */
5121 
5122 #ifndef yytext_ptr
5123 #ifdef YY_USE_PROTOS
5124 static void yy_flex_strncpy( char *s1, const char *s2, int n )
5125 #else
5126  static void yy_flex_strncpy( s1, s2, n )
5127  char *s1;
5128 const char *s2;
5129 int n;
5130 #endif
5131 {
5132  int i;
5133  for ( i = 0; i < n; ++i )
5134  s1[i] = s2[i];
5135 }
5136 #endif
5137 
5138 
5140 {
5141  return (void *) malloc( size );
5142 }
5143 
5144 void *vtkVRMLYaccData::yy_flex_realloc( void *ptr, unsigned int size )
5145 {
5146  return (void *) realloc( ptr, size );
5147 }
5148 
5150 {
5151  free( ptr );
5152 }
5153 // End of Auto-generated Lexer Code
5154 
5155 
5156 // Used by the lex input to get characters. Needed to read in memory structure
5157 
5158 void vtkVRMLYaccData::memyyInput(char *buf, int &result, int max_size,
5159  vtkVRMLYaccData* self) {
5160 
5161  result = static_cast<int>(
5162  strlen(strncpy(buf, standardNodes[self->memyyInput_i], max_size)));
5163  self->memyyInput_j = result - static_cast<int>(
5164  strlen(standardNodes[self->memyyInput_i]));
5165  if ( self->memyyInput_j == 0 )
5166  {
5167  self->memyyInput_i++;
5168  }
5169 }
5170 
5171 // Needed to reset the lex input routine to default.
5172 void vtkVRMLYaccData::defyyInput(char *buf, int &result, int max_size,
5173  vtkVRMLYaccData* self) {
5174  if ( self->yy_current_buffer->yy_is_interactive )
5175  {
5176  int c = getc( self->yyin );
5177  result = c == EOF ? 0 : 1;
5178  buf[0] = (char) c;
5179  }
5180  else if( ((result = static_cast<int>(fread( buf, 1, max_size, self->yyin ))) == 0)
5181  && ferror( self->yyin ) )
5182  {
5183  self->yy_fatal_error( "input in flex scanner failed" );
5184  }
5185 }
5186 
5187 
5188 #endif
5189 // VTK-HeaderTest-Exclude: vtkVRMLImporter_Yacc.h
int addEventOut(const char *type, const char *name)
YY_BUFFER_STATE yy_create_buffer(FILE *file, int size)
#define MFI
void addExposedField(const char *name, int type)
yy_state_type yy_get_previous_state(void)
#define EXTERNPROTO
#define IDENTIFIER
abstract base class for most VTK objects
Definition: vtkObject.h:59
#define SFROTATION
#define YY_DO_BEFORE_ACTION
void * yy_flex_realloc(void *, unsigned int)
#define MFVEC2F
#define YYEMPTY
#define SFI
#define SFF
#define FIELD
#define BEGIN
yy_state_type yy_last_accepting_state
#define IN_SFS
YY_BUFFER_STATE yy_current_buffer
int hasExposedField(const char *name) const
#define YYTRANSLATE(x)
static const short yyr2[]
#define PROTO
#define MFSTRING
#define YY_INPUT(buf, result, max_size)
#define SFSTRING
static const short yyr1[]
#define NODE
#define SFNODE
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:41
#define SFIMG
int addEventIn(const char *type, const char *name)
#define MFVEC3F
static const short yytable[]
#define YYABORT
static const short int yy_rule_linenum[49]
#define MFCOLOR
#define EXPOSEDFIELD
int hasField(const char *name) const
#define YY_BUF_SIZE
static const short yyrhs[]
static const short int yy_def[1090]
#define YY_USER_ACTION
#define YYLTYPE
void yy_load_buffer_state(void)
#define SFR
dynamic, self-adjusting array of vtkIdType
#define SFBOOL
static void __yy_memcpy(char *from, char *to, int count)
static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData *self)
#define YY_STATE_EOF(state)
#define MFS
#define YY_READ_BUF_SIZE
static const short yypgoto[]
void yyrestart(FILE *input_file)
#define YY_START
void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)
#define MFINT32
#define yytext_ptr
#define YY_SC_TO_UI(c)
#define EOB_ACT_END_OF_FILE
vtkVRMLVectorType< vtkVRMLUseStruct * > * useList
#define IN_MFS
#define YYACCEPT
static const short yycheck[]
static const char yytranslate[]
int yyparse(vtkVRMLImporter *self)
#define EOB_ACT_LAST_MATCH
static const short int yy_chk[7711]
vtkVRMLVectorType< VrmlNodeType::FieldRec * > * currentField
const char * getName() const
#define MFC
vtkVRMLVectorType< VrmlNodeType * > * CurrentProtoStack
#define YYLAST
#define SFINT32
void yyerror(const char *)
#define INITIAL
#define TO
#define IN_SFIMG
int hasEventOut(const char *name) const
#define yyterminate()
int add(void(VrmlNodeType::*)(const char *, int), const char *, const char *)
#define YY_MORE_ADJ
static const short yypact[]
static const short int yy_nxt[7711]
#define SFV2
YY_BUFFER_STATUS_STATE yy_buffer_status
#define MFF
void yy_delete_buffer(YY_BUFFER_STATE b)
const VrmlNodeType * find(const char *nm)
#define YYINITDEPTH
#define DEF
static const int yy_ec[256]
void yy_fatal_error(const char msg[])
void addEventIn(const char *name, int type)
#define EVENTOUT
#define EOB_ACT_CONTINUE_SCAN
static const char *const yytname[]
void addToNameSpace(VrmlNodeType *)
#define ROUTE
static const short yydefact[]
#define MFR
#define SFCOLOR
int addExposedField(const char *type, const char *name)
#define SFB
static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData *self)
#define SFV3
#define SFC
static const short int yy_base[1090]
void * yy_flex_alloc(unsigned int)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define YY_FATAL_ERROR(msg)
void addEventOut(const char *name, int type)
#define SFFLOAT
#define SFIMAGE
void beginProto(const char *)
#define YY_BREAK
const VrmlNodeType * nodeType
#define SFN_NULL
#define YYFLAG
#define YY_NEW_FILE
#define MFNODE
vtkVRMLUseStruct(char *n, vtkObject *o)
#define YYFINAL
static const short yyprhs[]
vtkVRMLVectorType< VrmlNodeType * > * typeList
#define YY_END_OF_BUFFER_CHAR
static const short int yy_accept[949]
#define USE
#define SFVEC2F
int addField(const char *type, const char *name)
#define SFTIME
static const short yydefgoto[]
void addField(const char *name, int type)
#define EVENTIN
#define SFT
#define MFFLOAT
#define SFS
#define MFROTATION
VrmlNodeType(const char *nm)
int fieldType(const char *type)
static const int yy_meta[48]
#define YYTERROR
#define YYNTBASE
imports VRML 2.0 files.
#define YY_END_OF_BUFFER
#define MFV3
int yylex(vtkVRMLImporter *self)
void yy_init_buffer(YY_BUFFER_STATE b, FILE *file)
represent and manipulate 3D points
Definition: vtkPoints.h:39
#define YYEOF
static const short yyrline[]
#define YYMAXDEPTH
struct yy_buffer_state * YY_BUFFER_STATE
#define IS
#define MFV2
#define yyless(n)
#define SFVEC3F
int hasEventIn(const char *name) const
yy_state_type yy_try_NUL_trans(yy_state_type current_state)