scanner.cpp

Go to the documentation of this file.
00001 
00002 #line 3 "<stdout>"
00003 
00004 #define  YY_INT_ALIGNED short int
00005 
00006 /* A lexical scanner generated by flex */
00007 
00008 #define FLEX_SCANNER
00009 #define YY_FLEX_MAJOR_VERSION 2
00010 #define YY_FLEX_MINOR_VERSION 5
00011 #define YY_FLEX_SUBMINOR_VERSION 33
00012 #if YY_FLEX_SUBMINOR_VERSION > 0
00013 #define FLEX_BETA
00014 #endif
00015 
00016 /* First, we deal with  platform-specific or compiler-specific issues. */
00017 
00018 /* begin standard C headers. */
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include <errno.h>
00022 #include <stdlib.h>
00023 
00024 /* end standard C headers. */
00025 
00026 /* flex integer type definitions */
00027 
00028 #ifndef FLEXINT_H
00029 #define FLEXINT_H
00030 
00031 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00032 
00033 #if __STDC_VERSION__ >= 199901L
00034 
00035 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
00036  * if you want the limit (max/min) macros for int types. 
00037  */
00038 #ifndef __STDC_LIMIT_MACROS
00039 #define __STDC_LIMIT_MACROS 1
00040 #endif
00041 
00042 #include <inttypes.h>
00043 typedef int8_t flex_int8_t;
00044 typedef uint8_t flex_uint8_t;
00045 typedef int16_t flex_int16_t;
00046 typedef uint16_t flex_uint16_t;
00047 typedef int32_t flex_int32_t;
00048 typedef uint32_t flex_uint32_t;
00049 #else
00050 typedef signed char flex_int8_t;
00051 typedef short int flex_int16_t;
00052 typedef int flex_int32_t;
00053 typedef unsigned char flex_uint8_t; 
00054 typedef unsigned short int flex_uint16_t;
00055 typedef unsigned int flex_uint32_t;
00056 #endif /* ! C99 */
00057 
00058 /* Limits of integral types. */
00059 #ifndef INT8_MIN
00060 #define INT8_MIN               (-128)
00061 #endif
00062 #ifndef INT16_MIN
00063 #define INT16_MIN              (-32767-1)
00064 #endif
00065 #ifndef INT32_MIN
00066 #define INT32_MIN              (-2147483647-1)
00067 #endif
00068 #ifndef INT8_MAX
00069 #define INT8_MAX               (127)
00070 #endif
00071 #ifndef INT16_MAX
00072 #define INT16_MAX              (32767)
00073 #endif
00074 #ifndef INT32_MAX
00075 #define INT32_MAX              (2147483647)
00076 #endif
00077 #ifndef UINT8_MAX
00078 #define UINT8_MAX              (255U)
00079 #endif
00080 #ifndef UINT16_MAX
00081 #define UINT16_MAX             (65535U)
00082 #endif
00083 #ifndef UINT32_MAX
00084 #define UINT32_MAX             (4294967295U)
00085 #endif
00086 
00087 #endif /* ! FLEXINT_H */
00088 
00089 #ifdef __cplusplus
00090 
00091 /* The "const" storage-class-modifier is valid. */
00092 #define YY_USE_CONST
00093 
00094 #else   /* ! __cplusplus */
00095 
00096 #if __STDC__
00097 
00098 #define YY_USE_CONST
00099 
00100 #endif  /* __STDC__ */
00101 #endif  /* ! __cplusplus */
00102 
00103 #ifdef YY_USE_CONST
00104 #define yyconst const
00105 #else
00106 #define yyconst
00107 #endif
00108 
00109 /* Returned upon end-of-file. */
00110 #define YY_NULL 0
00111 
00112 /* Promotes a possibly negative, possibly signed char to an unsigned
00113  * integer for use as an array index.  If the signed char is negative,
00114  * we want to instead treat it as an 8-bit unsigned char, hence the
00115  * double cast.
00116  */
00117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00118 
00119 /* Enter a start condition.  This macro really ought to take a parameter,
00120  * but we do it the disgusting crufty way forced on us by the ()-less
00121  * definition of BEGIN.
00122  */
00123 #define BEGIN (yy_start) = 1 + 2 *
00124 
00125 /* Translate the current start state into a value that can be later handed
00126  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00127  * compatibility.
00128  */
00129 #define YY_START (((yy_start) - 1) / 2)
00130 #define YYSTATE YY_START
00131 
00132 /* Action number for EOF rule of a given start state. */
00133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00134 
00135 /* Special action meaning "start processing a new file". */
00136 #define YY_NEW_FILE scanYYrestart(scanYYin  )
00137 
00138 #define YY_END_OF_BUFFER_CHAR 0
00139 
00140 /* Size of default input buffer. */
00141 #ifndef YY_BUF_SIZE
00142 #define YY_BUF_SIZE 262144
00143 #endif
00144 
00145 /* The state buf must be large enough to hold one state per character in the main buffer.
00146  */
00147 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
00148 
00149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00150 #define YY_TYPEDEF_YY_BUFFER_STATE
00151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00152 #endif
00153 
00154 extern int scanYYleng;
00155 
00156 extern FILE *scanYYin, *scanYYout;
00157 
00158 #define EOB_ACT_CONTINUE_SCAN 0
00159 #define EOB_ACT_END_OF_FILE 1
00160 #define EOB_ACT_LAST_MATCH 2
00161 
00162     #define YY_LESS_LINENO(n)
00163     
00164 /* Return all but the first "n" matched characters back to the input stream. */
00165 #define yyless(n) \
00166         do \
00167                 { \
00168                 /* Undo effects of setting up scanYYtext. */ \
00169         int yyless_macro_arg = (n); \
00170         YY_LESS_LINENO(yyless_macro_arg);\
00171                 *yy_cp = (yy_hold_char); \
00172                 YY_RESTORE_YY_MORE_OFFSET \
00173                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00174                 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */ \
00175                 } \
00176         while ( 0 )
00177 
00178 #define unput(c) yyunput( c, (yytext_ptr)  )
00179 
00180 /* The following is because we cannot portably get our hands on size_t
00181  * (without autoconf's help, which isn't available because we want
00182  * flex-generated scanners to compile on their own).
00183  */
00184 
00185 #ifndef YY_TYPEDEF_YY_SIZE_T
00186 #define YY_TYPEDEF_YY_SIZE_T
00187 typedef unsigned int yy_size_t;
00188 #endif
00189 
00190 #ifndef YY_STRUCT_YY_BUFFER_STATE
00191 #define YY_STRUCT_YY_BUFFER_STATE
00192 struct yy_buffer_state
00193         {
00194         FILE *yy_input_file;
00195 
00196         char *yy_ch_buf;                /* input buffer */
00197         char *yy_buf_pos;               /* current position in input buffer */
00198 
00199         /* Size of input buffer in bytes, not including room for EOB
00200          * characters.
00201          */
00202         yy_size_t yy_buf_size;
00203 
00204         /* Number of characters read into yy_ch_buf, not including EOB
00205          * characters.
00206          */
00207         int yy_n_chars;
00208 
00209         /* Whether we "own" the buffer - i.e., we know we created it,
00210          * and can realloc() it to grow it, and should free() it to
00211          * delete it.
00212          */
00213         int yy_is_our_buffer;
00214 
00215         /* Whether this is an "interactive" input source; if so, and
00216          * if we're using stdio for input, then we want to use getc()
00217          * instead of fread(), to make sure we stop fetching input after
00218          * each newline.
00219          */
00220         int yy_is_interactive;
00221 
00222         /* Whether we're considered to be at the beginning of a line.
00223          * If so, '^' rules will be active on the next match, otherwise
00224          * not.
00225          */
00226         int yy_at_bol;
00227 
00228     int yy_bs_lineno; 
00229     int yy_bs_column; 
00231         /* Whether to try to fill the input buffer when we reach the
00232          * end of it.
00233          */
00234         int yy_fill_buffer;
00235 
00236         int yy_buffer_status;
00237 
00238 #define YY_BUFFER_NEW 0
00239 #define YY_BUFFER_NORMAL 1
00240         /* When an EOF's been seen but there's still some text to process
00241          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00242          * shouldn't try reading from the input source any more.  We might
00243          * still have a bunch of tokens to match, though, because of
00244          * possible backing-up.
00245          *
00246          * When we actually see the EOF, we change the status to "new"
00247          * (via scanYYrestart()), so that the user can continue scanning by
00248          * just pointing scanYYin at a new input file.
00249          */
00250 #define YY_BUFFER_EOF_PENDING 2
00251 
00252         };
00253 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00254 
00255 /* Stack of input buffers. */
00256 static size_t yy_buffer_stack_top = 0; 
00257 static size_t yy_buffer_stack_max = 0; 
00258 static YY_BUFFER_STATE * yy_buffer_stack = 0; 
00260 /* We provide macros for accessing buffer states in case in the
00261  * future we want to put the buffer states in a more general
00262  * "scanner state".
00263  *
00264  * Returns the top of the stack, or NULL.
00265  */
00266 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
00267                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
00268                           : NULL)
00269 
00270 /* Same as previous macro, but useful when we know that the buffer stack is not
00271  * NULL or when we need an lvalue. For internal use only.
00272  */
00273 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
00274 
00275 /* yy_hold_char holds the character lost when scanYYtext is formed. */
00276 static char yy_hold_char;
00277 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
00278 int scanYYleng;
00279 
00280 /* Points to current character in buffer. */
00281 static char *yy_c_buf_p = (char *) 0;
00282 static int yy_init = 0;         /* whether we need to initialize */
00283 static int yy_start = 0;        /* start state number */
00284 
00285 /* Flag which is used to allow scanYYwrap()'s to do buffer switches
00286  * instead of setting up a fresh scanYYin.  A bit of a hack ...
00287  */
00288 static int yy_did_buffer_switch_on_eof;
00289 
00290 void scanYYrestart (FILE *input_file  );
00291 void scanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
00292 YY_BUFFER_STATE scanYY_create_buffer (FILE *file,int size  );
00293 void scanYY_delete_buffer (YY_BUFFER_STATE b  );
00294 void scanYY_flush_buffer (YY_BUFFER_STATE b  );
00295 void scanYYpush_buffer_state (YY_BUFFER_STATE new_buffer  );
00296 void scanYYpop_buffer_state (void );
00297 
00298 static void scanYYensure_buffer_stack (void );
00299 static void scanYY_load_buffer_state (void );
00300 static void scanYY_init_buffer (YY_BUFFER_STATE b,FILE *file  );
00301 
00302 #define YY_FLUSH_BUFFER scanYY_flush_buffer(YY_CURRENT_BUFFER )
00303 
00304 YY_BUFFER_STATE scanYY_scan_buffer (char *base,yy_size_t size  );
00305 YY_BUFFER_STATE scanYY_scan_string (yyconst char *yy_str  );
00306 YY_BUFFER_STATE scanYY_scan_bytes (yyconst char *bytes,int len  );
00307 
00308 void *scanYYalloc (yy_size_t  );
00309 void *scanYYrealloc (void *,yy_size_t  );
00310 void scanYYfree (void *  );
00311 
00312 #define yy_new_buffer scanYY_create_buffer
00313 
00314 #define yy_set_interactive(is_interactive) \
00315         { \
00316         if ( ! YY_CURRENT_BUFFER ){ \
00317         scanYYensure_buffer_stack (); \
00318                 YY_CURRENT_BUFFER_LVALUE =    \
00319             scanYY_create_buffer(scanYYin,YY_BUF_SIZE ); \
00320         } \
00321         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00322         }
00323 
00324 #define yy_set_bol(at_bol) \
00325         { \
00326         if ( ! YY_CURRENT_BUFFER ){\
00327         scanYYensure_buffer_stack (); \
00328                 YY_CURRENT_BUFFER_LVALUE =    \
00329             scanYY_create_buffer(scanYYin,YY_BUF_SIZE ); \
00330         } \
00331         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00332         }
00333 
00334 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00335 
00336 /* Begin user sect3 */
00337 
00338 #define scanYYwrap(n) 1
00339 #define YY_SKIP_YYWRAP
00340 
00341 typedef unsigned char YY_CHAR;
00342 
00343 FILE *scanYYin = (FILE *) 0, *scanYYout = (FILE *) 0;
00344 
00345 typedef int yy_state_type;
00346 
00347 extern int scanYYlineno;
00348 
00349 int scanYYlineno = 1;
00350 
00351 extern char *scanYYtext;
00352 #define yytext_ptr scanYYtext
00353 
00354 static yy_state_type yy_get_previous_state (void );
00355 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
00356 static int yy_get_next_buffer (void );
00357 static void yy_fatal_error (yyconst char msg[]  );
00358 
00359 /* Done after the current pattern has been matched and before the
00360  * corresponding action - sets up scanYYtext.
00361  */
00362 #define YY_DO_BEFORE_ACTION \
00363         (yytext_ptr) = yy_bp; \
00364         scanYYleng = (size_t) (yy_cp - yy_bp); \
00365         (yy_hold_char) = *yy_cp; \
00366         *yy_cp = '\0'; \
00367         (yy_c_buf_p) = yy_cp;
00368 
00369 #define YY_NUM_RULES 605
00370 #define YY_END_OF_BUFFER 606
00371 /* This struct is not used in this scanner,
00372    but its presence is necessary. */
00373 struct yy_trans_info
00374         {
00375         flex_int32_t yy_verify;
00376         flex_int32_t yy_nxt;
00377         };
00378 static yyconst flex_int16_t yy_acclist[4195] =
00379     {   0,
00380        36,   36,  304,  304,  304,  304,  304,  304,  301,  301,
00381        46,   46,   52,   52,  359,  359,  359,  359,  606,  600,
00382       605,  595,  605,  596,  599,  600,  605,  597,  600,  605,
00383       598,  600,  605,  600,  605,  600,  605,  183,  600,  605,
00384       189,  600,  605,  189,  600,  605,  184,  595,  605,  188,
00385       189,  596,  599,  600,  605,  189,  597,  600,  605,  189,
00386       598,  600,  605,  189,  600,  605,  189,  600,  605,  600,
00387       605,  595,  605,  600,  605,  600,  605,  600,  605,  600,
00388       605,  600,  605,  464,  600,  605,  472,  473,  600,  605,
00389       497,  600,  605,  600,  605,  600,  605,  506,  595,  605,
00390 
00391       600,  605,  600,  605,  600,  605,  491,  600,  605,  478,
00392       600,  605,  600,  605,  475,  600,  605,  600,  605,  490,
00393       600,  605,  508,  600,  605,  600,  605,  477,  600,  605,
00394       477,  600,  605,  477,  600,  605,  487,  600,  605,  486,
00395       595,  605,  487,  596,  599,  600,  605,  480,  487,  597,
00396       600,  605,  487,  600,  605,  487,  598,  600,  605,  487,
00397       600,  605,  482,  487,  600,  605,  483,  487,  600,  605,
00398       487,  600,  605,  485,  487,  600,  605,  485,  487,  600,
00399       605,  481,  487,  600,  605,  600,  605,  489,  600,  605,
00400       488,  600,  605,  469,  600,  605,  469,  596,  599,  600,
00401 
00402       605,  469,  597,  600,  605,  469,  598,  600,  605,  469,
00403       600,  605,  468,  469,  600,  605,  467,  469,  600,  605,
00404        37,  600,  605,   36,   37,  600,  605,   35,  595,  605,
00405        37,  596,  599,  600,  605,   37,  597,  600,  605,   37,
00406       600,  605,   37,  598,  600,  605,   37,  600,  605,   34,
00407        37,  600,  605,   31,   37,  600,  605,   37,  600,  605,
00408        33,   37,  600,  605,  409,  600,  605,  408,  595,  605,
00409       409,  596,  599,  600,  605,  409,  597,  600,  605,  409,
00410       600,  605,  409,  598,  600,  605,  409,  600,  605,  406,
00411       409,  600,  605,  407,  409,  600,  605,  600,  605,  506,
00412 
00413       595,  605,  600,  605,  600,  605,  523,  600,  605,  600,
00414       605,  509,  600,  605,  504,  505,  600,  605,  524,  600,
00415       605,  503,  600,  605,  502,  503,  600,  605,  502,  595,
00416       605,  503,  596,  599,  600,  605,  503,  597,  600,  605,
00417       503,  598,  600,  605,  503,  600,  605,  503,  600,  605,
00418       503,  600,  605,    9,  596,  599,  600,  605,    7,  598,
00419       600,  605,    2,  600,  605,   10,  600,  605,   10,  600,
00420       605,    1,  600,  605,  268,  600,  605,  268,  596,  599,
00421       600,  605,  268,  597,  600,  605,  268,  598,  600,  605,
00422        11,  268,  600,  605,  268,  600,  605,   11,  268,  600,
00423 
00424       605,   56,  600,  605,   56,  595,  605,   56,  600,  605,
00425       600,  605,  173,  597,  600,  605,  600,  605,  191,  600,
00426       605,  192,  600,  605,  355,  600,  605,   42,  600,  605,
00427       269,  600,  605,  160,  600,  605,  600,  605,  600,  605,
00428       267,  600,  605,  269,  600,  605,  291,  600,  605,  198,
00429       600,  605,  600,  605,  600,  605,  158,  600,  605,  158,
00430       600,  605,  270,  600,  605,  158,  600,  605,  158,  600,
00431       605,  158,  600,  605,  158,  600,  605,  158,  600,  605,
00432       158,  600,  605,  158,  600,  605,  158,  600,  605,  158,
00433       600,  605,  158,  600,  605,  158,  600,  605,  158,  600,
00434 
00435       605,  158,  600,  605,  158,  600,  605,  158,  600,  605,
00436       158,  600,  605,  158,  600,  605,  158,  600,  605,  542,
00437       600,  605,   14,   16,  600,  605,   15,  595,  605,   14,
00438        16,  596,  599,  600,  605,   14,   16,  597,  600,  605,
00439        14,   16,  598,  600,  605,   14,   16,  600,  605,   16,
00440       600,  605,  600,  605,  595,  605,  600,  605,  600,  605,
00441       600,  605,  158,  600,  605,  600,  605,  595,  605,  600,
00442       605,  297,  600,  605,  302,  600,  605,  600,  605,  299,
00443       600,  605,  298,  600,  605,  296,  600,  605,  303,  600,
00444       605,  600,  605,  404,  597,  600,  605,  434,  600,  605,
00445 
00446       436,  600,  605,  435,  600,  605,  436,  600,  605,  422,
00447       600,  605,  403,  422,  600,  605,  403,  595,  605,  422,
00448       596,  599,  600,  605,  404,  422,  597,  600,  605,  422,
00449       598,  600,  605,  392,  422,  600,  605,  393,  422,  600,
00450       605,  402,  422,  600,  605,  422,  600,  605,  429,  600,
00451       605,  429,  596,  599,  600,  605,  429,  597,  600,  605,
00452       429,  598,  600,  605,  427,  429,  600,  605,  428,  429,
00453       600,  605,  429,  600,  605,  433,  600,  605,  432,  595,
00454       605,  433,  596,  599,  600,  605,  433,  597,  600,  605,
00455       433,  598,  600,  605,  433,  600,  605,  431,  433,  600,
00456 
00457       605,  430,  433,  600,  605,  403,  422,  600,  605,  403,
00458       595,  605,  422,  600,  605,  394,  422,  600,  605,  422,
00459       600,  605,  405,  422,  600,  605,  417,  422,  600,  605,
00460       417,  422,  600,  605,  417,  422,  600,  605,  417,  422,
00461       600,  605,  417,  422,  600,  605,  417,  422,  600,  605,
00462       417,  422,  600,  605,  417,  422,  600,  605,  417,  422,
00463       600,  605,  115,  600,  605,  115,  595,  605,  115,  596,
00464       599,  600,  605,  115,  597,  600,  605,  115,  598,  600,
00465       605,  117,  600,  605,  115,  600,  605,  114,  115,  600,
00466       605,  115,  600,  605,  286,  600,  605,  286,  596,  599,
00467 
00468       600,  605,  286,  597,  600,  605,  286,  598,  600,  605,
00469       286,  600,  605,  285,  286,  600,  605,  283,  286,  600,
00470       605,  304,  327,  600,  605,  304,  325,  327,  600,  605,
00471       325,  595,  605,  325,  327,  600,  605,  308,  327,  596,
00472       599,  600,  605,  306,  327,  597,  600,  605,  311,  327,
00473       598,  600,  605,  327,  600,  605,  327,  600,  605,  313,
00474       327,  600,  605,  315,  327,  600,  605,  315,  327,  600,
00475       605,  327,  600,  605,  314,  327,  600,  605,  600,  605,
00476       129,  600,  605,  127,  600,  605,  127,  600,  605,  600,
00477       605,  595,  605,  600,  605,  600,  605,  600,  605,  128,
00478 
00479       600,  605,  446,  457,  600,  605,  446,  457,  600,  605,
00480       445,  595,  605,  443,  457,  596,  599,  600,  605,  453,
00481       457,  597,  600,  605,  456,  457,  598,  600,  605,  457,
00482       600,  605,  457,  600,  605,  457,  600,  605,  438,  457,
00483       600,  605,  439,  457,  600,  605,  446,  457,  600,  605,
00484       444,  453,  457,  597,  600,  605,  447,  595,  605,  457,
00485       596,  599,  600,  605,  457,  600,  605,  457,  600,  605,
00486       442,  600,  605,  463,  600,  605,  462,  595,  605,  459,
00487       463,  596,  599,  600,  605,  463,  597,  600,  605,  463,
00488       598,  600,  605,  463,  600,  605,  463,  600,  605,  463,
00489 
00490       600,  605,  463,  596,  599,  600,  605,  460,  463,  598,
00491       600,  605,  451,  457,  596,  599,  600,  605,  453,  457,
00492       597,  600,  605,  457,  600,  605,  452,  457,  600,  605,
00493       437,  457,  600,  605,  179,  600,  605,  181,  595,  605,
00494       179,  600,  605,  179,  596,  599,  600,  605,  179,  597,
00495       600,  605,  179,  598,  600,  605,  179,  600,  605,  179,
00496       600,  605,  594,  600,  605,  594,  600,  605,  594,  596,
00497       599,  600,  605,  594,  597,  600,  605,  594,  598,  600,
00498       605,  600,  605,  594,  600,  605,  600,  605,  593,  595,
00499       605,  596,  599,  600,  605,  597,  600,  605,  598,  600,
00500 
00501       605,  600,  605,    5,  600,  605,    6,  600,  605,    3,
00502       600,  605,    4,  600,  605,  295,  600,  605,  294,  295,
00503       600,  605,  294,  595,  605,  295,  596,  599,  600,  605,
00504       295,  597,  600,  605,  295,  598,  600,  605,  295,  600,
00505       605,  293,  295,  600,  605,  292,  295,  600,  605,  519,
00506       600,  605,  520,  600,  605,  521,  600,  605,  522,  600,
00507       605,  290,  600,  605,  289,  596,  599,  600,  605,  290,
00508       597,  600,  605,  290,  598,  600,  605,  290,  600,  605,
00509       287,  600,  605,  288,  600,  605,  301,  600,  605,  300,
00510       595,  605,  301,  596,  599,  600,  605,  301,  597,  600,
00511 
00512       605,  301,  598,  600,  605,  301,  600,  605,  600,  605,
00513       319,  600,  605,  318,  600,  605,  318,  600,  605,  318,
00514       600,  605,  169,  600,  605,  167,  595,  605,  169,  596,
00515       599,  600,  605,  169,  597,  600,  605,  169,  598,  600,
00516       605,  169,  600,  605,  168,  169,  600,  605,  171,  600,
00517       605,  171,  596,  599,  600,  605,  171,  597,  600,  605,
00518       171,  598,  600,  605,  171,  600,  605,  171,  600,  605,
00519       534,  536,  600,  605,  529,  536,  600,  605,  529,  595,
00520       605,  534,  536,  596,  599,  600,  605,  534,  536,  597,
00521       600,  605,  534,  536,  598,  600,  605,  536,  600,  605,
00522 
00523       536,  600,  605,  536,  600,  605,  534,  536,  600,  605,
00524       600,  605,   70,  600,  605,   69,  600,  605,  600,  605,
00525       600,  605,  550,  600,  605,  551,  595,  605,  550,  596,
00526       599,  600,  605,  550,  597,  600,  605,  550,  598,  600,
00527       605,  550,  600,  605,  550,  600,  605,  550,  600,  605,
00528       550,  600,  605,  550,  600,  605,  543,  550,  600,  605,
00529       544,  550,  600,  605,  177,  600,  605,  178,  595,  605,
00530       177,  596,  599,  600,  605,  177,  597,  600,  605,  177,
00531       598,  600,  605,  177,  600,  605,  600,  605,  600,  605,
00532       186,  600,  605,  186,  596,  599,  600,  605,  186,  597,
00533 
00534       600,  605,  186,  598,  600,  605,  186,  600,  605,  185,
00535       186,  600,  605,  421,  600,  605,  421,  600,  605,  421,
00536       596,  599,  600,  605,  421,  597,  600,  605,  421,  600,
00537       605,  421,  598,  600,  605,  418,  421,  600,  605,  421,
00538       600,  605,  418,  421,  600,  605,  419,  421,  600,  605,
00539       420,  421,  600,  605,  212,  216,  600,  605,  215,  595,
00540       605,  214,  216,  596,  599,  600,  605,  212,  216,  597,
00541       600,  605,  212,  216,  598,  600,  605,  212,  216,  600,
00542       605,  600,  605,   43,  600,  605,   45,  600,  605,   54,
00543       600,  605,   44,  600,  605,   55,  600,  605,   46,  600,
00544 
00545       605,   46,  595,  605,   46,  596,  599,  600,  605,   46,
00546       597,  600,  605,   46,  598,  600,  605,   47,  600,  605,
00547        46,  600,  605,  600,  605,   51,  600,  605,  600,  605,
00548        48,  600,  605,   49,  600,  605,   52,  600,  605,   52,
00549       595,  605,   52,  596,  599,  600,  605,   52,  597,  600,
00550       605,   52,  598,  600,  605,   53,  600,  605,   52,  600,
00551       605,  466,  600,  605,   66,  600,  605,  600,  605,  600,
00552       605,  600,  605,  600,  605,  600,  605,  600,  605,   68,
00553       600,  605,  147,  600,  605,  600,  605,  144,  600,  605,
00554       148,  600,  605,  148,  600,  605,  148,  600,  605,  600,
00555 
00556       605,  149,  600,  605,  145,  600,  605,  600,  605,  600,
00557       605,  600,  605,  600,  605,  600,  605,  155,  600,  605,
00558       600,  605,  156,  600,  605,  218,  600,  605,  218,  600,
00559       605,  210,  595,  605,  202,  218,  596,  599,  600,  605,
00560       218,  597,  600,  605,  208,  218,  598,  600,  605,  199,
00561       206,  218,  600,  605,  207,  218,  600,  605,  201,  218,
00562       600,  605,  218,  600,  605,  218,  600,  605,  201,  218,
00563       600,  605,  206,  218,  600,  605,  207,  218,  600,  605,
00564       218,  600,  605,  218,  600,  605,  206,  218,  600,  605,
00565       200,  206,  218,  600,  605,  600,  605,  595,  605,  600,
00566 
00567       605,  600,  605,  600,  605,  172,  600,  605,  600,  605,
00568       595,  605,  600,  605,  600,  605,  321,  600,  605,  600,
00569       605,  321,  600,  605,  322,  600,  605,  320,  600,  605,
00570       323,  600,  605,  324,  600,  605,  140,  600,  605,  140,
00571       596,  599,  600,  605,  140,  597,  600,  605,  140,  598,
00572       600,  605,  140,  600,  605,  134,  140,  600,  605,  136,
00573       140,  600,  605,16522,  331,  600,  605,  331,  600,  605,
00574       595,  605,  331,  600,  605,  331,  596,  599,  600,  605,
00575       331,  597,  600,  605,  331,  600,  605,  331,  598,  600,
00576       605,  331,  600,  605,  331,  600,  605,  330,  331,  600,
00577 
00578       605,  335,  600,  605,  333,  595,  605,  335,  596,  599,
00579       600,  605,  335,  597,  600,  605,  335,  598,  600,  605,
00580       334,  335,  600,  605,  335,  600,  605,  339,  600,  605,
00581       341,  600,  605,  600,  605,  356,  391,  600,  605,  359,
00582       391,  600,  605,  359,  390,  595,  605,  360,  391,  596,
00583       599,  600,  605,  391,  597,  600,  605,  389,  391,  598,
00584       600,  605,  361,  391,  600,  605,  362,  391,  600,  605,
00585       391,  600,  605,  391,  600,  605,  379,  391,  600,  605,
00586       380,  391,  600,  605,  166,  600,  605,  165,  595,  605,
00587       166,  596,  599,  600,  605,  166,  597,  600,  605,  166,
00588 
00589       598,  600,  605,  166,  600,  605,  164,  166,  600,  605,
00590       600,  605,  120,  600,  605,  600,  605,  122,  600,  605,
00591       121,  600,  605,  224,  600,  605,  223,  595,  605,  220,
00592       224,  596,  599,  600,  605,  224,  597,  600,  605,  224,
00593       598,  600,  605,  224,  600,  605,  224,  600,  605,  224,
00594       600,  605,  224,  596,  599,  600,  605,  221,  224,  598,
00595       600,  605,  230,  600,  605,  229,  595,  605,  226,  230,
00596       596,  599,  600,  605,  230,  597,  600,  605,  230,  598,
00597       600,  605,  230,  600,  605,  230,  600,  605,  230,  600,
00598       605,  230,  596,  599,  600,  605,  227,  230,  598,  600,
00599 
00600       605,  237,  238,  600,  605,  234,  595,  605,  231,  238,
00601       596,  599,  600,  605,  237,  238,  597,  600,  605,  235,
00602       238,  598,  600,  605,  232,  238,  600,  605,  233,  238,
00603       600,  605,  237,  238,  600,  605,  252,  255,  600,  605,
00604       254,  595,  605,  247,  255,  596,  599,  600,  605,  252,
00605       255,  597,  600,  605,  248,  255,  598,  600,  605,  253,
00606       255,  600,  605,  249,  255,  600,  605,  250,  255,  600,
00607       605,  245,  246,  600,  605,  242,  595,  605,  239,  246,
00608       596,  599,  600,  605,  245,  246,  597,  600,  605,  243,
00609       246,  598,  600,  605,  240,  246,  600,  605,  241,  246,
00610 
00611       600,  605,  245,  246,  600,  605,  263,  266,  600,  605,
00612       265,  595,  605,  258,  266,  596,  599,  600,  605,  263,
00613       266,  597,  600,  605,  259,  266,  598,  600,  605,  264,
00614       266,  600,  605,  260,  266,  600,  605,  261,  266,  600,
00615       605,  263,  266,  597,  600,  605,  528,  600,  605,  528,
00616       600,  605,  527,  595,  605,  528,  596,  599,  600,  605,
00617       528,  597,  600,  605,  528,  598,  600,  605,  525,  528,
00618       600,  605,  526,  528,  600,  605,  528,  600,  605,  518,
00619       600,  605,  512,  518,  600,  605,  512,  595,  605,  518,
00620       596,  599,  600,  605,  518,  597,  600,  605,  518,  598,
00621 
00622       600,  605,  516,  518,  600,  605,  517,  518,  600,  605,
00623       518,  600,  605,  510,  518,  600,  605,  511,  518,  600,
00624       605,  518,  600,  605,  415,  600,  605,  416,  595,  605,
00625       411,  415,  596,  599,  600,  605,  415,  597,  600,  605,
00626       415,  600,  605,  412,  415,  598,  600,  605,  415,  600,
00627       605,  410,  415,  600,  605,  414,  415,  600,  605,  342,
00628       422,  600,  605,  343,  422,  600,  605,  347,  600,  605,
00629       347,  596,  599,  600,  605,  347,  597,  600,  605,  347,
00630       598,  600,  605,  347,  600,  605,  347,  600,  605,  352,
00631       600,  605,  351,  352,  600,  605,  351,  595,  605,  352,
00632 
00633       596,  599,  600,  605,  352,  597,  600,  605,  352,  598,
00634       600,  605,  348,  352,  600,  605,  349,  352,  600,  605,
00635       350,  352,  600,  605,  352,  600,  605,  284,  286,  600,
00636       605,  357,  391,  600,  605,  390,  595,  605,  386,  391,
00637       596,  599,  600,  605,  357,  391,  597,  600,  605,  391,
00638       598,  600,  605,  357,  391,  600,  605,  391,  600,  605,
00639       391,  596,  599,  600,  605,  387,  391,  598,  600,  605,
00640       358,  391,  600,  605,  358,  391,  597,  600,  605,  381,
00641       391,  600,  605,  382,  391,  600,  605,  391,  600,  605,
00642       383,  391,  600,  605,  384,  391,  600,  605,  368,  377,
00643 
00644       600,  605,  376,  595,  605,  368,  377,  596,  599,  600,
00645       605,  368,  377,  597,  600,  605,  368,  377,  598,  600,
00646       605,  377,  600,  605,  368,  377,  600,  605,  377,  600,
00647       605,  368,  377,  600,  605,  377,  600,  605,16751,  374,
00648       375,  600,  605,  370,  595,  605,  374,  375,  596,  599,
00649       600,  605,  374,  375,  597,  600,  605,  374,  375,  598,
00650       600,  605,  374,  375,  600,  605,  375,  600,  605,  377,
00651       600,  605,  377,  596,  599,  600,  605,  377,  597,  600,
00652       605,  377,  598,  600,  605,  377,  600,  605,  377,  600,
00653       605,  274,  600,  605,  274,  596,  599,  600,  605,  274,
00654 
00655       597,  600,  605,  274,  598,  600,  605,  274,  600,  605,
00656       271,  274,  600,  605,  274,  600,  605,  282,  600,  605,
00657       282,  600,  605,  595,  605,  282,  596,  599,  600,  605,
00658       282,  597,  600,  605,  282,  600,  605,  282,  598,  600,
00659       605,  282,  600,  605,  281,  282,  600,  605,  278,  282,
00660       600,  605,  282,  600,  605,  600,  605,  595,  605,  600,
00661       605,  275,  600,  605,  591,  600,  605,  591,  596,  599,
00662       600,  605,  591,  597,  600,  605,  591,  598,  600,  605,
00663       577,  591,  600,  605,  591,  600,  605,  591,  600,  605,
00664       582,  600,  605,  582,  600,  605,  595,  605,  582,  600,
00665 
00666       605,  582,  596,  599,  600,  605,  582,  597,  600,  605,
00667       582,  600,  605,  582,  598,  600,  605,  580,  582,  600,
00668       605,  581,  582,  600,  605,  582,  600,  605,  582,  600,
00669       605,  579,  582,  600,  605,  590,  600,  605,  590,  600,
00670       605,  590,  596,  599,  600,  605,  590,  597,  600,  605,
00671       590,  598,  600,  605,  590,  600,  605,  590,  600,  605,
00672       590,  600,  605,  590,  600,  605,  590,  600,  605,  583,
00673       590,  600,  605,  589,  600,  605,  589,  596,  599,  600,
00674       605,  589,  597,  600,  605,  589,  598,  600,  605,  588,
00675       589,  600,  605,  589,  600,  605,  592,  600,  605,  592,
00676 
00677       596,  599,  600,  605,  592,  597,  600,  605,  592,  598,
00678       600,  605,  592,  600,  605,  600,  605,  553,  595,  605,
00679       596,  599,  600,  605,  597,  600,  605,  598,  600,  605,
00680       600,  605,  564,  566,  600,  605,  564,  566,  600,  605,
00681       565,  595,  605,  564,  566,  596,  599,  600,  605,  564,
00682       566,  597,  600,  605,  564,  566,  598,  600,  605,  566,
00683       600,  605,  566,  600,  605,  564,  566,  600,  605,  566,
00684       600,  605,  566,  600,  605,  564,  566,  600,  605,  566,
00685       600,  605,  566,  600,  605,  572,  575,  600,  605,  574,
00686       595,  605,  572,  575,  596,  599,  600,  605,  572,  575,
00687 
00688       597,  600,  605,  575,  600,  605,  572,  575,  598,  600,
00689       605,  575,  600,  605,  575,  600,  605,  575,  600,  605,
00690       575,  600,  605,  572,  575,  600,  605,  575,  600,  605,
00691     16955,  602,  604,  183,  182,  183,  602,  604,  187,  497,
00692       472,  472,  473,  473,  471,  472,  473,  470,  465,  497,
00693       472,  473,  506,  477,  496,  602,  604,  474,  477,  477,
00694       477,  483,  602,  604,  483,  485,  485,  485,  488,  488,
00695        36,   31,   31,  406,  406,  504,  505,  504,  505,  524,
00696       506,  504,  505,  524,   56,   56,  173,  158,  158,  192,
00697       329,   42,  602,  604,  159,  161,   17,   67,   67,   67,
00698 
00699        67,   67,   67,  158,  131,  158,  158,  158,  158,  158,
00700       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00701       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00702       158,  158,  158,  158,  158,  158,  158,   14,   14,  602,
00703        14,  604,   13,  158,  158,  158,  132,  296,  602,  604,
00704       296,  403,  402,  402,  403,  417,  602,  604,  401,  417,
00705       417,  417,  417,  417,  417,  417,  417,  417,  417,  116,
00706       304,  304,  325,  325,  306,  306,  309,  602,  305,  604,
00707       307,  127,  127,  127,  127,  128,  128,  128,  446,  446,
00708       449,  602,  450,  604,  454,  446,  444,  449,  602,  450,
00709 
00710       604,  448,  461,  461,  602,  461,  604,  458,  450,  604,
00711       181,  181,  180,  594,  594,  603,  601,  602,  594,  601,
00712       604,  593,  602,  604,  294,  290,  290,  602,  290,  604,
00713       301,  301,  602,  301,  604,  318,  318,  318,  318,  534,
00714       529,  535,  530,  602,  531,  604,  534,  534,  534,   69,
00715        69,  176,  419,  602,  604,  419,  212,  213,  212,  602,
00716       212,  604,   44,   45,   44,   46,   46,  602,   46,  604,
00717        49,   49,   49,   48,   52,   53,   52,  602,   52,  604,
00718       147,  148,  148,  148,  148,  149,  149,  155,  155,  156,
00719       156,  203,  602,  604,  204,  205,  217,  211,  354,  162,
00720 
00721       320,  320,  320,  133,16522,  137,  135,  330,  330,  330,
00722       337,  336,  338,  340,  356,  359,  364,  602,  365,  604,
00723       163,  120,  120,  121,  121,  222,  222,  602,  222,  604,
00724       219,  228,  228,  602,  228,  604,  225,  237,  237,  602,
00725       237,  604,  252,  245,  245,  602,  245,  604,  263,  263,
00726       525,  512,  513,  514,  414,  414,  344,  345,  346,  351,
00727       350,  350,  357,  357,  602,  357,  604,  385,  358,  368,
00728       369,  368,  604,  368,16751, 8559,  374,  374,  602,  374,
00729       604,  278,  280,  279,  278,  277,  275,  275,  275,  276,
00730       275,  578,  579,  579,  579,  586,  553,  602,  604,  564,
00731 
00732       564,  564,  554,  558,  602,  557,  604,  564,  564,  564,
00733       555,  555,  556,  557,  604,  572,  573,  573,  602,  573,
00734       604,  572,16955, 8763,  472,  472,  473,  473,  472,  473,
00735       494,  537,  495,  539,  477,  477,  479,  485,  485,   32,
00736       504,  505,  504,  505,    8,   56,   56,  158,  329,  537,
00737       539,  159,   57,   67,   67,   67,   67,   67,   67,   67,
00738        67,  130,  158,  158,  158,  158,  158,  158,  158,  158,
00739       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00740       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00741       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00742 
00743       158,  158,  158,  158,  158,  158,  537,  539,  537,  539,
00744       401,  417,  417,  398,  417,  417,  417,  417,  417,  417,
00745       417,  113,  306,  312,  309,  310,  305,  127,  127,  128,
00746       455,  448,  180,  318,  318,  534,  534,  534,   69,  123,
00747       124,  547,  546,  545,  190,  537,  539,   55,  148,  148,
00748       148,  209,  320, 8330,  139,  330,  332,  388,  363,  236,
00749       251,  244,  262,  263,  413,  372,  280,  277,  275,  275,
00750       579,  586,  564,  564,  560,  555,  556,  556,  569,  195,
00751       472,  473,  493,  538,  492,  540,  492,  540,  507,  477,
00752       477,  479,  485,  485,  467,  504,  505,  504,  505,    8,
00753 
00754        56,   56,  328,  538,  538,  538,  196,  540,  540,  540,
00755       540,  197,   67,   67,   67,   67,   67,   67,   67,   67,
00756       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00757       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00758       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00759       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00760       158,  158,  158,  195,  538,  195,  540,  398,  417,  417,
00761       398,  417,  417,  417,  417,  423,  417,  306,  312,  127,
00762       127,  455,  318,  318,  534,  534,  534,   69,  124,  190,
00763        50,   64,  148,  148,  150,  209, 8330,  388,  363,  236,
00764 
00765       251,  244,  262,  263,  413,  373,  552,  564,  564,  559,
00766       477,  477,  484,  485,  467,  467,  504,  505,  194,  193,
00767        56,   56,  175,  353,  197,   12,   67,   67,   67,   67,
00768        67,   67,   67,   67,  158,  158,  158,  158,  158,  158,
00769       158,  158,  158,  158,   18,   18,   18,   18,  131,  111,
00770       110,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00771       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00772       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00773       158,  158,  158,   13,  417,  399,  417,  417,  417,  417,
00774       417,  417,  112,  175,  306,  326,  127,  440,  441,  318,
00775 
00776       318,  170,  532,  534,  534,  534,  534,  549,  146,  148,
00777       148,  151,  366,  371,  584,  561,  564,  564,  562,  477,
00778       477,16860,  467,  504,  505,   56,   56,  111,  197,   67,
00779        90,   67,   67,   67,   67,   67,   67,   67,   67,  158,
00780       158,  158,  158,  158,   92,   91,  158,  158,  158,   29,
00781       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00782       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
00783       158,  158,  158,  158,16485,  158,  158,  158,  109,  108,
00784       125,  158,  158,  158,  399,  417,  399,  417,  417,  397,
00785       417,  424,  417,  417,  127,  317,  318,  534,  534,  534,
00786 
00787       548,   62,   63,  148,  584,  587,  563,  564,  567,  477,
00788      8668, 8668,  504,  505,  499,   56,   56,   92,   29,16485,
00789       109,  174,   67,   67,   67,   67,   67,   67,   67,   67,
00790       158,  158,  158,  158,  158,  158,  158,  158,  158,   73,
00791       158,  158,  158,   76,  158,  158,   20,  158,  158,   83,
00792       158,  158,  158,  158,  158,   25,  158,  158,  158,  158,
00793        72, 8293,  100,  158,  158,  158,  158,  158,  158,  397,
00794       417,  417,  425,  397,  426,  417,  127,  318,  534,  534,
00795       534,  148,  152,  378,  273,  272,  568,  504,  505,  501,
00796       498,   56,   56,   73,   76,   20,   83,   25,   72, 8293,
00797 
00798        67,   67,   67,   67,   67,   67,   41,   67,  142,  158,
00799       158,  158,  158,  158,   99,  141,  158,  158,  158, 8310,
00800       131,16502,  158,  158,  158,  158,   20,   84,   77,  158,
00801        28,  158,  158,  158,  158,  158,   25,  158,  158,  158,
00802        21,  158,  158,   74,  395,  417,  396,  417,  400,  417,
00803       127,  533,  534,  534,  534,   58,   65,   60,   59,  152,
00804       585,  570,  504,  505,   56,   56,   41,   99,   84,   77,
00805        28,   21,   74,   67,   67,   67,   39,   67,   67,   67,
00806       158,  158,   75,  158,  158,   78,  541, 8310,  130,  158,
00807        71,  158,   26,  158,   28,  158,  158,  158,   30,   38,
00808 
00809       158,  158,  158,  158,   21,   81,  158,  395,  396,  400,
00810       395,  396,  400,  127,  534,   58,   61,   59,  256,  257,
00811       515,  585,  504,  505,  500,   56,   56,   39,   75,   78,
00812        71,   26,   30,   38,   81,   67,   67,   80,   67,   88,
00813        79,  143,  158,  158,  158,   89,  541,  541,  158,   85,
00814        85,   26,   82,   82,16503,   82,   82,  131,  158,  158,
00815       158,   27,  158,  158,  158,  158,   96,   95,  158,  316,
00816       126,  127,  534,  256,  256,  257,  257,  576,  504,  505,
00817       523,   56,   56,   80,   88,   79,   89,   85,   85,   82,
00818        27,   67,   87,   40,  158,  111,  158,   82,  158,  158,
00819 
00820        19,   27,  158,  158,  158,  158,  105,  104,  158,  534,
00821       523,   56,   56,   87,   40,   19,   67,  158, 8311,  158,
00822       158,   19,  158,  158,  158,   22,   94,   93,  154,  153,
00823        56,   56,   22,   67,  157,  158,   24,  158,  158,   22,
00824       103,  102,  154,  153,   56,   56,   24,   67,   24,  158,
00825       158,   56,   56,   67,  158,   23,   56,   56,   23,   86,
00826        98,   97,   23,   56,   56,   86,  107,  106,   56,   56,
00827        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00828        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00829        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00830 
00831        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00832        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00833        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00834        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00835        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00836        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00837        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00838        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00839        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00840        56,   56,   56,   56
00841 
00842     } ;
00843 
00844 static yyconst flex_int16_t yy_accept[3551] =
00845     {   0,
00846         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00847         1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
00848         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00849         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00850         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00851         3,    3,    3,    3,    3,    4,    5,    6,    7,    8,
00852         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00853         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00854         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00855         9,    9,    9,    9,    9,    9,    9,   10,   11,   11,
00856 
00857        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
00858        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
00859        11,   11,   11,   11,   11,   12,   13,   13,   13,   14,
00860        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00861        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00862        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
00863        15,   15,   15,   15,   15,   15,   15,   16,   17,   18,
00864        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00865        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00866        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00867 
00868        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00869        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00870        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00871        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
00872        19,   19,   19,   20,   22,   24,   28,   31,   34,   36,
00873        38,   41,   44,   47,   50,   56,   60,   64,   67,   70,
00874        72,   74,   76,   78,   80,   82,   84,   87,   91,   94,
00875        96,   98,  101,  103,  105,  107,  110,  113,  115,  118,
00876       120,  123,  126,  128,  131,  134,  137,  140,  143,  148,
00877       153,  156,  160,  163,  167,  171,  174,  178,  182,  186,
00878 
00879       188,  191,  194,  197,  202,  206,  210,  213,  217,  221,
00880       224,  228,  231,  236,  240,  243,  247,  250,  254,  258,
00881       261,  265,  268,  271,  276,  280,  283,  287,  290,  294,
00882       298,  300,  303,  305,  307,  310,  312,  315,  319,  322,
00883       325,  329,  332,  337,  341,  345,  348,  351,  354,  359,
00884       363,  366,  369,  372,  375,  378,  383,  387,  391,  395,
00885       398,  402,  405,  408,  411,  413,  417,  419,  422,  425,
00886       428,  431,  434,  437,  439,  441,  444,  447,  450,  453,
00887       455,  457,  460,  463,  466,  469,  472,  475,  478,  481,
00888       484,  487,  490,  493,  496,  499,  502,  505,  508,  511,
00889 
00890       514,  517,  520,  523,  527,  530,  536,  541,  546,  550,
00891       553,  555,  557,  559,  561,  563,  566,  568,  570,  572,
00892       575,  578,  580,  583,  586,  589,  592,  594,  598,  601,
00893       604,  607,  610,  613,  617,  620,  625,  630,  634,  638,
00894       642,  646,  649,  652,  657,  661,  665,  669,  673,  676,
00895       679,  682,  687,  691,  695,  698,  702,  706,  710,  713,
00896       716,  720,  723,  727,  731,  735,  739,  743,  747,  751,
00897       755,  759,  763,  766,  769,  774,  778,  782,  785,  788,
00898       792,  795,  798,  803,  807,  811,  814,  818,  822,  826,
00899       831,  834,  838,  844,  849,  854,  857,  860,  864,  868,
00900 
00901       872,  875,  879,  881,  884,  887,  890,  892,  894,  896,
00902       898,  900,  903,  907,  911,  914,  920,  925,  930,  933,
00903       936,  939,  943,  947,  951,  957,  960,  965,  968,  971,
00904       974,  977,  980,  986,  990,  994,  997, 1000, 1003, 1008,
00905      1013, 1019, 1024, 1027, 1031, 1035, 1038, 1041, 1044, 1049,
00906      1053, 1057, 1060, 1063, 1066, 1069, 1074, 1078, 1082, 1084,
00907      1087, 1089, 1092, 1096, 1099, 1102, 1104, 1107, 1110, 1113,
00908      1116, 1119, 1123, 1126, 1131, 1135, 1139, 1142, 1146, 1150,
00909      1153, 1156, 1159, 1162, 1165, 1170, 1174, 1178, 1181, 1184,
00910      1187, 1190, 1193, 1198, 1202, 1206, 1209, 1211, 1214, 1217,
00911 
00912      1220, 1223, 1226, 1229, 1234, 1238, 1242, 1245, 1249, 1252,
00913      1257, 1261, 1265, 1268, 1271, 1275, 1279, 1282, 1288, 1293,
00914      1298, 1301, 1304, 1307, 1311, 1313, 1316, 1319, 1321, 1323,
00915      1326, 1329, 1334, 1338, 1342, 1345, 1348, 1351, 1354, 1357,
00916      1361, 1365, 1368, 1371, 1376, 1380, 1384, 1387, 1389, 1391,
00917      1394, 1399, 1403, 1407, 1410, 1414, 1417, 1420, 1425, 1429,
00918      1432, 1436, 1440, 1443, 1447, 1451, 1455, 1459, 1462, 1468,
00919      1473, 1478, 1482, 1484, 1487, 1490, 1493, 1496, 1499, 1502,
00920      1505, 1510, 1514, 1518, 1521, 1524, 1526, 1529, 1531, 1534,
00921      1537, 1540, 1543, 1548, 1552, 1556, 1559, 1562, 1565, 1568,
00922 
00923      1570, 1572, 1574, 1576, 1578, 1580, 1583, 1586, 1588, 1591,
00924      1594, 1597, 1600, 1602, 1605, 1608, 1610, 1612, 1614, 1616,
00925      1618, 1621, 1623, 1626, 1629, 1632, 1635, 1641, 1645, 1650,
00926      1655, 1659, 1663, 1666, 1669, 1673, 1677, 1681, 1684, 1687,
00927      1691, 1696, 1698, 1700, 1702, 1704, 1706, 1709, 1711, 1713,
00928      1715, 1717, 1720, 1722, 1725, 1728, 1731, 1734, 1737, 1740,
00929      1745, 1749, 1753, 1756, 1760, 1765, 1768, 1771, 1773, 1776,
00930      1781, 1785, 1788, 1792, 1795, 1798, 1802, 1805, 1808, 1813,
00931      1817, 1821, 1825, 1828, 1831, 1834, 1836, 1840, 1844, 1848,
00932      1854, 1858, 1863, 1867, 1871, 1874, 1877, 1881, 1885, 1888,
00933 
00934      1891, 1896, 1900, 1904, 1907, 1911, 1913, 1916, 1918, 1921,
00935      1924, 1927, 1930, 1936, 1940, 1944, 1947, 1950, 1953, 1958,
00936      1963, 1966, 1969, 1975, 1979, 1983, 1986, 1989, 1992, 1997,
00937      2002, 2006, 2009, 2015, 2020, 2025, 2029, 2033, 2037, 2041,
00938      2044, 2050, 2055, 2060, 2064, 2068, 2072, 2076, 2079, 2085,
00939      2090, 2095, 2099, 2103, 2107, 2111, 2114, 2120, 2125, 2130,
00940      2134, 2138, 2142, 2147, 2150, 2153, 2156, 2161, 2165, 2169,
00941      2173, 2177, 2180, 2183, 2187, 2190, 2195, 2199, 2203, 2207,
00942      2211, 2214, 2218, 2222, 2225, 2228, 2231, 2237, 2241, 2244,
00943      2249, 2252, 2256, 2260, 2264, 2268, 2271, 2276, 2280, 2284,
00944 
00945      2287, 2290, 2293, 2297, 2300, 2305, 2309, 2313, 2317, 2321,
00946      2325, 2328, 2332, 2336, 2339, 2345, 2350, 2354, 2358, 2361,
00947      2366, 2371, 2375, 2380, 2384, 2388, 2391, 2395, 2399, 2403,
00948      2406, 2412, 2417, 2422, 2425, 2429, 2432, 2436, 2440, 2444,
00949      2447, 2453, 2458, 2463, 2467, 2470, 2473, 2478, 2482, 2486,
00950      2489, 2492, 2495, 2500, 2504, 2508, 2511, 2515, 2518, 2521,
00951      2524, 2526, 2531, 2535, 2538, 2542, 2545, 2549, 2553, 2556,
00952      2558, 2560, 2562, 2565, 2568, 2573, 2577, 2581, 2585, 2588,
00953      2591, 2594, 2597, 2599, 2602, 2607, 2611, 2614, 2618, 2622,
00954      2626, 2629, 2632, 2636, 2639, 2642, 2647, 2651, 2655, 2658,
00955 
00956      2661, 2664, 2667, 2670, 2674, 2677, 2682, 2686, 2690, 2694,
00957      2697, 2700, 2705, 2709, 2713, 2716, 2718, 2721, 2725, 2728,
00958      2731, 2733, 2737, 2741, 2744, 2750, 2755, 2760, 2763, 2766,
00959      2770, 2773, 2776, 2780, 2783, 2786, 2790, 2793, 2799, 2804,
00960      2807, 2812, 2815, 2818, 2821, 2824, 2828, 2832, 2833, 2834,
00961      2835, 2835, 2836, 2837, 2837, 2837, 2838, 2839, 2840, 2840,
00962      2840, 2840, 2840, 2840, 2841, 2841, 2841, 2842, 2842, 2842,
00963      2842, 2844, 2844, 2844, 2845, 2845, 2845, 2845, 2846, 2848,
00964      2849, 2850, 2851, 2851, 2851, 2853, 2853, 2853, 2853, 2854,
00965      2854, 2854, 2854, 2854, 2854, 2855, 2856, 2857, 2858, 2858,
00966 
00967      2858, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866,
00968      2867, 2867, 2867, 2868, 2868, 2869, 2870, 2871, 2871, 2871,
00969      2872, 2873, 2874, 2874, 2874, 2875, 2876, 2876, 2876, 2876,
00970      2878, 2880, 2881, 2882, 2882, 2882, 2882, 2884, 2884, 2885,
00971      2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2886,
00972      2887, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
00973      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
00974      2888, 2888, 2888, 2888, 2889, 2889, 2889, 2889, 2889, 2889,
00975      2890, 2891, 2891, 2891, 2892, 2892, 2893, 2894, 2895, 2895,
00976      2896, 2897, 2897, 2898, 2898, 2899, 2900, 2901, 2902, 2903,
00977 
00978      2904, 2904, 2905, 2906, 2907, 2907, 2907, 2908, 2909, 2910,
00979      2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920,
00980      2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930,
00981      2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2941,
00982      2943, 2944, 2944, 2944, 2944, 2944, 2945, 2945, 2945, 2946,
00983      2946, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954,
00984      2955, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956,
00985      2956, 2957, 2958, 2959, 2959, 2960, 2961, 2962, 2963, 2964,
00986      2965, 2966, 2967, 2968, 2969, 2970, 2970, 2970, 2971, 2972,
00987      2974, 2975, 2975, 2976, 2977, 2977, 2977, 2979, 2981, 2982,
00988 
00989      2982, 2982, 2983, 2984, 2984, 2985, 2985, 2986, 2986, 2986,
00990      2986, 2986, 2987, 2987, 2987, 2988, 2988, 2989, 2990, 2991,
00991      2991, 2991, 2991, 2993, 2995, 2996, 2996, 2996, 2997, 2998,
00992      3000, 3002, 3003, 3003, 3003, 3003, 3004, 3006, 3008, 3009,
00993      3011, 3012, 3013, 3013, 3014, 3014, 3015, 3016, 3016, 3017,
00994      3019, 3022, 3022, 3023, 3024, 3025, 3026, 3027, 3029, 3031,
00995      3032, 3034, 3036, 3037, 3038, 3039, 3040, 3040, 3041, 3042,
00996      3043, 3045, 3047, 3048, 3049, 3050, 3051, 3051, 3052, 3052,
00997      3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3053,
00998      3053, 3053, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3061,
00999 
01000      3063, 3064, 3065, 3065, 3066, 3067, 3069, 3071, 3072, 3072,
01001      3072, 3073, 3074, 3075, 3076, 3077, 3079, 3081, 3081, 3081,
01002      3081, 3081, 3081, 3081, 3082, 3083, 3084, 3084, 3084, 3085,
01003      3086, 3087, 3088, 3088, 3088, 3088, 3088, 3089, 3090, 3091,
01004      3092, 3092, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099,
01005      3099, 3099, 3099, 3099, 3100, 3100, 3100, 3101, 3101, 3101,
01006      3101, 3102, 3103, 3104, 3104, 3105, 3106, 3107, 3107, 3108,
01007      3108, 3108, 3108, 3108, 3109, 3109, 3109, 3110, 3110, 3111,
01008      3111, 3111, 3111, 3112, 3113, 3114, 3114, 3115, 3116, 3117,
01009      3117, 3117, 3117, 3117, 3119, 3121, 3122, 3123, 3124, 3125,
01010 
01011      3126, 3126, 3127, 3129, 3131, 3132, 3133, 3135, 3137, 3138,
01012      3139, 3139, 3139, 3141, 3143, 3144, 3144, 3144, 3145, 3145,
01013      3145, 3147, 3149, 3150, 3150, 3150, 3151, 3151, 3152, 3153,
01014      3154, 3155, 3155, 3156, 3156, 3156, 3157, 3157, 3158, 3159,
01015      3160, 3161, 3162, 3163, 3164, 3166, 3168, 3169, 3170, 3171,
01016      3172, 3174, 3174, 3174, 3175, 3176, 3177, 3178, 3180, 3182,
01017      3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182,
01018      3182, 3182, 3182, 3182, 3182, 3183, 3183, 3184, 3185, 3186,
01019      3186, 3187, 3187, 3187, 3188, 3189, 3190, 3191, 3192, 3192,
01020      3192, 3193, 3193, 3193, 3193, 3193, 3193, 3193, 3194, 3194,
01021 
01022      3194, 3195, 3195, 3196, 3196, 3196, 3196, 3196, 3196, 3197,
01023      3197, 3197, 3197, 3197, 3198, 3198, 3198, 3199, 3200, 3201,
01024      3202, 3203, 3203, 3204, 3206, 3208, 3209, 3210, 3210, 3210,
01025      3210, 3210, 3210, 3210, 3210, 3210, 3210, 3211, 3211, 3211,
01026      3212, 3213, 3216, 3217, 3218, 3220, 3222, 3222, 3222, 3222,
01027      3223, 3224, 3225, 3225, 3225, 3225, 3225, 3226, 3227, 3227,
01028      3228, 3228, 3228, 3229, 3229, 3231, 3231, 3231, 3231, 3233,
01029      3233, 3233, 3235, 3235, 3235, 3235, 3236, 3237, 3238, 3239,
01030      3239, 3239, 3239, 3240, 3240, 3240, 3241, 3243, 3243, 3243,
01031      3244, 3244, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3246,
01032 
01033      3246, 3246, 3246, 3246, 3246, 3246, 3247, 3248, 3248, 3248,
01034      3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248,
01035      3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248,
01036      3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248,
01037      3249, 3249, 3249, 3250, 3250, 3250, 3250, 3250, 3250, 3250,
01038      3250, 3250, 3251, 3251, 3251, 3251, 3252, 3252, 3252, 3253,
01039      3253, 3253, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260,
01040      3261, 3262, 3263, 3264, 3265, 3266, 3266, 3266, 3267, 3268,
01041      3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278,
01042      3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288,
01043 
01044      3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298,
01045      3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3306, 3306,
01046      3307, 3307, 3308, 3308, 3309, 3309, 3309, 3309, 3309, 3309,
01047      3309, 3309, 3309, 3309, 3309, 3310, 3310, 3310, 3311, 3311,
01048      3312, 3313, 3314, 3316, 3317, 3318, 3319, 3320, 3321, 3322,
01049      3322, 3323, 3323, 3324, 3324, 3325, 3325, 3325, 3326, 3327,
01050      3327, 3328, 3328, 3328, 3328, 3328, 3329, 3330, 3331, 3331,
01051      3331, 3332, 3332, 3332, 3332, 3332, 3333, 3333, 3333, 3333,
01052      3334, 3335, 3336, 3336, 3337, 3338, 3339, 3339, 3340, 3340,
01053      3340, 3341, 3342, 3343, 3344, 3344, 3344, 3345, 3345, 3346,
01054 
01055      3347, 3347, 3348, 3348, 3349, 3349, 3349, 3349, 3349, 3349,
01056      3349, 3349, 3349, 3349, 3349, 3350, 3351, 3352, 3352, 3352,
01057      3352, 3352, 3352, 3352, 3353, 3353, 3353, 3353, 3353, 3353,
01058      3353, 3353, 3353, 3353, 3354, 3354, 3354, 3355, 3355, 3356,
01059      3357, 3357, 3357, 3358, 3358, 3359, 3359, 3359, 3359, 3359,
01060      3360, 3360, 3360, 3361, 3361, 3361, 3361, 3362, 3362, 3362,
01061      3362, 3363, 3363, 3363, 3363, 3364, 3364, 3364, 3365, 3365,
01062      3365, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3367, 3367,
01063      3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3368, 3369,
01064      3370, 3371, 3371, 3371, 3371, 3372, 3372, 3373, 3373, 3373,
01065 
01066      3373, 3373, 3374, 3375, 3375, 3375, 3375, 3375, 3376, 3376,
01067      3376, 3376, 3376, 3376, 3377, 3378, 3379, 3379, 3379, 3379,
01068      3380, 3381, 3381, 3382, 3383, 3383, 3385, 3385, 3387, 3389,
01069      3390, 3391, 3392, 3393, 3393, 3394, 3395, 3395, 3395, 3395,
01070      3395, 3396, 3398, 3399, 3400, 3400, 3400, 3400, 3400, 3400,
01071      3400, 3401, 3401, 3401, 3401, 3402, 3403, 3403, 3403, 3403,
01072      3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403,
01073      3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403,
01074      3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403,
01075      3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403,
01076 
01077      3403, 3403, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404,
01078      3405, 3406, 3407, 3408, 3408, 3408, 3409, 3410, 3411, 3412,
01079      3413, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421,
01080      3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431,
01081      3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441,
01082      3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451,
01083      3452, 3453, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460,
01084      3461, 3462, 3463, 3464, 3464, 3466, 3468, 3468, 3468, 3469,
01085      3469, 3469, 3469, 3469, 3469, 3469, 3470, 3471, 3472, 3473,
01086      3474, 3475, 3476, 3477, 3478, 3478, 3478, 3479, 3479, 3480,
01087 
01088      3480, 3480, 3480, 3480, 3481, 3482, 3482, 3483, 3483, 3483,
01089      3483, 3483, 3484, 3485, 3485, 3486, 3487, 3488, 3489, 3490,
01090      3490, 3490, 3491, 3492, 3492, 3493, 3493, 3493, 3493, 3493,
01091      3493, 3493, 3494, 3495, 3495, 3496, 3496, 3496, 3496, 3496,
01092      3497, 3497, 3498, 3498, 3498, 3498, 3498, 3499, 3499, 3499,
01093      3500, 3500, 3500, 3501, 3501, 3501, 3502, 3502, 3502, 3503,
01094      3503, 3503, 3504, 3504, 3505, 3505, 3505, 3506, 3506, 3506,
01095      3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3507,
01096      3507, 3507, 3507, 3507, 3507, 3507, 3508, 3509, 3510, 3511,
01097      3511, 3511, 3511, 3511, 3511, 3511, 3511, 3511, 3511, 3511,
01098 
01099      3511, 3511, 3512, 3513, 3515, 3515, 3515, 3516, 3516, 3516,
01100      3516, 3517, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3520,
01101      3521, 3522, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523,
01102      3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523,
01103      3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523,
01104      3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523,
01105      3523, 3523, 3523, 3523, 3524, 3524, 3524, 3524, 3524, 3524,
01106      3525, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3526, 3527,
01107      3528, 3529, 3530, 3531, 3532, 3533, 3534, 3535, 3536, 3537,
01108      3538, 3539, 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547,
01109 
01110      3548, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558,
01111      3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568,
01112      3569, 3570, 3571, 3572, 3572, 3572, 3573, 3574, 3575, 3576,
01113      3577, 3578, 3579, 3580, 3581, 3582, 3583, 3584, 3585, 3585,
01114      3585, 3585, 3585, 3585, 3585, 3585, 3586, 3588, 3589, 3590,
01115      3591, 3592, 3593, 3593, 3594, 3596, 3596, 3596, 3596, 3597,
01116      3598, 3598, 3598, 3599, 3600, 3601, 3602, 3603, 3605, 3606,
01117      3607, 3608, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609,
01118      3609, 3611, 3612, 3612, 3612, 3612, 3613, 3613, 3613, 3613,
01119      3613, 3613, 3614, 3614, 3614, 3614, 3614, 3614, 3614, 3614,
01120 
01121      3614, 3614, 3614, 3614, 3614, 3614, 3614, 3615, 3615, 3615,
01122      3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615,
01123      3615, 3615, 3616, 3616, 3616, 3618, 3619, 3620, 3620, 3620,
01124      3620, 3620, 3620, 3620, 3620, 3620, 3620, 3620, 3620, 3620,
01125      3620, 3621, 3623, 3624, 3624, 3626, 3626, 3626, 3626, 3626,
01126      3627, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628, 3628,
01127      3628, 3628, 3628, 3628, 3628, 3628, 3629, 3629, 3629, 3629,
01128      3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629,
01129      3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629,
01130      3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3630, 3632,
01131 
01132      3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642,
01133      3643, 3644, 3645, 3646, 3647, 3648, 3648, 3649, 3650, 3650,
01134      3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659,
01135      3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669,
01136      3670, 3671, 3671, 3671, 3672, 3673, 3674, 3676, 3677, 3678,
01137      3679, 3680, 3681, 3682, 3682, 3683, 3684, 3685, 3685, 3686,
01138      3686, 3686, 3686, 3686, 3686, 3687, 3688, 3689, 3690, 3692,
01139      3692, 3693, 3694, 3695, 3695, 3696, 3697, 3698, 3699, 3700,
01140      3701, 3702, 3703, 3703, 3703, 3703, 3703, 3704, 3704, 3705,
01141      3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705,
01142 
01143      3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705,
01144      3706, 3706, 3707, 3707, 3709, 3709, 3709, 3709, 3709, 3709,
01145      3709, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3711, 3711,
01146      3712, 3713, 3715, 3715, 3715, 3716, 3716, 3717, 3718, 3718,
01147      3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718,
01148      3719, 3719, 3719, 3719, 3720, 3720, 3720, 3720, 3720, 3720,
01149      3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720,
01150      3720, 3720, 3720, 3720, 3721, 3721, 3721, 3722, 3722, 3722,
01151      3722, 3722, 3723, 3724, 3725, 3726, 3727, 3728, 3729, 3730,
01152      3731, 3732, 3733, 3734, 3735, 3736, 3737, 3737, 3737, 3737,
01153 
01154      3737, 3738, 3738, 3738, 3739, 3740, 3741, 3741, 3741, 3742,
01155      3743, 3744, 3745, 3746, 3747, 3747, 3748, 3749, 3750, 3751,
01156      3752, 3753, 3754, 3755, 3756, 3756, 3757, 3758, 3759, 3759,
01157      3759, 3760, 3761, 3762, 3763, 3764, 3765, 3766, 3767, 3767,
01158      3767, 3768, 3769, 3770, 3770, 3770, 3770, 3771, 3771, 3771,
01159      3772, 3773, 3773, 3774, 3775, 3776, 3777, 3777, 3778, 3779,
01160      3780, 3781, 3782, 3782, 3782, 3782, 3782, 3782, 3783, 3783,
01161      3783, 3784, 3784, 3784, 3784, 3785, 3785, 3785, 3785, 3785,
01162      3785, 3785, 3785, 3785, 3785, 3785, 3786, 3787, 3787, 3787,
01163      3787, 3787, 3787, 3787, 3787, 3788, 3788, 3788, 3788, 3788,
01164 
01165      3788, 3788, 3790, 3791, 3791, 3792, 3793, 3794, 3794, 3794,
01166      3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794,
01167      3794, 3794, 3794, 3795, 3795, 3796, 3796, 3796, 3796, 3797,
01168      3797, 3797, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3799,
01169      3799, 3799, 3799, 3800, 3801, 3801, 3801, 3801, 3801, 3801,
01170      3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, 3811, 3812,
01171      3813, 3814, 3815, 3816, 3816, 3816, 3817, 3818, 3818, 3818,
01172      3819, 3820, 3820, 3820, 3820, 3820, 3820, 3823, 3824, 3825,
01173      3826, 3827, 3828, 3829, 3829, 3830, 3831, 3831, 3832, 3833,
01174      3834, 3835, 3836, 3837, 3838, 3839, 3840, 3840, 3840, 3841,
01175 
01176      3841, 3842, 3842, 3843, 3843, 3843, 3844, 3845, 3845, 3845,
01177      3845, 3847, 3849, 3851, 3851, 3852, 3854, 3855, 3856, 3856,
01178      3857, 3858, 3859, 3859, 3859, 3860, 3860, 3861, 3861, 3861,
01179      3861, 3861, 3861, 3861, 3861, 3861, 3861, 3861, 3861, 3862,
01180      3862, 3862, 3862, 3863, 3863, 3863, 3863, 3863, 3865, 3865,
01181      3866, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3868, 3868,
01182      3868, 3868, 3868, 3869, 3869, 3869, 3869, 3869, 3869, 3869,
01183      3870, 3870, 3871, 3871, 3871, 3872, 3872, 3872, 3872, 3872,
01184      3872, 3872, 3872, 3872, 3873, 3873, 3873, 3873, 3874, 3875,
01185      3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884, 3885,
01186 
01187      3885, 3885, 3886, 3887, 3888, 3888, 3888, 3888, 3888, 3890,
01188      3891, 3892, 3893, 3893, 3894, 3895, 3896, 3897, 3898, 3899,
01189      3901, 3902, 3903, 3904, 3904, 3904, 3905, 3906, 3906, 3906,
01190      3907, 3907, 3907, 3908, 3909, 3910, 3911, 3912, 3913, 3914,
01191      3914, 3915, 3916, 3917, 3918, 3919, 3919, 3919, 3920, 3921,
01192      3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3923, 3923,
01193      3923, 3923, 3923, 3923, 3925, 3926, 3927, 3928, 3928, 3928,
01194      3928, 3929, 3929, 3929, 3929, 3929, 3930, 3930, 3930, 3931,
01195      3932, 3932, 3932, 3933, 3933, 3933, 3933, 3933, 3935, 3935,
01196      3935, 3935, 3936, 3936, 3937, 3938, 3939, 3940, 3941, 3942,
01197 
01198      3944, 3945, 3946, 3946, 3946, 3947, 3948, 3949, 3949, 3949,
01199      3949, 3949, 3950, 3951, 3952, 3953, 3954, 3956, 3957, 3959,
01200      3960, 3961, 3962, 3962, 3963, 3964, 3965, 3966, 3967, 3968,
01201      3969, 3969, 3970, 3970, 3970, 3970, 3971, 3973, 3974, 3974,
01202      3974, 3975, 3976, 3977, 3978, 3978, 3978, 3978, 3978, 3978,
01203      3979, 3979, 3979, 3979, 3979, 3982, 3983, 3984, 3984, 3984,
01204      3985, 3985, 3986, 3987, 3987, 3987, 3988, 3989, 3990, 3991,
01205      3991, 3991, 3991, 3991, 3992, 3992, 3992, 3992, 3992, 3993,
01206      3994, 3995, 3996, 3997, 3997, 3997, 3997, 3998, 3998, 3998,
01207      3999, 3999, 4000, 4001, 4001, 4002, 4003, 4004, 4005, 4006,
01208 
01209      4007, 4008, 4009, 4010, 4010, 4010, 4011, 4011, 4011, 4011,
01210      4011, 4011, 4011, 4011, 4011, 4012, 4013, 4014, 4014, 4015,
01211      4016, 4016, 4016, 4016, 4016, 4017, 4017, 4017, 4017, 4017,
01212      4018, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4020, 4021,
01213      4022, 4023, 4024, 4025, 4026, 4026, 4027, 4028, 4029, 4029,
01214      4029, 4030, 4030, 4031, 4031, 4031, 4032, 4033, 4033, 4033,
01215      4033, 4033, 4033, 4033, 4033, 4033, 4034, 4035, 4036, 4036,
01216      4036, 4037, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044,
01217      4045, 4046, 4047, 4047, 4047, 4047, 4048, 4048, 4048, 4049,
01218      4049, 4049, 4050, 4051, 4052, 4053, 4054, 4054, 4054, 4054,
01219 
01220      4055, 4055, 4055, 4056, 4056, 4057, 4058, 4059, 4059, 4059,
01221      4059, 4060, 4061, 4062, 4063, 4063, 4064, 4065, 4066, 4067,
01222      4068, 4069, 4070, 4071, 4072, 4073, 4074, 4075, 4076, 4077,
01223      4078, 4079, 4080, 4081, 4082, 4083, 4084, 4085, 4086, 4087,
01224      4088, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097,
01225      4098, 4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107,
01226      4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117,
01227      4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127,
01228      4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137,
01229      4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145, 4146, 4147,
01230 
01231      4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157,
01232      4158, 4159, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167,
01233      4168, 4169, 4170, 4171, 4172, 4173, 4174, 4175, 4176, 4177,
01234      4178, 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4187,
01235      4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195, 4195, 4195
01236     } ;
01237 
01238 static yyconst flex_int32_t yy_ec[256] =
01239     {   0,
01240         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
01241         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
01242         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01243         1,    5,    6,    7,    8,    9,   10,   11,   12,   13,
01244        14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
01245        24,   24,   24,   24,   24,   25,   25,   26,   27,   28,
01246        29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
01247        39,   38,   40,   41,   38,   42,   38,   43,   44,   45,
01248        46,   47,   48,   49,   38,   38,   50,   38,   51,   38,
01249        52,   53,   54,   10,   55,    1,   56,   57,   58,   59,
01250 
01251        60,   61,   62,   63,   64,   38,   65,   66,   67,   68,
01252        69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
01253        79,   38,   80,    1,   81,   82,    1,    1,    1,    1,
01254         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01255         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01256         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01257         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01258         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01259         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01260         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01261 
01262         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01263         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01264         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01265         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01266         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
01267         1,    1,    1,    1,    1
01268     } ;
01269 
01270 static yyconst flex_int32_t yy_meta[83] =
01271     {   0,
01272         1,    2,    3,    4,    5,    6,    7,    8,    9,    1,
01273        10,   11,   12,   13,   14,    1,   15,    1,   16,   17,
01274        18,   18,   18,   18,   18,   19,   20,   21,   22,   23,
01275         1,   24,   25,   25,   25,   25,   25,   25,   25,   25,
01276        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
01277        25,   26,   27,   28,   25,   25,   25,   25,   25,   25,
01278        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
01279        25,   25,   25,   25,   25,   25,   25,   25,   25,   29,
01280        30,   31
01281     } ;
01282 
01283 static yyconst flex_int16_t yy_base[4053] =
01284     {   0,
01285         0,    2,   22,    0,  103,  114,  167,    0,  249,    0,
01286       331,    0,  413,    0,  495,    0,  117,  124,  577,    0,
01287       659,    0,  741,    0,  822,  833,  843,  854,  870,  888,
01288       934,    0,  899, 1014, 1042,    0, 1124,    0,  881, 1205,
01289      1211, 1227, 1253, 1272, 1016, 1290, 1293, 1309, 1389,    0,
01290      1311, 1334, 1469, 1472, 1483, 1497, 1528, 1539, 1550, 1581,
01291      1662,    0, 1744,    0, 1825, 1836, 1847, 1878, 1275, 1857,
01292      1584, 1595, 1884, 1900, 1922, 1936, 1957, 1967,  143,  909,
01293      1362, 1609, 1337, 1368, 1973, 1983, 1620, 1638, 2010, 2021,
01294      2040, 2054, 2073, 2087, 2101, 2107, 1635, 1906, 2161,    0,
01295 
01296      1989, 2241, 2243, 2257, 2271, 2290, 2343,    0, 2425,    0,
01297      2505, 2507, 2024, 2117, 2588,    0, 2123, 2305, 2670,    0,
01298      2137, 2311, 2752,    0, 2521, 2531, 2834,    0, 2545, 2914,
01299      2917, 2924, 2935, 2953, 2950, 2956, 3026,    0, 3108,    0,
01300      3188, 3198, 3248,    0, 3330,    0, 3411, 3491, 3572,    0,
01301      2563, 2972, 2992, 3208, 3654,    0, 3437, 3459, 3521, 3524,
01302      3736,    0, 3414, 3448, 3816, 3819, 3470, 3838, 3852, 3871,
01303      3494, 3527, 3901,    0, 3983,    0, 4063, 4065, 4079, 4081,
01304      4095, 4097, 4116, 4118, 4132, 4146, 4160, 4167, 4170, 4185,
01305      4188, 4199, 4210, 4224, 4279, 4352, 4426,    0, 4247, 4298,
01306 
01307      3878, 4313, 4327, 4371, 3841, 4316, 4213, 4506, 4508, 4522,
01308      4386, 4389, 4524, 4538, 4557, 4571, 4585, 4587, 4601, 4615,
01309      4608, 4622, 4692,    0, 4774,    0, 4854, 4856, 4925,    0,
01310      5006, 5017, 4404, 4629, 4250, 4643, 4645, 4663, 5037, 5051,
01311      5091, 5144, 9931,25449,25449,25449,25449,25449,    1,    0,
01312       128,25449, 1323, 1330,25449,25449,25449,   94,   14, 4269,
01313      1508, 1571,  155, 5111, 5122, 9904,25449, 4868,  133, 1563,
01314      1871, 1246, 1919, 2002, 5164,25449,25449,  928,25449,  128,
01315      9902,25449, 9866, 2254, 5158, 5175,25449,25449,25449,25449,
01316         0,25449,  146,25449,    0,    0,  820, 1208,25449,    0,
01317 
01318     25449,    0,25449,25449,25449,25449,  829,25449, 2518,25449,
01319       137,25449,25449,25449,    0,25449,  832,25449,    0, 9916,
01320     25449,25449,25449,25449,25449,    0,25449,  839,    0,25449,
01321      5130, 5203, 5214, 5029,25449, 9897,25449, 4880,  160,25449,
01322     25449,25449,25449,25449,25449,  849,  756, 9857,25449, 9867,
01323     25449, 2985, 3227,25449,25449,25449,25449,25449, 4519,  860,
01324      4887, 5293, 4656, 4875, 2324,  863, 5222,25449,    0, 3553,
01325      1035, 4900,25449,  879, 9896, 9878, 5234, 9872,25449, 9866,
01326      2033, 5238, 5247, 9840, 5253, 5258, 5307, 5318, 5381, 5386,
01327      5390, 5288, 5396, 5400, 5427, 5439, 5443, 5471, 5458, 5475,
01328 
01329      5488, 5502,25449,    0,25449,    0,    0,    0,  898, 9859,
01330      5324, 5338, 2332, 5534, 9863, 5521, 5267, 5432,    0,25449,
01331      5507,  905,25449,25449,    0,25449, 1005,25449,25449,25449,
01332     25449, 5548,25449, 4273, 4907,25449,25449,25449,25449,25449,
01333      1381, 1012,25449,25449,25449,25449,25449,25449, 1196,25449,
01334     25449,25449,25449,25449, 1200,25449,25449, 5615,    0,    0,
01335     25449, 1226, 5560,    0, 9831, 9817, 9825, 9808, 9821, 9815,
01336        77, 9794,25449,25449,25449,25449,25449, 5570, 1244,25449,
01337      9831,25449,25449,25449,25449, 1248,25449,25449,    0, 3014,
01338      3237, 4417,25449,  874, 9805, 1279, 9850,25449, 4682,25449,
01339 
01340      1255,25449,    0,25449, 5574, 5583, 5587, 5601, 4912, 5619,
01341      9830, 5627,    0, 1224,25449,25449, 1240, 9797, 1291, 9839,
01342     25449,25449, 5592, 1350, 1346,25449,25449, 1348,  109, 5631,
01343     25449,25449,25449,25449,25449, 9824, 1458,    0,25449,25449,
01344     25449,25449, 1478,25449,25449,25449, 9830, 1305,25449,25449,
01345     25449, 1499, 1356,    0, 1492,    0,    0,    0, 9812, 1505,
01346      9827,25449, 9826, 9816, 9812, 1831,25449,25449,25449,25449,
01347     25449, 4686, 5638,25449,25449,25449, 1530,25449,25449,25449,
01348     25449,25449,25449,    0,25449,    0,    0, 1541,25449,25449,
01349         0,25449,    0,    0,    0, 1580,    0,25449,    0, 9744,
01350 
01351      9742,25449,25449,25449,25449,25449, 1624,25449,25449,25449,
01352     25449,25449, 1634, 9749,    0, 5644, 5652,    0,    0,    0,
01353      9783,25449, 1816, 1782,    0,25449, 9782,    0, 5656,25449,
01354     25449,25449,25449,25449, 1846, 9741, 9739,  854, 9733,25449,
01355     25449,25449,25449, 9785,25449,25449, 1873,    0, 1928,25449,
01356     25449,25449,25449, 1921,25449,25449, 5660,25449,25449,    0,
01357     25449, 5665, 1932, 5674,    0,25449,    0,25449, 9779,    0,
01358         0, 1935,    0,25449, 1376, 5693,    0,25449,    0,    0,
01359         0,    0,    0,25449, 1942,    0,25449, 5700,25449, 5704,
01360         0,    0,    0,    0,    0, 1620, 1952,25449,25449, 9712,
01361 
01362      9715, 9718, 9707, 9712, 9711,25449, 1651,    0,25449,  898,
01363      1480, 1511,    0,    0,25449, 9732, 9730, 9730, 9717,    0,
01364         0,    0,    0,25449, 5708, 5712,25449,25449, 9709,25449,
01365     25449, 5718, 9730, 1958, 5722, 9730, 9727, 9718, 9733,25449,
01366     25449, 5731, 5741, 5749, 5757, 2032,25449, 5762, 5776, 5790,
01367      5804, 5818, 1968, 5822,25449, 5826,25449,25449,25449,25449,
01368     25449,25449, 1969, 9711, 5830,25449, 5842, 5846, 5850,25449,
01369     25449, 5860,25449, 1979, 9707, 5871,25449,25449,25449,25449,
01370     25449, 5877, 2030,25449, 5885, 9677,    0, 5890, 5897,25449,
01371     25449, 9677,25449, 5901, 2052,25449,25449,25449,25449,25449,
01372 
01373     25449,25449,25449, 2058, 9702,    0,    0,    0,25449, 9700,
01374     25449,25449,25449,25449,25449, 9704, 2068,    0,25449,25449,
01375     25449,25449,25449,25449,25449, 9702, 2091,    0,25449,25449,
01376         0,25449,25449,    0, 9668,25449,25449, 2097,    0,25449,
01377     25449,    0, 9662, 2103,25449,25449,    0,25449,25449,    0,
01378      9660,25449,25449, 2113,    0,25449,25449,    0, 9659, 2119,
01379     25449,25449, 1655,25449, 2283,25449,25449,25449,25449,25449,
01380     25449, 2121,25449, 5905, 5911,25449,25449,25449,25449,25449,
01381      2127, 9675, 9667, 9616,25449,25449,25449,25449,    0, 9641,
01382      2131,25449,    0,25449,25449,25449,25449,25449,25449, 5920,
01383 
01384      2232,25449, 5915, 5924,25449,25449,25449,25449,25449, 5941,
01385      2251,25449,    0,25449,25449,    0,25449, 2267,    0,25449,
01386     25449,    0,    0,25449,25449, 2269,25449,25449,    0,25449,
01387         0,    0,    0, 9668, 2284, 1465, 2535, 5946,    0,25449,
01388         0,    0,    0, 2291, 5897,25449,25449,25449,25449, 2496,
01389      1422,25449,25449,25449,25449, 2511,25449, 9614,25449, 5965,
01390      5974,25449,25449,    0,25449, 2527,25449, 5982, 9631, 5986,
01391      5999,    0, 6007,25449,25449,25449,25449, 2553, 2534, 9614,
01392     25449, 6011, 6019, 6025,25449,25449, 6037,25449,25449,25449,
01393      2903, 9656, 6045,25449, 4538,25449,25449,25449, 2915, 2054,
01394 
01395      9611, 9616, 9601,25449,25449,25449,25449,25449,25449, 2926,
01396     25449,25449,25449,25449, 2951, 9664, 2949, 9658, 9648, 9618,
01397      3189,    0, 2996,25449,    0,    0,    0, 2966, 3178, 1536,
01398      5999, 6015, 4343, 3179, 3199,    0,25449,    0,    0,25449,
01399         0, 9599, 3206, 9597, 1575, 3008, 6049,25449,25449, 3445,
01400      3535,25449, 3864, 6081, 3415, 1237,  852,25449, 9612, 6085,
01401      6094, 6103, 9586, 2053, 6112, 6121, 6129, 6133, 6141,    0,
01402      6149, 6169, 6177, 6187, 6195, 6205, 6213,25449, 6217,25449,
01403     25449, 2087, 6224, 6244, 6252, 6258, 6264, 9576, 6268, 6272,
01404      6293, 6301, 6306,    0, 6314, 6318, 1275, 4551, 6326, 9531,
01405 
01406      6340,25449, 6344, 6356, 6360,    0, 1847, 1864,    0, 2920,
01407      9584, 9580, 3497, 9578, 4101,    0,    0, 6372, 9559, 2337,
01408         0,    0,    0, 9530,    0,    0, 6376, 6385, 6397, 6407,
01409      6415, 2579, 6419, 6433, 6441, 9573, 6449, 9547, 3431, 3368,
01410      9514, 9497, 9555, 6436, 6459, 3433, 6467, 3465, 6498, 6486,
01411      3510, 9535, 4998, 9500, 9485, 9482, 9479, 3494, 9469, 2080,
01412      9464, 9471, 9460, 3490, 9466, 3495, 9460,  967, 9437, 9445,
01413      4087, 6505, 6513, 6491, 6518, 9449, 6523, 6529,    0, 6576,
01414      2257, 6580, 6594, 6608, 6612, 6543, 5090, 5227,    0,    0,
01415      6626, 9416,25449,    0, 6640, 6644, 6656, 6660, 6672, 6676,
01416 
01417      6688, 6692, 9455, 6701, 9420, 6696, 6729, 6735, 6748, 6762,
01418      6766, 6775, 6779, 6793, 6807, 6811, 6847, 6851, 6856, 6884,
01419      6889, 6895, 6899, 6903, 6931, 6935, 6945, 6950, 6962, 6977,
01420      6981, 6989, 7024, 7032, 7036, 7040, 7051,    0,    0,    0,
01421      9403, 6820, 9436, 6861, 7067, 7078, 7082,    0, 7090, 7095,
01422      7105, 7120,25449,    0, 5181, 5784,    0, 7124, 7132, 7140,
01423      7176, 7147, 9404, 9391, 9398, 9381, 9382, 9376, 1800, 9361,
01424         0, 1896, 5010, 7151, 7155,    0, 9356, 9360, 9347, 9361,
01425      9356, 9362, 9345, 9336, 9346, 7159, 7180,25449,    0, 7184,
01426      7192, 3832,    0, 7196, 9399, 7188, 7211,    0,25449, 7220,
01427 
01428      9341, 7234, 7238, 7224, 7263, 9381, 7267, 7271, 9380, 7275,
01429      7296,    0, 7304,    0, 7312, 7316, 7324,    0, 3892, 7330,
01430      9393, 7322, 2239, 5082,25449, 7354, 3546, 4237, 3833,25449,
01431     25449, 9396, 1891, 7358, 3805,25449,25449,25449,25449, 4184,
01432      9394, 9391, 1929, 9390, 2569,    0, 4241, 9371,25449,25449,
01433         0, 9387,25449, 9379, 9370, 7362,    0,    0,    0,    0,
01434         0,    0,    0,    0, 9299, 9299, 9289,    0, 7366,25449,
01435     25449,25449, 9293, 9293, 9294, 9330, 9335, 9323, 7377, 7381,
01436      7386, 7400, 9282, 9266, 9274, 9269, 9261, 9327,25449, 3855,
01437      7404, 4062,    0, 2301, 5283,    0,    0,25449,    0,    0,
01438 
01439         0, 4074, 7408,    0,    0,    0,    0, 7412, 7420, 9308,
01440      7424, 7428,25449,    0, 4090,    0,    0, 9252, 9253, 9244,
01441      9230, 1773, 9223, 4106, 1007, 1490, 9270, 9264, 2070, 4324,
01442         0,    0, 9245, 1339, 9239, 9245,    0,    0,    0,    0,
01443      9272, 7413,25449, 7438, 6232,25449,25449,25449,25449, 7443,
01444      7453, 7461, 7469,25449, 7475, 4403,25449, 7490, 7504, 7518,
01445      7532, 7536, 7540, 9227,25449, 7544, 7549, 9254,25449, 7557,
01446      9247, 7563, 7571,    0, 7591,    0, 7599, 7603, 7611, 7616,
01447      7629, 7636,25449,25449,25449, 9218,25449,    0, 7641, 9259,
01448      7629, 7652, 4107, 2503, 2015,25449,    0,    0, 9243, 9242,
01449 
01450      9241,25449,25449,25449,25449,25449,25449,25449,25449,    0,
01451      9163, 7637,    0,    0,    0, 9150, 7643,    0, 9148, 7647,
01452         0,    0,    0, 9147, 7652, 7675, 4412,25449, 7679,25449,
01453     25449, 9081,    0, 9138, 7668,    0, 7699,25449,25449,25449,
01454      7703, 7711, 7719,    0,    0,    0,25449,    0,    0,25449,
01455         0, 9077, 9072, 4533, 7725, 7729,    0,    0,    0, 9053,
01456      9052, 3437, 9044, 9061, 9060, 9042, 9034, 9021, 4288, 9019,
01457      7733, 7741, 7750, 9002, 7754, 7758, 7778,25449, 7784, 9001,
01458      7792, 7800, 7808, 7816, 7820, 7824,25449, 7836, 4662,    0,
01459      5180, 9026, 8990, 7840, 9008, 7848, 7856,    0, 7865,    0,
01460 
01461      7873, 7877, 7885, 5072, 4160, 8964, 8962, 4341, 4312, 8961,
01462      8945, 8950, 9004, 4580, 4582, 8981, 8992, 8991,    0, 5045,
01463      8935, 4122,25449,25449,25449,   81, 8916, 8973, 8912, 8910,
01464      4546, 8904, 8921, 8915, 8910, 8902, 7889, 8949, 8943,25449,
01465      4194, 5046,    0,25449,25449,25449, 4830, 8891, 5027, 5187,
01466      7893, 7910, 3881, 2059, 8917, 7916, 7920, 7924, 7936, 7958,
01467      7962, 7970,    0, 7978, 7986, 7990, 8003, 8007,25449,    0,
01468      5116,25449, 8929, 8019, 8883, 8033, 8027, 8908,25449,    0,
01469         0, 8904, 5368, 8045, 8874,25449, 8039, 8059, 8070, 8078,
01470         0, 8908, 8082, 8841, 8841, 8848, 8839, 8899,25449, 8895,
01471 
01472      8076, 4075, 2526, 4091, 2554, 8126, 8109, 8113, 3176, 8834,
01473      4597, 8842, 8852, 8828, 8824, 8826, 1511, 8808, 8805, 8814,
01474      3468, 1934, 8814, 8815, 8785, 8799, 8778, 8771, 4225, 8774,
01475      8768, 8765, 1910, 8756, 8760, 8757, 8749, 8751, 8121, 8138,
01476      8146, 8753, 8142, 8201, 8215, 8160, 8219, 8232, 8786, 8773,
01477      6281, 6588, 6634, 3389, 6842, 7014, 8237, 3407,    0, 8259,
01478      8738, 8246,25449, 8268, 8273, 8289, 8293, 8305, 8309, 8323,
01479      8329,25449, 8335, 8342, 8346, 8172, 8731, 8379, 8388, 8392,
01480      8406, 8419, 8399, 8433, 8438, 8447, 8453, 8465, 8480, 8484,
01481      8492, 8496, 8525, 8529, 8533, 8538, 8566, 8573, 8578, 8582,
01482 
01483      8609, 8614, 8618, 8623, 8650, 8656, 8664, 8683, 8696, 8700,
01484      8710, 8716, 8727, 8743, 8755, 8759, 8763, 8735, 8251, 8545,
01485      8351, 8772, 8788, 8790, 8800, 8721, 8720, 8709, 8724, 8718,
01486      8723, 8706, 8694, 8688,25449,    0, 5418,25449, 8735, 8426,
01487      8669, 8668, 8627, 8668, 8664, 8669, 8665, 8668, 8677, 8832,
01488     25449, 8697, 8842, 8713,25449, 8711, 8785, 8846,25449, 8852,
01489         0, 8638, 8651, 8866, 8874, 8882, 8886,    0, 8890, 8696,
01490     25449, 8695, 8897, 4149, 2976, 8702, 4170, 3197, 8681, 8691,
01491      8618, 8633, 8625, 8622, 8621, 8607,    0, 8658, 8920, 8928,
01492     25449, 8936,25449,25449, 8602, 8595,25449, 8945, 8949, 8635,
01493 
01494      8634, 8628, 1338,25449, 8631, 8584, 8568, 8569, 8583, 8579,
01495      8580, 8560, 8624, 8585, 8583, 5084, 2946, 8567, 8569, 8565,
01496      8560, 8547, 8583,25449, 8581, 8944, 7198, 8955, 8509, 7900,
01497      8956, 8508, 8534, 8527, 8971, 8987, 8995, 9001,25449,    0,
01498      9009, 9017,25449, 8560,25449, 8553, 9016, 4188, 3207, 8535,
01499      8551, 8542,25449, 8533, 9020, 8527,25449, 8514, 9024, 8503,
01500     25449, 8501, 9037, 8499,25449, 8497, 9041, 9049, 8445, 8492,
01501     25449, 8490, 9045, 8426, 8411, 8419, 8403,25449, 8409, 8400,
01502      8403, 8374, 8373, 8367,    0, 8347, 9073, 9021, 9077, 9081,
01503      9090, 8372, 8362, 8315,    0, 9094, 4917, 8312, 8307, 8319,
01504 
01505      3217, 3810, 8307,    0, 9176, 8303, 8278,25449, 8276, 8261,
01506      8262, 8252, 8255, 8305, 5332, 5406, 2002, 3816, 8256,25449,
01507     25449, 9102, 9106,    0, 9110,25449, 8290,25449, 4195,25449,
01508      9257, 9261,25449, 8274, 8290, 5453, 9273, 9122, 9286, 8275,
01509      9135, 9298, 9139, 8281, 9143, 8243, 8228, 8223, 8209, 8271,
01510     25449, 9145, 8238, 8229, 9367, 9302, 8174, 8166, 8157, 4244,
01511      8170, 8155, 8185, 8136, 8135, 8124, 8123, 8115, 8113, 8112,
01512      8093, 8100, 8093, 8096, 8076, 8074, 8077, 8078, 8060, 8058,
01513      8045, 8054, 8048, 8029, 4252, 8028, 8073, 7998, 7983, 7981,
01514      7995, 7983, 7964, 7944, 7961, 5370, 7951, 9311, 9328, 9348,
01515 
01516      9151,25449, 9375, 9383, 7989, 9149, 9399, 7971, 9442,25449,
01517      7944, 4154,25449, 7985, 8101,25449, 8808, 4371, 4257,    0,
01518      7928, 9343, 9446, 9306, 9450, 9462, 9467, 9474, 9479, 9355,
01519      9491, 9495, 9499, 9503, 9540, 9544, 9548, 9555, 9560, 9624,
01520      9588, 9575, 9592, 9643, 9655, 9661, 9670, 9688, 9697, 9706,
01521      9715, 9733, 9742, 9747, 9751, 9778, 9786, 9792, 9805, 9819,
01522      9823, 9834, 9838, 9850, 9865, 9869, 9896, 9906, 9910, 9914,
01523      9941, 9945, 9949, 7926,25449,25449, 7912, 7897, 9486, 7897,
01524      7895, 7892, 7888, 9602, 7900, 7882, 7871, 9606, 7862, 7871,
01525      7870, 7839, 9878, 7832, 7871, 9953, 5408, 7881,25449, 9958,
01526 
01527      7814,    0, 9981, 9985, 9989, 7861,25449,10004, 7844, 7808,
01528      4389, 7761, 7760, 7769, 7771, 1843, 7773, 7797, 9993, 7732,
01529      7715,10027,25449, 7728,25449, 7718, 7700, 1253, 7709, 7705,
01530         0, 5015, 5194, 7710,25449, 7698, 7694, 7682, 7697,25449,
01531     10012,10035,10039,10043, 7669, 7681,25449,10037, 7650,25449,
01532         0, 7650,25449,10051, 7636,25449,10055, 7635,25449,10059,
01533      7624,25449,10072, 5539, 7558, 7612,25449,10076, 7563, 7550,
01534      7539,    0, 7521, 7521, 7486, 7493, 7463, 9452,25449, 1556,
01535      6710, 7475, 7456, 7449, 7424,25449, 7457, 7423,25449,10100,
01536      7399,    0, 7385, 7390, 7372, 7363, 7349, 4474, 4510,10125,
01537 
01538      5070,10191,10195, 5470,10207,10220,    0,10229,    0,10233,
01539     10241,10246,  758,  785,  846,  872, 1006, 1210,25449,25449,
01540     10314,10258, 1167, 1209, 1224, 1303, 1400, 1430, 1453, 1566,
01541      1602, 1763, 1798, 1826, 1872, 1955,10271, 2003, 2046, 2058,
01542      2060, 2083, 2086, 2088, 2193, 2214, 2212, 2234, 2263, 2257,
01543      2282, 2280, 2470, 2472, 4835, 2500, 2518, 2861, 5070, 2872,
01544      2890, 2903, 2920,25449, 2946,10266,10275, 2994, 3167,25449,
01545     10272,10311,    0,10285,10324, 3192, 4497,    0,25449,10339,
01546     10351,10389,10393,10411,10405,10417,10423,10429,10443,10447,
01547     10474,10480,10489,10493,10507,10520,10524,25449,10539, 3199,
01548 
01549      3203,10551,25449,10555,10559,10568,10586,10597,10601,10613,
01550     10617,10632,10645,10665,10672,10677,10692,10684,10712,10719,
01551     10723,10727,10755, 3354, 3378,10760,10764,10768,10772,10799,
01552     10803,10812,10807,10816,10845,10849,10854,25449, 3387, 3407,
01553      3428, 3447, 3453, 3469, 3747, 3833,10049, 4003, 4040, 4082,
01554     10881, 4083,10886,25449,    0, 4145, 4216, 4203,25449,10305,
01555      4253, 4273,25449,25449,10087,10435,25449,    0, 4227, 4238,
01556      4248,25449, 4291, 4293, 4295, 4314, 4319, 4341, 4347, 4351,
01557      4523, 5310, 4476, 5153, 4488,25449, 4550, 4551,10893, 4568,
01558      4569,25449, 4589, 4594, 4600, 4619, 4627, 4632, 4633, 4644,
01559 
01560         0, 4618, 4667, 4668, 4620, 4784,25449, 4791, 4808, 4829,
01561      4842, 4845, 4849, 4941, 4943, 4965, 4963, 4960, 4968, 4980,
01562      4986, 5198, 5798, 5008,    0, 5048,25449, 5038, 5050, 5072,
01563      5086, 5082, 5184, 5124, 5096, 5105, 5101, 5125, 5139, 5142,
01564     10907,10911,    0,10923,10936, 5151, 5140,10439, 5164,10659,
01565     10940, 5185, 5181, 5196, 5218, 5302, 5212, 5213, 5239, 5233,
01566      5244,10948, 5232,10862, 5238,10954,10965, 5233, 5255, 5249,
01567      5250, 5264, 5487, 5260, 5259, 5273, 5294, 5289, 5300, 5305,
01568      5308, 5339, 5348, 5351, 5361, 5351, 5367, 5377,10969, 5483,
01569      5398, 5392, 5408,10973, 5440,10990,10994, 5467,11021,11027,
01570 
01571     11034,11039,11051,11055,11068,11072,11084,11088,11096,11101,
01572     11115,11133,11142,25449,11146,11150,11160,11178, 5419, 5420,
01573     11190,11194,11209,11225,11236,11240,11244,11252,11279,11283,
01574     11287,11291,11297,11324,11328,11332,11342,11359,11375,11379,
01575     11386, 5444, 5436,11413,11418,11422,11426,11453,11458,11462,
01576     11466,25449,11472,11500,11505,11509,11513, 5461,11106, 5455,
01577      5447, 5462,11519, 5465, 5475,11272, 5475,11391,11369,11432,
01578     25449,11406, 5476, 5486,11540,25449,11544, 5500, 5495, 5495,
01579     25449,25449, 5541, 5516, 5516, 5519,25449, 5569, 5624, 5566,
01580      5605, 5568, 5601, 5544, 5812, 5547, 5557, 5571, 5564, 5600,
01581 
01582      5613, 5600, 5614, 5608, 5614, 5626, 5619, 5625, 5631, 5834,
01583      5952,25449, 5652,    0, 5661, 5662, 5671, 5665, 5675, 5717,
01584     25449, 5689, 5675, 5688, 5682, 5685, 5697,11548,11552, 5742,
01585     25449,11567,11578, 5709,11585,11595,11599,11603, 5703, 5713,
01586      5707, 5702, 5724, 5725, 5726, 5716, 5763, 5733, 5740,11609,
01587      5729,11613, 5736,11621, 5748, 5754,11631, 5774,11635, 5785,
01588      5801,11640, 5779, 5788,11644, 5807, 5814, 5811, 5803, 5809,
01589     11648, 5811,11652,11656, 5824, 5829,11665, 5880, 5832, 5864,
01590      5865,25449,11674,11679,11693,11697,11709,11713,11725,11737,
01591     11741,11749,11758,11776,11789,11803, 5868, 5861,11807,11820,
01592 
01593     11834, 5880, 5867,11838,11842,11848, 5905,11854,11882,11929,
01594     11887,11893,11898,11948,11960,11769,11965,11975,11992,12002,
01595     12019,12029,12033,12038,12046,12065,12077,12081, 5879, 5884,
01596      5907,12085,12112,12118,25449,12122,12126,12131, 5905, 5906,
01597     12158,12162,12166, 5923, 5923,12091,12170,12174, 5926, 5919,
01598      5934,12193,25449,12197,12205, 5937, 5938,12210,12214, 5945,
01599      5949, 5943, 6009, 5961, 5946, 5958, 6024, 6010, 6001, 6158,
01600         0, 6010, 6054, 5995, 6090, 5995, 5999, 5993, 6015, 6001,
01601      6034, 6034, 6042, 6046, 6040,25449,25449, 6038, 6058, 6061,
01602      6060, 6050, 6075, 6061,25449, 6081,    0, 6081, 6088, 6092,
01603 
01604      6086,12218,12228, 6099,12236,12243,12247, 6101, 6108, 6110,
01605      6109, 6096, 6114,12251, 6124, 6145, 6120, 6120,12255, 6135,
01606      6132, 6128,12259, 6124,12267, 6147, 6146,12273,12277,12285,
01607     12289,12293,12298, 6155,12302, 6171, 6163,12306,12314, 6169,
01608      6159,12318,12322,12331,12335, 6182, 6188,12351, 6218,12355,
01609     12359,12378,12382,12394,12398,12411,12416,12423,12429,12433,
01610     12437,12443,12480, 6210,12484,25449,12490, 6215, 6214,12499,
01611     12507, 6284, 6226, 6219, 6231,12517, 6271,12526,12535,12544,
01612     12553,12571,12580,12584,12588,12594,12598,12625,12629,12633,
01613     12637,12644,12664,12671,12676,12683, 6234, 6254,12691,12703,
01614 
01615     12710,12723,12730, 6268, 6253,12735,12739, 6252, 6273, 6276,
01616     12743,12766,12774, 6276,12782,    0, 6283, 6274, 6341,    0,
01617     25449,25449, 6291, 6345,    0, 6313,    0, 6314, 6391,12786,
01618      6288, 6302, 6304, 6303, 6305, 6328, 6323, 6390, 6402, 6318,
01619      6339, 6348,25449, 6356, 6349, 6374, 6363,12800,12807,12811,
01620     12818, 6364, 6381, 6381,12825, 6388, 6384,12829, 6396, 6418,
01621      6410,12833,12843, 6402, 6408,12847,12851, 6418,12855,12859,
01622     12863,12867, 6420,12873,12880, 6426, 6418, 6425,12888, 6427,
01623      6444, 6428,12892,12898,12902,12906, 6438,12910,12918,12922,
01624     12934,12938,12953,12966,12981,12985,12993,12997,13001, 6431,
01625 
01626      6447,13005,13012,13039, 6495, 6457, 6449, 6465,25449,13043,
01627     13047,13052,13056,13061,13119,13086,13138,13090,13150,13165,
01628     13178,13185,13192,13094, 6461,13205,13098, 6486, 6467,13212,
01629      6464, 6476,13232,13102,13110,13158,13239,13243,13250,13259,
01630     13265, 6485,    0,25449,    0, 6523, 6524, 6665, 6681,13272,
01631      6488, 6501, 6506, 6502, 6520, 6620, 6824, 6632, 6508, 6520,
01632      6523, 6520, 6534,13276,13283,13294,13301, 6527, 6546,13305,
01633     13309, 6548,13313,13317, 6548,13321, 6557,13326,13330,13334,
01634     13338,13342,13348,13352, 6576, 6581, 6578,13356,13360, 6612,
01635      6581,13367,13371,13375,13379,13391,13395,13407,13411,13423,
01636 
01637     13432,13436,13440, 6582,13450,13463,25449, 6664, 6599, 6607,
01638      6619,13467,13477,13481,13485,25449,13554, 6676, 6677,13495,
01639     13635,13508,13639,13512,13524,13644,13648,13652,13528,25449,
01640     13679,13685, 6641, 6638, 6655,13542,13695, 6653, 6757, 6770,
01641      6784,25449, 6829,25449, 6656, 6658, 6664, 6656, 7008,25449,
01642      6675, 6674, 6679, 6669,13700,13573,13691, 6698,13725,13729,
01643     13733,13737,13742, 6699, 6704,13746,13750,13758,13762, 6731,
01644      6711,13766,13771,13775, 6736, 6727, 6756, 6729,13780,13785,
01645     13797,13801,13809, 6733, 6759, 6750,13817, 6762, 6762,    0,
01646     13821,13830,13834,13844,13861,13876,13880,13886,13890,13894,
01647 
01648     13898,25449,13921,13927, 6766, 6774, 7165, 7197, 6764, 6779,
01649      6790, 6792, 6806, 6809,13931,13938,13948, 6804,13956,13960,
01650      6822, 6839, 6817,13964,13968, 6848, 6840, 6864,13973,13980,
01651     13992,13984, 6842, 6862, 6852,13998,14006,25449,14010,14019,
01652     14026,14037,14046,14052,14064,14079,14083,25449,14091, 7253,
01653         0, 7254,    0, 6847, 6849,14099,14104, 6868, 6881, 6893,
01654     14108, 6902, 6871, 6903,14112,14119,14123,14137, 6883, 6885,
01655     14141,14146,14150,14154,14158,14191,14197,25449,    0,    0,
01656     14201,14206, 6893, 6920,14210,14214, 6926, 6899,14220, 6901,
01657      6917,14224,14235,14239,14243,14247, 6919, 6940,14251,14255,
01658 
01659     14267, 6921,14276,14287,14291,14295,14303,14307, 6948,14316,
01660     14323,14328,14332,25449,14341,14346,14350,14354,14358,14362,
01661     25449,14366,14370,14374,14379,14383,14387,14395,14399,14404,
01662     14412,14424,14428,14432,14437,14441,14445,14453,14457,14462,
01663     14470,14474,14482,14486,14490,14495,14499,14507,14515,14519,
01664     14524,14528,14532,14540,14544,14549,14557,14561,14569,14573,
01665     14577,14582,14586,14594,14602,14606,14611,14615,14619,14627,
01666     14631,14636,14644,14648,14656,14660,14664,14669,14673,14681,
01667     14689,14693,14698,14702,14706,14714,14718,14723,14731,14735,
01668     14743,14747,14751,14756,14760,14768,14776,14780,14785,14789,
01669 
01670     14793,14801,14805,14810,14818,14822,14830,14834,14838,14843,
01671     14847,14855,14863,14867,14872,14876,14880,14888,14892,14897,
01672     14905,14909,14917,14921,14925,14930,14934,14942,14950,14954,
01673     14959,14963,14967,14975,14979,14984,14992,14996,15004,15008,
01674     15012,15017,15021,15029,15037,15041,15046,15050,25449,15072,
01675     15103,15134,15165,15196,15227,15258,15289,15320,15351,15382,
01676     15413,15444,15475,15506,15537,15568,15599,15630,15661,15692,
01677     15723,15754,15785,15816,15847,15878,15909,15940,15971,16002,
01678     16033,16064,16095,16126,16157,16188,16219,16250,16281,16312,
01679     16343,16374,16405,16436,16467,16498,16529,16560,16591,16622,
01680 
01681     16653,16684,16715,16746,16777,16808,16839,16870,16901,16932,
01682      6972,16962,16986,17010,17040,17070,17094,17118,17142,17172,
01683      6975, 6983, 6981,17186, 6987, 7000, 6989, 7005, 7022, 6995,
01684      7095,17210,17238,17263,17293,17317,17347, 7048, 7065,17371,
01685     17396,17427,17457,17481,17511, 7007, 7114, 7026, 7122,17536,
01686     17567,17598, 7036,17628,17652,17676,17706,17731,17762,17793,
01687     17824,17855,17886,17917, 7038, 7151,17948, 7040, 7265, 7050,
01688     17978,18003, 7053, 7285, 7064, 7229,18034, 7078, 7270,18065,
01689      7080,18095,18120, 7086, 7312, 7089, 7286, 7090, 7322, 7094,
01690      7323,18151,18181,18205,18229,18253,18278,18302,18332,18357,
01691 
01692     18388,18419, 7105, 7369, 7113, 7374,18450,18481,18512,18543,
01693     18574,18605,18636,18667,18698,18729, 7140,18760, 7424,18791,
01694     18822,18853,18884,18915,18945, 7141,18970,18995,19025, 7146,
01695     19049,19073,19097,19121,19151,19176,19207,19238,19269,19299,
01696     19323,19353,19377, 7150,19401,19425,19449,19473,19497,19521,
01697     19545, 7165,19569, 7442,19583, 7182, 7314, 7443, 7457, 7179,
01698      7486, 7471,19607,19635,19659, 7460,19684,19715,19746,19776,
01699     19800, 7206,19824,19848,19872, 7210, 7485, 7221,19896,19921,
01700     19951,19975, 7236,19999, 7499, 7500,20024,20055,20086,20117,
01701     20148,20178,20202,20226, 7538, 7260,20250,20275,20306,20337,
01702 
01703     20368,20399,20430,20461, 7553,20492, 7561, 7472,20522,20546,
01704     20571, 7759, 7564,20602, 7572,20633,20663,20688, 8071,20710,
01705      7573, 7592, 7610,20735,20766,20796,20820,20844,20868,20894,
01706     20924,20948, 7661, 7262,20972,20997,21028,21059,21090, 7669,
01707      7692,21121,21152,21183,21214,21245,21276,21307,21338,21369,
01708     21400,21431,21462, 7700,21493,21524,21555,21586,21617,21648,
01709     21678,21703,21728,21758,21782,21806,21830, 7266, 7781,21854,
01710      7723, 7277,21878,21903,21934, 7477,21965,21996,22026,22050,
01711     22074,22098, 7751,22122,22152,22176,22200,22225,22256,22286,
01712     22316, 7287, 7299, 8190,22330,22354, 7882,22384,22408,22432,
01713 
01714      7311, 7830,22457,22487,22517,22541,22565,22589,22613,22638,
01715     22669, 7789,22699,22723,22747,22771, 7790,22802,22833,22864,
01716     22895,22925,22949,22973, 7829,22997,23028, 7838,23059, 7324,
01717      7846,23089,23113, 7491,23129, 8298,23154,23185,23215,23239,
01718      7867,23263,23294, 7503,23325,23356,23387,23418,23449,23480,
01719     23511,23541,23565, 7917, 7960,23589,23620, 7347,23651,23681,
01720      8001,23705,23729, 8220,23743,23767,23797,23821,23845,23869,
01721      8051,23893,23918,23948,23972,23996, 8435,24020,24044,24069,
01722     24100,24130,24154, 8009,24179,24210,24241,24272,24302,24326,
01723     24351, 8052,24382, 8264,24412, 7348, 8394,24437,24467,24492,
01724 
01725      7350,24523,24554,24585,24616,24647,24678,24709,24739,24764,
01726     24795,24825,24839,24863, 8077, 7351,24887,24911,24935,24959,
01727      8549, 7352,24983,25008,25039,25069,25093, 8162,25118,25148,
01728     25172,25197, 8498,25227,25252,25283,25313,25337, 8747, 7560,
01729      7602, 8189,25362, 8249, 8340,25393, 7372,25423, 8837, 8901,
01730      8346, 8381
01731     } ;
01732 
01733 static yyconst flex_int16_t yy_def[4053] =
01734     {   0,
01735      3550, 3550, 3549,    3, 3551, 3551, 3549,    7, 3549,    9,
01736      3549,   11, 3549,   13, 3549,   15, 3552, 3552, 3549,   19,
01737      3549,   21, 3549,   23, 3553, 3553, 3550, 3550, 3554, 3554,
01738      3549,   31, 3555, 3555, 3549,   35, 3549,   37, 3550, 3550,
01739      3550, 3550, 3556, 3556, 3557, 3557, 3558, 3558, 3549,   49,
01740      3559, 3559, 3560, 3560, 3561, 3561, 3561, 3561, 3561, 3561,
01741      3549,   61, 3549,   63, 3562, 3562, 3562, 3562, 3550, 3550,
01742      3563, 3563, 3563, 3563, 3564, 3564, 3565, 3565, 3550, 3550,
01743      3566, 3566, 3567, 3567, 3550, 3550, 3550, 3550, 3568, 3568,
01744      3550, 3550, 3550, 3550, 3569, 3569, 3570, 3570, 3549,   99,
01745 
01746      3571, 3571, 3572, 3572, 3573, 3573, 3549,  107, 3549,  109,
01747      3574, 3574, 3575, 3575, 3549,  115, 3576, 3576, 3549,  119,
01748      3577, 3577, 3549,  123, 3578, 3578, 3549,  127, 3579, 3579,
01749      3550, 3550, 3550, 3550, 3550, 3550, 3549,  137, 3549,  139,
01750      3550, 3550, 3549,  143, 3549,  145, 3580, 3580, 3549,  149,
01751      3550, 3550, 3550, 3550, 3549,  155, 3550, 3550, 3581, 3581,
01752      3549,  161, 3582, 3582, 3550, 3550, 3583, 3583, 3584, 3584,
01753      3585, 3585, 3549,  173, 3549,  175, 3586, 3586, 3586, 3586,
01754      3587, 3587, 3587, 3587, 3588, 3588, 3589, 3589, 3590, 3590,
01755      3591, 3591, 3592, 3592, 3593, 3593, 3549,  197, 3594, 3594,
01756 
01757      3595, 3595, 3596, 3596, 3597, 3597, 3598, 3598, 3598, 3598,
01758      3599, 3599, 3584, 3584, 3600, 3600, 3601, 3601, 3602, 3602,
01759      3603, 3603, 3549,  223, 3549,  225, 3604, 3604, 3549,  229,
01760      3605, 3605, 3606, 3606, 3607, 3607, 3608, 3608, 3609, 3609,
01761      3610, 3610, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3611,
01762      3612, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01763      3549, 3549, 3613, 3614, 3615, 3549, 3549, 3616, 3549, 3617,
01764      3549, 3549, 3549, 3618, 3619, 3549, 3549, 3549, 3549, 3549,
01765      3549, 3549, 3549, 3620, 3620, 3620, 3549, 3549, 3549, 3549,
01766      3621, 3549, 3549, 3549, 3622, 3623, 3624, 3624, 3549, 3625,
01767 
01768      3549, 3626, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01769      3549, 3549, 3549, 3549, 3627, 3549, 3549, 3549, 3628, 3629,
01770      3549, 3549, 3549, 3549, 3549, 3630, 3549, 3549, 3631, 3549,
01771      3632, 3632, 3632, 3632, 3549, 3549, 3549, 3633, 3549, 3549,
01772      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3634,
01773      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01774      3549, 3549, 3549, 3549, 3635, 3549, 3636, 3549, 3549, 3637,
01775      3549, 3549, 3549, 3549, 3638, 3549, 3549, 3549, 3549, 3549,
01776      3639, 3640, 3640, 3641, 3640, 3640, 3640, 3640, 3640, 3640,
01777      3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640,
01778 
01779      3640, 3640, 3549, 3642, 3549, 3642, 3642, 3642, 3642, 3549,
01780      3549, 3549, 3643, 3644, 3549, 3645, 3549, 3549, 3646, 3549,
01781      3549, 3549, 3549, 3549, 3647, 3549, 3549, 3549, 3549, 3549,
01782      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01783      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01784      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,  458, 3648,
01785      3549, 3549, 3549, 3649, 3649, 3649, 3649, 3649, 3649, 3649,
01786      3649, 3649, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01787      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3650, 3650,
01788      3549, 3549, 3549, 3651, 3652, 3549, 3549, 3549, 3549, 3549,
01789 
01790      3549, 3549, 3653, 3549, 3654, 3654, 3549, 3549, 3655, 3656,
01791      3549, 3657, 3658, 3658, 3549, 3549, 3549, 3659, 3549, 3549,
01792      3549, 3549, 3549, 3658, 3549, 3549, 3549, 3549, 3549, 3549,
01793      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3660, 3549, 3549,
01794      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01795      3549, 3549, 3549, 3661, 3661, 3661, 3661, 3661, 3549, 3661,
01796      3662, 3549, 3662, 3662, 3662, 3662, 3549, 3549, 3549, 3549,
01797      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01798      3549, 3549, 3549, 3663, 3549, 3663, 3663, 3663, 3549, 3549,
01799      3664, 3549, 3664, 3664, 3664, 3664, 3665, 3549, 3666, 3666,
01800 
01801      3666, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01802      3549, 3549, 3549, 3549, 3667, 3549, 3549, 3667, 3667, 3667,
01803      3549, 3549, 3549, 3667, 3668, 3549, 3669, 3670, 3671, 3549,
01804      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01805      3549, 3549, 3549, 3672, 3549, 3549, 3549, 3673, 3674, 3549,
01806      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3675,
01807      3549, 3549, 3549, 3549, 3676, 3549, 3677, 3549, 3549, 3677,
01808      3677, 3677, 3678, 3549, 3549, 3549, 3679, 3549, 3680, 3680,
01809      3680, 3680, 3680, 3549, 3680, 3681, 3549, 3549, 3549, 3682,
01810      3683, 3683, 3683, 3683, 3683, 3549, 3683, 3549, 3549, 3549,
01811 
01812      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3684, 3549, 3685,
01813      3685, 3685, 3686, 3687, 3549, 3549, 3549, 3549, 3549, 3688,
01814      3689, 3690, 3691, 3549, 3549, 3549, 3549, 3549, 3692, 3549,
01815      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01816      3549, 3693, 3693, 3693, 3694, 3549, 3549, 3695, 3695, 3695,
01817      3695, 3549, 3549, 3549, 3549, 3696, 3549, 3549, 3549, 3549,
01818      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3697, 3549,
01819      3549, 3698, 3549, 3549, 3549, 3699, 3549, 3549, 3549, 3549,
01820      3549, 3549, 3549, 3549, 3549, 3700, 3701, 3549, 3549, 3549,
01821      3549, 3702, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01822 
01823      3549, 3549, 3549, 3549, 3549, 3703, 3704, 3705, 3549, 3706,
01824      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3707, 3549, 3549,
01825      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3708, 3549, 3549,
01826      3709, 3549, 3549, 3709, 3710, 3549, 3549, 3709, 3711, 3549,
01827      3549, 3711, 3712, 3549, 3549, 3549, 3713, 3549, 3549, 3713,
01828      3714, 3549, 3549, 3713, 3715, 3549, 3549, 3715, 3716, 3549,
01829      3549, 3549, 3715, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01830      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01831      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3717, 3718,
01832      3549, 3549, 3719, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01833 
01834      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01835      3549, 3549, 3720, 3549, 3549, 3720, 3549, 3720, 3721, 3549,
01836      3549, 3722, 3722, 3549, 3549, 3549, 3549, 3549, 3723, 3549,
01837      3723, 3723, 3723, 3549, 3723, 3549, 3723, 3549, 3724, 3549,
01838      3724, 3724, 3724, 3724, 3549, 3549, 3549, 3549, 3549, 3549,
01839      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3725,
01840      3725, 3549, 3549, 3726, 3549, 3549, 3549, 3727, 3728, 3729,
01841      3729, 3730, 3731, 3549, 3549, 3549, 3549, 3732, 3549, 3549,
01842      3549, 3549, 3549, 3733, 3549, 3549, 3734, 3549, 3549, 3549,
01843      3549, 3549, 3735, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01844 
01845      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01846      3549, 3549, 3549, 3549, 3549, 3736, 3549, 3736, 3736, 3736,
01847      3736, 3737, 3737, 3549, 3737, 3737, 3737, 3549, 3549, 3737,
01848      3549, 3549, 3737, 3738, 3549, 3739, 3549, 3739, 3739, 3549,
01849      3739, 3549, 3549, 3549, 3549, 3739, 3549, 3549, 3549, 3740,
01850      3549, 3549, 3740, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01851      3549, 3741, 3549, 3549, 3742, 3742, 3743, 3549, 3742, 3744,
01852      3745, 3741, 3741, 3746, 3747, 3744, 3549, 3549, 3745, 3549,
01853      3549, 3549, 3748, 3748, 3749, 3549, 3549, 3549, 3549, 3750,
01854      3750, 3751, 3750, 3752, 3753, 3549, 3549, 3549, 3752, 3549,
01855 
01856      3549, 3549, 3753, 3753, 3753, 3754, 3549, 3549, 3754, 3755,
01857      3549, 3756, 3755, 3757, 3755, 3758, 3758, 3549, 3549, 3549,
01858      3759, 3759, 3760, 3761, 3762, 3762, 3763, 3763, 3763, 3764,
01859      3764, 3549, 3763, 3765, 3549, 3766, 3764, 3549, 3549, 3549,
01860      3549, 3549, 3767, 3768, 3549, 3549, 3549, 3549, 3549, 3549,
01861      3549, 3549, 3549, 3549, 3769, 3549, 3549, 3549, 3549, 3549,
01862      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01863      3549, 3770, 3770, 3771, 3549, 3549, 3549, 3770, 3772, 3773,
01864      3549, 3774, 3774, 3549, 3775, 3549, 3549, 3549, 3776, 3777,
01865      3772, 3549, 3549, 3778, 3779, 3779, 3779, 3779, 3779, 3779,
01866 
01867      3549, 3773, 3549, 3773, 3769, 3549, 3773, 3773, 3773, 3773,
01868      3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773,
01869      3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773,
01870      3773, 3773, 3773, 3773, 3773, 3773, 3773, 3780, 3780, 3780,
01871      3549, 3549, 3549, 3781, 3781, 3782, 3781, 3783, 3784, 3783,
01872      3549, 3784, 3549, 3785, 3549, 3549, 3785, 3549, 3549, 3549,
01873      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01874      3786, 3549, 3549, 3549, 3549, 3786, 3786, 3786, 3786, 3786,
01875      3786, 3786, 3786, 3786, 3786, 3549, 3549, 3549, 3787, 3787,
01876      3549, 3549, 3788, 3788, 3789, 3790, 3549, 3791, 3549, 3549,
01877 
01878      3549, 3792, 3549, 3793, 3792, 3549, 3792, 3549, 3549, 3794,
01879      3794, 3795, 3794, 3796, 3797, 3796, 3797, 3798, 3798, 3549,
01880      3799, 3800, 3549, 3549, 3549, 3549, 3549, 3798, 3549, 3549,
01881      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01882      3549, 3549, 3549, 3549, 3549, 3801, 3801, 3549, 3549, 3549,
01883      3801, 3802, 3549, 3802, 3802, 3549, 3803, 3803, 3803, 3804,
01884      3804, 3804, 3805, 3805, 3805, 3805, 3549, 3806, 3549, 3549,
01885      3549, 3549, 3806, 3806, 3806, 3807, 3808, 3807, 3809, 3549,
01886      3810, 3809, 3549, 3549, 3549, 3549, 3549, 3811, 3549, 3812,
01887      3549, 3812, 3813, 3549, 3549, 3813, 3814, 3549, 3814, 3814,
01888 
01889      3815, 3549, 3549, 3815, 3816, 3816, 3816, 3817, 3549, 3549,
01890      3549, 3817, 3549, 3818, 3549, 3818, 3818, 3549, 3549, 3549,
01891      3549, 3549, 3549, 3549, 3819, 3819, 3549, 3820, 3819, 3819,
01892      3821, 3821, 3549, 3549, 3549, 3549, 3822, 3822, 3823, 3823,
01893      3824, 3825, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3826,
01894      3826, 3827, 3549, 3549, 3827, 3549, 3549, 3828, 3828, 3828,
01895      3829, 3549, 3829, 3830, 3549, 3549, 3831, 3549, 3549, 3549,
01896      3549, 3832, 3832, 3833, 3832, 3834, 3835, 3834, 3835, 3549,
01897      3549, 3549, 3549, 3549, 3549, 3836, 3549, 3837, 3549, 3838,
01898      3839, 3549, 3549, 3549, 3549, 3549, 3840, 3840, 3841, 3841,
01899 
01900      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3842,
01901      3843, 3844, 3842, 3842, 3845, 3846, 3847, 3848, 3849, 3850,
01902      3848, 3848, 3851, 3852, 3853, 3851, 3549, 3549, 3549, 3549,
01903      3549, 3549, 3854, 3855, 3856, 3854, 3549, 3549, 3549, 3549,
01904      3549, 3549, 3549, 3857, 3857, 3857, 3549, 3858, 3859, 3549,
01905      3859, 3549, 3549, 3859, 3549, 3549, 3860, 3860, 3860, 3549,
01906      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01907      3861, 3861, 3862, 3863, 3864, 3549, 3549, 3549, 3864, 3863,
01908      3549, 3865, 3865, 3866, 3867, 3549, 3549, 3867, 3549, 3868,
01909      3549, 3869, 3549, 3549, 3549, 3870, 3870, 3871, 3870, 3872,
01910 
01911      3873, 3872, 3873, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01912      3549, 3549, 3874, 3549, 3549, 3549, 3874, 3874, 3875, 3875,
01913      3875, 3549, 3549, 3549, 3549, 3875, 3875, 3876, 3549, 3549,
01914      3549, 3549, 3549, 3549, 3549, 3549, 3875, 3877, 3549, 3549,
01915      3877, 3549, 3878, 3549, 3549, 3549, 3549, 3549, 3549, 3878,
01916      3549, 3549, 3549, 3549, 3549, 3549, 3879, 3880, 3549, 3881,
01917      3882, 3882, 3883, 3884, 3885, 3549, 3886, 3887, 3549, 3888,
01918      3549, 3549, 3889, 3890, 3549, 3891, 3891, 3549, 3549, 3892,
01919      3893, 3894, 3895, 3896, 3897, 3549, 3898, 3899, 3899, 3900,
01920      3901, 3902, 3899, 3549, 3549, 3549, 3549, 3903, 3549, 3549,
01921 
01922      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3904, 3549, 3549,
01923      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01924      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01925      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3905,
01926      3549, 3549, 3549, 3906, 3549, 3549, 3907, 3908, 3549, 3909,
01927      3549, 3549, 3910, 3549, 3549, 3549, 3911, 3549, 3912, 3904,
01928      3549, 3549, 3549, 3913, 3913, 3913, 3913, 3913, 3913, 3913,
01929      3913, 3549, 3914, 3914, 3914, 3549, 3549, 3914, 3914, 3914,
01930      3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914,
01931      3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914,
01932 
01933      3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914,
01934      3914, 3914, 3914, 3914, 3914, 3914, 3914, 3549, 3549, 3915,
01935      3916, 3549, 3910, 3549, 3911, 3549, 3549, 3549, 3549, 3549,
01936      3549, 3549, 3549, 3549, 3549, 3910, 3549, 3549, 3911, 3549,
01937      3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3549,
01938      3549, 3918, 3919, 3920, 3549, 3549, 3549, 3549, 3549, 3549,
01939      3921, 3549, 3549, 3922, 3922, 3923, 3924, 3925, 3926, 3927,
01940      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01941      3928, 3928, 3549, 3929, 3929, 3929, 3930, 3931, 3932, 3932,
01942      3549, 3933, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01943 
01944      3910, 3549, 3911, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01945      3549, 3549, 3934, 3935, 3549, 3936, 3936, 3549, 3549, 3549,
01946      3549, 3549, 3937, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01947      3549, 3549, 3938, 3549, 3939, 3939, 3549, 3940, 3549, 3941,
01948      3942, 3549, 3549, 3943, 3549, 3549, 3549, 3549, 3549, 3549,
01949      3944, 3945, 3549, 3549, 3549, 3946, 3549, 3549, 3549, 3947,
01950      3549, 3549, 3549, 3948, 3549, 3549, 3549, 3949, 3549, 3950,
01951      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01952      3549, 3549, 3549, 3549, 3951, 3549, 3952, 3549, 3549, 3549,
01953      3953, 3954, 3549, 3549, 3955, 3956, 3549, 3549, 3549, 3549,
01954 
01955      3549, 3957, 3957, 3958, 3549, 3549, 3549, 3549, 3549, 3549,
01956      3549, 3549, 3549, 3959, 3549, 3549, 3549, 3549, 3549, 3549,
01957      3549, 3549, 3960, 3961, 3962, 3549, 3549, 3549, 3549, 3549,
01958      3963, 3963, 3549, 3964, 3549, 3965, 3966, 3967, 3966, 3549,
01959      3968, 3969, 3970, 3971, 3972, 3549, 3549, 3549, 3549, 3973,
01960      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01961      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01962      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01963      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01964      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3974, 3974, 3975,
01965 
01966      3549, 3549, 3976, 3976, 3549, 3977, 3978, 3979, 3549, 3549,
01967      3549, 3549, 3549, 3980, 3549, 3549, 3549, 3549, 3549, 3981,
01968      3549, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3983,
01969      3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983,
01970      3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983,
01971      3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983,
01972      3983, 3549, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983,
01973      3983, 3983, 3983, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01974      3549, 3549, 3549, 3549, 3549, 3984, 3984, 3549, 3984, 3984,
01975      3984, 3984, 3549, 3984, 3985, 3549, 3986, 3987, 3549, 3549,
01976 
01977      3549, 3988, 3549, 3989, 3990, 3991, 3549, 3549, 3549, 3549,
01978      3549, 3992, 3992, 3549, 3993, 3993, 3993, 3994, 3995, 3549,
01979      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01980      3996, 3997, 3997, 3549, 3549, 3549, 3549, 3549, 3998, 3549,
01981      3549, 3549, 3549, 3999, 3549, 4000, 3549, 3549, 3549, 3549,
01982      4001, 4002, 3549, 3549, 4003, 3549, 3549, 4004, 3549, 3549,
01983      4005, 3549, 3549, 4006, 3549, 4007, 3549, 3549, 3549, 3549,
01984      3549, 4008, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01985      4009, 3549, 3549, 3549, 3549, 3549, 4010, 4010, 3549, 3549,
01986      3549, 4011, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01987 
01988      3549, 4012, 4012, 4013, 4014, 4014, 4015, 3549, 4016, 4016,
01989      4017, 4018, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01990      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01991      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01992      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01993      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
01994      3549, 3549, 3549, 3549, 3549, 3549, 4019, 3549, 4020, 3549,
01995      4021, 4021, 4022, 4023, 3549, 4024, 4024, 4025, 3549, 4026,
01996      4026, 4026, 4026, 4026, 4026, 4026, 4026, 4027, 4027, 4027,
01997      4027, 4027, 4027, 4027, 4027, 4027, 4027, 3549, 3549, 3549,
01998 
01999      3549, 3549, 3549, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
02000      4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
02001      4027, 4027, 4027, 3549, 3549, 4027, 4027, 4027, 4027, 4027,
02002      4027, 4027, 4027, 4027, 4027, 4027, 4027, 3549, 3549, 3549,
02003      3549, 3549, 3549, 3549, 3549, 4028, 4028, 4028, 4028, 4028,
02004      4028, 4028, 3549, 3549, 4029, 3549, 3549, 3549, 3549, 4030,
02005      3549, 3549, 3549, 3549, 4031, 4031, 3549, 4032, 4032, 4032,
02006      4032, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02007      4033, 4033, 3549, 3549, 3549, 3549, 3549, 3549, 4034, 3549,
02008      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02009 
02010      4035, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02011      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02012      3549, 3549, 3549, 3549, 4036, 4036, 3549, 3549, 3549, 3549,
02013      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02014      4037, 4037, 4015, 4016, 4018, 3549, 3549, 3549, 3549, 2321,
02015      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02016      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02017      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02018      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02019      3549, 3549, 3549, 4038, 4020, 3549, 4023, 4024, 4026, 4026,
02020 
02021      4026, 4026, 4026, 4026, 4026, 4026, 4026, 4027, 4027, 4027,
02022      4027, 4027, 3549, 3549, 4027, 3549, 4027, 4027, 3549, 3549,
02023      3549, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
02024      4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
02025      4027, 3549, 3549, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
02026      3549, 3549, 3549, 3549, 4027, 4027, 4027, 3549, 3549, 3549,
02027      3549, 3549, 3549, 3549, 4028, 3549, 4028, 4028, 4028, 3549,
02028      3549, 4028, 4028, 3549, 4030, 3549, 4031, 4032, 4032, 4032,
02029      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4033, 3549,
02030      4039, 3549, 4035, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02031 
02032      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02033      3549, 3549, 3549, 4036, 3549, 3549, 3549, 3549, 3549, 3549,
02034      3549, 3549, 3549, 3549, 3549, 3549, 3549, 4037, 3549, 3549,
02035      3549, 4018, 3549, 3549, 3549, 3549, 2321, 3549, 3549, 3549,
02036      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02037      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02038      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02039      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02040      3549, 3549, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026,
02041      4027, 4027, 4027, 4027, 4027, 4027, 3549, 3549, 3549, 3549,
02042 
02043      4027, 3549, 3549, 4027, 4027, 3549, 3549, 3549, 4027, 4027,
02044      4027, 3549, 4027, 4027, 3549, 3549, 4027, 4027, 3549, 4027,
02045      4027, 4027, 4027, 4027, 3549, 3549, 4027, 4027, 3549, 3549,
02046      2810, 4027, 3549, 3549, 3549, 4027, 4027, 4027, 3549, 3549,
02047      4027, 4027, 4027, 3549, 3549, 3549, 3549, 3549, 3549, 4028,
02048      4028, 3549, 3549, 3549, 3549, 4028, 3549, 4030, 4031, 4032,
02049      4032, 4032, 4040, 3549, 3549, 3549, 4041, 4033, 3549, 4039,
02050      4042, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02051      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02052      3549, 3549, 3549, 3549, 3549, 3549, 4043, 3549, 3549, 3549,
02053 
02054      3549, 4018, 3549, 3549, 3549, 2321, 3549, 3549, 3549, 3549,
02055      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02056      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02057      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02058      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4026,
02059      4026, 4026, 4026, 4026, 4026, 3549, 4026, 4027, 4027, 4027,
02060      4027, 4027, 3549, 3549, 3549, 3549, 4027, 3549, 3549, 4027,
02061      4027, 3549, 3549, 3549, 3549, 3549, 3549, 4027, 4027, 4027,
02062      4027, 3549, 3549, 3549, 3549, 4027, 3549, 3549, 4027, 4027,
02063      4027, 4027, 4027, 3549, 4027, 4027, 3549, 3549, 4027, 3549,
02064 
02065      3549, 3549, 4027, 3549, 3549, 4027, 3549, 3549, 3549, 3549,
02066      4028, 4028, 4028, 3549, 4030, 4032, 4032, 4032, 4040, 4044,
02067      3549, 3549, 3549, 4041, 4045, 3549, 4042, 3549, 3549, 3549,
02068      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02069      3549, 3549, 3549, 3549, 3549, 3549, 3549, 4018, 3549, 2321,
02070      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02071      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02072      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02073      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4026, 4026,
02074      4026, 3549, 4026, 4026, 4026, 4027, 4027, 3549, 4027, 3549,
02075 
02076      3549, 4027, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4027,
02077      3549, 4027, 3549, 3549, 4027, 3549, 4027, 4027, 4027, 3549,
02078      4027, 4027, 4027, 3549, 3549, 4027, 3549, 3549, 3549, 3549,
02079      3549, 3549, 4027, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02080      4030, 4032, 4044, 3549, 4045, 3549, 3549, 3549, 3549, 3549,
02081      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02082      3549, 3549, 3549, 4018, 3549, 2321, 3549, 3549, 3549, 3549,
02083      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02084      3549, 3549, 3549, 4046, 3549, 3549, 3549, 3549, 3549, 3549,
02085      3549, 3549, 3549, 4026, 4026, 3549, 4026, 3549, 3549, 4027,
02086 
02087      4027, 4027, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02088      3549, 4027, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4027,
02089      4027, 4027, 3549, 3549, 4027, 4027, 4027, 4027, 3549, 3549,
02090      3549, 4027, 3549, 3549, 3549, 3549, 3549, 4032, 3549, 3549,
02091      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02092      3549, 3549, 3549, 3549, 4018, 2321, 3549, 3549, 3549, 3549,
02093      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4046, 3549,
02094      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4026, 3549,
02095      3549, 4027, 3549, 3549, 3549, 3549, 4027, 3549, 3549, 4047,
02096      4048, 4027, 4027, 3549, 3549, 3549, 4027, 4027, 4027, 4027,
02097 
02098      3549, 3549, 4027, 3549, 3549, 4032, 4049, 4050, 3549, 3549,
02099      3549, 3549, 3549, 3549, 3549, 2321, 3549, 3549, 3549, 3549,
02100      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4026,
02101      4027, 3549, 3549, 3549, 3549, 3549, 4048, 3549, 4027, 4027,
02102      3549, 4027, 4027, 4027, 3549, 3549, 3549, 3549, 3549, 4049,
02103      4051, 4050, 4052, 3549, 3549, 2321, 3549, 3549, 3549, 3549,
02104      3549, 3549, 3549, 3549, 3549, 3549, 4026, 3549, 3549, 3549,
02105      4027, 3549, 3549, 4027, 4027, 3549, 3549, 3549, 4051, 4052,
02106      2321, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 4026, 3549,
02107      3549, 3549, 4027, 4027, 2321, 3549, 3549, 3549, 3549, 4026,
02108 
02109      3549, 3549, 4027, 3549, 3549, 2321, 3549, 3549, 3549, 3549,
02110      3549, 3549, 3549, 3549, 3549, 3549, 2321, 3549, 3549, 3549,
02111      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02112      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02113      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02114      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02115      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02116      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02117      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02118      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02119 
02120      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02121      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02122      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02123      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,
02124      3549, 2321, 3549, 2321, 3549, 2321, 3549, 2321,    0, 3549,
02125      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02126      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02127      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02128      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02129      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02130 
02131      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02132      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02133      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02134      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02135      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02136      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02137      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02138      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02139      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02140      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02141 
02142      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02143      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02144      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02145      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02146      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02147      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02148      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02149      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02150      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02151      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02152 
02153      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02154      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02155      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02156      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02157      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02158      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02159      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02160      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02161      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02162      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02163 
02164      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02165      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02166      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02167      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02168      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02169      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02170      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02171      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02172      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02173      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02174 
02175      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02176      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02177      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02178      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02179      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
02180      3549, 3549
02181     } ;
02182 
02183 static yyconst flex_int16_t yy_nxt[25532] =
02184     {   0,
02185      3549, 3549,  245, 3549,  245, 3549,  246,  247,  246,  247,
02186      1181,  248, 3549,  248, 1181, 1048, 1058, 1059, 3549,  249,
02187      1049,  249,  244,  244,  245,  244,  244,  244,  246,  247,
02188       250,  244,  244,  248,  244,  244,  244,  244,  244,  244,
02189       244,  249,  244,  244,  244,  244,  244,  244,  244,  244,
02190       244,  244,  244,  244,  251,  251,  251,  251,  251,  251,
02191       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
02192       251,  251,  251,  244,  244,  244,  251,  251,  251,  251,
02193       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
02194       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
02195 
02196       251,  244,  244,  244,  253,  254,  253,  253, 1056,  255,
02197       256, 1332, 1333, 1057,  257,  253,  254,  253,  253,  245,
02198       255,  256,  258,  304,  305,  257,  245, 2002,  306, 1051,
02199       304,  305, 1051,  258, 1082,  306,  307, 1082, 1120, 1283,
02200      1052, 1120, 1097,  307,  308,  245,  309, 1098, 1284,  246,
02201       247,  308, 2002,  309,  248,  259, 1065, 1065, 1065, 1065,
02202      1107, 1139,  249, 1066, 1139, 1108,  259,  244,  260,  261,
02203       262,  260,  263,  246,  247,  264,  244,  244,  248,  244,
02204       244,  244,  244,  244,  244,  265,  249,  244,  244,  244,
02205       244,  244,  266,  267,  244,  244,  244,  244,  244,  268,
02206 
02207       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
02208       268,  268,  268,  268,  268,  268,  268,  268,  244,  244,
02209       244,  268,  268,  268,  268,  268,  268,  268,  268,  268,
02210       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
02211       268,  268,  268,  268,  268,  268,  269,  244,  270,  244,
02212       271,  272,  273,  271,  274,  246,  247,  275,  244,  276,
02213       248,  277,  244,  276,  278,  279,  278,  244,  280,  244,
02214       244,  244,  244,  244,  281,  276,  282,  276,  244,  244,
02215       283,  284,  284,  284,  284,  284,  284,  284,  284,  284,
02216       284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
02217 
02218       277,  244,  244,  284,  285,  284,  284,  284,  284,  284,
02219       284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
02220       284,  286,  284,  284,  284,  284,  284,  284,  269,  244,
02221       274,  287,  287,  288,  287,  287,  287,  289,  290,  291,
02222       287,  287,  292,  287,  287,  287,  287,  287,  287,  287,
02223       293,  287,  287,  287,  287,  287,  294,  287,  287,  287,
02224       287,  287,  287,  295,  295,  295,  295,  295,  295,  295,
02225       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
02226       295,  295,  287,  287,  287,  295,  295,  295,  295,  295,
02227       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
02228 
02229       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
02230       287,  287,  287,  287,  287,  288,  287,  287,  287,  289,
02231       290,  296,  287,  287,  292,  287,  287,  287,  287,  287,
02232       287,  287,  293,  287,  287,  287,  287,  287,  287,  287,
02233       287,  287,  287,  287,  287,  297,  297,  297,  297,  297,
02234       297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
02235       297,  297,  297,  297,  287,  287,  287,  297,  297,  297,
02236       297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
02237       297,  297,  297,  297,  297,  297,  297,  297,  297,  298,
02238       297,  297,  299,  287,  287,  244,  244,  245,  244,  244,
02239 
02240       244,  246,  247,  300,  244,  244,  248,  244,  301,  244,
02241       244,  244,  244,  244,  249,  244,  244,  244,  244,  244,
02242       244,  244,  244,  244,  244,  244,  244,  302,  302,  302,
02243       302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
02244       302,  302,  302,  302,  302,  302,  244,  244,  244,  302,
02245       302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
02246       302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
02247       302,  302,  302,  302,  244,  244,  244,  310,  311,  312,
02248       310,  311,  310,  313,  314,  315,  310,  310,  316,  310,
02249       310,  310,  310,  310,  310,  310,  317,  310,  310,  310,
02250 
02251       310,  310,  310,  318,  310,  310,  310,  310,  310,  319,
02252       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
02253       319,  319,  319,  319,  319,  319,  319,  319,  320,  310,
02254       310,  319,  319,  319,  319,  319,  319,  319,  319,  319,
02255       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
02256       319,  319,  319,  319,  319,  319,  321,  310,  310,  322,
02257       322,  323,  322,  322,  322,  324,  325,  326,  322,  322,
02258       327,  322,  322,  322,  322,  322,  322,  322,  328,  322,
02259       322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
02260       322,  329,  329,  329,  329,  329,  329,  329,  329,  329,
02261 
02262       329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
02263       322,  322,  322,  329,  329,  329,  329,  329,  329,  329,
02264       329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
02265       329,  329,  329,  329,  329,  329,  329,  329,  330,  322,
02266       322,  244,  331,  332,  333,  331,  244,  246,  247,  334,
02267       244,  244,  248,  244,  244,  244,  278,  335,  278,  244,
02268       280,  244,  244,  244,  244,  244,  336,  267,  337,  244,
02269       335,  244,  283,  338,  338,  338,  338,  338,  338,  338,
02270       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
02271       338,  338,  244,  244,  244,  338,  338,  338,  338,  338,
02272 
02273       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
02274       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
02275       339,  244,  244,  341,  342,  341,  341, 1140,  343,  344,
02276      1141, 2546, 1111,  345,  341,  342,  341,  341, 1112,  343,
02277       344,  346, 2547, 1048,  345,  245, 1048, 1114, 1049,  349,
02278       247, 1049,  346, 1048,  350,  351,  245, 1655, 1049,  352,
02279       349,  247,  249, 1048, 1175,  350,  351, 1175, 1049,  353,
02280       352, 1655,  245,  249, 1048, 1294,  356,  357, 1294, 1049,
02281       353,  358,  417,  418,  417,  417,  359,  246,  247,  360,
02282       245,  347,  248, 1187,  356,  357,  361,  348, 1188,  358,
02283 
02284       427,  405,  347, 2548,  359,  406,  407,  360,  348, 1385,
02285       408,  245, 1239, 1386,  361,  246,  247, 1240,  409, 1255,
02286       248, 1176,  354, 1427, 1256, 1428,  410, 2549,  249, 1096,
02287      1096, 1096, 1096,  354,  244,  362,  363,  364,  362,  365,
02288       246,  366,  367,  368,  369,  248,  370,  244,  369,  371,
02289       372,  371,  373,  374,  375,  375,  375,  375,  375,  376,
02290       377,  378,  379,  244,  380,  381,  382,  382,  382,  382,
02291       382,  382,  382,  382,  382,  382,  382,  382,  382,  383,
02292       382,  382,  382,  382,  382,  384,  244,  244,  385,  386,
02293       382,  387,  388,  389,  390,  391,  382,  392,  393,  394,
02294 
02295       395,  396,  382,  397,  382,  398,  399,  400,  401,  402,
02296       382,  382,  382,  403,  244,  365,  405, 1699,  245, 1056,
02297       406,  407,  444,  445, 1057,  408, 1048,  446,  447,  448,
02298      1732, 1049, 1427,  409, 1428,  449, 1186, 1186, 1186, 1186,
02299      1733,  410,  244,  411,  412,  411,  411,  413,  246,  247,
02300       414,  244,  244,  248,  244,  244,  244,  244,  244,  244,
02301       244,  249,  244,  244,  244,  244,  244,  415,  244,  244,
02302       244,  244,  244,  244,  416,  416,  416,  416,  416,  416,
02303       416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
02304       416,  416,  416,  244,  244,  244,  416,  416,  416,  416,
02305 
02306       416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
02307       416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
02308       416,  244,  244,  413,  244,  417,  418,  417,  417,  244,
02309       246,  247,  419,  244,  244,  248,  420,  244,  244,  244,
02310       421,  244,  244,  422,  244,  244,  244,  244,  244,  244,
02311       423,  244,  424,  244,  244,  244,  425,  425,  425,  425,
02312       425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
02313       425,  425,  425,  425,  425,  426,  244,  244,  425,  425,
02314       425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
02315       425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
02316 
02317       425,  425,  425,  244,  244,  244,  417,  418,  417,  417,
02318      1048,  246,  247,  245, 1048, 1049,  248,  246,  428, 1049,
02319      1111, 1699,  248,  429,  427, 1319, 1112,  430, 1319,  245,
02320       249, 1292, 2552,  246,  428, 1114,  431,  432,  248,  429,
02321      1272, 1320, 1655,  430, 1320, 1273,  249, 1089, 1089, 1089,
02322      1089, 1655,  431,  432,  434,  435,  434,  434, 1272,  436,
02323       437, 1299, 1048, 1273,  438,  439,  440, 1049, 2553,  441,
02324      1115, 1088,  442,  434,  435,  434,  434,  245,  436,  437,
02325      1669,  246,  247,  438,  439,  440,  248, 2554,  441, 1670,
02326       430,  442,  245, 1297,  249,  451,  444,  445, 1298,  452,
02327 
02328       453,  446,  447,  448,  454, 1323,  430, 1342, 1343,  449,
02329      1324,  451,  455,  474, 1301,  452,  453,  475,  476,  456,
02330       454, 2477,  477,  478, 1054, 1054, 1054, 1054,  455, 2478,
02331       479, 1054, 1054, 1054, 1054,  456,  474,  480,  481,  562,
02332       475,  476, 1055,  563,  564,  477,  478, 1320,  565, 1055,
02333      1320, 1328, 2118,  479, 1328,  530,  566, 1329, 1344, 1345,
02334       480,  481, 1330,  555,  245, 2176,  555, 1331,  556,  557,
02335       562, 1919,  457,  558,  563,  564,  559, 1402, 2555,  565,
02336      1402,  560, 1260, 1260, 1260, 1260, 1920,  566,  457,  433,
02337       458,  459,  458,  458,  433,  436,  437,  460,  433,  433,
02338 
02339       438,  433,  433,  433,  433,  461,  433,  433,  462,  433,
02340       433,  433,  433,  433,  461,  461,  433,  463,  433,  433,
02341       433,  464,  464,  464,  464,  464,  464,  464,  464,  464,
02342       464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
02343       433,  433,  433,  464,  465,  464,  466,  464,  464,  464,
02344       464,  464,  464,  464,  464,  464,  467,  468,  464,  464,
02345       469,  470,  471,  464,  472,  464,  464,  464,  461,  433,
02346       433,  245, 1337, 2556,  245,  483,  484, 1338,  483,  484,
02347       485, 1568, 1569,  485,  490,  491,  492,  490,  486,  493,
02348       494,  486, 1323, 1347,  495, 2557, 1347, 1340,  490,  491,
02349 
02350       492,  490,  496,  493,  494, 1427, 1348, 1428,  495, 1061,
02351      1061, 1061, 1061, 1048,  497, 1427,  496, 1428, 1049, 1350,
02352       487, 1552,  488,  487, 1351,  488, 1062, 2558,  497,  490,
02353       491,  492,  490, 1063,  493,  494, 1427, 1553, 1428,  495,
02354       490,  491,  492,  490, 1048,  493,  494,  496, 1429, 1049,
02355       495,  490,  491,  492,  490, 1358,  493,  494,  496,  497,
02356      1359,  495,  498,  499, 1083, 1083, 1083, 1083, 2067,  496,
02357       497, 1084, 1061, 1061, 1061, 1061,  498,  499, 2068, 1430,
02358      1626,  501,  490,  491,  492,  490,  532,  493,  494, 1062,
02359       533,  534,  495, 1627, 1361,  535, 1063,  532,  536, 1362,
02360 
02361       496,  533,  534,  537, 2559, 1626,  535,  498,  500,  536,
02362       555,  245,  501,  555,  537,  556,  557, 2519,  498,  500,
02363       558, 1415,  245,  559, 1415, 2520,  246,  247,  560,  498,
02364       502,  248,  569,  570, 1648, 1649,  538,  592, 1048,  249,
02365       245,  593,  594, 1049,  246,  247,  595,  538, 1048,  248,
02366       569,  570, 1424, 1049,  596, 1424, 1526,  249, 2560, 1526,
02367       498,  502,  244,  244,  245,  244,  244,  244,  246,  247,
02368       503,  244,  244,  248,  244,  244,  244,  244,  244,  244,
02369       244,  249,  244,  244,  244,  244,  244,  244,  504,  244,
02370       244,  244,  244,  244,  505,  505,  505,  505,  505,  505,
02371 
02372       505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
02373       505,  505,  505,  244,  244,  244,  505,  505,  505,  505,
02374       505,  505,  505,  505,  505,  505,  505,  505,  505,  506,
02375       505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
02376       505,  244,  244,  244,  244,  507,  508,  507,  507,  509,
02377       246,  247,  510,  244,  244,  248,  244,  244,  244,  244,
02378       244,  244,  244,  249,  244,  244,  244,  244,  244,  511,
02379       244,  244,  244,  244,  244,  244,  512,  512,  512,  512,
02380       512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
02381       512,  512,  512,  512,  512,  244,  244,  244,  512,  512,
02382 
02383       512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
02384       512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
02385       512,  512,  512,  244,  244,  509,  514,  515, 1910,  514,
02386      1371,  516,  517, 1353, 2561, 1372,  518,  524,  515, 1373,
02387       524, 1374,  516,  525,  519, 1354, 1911,  518,  514,  526,
02388      1355,  514, 1678,  527,  517,  519,  520, 1375,  518,  245,
02389      1048, 1678, 1832,  246,  247, 1049,  528,  520,  248, 1678,
02390      2562, 1833, 1086, 1087, 1087, 1086,  249,  521,  520,  514,
02391       526, 2563,  514, 1678,  527,  517,  532, 1048,  521,  518,
02392       539,  534, 1049, 1332, 1333,  540, 1088,  528,  536,  529,
02393 
02394      2469, 1835,  532,  537,  522,  523,  539,  534,  592,  520,
02395      1836,  540,  593,  594,  536,  522,  523,  595, 2470,  537,
02396      1087, 1087, 1087, 1087,  515,  596,  521,  521,  541,  542,
02397       529, 1342, 1343,  518, 1391, 1048,  538,  530,  515, 1391,
02398      1049,  543,  541,  542, 1088, 2564, 1394,  518,  544, 1399,
02399      1064, 1395,  538,  520, 1400,  543, 1406,  521,  521,  547,
02400       548, 1407,  544,  549,  550, 2089, 1416,  520,  551,  547,
02401       548, 1417, 1444,  549,  550,  245,  552, 1445,  551,  246,
02402       247, 2090, 1272, 1048,  248,  245,  552, 1273, 1049,  246,
02403       247,  603,  249, 1048,  248,  604,  605, 2075, 1049, 2076,
02404 
02405       606,  545,  249, 1090, 1090, 1090, 1090, 2077,  607,  553,
02406      1091,  572,  573,  572,  572,  545,  574,  575, 2565,  553,
02407      1950,  576,  572,  573,  572,  572,  643,  574,  575,  577,
02408       644,  645,  576, 1456, 1950,  646, 1456,  578, 1457,  579,
02409       577, 1194,  245,  647, 1048, 2298,  246,  247,  578, 1049,
02410       579,  248,  567,  568, 1082, 1608,  245, 1082, 1608,  249,
02411       246,  247,  567,  568, 1655,  248, 1494,  580,  608,  581,
02412      2298, 1495, 1048,  249, 1609,  245, 2567, 1049, 1655,  246,
02413       247,  580, 1503,  581,  248,  582,  583, 1504, 1082,  245,
02414      1196, 1082,  249,  246,  247, 1427, 1197, 1428,  248,  582,
02415 
02416       583, 1198, 1199,  245, 1200, 1507,  249,  585,  586,  245,
02417      1508, 1513,  587,  585,  586, 2568, 1514, 1048,  587,  643,
02418       588, 2569, 1049,  644,  645,  245,  588, 1521,  646,  651,
02419       652, 2570, 1522, 1048,  653, 1048,  647, 1916, 1049,  668,
02420      1049, 1048,  654,  669,  670, 1048, 1049, 1719,  671,  655,
02421      1049, 2571,  589, 2572,  590, 1720,  672, 1721,  589, 2573,
02422       590,  244,  244,  245,  244,  244,  244,  246,  247,  597,
02423       244,  244,  248,  244,  244,  244,  244,  244,  244,  244,
02424       249,  244,  244,  244,  244,  244,  244,  598,  244,  244,
02425       244,  244,  244,  599,  599,  599,  599,  599,  599,  599,
02426 
02427       599,  599,  599,  599,  599,  599,  599,  599,  599,  599,
02428       599,  599,  244,  244,  244,  599,  599,  599,  600,  599,
02429       599,  599,  599,  599,  599,  599,  599,  599,  599,  599,
02430       599,  599,  599,  599,  599,  599,  601,  599,  599,  599,
02431       244,  244,  244,  603, 1835,  245, 1048,  604,  605,  610,
02432       611, 1049,  606, 1836,  612, 1101, 1101, 1101, 1101,  245,
02433       607, 2574,  613,  610,  611, 1048, 1102, 1181,  612, 2575,
02434      1049, 1181,  616,  617,  616,  616,  613,  618,  619, 1088,
02435      2576, 1545,  620, 1048, 1527,  621, 1546, 1527, 1049,  622,
02436       623,  616,  617,  616,  616, 1528,  618,  619, 1048, 2577,
02437 
02438       614,  620,  624, 1551,  621, 1558, 1900,  245,  622,  623,
02439      1559,  651,  652,  668,  614, 1901,  653,  669,  670, 2578,
02440       608,  624,  671,  624,  654, 1172, 1172, 1172, 1172, 2579,
02441       672,  655, 1173, 1244, 1244, 1244, 1244, 2580, 1120, 2581,
02442      1245, 1120,  624,  244,  244,  245,  244,  244,  244,  246,
02443       247,  625,  244,  244,  248,  244,  244,  244,  244,  244,
02444       244,  244,  249,  244,  244,  244,  244,  244,  244,  626,
02445       244,  244,  244,  244,  244,  627,  627,  627,  627,  627,
02446       627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
02447       627,  627,  627,  627,  244,  244,  244,  627,  627,  627,
02448 
02449       627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
02450       627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
02451       627,  627,  244,  244,  244,  244,  244,  245,  244,  244,
02452       244,  246,  247,  628,  244,  244,  248,  244,  244,  244,
02453       244,  244,  244,  244,  249,  244,  244,  244,  244,  244,
02454       244,  244,  244,  244,  244,  244,  244,  629,  629,  629,
02455       629,  629,  629,  629,  629,  629,  629,  629,  629,  629,
02456       629,  629,  629,  629,  629,  629,  244,  244,  244,  629,
02457       629,  629,  629,  629,  629,  629,  629,  629,  629,  629,
02458       629,  629,  629,  629,  629,  629,  629,  629,  629,  629,
02459 
02460       629,  629,  629,  629,  244,  244,  244,  631, 1950,  631,
02461      1048,  632,  633,  632,  633, 1049,  634, 1950,  634, 1118,
02462      1118, 1118, 1118,  680,  635, 1048,  635,  681,  682, 2582,
02463      1049, 2053,  683,  680,  684, 2583, 1554,  681,  682, 1554,
02464       685, 1048,  683, 1119,  684, 2053, 1049,  692, 1048, 1555,
02465       685,  693,  694, 1049, 1589, 2584,  695, 1589,  696, 2054,
02466       636, 1590,  636, 1591,  697,  245,  637, 1591,  637,  246,
02467       247, 1344, 1345, 2054,  248,  746,  638,  639,  638,  639,
02468      1139, 2585,  249, 1139,  640,  641,  640,  641,  244,  244,
02469       245,  244,  244,  244,  246,  247,  648,  244,  244,  248,
02470 
02471       244,  244,  244,  244,  244,  244,  244,  249,  244,  244,
02472       244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
02473       649,  649,  649,  649,  649,  649,  649,  649,  649,  649,
02474       649,  649,  649,  649,  649,  649,  649,  649,  649,  244,
02475       244,  244,  649,  649,  649,  649,  649,  649,  649,  649,
02476       649,  649,  649,  649,  649,  649,  649,  649,  649,  649,
02477       649,  649,  649,  649,  649,  649,  649,  244,  244,  244,
02478       656,  657,  418,  657,  657,  656,  658,  659,  660,  656,
02479       656,  661,  656,  656,  656,  656,  662,  656,  656,  663,
02480       656,  656,  656,  656,  656,  656,  664,  656,  656,  656,
02481 
02482       656,  656,  665,  665,  665,  665,  665,  665,  665,  665,
02483       665,  665,  665,  665,  665,  665,  665,  665,  665,  665,
02484       665,  656,  656,  656,  665,  665,  665,  665,  665,  665,
02485       665,  665,  665,  665,  665,  665,  665,  665,  665,  665,
02486       665,  665,  665,  665,  665,  665,  665,  665,  665,  666,
02487       656,  656,  244,  244,  245,  244,  244,  244,  246,  247,
02488       673,  244,  244,  248,  674,  244,  244,  244,  244,  244,
02489       244,  249,  244,  244,  244,  244,  244,  675,  676,  244,
02490       244,  244,  244,  244,  677,  677,  677,  677,  677,  677,
02491       677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
02492 
02493       677,  677,  677,  244,  244,  244,  677,  677,  677,  677,
02494       677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
02495       677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
02496       677,  678,  244,  244,  244,  244,  245,  244,  244,  244,
02497       246,  247,  686,  244,  244,  248,  687,  244,  244,  244,
02498       688,  244,  244,  249,  244,  244,  244,  244,  244,  689,
02499       676,  244,  244,  244,  244,  244,  690,  690,  690,  690,
02500       690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
02501       690,  690,  690,  690,  690,  244,  244,  244,  690,  690,
02502       690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
02503 
02504       690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
02505       690,  690,  690,  678,  244,  244,  692, 1048, 2586,  245,
02506       693,  694, 1049,  246,  247,  695,  245,  696,  248, 1048,
02507       246,  247, 1111,  697, 1049,  248,  249,  245, 1112, 2589,
02508      1048,  246,  247,  249,  698, 1049,  248, 1114,  699, 2590,
02509      1615,  698,  245, 1615,  249,  245,  246,  247,  245,  246,
02510       247,  248,  246,  247,  248, 1048,  699,  248, 1616,  249,
02511      1049, 1427,  249, 1428,  245,  249,  706, 2591,  246,  247,
02512      1622, 2209,  706,  248,  746, 1623, 1145, 1145, 1145, 1145,
02513       700,  249,  701, 2592,  245, 2209,  702, 1620,  246,  247,
02514 
02515      1620, 2233,  703,  248, 1146,  747,  704,  705,  700, 1650,
02516       701,  249, 1650, 2593,  702, 1290, 1291, 1291, 1290, 2594,
02517       703, 1292, 1651, 1621,  704,  705,  244,  707,  245,  244,
02518       707,  244,  246,  247,  708,  244,  244,  248,  709,  244,
02519       244,  244,  244,  244,  244,  249,  244,  244,  244,  244,
02520       244,  244,  244,  244,  244,  244,  244,  244,  710,  710,
02521       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
02522       710,  710,  710,  710,  710,  710,  710,  244,  244,  244,
02523       710,  710,  710,  711,  710,  710,  710,  710,  710,  710,
02524       710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
02525 
02526       710,  712,  710,  710,  710,  244,  244,  244,  244,  244,
02527       245,  244,  244,  244,  246,  247,  713,  244,  244,  248,
02528       244,  244,  244,  244,  244,  244,  244,  249,  244,  244,
02529       244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
02530       714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
02531       714,  714,  714,  714,  714,  714,  714,  714,  714,  244,
02532       244,  244,  714,  714,  714,  714,  714,  714,  714,  714,
02533       714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
02534       714,  714,  714,  714,  714,  714,  714,  244,  244,  244,
02535       245, 1614, 1624, 1641,  246,  247, 2596, 1625, 1623,  248,
02536 
02537       245,  715, 2210, 1617,  246,  247, 2377,  249, 1618,  248,
02538       245,  715, 2249, 1624,  246,  247, 2210,  249, 1642,  248,
02539      1645,  747, 2286,  716, 1708, 1646, 2249,  249, 1147, 1147,
02540      1147, 1147, 1772,  716,  717,  718, 2286,  719, 1291, 1291,
02541      1291, 1291, 2057, 2058,  717,  718, 1148,  719,  244,  244,
02542       245,  244,  244,  244,  246,  247,  720,  244,  244,  248,
02543       244,  244,  244,  244,  244,  244,  244,  249,  244,  244,
02544       244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
02545       721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
02546       721,  721,  721,  721,  721,  721,  721,  721,  721,  244,
02547 
02548       244,  244,  721,  721,  721,  721,  721,  721,  721,  721,
02549       721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
02550       721,  721,  721,  721,  721,  721,  721,  244,  244,  244,
02551       244,  244,  245,  244,  244,  244,  246,  247,  722,  244,
02552       244,  248,  244,  244,  244,  244,  244,  244,  244,  249,
02553       244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
02554       244,  244,  723,  723,  723,  723,  723,  723,  723,  723,
02555       723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
02556       723,  244,  244,  244,  723,  723,  723,  723,  723,  723,
02557       723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
02558 
02559       723,  723,  723,  723,  723,  723,  723,  723,  723,  244,
02560       244,  244,  725,  726,  725,  725,  778,  727,  728, 2642,
02561       779,  780,  729,  730,  731,  781,  782,  732,  733, 1653,
02562       734, 1694, 1139,  783, 1654, 1139, 1695,  735,  736,  245,
02563       737,  738,  739,  246,  247, 1978, 1051, 1702,  248, 1051,
02564       778, 2643, 1703,  757,  779,  780,  249, 1052, 2658,  781,
02565       782,  245,  740,  758,  731,  246,  247,  783, 2113, 2114,
02566       248,  788,  789,  788,  788,  757,  790,  791,  249, 1704,
02567      2659,  792,  793,  794, 1705,  758, 2113, 2120, 1978,  795,
02568       741,  731,  725,  726,  725,  725,  800,  727,  728, 2660,
02569 
02570       801,  802,  729,  730,  731,  803, 2661,  732,  733, 1111,
02571       734, 1175, 2662,  804, 1175, 1112, 1978,  735,  736,  805,
02572       737,  738,  739,  245, 1114, 2072,  245,  760,  761,  800,
02573       760,  761,  762,  801,  802,  762, 1051, 2073,  803, 1051,
02574       763, 2074,  740,  763,  731, 2663,  804, 1052,  764, 1725,
02575       765,  764,  805,  765, 1182, 1182, 1182, 1182, 1726, 1716,
02576      1874, 1183, 1717, 1184, 1727, 1875, 1729, 1184, 1176, 1730,
02577       741,  731,  244,  742,  743,  742,  742,  244,  246,  247,
02578       744,  244,  244,  248,  244,  244,  244,  244,  244,  244,
02579       244,  249,  244,  244,  244,  244,  244,  244,  244,  244,
02580 
02581       244,  244,  244,  244,  745,  745,  745,  745,  745,  745,
02582       745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
02583       745,  745,  745,  244,  244,  244,  745,  745,  745,  745,
02584       745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
02585       745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
02586       745,  244,  244,  244,  244,  748,  749,  748,  748,  244,
02587       246,  247,  750,  244,  751,  248,  244,  244,  751,  244,
02588       752,  244,  244,  753,  244,  244,  244,  244,  244,  244,
02589       754,  244,  755,  244,  244,  244,  756,  756,  756,  756,
02590       756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
02591 
02592       756,  756,  756,  756,  756,  244,  244,  244,  756,  756,
02593       756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
02594       756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
02595       756,  756,  756,  244,  244,  244,  766,  767,  768,  767,
02596       767,  769,  770,  771,  772,  766,  766,  773,  766,  766,
02597       766,  766,  766,  766,  766,  774,  766,  766,  766,  766,
02598       766,  775,  766,  766,  766,  766,  766,  766,  776,  776,
02599       776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
02600       776,  776,  776,  776,  776,  776,  776,  766,  766,  766,
02601       776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
02602 
02603       776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
02604       776,  776,  776,  776,  776,  766,  766,  769,  245, 1877,
02605      2664,  245,  246,  247, 1878,  246,  247,  248,  784,  785,
02606       248,  784,  785, 1320, 1320,  249, 1320, 1320,  249,  788,
02607       789,  788,  788,  245,  790,  791, 2287,  483,  484,  792,
02608       793,  794,  485,  788,  789,  788,  788,  795,  790,  791,
02609       486, 1391, 2299,  792,  793, 1051, 1391,  786, 1051, 2287,
02610       786,  795,  788,  789,  788,  788, 1052,  790,  791,  797,
02611       245,  798,  792,  793,  897,  898, 1655, 2299, 2665,  899,
02612       795,  900,  487, 1319,  912, 1655, 1319,  901,  797, 1292,
02613 
02614       798,  244,  244,  245,  244,  244,  244,  246,  247,  806,
02615       244,  244,  248,  244,  244,  244,  244,  244,  244,  244,
02616       249,  244,  244,  244,  244,  244,  244,  244,  244,  244,
02617       244,  244,  244,  807,  807,  807,  807,  807,  807,  807,
02618       807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
02619       807,  807,  244,  244,  244,  807,  807,  807,  807,  807,
02620       807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
02621       807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
02622       244,  244,  244,  244,  244,  245,  244,  244,  244,  246,
02623       247,  808,  244,  244,  248,  244,  244,  244,  244,  244,
02624 
02625       244,  244,  249,  244,  244,  244,  244,  244,  244,  809,
02626       244,  244,  244,  244,  244,  810,  810,  810,  810,  810,
02627       810,  810,  810,  810,  810,  810,  810,  810,  810,  810,
02628       810,  810,  810,  810,  244,  244,  244,  810,  810,  810,
02629       810,  810,  810,  810,  810,  810,  810,  810,  810,  810,
02630       810,  810,  810,  810,  810,  810,  810,  810,  810,  810,
02631       810,  810,  244,  244,  244,  812, 2667,  812, 1391,  813,
02632       814,  813,  814, 1391,  815, 1402,  815,  816, 1402,  816,
02633      2053,  812,  817,  812,  817,  819,  814,  819,  814, 2053,
02634       820, 1415,  820,  816, 1415,  816, 2054,  822,  817,  822,
02635 
02636       817,  823,  824,  823,  824, 2054,  825, 1424,  825,  826,
02637      1424,  826, 2668, 1111,  827,  818,  827,  818,  822, 1112,
02638       822, 1948,  829,  824,  829,  824, 1949,  830, 1114,  830,
02639       826,  818,  826,  818,  832,  827, 1622,  827,  833,  834,
02640      2669, 1623, 1736,  835,  836,  837, 2673,  828,  832,  828,
02641      1737,  838,  833,  834, 2209, 1738, 1855,  835,  836,  837,
02642      1683, 1608,  840, 2209, 1608,  838,  841,  842,  828,  840,
02643       828,  843,  848,  841,  842, 2210,  849,  850,  843,  844,
02644      1609,  851,  852,  853, 2210, 1837,  844,  848, 1837,  854,
02645       856,  849,  850, 2249,  857,  858,  851,  852,  853,  859,
02646 
02647      1669,  856, 2249, 1879,  854,  857,  863,  860, 1641, 1670,
02648       859,  865,  866, 1623,  865,  914,  867,  868,  860,  915,
02649       916,  869,  870,  871,  917,  865,  866, 1855,  865,  872,
02650       867,  868,  918, 2113, 2114,  869,  870,  871, 1328,  845,
02651       846, 1328, 1347,  872, 1329, 1347,  845,  846,  434,  435,
02652       434,  434,  245,  436,  437, 1348, 1012, 1013,  438,  894,
02653       895, 1014, 2674,  441, 1871,  919,  442,  861,  862, 1015,
02654      1060, 1061, 1061, 1060, 1258, 1258, 1258, 1258,  861,  862,
02655       874,  875,  874,  874, 1871,  876,  877, 1062, 2084, 1259,
02656       878,  879,  880, 2085, 1063, 2678, 1985, 2679,  881,  434,
02657 
02658       435,  434,  434, 2680,  436,  437,  882, 2326,  883,  438,
02659       894,  895, 2327, 1997,  441,  245, 1997,  442,  245,  897,
02660       898, 2352,  483,  484,  899, 2353,  900,  485,  903,  904,
02661       903,  903,  901,  905,  906,  486, 2113, 2120,  907,  908,
02662       909, 1985, 1608,  910, 1637, 1608,  911, 1637, 1064, 1427,
02663      2681, 1428,  884,  874,  875,  874,  874, 1638,  876,  877,
02664      2682, 1609, 1639,  878,  879,  880, 2683,  487, 1985,  912,
02665      1621,  881,  903,  904,  903,  903, 1835,  905,  906,  882,
02666      2684,  883,  907,  908,  909, 1836, 2685,  910,  914, 1917,
02667       911,  914,  790,  923, 1835,  790,  923,  792,  924,  925,
02668 
02669       792,  924,  925, 1836, 1456,  926,  245, 1456,  926, 1457,
02670      1006, 1007, 2686, 1527, 2687, 1008, 1527, 1009, 1291, 1291,
02671      1291, 1291, 2688, 1010, 1528,  884,  885,  885,  886,  885,
02672       885,  885,  887,  888,  889,  885,  885,  890,  885,  885,
02673       885,  885,  885,  885,  885,  891,  885,  885,  885,  885,
02674       885,  885,  892,  885,  885,  885,  885,  885,  893,  893,
02675       893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
02676       893,  893,  893,  893,  893,  893,  893,  885,  885,  885,
02677       893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
02678       893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
02679 
02680       893,  893,  893,  893,  893,  892,  885,  885,  914, 2533,
02681       914, 2377,  915,  916,  920,  916, 2598,  917, 2690,  921,
02682      1145, 1145, 1145, 1145,  914,  918,  914,  918,  920,  916,
02683       790,  791, 2533,  921, 1554,  792, 2692, 1554, 1146, 1604,
02684       914,  918, 1604,  926,  790,  791, 2534, 1555, 1427,  792,
02685      1428,  927, 1671,  928, 2008, 1671, 1672,  926,  919,  930,
02686       919, 1924, 1924,  931,  932,  927, 1605,  928,  933, 2534,
02687      1673,  934,  937,  930,  919,  937,  935,  931,  932, 1945,
02688      1945, 1615,  933, 1615, 1615,  938, 1615,  940,  936,  940,
02689       935,  941,  942,  941,  942, 1606,  943, 2008,  943, 1616,
02690 
02691      1953, 1616,  936,  930,  944, 1953,  944,  947,  948,  936,
02692       245, 1957,  949, 1607,  953,  954,  945,  930,  945,  955,
02693       950,  947,  948,  936,  245, 2008,  949,  956,  953,  954,
02694      1957,  245,  951,  955,  950, 1006, 1007,  945, 1961,  945,
02695      1008,  956, 1009, 1961, 1965,  245,  951, 1017, 1010, 1012,
02696      1013, 1018, 1019,  951, 1014, 1965, 1020, 1150, 1150, 1150,
02697      1150,  957, 1015, 1589, 1021, 1017, 1589,  951, 2060, 1018,
02698      1019, 2061, 1591, 2694, 1020,  957, 1591,  958, 1971, 1971,
02699      2695, 1152, 1021, 1300, 1300, 1300, 1300, 1356, 1356, 1356,
02700      1356,  958,  959,  960,  961,  960,  960,  959,  962,  963,
02701 
02702       964,  959,  959,  965,  959,  959,  959,  959,  959,  959,
02703       959,  966,  959,  959,  959,  959,  959,  959,  967,  959,
02704       959,  959,  959,  959,  968,  968,  968,  968,  968,  968,
02705       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
02706       968,  968,  968,  969,  959,  959,  968,  968,  968,  968,
02707       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
02708       968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
02709       968,  959,  959,  959,  244,  970,  971,  970,  970,  244,
02710       246,  247,  972,  244,  244,  248,  244,  244,  244,  244,
02711       244,  244,  244,  249,  244,  244,  244,  244,  244,  244,
02712 
02713       244,  244,  244,  244,  244,  244,  973,  973,  973,  973,
02714       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
02715       973,  973,  973,  973,  973,  244,  244,  244,  973,  973,
02716       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
02717       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
02718       973,  973,  973,  244,  244,  244,  245, 2695,  245, 2696,
02719       975,  976,  975,  976, 2017,  977,  978,  977,  978, 1077,
02720      1077, 1077, 1077,  979, 2018,  979, 1150, 1150, 1150, 1150,
02721      1078, 1135, 1135, 1135, 1135, 2697, 1062, 2017, 1147, 1147,
02722      1147, 1147, 2424, 1063, 1080, 1081, 2698, 2699, 1136, 2018,
02723 
02724      1152, 1145, 1145, 1145, 1145, 1138, 1148, 2425, 1258, 1258,
02725      1258, 1258, 2700, 1310, 1310, 1310, 1310, 2701, 1997, 1146,
02726      1311, 1997,  980, 1259,  980,  981,  982,  983,  982,  982,
02727       984,  985,  986,  987,  981,  981,  988,  989,  990,  981,
02728       981,  981,  981,  981,  991,  981,  981,  981,  981,  981,
02729       992,  981,  981,  981,  981,  981,  981,  993,  993,  993,
02730       993,  993,  993,  993,  993,  993,  993,  993,  993,  993,
02731       993,  993,  993,  993,  993,  993,  981,  981,  981,  993,
02732       993,  993,  993,  993,  993,  993,  993,  993,  993,  993,
02733       993,  993,  993,  993,  993,  993,  993,  993,  993,  993,
02734 
02735       993,  993,  993,  993,  981,  981,  984,  995,  245, 2702,
02736       995, 1837,  996,  997, 1837, 1838, 2703,  998,  995,  245,
02737      2704,  995, 2705,  996,  997,  999, 2706, 2707,  998, 1839,
02738      3549, 3549, 3549, 3549, 1000, 2020,  999, 3549, 1023, 1024,
02739      1427, 1023, 1428, 1025, 1026, 1000, 1620, 2016, 1027, 1620,
02740      2016, 1028, 1033, 1024, 2708, 1033, 1029, 1025, 1026, 2709,
02741      1638, 1709, 1027, 1001, 1030, 1034, 1710, 1711, 1031, 1712,
02742      1035, 2713, 1621, 1604, 1001, 1669, 1604, 2714, 1030, 1002,
02743      2020, 1003, 1031, 1837, 1670, 1004, 1837, 1838, 2481, 1032,
02744      1002, 1751, 1003, 1037, 1751, 1752, 1004, 1038, 1039, 1040,
02745 
02746      1605, 1839, 1041, 1032, 1753, 1042, 2715, 2020, 3549, 1427,
02747      1043, 1428, 1068, 1068, 1068, 1068, 1069, 1671, 1044, 1070,
02748      1671, 1754, 1045, 1072, 1072, 1072, 1072, 2716, 2587, 1606,
02749      1073, 1127, 1128, 1128, 1127, 2027, 1063, 2588, 1129, 2717,
02750      1062, 2718, 1754, 1045, 1040, 1046, 1037, 1607, 1046, 2719,
02751      1038, 1039, 1040, 2721, 2691, 1041, 2232, 2691, 1047, 1101,
02752      1101, 1101, 1101, 1043, 2722, 1087, 1087, 1087, 1087, 1093,
02753      1102, 1044, 1094, 2723, 2724, 1045, 1101, 1101, 1101, 1101,
02754      2725, 1589, 1751, 1088, 1589, 1751, 1822, 1102, 1650, 1088,
02755      1591, 1650, 1069, 1131, 1591, 1823, 1045, 1040, 2726, 2710,
02756 
02757      1088, 1651, 2710, 1075, 1133, 1133, 1133, 1133, 2727, 1132,
02758      2733, 1129, 1754, 2734, 1104, 1128, 1128, 1128, 1128, 1427,
02759      2720, 1428, 1129, 1177, 1177, 1177, 1177, 1178, 1755, 2736,
02760      1179, 1755, 1756, 1754, 1105, 1147, 1147, 1147, 1147, 1201,
02761      1201, 1201, 1201, 2720, 2739, 1093, 1757, 1152, 1201, 1201,
02762      1201, 1201, 2740, 1148, 1201, 1201, 1201, 1201, 1758, 1201,
02763      1201, 1201, 1201, 1152, 2741, 1203, 1131, 2482, 1054, 1054,
02764      1054, 1054, 1152, 2742, 1203, 2745, 2746, 1131, 1152, 1758,
02765      1203, 2747, 3549, 1152, 1837, 1203, 1055, 1837, 1902, 1201,
02766      1201, 1201, 1201, 3549, 1149, 1150, 1150, 1149, 2748, 2749,
02767 
02768      1151, 1204, 1903, 1178, 2751, 2753, 2755, 1207, 1201, 1201,
02769      1201, 1201, 2756, 1152, 1208, 1203, 2757, 2758, 1152, 1201,
02770      1201, 1201, 1201, 2759, 1153, 1242, 1242, 1242, 1242, 2762,
02771      2763, 2764, 1152, 2016, 1203, 1427, 2016, 1428, 1154, 1242,
02772      1242, 1242, 1242, 1152, 1155, 1203, 1638, 1156, 1157, 1243,
02773      1158, 1159, 1160, 2765, 2766, 1219, 1161, 1162, 1163, 1164,
02774      1165, 2743, 1166, 1243, 1167, 1168, 1169, 1170, 1171, 2767,
02775      2744, 2096, 1209, 2689, 2096, 1210, 2364, 1211, 2768, 2769,
02776      1111, 1212, 1201, 1201, 1201, 1201, 1112, 1201, 1201, 1201,
02777      1201, 1201, 1201, 1201, 1201, 1114, 2770, 1201, 1201, 1201,
02778 
02779      1201, 1201, 1201, 1201, 1201, 2771, 1152, 2016, 1203, 2197,
02780      2016, 1152, 2197, 1203, 2455, 1152, 2772, 1203, 2773, 1837,
02781      1638, 1152, 1837, 1203, 2774, 1152, 2775, 1203, 1201, 1201,
02782      1201, 1201, 2776, 1054, 1054, 1054, 1054, 1879, 1213, 2036,
02783      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1214, 1218,
02784      1220, 1055, 1152, 2780, 1203, 2781, 1215, 1217, 1216, 1201,
02785      1201, 1201, 1201, 1221, 1152, 1111, 1203, 2782, 1152, 2596,
02786      1203, 1112, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
02787      1114, 2377, 1111, 1152, 2802, 1203, 1222, 2778, 1112, 1201,
02788      1201, 1201, 1201, 2803, 1225, 1223, 1152, 1114, 1203, 2829,
02789 
02790      1152, 1224, 1203, 1201, 1201, 1201, 1201, 2830, 1145, 1145,
02791      1145, 1145, 2304, 1152, 1226, 1203, 2844, 1227, 2845, 2846,
02792      2847, 1229, 1251, 1251, 1251, 1251, 1146, 1152, 2849, 1203,
02793      1228, 1230, 2850, 2851, 1231, 1242, 1242, 1242, 1242, 1247,
02794      2264, 2856, 1248, 2264, 2857, 2501, 1243, 2760, 1253, 1147,
02795      1147, 1147, 1147, 1232, 2761, 1233, 2779, 1235, 2860, 1243,
02796      1234, 1274, 1274, 1274, 1274, 1236, 2861, 1148, 2862, 2863,
02797      1237, 1286, 1286, 1286, 1286, 1303, 1303, 1303, 1303, 2864,
02798      1275, 2865, 2866, 1287, 1303, 1303, 1303, 1303, 1308, 1308,
02799      1308, 1308, 1304, 1326, 1326, 1326, 1326, 2867, 2869, 1306,
02800 
02801      2872, 1304, 1308, 1308, 1308, 1308, 2691, 2873, 1306, 2691,
02802      2874, 1327, 1309, 2870, 2876, 1247, 1261, 1261, 1261, 1261,
02803      1308, 1308, 1308, 1308, 1313, 2877, 1309, 1314, 1308, 1308,
02804      1308, 1308, 1334, 1334, 1334, 1334, 2878, 2879, 1307, 1356,
02805      1356, 1356, 1356, 1262, 1309, 1369, 1369, 1369, 1369, 1427,
02806      1335, 1428, 1309, 1369, 1369, 1369, 1369, 1380, 1380, 1380,
02807      1380, 1054, 1054, 1054, 1054, 2880, 1145, 1145, 1145, 1145,
02808      1263, 2881, 1264, 1985, 1381, 1147, 1147, 1147, 1147, 1055,
02809      2882, 2883, 1265, 1266, 1146, 2884, 1267, 1268, 1269, 2868,
02810      1270, 2885, 2886, 1148, 1403, 1403, 1403, 1403, 2887, 2888,
02811 
02812      1313, 1409, 1409, 1409, 1409, 1411, 1411, 1411, 1411, 1054,
02813      1054, 1054, 1054, 1054, 1054, 1054, 1054, 2889, 1410, 1145,
02814      1145, 1145, 1145, 1147, 1147, 1147, 1147, 1055, 2890, 1413,
02815      2891, 1055, 1450, 1450, 1450, 1450, 2892, 1146, 2893, 1451,
02816      2894, 1148, 1450, 1450, 1450, 1450, 2895, 2896, 2897, 1451,
02817      3549, 3549, 3549, 3549, 2898, 2899, 2900, 3549, 1453, 1453,
02818      1453, 1453, 2901, 1458, 1458, 1458, 1458, 1099, 2904, 2908,
02819      1459, 1454, 1460, 2909, 2910, 2911, 1460, 1458, 1458, 1458,
02820      1458, 2912, 2913, 2914, 1459, 1755, 1460, 2915, 1755, 1824,
02821      1460, 3549, 3549, 3549, 3549, 2916, 2917, 2918, 3549, 2711,
02822 
02823      3549, 2919, 2711, 1825, 3549, 1458, 1458, 1458, 1458, 2920,
02824      2712, 2921, 1459, 2875, 1460, 1758, 2875, 2922, 1460, 1145,
02825      1145, 1145, 1145, 1147, 1147, 1147, 1147, 1462, 1462, 1462,
02826      1462, 1466, 1466, 1466, 1466, 2710, 1758, 1146, 2710, 2924,
02827      2926, 1148, 1467, 1470, 1470, 1470, 1470, 1470, 1470, 1470,
02828      1470, 1472, 1472, 1472, 1472, 1468, 2927, 2930, 1473, 1469,
02829      2931, 1470, 1470, 1470, 1470, 1475, 2933, 1471, 1476, 2934,
02830      2935, 1471, 1470, 1470, 1470, 1470, 2936, 1464, 1480, 1480,
02831      1480, 1480, 2937, 2942, 2945, 1471, 1482, 1482, 1482, 1482,
02832      1481, 1489, 1489, 1489, 1489, 2946, 1471, 1483, 1489, 1489,
02833 
02834      1489, 1489, 1492, 1492, 1492, 1492, 1529, 1529, 1529, 1529,
02835      2947, 1484, 1529, 1529, 1529, 1529, 1541, 1541, 1541, 1541,
02836      1493, 1537, 1537, 1537, 1537, 1541, 1541, 1541, 1541, 2948,
02837      2949, 1542, 1538, 1716, 2964, 2968, 1485, 2839, 2969, 2972,
02838      1542, 1475, 1543, 1543, 1543, 1543, 1539, 1556, 1556, 1556,
02839      1556, 2997, 2840, 2711, 1560, 1561, 2711, 1562, 2998, 1563,
02840      1555, 2999, 1564, 1565, 2712, 1550, 1571, 1571, 1571, 1571,
02841      3004, 1540, 1566, 1572, 1567, 1571, 1571, 1571, 1571, 3005,
02842      3008, 3009, 1572, 1576, 1576, 1576, 1576, 1582, 1582, 1582,
02843      1582, 3010, 3011, 3012, 1583, 1577, 3013, 3014, 1578, 1539,
02844 
02845      1582, 1582, 1582, 1582, 3016, 3017, 3018, 1583, 1586, 1586,
02846      1586, 1586, 1594, 1594, 1594, 1594, 1574, 3019, 3021, 1587,
02847      1594, 1594, 1594, 1594, 3022, 1574, 1596, 1596, 1596, 1596,
02848      1628, 3023, 3024, 1597, 3026, 1427, 1595, 1428, 1594, 1594,
02849      1594, 1594, 1599, 3028, 1595, 1600, 1594, 1594, 1594, 1594,
02850      1652, 1652, 1652, 1652, 3030, 3029, 1629, 1630, 3029, 1631,
02851      3031, 1632, 1595, 1651, 1633, 1634, 3032, 1628, 1644, 2481,
02852      1595, 2272, 1629, 1630, 1635, 1631, 1636, 1632, 3033, 2272,
02853      1633, 1634, 1054, 1054, 1054, 1054, 1060, 1061, 1061, 1060,
02854      1635, 2875, 1636, 1985, 2875, 1061, 1061, 1061, 1061, 3034,
02855 
02856      1055, 3035, 3036, 1062, 1072, 1072, 1072, 1072, 3037, 3038,
02857      1063, 1073, 1062, 1065, 1065, 1065, 1065, 3039, 1599, 1063,
02858      1066, 1062, 3549, 3549, 3549, 3549, 3040, 3041, 2292, 3549,
02859      1656, 1656, 1656, 1656, 1068, 1068, 1068, 1068, 3042, 2292,
02860      2897, 1078, 1065, 1065, 1065, 1065, 3044, 3045, 3046, 1066,
02861      1077, 1077, 1077, 1077, 3047, 1080, 1081, 3049, 1063, 3549,
02862      3052, 1078, 3549, 3053, 1064, 3054, 3549, 1062, 3055, 3056,
02863      1072, 1072, 1072, 1072, 1063, 1080, 1081, 1073, 3549, 3549,
02864      3549, 3549, 3057, 3059, 1075, 3549, 3060, 1062, 1659, 1659,
02865      1659, 1659, 3061, 3062, 3064, 3549, 1661, 1661, 1661, 1661,
02866 
02867      3065, 3066, 3067, 1662, 3068, 1062, 1664, 1664, 1664, 1664,
02868      1069, 3069, 3073, 1070, 1077, 1077, 1077, 1077, 1077, 1077,
02869      1077, 1077, 3080, 3081, 3082, 1083, 1083, 1083, 1083, 1078,
02870      1063, 1062, 1084, 1930, 3078, 1062, 1930, 1931, 1063, 1080,
02871      1081, 3086, 1063, 1080, 1081, 3549, 3549, 3549, 3549, 3079,
02872      1075, 1931, 3549, 1656, 1656, 1656, 1656, 3087, 3549, 1086,
02873      1087, 1087, 1086, 1932, 1078, 1087, 1087, 1087, 1087, 1089,
02874      1089, 1089, 1089, 1090, 1090, 1090, 1090, 2564, 1080, 1081,
02875      1091, 2090, 1751, 1088, 1932, 1751, 1069, 3100, 3101, 1088,
02876      3104, 3106, 3107, 1088, 3549, 3549, 3549, 3549, 3108, 3105,
02877 
02878      3109, 3549, 1666, 1666, 1666, 1666, 3124, 1090, 1090, 1090,
02879      1090, 3125, 1754, 1102, 1091, 1101, 1101, 1101, 1101, 1096,
02880      1096, 1096, 1096, 3131, 3132, 3134, 1102, 1674, 1674, 1674,
02881      1674, 1093, 3135, 1754, 1094, 3136, 3140, 1064, 3142, 1088,
02882      2468, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 3549,
02883      3144, 1088, 1102, 3549, 3146, 3147, 1102, 1101, 1101, 1101,
02884      1101, 1101, 1101, 1101, 1101, 1088, 2272, 3151, 1102, 1088,
02885      2272, 3152, 1102, 1118, 1118, 1118, 1118, 1127, 1128, 1128,
02886      1127, 1088, 3153, 3154, 1129, 1088, 1128, 1128, 1128, 1128,
02887      3155, 3156, 3029, 1129, 3156, 3029, 2292, 1119, 3549, 3549,
02888 
02889      3549, 3549, 3157, 3158, 3159, 3549, 3158, 1093, 1135, 1135,
02890      1135, 1135, 3148, 3149, 2292, 1677, 1135, 1135, 1135, 1135,
02891      1133, 1133, 1133, 1133, 3160, 1136, 3161, 1129, 1676, 3162,
02892      3163, 3168, 1138, 1136, 1688, 1688, 1688, 1688, 3169, 1131,
02893      1138, 1689, 1135, 1135, 1135, 1135, 3170, 3172, 1131, 3173,
02894      1135, 1135, 1135, 1135, 3174, 1132, 1701, 1701, 1701, 1701,
02895      1145, 1145, 1145, 1145, 3549, 2942, 1138, 1136, 1147, 1147,
02896      1147, 1147, 3175, 3177, 1138, 3178, 3549, 3181, 1146, 3184,
02897      3185, 1687, 1131, 3186, 3187, 3189, 1148, 1707, 1707, 1707,
02898      1707, 3190, 1739, 1739, 1739, 1739, 3191, 3193, 3549, 1706,
02899 
02900      1707, 1707, 1706, 3203, 3204, 1151, 1172, 1172, 1172, 1172,
02901      3208, 1152, 3209, 1173, 3549, 3549, 3549, 3549, 1203, 1175,
02902      3210, 3549, 1175, 1152, 1177, 1177, 1177, 1177, 3211, 1153,
02903      1172, 1172, 1172, 1172, 3231, 1738, 3234, 1173, 1741, 1741,
02904      1741, 1741, 1741, 1154, 1186, 1186, 1186, 1186, 1152, 1155,
02905      3235, 1716, 1156, 1157, 3233, 1158, 1159, 1160, 3238, 3239,
02906      3240, 1161, 1162, 1163, 1164, 1165, 2272, 1166, 3245, 1167,
02907      1168, 1169, 1170, 1171, 3246, 3247, 1176, 1201, 1201, 1201,
02908      1201, 1182, 1182, 1182, 1182, 3248, 2292, 3251, 1183, 1751,
02909      1184, 3252, 1751, 3253, 1184, 3549, 3549, 3549, 3549, 3254,
02910 
02911      3258, 1152, 3549, 1203, 3549, 3259, 3261, 3264, 3549, 1743,
02912      1743, 1743, 1743, 1745, 1745, 1745, 1745, 3265, 1184, 1754,
02913      1744, 3156, 1184, 3270, 3156, 1746, 1747, 1760, 1760, 1760,
02914      1760, 1178, 3157, 3158, 1179, 2111, 3158, 1749, 2111, 1750,
02915      1754, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 3271,
02916      3272, 1152, 1763, 3277, 3278, 3203, 1763, 1762, 1762, 1762,
02917      1762, 1762, 1762, 1762, 1762, 2112, 3241, 3242, 1763, 3241,
02918      3104, 3284, 1763, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
02919      1762, 3285, 3243, 3244, 1763, 3243, 2112, 3286, 1763, 1201,
02920      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1776, 1776, 1776,
02921 
02922      1776, 1708, 1201, 1201, 1201, 1201, 1772, 1178, 2068, 1765,
02923      3304, 1589, 3305, 1152, 1589, 1203, 3306, 1152, 1590, 1203,
02924      1591, 3309, 1766, 1767, 1591, 3310, 1152, 3311, 1203, 1768,
02925      1201, 1201, 1201, 1201, 1985, 1771, 1201, 1201, 1201, 1201,
02926      3312, 3313, 3314, 1769, 1773, 1774, 1770, 2897, 1775, 1201,
02927      1201, 1201, 1201, 3318, 1152, 1777, 1203, 2931, 3307, 3321,
02928      1152, 3307, 1203, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
02929      1201, 3308, 3322, 1152, 3308, 1203, 1201, 1201, 1201, 1201,
02930      1201, 1201, 1201, 1201, 3323, 3241, 3242, 1152, 3241, 1203,
02931      3326, 1152, 3327, 1203, 1201, 1201, 1201, 1201, 1778, 3328,
02932 
02933      1152, 3329, 1203, 1780, 1152, 3332, 1203, 1779, 1201, 1201,
02934      1201, 1201, 1201, 1201, 1201, 1201, 3333, 3332, 1152, 1781,
02935      1203, 1242, 1242, 1242, 1242, 3249, 1783, 3334, 3249, 1782,
02936      3243, 3244, 1152, 3243, 1203, 3335, 1152, 3250, 1203, 3349,
02937      3016, 1785, 1985, 1755, 3354, 1243, 1755, 1784, 1201, 1201,
02938      1201, 1201, 1201, 1201, 1201, 1201, 1985, 1201, 1201, 1201,
02939      1201, 1879, 1244, 1244, 1244, 1244, 1787, 1786, 1788, 1245,
02940      2897, 3355, 1152, 1758, 1203, 2897, 1152, 3358, 1203, 3359,
02941      1789, 1152, 3360, 1203, 1790, 1201, 1201, 1201, 1201, 3361,
02942      1201, 1201, 1201, 1201, 1758, 3362, 1201, 1201, 1201, 1201,
02943 
02944      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 3363, 1152,
02945      1791, 1203, 3364, 1793, 1152, 3332, 1203, 3369, 1792, 1794,
02946      1152, 1795, 1203, 3370, 1152, 1985, 1203, 2897, 1152, 1796,
02947      1203, 3383, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
02948      3193, 3384, 1797, 3387, 3388, 1798, 1201, 1201, 1201, 1201,
02949      3329, 1201, 1201, 1201, 1201, 3390, 1152, 1800, 1203, 3391,
02950      1152, 3397, 1203, 1201, 1201, 1201, 1201, 3361, 1799, 3398,
02951      1152, 3399, 1203, 3401, 3402, 1152, 1801, 1203, 1201, 1201,
02952      1201, 1201, 1201, 1201, 1201, 1201, 3408, 1152, 3409, 1203,
02953      1201, 1201, 1201, 1201, 3415, 3399, 1050, 1802, 1803, 1106,
02954 
02955      1109, 1805, 1152, 1804, 1203, 1110, 1152, 1109, 1203, 3249,
02956      1806, 1116, 3249, 1121, 1152, 2115, 1203, 1117, 2115, 1125,
02957      1807, 3250, 1122, 1808, 1117, 1201, 1201, 1201, 1201, 1122,
02958      1124, 1254, 1809, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
02959      1201, 1201, 1201, 1201, 1201, 1758, 1124, 1811, 1810, 1152,
02960      1271, 1203, 1201, 1201, 1201, 1201, 1190, 1152, 1812, 1203,
02961      1302, 1152, 1363, 1203, 1376, 1152, 1758, 1203, 3549, 3549,
02962      3549, 3549, 1190, 1195, 1379, 3549, 1152, 1390, 1203, 1819,
02963      1819, 1819, 1819, 1244, 1244, 1244, 1244, 1813, 1393, 1195,
02964      1245, 1251, 1251, 1251, 1251, 1814, 1821, 1821, 1821, 1821,
02965 
02966      1247, 1815, 1401, 1248, 1408, 1253, 1251, 1251, 1251, 1251,
02967      1425, 1816, 1126, 1431, 1437, 1243, 1817, 1253, 1439, 1126,
02968      1243, 1251, 1251, 1251, 1251, 1258, 1258, 1258, 1258, 1497,
02969      1243, 1257, 1253, 1260, 1260, 1260, 1260, 1499, 1257, 1276,
02970      1259, 1260, 1260, 1260, 1260, 1243, 1276, 1253, 1274, 1274,
02971      1274, 1274, 1274, 1274, 1274, 1274, 1840, 1840, 1840, 1840,
02972      1286, 1286, 1286, 1286, 1533, 1575, 3307, 1275, 1364, 3307,
02973      1585, 1275, 1287, 3350, 1658, 1364, 1247, 1261, 1261, 1261,
02974      1261, 1850, 1850, 1850, 1850, 1290, 1291, 1291, 1290, 1668,
02975      1110, 1292, 1851, 1291, 1291, 1291, 1291, 1294, 3308, 1927,
02976 
02977      1294, 3308, 1927, 1124, 1262, 3352, 1110, 1852, 1857, 1857,
02978      1857, 1857, 1858, 1859, 1860, 1858, 1853, 1853, 1853, 1853,
02979      1853, 1300, 1300, 1300, 1300, 1864, 1864, 1864, 1864, 1929,
02980      1180, 1263, 1865, 1264, 1190, 1303, 1303, 1303, 1303, 1303,
02981      1303, 1303, 1303, 1265, 1266, 1195, 1396, 1267, 1268, 1269,
02982      1929, 1270, 1304, 1396, 3549, 3549, 1304, 3549, 3549, 1306,
02983      1249, 3549, 3549, 1306, 1303, 1303, 1303, 1303, 1303, 1303,
02984      1303, 1303, 1308, 1308, 1308, 1308, 1310, 1310, 1310, 1310,
02985      1378, 1304, 1378, 1311, 1315, 1304, 1477, 1404, 1306, 1378,
02986      1592, 1392, 1306, 1862, 1404, 1392, 1309, 3549, 3549, 3549,
02987 
02988      3549, 1601, 1392, 1432, 3549, 1310, 1310, 1310, 1310, 1392,
02989      1432, 1110, 1311, 1308, 1308, 1308, 1308, 1869, 1869, 1869,
02990      1869, 1313, 1682, 1682, 1314, 1308, 1308, 1308, 1308, 1426,
02991      1426, 1320, 1426, 1867, 1320, 1692, 1426, 1309, 1682, 1438,
02992      1440, 1309, 1873, 1873, 1873, 1873, 1438, 1440, 1888, 1309,
02993      1741, 1741, 1741, 1741, 1741, 1326, 1326, 1326, 1326, 1334,
02994      1334, 1334, 1334, 1356, 1356, 1356, 1356, 1369, 1369, 1369,
02995      1369, 2005, 1425, 1327, 1499, 2041, 2374, 1335, 1380, 1380,
02996      1380, 1380, 1380, 1380, 1380, 1380, 1498, 1889, 1889, 1889,
02997      1889, 1500, 1500, 1498, 1890, 1381, 3291, 1313, 1500, 1381,
02998 
02999      1891, 1380, 1380, 1380, 1380, 1898, 1898, 1898, 1898, 1403,
03000      1403, 1403, 1403, 1411, 1411, 1411, 1411, 2532, 1381, 2531,
03001      1899, 1409, 1409, 1409, 1409, 1411, 1411, 1411, 1411, 1411,
03002      1411, 1411, 1411, 1926, 1926, 1926, 1926, 1413, 1410, 1927,
03003      2530, 1536, 1927, 1928, 1450, 1450, 1450, 1450, 1536, 2529,
03004      2528, 1451, 1928, 1413, 3549, 3549, 3549, 3549, 2292, 1109,
03005      1117, 3549, 1453, 1453, 1453, 1453, 1109, 1117, 1692, 1929,
03006      1453, 1453, 1453, 1453, 1122, 1454, 1453, 1453, 1453, 1453,
03007      1888, 1122, 2526, 1454, 1692, 2005, 2525, 1904, 1126, 1454,
03008      1929, 1458, 1458, 1458, 1458, 1126, 1888, 2524, 1459, 1425,
03009 
03010      1460, 2005, 1759, 1685, 1460, 3549, 3549, 3549, 3549, 1759,
03011      1685, 1499, 3549, 1685, 3549, 1425, 1257, 1276, 3549, 1458,
03012      1458, 1458, 1458, 1257, 1276, 2523, 1459, 1499, 1460, 2522,
03013      2521, 2512, 1460, 1462, 1462, 1462, 1462, 1462, 1462, 1462,
03014      1462, 1462, 1462, 1462, 1462, 1466, 1466, 1466, 1466, 2511,
03015      1935, 1935, 1935, 1935, 2510, 1868, 1467, 1936, 1470, 1470,
03016      1470, 1470, 1868, 1937, 1472, 1472, 1472, 1472, 3020, 1468,
03017      1364, 1473, 3549, 3549, 3549, 3549, 1378, 1364, 1378, 3549,
03018      2509, 1396, 1471, 1464, 3020, 1378, 2508, 1464, 1396, 1404,
03019      1432, 1464, 1472, 1472, 1472, 1472, 1404, 1432, 2272, 1473,
03020 
03021      1470, 1470, 1470, 1470, 1941, 1941, 1941, 1941, 1475, 1438,
03022      3025, 1476, 1470, 1470, 1470, 1470, 1438, 1480, 1480, 1480,
03023      1480, 2506, 2505, 1971, 1471, 2502, 3025, 1440, 1471, 1481,
03024      1942, 1942, 1942, 1942, 1440, 1965, 1471, 1482, 1482, 1482,
03025      1482, 1943, 1489, 1489, 1489, 1489, 1961, 1957, 1483, 1947,
03026      1947, 1947, 1947, 1492, 1492, 1492, 1492, 1955, 1955, 1955,
03027      1955, 1953, 1484, 1959, 1959, 1959, 1959, 1963, 1963, 1963,
03028      1963, 1493, 1967, 1967, 1967, 1967, 1526, 2492, 1940, 1526,
03029      1529, 1529, 1529, 1529, 1475, 1940, 1498, 1485, 1973, 1973,
03030      1973, 1973, 1945, 1498, 2489, 1968, 1968, 1968, 1968, 1968,
03031 
03032      1537, 1537, 1537, 1537, 1541, 1541, 1541, 1541, 1924, 1500,
03033      1500, 1538, 1543, 1543, 1543, 1543, 1500, 1536, 2486, 1542,
03034      1543, 1543, 1543, 1543, 1536, 1539, 1556, 1556, 1556, 1556,
03035      1556, 1556, 1556, 1556, 1571, 1571, 1571, 1571, 2485, 1555,
03036      1995, 1572, 3549, 3549, 3549, 3549, 2484, 1995, 2483, 3549,
03037      1540, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576,
03038      1576, 1576, 1576, 1577, 2480, 1392, 1578, 1577, 2024, 1392,
03039      1578, 1577, 2479, 2476, 1578, 2024, 1392, 2475, 1539, 1988,
03040      1988, 1988, 1988, 1392, 1574, 1576, 1576, 1576, 1576, 2474,
03041      2473, 2472, 3549, 1989, 1989, 1989, 1989, 1577, 1992, 1992,
03042 
03043      1578, 1582, 1582, 1582, 1582, 1992, 1759, 1276, 1583, 3549,
03044      3549, 3549, 3549, 1759, 1276, 1377, 3549, 1990, 1990, 1990,
03045      1990, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 2471,
03046      2468, 2467, 1587, 2466, 2465, 2464, 1587, 1586, 1586, 1586,
03047      1586, 1594, 1594, 1594, 1594, 2044, 1868, 2044, 1587, 1596,
03048      1596, 1596, 1596, 1868, 2044, 1364, 1597, 3549, 3549, 3549,
03049      3549, 2218, 1364, 2218, 3549, 1595, 1596, 1596, 1596, 1596,
03050      2218, 2463, 1871, 1597, 1594, 1594, 1594, 1594, 1996, 1996,
03051      1996, 1996, 1599, 2458, 1940, 1600, 1594, 1594, 1594, 1594,
03052      1637, 1940, 1855, 1637, 1652, 1652, 1652, 1652, 1595, 1685,
03053 
03054      2196, 1930, 1595, 1638, 1930, 2452, 1685, 1651, 1639, 1685,
03055      1595, 1652, 1652, 1652, 1652, 2451, 1621, 1656, 1656, 1656,
03056      1656, 1656, 1656, 1656, 1656, 2022, 2022, 2022, 2022, 2450,
03057      2449, 1932, 1078, 2448, 1992, 1992, 1078, 1659, 1659, 1659,
03058      1659, 1992, 1080, 1081, 2447, 1751, 1080, 1081, 1751, 1063,
03059      1080, 1081, 1932, 2446, 1062, 2445, 2444, 2443, 1599, 1659,
03060      1659, 1659, 1659, 1661, 1661, 1661, 1661, 2442, 2441, 2440,
03061      1662, 3549, 3549, 3549, 3549, 1754, 1062, 1995, 3549, 1664,
03062      1664, 1664, 1664, 1069, 1995, 2439, 1070, 1656, 1656, 1656,
03063      1656, 1666, 1666, 1666, 1666, 2438, 1754, 2379, 1078, 2377,
03064 
03065      2109, 2370, 1102, 1063, 1666, 1666, 1666, 1666, 1101, 1101,
03066      1101, 1101, 1080, 1081, 2365, 1102, 2363, 2362, 2024, 1102,
03067      1674, 1674, 1674, 1674, 1093, 2024, 1276, 1094, 1101, 1101,
03068      1101, 1101, 1088, 1276, 1101, 1101, 1101, 1101, 2361, 1102,
03069      1135, 1135, 1135, 1135, 1088, 1102, 2037, 2037, 2037, 2037,
03070      2038, 2360, 1088, 2039, 2359, 2358, 2357, 1136, 1088, 1069,
03071      1688, 1688, 1688, 1688, 1138, 2356, 2044, 1689, 2044, 1364,
03072      2040, 3549, 3549, 3549, 3549, 2044, 1364, 2355, 3549, 1135,
03073      1135, 1135, 1135, 2045, 2045, 2045, 2045, 2051, 1426, 1426,
03074      1689, 1426, 2032, 2354, 2543, 1426, 2052, 2052, 2052, 2052,
03075 
03076      1093, 2543, 2115, 1138, 2351, 2115, 2031, 2350, 2042, 2349,
03077      2056, 2056, 2056, 2056, 1760, 1760, 1760, 1760, 1178, 2348,
03078      2347, 1179, 1739, 1739, 1739, 1739, 2038, 2055, 2056, 2056,
03079      2055, 2346, 1758, 1151, 1152, 2345, 2344, 2343, 1152, 1739,
03080      1739, 1739, 1739, 1743, 1743, 1743, 1743, 2096, 1203, 2342,
03081      2096, 1152, 1184, 1758, 1744, 2341, 1184, 1153, 2340, 2339,
03082      2338, 2101, 2101, 2101, 2101, 1203, 1741, 1741, 1741, 1741,
03083      1741, 1154, 2102, 1776, 1776, 1776, 1776, 1155, 2337, 1276,
03084      1156, 1157, 2336, 1158, 1159, 1160, 1276, 2335, 2334, 1161,
03085      1162, 1163, 1164, 1165, 1178, 1166, 2333, 1167, 1168, 1169,
03086 
03087      1170, 1171, 2098, 2098, 2098, 2098, 3027, 2034, 2332, 2099,
03088      2331, 1184, 2034, 3027, 2034, 1184, 1745, 1745, 1745, 1745,
03089      2103, 2103, 2103, 2103, 2330, 2329, 2328, 2104, 1746, 1747,
03090      2325, 1777, 2105, 1745, 1745, 1745, 1745, 2034, 2117, 2324,
03091      1749, 2117, 2034, 2323, 2034, 1746, 1747, 1762, 1762, 1762,
03092      1762, 2118, 1819, 1819, 1819, 1819, 2320, 1749, 1763, 1750,
03093      1760, 1760, 1760, 1760, 1178, 2319, 3143, 1179, 2119, 1762,
03094      1762, 1762, 1762, 3143, 1762, 1762, 1762, 1762, 1253, 2218,
03095      1763, 2218, 1699, 2316, 1152, 1763, 2315, 2314, 2218, 2119,
03096      1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 2313, 1136,
03097 
03098      2310, 1763, 1111, 2035, 2301, 1763, 1762, 1762, 1762, 1762,
03099      1762, 1762, 1762, 1762, 2300, 1426, 1426, 1763, 1426, 2014,
03100      2297, 1763, 1426, 2296, 1762, 1762, 1762, 1762, 2122, 2295,
03101      1762, 1762, 1762, 1762, 2294, 1763, 1201, 1201, 1201, 1201,
03102      1178, 1763, 2293, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03103      1201, 2292, 1821, 1821, 1821, 1821, 1247, 3145, 2123, 1248,
03104      1152, 2291, 1203, 3379, 3145, 2288, 2124, 1152, 2130, 1203,
03105      3379, 1152, 2126, 1203, 2285, 2284, 1243, 2127, 2125, 2128,
03106      1201, 1201, 1201, 1201, 2283, 2132, 2282, 2281, 2131, 1201,
03107      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1993, 3380, 2129,
03108 
03109      1201, 1201, 1201, 1201, 1152, 3380, 1203, 1201, 1201, 1201,
03110      1201, 1426, 1426, 1152, 1426, 1203, 2280, 1152, 1426, 1203,
03111      1201, 1201, 1201, 1201, 1152, 2278, 1203, 1840, 1840, 1840,
03112      1840, 1152, 1247, 1203, 1201, 1201, 1201, 1201, 2277, 1201,
03113      1201, 1201, 1201, 2372, 1152, 2276, 1203, 2372, 1201, 1201,
03114      1201, 1201, 2372, 2133, 1201, 1201, 1201, 1201, 1152, 2372,
03115      1203, 2134, 2138, 1152, 2135, 1203, 1201, 1201, 1201, 1201,
03116      2275, 2136, 1152, 2274, 1203, 2273, 2272, 2271, 1152, 2270,
03117      1203, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 2269,
03118      1152, 2137, 1203, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03119 
03120      1201, 1971, 2139, 1971, 2265, 1152, 2140, 1203, 1965, 1152,
03121      1965, 1203, 1961, 2141, 1961, 1426, 1426, 1152, 1426, 1203,
03122      2142, 1152, 1426, 1203, 2143, 1957, 1201, 1201, 1201, 1201,
03123      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1957, 1201,
03124      1201, 1201, 1201, 2145, 1953, 2144, 1819, 1819, 1819, 1819,
03125      1152, 2146, 1203, 1953, 1152, 2147, 1203, 2372, 1152, 2251,
03126      1203, 2372, 2250, 1152, 1945, 1203, 2372, 1201, 1201, 1201,
03127      1201, 1945, 1253, 2372, 1201, 1201, 1201, 1201, 1464, 1201,
03128      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1934, 2120, 2114,
03129      2148, 1152, 1924, 1203, 1924, 2238, 2150, 2151, 1152, 2237,
03130 
03131      1203, 2236, 2149, 1152, 2235, 1203, 2234, 1152, 1427, 1203,
03132      1201, 1201, 1201, 1201, 1915, 1201, 1201, 1201, 1201, 1201,
03133      1201, 1201, 1201, 2152, 1201, 1201, 1201, 1201, 2188, 2188,
03134      2188, 2188, 2231, 2230, 1152, 2229, 1203, 2228, 2227, 1152,
03135      2154, 1203, 2226, 1152, 2153, 1203, 2225, 2224, 1152, 2223,
03136      1203, 1201, 1201, 1201, 1201, 2021, 2155, 1201, 1201, 1201,
03137      2162, 2175, 2021, 2221, 2156, 1201, 1201, 1201, 1201, 2193,
03138      2193, 2193, 2193, 2157, 2220, 1152, 1377, 1203, 2217, 2216,
03139      2215, 1152, 2214, 1203, 1201, 1201, 1201, 1201, 2213, 1152,
03140      2212, 1203, 2159, 2158, 1880, 2211, 2160, 1201, 1201, 1201,
03141 
03142      1201, 1201, 1201, 1201, 1201, 1876, 1871, 1871, 1152, 2202,
03143      1203, 1201, 1201, 1201, 1201, 2161, 2201, 1201, 1201, 1201,
03144      1201, 1152, 1855, 1203, 1855, 1152, 2196, 1203, 1201, 1201,
03145      1201, 1201, 2194, 2192, 2191, 1152, 2190, 1203, 2163, 2189,
03146      2187, 1152, 2186, 1203, 1201, 1201, 1201, 1201, 2871, 2118,
03147      2164, 2871, 1152, 2185, 1203, 2871, 1201, 1201, 1201, 1201,
03148      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1152, 2165,
03149      1203, 2871, 2184, 1751, 2166, 2168, 1751, 2183, 2182, 2167,
03150      1152, 2181, 1203, 2180, 1152, 2179, 1203, 2178, 1152, 2111,
03151      1203, 2115, 2111, 2177, 2115, 2169, 2199, 2174, 1719, 2021,
03152 
03153      2121, 2117, 2109, 1754, 2117, 2200, 2200, 2200, 2200, 2115,
03154      2170, 2107, 2115, 2097, 2118, 2175, 2095, 2021, 2173, 2112,
03155      2094, 1758, 2093, 2092, 1754, 2091, 2088, 2176, 2087, 2171,
03156      2086, 2119, 2172, 1850, 1850, 1850, 1850, 2083, 3351, 1758,
03157      2112, 3351, 1758, 2197, 1851, 3351, 2197, 1858, 1859, 1860,
03158      1858, 2082, 2119, 1860, 1859, 1860, 1860, 2081, 2080, 1852,
03159      1758, 3351, 1853, 1853, 1853, 1853, 1853, 1864, 1864, 1864,
03160      1864, 2079, 2078, 2071, 1865, 3549, 3549, 3549, 3549, 2070,
03161      2069, 2066, 3549, 2203, 2203, 2203, 2203, 1303, 1303, 1303,
03162      1303, 1869, 1869, 1869, 1869, 1313, 2065, 2064, 1314, 2063,
03163 
03164      1304, 2062, 3353, 2059, 1304, 3353, 1699, 1306, 2207, 3353,
03165      1699, 1306, 2049, 2048, 2047, 1309, 2046, 2208, 2208, 2208,
03166      2208, 1889, 1889, 1889, 1889, 3353, 1136, 1686, 1890, 3549,
03167      3549, 3549, 3549, 2035, 1891, 2033, 3549, 1380, 1380, 1380,
03168      1380, 2030, 3549, 2029, 2021, 2205, 1898, 1898, 1898, 1898,
03169      2222, 2222, 2222, 2222, 1381, 2240, 1927, 1930, 2019, 1927,
03170      1930, 1899, 2015, 2014, 2241, 2241, 2241, 2241, 2013, 2012,
03171      2011, 1313, 1935, 1935, 1935, 1935, 2010, 2009, 2007, 1936,
03172      2006, 2004, 2021, 2021, 2003, 1937, 1929, 1932, 3549, 3549,
03173      3549, 3549, 1627, 1614, 1614, 3549, 2242, 2242, 2242, 2242,
03174 
03175      2001, 3549, 2243, 2243, 2243, 2243, 1614, 1929, 1932, 1937,
03176      1941, 1941, 1941, 1941, 1475, 2000, 1999, 1476, 1942, 1942,
03177      1942, 1942, 1988, 1988, 1988, 1988, 2245, 2247, 1998, 1943,
03178      1612, 2253, 1610, 1602, 1471, 2256, 2248, 2248, 2248, 2248,
03179      2254, 2254, 2254, 2254, 2257, 2257, 2257, 2257, 2259, 1994,
03180      2264, 1993, 2262, 2264, 1581, 1581, 2267, 2260, 2260, 2260,
03181      2260, 2263, 2263, 2263, 2263, 2268, 2268, 2268, 2268, 1968,
03182      1968, 1968, 1968, 1968, 1576, 1576, 1576, 1576, 1989, 1989,
03183      1989, 1989, 1990, 1990, 1990, 1990, 1577, 1986, 1984, 1578,
03184      1475, 1990, 1990, 1990, 1990, 1996, 1996, 1996, 1996, 1599,
03185 
03186      1983, 1982, 1600, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
03187      2022, 1101, 1101, 1101, 1101, 1981, 1980, 1979, 1078, 1595,
03188      1977, 1976, 1102, 2305, 2305, 2305, 2305, 1063, 1080, 1081,
03189      2306, 1063, 1080, 1081, 1975, 1088, 2308, 2308, 2308, 2308,
03190      1135, 1135, 1135, 1135, 2045, 2045, 2045, 2045, 1974, 1971,
03191      1969, 1689, 2101, 2101, 2101, 2101, 1699, 2104, 1965, 1961,
03192      2040, 1957, 2105, 2102, 1138, 2318, 2318, 2318, 2318, 2371,
03193      2371, 2371, 2371, 2371, 1953, 1599, 2289, 2289, 2289, 2289,
03194      2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
03195      2289, 2289, 2289, 2289, 2289, 2289, 2290, 2290, 2290, 2290,
03196 
03197      2290, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2290, 2290,
03198      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
03199      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2289, 2289, 2289,
03200      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
03201      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
03202      2290, 2290, 2290, 2290, 2290, 2289, 2289, 2289, 1101, 1101,
03203      1101, 1101, 1101, 1101, 1101, 1101, 1951, 1501, 1501, 1102,
03204      1945, 1487, 1478, 1102, 2037, 2037, 2037, 2037, 2038, 1939,
03205      1934, 2039, 1088, 1924, 1922, 1921, 1088, 2308, 2308, 2308,
03206      2308, 2038, 1918, 1915, 2309, 1913, 1912, 1909, 2040, 1135,
03207 
03208      1135, 1135, 1135, 2322, 2322, 2322, 2322, 1762, 1762, 1762,
03209      1762, 2040, 2098, 2098, 2098, 2098, 1136, 1908, 1763, 2099,
03210      2303, 1184, 1907, 1138, 1906, 1184, 1905, 1152, 2302, 3549,
03211      3549, 3549, 3549, 1389, 1897, 1896, 3549, 1895, 3549, 1894,
03212      1893, 1377, 3549, 1887, 1762, 1762, 1762, 1762, 1377, 2366,
03213      2366, 2366, 2366, 1886, 2038, 1763, 1201, 1201, 1201, 1201,
03214      1885, 1884, 1883, 2312, 1882, 2382, 1881, 2038, 2321, 2322,
03215      2322, 2321, 1353, 2368, 1151, 2369, 2103, 2103, 2103, 2103,
03216      1152, 1353, 1203, 2104, 3549, 3549, 3549, 3549, 2105, 1353,
03217      1349, 3549, 1152, 1880, 1341, 2388, 3549, 1341, 1153, 1876,
03218 
03219      2098, 2098, 2098, 2098, 1871, 1316, 1304, 2373, 1863, 1184,
03220      1855, 1849, 1154, 1184, 1848, 2380, 1847, 1846, 1155, 1845,
03221      1844, 1156, 1157, 1843, 1158, 1159, 1160, 1842, 1841, 1834,
03222      1161, 1162, 1163, 1164, 1165, 1831, 1166, 1830, 1167, 1168,
03223      1169, 1170, 1171, 2375, 2375, 2375, 2375, 1762, 1762, 1762,
03224      1762, 1762, 1762, 1762, 1762, 1746, 1829, 1828, 1763, 1827,
03225      1826, 1250, 1763, 1762, 1762, 1762, 1762, 1749, 1762, 1762,
03226      1762, 1762, 1818, 1206, 1763, 1762, 1762, 1762, 1762, 1763,
03227      1762, 1762, 1762, 1762, 1772, 1761, 1763, 2188, 2188, 2188,
03228      2188, 1763, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03229 
03230      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1742, 2513,
03231      2514, 2381, 1735, 2383, 2515, 1734, 1152, 2516, 1203, 1731,
03232      1152, 1728, 1203, 1724, 1152, 1723, 1203, 2517, 1152, 2518,
03233      1203, 1722, 1718, 2390, 2389, 1715, 1714, 2384, 1206, 2386,
03234      2385, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03235      1201, 1201, 1201, 2387, 1713, 2391, 1201, 1201, 1201, 1201,
03236      1708, 1201, 1201, 1201, 1201, 1152, 1699, 1203, 1697, 1152,
03237      1696, 1203, 1693, 1152, 2392, 1203, 1201, 1201, 1201, 1201,
03238      1152, 1691, 1203, 1686, 1684, 1152, 1681, 1203, 1680, 2402,
03239      2402, 2402, 2402, 1201, 1201, 1201, 1201, 1679, 1675, 2394,
03240 
03241      1152, 1099, 1203, 2193, 2193, 2193, 2193, 2188, 2188, 2188,
03242      2188, 1076, 2393, 1152, 1058, 1203, 1647, 1152, 1644, 1203,
03243      1614, 2395, 2396, 2397, 2398, 2399, 2399, 2399, 2399, 2398,
03244      2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398,
03245      2398, 2398, 2398, 2398, 1201, 1201, 1201, 1201, 2404, 2400,
03246      1614, 2401, 2398, 2398, 2398, 2398, 1201, 1201, 1201, 1201,
03247      1614, 2405, 1201, 1201, 1201, 1201, 1614, 2403, 1152, 1612,
03248      1203, 1201, 1201, 1201, 1201, 2398, 2398, 2398, 1611, 1610,
03249      1152, 1602, 1203, 1593, 1581, 1570, 1152, 1550, 1203, 1201,
03250      1201, 1201, 1201, 1535, 1532, 1152, 1531, 1203, 1201, 1201,
03251 
03252      1201, 1201, 1530, 2398, 2398, 2398, 2406, 1201, 1201, 1201,
03253      1201, 1525, 1520, 1152, 1517, 1203, 1201, 1201, 1201, 1201,
03254      1512, 1506, 1152, 1502, 1203, 1501, 2407, 1496, 2408, 1491,
03255      1487, 1152, 1478, 1203, 1201, 1201, 1201, 1201, 1465, 1449,
03256      1152, 2409, 1203, 1201, 1201, 1201, 1201, 1448, 1201, 1201,
03257      1201, 1201, 1201, 1201, 1201, 1201, 1447, 1446, 1152, 1443,
03258      1203, 1442, 2410, 1436, 1435, 2411, 1434, 1152, 1433, 1203,
03259      1423, 1422, 1152, 2412, 1203, 1421, 1152, 1420, 1203, 1201,
03260      1201, 1201, 1201, 1419, 1418, 1398, 2413, 1201, 1201, 1201,
03261      1201, 1389, 1387, 1201, 1201, 1201, 1201, 2415, 1384, 1383,
03262 
03263      1377, 2414, 1370, 1152, 1367, 1203, 1201, 1201, 1201, 1201,
03264      1366, 1152, 1365, 1203, 1353, 2416, 2417, 1152, 1353, 1203,
03265      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1353, 1353,
03266      1152, 1349, 1203, 1341, 2418, 1201, 1201, 1201, 1201, 1201,
03267      1201, 1201, 1201, 1336, 1152, 1325, 1203, 2420, 1152, 1322,
03268      1203, 1201, 1201, 1201, 1201, 1316, 1299, 1296, 2419, 1152,
03269      1288, 1203, 1285, 1152, 2421, 1203, 1201, 1201, 1201, 1201,
03270      1201, 1201, 1201, 1201, 1282, 1152, 1281, 1203, 2422, 2193,
03271      2193, 2193, 2193, 1280, 1279, 1278, 2423, 1277, 1250, 1241,
03272      1152, 2424, 1203, 1206, 1152, 1193, 1203, 1201, 1201, 1201,
03273 
03274      1201, 2426, 1192, 1191, 1189, 2427, 2425, 1201, 1201, 1201,
03275      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1144,
03276      1142, 1152, 1134, 1203, 1123, 1100, 2429, 1099, 2428, 1076,
03277      3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203, 3549, 1152,
03278      3549, 1203, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03279      1201, 1201, 1201, 1201, 2453, 2453, 2453, 2453, 3549, 3549,
03280      3549, 2430, 3549, 3549, 2431, 2454, 1152, 3549, 1203, 1855,
03281      1152, 3549, 1203, 2432, 1152, 2434, 1203, 2433, 2457, 2457,
03282      2457, 2457, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
03283      1303, 1303, 1303, 1303, 1380, 1380, 1380, 1380, 3549, 1304,
03284 
03285      2435, 3549, 3549, 1304, 3549, 3549, 1306, 1304, 3549, 3549,
03286      1306, 1381, 3549, 3549, 1306, 1871, 3549, 3549, 3549, 2436,
03287      3549, 3549, 2437, 1924, 2462, 2462, 2462, 2462, 2222, 2222,
03288      2222, 2222, 2488, 2488, 2488, 2488, 2242, 2242, 2242, 2242,
03289      2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 1945, 1937,
03290      2666, 2666, 2666, 2666, 3549, 3549, 3549, 2491, 2491, 2491,
03291      2491, 2460, 1953, 3549, 2245, 3549, 1957, 3549, 2245, 3549,
03292      1961, 2494, 2494, 2494, 2494, 2496, 2496, 2496, 2496, 2498,
03293      2498, 2498, 2498, 1965, 3549, 3549, 3549, 1971, 2676, 2676,
03294      2676, 2676, 2500, 2500, 2500, 2500, 2504, 2504, 2504, 2504,
03295 
03296      2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
03297      2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
03298      2290, 2290, 2290, 2290, 2290, 2289, 2289, 2289, 2289, 2289,
03299      2289, 2289, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
03300      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
03301      2290, 2289, 2289, 2289, 2290, 2290, 2290, 2290, 2290, 2290,
03302      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
03303      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2289,
03304      2289, 2289, 2535, 2536, 3549, 3549, 3549, 2537, 3549, 3549,
03305      2538, 3549, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
03306 
03307      2539, 3549, 2540, 1102, 3549, 3549, 3549, 1102, 2305, 2305,
03308      2305, 2305, 3549, 3549, 3549, 2306, 1088, 3549, 3549, 3549,
03309      1088, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
03310      2308, 2308, 2308, 2308, 2544, 2544, 2544, 2544, 2038, 3549,
03311      3549, 2309, 2308, 2308, 2308, 2308, 2541, 1135, 1135, 1135,
03312      1135, 3549, 3549, 2542, 2040, 3549, 3549, 3549, 2040, 2551,
03313      2551, 2551, 2551, 3549, 1136, 3549, 2040, 2366, 2366, 2366,
03314      2366, 1138, 2566, 2566, 2566, 2566, 2366, 2366, 2366, 2366,
03315      2104, 3549, 3549, 1152, 3549, 2105, 2375, 2375, 2375, 2375,
03316      3549, 2368, 2371, 2371, 2371, 2371, 2371, 3549, 1746, 3549,
03317 
03318      2368, 3549, 2369, 3549, 3549, 2545, 1303, 1303, 1303, 1303,
03319      1749, 3549, 1750, 3549, 2038, 2550, 2551, 2551, 2550, 2104,
03320      3549, 1151, 3549, 1304, 2105, 2375, 2375, 2375, 2375, 3549,
03321      1306, 2371, 2371, 2371, 2371, 2371, 3549, 1746, 3549, 1152,
03322      1762, 1762, 1762, 1762, 3549, 1153, 3549, 3549, 3549, 1749,
03323      2403, 1763, 1762, 1762, 1762, 1762, 3549, 3549, 3549, 1154,
03324      3549, 3549, 3549, 1763, 3549, 1155, 3549, 3549, 1156, 1157,
03325      3549, 1158, 1159, 1160, 2675, 3549, 3549, 1161, 1162, 1163,
03326      1164, 1165, 3549, 1166, 3549, 1167, 1168, 1169, 1170, 1171,
03327      1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 3549, 3549,
03328 
03329      3549, 1763, 3549, 3549, 3549, 1763, 1762, 1762, 1762, 1762,
03330      2600, 2599, 1762, 1762, 1762, 1762, 3549, 1763, 1762, 1762,
03331      1762, 1762, 3549, 1763, 1762, 1762, 1762, 1762, 3549, 1763,
03332      1201, 1201, 1201, 1201, 3549, 1763, 3549, 3549, 3549, 3549,
03333      2735, 2735, 2735, 2735, 1201, 1201, 1201, 1201, 1201, 1201,
03334      1201, 1201, 3549, 3549, 1152, 3549, 1203, 3549, 3549, 3549,
03335      2601, 2602, 3549, 3549, 2604, 2608, 2603, 3549, 1152, 3549,
03336      1203, 3549, 1152, 2605, 1203, 1201, 1201, 1201, 1201, 3549,
03337      2606, 1201, 1201, 1201, 1201, 3549, 2607, 2609, 3549, 2610,
03338      2613, 2613, 2613, 2613, 1201, 1201, 1201, 1201, 2677, 1152,
03339 
03340      3549, 1203, 3549, 3549, 3549, 1152, 3549, 1203, 2616, 2616,
03341      2616, 2616, 3549, 3549, 1152, 3549, 1203, 3549, 1152, 3549,
03342      1203, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 3549,
03343      3549, 3549, 1152, 3549, 1203, 2612, 3549, 3549, 3549, 2611,
03344      1201, 1201, 1201, 1201, 3549, 1152, 3549, 1203, 3549, 1152,
03345      3549, 1203, 2402, 2402, 2402, 2402, 2621, 2621, 2621, 2621,
03346      1201, 1201, 1201, 1201, 1152, 2615, 1203, 3549, 2614, 1201,
03347      1201, 1201, 1201, 3549, 3549, 3549, 1152, 3549, 1203, 2617,
03348      1152, 3549, 1203, 3549, 1152, 3549, 1203, 1201, 1201, 1201,
03349      1201, 2618, 3549, 1152, 3549, 1203, 3549, 3549, 1201, 1201,
03350 
03351      1201, 1201, 1201, 1201, 1201, 1201, 3549, 3549, 2619, 3549,
03352      3549, 1152, 3549, 1203, 1201, 1201, 1201, 1201, 1201, 1201,
03353      1201, 1201, 1152, 2620, 1203, 2623, 1152, 3549, 1203, 3549,
03354      3549, 3549, 2622, 1201, 1201, 1201, 1201, 3549, 1152, 3549,
03355      1203, 3549, 1152, 3549, 1203, 3549, 1201, 1201, 1201, 1201,
03356      3549, 3549, 3549, 2624, 3549, 2625, 3549, 1152, 3549, 1203,
03357      2737, 2738, 2738, 2737, 2626, 3549, 1201, 1201, 1201, 1201,
03358      1152, 2627, 1203, 1201, 1201, 1201, 1201, 3549, 1201, 1201,
03359      1201, 1201, 3549, 3549, 2628, 1201, 1201, 1201, 1201, 3549,
03360      1152, 2629, 1203, 1201, 1201, 1201, 1201, 1152, 3549, 1203,
03361 
03362      3549, 3549, 1152, 3549, 1203, 2630, 3549, 3549, 3549, 1152,
03363      3549, 1203, 2631, 1201, 1201, 1201, 1201, 1152, 3549, 1203,
03364      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03365      1201, 1201, 3549, 3549, 2632, 2634, 3549, 1152, 3549, 1203,
03366      3549, 3549, 3549, 2633, 1152, 3549, 1203, 3549, 1152, 2636,
03367      1203, 2635, 1152, 3549, 1203, 3549, 1201, 1201, 1201, 1201,
03368      3549, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03369      1201, 1201, 1201, 1201, 1201, 1201, 1201, 3549, 3549, 3549,
03370      1152, 2637, 1203, 3549, 2640, 1152, 3549, 1203, 3549, 1152,
03371      3549, 1203, 2638, 1152, 2639, 1203, 3549, 1152, 3549, 1203,
03372 
03373      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 2651, 2651,
03374      2651, 2651, 2641, 1201, 1201, 1201, 1201, 2653, 2653, 2653,
03375      2653, 3549, 3549, 3549, 1152, 2646, 1203, 3549, 1152, 2645,
03376      1203, 2644, 1152, 3549, 1203, 3549, 3549, 1152, 3549, 1203,
03377      3549, 1152, 3549, 1203, 3549, 2647, 1201, 1201, 1201, 2654,
03378      1201, 1201, 1201, 1201, 2648, 1201, 1201, 1201, 1201, 3549,
03379      3549, 3549, 2649, 2752, 2752, 2752, 2752, 2650, 3549, 3549,
03380      1152, 3549, 1203, 3549, 1152, 3549, 1203, 3549, 3549, 1152,
03381      3549, 1203, 2670, 2670, 2670, 2670, 2652, 2453, 2453, 2453,
03382      2453, 3549, 3549, 2671, 1935, 1935, 1935, 1935, 2454, 3549,
03383 
03384      3549, 1936, 3549, 3549, 2656, 3549, 3549, 1937, 1101, 1101,
03385      1101, 1101, 2729, 2729, 2729, 2729, 3549, 2657, 2655, 1102,
03386      3549, 3549, 3549, 1102, 2544, 2544, 2544, 2544, 2038, 3549,
03387      3549, 2309, 1088, 3549, 3549, 3549, 2730, 1135, 1135, 1135,
03388      1135, 2738, 2738, 2738, 2738, 3549, 3549, 3549, 2040, 2750,
03389      2750, 2750, 2750, 2672, 1136, 2566, 2566, 2566, 2566, 3549,
03390      3549, 1138, 3549, 3549, 2728, 1152, 2754, 2754, 2754, 2754,
03391      2777, 2777, 2777, 2777, 2098, 2098, 2098, 2098, 3549, 3549,
03392      3549, 2099, 3549, 1184, 3549, 3549, 3549, 1184, 3549, 3549,
03393      2731, 2366, 2366, 2366, 2366, 2375, 2375, 2375, 2375, 3549,
03394 
03395      3549, 3549, 2732, 3549, 2038, 3549, 3549, 1746, 3549, 3549,
03396      3549, 2619, 3549, 3549, 3549, 2368, 3549, 3549, 3549, 1749,
03397      3549, 1750, 1762, 1762, 1762, 1762, 2620, 2614, 1762, 1762,
03398      1762, 1762, 3549, 1763, 3549, 1762, 1762, 1762, 1762, 1763,
03399      1762, 1762, 1762, 1762, 3549, 3549, 1763, 3549, 2652, 3549,
03400      3549, 1763, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
03401      3549, 3549, 3549, 1763, 3549, 3549, 3549, 1763, 3549, 1762,
03402      1762, 1762, 1762, 1762, 1762, 1762, 1762, 3549, 3549, 3549,
03403      1763, 3549, 3549, 3549, 1763, 1762, 1762, 1762, 1762, 1201,
03404      1201, 1201, 1201, 2783, 2784, 3549, 1763, 1201, 1201, 1201,
03405 
03406      1201, 3549, 1201, 1201, 1201, 1201, 2785, 2666, 2666, 2666,
03407      2666, 3549, 2787, 1152, 3549, 1203, 1201, 1201, 1201, 1201,
03408      3549, 1152, 2791, 1203, 2786, 2788, 1152, 3549, 1203, 2789,
03409      3549, 3549, 2792, 2793, 1201, 1201, 1201, 1201, 3549, 3549,
03410      1152, 3549, 1203, 2613, 2613, 2613, 2613, 1201, 1201, 1201,
03411      1201, 2616, 2616, 2616, 2616, 2790, 3549, 3549, 1152, 3549,
03412      1203, 2799, 2799, 2799, 2799, 3549, 3549, 1152, 3549, 1203,
03413      3549, 1152, 2800, 1203, 3549, 1152, 3549, 1203, 2794, 1201,
03414      1201, 1201, 1201, 3549, 3549, 1152, 3549, 1203, 3549, 3549,
03415      2795, 2621, 2621, 2621, 2621, 1201, 1201, 1201, 1201, 3549,
03416 
03417      3549, 1155, 3549, 1152, 3549, 1203, 3549, 2797, 3549, 1777,
03418      1201, 1201, 1201, 1201, 3549, 1152, 3549, 1203, 2796, 1152,
03419      3549, 1203, 2798, 3549, 1170, 3549, 2806, 2806, 2806, 2806,
03420      3549, 2807, 3549, 3549, 1152, 3549, 1203, 2808, 2808, 2808,
03421      2808, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 3549,
03422      1152, 2801, 1203, 1201, 1201, 1201, 1201, 2804, 3549, 3549,
03423      3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203, 3549, 1152,
03424      3549, 1203, 2805, 2666, 2666, 2666, 2666, 1152, 3549, 1203,
03425      2812, 2812, 2812, 2812, 1201, 1201, 1201, 1201, 1201, 1201,
03426      1201, 1201, 2815, 2815, 2815, 2815, 3549, 2809, 1201, 1201,
03427 
03428      1201, 1201, 3549, 2810, 1152, 3549, 1203, 3549, 1152, 3549,
03429      1203, 3549, 1152, 3549, 1203, 3549, 2816, 2811, 1203, 3549,
03430      3549, 3549, 1152, 3549, 1203, 1201, 1201, 1201, 1201, 2819,
03431      2819, 2819, 2819, 1201, 1201, 1201, 1201, 3549, 2813, 3549,
03432      3549, 3549, 2814, 1201, 1201, 1201, 1201, 3549, 3549, 1152,
03433      3549, 1203, 3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203,
03434      1201, 1201, 1201, 1201, 3549, 3549, 3549, 1152, 3549, 1203,
03435      2854, 2854, 2854, 2854, 3549, 2817, 1201, 1201, 1201, 1201,
03436      1201, 1201, 1201, 1201, 1152, 3549, 1203, 2825, 2825, 2825,
03437      2825, 2820, 2852, 2852, 2852, 2852, 2818, 2821, 3549, 3549,
03438 
03439      1152, 3549, 1203, 2853, 1152, 3549, 1203, 2855, 2855, 2855,
03440      2855, 2826, 3549, 1203, 1201, 1201, 1201, 1201, 2822, 1201,
03441      1201, 1201, 1201, 2833, 2833, 2833, 2833, 2834, 2834, 2834,
03442      2834, 2827, 3549, 2670, 2670, 2670, 2670, 3549, 1152, 3549,
03443      1203, 3549, 3549, 1152, 2671, 1203, 3549, 1152, 2823, 1203,
03444      3549, 1152, 2824, 1203, 1201, 1201, 1201, 1201, 2828, 1201,
03445      1201, 1201, 1201, 1201, 1201, 1201, 1201, 2651, 2651, 2651,
03446      2651, 3549, 2831, 2653, 2653, 2653, 2653, 3549, 1152, 3549,
03447      1203, 3549, 3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203,
03448      2832, 1152, 3549, 1203, 3549, 3549, 3549, 1152, 3549, 1203,
03449 
03450      3549, 1201, 1201, 1201, 1201, 2835, 1201, 1201, 1201, 1201,
03451      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 2837, 3549,
03452      2670, 2670, 2670, 2670, 3549, 1152, 2836, 1203, 2838, 3549,
03453      1152, 2671, 1203, 3549, 1152, 3549, 1203, 3549, 1152, 3549,
03454      1203, 1303, 1303, 1303, 1303, 3549, 3549, 3549, 3549, 1101,
03455      1101, 1101, 1101, 2729, 2729, 2729, 2729, 2839, 1304, 3549,
03456      1102, 3549, 3549, 3549, 1102, 1306, 3549, 3549, 1135, 1135,
03457      1135, 1135, 2840, 1088, 2842, 3549, 3549, 2730, 2843, 2903,
03458      2903, 2903, 2903, 2841, 3549, 1136, 2735, 2735, 2735, 2735,
03459      3549, 2848, 1138, 3549, 3549, 2858, 2905, 2905, 2905, 2905,
03460 
03461      2906, 2907, 2907, 2906, 2907, 2907, 2907, 2907, 3549, 2859,
03462      2750, 2750, 2750, 2750, 2752, 2752, 2752, 2752, 3549, 3549,
03463      3549, 2542, 2754, 2754, 2754, 2754, 2902, 3549, 1152, 3549,
03464      3549, 2731, 2923, 2923, 2923, 2923, 2925, 2925, 2925, 2925,
03465      3549, 2928, 2928, 2928, 2928, 2932, 2932, 2932, 2932, 2938,
03466      2938, 2938, 2938, 2943, 2943, 2943, 2943, 2944, 2944, 2944,
03467      2944, 3549, 3549, 3549, 1155, 2929, 2777, 2777, 2777, 2777,
03468      2797, 3549, 1777, 2939, 3549, 1762, 1762, 1762, 1762, 3549,
03469      1762, 1762, 1762, 1762, 3549, 2798, 1763, 1170, 3549, 3549,
03470      3549, 1763, 3549, 2940, 1762, 1762, 1762, 1762, 1762, 1762,
03471 
03472      1762, 1762, 3549, 3549, 3549, 1763, 3549, 3549, 3549, 1763,
03473      1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 3549, 3549,
03474      2941, 1763, 3549, 3549, 3549, 1763, 2956, 2956, 2956, 2956,
03475      3549, 3549, 3549, 2950, 2951, 2835, 3549, 1763, 1762, 1762,
03476      1762, 1762, 1201, 1201, 1201, 1201, 3549, 3549, 2952, 1763,
03477      1201, 1201, 1201, 1201, 3549, 3549, 2953, 3549, 3549, 1201,
03478      1201, 1201, 1201, 3549, 3549, 3549, 1152, 3549, 1203, 3549,
03479      2982, 2982, 2982, 2982, 1152, 3549, 1203, 1201, 1201, 1201,
03480      1201, 2955, 2954, 1152, 3549, 1203, 3549, 3549, 3549, 2958,
03481      1201, 1201, 1201, 1201, 1708, 2959, 2957, 3549, 3549, 2960,
03482 
03483      3549, 1152, 3549, 1203, 2963, 2963, 2963, 2963, 2799, 2799,
03484      2799, 2799, 3549, 3549, 1152, 3549, 1203, 3549, 3549, 2800,
03485      3549, 2965, 2965, 2965, 2965, 3549, 2966, 3549, 1152, 3549,
03486      1203, 2966, 1152, 3549, 1203, 1201, 1201, 1201, 1201, 1201,
03487      1201, 1201, 1201, 1201, 1201, 1201, 1201, 3549, 2961, 2806,
03488      2806, 2806, 2806, 3549, 2807, 2808, 2808, 2808, 2808, 1152,
03489      3549, 1203, 2962, 1152, 3549, 1203, 3549, 1152, 3549, 1203,
03490      3549, 3549, 3549, 1152, 3549, 1203, 3549, 3549, 3549, 1152,
03491      3549, 1203, 3549, 2976, 2976, 2976, 2976, 3549, 1201, 1201,
03492      1201, 1201, 3549, 2967, 2812, 2812, 2812, 2812, 3549, 1201,
03493 
03494      1201, 1201, 1201, 3549, 3549, 3549, 2970, 1152, 3549, 2977,
03495      3549, 2973, 1152, 3549, 1203, 2971, 3549, 3549, 1152, 3549,
03496      1203, 3549, 3549, 1152, 3549, 1203, 2974, 3549, 2975, 2398,
03497      2399, 2399, 2399, 2399, 2398, 2398, 2398, 2398, 2398, 2398,
03498      2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 1201,
03499      1201, 1201, 1201, 3549, 2400, 2980, 2401, 2398, 2398, 2398,
03500      2398, 2815, 2815, 2815, 2815, 2979, 2983, 2983, 2983, 2983,
03501      3549, 3549, 3549, 1152, 3549, 1203, 2984, 2984, 2984, 2984,
03502      2398, 2398, 2398, 2978, 3549, 2816, 3549, 1203, 3549, 3549,
03503      1152, 3549, 1203, 2819, 2819, 2819, 2819, 3549, 3549, 3549,
03504 
03505      2826, 3549, 1203, 2985, 2985, 2985, 2985, 3549, 2398, 2398,
03506      2398, 3549, 3549, 2981, 3549, 3549, 3549, 1152, 3549, 1203,
03507      1201, 1201, 1201, 1201, 3549, 3549, 3549, 1152, 3549, 1203,
03508      2987, 2987, 2987, 2987, 1201, 1201, 1201, 1201, 3549, 1201,
03509      1201, 1201, 1201, 3549, 1152, 3549, 1203, 2825, 2825, 2825,
03510      2825, 3549, 3549, 3549, 2988, 3549, 1203, 3549, 1152, 3549,
03511      1203, 3549, 3549, 1152, 3549, 1203, 2994, 2994, 2994, 2994,
03512      3549, 2826, 3549, 1203, 2989, 3549, 2986, 3549, 1201, 1201,
03513      1201, 1201, 1201, 1201, 1201, 1201, 3000, 3000, 3000, 3000,
03514      1708, 2940, 2852, 2852, 2852, 2852, 2991, 2993, 3549, 3549,
03515 
03516      3549, 2990, 1152, 2853, 1203, 3549, 1152, 3549, 1203, 3549,
03517      3001, 2992, 1203, 2833, 2833, 2833, 2833, 3549, 2941, 2834,
03518      2834, 2834, 2834, 1201, 1201, 1201, 1201, 3002, 3002, 3002,
03519      3002, 2995, 1201, 1201, 1201, 1201, 3549, 1152, 3549, 1203,
03520      3549, 3549, 3549, 1152, 3549, 1203, 2996, 1152, 3549, 1203,
03521      3549, 1152, 3549, 1203, 3549, 3549, 1152, 3549, 1203, 1201,
03522      1201, 1201, 1201, 3007, 3007, 3007, 3007, 1201, 1201, 1201,
03523      1201, 2854, 2854, 2854, 2854, 2855, 2855, 2855, 2855, 3549,
03524      3549, 2809, 3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203,
03525      3003, 1152, 3549, 1203, 2852, 2852, 2852, 2852, 2854, 2854,
03526 
03527      2854, 2854, 3549, 3549, 3549, 2853, 2855, 2855, 2855, 2855,
03528      3549, 1303, 1303, 1303, 1303, 3549, 3549, 3549, 3549, 1135,
03529      1135, 1135, 1135, 3549, 3549, 2395, 3549, 3006, 1304, 2903,
03530      2903, 2903, 2903, 3549, 3549, 1306, 1136, 2905, 2905, 2905,
03531      2905, 3549, 3549, 1138, 3050, 3051, 3051, 3050, 3051, 3051,
03532      3051, 3051, 3058, 3058, 3058, 3058, 3063, 3063, 3063, 3063,
03533      2923, 2923, 2923, 2923, 3549, 3549, 3549, 3015, 2925, 2925,
03534      2925, 2925, 1152, 2465, 2928, 2928, 2928, 2928, 2982, 2982,
03535      2982, 2982, 3549, 3549, 3549, 3048, 3070, 3070, 3070, 3070,
03536      3071, 3071, 3071, 3071, 2932, 2932, 2932, 2932, 2929, 3072,
03537 
03538      3072, 3072, 3072, 3074, 3074, 3074, 3074, 2938, 2938, 2938,
03539      2938, 3549, 3549, 3549, 2939, 2994, 2994, 2994, 2994, 3083,
03540      3083, 3083, 3083, 2943, 2943, 2943, 2943, 3075, 3549, 3549,
03541      3549, 2939, 2944, 2944, 2944, 2944, 3085, 3085, 3085, 3085,
03542      3549, 3549, 3549, 3084, 3549, 3549, 3549, 3076, 3549, 3549,
03543      3549, 2940, 3088, 3088, 3088, 3088, 1762, 1762, 1762, 1762,
03544      1762, 1762, 1762, 1762, 3549, 3549, 3549, 1763, 3549, 3549,
03545      3549, 1763, 3549, 3549, 3077, 3549, 3549, 3549, 2941, 1762,
03546      1762, 1762, 1762, 3092, 3092, 3092, 3092, 3549, 3549, 3549,
03547      1763, 3549, 3549, 3549, 1763, 1762, 1762, 1762, 1762, 1762,
03548 
03549      1762, 1762, 1762, 3549, 3549, 3549, 1763, 3549, 3549, 3549,
03550      1763, 3549, 2956, 2956, 2956, 2956, 3090, 1762, 1762, 1762,
03551      1762, 3549, 3089, 1763, 1201, 1201, 1201, 1201, 1763, 3549,
03552      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03553      1201, 1201, 3549, 3091, 3098, 3098, 3098, 3098, 1152, 3549,
03554      1203, 3549, 3549, 3093, 1152, 3549, 1203, 3549, 1152, 3549,
03555      1203, 3549, 1152, 3094, 1203, 3549, 3549, 3549, 1152, 3549,
03556      1203, 3549, 3549, 3549, 3095, 3549, 3549, 3096, 3549, 3549,
03557      2832, 2963, 2963, 2963, 2963, 2965, 2965, 2965, 2965, 3549,
03558      2966, 1201, 1201, 1201, 1201, 2966, 3549, 3549, 3549, 3097,
03559 
03560      1201, 1201, 1201, 1201, 3549, 1152, 3549, 1203, 3103, 3103,
03561      3103, 3103, 3549, 3549, 3549, 1152, 3549, 1203, 2976, 2976,
03562      2976, 2976, 3549, 3549, 1152, 3549, 1203, 1201, 1201, 1201,
03563      1201, 3549, 1152, 3549, 1203, 3549, 3111, 3111, 3111, 3111,
03564      3549, 3549, 1152, 3549, 2977, 1201, 1201, 1201, 1201, 3549,
03565      3549, 1152, 3549, 1203, 3113, 3113, 3113, 3113, 3549, 3549,
03566      1152, 3099, 1203, 3549, 3549, 3549, 3102, 3549, 3549, 1152,
03567      3549, 1203, 2982, 2982, 2982, 2982, 3549, 3549, 3114, 3549,
03568      1203, 2983, 2983, 2983, 2983, 2984, 2984, 2984, 2984, 2985,
03569      2985, 2985, 2985, 3549, 3110, 1201, 1201, 1201, 1201, 2987,
03570 
03571      2987, 2987, 2987, 3112, 3549, 1152, 3549, 1203, 3549, 2826,
03572      3549, 1203, 3549, 1152, 3549, 1203, 3549, 3549, 3549, 1152,
03573      3549, 1203, 3549, 2988, 3549, 1203, 3116, 3116, 3116, 3116,
03574      1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03575      1201, 1201, 3549, 3076, 3549, 3120, 3120, 3120, 3120, 3549,
03576      1708, 3549, 3549, 3115, 1152, 3549, 1203, 3549, 1152, 3549,
03577      1203, 3549, 1152, 3549, 1203, 1201, 1201, 1201, 1201, 1152,
03578      3077, 1203, 2994, 2994, 2994, 2994, 3549, 1201, 1201, 1201,
03579      1201, 3549, 3549, 3117, 1201, 1201, 1201, 1201, 3549, 1152,
03580      3549, 1203, 1201, 1201, 1201, 1201, 3119, 3549, 3118, 3549,
03581 
03582      3549, 1152, 3549, 1203, 3000, 3000, 3000, 3000, 1152, 3549,
03583      1203, 3127, 3127, 3127, 3127, 3549, 1152, 3549, 1203, 3549,
03584      3549, 3549, 3121, 3122, 3002, 3002, 3002, 3002, 3001, 3549,
03585      1203, 3130, 3130, 3130, 3130, 1708, 1201, 1201, 1201, 1201,
03586      3007, 3007, 3007, 3007, 3137, 3137, 3137, 3137, 1152, 3549,
03587      1203, 3123, 3549, 3549, 3549, 1152, 3549, 1203, 3549, 3126,
03588      1152, 3549, 1203, 3549, 1152, 3549, 1203, 3138, 3138, 3138,
03589      3138, 3549, 3549, 3549, 1155, 3139, 3139, 3139, 3139, 3549,
03590      3128, 3549, 1777, 1303, 1303, 1303, 1303, 3150, 3150, 3150,
03591      3150, 3549, 3549, 3549, 3133, 2798, 3549, 1170, 3129, 3549,
03592 
03593      1304, 1135, 1135, 1135, 1135, 3549, 3549, 1306, 3165, 3165,
03594      3165, 3165, 3166, 3167, 3167, 3166, 3549, 3549, 1136, 3167,
03595      3167, 3167, 3167, 3549, 3549, 1138, 3171, 3171, 3171, 3171,
03596      3058, 3058, 3058, 3058, 3176, 3176, 3176, 3176, 3549, 3549,
03597      3549, 3141, 3549, 1152, 3063, 3063, 3063, 3063, 3179, 3179,
03598      3179, 3179, 3180, 3180, 3180, 3180, 3182, 3182, 3182, 3182,
03599      3070, 3070, 3070, 3070, 3071, 3071, 3071, 3071, 3072, 3072,
03600      3072, 3072, 3549, 3164, 3074, 3074, 3074, 3074, 3549, 3549,
03601      3183, 3116, 3116, 3116, 3116, 3549, 3549, 3549, 2939, 3188,
03602      3188, 3188, 3188, 3083, 3083, 3083, 3083, 3549, 3075, 3127,
03603 
03604      3127, 3127, 3127, 3085, 3085, 3085, 3085, 3192, 3192, 3192,
03605      3192, 3088, 3088, 3088, 3088, 3549, 3549, 3084, 3076, 1762,
03606      1762, 1762, 1762, 1762, 1762, 1762, 1762, 3549, 3549, 3549,
03607      1763, 3549, 3549, 3549, 1763, 3196, 3196, 3196, 3196, 3092,
03608      3092, 3092, 3092, 3549, 3549, 3077, 1763, 3549, 3549, 3549,
03609      1763, 3549, 3549, 1155, 1762, 1762, 1762, 1762, 3549, 3128,
03610      3549, 1777, 3549, 3549, 3549, 1763, 3549, 3198, 3198, 3198,
03611      3198, 3549, 3549, 3549, 2798, 3549, 1170, 3129, 1763, 3549,
03612      3549, 3195, 3199, 3199, 3199, 3199, 1201, 1201, 1201, 1201,
03613      3549, 3194, 3549, 1763, 1201, 1201, 1201, 1201, 3098, 3098,
03614 
03615      3098, 3098, 1201, 1201, 1201, 1201, 3205, 3205, 3205, 3205,
03616      1152, 3197, 1203, 3103, 3103, 3103, 3103, 3549, 1152, 3549,
03617      1203, 3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203, 3549,
03618      1152, 3549, 1203, 3549, 3549, 3200, 3549, 1152, 3549, 1203,
03619      3206, 3206, 3206, 3206, 1201, 1201, 1201, 1201, 3111, 3111,
03620      3111, 3111, 3201, 3213, 3213, 3213, 3214, 3113, 3113, 3113,
03621      3113, 3202, 3215, 3215, 3215, 3215, 3549, 3549, 1152, 3549,
03622      1203, 3549, 1152, 3549, 1203, 3549, 3549, 1152, 3549, 1203,
03623      3549, 3114, 3549, 1203, 3549, 3549, 1708, 3116, 3116, 3116,
03624      3116, 1201, 1201, 1201, 1201, 3229, 3229, 3229, 3229, 3127,
03625 
03626      3127, 3127, 3127, 3137, 3137, 3137, 3137, 3549, 3549, 3549,
03627      3212, 3138, 3138, 3138, 3138, 1152, 3549, 1203, 3207, 3216,
03628      3217, 3217, 3217, 3217, 3216, 3216, 3216, 3216, 3216, 3216,
03629      3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 1201,
03630      1201, 1201, 1201, 3549, 3218, 3216, 3219, 3216, 3216, 3216,
03631      3216, 1201, 1201, 1201, 1201, 3549, 3549, 3549, 3221, 3139,
03632      3139, 3139, 3139, 1152, 3549, 1203, 3120, 3120, 3120, 3120,
03633      3216, 3216, 3216, 3230, 3549, 1152, 3549, 1203, 3549, 3223,
03634      3223, 3223, 3223, 3549, 3549, 3220, 1201, 1201, 1201, 1201,
03635      1152, 3549, 1203, 1201, 1201, 1201, 1201, 3549, 3216, 3216,
03636 
03637      3216, 3549, 3549, 3224, 3549, 1203, 1201, 1201, 1201, 1201,
03638      1152, 3549, 1203, 3130, 3130, 3130, 3130, 1152, 3549, 1203,
03639      3549, 3549, 3222, 3225, 3549, 3549, 3227, 3549, 3549, 3549,
03640      1152, 3549, 1203, 3213, 3213, 3213, 3213, 1152, 3549, 1203,
03641      3137, 3137, 3137, 3137, 3138, 3138, 3138, 3138, 3549, 3549,
03642      3226, 3139, 3139, 3139, 3139, 3549, 3549, 1152, 3549, 1203,
03643      3236, 3236, 3236, 3236, 3549, 3228, 3237, 3237, 3237, 3237,
03644      3549, 3549, 3232, 3150, 3150, 3150, 3150, 1135, 1135, 1135,
03645      1135, 3549, 3549, 1304, 3165, 3165, 3165, 3165, 3549, 3549,
03646      1306, 3549, 3549, 3549, 1136, 3256, 3257, 3257, 3256, 3549,
03647 
03648      3549, 1138, 3257, 3257, 3257, 3257, 3260, 3260, 3260, 3260,
03649      3171, 3171, 3171, 3171, 3262, 3262, 3262, 3262, 3263, 3263,
03650      3263, 3263, 3176, 3176, 3176, 3176, 1152, 3266, 3266, 3266,
03651      3266, 3179, 3179, 3179, 3179, 3180, 3180, 3180, 3180, 3267,
03652      3267, 3267, 3268, 3182, 3182, 3182, 3182, 3549, 3255, 3215,
03653      3215, 3215, 3215, 3269, 3269, 3269, 3269, 3188, 3188, 3188,
03654      3188, 3273, 3273, 3273, 3273, 3549, 3549, 3183, 3192, 3192,
03655      3192, 3192, 3267, 3267, 3267, 3267, 1762, 1762, 1762, 1762,
03656      3280, 3280, 3280, 3280, 3549, 3274, 3549, 1763, 3549, 3549,
03657      3549, 1763, 3196, 3196, 3196, 3196, 3281, 3281, 3281, 3281,
03658 
03659      3549, 3549, 3549, 1763, 3549, 3275, 3549, 1763, 3198, 3198,
03660      3198, 3198, 3199, 3199, 3199, 3199, 3549, 3549, 3549, 1763,
03661      3549, 3549, 3549, 1763, 1201, 1201, 1201, 1201, 3549, 3549,
03662      3279, 3549, 3276, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
03663      1201, 3283, 3283, 3283, 3283, 3549, 3549, 3549, 1152, 3549,
03664      1203, 3205, 3205, 3205, 3205, 3549, 3549, 1152, 3549, 1203,
03665      3549, 1152, 3549, 1203, 3206, 3206, 3206, 3206, 1201, 1201,
03666      1201, 1201, 3549, 3549, 3549, 1152, 3549, 1203, 3213, 3213,
03667      3213, 3213, 3213, 3213, 3213, 3213, 3215, 3215, 3215, 3215,
03668      2818, 3282, 1152, 3549, 1203, 3549, 1201, 1201, 1201, 1201,
03669 
03670      3549, 3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203, 3294,
03671      3294, 3294, 3294, 3296, 3296, 3296, 3296, 3549, 3549, 2403,
03672      1152, 3549, 1203, 3549, 3287, 1201, 1201, 1201, 1201, 3229,
03673      3229, 3229, 3229, 3295, 3549, 1203, 3292, 1708, 3288, 3549,
03674      3549, 3549, 3207, 3236, 3236, 3236, 3236, 3549, 3549, 1152,
03675      3549, 1203, 3549, 3289, 3216, 3217, 3217, 3217, 3217, 3216,
03676      3216, 3216, 3290, 3216, 3216, 3216, 3216, 3216, 3216, 3216,
03677      3216, 3216, 3216, 3216, 3316, 3317, 3317, 3316, 3297, 3218,
03678      3216, 3219, 3216, 3216, 3216, 3216, 3291, 3291, 3291, 3291,
03679      3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
03680 
03681      3291, 3291, 3291, 3291, 3291, 3216, 3216, 3216, 3291, 3291,
03682      3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
03683      3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
03684      3291, 3291, 3291, 3216, 3216, 3216, 1201, 1201, 1201, 1201,
03685      3223, 3223, 3223, 3223, 3549, 1201, 1201, 1201, 1201, 1201,
03686      1201, 1201, 1201, 1201, 1201, 1201, 1201, 3549, 3549, 3549,
03687      1152, 3549, 1203, 3549, 3224, 3549, 1203, 3549, 3549, 1152,
03688      3549, 1203, 3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203,
03689      3301, 3301, 3301, 3301, 3275, 3549, 1201, 1201, 1201, 1201,
03690      3549, 3299, 3317, 3317, 3317, 3317, 3237, 3237, 3237, 3237,
03691 
03692      3549, 3315, 3315, 3315, 3315, 3549, 3549, 3549, 3293, 3298,
03693      1152, 3276, 1203, 1304, 3549, 3549, 1152, 3549, 1136, 3549,
03694      1306, 3549, 3549, 3549, 3300, 1138, 3319, 3319, 3319, 3319,
03695      3260, 3260, 3260, 3260, 3320, 3320, 3320, 3320, 3262, 3262,
03696      3262, 3262, 3303, 3263, 3263, 3263, 3263, 3266, 3266, 3266,
03697      3266, 3267, 3267, 3267, 3267, 3549, 3549, 3549, 3302, 3267,
03698      3267, 3267, 3267, 3269, 3269, 3269, 3269, 3324, 3324, 3324,
03699      3324, 3549, 3273, 3273, 3273, 3273, 3296, 3296, 3296, 3296,
03700      3549, 1762, 1762, 1762, 1762, 3549, 3280, 3280, 3280, 3280,
03701      3549, 3325, 1763, 3549, 3549, 3549, 3274, 1763, 3281, 3281,
03702 
03703      3281, 3281, 1201, 1201, 1201, 1201, 3549, 3549, 3549, 1763,
03704      3283, 3283, 3283, 3283, 3549, 3288, 3275, 3549, 1201, 1201,
03705      1201, 1201, 3336, 3336, 3336, 3336, 1152, 3549, 1203, 3549,
03706      3289, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 3549,
03707      3549, 3549, 1152, 3276, 1203, 3294, 3294, 3294, 3294, 3338,
03708      3549, 3549, 3549, 3330, 3549, 1152, 3549, 1203, 3331, 1152,
03709      3549, 1203, 3341, 3341, 3341, 3341, 3549, 3549, 3549, 3295,
03710      3549, 1203, 3549, 3339, 3549, 3549, 2140, 3296, 3296, 3296,
03711      3296, 1201, 1201, 1201, 1201, 3549, 1708, 1201, 1201, 1201,
03712      1201, 1201, 1201, 1201, 1201, 3345, 3345, 3345, 3345, 3301,
03713 
03714      3301, 3301, 3301, 3549, 3549, 1152, 3340, 1203, 3549, 3549,
03715      3549, 1152, 3549, 1203, 3549, 1152, 3549, 1203, 3549, 3346,
03716      3549, 1203, 1201, 1201, 1201, 1201, 3549, 3342, 3347, 3347,
03717      3347, 3347, 3315, 3315, 3315, 3315, 3549, 3549, 3344, 3356,
03718      3357, 3357, 3356, 3549, 3549, 3549, 1152, 3549, 1203, 3357,
03719      3357, 3357, 3357, 3549, 3343, 3549, 1138, 3319, 3319, 3319,
03720      3319, 3320, 3320, 3320, 3320, 3324, 3324, 3324, 3324, 3341,
03721      3341, 3341, 3341, 1152, 3365, 3365, 3365, 3365, 3549, 3549,
03722      2140, 1762, 1762, 1762, 1762, 3368, 3368, 3368, 3368, 3325,
03723      3549, 3549, 1763, 1201, 1201, 1201, 1201, 3549, 3366, 3336,
03724 
03725      3336, 3336, 3336, 3549, 3549, 3549, 3348, 3336, 3336, 3336,
03726      3336, 1201, 1201, 1201, 1201, 3549, 3549, 1152, 3549, 1203,
03727      3372, 3372, 3372, 3372, 3549, 3549, 3338, 3341, 3341, 3341,
03728      3341, 3549, 3549, 3549, 3338, 1152, 3549, 1203, 1201, 1201,
03729      1201, 1201, 3549, 3367, 3373, 3549, 1203, 1201, 1201, 1201,
03730      1201, 3133, 3549, 1201, 1201, 1201, 1201, 3549, 3371, 3549,
03731      3549, 3549, 1152, 3549, 1203, 3345, 3345, 3345, 3345, 3549,
03732      3549, 1152, 3549, 1203, 3549, 3549, 3549, 1152, 3374, 1203,
03733      3376, 3376, 3376, 3376, 3347, 3347, 3347, 3347, 3549, 3346,
03734      3549, 1203, 3377, 3377, 3377, 3377, 3549, 3549, 3549, 3300,
03735 
03736      3381, 3382, 3382, 3381, 1708, 3382, 3382, 3382, 3382, 3385,
03737      3385, 3385, 3385, 3365, 3365, 3365, 3365, 3549, 3549, 3375,
03738      3376, 3376, 3376, 3376, 1762, 1762, 1762, 1762, 3549, 1152,
03739      3549, 3549, 3549, 3386, 3549, 1763, 3549, 3366, 3368, 3368,
03740      3368, 3368, 1201, 1201, 1201, 1201, 3549, 3372, 3372, 3372,
03741      3372, 3392, 3392, 3392, 3392, 1201, 1201, 1201, 1201, 1201,
03742      1201, 1201, 1201, 3549, 3549, 3549, 1152, 3549, 1203, 3549,
03743      3378, 3373, 3549, 1203, 3549, 1708, 3549, 3549, 3549, 1152,
03744      3549, 1203, 3549, 1152, 3549, 1203, 3549, 3549, 3340, 3549,
03745      3549, 3389, 3376, 3376, 3376, 3376, 3549, 3393, 3377, 3377,
03746 
03747      3377, 3377, 3395, 3396, 3396, 3395, 3549, 3396, 3396, 3396,
03748      3396, 3385, 3385, 3385, 3385, 3392, 3392, 3392, 3392, 3549,
03749      3549, 1762, 1762, 1762, 1762, 3392, 3392, 3392, 3392, 3549,
03750      3394, 1152, 1763, 3549, 3549, 3386, 1201, 1201, 1201, 1201,
03751      3404, 3404, 3404, 3404, 3406, 3407, 3407, 3406, 3407, 3407,
03752      3407, 3407, 3410, 3410, 3410, 3410, 3412, 3412, 3412, 3412,
03753      1152, 3549, 1203, 3549, 3405, 3549, 1203, 1763, 3413, 3413,
03754      3413, 3413, 1152, 3549, 3549, 3549, 3411, 1201, 1201, 1201,
03755      1201, 3549, 3549, 3403, 3549, 3549, 3549, 3400, 3404, 3404,
03756      3404, 3404, 3416, 3416, 3416, 3416, 3417, 3418, 3418, 3417,
03757 
03758      3549, 1152, 3549, 1203, 3418, 3418, 3418, 3418, 3419, 3419,
03759      3419, 3419, 3405, 3549, 1203, 3549, 1708, 3410, 3410, 3410,
03760      3410, 3549, 3549, 3394, 3416, 3416, 3416, 3416, 1152, 3412,
03761      3412, 3412, 3412, 3413, 3413, 3413, 3413, 3549, 3549, 3549,
03762      1763, 3411, 3420, 3420, 3420, 3420, 3414, 3416, 3416, 3416,
03763      3416, 3422, 3423, 3423, 3422, 3423, 3423, 3423, 3423, 3419,
03764      3419, 3419, 3419, 3420, 3420, 3420, 3420, 3424, 3425, 3425,
03765      3424, 3425, 3425, 3425, 3425, 3426, 3427, 3427, 3426, 1152,
03766      3427, 3427, 3427, 3427, 3428, 3429, 3429, 3428, 3429, 3429,
03767      3429, 3429, 3549, 3549, 3549, 1152, 3430, 3431, 3431, 3430,
03768 
03769      3431, 3431, 3431, 3431, 1152, 3432, 3433, 3433, 3432, 3549,
03770      3549, 3549, 1152, 3433, 3433, 3433, 3433, 3549, 3549, 3549,
03771      3421, 3549, 3549, 3549, 1152, 3434, 3435, 3435, 3434, 3435,
03772      3435, 3435, 3435, 3436, 3437, 3437, 3436, 1152, 3437, 3437,
03773      3437, 3437, 3438, 3439, 3439, 3438, 3439, 3439, 3439, 3439,
03774      3549, 3549, 3549, 1152, 3440, 3441, 3441, 3440, 3441, 3441,
03775      3441, 3441, 1152, 3442, 3443, 3443, 3442, 3549, 3549, 3549,
03776      1152, 3443, 3443, 3443, 3443, 3444, 3445, 3445, 3444, 3549,
03777      3549, 3549, 1152, 3445, 3445, 3445, 3445, 3446, 3447, 3447,
03778      3446, 3447, 3447, 3447, 3447, 1152, 3448, 3449, 3449, 3448,
03779 
03780      3449, 3449, 3449, 3449, 3549, 3549, 3549, 1152, 3450, 3451,
03781      3451, 3450, 3549, 3549, 3549, 1152, 3451, 3451, 3451, 3451,
03782      3452, 3453, 3453, 3452, 1152, 3453, 3453, 3453, 3453, 3454,
03783      3455, 3455, 3454, 3455, 3455, 3455, 3455, 3549, 3549, 3549,
03784      1152, 3456, 3457, 3457, 3456, 3457, 3457, 3457, 3457, 1152,
03785      3458, 3459, 3459, 3458, 3549, 3549, 3549, 1152, 3459, 3459,
03786      3459, 3459, 3460, 3461, 3461, 3460, 3549, 3549, 3549, 1152,
03787      3461, 3461, 3461, 3461, 3462, 3463, 3463, 3462, 3463, 3463,
03788      3463, 3463, 1152, 3464, 3465, 3465, 3464, 3465, 3465, 3465,
03789      3465, 3549, 3549, 3549, 1152, 3466, 3467, 3467, 3466, 3549,
03790 
03791      3549, 3549, 1152, 3467, 3467, 3467, 3467, 3468, 3469, 3469,
03792      3468, 1152, 3469, 3469, 3469, 3469, 3470, 3471, 3471, 3470,
03793      3471, 3471, 3471, 3471, 3549, 3549, 3549, 1152, 3472, 3473,
03794      3473, 3472, 3473, 3473, 3473, 3473, 1152, 3474, 3475, 3475,
03795      3474, 3549, 3549, 3549, 1152, 3475, 3475, 3475, 3475, 3476,
03796      3477, 3477, 3476, 3549, 3549, 3549, 1152, 3477, 3477, 3477,
03797      3477, 3478, 3479, 3479, 3478, 3479, 3479, 3479, 3479, 1152,
03798      3480, 3481, 3481, 3480, 3481, 3481, 3481, 3481, 3549, 3549,
03799      3549, 1152, 3482, 3483, 3483, 3482, 3549, 3549, 3549, 1152,
03800      3483, 3483, 3483, 3483, 3484, 3485, 3485, 3484, 1152, 3485,
03801 
03802      3485, 3485, 3485, 3486, 3487, 3487, 3486, 3487, 3487, 3487,
03803      3487, 3549, 3549, 3549, 1152, 3488, 3489, 3489, 3488, 3489,
03804      3489, 3489, 3489, 1152, 3490, 3491, 3491, 3490, 3549, 3549,
03805      3549, 1152, 3491, 3491, 3491, 3491, 3492, 3493, 3493, 3492,
03806      3549, 3549, 3549, 1152, 3493, 3493, 3493, 3493, 3494, 3495,
03807      3495, 3494, 3495, 3495, 3495, 3495, 1152, 3496, 3497, 3497,
03808      3496, 3497, 3497, 3497, 3497, 3549, 3549, 3549, 1152, 3498,
03809      3499, 3499, 3498, 3549, 3549, 3549, 1152, 3499, 3499, 3499,
03810      3499, 3500, 3501, 3501, 3500, 1152, 3501, 3501, 3501, 3501,
03811      3502, 3503, 3503, 3502, 3503, 3503, 3503, 3503, 3549, 3549,
03812 
03813      3549, 1152, 3504, 3505, 3505, 3504, 3505, 3505, 3505, 3505,
03814      1152, 3506, 3507, 3507, 3506, 3549, 3549, 3549, 1152, 3507,
03815      3507, 3507, 3507, 3508, 3509, 3509, 3508, 3549, 3549, 3549,
03816      1152, 3509, 3509, 3509, 3509, 3510, 3511, 3511, 3510, 3511,
03817      3511, 3511, 3511, 1152, 3512, 3513, 3513, 3512, 3513, 3513,
03818      3513, 3513, 3549, 3549, 3549, 1152, 3514, 3515, 3515, 3514,
03819      3549, 3549, 3549, 1152, 3515, 3515, 3515, 3515, 3516, 3517,
03820      3517, 3516, 1152, 3517, 3517, 3517, 3517, 3518, 3519, 3519,
03821      3518, 3519, 3519, 3519, 3519, 3549, 3549, 3549, 1152, 3520,
03822      3521, 3521, 3520, 3521, 3521, 3521, 3521, 1152, 3522, 3523,
03823 
03824      3523, 3522, 3549, 3549, 3549, 1152, 3523, 3523, 3523, 3523,
03825      3524, 3525, 3525, 3524, 3549, 3549, 3549, 1152, 3525, 3525,
03826      3525, 3525, 3526, 3527, 3527, 3526, 3527, 3527, 3527, 3527,
03827      1152, 3528, 3529, 3529, 3528, 3529, 3529, 3529, 3529, 3549,
03828      3549, 3549, 1152, 3530, 3531, 3531, 3530, 3549, 3549, 3549,
03829      1152, 3531, 3531, 3531, 3531, 3532, 3533, 3533, 3532, 1152,
03830      3533, 3533, 3533, 3533, 3534, 3535, 3535, 3534, 3535, 3535,
03831      3535, 3535, 3549, 3549, 3549, 1152, 3536, 3537, 3537, 3536,
03832      3537, 3537, 3537, 3537, 1152, 3538, 3539, 3539, 3538, 3549,
03833      3549, 3549, 1152, 3539, 3539, 3539, 3539, 3540, 3541, 3541,
03834 
03835      3540, 3549, 3549, 3549, 1152, 3541, 3541, 3541, 3541, 3542,
03836      3543, 3543, 3542, 3543, 3543, 3543, 3543, 1152, 3544, 3545,
03837      3545, 3544, 3545, 3545, 3545, 3545, 3549, 3549, 3549, 1152,
03838      3546, 3547, 3547, 3546, 3549, 3549, 3549, 1152, 3547, 3547,
03839      3547, 3547, 3548, 1177, 1177, 3548, 1152, 1177, 1177, 1177,
03840      1177, 3548, 1177, 1177, 3548, 3549, 3549, 3549, 3549, 3549,
03841      3549, 3549, 1152, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
03842      3549, 1152,  244,  244,  244,  244,  244,  244,  244,  244,
03843       244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
03844       244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
03845 
03846       244,  244,  244,  252,  252,  252,  252,  252,  252,  252,
03847       252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
03848       252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
03849       252,  252,  252,  252,  303,  303,  303,  303,  303,  303,
03850       303,  303,  303,  303,  303,  303,  303,  303,  303,  303,
03851       303,  303,  303,  303,  303,  303,  303,  303,  303,  303,
03852       303,  303,  303,  303,  303,  340,  340,  340,  340,  340,
03853       340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
03854       340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
03855       340,  340,  340,  340,  340,  340,  355,  355,  355,  355,
03856 
03857       355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
03858       355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
03859       355,  355,  355,  355,  355,  355,  355,  404,  404,  404,
03860       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
03861       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
03862       404,  404,  404,  404,  404,  404,  404,  404,  433,  433,
03863       433,  433,  433,  433,  433,  433,  433,  433,  433,  433,
03864       433,  433,  433,  433,  433,  433,  433,  433,  433,  433,
03865       433,  433,  433,  433,  433,  433,  433,  433,  433,  443,
03866       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
03867 
03868       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
03869       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
03870       450,  450,  450,  450,  450,  450,  450,  450,  450,  450,
03871       450,  450,  450,  450,  450,  450,  450,  450,  450,  450,
03872       450,  450,  450,  450,  450,  450,  450,  450,  450,  450,
03873       450,  473,  473,  473,  473,  473,  473,  473,  473,  473,
03874       473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
03875       473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
03876       473,  473,  482,  482,  482,  482,  482,  482,  482,  482,
03877       482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
03878 
03879       482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
03880       482,  482,  482,  489,  489,  489,  489,  489,  489,  489,
03881       489,  489,  489,  489,  489,  489,  489,  489,  489,  489,
03882       489,  489,  489,  489,  489,  489,  489,  489,  489,  489,
03883       489,  489,  489,  489,  513,  513,  513,  513,  513,  513,
03884       513,  513,  513,  513,  513,  513,  513,  513,  513,  513,
03885       513,  513,  513,  513,  513,  513,  513,  513,  513,  513,
03886       513,  513,  513,  513,  513,  531,  531,  531,  531,  531,
03887       531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
03888       531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
03889 
03890       531,  531,  531,  531,  531,  531,  521,  521,  521,  521,
03891       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
03892       521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
03893       521,  521,  521,  521,  521,  521,  521,  546,  546,  546,
03894       546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
03895       546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
03896       546,  546,  546,  546,  546,  546,  546,  546,  554,  554,
03897       554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
03898       554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
03899       554,  554,  554,  554,  554,  554,  554,  554,  554,  561,
03900 
03901       561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
03902       561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
03903       561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
03904       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
03905       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
03906       571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
03907       571,  584,  584,  584,  584,  584,  584,  584,  584,  584,
03908       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
03909       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
03910       584,  584,  591,  591,  591,  591,  591,  591,  591,  591,
03911 
03912       591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
03913       591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
03914       591,  591,  591,  602,  602,  602,  602,  602,  602,  602,
03915       602,  602,  602,  602,  602,  602,  602,  602,  602,  602,
03916       602,  602,  602,  602,  602,  602,  602,  602,  602,  602,
03917       602,  602,  602,  602,  609,  609,  609,  609,  609,  609,
03918       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
03919       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
03920       609,  609,  609,  609,  609,  615,  615,  615,  615,  615,
03921       615,  615,  615,  615,  615,  615,  615,  615,  615,  615,
03922 
03923       615,  615,  615,  615,  615,  615,  615,  615,  615,  615,
03924       615,  615,  615,  615,  615,  615,  630,  630,  630,  630,
03925       630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
03926       630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
03927       630,  630,  630,  630,  630,  630,  630,  642,  642,  642,
03928       642,  642,  642,  642,  642,  642,  642,  642,  642,  642,
03929       642,  642,  642,  642,  642,  642,  642,  642,  642,  642,
03930       642,  642,  642,  642,  642,  642,  642,  642,  650,  650,
03931       650,  650,  650,  650,  650,  650,  650,  650,  650,  650,
03932       650,  650,  650,  650,  650,  650,  650,  650,  650,  650,
03933 
03934       650,  650,  650,  650,  650,  650,  650,  650,  650,  667,
03935       667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
03936       667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
03937       667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
03938       679,  679,  679,  679,  679,  679,  679,  679,  679,  679,
03939       679,  679,  679,  679,  679,  679,  679,  679,  679,  679,
03940       679,  679,  679,  679,  679,  679,  679,  679,  679,  679,
03941       679,  691,  691,  691,  691,  691,  691,  691,  691,  691,
03942       691,  691,  691,  691,  691,  691,  691,  691,  691,  691,
03943       691,  691,  691,  691,  691,  691,  691,  691,  691,  691,
03944 
03945       691,  691,  724,  724,  724,  724,  724,  724,  724,  724,
03946       724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
03947       724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
03948       724,  724,  724,  759,  759,  759,  759,  759,  759,  759,
03949       759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
03950       759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
03951       759,  759,  759,  759,  777,  777,  777,  777,  777,  777,
03952       777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
03953       777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
03954       777,  777,  777,  777,  777,  787,  787,  787,  787,  787,
03955 
03956       787,  787,  787,  787,  787,  787,  787,  787,  787,  787,
03957       787,  787,  787,  787,  787,  787,  787,  787,  787,  787,
03958       787,  787,  787,  787,  787,  787,  796,  796,  796,  796,
03959       796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
03960       796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
03961       796,  796,  796,  796,  796,  796,  796,  799,  799,  799,
03962       799,  799,  799,  799,  799,  799,  799,  799,  799,  799,
03963       799,  799,  799,  799,  799,  799,  799,  799,  799,  799,
03964       799,  799,  799,  799,  799,  799,  799,  799,  811,  811,
03965       811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
03966 
03967       811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
03968       811,  811,  811,  811,  811,  811,  811,  811,  811,  821,
03969       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
03970       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
03971       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
03972       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
03973       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
03974       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
03975       831,  839,  839,  839,  839,  839,  839,  839,  839,  839,
03976       839,  839,  839,  839,  839,  839,  839,  839,  839,  839,
03977 
03978       839,  839,  839,  839,  839,  839,  839,  839,  839,  839,
03979       839,  839,  847,  847,  847,  847,  847,  847,  847,  847,
03980       847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
03981       847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
03982       847,  847,  847,  855,  855,  855,  855,  855,  855,  855,
03983       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
03984       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
03985       855,  855,  855,  855,  864,  864,  864,  864,  864,  864,
03986       864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
03987       864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
03988 
03989       864,  864,  864,  864,  864,  873,  873,  873,  873,  873,
03990       873,  873,  873,  873,  873,  873,  873,  873,  873,  873,
03991       873,  873,  873,  873,  873,  873,  873,  873,  873,  873,
03992       873,  873,  873,  873,  873,  873,  433,  433,  433,  433,
03993       433,  433,  433,  433,  433,  433,  433,  433,  433,  433,
03994       433,  433,  433,  433,  433,  433,  433,  433,  433,  433,
03995       433,  433,  433,  433,  433,  433,  433,  896,  896,  896,
03996       896,  896,  896,  896,  896,  896,  896,  896,  896,  896,
03997       896,  896,  896,  896,  896,  896,  896,  896,  896,  896,
03998       896,  896,  896,  896,  896,  896,  896,  896,  902,  902,
03999 
04000       902,  902,  902,  902,  902,  902,  902,  902,  902,  902,
04001       902,  902,  902,  902,  902,  902,  902,  902,  902,  902,
04002       902,  902,  902,  902,  902,  902,  902,  902,  902,  482,
04003       482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
04004       482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
04005       482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
04006       913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
04007       913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
04008       913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
04009       913,  922,  922,  922,  922,  922,  922,  922,  922,  922,
04010 
04011       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
04012       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
04013       922,  922,  929,  929,  929,  929,  929,  929,  929,  929,
04014       929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
04015       929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
04016       929,  929,  929,  939,  939,  939,  939,  939,  939,  939,
04017       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
04018       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
04019       939,  939,  939,  939,  946,  946,  946,  946,  946,  946,
04020       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
04021 
04022       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
04023       946,  946,  946,  946,  946,  952,  952,  952,  952,  952,
04024       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
04025       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
04026       952,  952,  952,  952,  952,  952,  974,  974,  974,  974,
04027       974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
04028       974,  974,  974,  974,  974,  974,  974,  974,  974,  974,
04029       974,  974,  974,  974,  974,  974,  974,  994,  994,  994,
04030       994,  994,  994,  994,  994,  994,  994,  994,  994,  994,
04031       994,  994,  994,  994,  994,  994,  994,  994,  994,  994,
04032 
04033       994,  994,  994,  994,  994,  994,  994,  994, 1005, 1005,
04034      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
04035      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
04036      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1011,
04037      1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
04038      1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
04039      1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
04040      1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
04041      1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
04042      1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
04043 
04044      1016, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
04045      1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
04046      1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
04047      1022, 1022, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
04048      1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
04049      1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
04050      1036, 1036, 1036, 1053, 3549, 3549, 1053, 3549, 3549, 3549,
04051      3549, 3549, 3549, 1053, 3549, 3549, 3549, 3549, 3549, 1053,
04052      3549, 3549, 3549, 3549, 3549, 3549, 1053, 1067, 1067, 1067,
04053      1067, 3549, 3549, 3549, 1067, 3549, 3549, 3549, 3549, 3549,
04054 
04055      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04056      1067, 1071, 1071, 1071, 1071, 1071, 3549, 3549, 1071, 3549,
04057      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1071, 3549,
04058      3549, 3549, 3549, 3549, 1071, 3549, 3549, 3549, 3549, 3549,
04059      1071, 1074, 1074, 1074, 1074, 3549, 3549, 3549, 1074, 3549,
04060      3549, 3549, 3549, 3549, 3549, 1074, 3549, 3549, 3549, 3549,
04061      3549, 3549, 3549, 3549, 1074, 3549, 3549, 3549, 3549, 3549,
04062      1074, 1079, 1079, 1079, 1079, 3549, 3549, 3549, 3549, 3549,
04063      3549, 1079, 3549, 3549, 3549, 1079, 3549, 1079, 1079, 1079,
04064      1079, 3549, 3549, 3549, 1079, 1085, 1085, 1085, 1085, 3549,
04065 
04066      3549, 3549, 1085, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04067      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1085, 1092,
04068      1092, 1092, 1092, 3549, 3549, 3549, 1092, 3549, 3549, 3549,
04069      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04070      3549, 3549, 1092, 1095, 1095, 1095, 1095, 1095, 3549, 3549,
04071      1095, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04072      1095, 3549, 3549, 3549, 3549, 3549, 1095, 3549, 3549, 3549,
04073      3549, 3549, 1095, 1103, 1103, 1103, 1103, 3549, 3549, 3549,
04074      3549, 3549, 3549, 1103, 3549, 3549, 3549, 3549, 3549, 1103,
04075      1103, 3549, 3549, 3549, 3549, 3549, 1103, 1113, 3549, 3549,
04076 
04077      3549, 1113, 3549, 1113, 3549, 3549, 1113, 3549, 3549, 3549,
04078      1113, 1130, 1130, 1130, 1130, 3549, 3549, 3549, 1130, 3549,
04079      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04080      3549, 3549, 3549, 3549, 1130, 3549, 3549, 3549, 1130, 1137,
04081      1137, 1137, 1137, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04082      3549, 3549, 3549, 1137, 3549, 1137, 1137, 3549, 3549, 3549,
04083      3549, 3549, 1137, 1143, 1143, 3549, 1143, 3549, 1143, 1143,
04084      1143, 1143, 1143, 3549, 1143, 1143, 1143, 1143, 1143, 1143,
04085      1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
04086      1143, 1143, 1143, 1143, 1174, 1174, 1174, 1174, 3549, 3549,
04087 
04088      3549, 1174, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04089      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1174, 1180, 1180,
04090      1180, 1180, 1180, 3549, 3549, 1180, 3549, 3549, 3549, 3549,
04091      3549, 3549, 3549, 3549, 3549, 1180, 3549, 3549, 3549, 3549,
04092      3549, 1180, 3549, 3549, 3549, 3549, 3549, 1180, 1185, 1185,
04093      1185, 1185, 3549, 3549, 3549, 1185, 1185, 3549, 3549, 3549,
04094      1185, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04095      3549, 1185, 1202, 1202, 1202, 1202, 3549, 3549, 3549, 3549,
04096      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1202, 1202,
04097      3549, 1202, 3549, 3549, 3549, 1202, 1205, 1205, 1205, 1205,
04098 
04099      1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
04100      1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
04101      1205, 1205, 1205, 1205, 1205, 1205, 1205, 1238, 1238, 3549,
04102      1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
04103      1238, 1238, 1238, 1238, 1238, 1238, 1238, 3549, 1238, 1238,
04104      1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1246, 1246,
04105      1246, 1246, 3549, 3549, 3549, 1246, 3549, 3549, 3549, 3549,
04106      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04107      3549, 1246, 1249, 1249, 1249, 1249, 1249, 3549, 3549, 1249,
04108      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1249,
04109 
04110      3549, 3549, 3549, 3549, 3549, 1249, 3549, 3549, 3549, 3549,
04111      3549, 1249, 1252, 1252, 1252, 1252, 3549, 3549, 3549, 3549,
04112      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1252, 1252,
04113      3549, 1252, 3549, 3549, 3549, 1252, 1289, 1289, 3549, 3549,
04114      1289, 1289, 3549, 3549, 1289, 1289, 3549, 1289, 1289, 1289,
04115      1289, 1289, 3549, 1289, 1289, 1289, 1289, 1289, 1289, 3549,
04116      1289, 1289, 1289, 1289, 3549, 3549, 1289, 1293, 1293, 3549,
04117      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04118      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04119      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1295, 1295,
04120 
04121      3549, 1295, 3549, 1295, 1295, 1295, 1295, 1295, 3549, 1295,
04122      1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
04123      1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1305,
04124      1305, 1305, 1305, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04125      3549, 3549, 3549, 1305, 3549, 1305, 1305, 3549, 3549, 3549,
04126      3549, 3549, 1305, 1312, 1312, 1312, 1312, 3549, 3549, 3549,
04127      1312, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04128      3549, 3549, 3549, 3549, 3549, 3549, 1312, 1315, 1315, 1315,
04129      1315, 1315, 3549, 3549, 1315, 3549, 3549, 3549, 3549, 3549,
04130      3549, 3549, 3549, 3549, 1315, 3549, 3549, 3549, 3549, 3549,
04131 
04132      1315, 3549, 3549, 3549, 3549, 3549, 1315, 1317, 1317, 1317,
04133      1317, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04134      3549, 3549, 3549, 1317, 1317, 3549, 3549, 3549, 3549, 3549,
04135      1317, 1318, 1318, 3549, 1318, 1318, 1318, 3549, 3549, 1318,
04136      1318, 3549, 1318, 1318, 1318, 1318, 1318, 3549, 1318, 1318,
04137      1318, 1318, 1318, 1318, 3549, 1318, 1318, 3549, 1318, 3549,
04138      3549, 1318, 1321, 1321, 3549, 1321, 3549, 1321, 1321, 1321,
04139      1321, 1321, 3549, 1321, 1321, 1321, 1321, 1321, 1321, 1321,
04140      1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321,
04141      1321, 1321, 1321, 1339, 1339, 3549, 1339, 1339, 1339, 1339,
04142 
04143      1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339,
04144      1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339,
04145      1339, 1339, 1339, 1339, 1346, 1346, 3549, 1346, 1346, 1346,
04146      1346, 1346, 1346, 1346, 1346, 1346, 1346, 3549, 1346, 1346,
04147      1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
04148      1346, 1346, 1346, 1346, 1346, 1352, 1352, 1352, 1352, 1352,
04149      1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
04150      1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
04151      1352, 1352, 1352, 1352, 1352, 1352, 1357, 1357, 3549, 1357,
04152      1357, 1357, 3549, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
04153 
04154      1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
04155      1357, 3549, 1357, 3549, 1357, 1357, 1357, 1360, 1360, 3549,
04156      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
04157      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
04158      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1368, 3549,
04159      3549, 3549, 3549, 1368, 1368, 1368, 1368, 1368, 1368, 1368,
04160      1368, 3549, 1368, 3549, 3549, 1368, 1368, 1368, 1368, 1368,
04161      1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1382,
04162      1382, 1382, 1382, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04163      3549, 3549, 3549, 1382, 3549, 1382, 3549, 3549, 3549, 3549,
04164 
04165      3549, 3549, 1382, 1388, 1388, 3549, 1388, 1388, 1388, 1388,
04166      1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388,
04167      1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388,
04168      1388, 1388, 1388, 1388, 1397, 1397, 3549, 1397, 1397, 1397,
04169      3549, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397,
04170      1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397,
04171      1397, 1397, 1397, 1397, 1397, 1405, 1405, 1405, 1405, 1405,
04172      1405, 1405, 1405, 1405, 1405, 1405, 1405, 3549, 1405, 1405,
04173      1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
04174      1405, 1405, 1405, 1405, 1405, 1405, 1412, 1412, 1412, 1412,
04175 
04176      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04177      3549, 3549, 1412, 1412, 3549, 3549, 3549, 3549, 3549, 1412,
04178      1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
04179      1414, 1414, 3549, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
04180      1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
04181      1414, 1441, 1441, 3549, 1441, 3549, 1441, 1441, 1441, 1441,
04182      1441, 3549, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441,
04183      1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441,
04184      1441, 1441, 1452, 1452, 1452, 1452, 3549, 3549, 3549, 1452,
04185      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04186 
04187      3549, 3549, 3549, 3549, 3549, 1452, 1455, 1455, 1455, 1455,
04188      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1455, 3549,
04189      3549, 3549, 1455, 3549, 3549, 3549, 3549, 3549, 3549, 1455,
04190      1461, 1461, 1461, 1461, 3549, 3549, 3549, 1461, 1461, 3549,
04191      3549, 3549, 1461, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04192      3549, 3549, 3549, 1461, 1463, 1463, 1463, 1463, 3549, 3549,
04193      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04194      1463, 3549, 3549, 3549, 3549, 3549, 3549, 1463, 1463, 1474,
04195      1474, 1474, 1474, 3549, 3549, 3549, 1474, 3549, 3549, 3549,
04196      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04197 
04198      3549, 3549, 1474, 1477, 1477, 1477, 1477, 1477, 3549, 3549,
04199      1477, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04200      1477, 3549, 3549, 3549, 3549, 3549, 1477, 3549, 3549, 3549,
04201      3549, 3549, 1477, 1479, 1479, 1479, 1479, 3549, 3549, 3549,
04202      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1479,
04203      1479, 3549, 3549, 3549, 3549, 3549, 1479, 1486, 1486, 3549,
04204      1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486,
04205      1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486,
04206      1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1488, 3549,
04207      3549, 3549, 3549, 1488, 3549, 3549, 1488, 1488, 3549, 3549,
04208 
04209      3549, 1488, 1488, 1488, 3549, 1488, 1488, 1488, 1488, 1488,
04210      1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1490,
04211      1490, 3549, 1490, 3549, 1490, 1490, 1490, 1490, 1490, 3549,
04212      1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490,
04213      1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490,
04214      1505, 1505, 3549, 1505, 1505, 1505, 1505, 1505, 1505, 1505,
04215      1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505,
04216      1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505,
04217      1505, 1509, 1509, 3549, 1509, 1509, 1509, 1509, 1509, 1509,
04218      1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509,
04219 
04220      1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509,
04221      1509, 1509, 1510, 1510, 3549, 1510, 1510, 1510, 3549, 1510,
04222      1510, 1510, 3549, 3549, 3549, 1510, 1510, 1510, 1510, 1510,
04223      1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510,
04224      1510, 1510, 1510, 1511, 1511, 3549, 1511, 3549, 1511, 1511,
04225      1511, 1511, 1511, 3549, 1511, 1511, 1511, 1511, 1511, 1511,
04226      1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511,
04227      1511, 1511, 1511, 1511, 1515, 1515, 3549, 1515, 1515, 1515,
04228      3549, 1515, 1515, 1515, 3549, 1515, 1515, 1515, 1515, 1515,
04229      3549, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515,
04230 
04231      1515, 1515, 3549, 3549, 1515, 1516, 1516, 3549, 1516, 3549,
04232      1516, 1516, 1516, 1516, 1516, 3549, 1516, 1516, 1516, 1516,
04233      1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516,
04234      1516, 1516, 1516, 1516, 1516, 1516, 1518, 1518, 3549, 1518,
04235      1518, 1518, 3549, 1518, 1518, 1518, 3549, 3549, 3549, 1518,
04236      1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
04237      1518, 1518, 1518, 1518, 1518, 1518, 1518, 1519, 1519, 3549,
04238      1519, 3549, 1519, 1519, 1519, 1519, 1519, 3549, 1519, 1519,
04239      1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
04240      1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1523, 1523,
04241 
04242      3549, 1523, 1523, 1523, 3549, 1523, 1523, 1523, 3549, 1523,
04243      1523, 1523, 1523, 1523, 3549, 1523, 1523, 1523, 1523, 1523,
04244      1523, 1523, 1523, 1523, 1523, 1523, 3549, 3549, 1523, 1524,
04245      1524, 3549, 1524, 3549, 1524, 1524, 1524, 1524, 1524, 3549,
04246      1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524,
04247      1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524,
04248      1534, 1534, 3549, 1534, 3549, 1534, 1534, 1534, 1534, 1534,
04249      3549, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534,
04250      1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534,
04251      1534, 1544, 1544, 3549, 1544, 1544, 1544, 3549, 1544, 1544,
04252 
04253      1544, 3549, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
04254      1544, 1544, 1544, 1544, 1544, 1544, 1544, 3549, 1544, 1544,
04255      1544, 1544, 1547, 1547, 3549, 1547, 1547, 1547, 1547, 1547,
04256      1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
04257      1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
04258      1547, 1547, 1547, 1548, 1548, 3549, 1548, 1548, 1548, 3549,
04259      1548, 1548, 1548, 3549, 3549, 3549, 1548, 1548, 1548, 3549,
04260      1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548,
04261      1548, 1548, 1548, 1548, 1549, 1549, 3549, 1549, 1549, 1549,
04262      1549, 1549, 1549, 1549, 1549, 1549, 1549, 3549, 1549, 1549,
04263 
04264      1549, 1549, 1549, 1549, 1549, 1549, 1549, 3549, 1549, 1549,
04265      3549, 1549, 1549, 1549, 1549, 1557, 1557, 3549, 1557, 1557,
04266      1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
04267      1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 3549, 1557,
04268      1557, 3549, 1557, 1557, 1557, 1557, 1573, 1573, 1573, 1573,
04269      3549, 3549, 3549, 1573, 3549, 3549, 3549, 3549, 3549, 3549,
04270      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1573,
04271      1573, 1579, 1579, 1579, 1579, 3549, 3549, 3549, 3549, 3549,
04272      3549, 3549, 1579, 3549, 1579, 3549, 3549, 1579, 3549, 3549,
04273      3549, 3549, 3549, 3549, 1579, 1580, 1580, 1580, 1580, 1580,
04274 
04275      1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
04276      1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
04277      1580, 1580, 1580, 1580, 1580, 1580, 1584, 1584, 1584, 1584,
04278      3549, 3549, 3549, 1584, 3549, 3549, 3549, 3549, 3549, 3549,
04279      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1584,
04280      1588, 1588, 1588, 1588, 3549, 3549, 3549, 3549, 3549, 3549,
04281      1588, 3549, 3549, 3549, 3549, 3549, 1588, 3549, 3549, 3549,
04282      3549, 3549, 3549, 1588, 1592, 3549, 3549, 1592, 3549, 3549,
04283      3549, 1592, 1592, 3549, 3549, 3549, 1592, 3549, 3549, 3549,
04284      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1592, 1598, 1598,
04285 
04286      1598, 1598, 3549, 3549, 3549, 1598, 3549, 3549, 3549, 3549,
04287      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04288      3549, 1598, 1601, 1601, 1601, 1601, 1601, 3549, 3549, 1601,
04289      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1601,
04290      3549, 3549, 3549, 3549, 3549, 1601, 3549, 3549, 3549, 3549,
04291      3549, 1601, 1603, 1603, 1603, 1603, 3549, 3549, 3549, 3549,
04292      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1603, 1603,
04293      3549, 3549, 3549, 3549, 3549, 1603, 1613, 1613, 1613, 1613,
04294      1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
04295      1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
04296 
04297      1613, 1613, 1613, 1613, 1613, 1613, 1613, 1619, 1619, 3549,
04298      1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
04299      3549, 1619, 1619, 3549, 1619, 1619, 1619, 1619, 1619, 1619,
04300      3549, 1619, 1619, 3549, 1619, 1619, 1619, 1619, 1640, 1640,
04301      1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
04302      1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
04303      1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1643,
04304      1643, 3549, 1643, 1643, 1643, 1643, 1643, 3549, 1643, 1643,
04305      1643, 1643, 3549, 1643, 1643, 3549, 1643, 1643, 1643, 3549,
04306      1643, 1643, 3549, 1643, 1643, 3549, 3549, 1643, 1643, 1643,
04307 
04308      1053, 3549, 3549, 1053, 3549, 3549, 3549, 3549, 3549, 3549,
04309      1053, 3549, 3549, 3549, 3549, 3549, 1053, 3549, 3549, 3549,
04310      3549, 3549, 3549, 1053, 1074, 1074, 1074, 1074, 3549, 3549,
04311      3549, 1074, 3549, 3549, 3549, 3549, 3549, 3549, 1074, 3549,
04312      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1074, 3549, 3549,
04313      3549, 3549, 3549, 1074, 1067, 1067, 1067, 1067, 3549, 3549,
04314      3549, 1067, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04315      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1067, 1657, 1657,
04316      1657, 1657, 3549, 3549, 3549, 3549, 3549, 3549, 1657, 3549,
04317      3549, 3549, 3549, 3549, 1657, 3549, 1657, 1657, 3549, 3549,
04318 
04319      3549, 1657, 1079, 1079, 1079, 1079, 3549, 3549, 3549, 3549,
04320      3549, 3549, 1079, 3549, 3549, 3549, 1079, 3549, 1079, 1079,
04321      1079, 1079, 3549, 3549, 3549, 1079, 1660, 1660, 1660, 1660,
04322      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04323      1660, 3549, 1660, 3549, 3549, 3549, 3549, 3549, 3549, 1660,
04324      1663, 1663, 1663, 1663, 3549, 3549, 3549, 1663, 3549, 3549,
04325      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04326      3549, 3549, 3549, 1663, 1085, 1085, 1085, 1085, 3549, 3549,
04327      3549, 1085, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04328      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1085, 1665, 1665,
04329 
04330      1665, 1665, 3549, 3549, 3549, 3549, 3549, 3549, 1665, 3549,
04331      3549, 3549, 3549, 3549, 1665, 3549, 1665, 1665, 3549, 3549,
04332      3549, 1665, 1092, 1092, 1092, 1092, 3549, 3549, 3549, 1092,
04333      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04334      3549, 3549, 3549, 3549, 3549, 1092, 1667, 1667, 1667, 1667,
04335      3549, 3549, 3549, 3549, 3549, 3549, 1667, 3549, 3549, 3549,
04336      3549, 3549, 1667, 3549, 3549, 3549, 3549, 3549, 3549, 1667,
04337      1103, 1103, 1103, 1103, 3549, 3549, 3549, 3549, 3549, 3549,
04338      1103, 3549, 3549, 3549, 3549, 3549, 1103, 1103, 3549, 3549,
04339      3549, 3549, 3549, 1103, 1113, 3549, 3549, 3549, 1113, 3549,
04340 
04341      1113, 3549, 3549, 1113, 3549, 3549, 3549, 1113, 1130, 1130,
04342      1130, 1130, 3549, 3549, 3549, 1130, 3549, 3549, 3549, 3549,
04343      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04344      3549, 1130, 3549, 3549, 3549, 1130, 1137, 1137, 1137, 1137,
04345      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04346      1137, 3549, 1137, 1137, 3549, 3549, 3549, 3549, 3549, 1137,
04347      1690, 1690, 1690, 1690, 3549, 3549, 3549, 1690, 3549, 3549,
04348      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04349      3549, 3549, 3549, 1690, 1698, 1698, 3549, 1698, 3549, 1698,
04350      1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
04351 
04352      1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
04353      3549, 1698, 1698, 1698, 1698, 1700, 1700, 3549, 1700, 1700,
04354      1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
04355      1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
04356      1700, 1700, 1700, 1700, 1700, 1700, 1205, 1205, 1205, 1205,
04357      1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
04358      1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
04359      1205, 1205, 1205, 1205, 1205, 1205, 1205, 1174, 1174, 1174,
04360      1174, 3549, 3549, 3549, 1174, 3549, 3549, 3549, 3549, 3549,
04361      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04362 
04363      1174, 1740, 1740, 1740, 1740, 3549, 3549, 3549, 3549, 3549,
04364      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1740, 3549, 3549,
04365      1740, 3549, 3549, 3549, 1740, 1202, 1202, 1202, 1202, 3549,
04366      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04367      3549, 1202, 1202, 3549, 1202, 3549, 3549, 3549, 1202, 1185,
04368      1185, 1185, 1185, 3549, 3549, 3549, 1185, 1185, 3549, 3549,
04369      3549, 1185, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04370      3549, 3549, 1185, 1748, 1748, 1748, 1748, 3549, 3549, 3549,
04371      3549, 3549, 3549, 3549, 1748, 1748, 3549, 3549, 3549, 1748,
04372      1748, 3549, 1748, 3549, 3549, 3549, 1748, 1764, 1764, 1764,
04373 
04374      1764, 3549, 3549, 3549, 3549, 3549, 3549, 1764, 3549, 3549,
04375      3549, 3549, 3549, 1764, 3549, 3549, 3549, 3549, 3549, 3549,
04376      1764, 1238, 1238, 3549, 1238, 1238, 1238, 1238, 1238, 1238,
04377      1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
04378      1238, 3549, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
04379      1238, 1238, 1246, 1246, 1246, 1246, 3549, 3549, 3549, 1246,
04380      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04381      3549, 3549, 3549, 3549, 3549, 1246, 1820, 1820, 1820, 1820,
04382      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04383      3549, 3549, 1820, 3549, 3549, 1820, 3549, 3549, 3549, 1820,
04384 
04385      1252, 1252, 1252, 1252, 3549, 3549, 3549, 3549, 3549, 3549,
04386      3549, 3549, 3549, 3549, 3549, 3549, 1252, 1252, 3549, 1252,
04387      3549, 3549, 3549, 1252, 1289, 1289, 3549, 3549, 1289, 1289,
04388      3549, 3549, 1289, 1289, 3549, 1289, 1289, 1289, 1289, 1289,
04389      3549, 1289, 1289, 1289, 1289, 1289, 1289, 3549, 1289, 1289,
04390      1289, 1289, 3549, 3549, 1289, 1293, 1293, 3549, 1293, 1293,
04391      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04392      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04393      1293, 1293, 1293, 1293, 1293, 1293, 1854, 1854, 3549, 1854,
04394      3549, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
04395 
04396      1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
04397      1854, 1854, 3549, 1854, 1854, 1854, 1854, 1856, 1856, 3549,
04398      1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
04399      1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
04400      1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1861, 1861,
04401      3549, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
04402      1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
04403      1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1305,
04404      1305, 1305, 1305, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04405      3549, 3549, 3549, 1305, 3549, 1305, 1305, 3549, 3549, 3549,
04406 
04407      3549, 3549, 1305, 1866, 1866, 1866, 1866, 3549, 3549, 3549,
04408      1866, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04409      3549, 3549, 3549, 3549, 3549, 3549, 1866, 1312, 1312, 1312,
04410      1312, 3549, 3549, 3549, 1312, 3549, 3549, 3549, 3549, 3549,
04411      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04412      1312, 1317, 1317, 1317, 1317, 3549, 3549, 3549, 3549, 3549,
04413      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1317, 1317, 3549,
04414      3549, 3549, 3549, 3549, 1317, 1318, 1318, 3549, 1318, 1318,
04415      1318, 3549, 3549, 1318, 1318, 3549, 1318, 1318, 1318, 1318,
04416      1318, 3549, 1318, 1318, 1318, 1318, 1318, 1318, 3549, 1318,
04417 
04418      1318, 3549, 1318, 3549, 3549, 1318, 1870, 1870, 3549, 1870,
04419      3549, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870,
04420      1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870,
04421      1870, 1870, 3549, 1870, 1870, 1870, 1870, 1872, 1872, 3549,
04422      1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872,
04423      1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872,
04424      1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1346, 1346,
04425      3549, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
04426      1346, 3549, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
04427      1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1352,
04428 
04429      1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
04430      1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
04431      1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
04432      1357, 1357, 3549, 1357, 1357, 1357, 3549, 1357, 1357, 1357,
04433      1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
04434      1357, 1357, 1357, 1357, 1357, 3549, 1357, 3549, 1357, 1357,
04435      1357, 1360, 1360, 3549, 1360, 1360, 1360, 1360, 1360, 1360,
04436      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
04437      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
04438      1360, 1360, 1368, 3549, 3549, 3549, 3549, 1368, 1368, 1368,
04439 
04440      1368, 1368, 1368, 1368, 1368, 3549, 1368, 3549, 3549, 1368,
04441      1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368,
04442      1368, 1368, 1368, 1382, 1382, 1382, 1382, 3549, 3549, 3549,
04443      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1382, 3549, 1382,
04444      3549, 3549, 3549, 3549, 3549, 3549, 1382, 1892, 1892, 1892,
04445      1892, 3549, 3549, 3549, 1892, 3549, 3549, 3549, 3549, 1892,
04446      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04447      1892, 1388, 1388, 3549, 1388, 1388, 1388, 1388, 1388, 1388,
04448      1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388,
04449      1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388,
04450 
04451      1388, 1388, 1397, 1397, 3549, 1397, 1397, 1397, 3549, 1397,
04452      1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397,
04453      1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397,
04454      1397, 1397, 1397, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
04455      1405, 1405, 1405, 1405, 1405, 3549, 1405, 1405, 1405, 1405,
04456      1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405,
04457      1405, 1405, 1405, 1405, 1412, 1412, 1412, 1412, 3549, 3549,
04458      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04459      1412, 1412, 3549, 3549, 3549, 3549, 3549, 1412, 1414, 1414,
04460      1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
04461 
04462      3549, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414,
04463      1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1914,
04464      3549, 3549, 3549, 1914, 1914, 3549, 3549, 1914, 3549, 3549,
04465      3549, 3549, 1914, 3549, 1914, 1923, 1923, 3549, 1923, 3549,
04466      1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923,
04467      1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923,
04468      1923, 3549, 1923, 1923, 1923, 1923, 1925, 1925, 3549, 1925,
04469      1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
04470      1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925,
04471      1925, 1925, 1925, 1925, 1925, 1925, 1925, 1452, 1452, 1452,
04472 
04473      1452, 3549, 3549, 3549, 1452, 3549, 3549, 3549, 3549, 3549,
04474      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04475      1452, 1455, 1455, 1455, 1455, 3549, 3549, 3549, 3549, 3549,
04476      3549, 3549, 3549, 1455, 3549, 3549, 3549, 1455, 3549, 3549,
04477      3549, 3549, 3549, 3549, 1455, 1461, 1461, 1461, 1461, 3549,
04478      3549, 3549, 1461, 1461, 3549, 3549, 3549, 1461, 3549, 3549,
04479      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1461, 1463,
04480      1463, 1463, 1463, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04481      3549, 3549, 3549, 3549, 3549, 1463, 3549, 3549, 3549, 3549,
04482      3549, 3549, 1463, 1463, 1933, 1933, 3549, 1933, 1933, 1933,
04483 
04484      1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933,
04485      1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933,
04486      1933, 1933, 1933, 1933, 1933, 1938, 1938, 1938, 1938, 3549,
04487      3549, 3549, 1938, 3549, 3549, 3549, 3549, 1938, 3549, 3549,
04488      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1938, 1474,
04489      1474, 1474, 1474, 3549, 3549, 3549, 1474, 3549, 3549, 3549,
04490      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04491      3549, 3549, 1474, 1479, 1479, 1479, 1479, 3549, 3549, 3549,
04492      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1479,
04493      1479, 3549, 3549, 3549, 3549, 3549, 1479, 1486, 1486, 3549,
04494 
04495      1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486,
04496      1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486,
04497      1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1488, 3549,
04498      3549, 3549, 3549, 1488, 3549, 3549, 1488, 1488, 3549, 3549,
04499      3549, 1488, 1488, 1488, 3549, 1488, 1488, 1488, 1488, 1488,
04500      1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1944,
04501      1944, 3549, 1944, 3549, 1944, 1944, 1944, 1944, 1944, 1944,
04502      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
04503      1944, 1944, 1944, 1944, 1944, 3549, 1944, 1944, 1944, 1944,
04504      1946, 1946, 3549, 1946, 1946, 1946, 1946, 1946, 1946, 1946,
04505 
04506      1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946,
04507      1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946,
04508      1946, 1510, 1510, 3549, 1510, 1510, 1510, 3549, 1510, 1510,
04509      1510, 3549, 3549, 3549, 1510, 1510, 1510, 1510, 1510, 1510,
04510      1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510,
04511      1510, 1510, 1952, 1952, 3549, 1952, 3549, 1952, 1952, 1952,
04512      1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952,
04513      1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 3549, 1952,
04514      1952, 1952, 1952, 1954, 1954, 3549, 1954, 1954, 1954, 1954,
04515      1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954,
04516 
04517      1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954,
04518      1954, 1954, 1954, 1954, 1515, 1515, 3549, 1515, 1515, 1515,
04519      3549, 1515, 1515, 1515, 3549, 1515, 1515, 1515, 1515, 1515,
04520      3549, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515,
04521      1515, 1515, 3549, 3549, 1515, 1956, 1956, 3549, 1956, 3549,
04522      1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956,
04523      1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956,
04524      1956, 3549, 1956, 1956, 1956, 1956, 1958, 1958, 3549, 1958,
04525      1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958,
04526      1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958,
04527 
04528      1958, 1958, 1958, 1958, 1958, 1958, 1958, 1518, 1518, 3549,
04529      1518, 1518, 1518, 3549, 1518, 1518, 1518, 3549, 3549, 3549,
04530      1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
04531      1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1960, 1960,
04532      3549, 1960, 3549, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
04533      1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,
04534      1960, 1960, 1960, 1960, 3549, 1960, 1960, 1960, 1960, 1962,
04535      1962, 3549, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
04536      1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
04537      1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
04538 
04539      1523, 1523, 3549, 1523, 1523, 1523, 3549, 1523, 1523, 1523,
04540      3549, 1523, 1523, 1523, 1523, 1523, 3549, 1523, 1523, 1523,
04541      1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 3549, 3549,
04542      1523, 1964, 1964, 3549, 1964, 3549, 1964, 1964, 1964, 1964,
04543      1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964,
04544      1964, 1964, 1964, 1964, 1964, 1964, 1964, 3549, 1964, 1964,
04545      1964, 1964, 1966, 1966, 3549, 1966, 1966, 1966, 1966, 1966,
04546      1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
04547      1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966,
04548      1966, 1966, 1966, 1970, 1970, 3549, 1970, 3549, 1970, 1970,
04549 
04550      1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
04551      1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 3549,
04552      1970, 1970, 1970, 1970, 1972, 1972, 3549, 1972, 1972, 1972,
04553      1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
04554      1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
04555      1972, 1972, 1972, 1972, 1972, 1544, 1544, 3549, 1544, 1544,
04556      1544, 3549, 1544, 1544, 1544, 3549, 1544, 1544, 1544, 1544,
04557      1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
04558      1544, 3549, 1544, 1544, 1544, 1544, 1548, 1548, 3549, 1548,
04559      1548, 1548, 3549, 1548, 1548, 1548, 3549, 3549, 3549, 1548,
04560 
04561      1548, 1548, 3549, 1548, 1548, 1548, 1548, 1548, 1548, 1548,
04562      1548, 1548, 1548, 1548, 1548, 1548, 1548, 1549, 1549, 3549,
04563      1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
04564      3549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
04565      3549, 1549, 1549, 3549, 1549, 1549, 1549, 1549, 1557, 1557,
04566      3549, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
04567      1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
04568      1557, 3549, 1557, 1557, 3549, 1557, 1557, 1557, 1557, 1573,
04569      1573, 1573, 1573, 3549, 3549, 3549, 1573, 3549, 3549, 3549,
04570      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04571 
04572      3549, 3549, 1573, 1573, 1987, 1987, 1987, 1987, 3549, 3549,
04573      3549, 3549, 3549, 3549, 3549, 1987, 3549, 1987, 3549, 3549,
04574      1987, 3549, 3549, 3549, 3549, 3549, 3549, 1987, 1580, 1580,
04575      1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
04576      1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
04577      1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1579,
04578      1579, 1579, 1579, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04579      1579, 3549, 1579, 3549, 3549, 1579, 3549, 3549, 3549, 3549,
04580      3549, 3549, 1579, 1584, 1584, 1584, 1584, 3549, 3549, 3549,
04581      1584, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04582 
04583      3549, 3549, 3549, 3549, 3549, 3549, 1584, 1991, 1991, 1991,
04584      1991, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04585      3549, 3549, 3549, 1991, 3549, 3549, 3549, 3549, 3549, 3549,
04586      1991, 1588, 1588, 1588, 1588, 3549, 3549, 3549, 3549, 3549,
04587      3549, 1588, 3549, 3549, 3549, 3549, 3549, 1588, 3549, 3549,
04588      3549, 3549, 3549, 3549, 1588, 1598, 1598, 1598, 1598, 3549,
04589      3549, 3549, 1598, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04590      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1598, 1603,
04591      1603, 1603, 1603, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04592      3549, 3549, 3549, 3549, 3549, 1603, 1603, 3549, 3549, 3549,
04593 
04594      3549, 3549, 1603, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
04595      1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
04596      1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
04597      1613, 1613, 1613, 1613, 1619, 1619, 3549, 1619, 1619, 1619,
04598      1619, 1619, 1619, 1619, 1619, 1619, 1619, 3549, 1619, 1619,
04599      3549, 1619, 1619, 1619, 1619, 1619, 1619, 3549, 1619, 1619,
04600      3549, 1619, 1619, 1619, 1619, 1640, 1640, 1640, 1640, 1640,
04601      1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
04602      1640, 3549, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
04603      1640, 1640, 1640, 1640, 1640, 1640, 1643, 1643, 3549, 1643,
04604 
04605      1643, 1643, 1643, 1643, 3549, 1643, 1643, 1643, 1643, 3549,
04606      1643, 1643, 3549, 1643, 1643, 1643, 3549, 1643, 1643, 3549,
04607      1643, 1643, 3549, 3549, 1643, 1643, 1643, 1657, 1657, 1657,
04608      1657, 3549, 3549, 3549, 3549, 3549, 3549, 1657, 3549, 3549,
04609      3549, 3549, 3549, 1657, 3549, 1657, 1657, 3549, 3549, 3549,
04610      1657, 2023, 2023, 2023, 2023, 3549, 3549, 3549, 3549, 3549,
04611      3549, 2023, 3549, 3549, 3549, 3549, 3549, 2023, 2023, 2023,
04612      2023, 3549, 3549, 3549, 2023, 1660, 1660, 1660, 1660, 3549,
04613      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1660,
04614      3549, 1660, 3549, 3549, 3549, 3549, 3549, 3549, 1660, 1663,
04615 
04616      1663, 1663, 1663, 3549, 3549, 3549, 1663, 3549, 3549, 3549,
04617      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04618      3549, 3549, 1663, 1658, 1658, 1658, 1658, 1658, 3549, 3549,
04619      1658, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04620      1658, 3549, 3549, 3549, 3549, 3549, 1658, 3549, 3549, 3549,
04621      3549, 3549, 1658, 1665, 1665, 1665, 1665, 3549, 3549, 3549,
04622      3549, 3549, 3549, 1665, 3549, 3549, 3549, 3549, 3549, 1665,
04623      3549, 1665, 1665, 3549, 3549, 3549, 1665, 1667, 1667, 1667,
04624      1667, 3549, 3549, 3549, 3549, 3549, 3549, 1667, 3549, 3549,
04625      3549, 3549, 3549, 1667, 3549, 3549, 3549, 3549, 3549, 3549,
04626 
04627      1667, 2025, 2025, 2025, 2025, 3549, 3549, 3549, 3549, 3549,
04628      3549, 2025, 3549, 3549, 3549, 3549, 3549, 2025, 2025, 3549,
04629      3549, 3549, 3549, 3549, 2025, 2026, 2026, 2026, 2026, 2026,
04630      2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 3549, 2026,
04631      2026, 3549, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026,
04632      2026, 2026, 2026, 2026, 2026, 2026, 2028, 2028, 2028, 2028,
04633      2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028,
04634      2028, 2028, 3549, 2028, 2028, 2028, 2028, 2028, 2028, 2028,
04635      2028, 2028, 2028, 2028, 2028, 2028, 2028, 1668, 1668, 1668,
04636      1668, 1668, 3549, 3549, 1668, 3549, 3549, 3549, 3549, 3549,
04637 
04638      3549, 3549, 3549, 3549, 1668, 3549, 3549, 3549, 3549, 3549,
04639      1668, 3549, 3549, 3549, 3549, 3549, 1668, 1103, 1103, 1103,
04640      1103, 3549, 3549, 3549, 3549, 3549, 3549, 1103, 3549, 3549,
04641      3549, 3549, 3549, 1103, 1103, 3549, 3549, 3549, 3549, 3549,
04642      1103, 1113, 3549, 3549, 3549, 1113, 3549, 1113, 3549, 3549,
04643      1113, 3549, 3549, 3549, 1113, 2041, 2041, 2041, 2041, 2041,
04644      3549, 3549, 2041, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04645      3549, 3549, 2041, 3549, 3549, 3549, 3549, 3549, 2041, 3549,
04646      3549, 3549, 3549, 3549, 2041, 1137, 1137, 1137, 1137, 3549,
04647      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1137,
04648 
04649      3549, 1137, 1137, 3549, 3549, 3549, 3549, 3549, 1137, 1690,
04650      1690, 1690, 1690, 3549, 3549, 3549, 1690, 3549, 3549, 3549,
04651      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04652      3549, 3549, 1690, 2043, 2043, 2043, 2043, 3549, 3549, 3549,
04653      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 2043,
04654      2043, 3549, 3549, 3549, 3549, 3549, 2043, 2050, 2050, 3549,
04655      2050, 3549, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050,
04656      2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050,
04657      2050, 2050, 2050, 3549, 2050, 2050, 2050, 2050, 1180, 1180,
04658      1180, 1180, 1180, 3549, 3549, 1180, 3549, 3549, 3549, 3549,
04659 
04660      3549, 3549, 3549, 3549, 3549, 1180, 3549, 3549, 3549, 3549,
04661      3549, 1180, 3549, 3549, 3549, 3549, 3549, 1180, 1740, 1740,
04662      1740, 1740, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04663      3549, 3549, 3549, 3549, 1740, 3549, 3549, 1740, 3549, 3549,
04664      3549, 1740, 2100, 2100, 2100, 2100, 3549, 3549, 3549, 2100,
04665      2100, 3549, 3549, 3549, 2100, 3549, 3549, 3549, 3549, 3549,
04666      3549, 3549, 3549, 3549, 3549, 2100, 2106, 2106, 2106, 2106,
04667      3549, 3549, 3549, 2106, 3549, 3549, 3549, 2106, 3549, 3549,
04668      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 2106,
04669      1748, 1748, 1748, 1748, 3549, 3549, 3549, 3549, 3549, 3549,
04670 
04671      3549, 1748, 1748, 3549, 3549, 3549, 1748, 1748, 3549, 1748,
04672      3549, 3549, 3549, 1748, 2108, 3549, 3549, 2108, 3549, 3549,
04673      3549, 3549, 2108, 3549, 3549, 3549, 2108, 2108, 3549, 3549,
04674      2108, 3549, 3549, 3549, 3549, 2108, 3549, 2108, 2110, 2110,
04675      2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110,
04676      2110, 3549, 2110, 2110, 3549, 2110, 2110, 2110, 2110, 2110,
04677      2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2116,
04678      2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
04679      2116, 2116, 2116, 2116, 2116, 3549, 2116, 2116, 2116, 2116,
04680      2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
04681 
04682      1764, 1764, 1764, 1764, 3549, 3549, 3549, 3549, 3549, 3549,
04683      1764, 3549, 3549, 3549, 3549, 3549, 1764, 3549, 3549, 3549,
04684      3549, 3549, 3549, 1764, 1202, 1202, 1202, 1202, 3549, 3549,
04685      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04686      1202, 1202, 3549, 1202, 3549, 3549, 3549, 1202, 1820, 1820,
04687      1820, 1820, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04688      3549, 3549, 3549, 3549, 1820, 3549, 3549, 1820, 3549, 3549,
04689      3549, 1820, 1249, 1249, 1249, 1249, 1249, 3549, 3549, 1249,
04690      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1249,
04691      3549, 3549, 3549, 3549, 3549, 1249, 3549, 3549, 3549, 3549,
04692 
04693      3549, 1249, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195,
04694      2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195,
04695      2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195,
04696      2195, 2195, 2195, 1293, 1293, 3549, 1293, 1293, 1293, 1293,
04697      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04698      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04699      1293, 1293, 1293, 1293, 2198, 2198, 3549, 2198, 3549, 2198,
04700      2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
04701      2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
04702      3549, 2198, 2198, 2198, 2198, 1861, 1861, 3549, 1861, 1861,
04703 
04704      1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
04705      1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
04706      1861, 1861, 1861, 1861, 1861, 1861, 1866, 1866, 1866, 1866,
04707      3549, 3549, 3549, 1866, 3549, 3549, 3549, 3549, 3549, 3549,
04708      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1866,
04709      2204, 2204, 2204, 2204, 3549, 3549, 3549, 3549, 3549, 3549,
04710      3549, 3549, 3549, 3549, 2204, 3549, 2204, 2204, 3549, 3549,
04711      3549, 3549, 3549, 2204, 1305, 1305, 1305, 1305, 3549, 3549,
04712      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1305, 3549,
04713      1305, 1305, 3549, 3549, 3549, 3549, 3549, 1305, 1315, 1315,
04714 
04715      1315, 1315, 1315, 3549, 3549, 1315, 3549, 3549, 3549, 3549,
04716      3549, 3549, 3549, 3549, 3549, 1315, 3549, 3549, 3549, 3549,
04717      3549, 1315, 3549, 3549, 3549, 3549, 3549, 1315, 2206, 2206,
04718      3549, 2206, 3549, 2206, 2206, 2206, 2206, 2206, 2206, 2206,
04719      2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206,
04720      2206, 2206, 2206, 2206, 3549, 2206, 2206, 2206, 2206, 1368,
04721      3549, 3549, 3549, 3549, 1368, 1368, 1368, 1368, 1368, 1368,
04722      1368, 1368, 3549, 1368, 3549, 3549, 1368, 1368, 1368, 1368,
04723      1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368,
04724      1892, 1892, 1892, 1892, 3549, 3549, 3549, 1892, 3549, 3549,
04725 
04726      3549, 3549, 1892, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04727      3549, 3549, 3549, 1892, 2219, 2219, 2219, 2219, 3549, 3549,
04728      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 2219, 3549,
04729      2219, 3549, 3549, 3549, 3549, 3549, 3549, 2219, 1914, 3549,
04730      3549, 3549, 1914, 1914, 3549, 3549, 1914, 3549, 3549, 3549,
04731      3549, 1914, 3549, 1914, 2239, 2239, 3549, 2239, 3549, 2239,
04732      2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239,
04733      2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239,
04734      3549, 2239, 2239, 2239, 2239, 1933, 1933, 3549, 1933, 1933,
04735      1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933,
04736 
04737      1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933,
04738      1933, 1933, 1933, 1933, 1933, 1933, 1938, 1938, 1938, 1938,
04739      3549, 3549, 3549, 1938, 3549, 3549, 3549, 3549, 1938, 3549,
04740      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1938,
04741      2244, 2244, 2244, 2244, 3549, 3549, 3549, 3549, 3549, 3549,
04742      3549, 3549, 3549, 3549, 3549, 3549, 2244, 2244, 3549, 3549,
04743      3549, 3549, 3549, 2244, 1477, 1477, 1477, 1477, 1477, 3549,
04744      3549, 1477, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04745      3549, 1477, 3549, 3549, 3549, 3549, 3549, 1477, 3549, 3549,
04746      3549, 3549, 3549, 1477, 2246, 2246, 3549, 2246, 3549, 2246,
04747 
04748      2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246,
04749      2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246,
04750      3549, 2246, 2246, 2246, 2246, 2252, 2252, 3549, 2252, 3549,
04751      2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252,
04752      2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252,
04753      2252, 3549, 2252, 2252, 2252, 2252, 2255, 2255, 3549, 2255,
04754      3549, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
04755      2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
04756      2255, 2255, 3549, 2255, 2255, 2255, 2255, 2258, 2258, 3549,
04757      2258, 3549, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
04758 
04759      2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
04760      2258, 2258, 2258, 3549, 2258, 2258, 2258, 2258, 2261, 2261,
04761      3549, 2261, 3549, 2261, 2261, 2261, 2261, 2261, 2261, 2261,
04762      2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261,
04763      2261, 2261, 2261, 2261, 3549, 2261, 2261, 2261, 2261, 1523,
04764      1523, 3549, 1523, 1523, 1523, 3549, 1523, 1523, 1523, 3549,
04765      1523, 1523, 1523, 1523, 1523, 3549, 1523, 1523, 1523, 1523,
04766      1523, 1523, 1523, 1523, 1523, 1523, 1523, 3549, 3549, 1523,
04767      2266, 2266, 3549, 2266, 3549, 2266, 2266, 2266, 2266, 2266,
04768      2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266,
04769 
04770      2266, 2266, 2266, 2266, 2266, 2266, 3549, 2266, 2266, 2266,
04771      2266, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279,
04772      2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 3549, 2279,
04773      2279, 2279, 2279, 2279, 2279, 3549, 2279, 2279, 2279, 2279,
04774      2279, 2279, 1987, 1987, 1987, 1987, 3549, 3549, 3549, 3549,
04775      3549, 3549, 3549, 1987, 3549, 1987, 3549, 3549, 1987, 3549,
04776      3549, 3549, 3549, 3549, 3549, 1987, 1991, 1991, 1991, 1991,
04777      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04778      3549, 3549, 1991, 3549, 3549, 3549, 3549, 3549, 3549, 1991,
04779      1601, 1601, 1601, 1601, 1601, 3549, 3549, 1601, 3549, 3549,
04780 
04781      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1601, 3549, 3549,
04782      3549, 3549, 3549, 1601, 3549, 3549, 3549, 3549, 3549, 1601,
04783      1619, 1619, 3549, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
04784      1619, 1619, 1619, 3549, 1619, 1619, 3549, 1619, 1619, 1619,
04785      1619, 1619, 1619, 3549, 1619, 1619, 3549, 1619, 1619, 1619,
04786      1619, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
04787      1640, 1640, 1640, 1640, 1640, 1640, 1640, 3549, 1640, 1640,
04788      1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640,
04789      1640, 1640, 2023, 2023, 2023, 2023, 3549, 3549, 3549, 3549,
04790      3549, 3549, 2023, 3549, 3549, 3549, 3549, 3549, 2023, 2023,
04791 
04792      2023, 2023, 3549, 3549, 3549, 2023, 2025, 2025, 2025, 2025,
04793      3549, 3549, 3549, 3549, 3549, 3549, 2025, 3549, 3549, 3549,
04794      3549, 3549, 2025, 2025, 3549, 3549, 3549, 3549, 3549, 2025,
04795      1103, 1103, 1103, 1103, 3549, 3549, 3549, 3549, 3549, 3549,
04796      1103, 3549, 3549, 3549, 3549, 3549, 1103, 1103, 3549, 3549,
04797      3549, 3549, 3549, 1103, 1113, 3549, 3549, 3549, 1113, 3549,
04798      1113, 3549, 3549, 1113, 3549, 3549, 3549, 1113, 2041, 2041,
04799      2041, 2041, 2041, 3549, 3549, 2041, 3549, 3549, 3549, 3549,
04800      3549, 3549, 3549, 3549, 3549, 2041, 3549, 3549, 3549, 3549,
04801      3549, 2041, 3549, 3549, 3549, 3549, 3549, 2041, 2307, 2307,
04802 
04803      2307, 2307, 3549, 3549, 3549, 2307, 3549, 3549, 3549, 3549,
04804      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04805      3549, 2307, 2311, 2311, 2311, 2311, 3549, 3549, 3549, 3549,
04806      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 2311, 2311,
04807      3549, 3549, 3549, 3549, 3549, 2311, 1137, 1137, 1137, 1137,
04808      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04809      1137, 3549, 1137, 1137, 3549, 3549, 3549, 3549, 3549, 1137,
04810      2043, 2043, 2043, 2043, 3549, 3549, 3549, 3549, 3549, 3549,
04811      3549, 3549, 3549, 3549, 3549, 3549, 2043, 2043, 3549, 3549,
04812      3549, 3549, 3549, 2043, 1690, 1690, 1690, 1690, 3549, 3549,
04813 
04814      3549, 1690, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04815      3549, 3549, 3549, 3549, 3549, 3549, 3549, 1690, 2317, 2317,
04816      3549, 2317, 3549, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
04817      2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
04818      2317, 2317, 2317, 2317, 3549, 2317, 2317, 2317, 2317, 2100,
04819      2100, 2100, 2100, 3549, 3549, 3549, 2100, 2100, 3549, 3549,
04820      3549, 2100, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04821      3549, 3549, 2100, 2367, 2367, 2367, 2367, 3549, 3549, 3549,
04822      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 2367,
04823      2367, 3549, 2367, 3549, 3549, 3549, 2367, 2106, 2106, 2106,
04824 
04825      2106, 3549, 3549, 3549, 2106, 3549, 3549, 3549, 2106, 3549,
04826      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04827      2106, 2374, 2374, 2374, 2374, 3549, 3549, 3549, 2374, 2374,
04828      3549, 3549, 3549, 2374, 3549, 3549, 3549, 3549, 3549, 3549,
04829      3549, 3549, 3549, 3549, 2374, 2108, 3549, 3549, 2108, 3549,
04830      3549, 3549, 3549, 2108, 3549, 3549, 3549, 2108, 2108, 3549,
04831      3549, 2108, 3549, 3549, 3549, 3549, 2108, 3549, 2108, 2376,
04832      2376, 3549, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
04833      2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
04834      2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
04835 
04836      2378, 2378, 3549, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
04837      2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
04838      2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
04839      2378, 1764, 1764, 1764, 1764, 3549, 3549, 3549, 3549, 3549,
04840      3549, 1764, 3549, 3549, 3549, 3549, 3549, 1764, 3549, 3549,
04841      3549, 3549, 3549, 3549, 1764, 1202, 1202, 1202, 1202, 3549,
04842      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04843      3549, 1202, 1202, 3549, 1202, 3549, 3549, 3549, 1202, 2195,
04844      2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195,
04845      2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195,
04846 
04847      2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195,
04848      1293, 1293, 3549, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04849      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04850      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04851      1293, 2456, 2456, 3549, 2456, 3549, 2456, 2456, 2456, 2456,
04852      2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456,
04853      2456, 2456, 2456, 2456, 2456, 2456, 2456, 3549, 2456, 2456,
04854      2456, 2456, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459,
04855      2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 3549,
04856      2459, 2459, 2459, 2459, 2459, 2459, 3549, 2459, 2459, 2459,
04857 
04858      2459, 2459, 2459, 2204, 2204, 2204, 2204, 3549, 3549, 3549,
04859      3549, 3549, 3549, 3549, 3549, 3549, 3549, 2204, 3549, 2204,
04860      2204, 3549, 3549, 3549, 3549, 3549, 2204, 1305, 1305, 1305,
04861      1305, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04862      3549, 1305, 3549, 1305, 1305, 3549, 3549, 3549, 3549, 3549,
04863      1305, 2461, 2461, 3549, 2461, 3549, 2461, 2461, 2461, 2461,
04864      2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461,
04865      2461, 2461, 2461, 2461, 2461, 2461, 2461, 3549, 2461, 2461,
04866      2461, 2461, 1368, 3549, 3549, 3549, 3549, 1368, 1368, 1368,
04867      1368, 1368, 1368, 1368, 1368, 3549, 1368, 3549, 3549, 1368,
04868 
04869      1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368,
04870      1368, 1368, 1368, 2219, 2219, 2219, 2219, 3549, 3549, 3549,
04871      3549, 3549, 3549, 3549, 3549, 3549, 3549, 2219, 3549, 2219,
04872      3549, 3549, 3549, 3549, 3549, 3549, 2219, 2487, 2487, 3549,
04873      2487, 3549, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
04874      2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
04875      2487, 2487, 2487, 3549, 2487, 2487, 2487, 2487, 2244, 2244,
04876      2244, 2244, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04877      3549, 3549, 3549, 3549, 2244, 2244, 3549, 3549, 3549, 3549,
04878      3549, 2244, 2490, 2490, 3549, 2490, 3549, 2490, 2490, 2490,
04879 
04880      2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
04881      2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 3549, 2490,
04882      2490, 2490, 2490, 2493, 2493, 3549, 2493, 3549, 2493, 2493,
04883      2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493,
04884      2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 3549,
04885      2493, 2493, 2493, 2493, 2495, 2495, 3549, 2495, 3549, 2495,
04886      2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495,
04887      2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495,
04888      3549, 2495, 2495, 2495, 2495, 2497, 2497, 3549, 2497, 3549,
04889      2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
04890 
04891      2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
04892      2497, 3549, 2497, 2497, 2497, 2497, 2499, 2499, 3549, 2499,
04893      3549, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499,
04894      2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499,
04895      2499, 2499, 3549, 2499, 2499, 2499, 2499, 1523, 1523, 3549,
04896      1523, 1523, 1523, 1523, 1523, 1523, 1523, 3549, 1523, 1523,
04897      1523, 1523, 1523, 3549, 1523, 1523, 1523, 1523, 1523, 1523,
04898      1523, 1523, 1523, 1523, 1523, 3549, 3549, 1523, 2503, 2503,
04899      3549, 2503, 3549, 2503, 2503, 2503, 2503, 2503, 2503, 2503,
04900      2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503,
04901 
04902      2503, 2503, 2503, 2503, 3549, 2503, 2503, 2503, 2503, 2507,
04903      2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
04904      2507, 2507, 2507, 2507, 2507, 2507, 3549, 2507, 2507, 2507,
04905      2507, 2507, 2507, 3549, 2507, 2507, 2507, 2507, 2507, 2507,
04906      1592, 3549, 3549, 1592, 3549, 3549, 3549, 1592, 1592, 3549,
04907      3549, 3549, 1592, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04908      3549, 3549, 3549, 1592, 1619, 1619, 3549, 1619, 1619, 1619,
04909      1619, 1619, 1619, 1619, 1619, 1619, 1619, 3549, 1619, 1619,
04910      3549, 1619, 1619, 1619, 1619, 1619, 1619, 3549, 1619, 1619,
04911      3549, 1619, 1619, 1619, 1619, 2527, 2527, 2527, 2527, 2527,
04912 
04913      2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527,
04914      2527, 2527, 3549, 2527, 2527, 2527, 2527, 2527, 2527, 3549,
04915      2527, 2527, 2527, 2527, 2527, 2527, 1103, 1103, 1103, 1103,
04916      3549, 3549, 3549, 3549, 3549, 3549, 1103, 3549, 3549, 3549,
04917      3549, 3549, 1103, 1103, 3549, 3549, 3549, 3549, 3549, 1103,
04918      1113, 3549, 3549, 3549, 1113, 3549, 1113, 3549, 3549, 1113,
04919      3549, 3549, 3549, 1113, 2307, 2307, 2307, 2307, 3549, 3549,
04920      3549, 2307, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04921      3549, 3549, 3549, 3549, 3549, 3549, 3549, 2307, 2311, 2311,
04922      2311, 2311, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04923 
04924      3549, 3549, 3549, 3549, 2311, 2311, 3549, 3549, 3549, 3549,
04925      3549, 2311, 1137, 1137, 1137, 1137, 3549, 3549, 3549, 3549,
04926      3549, 3549, 3549, 3549, 3549, 3549, 1137, 3549, 1137, 1137,
04927      3549, 3549, 3549, 3549, 3549, 1137, 2367, 2367, 2367, 2367,
04928      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04929      3549, 3549, 2367, 2367, 3549, 2367, 3549, 3549, 3549, 2367,
04930      2595, 3549, 3549, 2595, 3549, 3549, 3549, 3549, 2595, 3549,
04931      3549, 3549, 2595, 2595, 3549, 3549, 2595, 3549, 3549, 3549,
04932      3549, 2595, 3549, 2595, 2597, 2597, 2597, 2597, 3549, 3549,
04933      3549, 3549, 3549, 3549, 3549, 2597, 3549, 3549, 3549, 3549,
04934 
04935      2597, 2597, 3549, 2597, 3549, 3549, 3549, 2597, 2376, 2376,
04936      3549, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
04937      2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
04938      2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2378,
04939      2378, 3549, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
04940      2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
04941      2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
04942      1764, 1764, 1764, 1764, 3549, 3549, 3549, 3549, 3549, 3549,
04943      1764, 3549, 3549, 3549, 3549, 3549, 1764, 3549, 3549, 3549,
04944      3549, 3549, 3549, 1764, 1202, 1202, 1202, 1202, 3549, 3549,
04945 
04946      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04947      1202, 1202, 3549, 1202, 3549, 3549, 3549, 1202, 1293, 1293,
04948      3549, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04949      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
04950      1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1305,
04951      1305, 1305, 1305, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04952      3549, 3549, 3549, 1305, 3549, 1305, 1305, 3549, 3549, 3549,
04953      3549, 3549, 1305, 1364, 1364, 1364, 1364, 3549, 3549, 3549,
04954      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 1364,
04955      3549, 3549, 3549, 3549, 3549, 3549, 1364, 1368, 3549, 3549,
04956 
04957      3549, 3549, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368,
04958      3549, 1368, 3549, 3549, 1368, 1368, 1368, 1368, 1368, 1368,
04959      1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1938, 1938,
04960      1938, 1938, 3549, 3549, 3549, 1938, 3549, 3549, 3549, 3549,
04961      1938, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04962      3549, 1938, 2693, 2693, 3549, 2693, 2693, 2693, 3549, 2693,
04963      2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693,
04964      2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693,
04965      2693, 2693, 2693, 1619, 1619, 3549, 1619, 1619, 1619, 1619,
04966      1619, 1619, 1619, 1619, 1619, 1619, 3549, 1619, 1619, 3549,
04967 
04968      1619, 1619, 1619, 1619, 1619, 1619, 3549, 1619, 1619, 3549,
04969      1619, 1619, 1619, 1619, 1103, 1103, 1103, 1103, 3549, 3549,
04970      3549, 3549, 3549, 3549, 1103, 3549, 3549, 3549, 3549, 3549,
04971      1103, 1103, 3549, 3549, 3549, 3549, 3549, 1103, 2100, 2100,
04972      2100, 2100, 3549, 3549, 3549, 2100, 2100, 3549, 3549, 3549,
04973      2100, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04974      3549, 2100, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043,
04975      3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3549,
04976      3043, 3043, 3043, 3043, 3043, 3043, 3549, 3043, 3043, 3043,
04977      3043, 3043, 3043, 3216, 3216, 3216, 3216, 3216, 3216, 3216,
04978 
04979      3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216,
04980      3549, 3216, 3216, 3216, 3216, 3216, 3216, 3549, 3216, 3216,
04981      3216, 3216, 3216, 3216, 3337, 3337, 3337, 3337, 3549, 3549,
04982      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04983      3337, 3549, 3549, 3549, 3337, 3549, 3549, 3337,  243, 3549,
04984      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04985      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04986      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04987      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04988      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04989 
04990      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04991      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04992      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
04993      3549
04994     } ;
04995 
04996 static yyconst flex_int16_t yy_chk[25532] =
04997     {   0,
04998         0,    0,    1,    0,    2,    0,    1,    1,    2,    2,
04999       369,    1,    0,    2,  369,  249,  259,  259,    0,    1,
05000       249,    2,    3,    3,    3,    3,    3,    3,    3,    3,
05001         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05002         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05003         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05004         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05005         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05006         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05007         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
05008 
05009         3,    3,    3,    3,    5,    5,    5,    5,  258,    5,
05010         5,  529,  529,  258,    5,    6,    6,    6,    6,   17,
05011         6,    6,    5,   17,   17,    6,   18, 1626,   17,  251,
05012        18,   18,  251,    6,  269,   18,   17,  269,  311,  471,
05013       251,  311,  280,   18,   17,   79,   17,  280,  471,   79,
05014        79,   18, 1626,   18,   79,    5,  263,  263,  263,  263,
05015       293,  339,   79,  263,  339,  293,    6,    7,    7,    7,
05016         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05017         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05018         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05019 
05020         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05021         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05022         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05023         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
05024         7,    7,    7,    7,    7,    7,    7,    7,    7,    9,
05025         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05026         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05027         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05028         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05029         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05030 
05031         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05032         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05033         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
05034         9,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05035        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05036        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05037        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05038        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05039        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05040        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05041 
05042        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
05043        11,   11,   11,   13,   13,   13,   13,   13,   13,   13,
05044        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05045        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05046        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05047        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05048        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05049        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05050        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
05051        13,   13,   13,   13,   13,   15,   15,   15,   15,   15,
05052 
05053        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05054        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05055        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05056        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05057        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05058        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05059        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
05060        15,   15,   15,   15,   15,   15,   15,   19,   19,   19,
05061        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05062        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05063 
05064        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05065        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05066        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05067        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05068        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
05069        19,   19,   19,   19,   19,   19,   19,   19,   19,   21,
05070        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05071        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05072        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05073        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05074 
05075        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05076        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05077        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05078        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
05079        21,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05080        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05081        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05082        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05083        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05084        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05085 
05086        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05087        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
05088        23,   23,   23,   25,   25,   25,   25,  347,   25,   25,
05089       347, 2313,  297,   25,   26,   26,   26,   26,  297,   26,
05090        26,   25, 2314,  307,   26,   27,  317,  297,  307,   27,
05091        27,  317,   26,  328,   27,   27,   28, 1057,  328,   27,
05092        28,   28,   27,  346,  366,   28,   28,  366,  346,   27,
05093        28, 1057,   29,   28,  360,  494,   29,   29,  494,  360,
05094        28,   29,   39,   39,   39,   39,   29,   39,   39,   29,
05095        30,   25,   39,  374,   30,   30,   29,   25,  374,   30,
05096 
05097        39,   33,   26, 2315,   30,   33,   33,   30,   26,  638,
05098        33,   80,  409,  638,   30,   80,   80,  409,   33,  422,
05099        80,  366,   27,  710,  422,  710,   33, 2316,   80,  278,
05100       278,  278,  278,   28,   31,   31,   31,   31,   31,   31,
05101        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05102        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05103        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05104        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05105        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05106        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05107 
05108        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
05109        31,   31,   31,   31,   31,   31,   34, 2317,   45,  427,
05110        34,   34,   45,   45,  427,   34,  442,   45,   45,   45,
05111      1168,  442, 1425,   34, 1425,   45,  371,  371,  371,  371,
05112      1168,   34,   35,   35,   35,   35,   35,   35,   35,   35,
05113        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05114        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05115        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05116        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05117        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05118 
05119        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05120        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
05121        35,   35,   35,   35,   37,   37,   37,   37,   37,   37,
05122        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05123        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05124        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05125        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05126        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05127        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05128        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
05129 
05130        37,   37,   37,   37,   37,   37,   40,   40,   40,   40,
05131       449,   40,   40,   41,  455,  449,   40,   41,   41,  455,
05132       298, 2318,   41,   41,   40,  514,  298,   41,  514,   42,
05133        41,  514, 2323,   42,   42,  298,   41,   41,   42,   42,
05134       462,  517, 1056,   42,  517,  462,   42,  272,  272,  272,
05135       272, 1056,   42,   42,   43,   43,   43,   43,  479,   43,
05136        43,  501,  486,  479,   43,   43,   43,  486, 2324,   43,
05137       298,  272,   43,   44,   44,   44,   44,   69,   44,   44,
05138      1097,   69,   69,   44,   44,   44,   69, 2325,   44, 1097,
05139        41,   44,   46,  496,   69,   47,   46,   46,  496,   47,
05140 
05141        47,   46,   46,   46,   47,  519,   42,  548,  548,   46,
05142       519,   48,   47,   51,  501,   48,   48,   51,   51,   47,
05143        48, 2228,   51,   51,  253,  253,  253,  253,   48, 2228,
05144        51,  254,  254,  254,  254,   48,   52,   51,   51,   83,
05145        52,   52,  253,   83,   83,   52,   52,  525,   83,  254,
05146       525,  524, 1903,   52,  524,   69,   83,  524,  553,  553,
05147        52,   52,  528,   81,   81, 1903,   81,  528,   81,   81,
05148        84, 1434,   47,   81,   84,   84,   81,  675, 2326,   84,
05149       675,   81,  441,  441,  441,  441, 1434,   84,   48,   49,
05150        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05151 
05152        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05153        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05154        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05155        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05156        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05157        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05158        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
05159        49,   53,  537, 2327,   54,   53,   53,  537,   54,   54,
05160        53,  951,  951,   54,   55,   55,   55,   55,   53,   55,
05161        55,   54,  543,  555,   55, 2328,  555,  543,   56,   56,
05162 
05163        56,   56,   55,   56,   56,  711,  555,  711,   56,  261,
05164       261,  261,  261,  552,   55, 1426,   56, 1426,  552,  560,
05165        53,  936,   53,   54,  560,   54,  261, 2329,   56,   57,
05166        57,   57,   57,  261,   57,   57,  712,  936,  712,   57,
05167        58,   58,   58,   58,  577,   58,   58,   57,  711,  577,
05168        58,   59,   59,   59,   59,  588,   59,   59,   58,   57,
05169       588,   59,   55,   55,  270,  270,  270,  270, 1717,   59,
05170        58,  270,  262,  262,  262,  262,   56,   56, 1717,  712,
05171      1030,   59,   60,   60,   60,   60,   71,   60,   60,  262,
05172        71,   71,   60, 1030,  596,   71,  262,   72,   71,  596,
05173 
05174        60,   72,   72,   71, 2330, 1030,   72,   57,   57,   72,
05175        82,   82,   60,   82,   72,   82,   82, 2280,   58,   58,
05176        82,  696,   87,   82,  696, 2280,   87,   87,   82,   59,
05177        59,   87,   87,   87, 1045, 1045,   71,   97,  607,   87,
05178        88,   97,   97,  607,   88,   88,   97,   72,  613,   88,
05179        88,   88,  707,  613,   97,  707,  863,   88, 2331,  863,
05180        60,   60,   61,   61,   61,   61,   61,   61,   61,   61,
05181        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05182        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05183        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05184 
05185        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05186        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05187        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05188        61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
05189        61,   61,   61,   61,   63,   63,   63,   63,   63,   63,
05190        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05191        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05192        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05193        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05194        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05195 
05196        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05197        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
05198        63,   63,   63,   63,   63,   63,   65,   65, 1422,   65,
05199       623,   65,   65,  566, 2332,  623,   65,   66,   66,  624,
05200        66,  624,   66,   66,   65,  566, 1422,   66,   67,   67,
05201       566,   67, 1107,   67,   67,   66,   65,  624,   67,   70,
05202       635, 1107, 1269,   70,   70,  635,   67,   66,   70, 1108,
05203      2333, 1269,  271,  271,  271,  271,   70,   65,   67,   68,
05204        68, 2334,   68, 1108,   68,   68,   73,  647,   66,   68,
05205        73,   73,  647, 1333, 1333,   73,  271,   68,   73,   67,
05206 
05207      2216, 1272,   74,   73,   65,   65,   74,   74,   98,   68,
05208      1272,   74,   98,   98,   74,   66,   66,   98, 2216,   74,
05209       273,  273,  273,  273,   75,   98,   67,   67,   75,   75,
05210        68, 1343, 1343,   75,  649,  654,   73,   70,   76,  649,
05211       654,   75,   76,   76,  273, 2335,  663,   76,   75,  672,
05212       271,  663,   74,   75,  672,   76,  685,   68,   68,   77,
05213        77,  685,   76,   77,   77, 1733,  697,   76,   77,   78,
05214        78,  697,  734,   78,   78,   85,   77,  734,   78,   85,
05215        85, 1733,  753,  763,   85,   86,   78,  753,  763,   86,
05216        86,  101,   85,  774,   86,  101,  101, 1722,  774, 1722,
05217 
05218       101,   75,   86,  274,  274,  274,  274, 1722,  101,   77,
05219       274,   89,   89,   89,   89,   76,   89,   89, 2336,   78,
05220      1495,   89,   90,   90,   90,   90,  113,   90,   90,   89,
05221       113,  113,   90,  746, 1495,  113,  746,   89,  746,   89,
05222        90,  381,   91,  113,  783, 2017,   91,   91,   90,  783,
05223        90,   91,   85,   85, 1064, 1000,   92, 1064, 1000,   91,
05224        92,   92,   86,   86, 1654,   92,  795,   91,  101,   91,
05225      2017,  795,  804,   92, 1000,   93, 2338,  804, 1654,   93,
05226        93,   92,  817,   92,   93,   93,   93,  817, 1082,   94,
05227       381, 1082,   93,   94,   94, 1429,  381, 1429,   94,   94,
05228 
05229        94,  381,  381,   95,  381,  827,   94,   95,   95,   96,
05230       827,  838,   95,   96,   96, 2339,  838,  844,   96,  114,
05231        95, 2340,  844,  114,  114,  117,   96,  854,  114,  117,
05232       117, 2341,  854,  860,  117,  872,  114, 1429,  860,  121,
05233       872,  881,  117,  121,  121,  891,  881, 1160,  121,  117,
05234       891, 2342,   95, 2343,   95, 1160,  121, 1160,   96, 2344,
05235        96,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05236        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05237        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05238        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05239 
05240        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05241        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05242        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05243        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
05244        99,   99,   99,  102, 1323,  103,  901,  102,  102,  103,
05245       103,  901,  102, 1323,  103,  284,  284,  284,  284,  104,
05246       102, 2345,  103,  104,  104,  911,  284, 1181,  104, 2346,
05247       911, 1181,  105,  105,  105,  105,  104,  105,  105,  284,
05248      2347,  918,  105,  926,  865,  105,  918,  865,  926,  105,
05249       105,  106,  106,  106,  106,  865,  106,  106,  935, 2348,
05250 
05251       103,  106,  105,  935,  106,  944, 1394,  118,  106,  106,
05252       944,  118,  118,  122,  104, 1394,  118,  122,  122, 2349,
05253       102,  106,  122,  105,  118,  365,  365,  365,  365, 2350,
05254       122,  118,  365,  413,  413,  413,  413, 2351, 1120, 2352,
05255       413, 1120,  106,  107,  107,  107,  107,  107,  107,  107,
05256       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05257       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05258       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05259       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05260       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05261 
05262       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05263       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
05264       107,  107,  107,  107,  107,  109,  109,  109,  109,  109,
05265       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05266       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05267       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05268       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05269       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05270       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05271       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
05272 
05273       109,  109,  109,  109,  109,  109,  109,  111, 1494,  112,
05274       950,  111,  111,  112,  112,  950,  111, 1494,  112,  309,
05275       309,  309,  309,  125,  111,  956,  112,  125,  125, 2353,
05276       956, 1703,  125,  126,  125, 2354,  937,  126,  126,  937,
05277       125,  966,  126,  309,  126, 1703,  966,  129,  979,  937,
05278       126,  129,  129,  979,  978, 2356,  129,  978,  129, 1705,
05279       111,  978,  112,  978,  129,  151,  111,  978,  112,  151,
05280       151, 1345, 1345, 1705,  151,  151,  111,  111,  112,  112,
05281      1132, 2357,  151, 1132,  111,  111,  112,  112,  115,  115,
05282       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05283 
05284       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05285       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05286       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05287       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05288       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05289       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05290       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
05291       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05292       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05293       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05294 
05295       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05296       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05297       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05298       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05299       119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
05300       119,  119,  123,  123,  123,  123,  123,  123,  123,  123,
05301       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05302       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05303       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05304       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05305 
05306       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05307       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05308       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
05309       123,  123,  123,  123,  127,  127,  127,  127,  127,  127,
05310       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05311       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05312       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05313       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05314       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05315       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05316 
05317       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
05318       127,  127,  127,  127,  127,  127,  130,  991, 2358,  131,
05319       130,  130,  991,  131,  131,  130,  132,  130,  131,  999,
05320       132,  132, 1110,  130,  999,  132,  131,  133, 1110, 2360,
05321      1010,  133,  133,  132,  131, 1010,  133, 1110,  133, 2361,
05322      1017,  132,  135, 1017,  133,  134,  135,  135,  136,  134,
05323       134,  135,  136,  136,  134, 1015,  134,  136, 1017,  135,
05324      1015, 1917,  134, 1917,  152,  136,  135, 2362,  152,  152,
05325      1028, 1875,  136,  152,  152, 1028,  352,  352,  352,  352,
05326       133,  152,  133, 2363,  153, 1875,  133, 1023,  153,  153,
05327 
05328      1023, 1917,  133,  153,  352,  153,  133,  133,  134, 1046,
05329       134,  153, 1046, 2365,  134,  490,  490,  490,  490, 2368,
05330       134,  490, 1046, 1023,  134,  134,  137,  137,  137,  137,
05331       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05332       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05333       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05334       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05335       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05336       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05337       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
05338 
05339       137,  137,  137,  137,  137,  137,  137,  137,  139,  139,
05340       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05341       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05342       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05343       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05344       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05345       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05346       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05347       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
05348       141, 1021, 1029, 1034,  141,  141, 2369, 1029, 1034,  141,
05349 
05350       142,  141, 1878, 1021,  142,  142, 2376,  141, 1021,  142,
05351       154,  142, 1949, 1035,  154,  154, 1878,  142, 1035,  154,
05352      1043,  154, 2001,  141, 2400, 1043, 1949,  154,  353,  353,
05353       353,  353, 2401,  142,  141,  141, 2001,  141,  491,  491,
05354       491,  491, 1709, 1709,  142,  142,  353,  142,  143,  143,
05355       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05356       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05357       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05358       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05359       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05360 
05361       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05362       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05363       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
05364       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05365       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05366       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05367       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05368       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05369       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05370       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05371 
05372       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
05373       145,  145,  147,  147,  147,  147,  163,  147,  147, 2424,
05374       163,  163,  147,  147,  147,  163,  163,  147,  147, 1055,
05375       147, 1140, 1139,  163, 1055, 1139, 1140,  147,  147,  157,
05376       147,  147,  147,  157,  157, 1562, 1050, 1146,  157, 1050,
05377       164, 2425, 1146,  157,  164,  164,  157, 1050, 2439,  164,
05378       164,  158,  147,  157,  147,  158,  158,  164, 1754, 1754,
05379       158,  167,  167,  167,  167,  158,  167,  167,  158, 1148,
05380      2440,  167,  167,  167, 1148,  158, 1758, 1758, 1562,  167,
05381       147,  147,  148,  148,  148,  148,  171,  148,  148, 2441,
05382 
05383       171,  171,  148,  148,  148,  171, 2442,  148,  148, 1113,
05384       148, 1151, 2443,  171, 1151, 1113, 1562,  148,  148,  171,
05385       148,  148,  148,  159, 1113, 1721,  160,  159,  159,  172,
05386       160,  160,  159,  172,  172,  160, 1051, 1721,  172, 1051,
05387       159, 1721,  148,  160,  148, 2444,  172, 1051,  159, 1164,
05388       159,  160,  172,  160,  370,  370,  370,  370, 1164, 1158,
05389      1327,  370, 1158,  370, 1164, 1327, 1166,  370, 1151, 1166,
05390       148,  148,  149,  149,  149,  149,  149,  149,  149,  149,
05391       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05392       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05393 
05394       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05395       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05396       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05397       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05398       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
05399       149,  149,  149,  149,  155,  155,  155,  155,  155,  155,
05400       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05401       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05402       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05403       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05404 
05405       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05406       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05407       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
05408       155,  155,  155,  155,  155,  155,  161,  161,  161,  161,
05409       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05410       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05411       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05412       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05413       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05414       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05415 
05416       161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
05417       161,  161,  161,  161,  161,  161,  161,  161,  165, 1335,
05418      2445,  166,  165,  165, 1335,  166,  166,  165,  165,  165,
05419       166,  166,  166, 1292, 1329,  165, 1292, 1329,  166,  168,
05420       168,  168,  168,  205,  168,  168, 2002,  205,  205,  168,
05421       168,  168,  205,  169,  169,  169,  169,  168,  169,  169,
05422       205, 1390, 2018,  169,  169, 1053, 1390,  165, 1053, 2002,
05423       166,  169,  170,  170,  170,  170, 1053,  170,  170,  169,
05424       201,  169,  170,  170,  201,  201, 1653, 2018, 2446,  201,
05425       170,  201,  205, 1319,  205, 1653, 1319,  201,  170, 1319,
05426 
05427       170,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05428       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05429       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05430       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05431       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05432       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05433       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05434       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
05435       173,  173,  173,  175,  175,  175,  175,  175,  175,  175,
05436       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05437 
05438       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05439       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05440       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05441       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05442       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05443       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
05444       175,  175,  175,  175,  175,  177, 2448,  178, 1392,  177,
05445       177,  178,  178, 1392,  177, 1402,  178,  177, 1402,  178,
05446      1702,  179,  177,  180,  178,  179,  179,  180,  180, 1702,
05447       179, 1415,  180,  179, 1415,  180, 1704,  181,  179,  182,
05448 
05449       180,  181,  181,  182,  182, 1704,  181, 1424,  182,  181,
05450      1424,  182, 2449, 1115,  181,  177,  182,  178,  183, 1115,
05451       184, 1493,  183,  183,  184,  184, 1493,  183, 1115,  184,
05452       183,  179,  184,  180,  185,  183, 1622,  184,  185,  185,
05453      2450, 1622, 1171,  185,  185,  185, 2452,  181,  186,  182,
05454      1171,  185,  186,  186, 1874, 1171, 2456,  186,  186,  186,
05455      1115, 1605,  187, 1874, 1605,  186,  187,  187,  183,  188,
05456       184,  187,  189,  188,  188, 1877,  189,  189,  188,  187,
05457      1605,  189,  189,  189, 1877, 1340,  188,  190, 1340,  189,
05458       191,  190,  190, 1948,  191,  191,  190,  190,  190,  191,
05459 
05460      2029,  192, 1948, 1340,  190,  192,  192,  191, 1641, 2029,
05461       192,  193,  193, 1641,  193,  207,  193,  193,  192,  207,
05462       207,  193,  193,  193,  207,  194,  194, 2457,  194,  193,
05463       194,  194,  207, 2112, 2112,  194,  194,  194, 1328,  187,
05464       187, 1328, 1347,  194, 1328, 1347,  188,  188,  199,  199,
05465       199,  199,  235,  199,  199, 1347,  235,  235,  199,  199,
05466       199,  235, 2458,  199, 2461,  207,  199,  191,  191,  235,
05467       260,  260,  260,  260,  434,  434,  434,  434,  192,  192,
05468       195,  195,  195,  195, 2462,  195,  195,  260, 1729,  434,
05469       195,  195,  195, 1729,  260, 2469, 1569, 2470,  195,  200,
05470 
05471       200,  200,  200, 2471,  200,  200,  195, 2060,  195,  200,
05472       200,  200, 2060, 1609,  200,  202, 1609,  200,  206,  202,
05473       202, 2085,  206,  206,  202, 2085,  202,  206,  203,  203,
05474       203,  203,  202,  203,  203,  206, 2119, 2119,  203,  203,
05475       203, 1569, 1608,  203, 1033, 1608,  203, 1033,  260, 1430,
05476      2473, 1430,  195,  196,  196,  196,  196, 1033,  196,  196,
05477      2474, 1608, 1033,  196,  196,  196, 2475,  206, 1569,  206,
05478      1033,  196,  204,  204,  204,  204, 2118,  204,  204,  196,
05479      2476,  196,  204,  204,  204, 2118, 2477,  204,  211, 1430,
05480       204,  212,  211,  211, 2211,  212,  212,  211,  211,  211,
05481 
05482       212,  212,  212, 2211, 1456,  211,  233, 1456,  212, 1456,
05483       233,  233, 2478, 1527, 2479,  233, 1527,  233,  492,  492,
05484       492,  492, 2480,  233, 1527,  196,  197,  197,  197,  197,
05485       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05486       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05487       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05488       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05489       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05490       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05491       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
05492 
05493       197,  197,  197,  197,  197,  197,  197,  197,  208, 2298,
05494       209, 2377,  208,  208,  209,  209, 2377,  208, 2483,  209,
05495       359,  359,  359,  359,  210,  208,  213,  209,  210,  210,
05496       213,  213, 2298,  210, 1554,  213, 2485, 1554,  359,  995,
05497       214,  210,  995,  213,  214,  214, 2299, 1554, 2481,  214,
05498      2481,  213, 1098,  213, 1631, 1098, 1098,  214,  208,  215,
05499       209, 2487, 2488,  215,  215,  214,  995,  214,  215, 2299,
05500      1098,  215,  216,  216,  210,  216,  215,  216,  216, 2490,
05501      2491, 1614,  216, 1615, 1614,  216, 1615,  217,  215,  218,
05502       216,  217,  217,  218,  218,  995,  217, 1631,  218, 1614,
05503 
05504      2493, 1615,  216,  219,  217, 2494,  218,  219,  219,  215,
05505       221, 2495,  219,  995,  221,  221,  217,  220,  218,  221,
05506       219,  220,  220,  216,  222, 1631,  220,  221,  222,  222,
05507      2496,  234,  219,  222,  220,  234,  234,  217, 2497,  218,
05508       234,  222,  234, 2498, 2499,  236,  220,  237,  234,  236,
05509       236,  237,  237,  219,  236, 2500,  237,  363,  363,  363,
05510       363,  221,  236, 1589,  237,  238, 1589,  220, 1711,  238,
05511       238, 1711, 1589, 2502,  238,  222, 1589,  221, 2503, 2504,
05512      2505,  363,  238,  499,  499,  499,  499,  572,  572,  572,
05513       572,  222,  223,  223,  223,  223,  223,  223,  223,  223,
05514 
05515       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05516       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05517       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05518       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05519       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05520       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05521       223,  223,  223,  223,  223,  223,  223,  223,  223,  223,
05522       223,  223,  223,  223,  225,  225,  225,  225,  225,  225,
05523       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05524       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05525 
05526       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05527       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05528       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05529       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05530       225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
05531       225,  225,  225,  225,  225,  225,  227, 2506,  228, 2508,
05532       227,  227,  228,  228, 1647,  227,  227,  228,  228,  268,
05533       268,  268,  268,  227, 1647,  228,  364,  364,  364,  364,
05534       268,  338,  338,  338,  338, 2509,  268, 1647,  361,  361,
05535       361,  361, 2355,  268,  268,  268, 2510, 2511,  338, 1647,
05536 
05537       364,  372,  372,  372,  372,  338,  361, 2355,  435,  435,
05538       435,  435, 2512,  509,  509,  509,  509, 2513, 1997,  372,
05539       509, 1997,  227,  435,  228,  229,  229,  229,  229,  229,
05540       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05541       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05542       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05543       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05544       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05545       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05546       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
05547 
05548       229,  229,  229,  229,  229,  229,  229,  231,  231, 2514,
05549       231, 1273,  231,  231, 1273, 1273, 2515,  231,  232,  232,
05550      2516,  232, 2517,  232,  232,  231, 2518, 2519,  232, 1273,
05551       334,  334,  334,  334,  231, 1649,  232,  334,  239,  239,
05552      2232,  239, 2232,  239,  239,  232, 1620, 1642,  239, 1620,
05553      1642,  239,  240,  240, 2520,  240,  239,  240,  240, 2521,
05554      1642, 1153,  240,  231,  239,  240, 1153, 1153,  239, 1153,
05555       240, 2524, 1620, 1604,  232, 2301, 1604, 2526,  240,  231,
05556      1649,  231,  240, 1324, 2301,  231, 1324, 1324, 2232,  239,
05557       232, 1187,  232,  241, 1187, 1187,  232,  241,  241,  241,
05558 
05559      1604, 1324,  241,  240, 1187,  241, 2528, 1649,  334, 1916,
05560       241, 1916,  264,  264,  264,  264,  264, 1671,  241,  264,
05561      1671, 1187,  241,  265,  265,  265,  265, 2529, 2359, 1604,
05562       265,  331,  331,  331,  331, 1671,  264, 2359,  331, 2530,
05563       265, 2531, 1187,  241,  241,  242,  242, 1604,  242, 2532,
05564       242,  242,  242, 2534, 2484,  242, 1916, 2484,  242,  285,
05565       285,  285,  285,  242, 2535,  275,  275,  275,  275,  275,
05566       285,  242,  275, 2536, 2537,  242,  286,  286,  286,  286,
05567      2538, 1591, 1255,  285, 1591, 1255, 1255,  286, 1650,  275,
05568      1591, 1650,  264,  331, 1591, 1255,  242,  242, 2539, 2522,
05569 
05570       286, 1650, 2522,  265,  332,  332,  332,  332, 2540,  331,
05571      2546,  332, 1255, 2547,  285,  333,  333,  333,  333, 2233,
05572      2533, 2233,  333,  367,  367,  367,  367,  367, 1188, 2549,
05573       367, 1188, 1188, 1255,  286,  377,  377,  377,  377,  382,
05574       382,  382,  382, 2533, 2552,  275, 1188,  367,  383,  383,
05575       383,  383, 2553,  377,  385,  385,  385,  385, 1188,  386,
05576       386,  386,  386,  382, 2554,  382,  332, 2233,  417,  417,
05577       417,  417,  383, 2555,  383, 2557, 2558,  333,  385, 1188,
05578       385, 2559,  332,  386, 1395,  386,  417, 1395, 1395,  392,
05579       392,  392,  392,  333,  362,  362,  362,  362, 2560, 2561,
05580 
05581       362,  383, 1395,  367, 2563, 2565, 2568,  385,  387,  387,
05582       387,  387, 2569,  392,  386,  392, 2570, 2571,  362,  388,
05583       388,  388,  388, 2572,  362,  411,  411,  411,  411, 2574,
05584      2575, 2576,  387, 2015,  387, 2482, 2015, 2482,  362,  412,
05585       412,  412,  412,  388,  362,  388, 2015,  362,  362,  411,
05586       362,  362,  362, 2577, 2578,  392,  362,  362,  362,  362,
05587       362, 2556,  362,  412,  362,  362,  362,  362,  362, 2579,
05588      2556, 2096,  387, 2482, 2096,  387, 2096,  388, 2580, 2581,
05589      1683,  388,  389,  389,  389,  389, 1683,  390,  390,  390,
05590       390,  391,  391,  391,  391, 1683, 2582,  393,  393,  393,
05591 
05592       393,  394,  394,  394,  394, 2583,  389, 2016,  389, 2197,
05593      2016,  390, 2197,  390, 2197,  391, 2584,  391, 2585, 1837,
05594      2016,  393, 1837,  393, 2586,  394, 2587,  394,  395,  395,
05595       395,  395, 2588,  418,  418,  418,  418, 1837,  389, 1683,
05596       396,  396,  396,  396,  397,  397,  397,  397,  389,  391,
05597       393,  418,  395, 2591,  395, 2592,  389,  390,  389,  399,
05598       399,  399,  399,  394,  396, 2036,  396, 2593,  397, 2595,
05599       397, 2036,  398,  398,  398,  398,  400,  400,  400,  400,
05600      2036, 2598, 2304,  399, 2619,  399,  395, 2590, 2304,  401,
05601       401,  401,  401, 2620,  396,  395,  398, 2304,  398, 2642,
05602 
05603       400,  395,  400,  402,  402,  402,  402, 2643,  421,  421,
05604       421,  421, 2036,  401,  397,  401, 2658,  397, 2660, 2661,
05605      2662,  399,  416,  416,  416,  416,  421,  402, 2664,  402,
05606       398,  399, 2665, 2667,  400,  414,  414,  414,  414,  414,
05607      2264, 2673,  414, 2264, 2674, 2264,  416, 2573,  416,  432,
05608       432,  432,  432,  400, 2573,  401, 2590,  402, 2678,  414,
05609       401,  463,  463,  463,  463,  402, 2679,  432, 2680, 2683,
05610       402,  478,  478,  478,  478,  505,  505,  505,  505, 2684,
05611       463, 2685, 2686,  478,  506,  506,  506,  506,  507,  507,
05612       507,  507,  505,  523,  523,  523,  523, 2688, 2690,  505,
05613 
05614      2692,  506,  508,  508,  508,  508, 2691, 2693,  506, 2691,
05615      2694,  523,  507, 2691, 2696,  414,  458,  458,  458,  458,
05616       510,  510,  510,  510,  510, 2697,  508,  510,  512,  512,
05617       512,  512,  530,  530,  530,  530, 2698, 2699,  506,  573,
05618       573,  573,  573,  458,  510,  616,  616,  616,  616, 2689,
05619       530, 2689,  512,  617,  617,  617,  617,  629,  629,  629,
05620       629,  657,  657,  657,  657, 2700,  662,  662,  662,  662,
05621       458, 2701,  458, 2702,  629,  664,  664,  664,  664,  657,
05622      2703, 2704,  458,  458,  662, 2705,  458,  458,  458, 2689,
05623       458, 2706, 2707,  664,  676,  676,  676,  676, 2708, 2709,
05624 
05625       510,  688,  688,  688,  688,  690,  690,  690,  690,  725,
05626       725,  725,  725,  726,  726,  726,  726, 2713,  688,  732,
05627       732,  732,  732,  735,  735,  735,  735,  725, 2715,  690,
05628      2716,  726,  742,  742,  742,  742, 2717,  732, 2718,  742,
05629      2719,  735,  743,  743,  743,  743, 2720, 2722, 2723,  743,
05630       744,  744,  744,  744, 2724, 2725, 2726,  744,  745,  745,
05631       745,  745, 2727,  748,  748,  748,  748, 2730, 2734, 2739,
05632       748,  745,  748, 2740, 2741, 2742,  748,  749,  749,  749,
05633       749, 2743, 2744, 2745,  749, 1256,  749, 2746, 1256, 1256,
05634       749,  750,  750,  750,  750, 2747, 2748, 2749,  750, 2523,
05635 
05636       750, 2751, 2523, 1256,  750,  751,  751,  751,  751, 2753,
05637      2523, 2755,  751, 2695,  751, 1256, 2695, 2756,  751,  752,
05638       752,  752,  752,  754,  754,  754,  754,  756,  756,  756,
05639       756,  765,  765,  765,  765, 2710, 1256,  752, 2710, 2758,
05640      2760,  754,  765,  767,  767,  767,  767,  768,  768,  768,
05641       768,  769,  769,  769,  769,  765, 2761, 2763,  769,  765,
05642      2764,  772,  772,  772,  772,  772, 2766,  767,  772, 2767,
05643      2768,  768,  776,  776,  776,  776, 2769,  756,  782,  782,
05644       782,  782, 2770, 2772, 2775,  772,  785,  785,  785,  785,
05645       782,  788,  788,  788,  788, 2776,  776,  785,  789,  789,
05646 
05647       789,  789,  794,  794,  794,  794,  874,  874,  874,  874,
05648      2779,  785,  875,  875,  875,  875,  903,  903,  903,  903,
05649       794,  900,  900,  900,  900,  904,  904,  904,  904, 2780,
05650      2781,  903,  900, 2797, 2798, 2802,  785, 2778, 2803, 2807,
05651       904,  772,  910,  910,  910,  910,  900,  938,  938,  938,
05652       938, 2829, 2778, 2711,  945,  945, 2711,  945, 2830,  945,
05653       938, 2831,  945,  945, 2711,  938,  960,  960,  960,  960,
05654      2839,  900,  945,  960,  945,  961,  961,  961,  961, 2840,
05655      2844, 2845,  961,  968,  968,  968,  968,  970,  970,  970,
05656       970, 2849, 2850, 2851,  970,  968, 2856, 2857,  968,  900,
05657 
05658       971,  971,  971,  971, 2860, 2861, 2862,  971,  973,  973,
05659       973,  973,  982,  982,  982,  982,  960, 2863, 2864,  973,
05660       983,  983,  983,  983, 2865,  961,  984,  984,  984,  984,
05661      1031, 2866, 2867,  984, 2869, 2868,  982, 2868,  987,  987,
05662       987,  987,  987, 2872,  983,  987,  993,  993,  993,  993,
05663      1047, 1047, 1047, 1047, 2874, 2873, 1031, 1031, 2873, 1031,
05664      2876, 1031,  987, 1047, 1031, 1031, 2877, 1032, 1047, 2868,
05665       993, 2878, 1032, 1032, 1031, 1032, 1031, 1032, 2879, 2880,
05666      1032, 1032, 1054, 1054, 1054, 1054, 1060, 1060, 1060, 1060,
05667      1032, 2875, 1032, 2881, 2875, 1061, 1061, 1061, 1061, 2882,
05668 
05669      1054, 2883, 2884, 1060, 1062, 1062, 1062, 1062, 2885, 2888,
05670      1060, 1062, 1061, 1065, 1065, 1065, 1065, 2889,  987, 1061,
05671      1065, 1062, 1066, 1066, 1066, 1066, 2890, 2891, 2892, 1066,
05672      1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 2893, 2894,
05673      2896, 1067, 1069, 1069, 1069, 1069, 2898, 2899, 2900, 1069,
05674      1071, 1071, 1071, 1071, 2901, 1067, 1067, 2904, 1068, 2870,
05675      2908, 1071, 2870, 2909, 1060, 2910, 2870, 1071, 2911, 2912,
05676      1072, 1072, 1072, 1072, 1071, 1071, 1071, 1072, 1073, 1073,
05677      1073, 1073, 2913, 2915, 1062, 1073, 2916, 1072, 1074, 1074,
05678      1074, 1074, 2917, 2918, 2920, 1073, 1075, 1075, 1075, 1075,
05679 
05680      2921, 2922, 2924, 1075, 2926, 1074, 1076, 1076, 1076, 1076,
05681      1076, 2927, 2934, 1076, 1077, 1077, 1077, 1077, 1079, 1079,
05682      1079, 1079, 2937, 2940, 2941, 1083, 1083, 1083, 1083, 1079,
05683      1076, 1077, 1083, 1445, 2936, 1079, 1445, 1445, 1077, 1077,
05684      1077, 2946, 1079, 1079, 1079, 1084, 1084, 1084, 1084, 2936,
05685      1072, 1445, 1084, 1085, 1085, 1085, 1085, 2947, 1073, 1086,
05686      1086, 1086, 1086, 1445, 1085, 1087, 1087, 1087, 1087, 1089,
05687      1089, 1089, 1089, 1090, 1090, 1090, 1090, 2949, 1085, 1085,
05688      1090, 2964, 1751, 1086, 1445, 1751, 1076, 2968, 2969, 1087,
05689      2972, 2973, 2974, 1089, 1091, 1091, 1091, 1091, 2975, 2972,
05690 
05691      2977, 1091, 1092, 1092, 1092, 1092, 2997, 1093, 1093, 1093,
05692      1093, 2998, 1751, 1092, 1093, 1095, 1095, 1095, 1095, 1096,
05693      1096, 1096, 1096, 3004, 3005, 3008, 1095, 1099, 1099, 1099,
05694      1099, 1099, 3009, 1751, 1099, 3010, 3014, 1086, 3017, 1095,
05695      3018, 1101, 1101, 1101, 1101, 1103, 1103, 1103, 1103, 3019,
05696      3023, 1099, 1101, 3024, 3026, 3028, 1103, 1104, 1104, 1104,
05697      1104, 1105, 1105, 1105, 1105, 1101, 3031, 3032, 1104, 1103,
05698      3033, 3034, 1105, 1118, 1118, 1118, 1118, 1127, 1127, 1127,
05699      1127, 1104, 3035, 3036, 1127, 1105, 1128, 1128, 1128, 1128,
05700      3037, 3038, 3029, 1128, 3038, 3029, 3040, 1118, 1129, 1129,
05701 
05702      1129, 1129, 3038, 3039, 3041, 1129, 3039, 1099, 1130, 1130,
05703      1130, 1130, 3029, 3029, 3042, 1105, 1131, 1131, 1131, 1131,
05704      1133, 1133, 1133, 1133, 3044, 1130, 3045, 1133, 1104, 3046,
05705      3047, 3052, 1130, 1131, 1134, 1134, 1134, 1134, 3053, 1127,
05706      1131, 1134, 1135, 1135, 1135, 1135, 3054, 3056, 1128, 3057,
05707      1137, 1137, 1137, 1137, 3059, 1127, 1144, 1144, 1144, 1144,
05708      1145, 1145, 1145, 1145, 1128, 3060, 1135, 1137, 1147, 1147,
05709      1147, 1147, 3061, 3064, 1137, 3065, 1129, 3068, 1145, 3073,
05710      3076, 1131, 1133, 3077, 3078, 3080, 1147, 1150, 1150, 1150,
05711      1150, 3081, 1174, 1174, 1174, 1174, 3082, 3087, 1133, 1149,
05712 
05713      1149, 1149, 1149, 3100, 3101, 1149, 1172, 1172, 1172, 1172,
05714      3105, 1150, 3106, 1172, 1173, 1173, 1173, 1173, 1174, 1175,
05715      3107, 1173, 1175, 1149, 1177, 1177, 1177, 1177, 3108, 1149,
05716      1178, 1178, 1178, 1178, 3125, 3129, 3131, 1178, 1175, 1175,
05717      1175, 1175, 1175, 1149, 1186, 1186, 1186, 1186, 1177, 1149,
05718      3132, 3128, 1149, 1149, 3128, 1149, 1149, 1149, 3142, 3146,
05719      3147, 1149, 1149, 1149, 1149, 1149, 3151, 1149, 3152, 1149,
05720      1149, 1149, 1149, 1149, 3153, 3154, 1175, 1180, 1180, 1180,
05721      1180, 1182, 1182, 1182, 1182, 3155, 3159, 3160, 1182, 1752,
05722      1182, 3161, 1752, 3162, 1182, 1183, 1183, 1183, 1183, 3163,
05723 
05724      3168, 1180, 1183, 1180, 1183, 3169, 3172, 3175, 1183, 1184,
05725      1184, 1184, 1184, 1185, 1185, 1185, 1185, 3177, 1184, 1752,
05726      1184, 3156, 1184, 3185, 3156, 1185, 1185, 1191, 1191, 1191,
05727      1191, 1191, 3156, 3158, 1191, 1753, 3158, 1185, 1753, 1185,
05728      1752, 1195, 1195, 1195, 1195, 1196, 1196, 1196, 1196, 3186,
05729      3187, 1191, 1195, 3190, 3191, 3204, 1196, 1197, 1197, 1197,
05730      1197, 1198, 1198, 1198, 1198, 1753, 3148, 3148, 1197, 3148,
05731      3208, 3209, 1198, 1199, 1199, 1199, 1199, 1200, 1200, 1200,
05732      1200, 3210, 3149, 3149, 1199, 3149, 1753, 3211, 1200, 1201,
05733      1201, 1201, 1201, 1202, 1202, 1202, 1202, 1206, 1206, 1206,
05734 
05735      1206, 3218, 1204, 1204, 1204, 1204, 3219, 1191, 3233, 1196,
05736      3234, 2281, 3235, 1201, 2281, 1201, 3238, 1202, 2281, 1202,
05737      2281, 3245, 1197, 1197, 2281, 3246, 1204, 3247, 1204, 1198,
05738      1207, 1207, 1207, 1207, 3248, 1200, 1208, 1208, 1208, 1208,
05739      3251, 3252, 3253, 1199, 1204, 1204, 1199, 3254, 1204, 1209,
05740      1209, 1209, 1209, 3258, 1207, 1206, 1207, 3264, 3239, 3265,
05741      1208, 3239, 1208, 1210, 1210, 1210, 1210, 1211, 1211, 1211,
05742      1211, 3240, 3270, 1209, 3240, 1209, 1212, 1212, 1212, 1212,
05743      1213, 1213, 1213, 1213, 3271, 3241, 3241, 1210, 3241, 1210,
05744      3275, 1211, 3276, 1211, 1214, 1214, 1214, 1214, 1207, 3277,
05745 
05746      1212, 3278, 1212, 1209, 1213, 3284, 1213, 1208, 1215, 1215,
05747      1215, 1215, 1216, 1216, 1216, 1216, 3285, 3286, 1214, 1210,
05748      1214, 1242, 1242, 1242, 1242, 3157, 1211, 3288, 3157, 1210,
05749      3243, 3243, 1215, 3243, 1215, 3289, 1216, 3157, 1216, 3305,
05750      3306, 1213, 3309, 1755, 3310, 1242, 1755, 1212, 1217, 1217,
05751      1217, 1217, 1218, 1218, 1218, 1218, 3311, 1219, 1219, 1219,
05752      1219, 1755, 1244, 1244, 1244, 1244, 1215, 1214, 1216, 1244,
05753      3312, 3313, 1217, 1755, 1217, 3314, 1218, 3318, 1218, 3321,
05754      1216, 1219, 3322, 1219, 1216, 1220, 1220, 1220, 1220, 3323,
05755      1221, 1221, 1221, 1221, 1755, 3326, 1222, 1222, 1222, 1222,
05756 
05757      1223, 1223, 1223, 1223, 1224, 1224, 1224, 1224, 3327, 1220,
05758      1217, 1220, 3328, 1219, 1221, 3333, 1221, 3334, 1218, 1219,
05759      1222, 1219, 1222, 3335, 1223, 3354, 1223, 3355, 1224, 1219,
05760      1224, 3358, 1225, 1225, 1225, 1225, 1226, 1226, 1226, 1226,
05761      3359, 3360, 1220, 3362, 3363, 1221, 1227, 1227, 1227, 1227,
05762      3364, 1228, 1228, 1228, 1228, 3369, 1225, 1223, 1225, 3370,
05763      1226, 3383, 1226, 1229, 1229, 1229, 1229, 3384, 1222, 3387,
05764      1227, 3388, 1227, 3390, 3391, 1228, 1224, 1228, 1230, 1230,
05765      1230, 1230, 1231, 1231, 1231, 1231, 3397, 1229, 3398, 1229,
05766      1232, 1232, 1232, 1232, 3402, 3409, 3611, 1225, 1226, 3621,
05767 
05768      3622, 1227, 1230, 1226, 1230, 3623, 1231, 3622, 1231, 3249,
05769      1228, 3625, 3249, 3627, 1232, 1756, 1232, 3626, 1756, 3630,
05770      1228, 3249, 3628, 1229, 3626, 1233, 1233, 1233, 1233, 3628,
05771      3629, 3646, 1230, 1234, 1234, 1234, 1234, 1235, 1235, 1235,
05772      1235, 1236, 1236, 1236, 1236, 1756, 3629, 1231, 1230, 1233,
05773      3648, 1233, 1237, 1237, 1237, 1237, 3638, 1234, 1232, 1234,
05774      3653, 1235, 3665, 1235, 3668, 1236, 1756, 1236, 1245, 1245,
05775      1245, 1245, 3638, 3639, 3670, 1245, 1237, 3673, 1237, 1246,
05776      1246, 1246, 1246, 1247, 1247, 1247, 1247, 1233, 3675, 3639,
05777      1247, 1249, 1249, 1249, 1249, 1234, 1250, 1250, 1250, 1250,
05778 
05779      1250, 1235, 3678, 1250, 3681, 1246, 1251, 1251, 1251, 1251,
05780      3684, 1236, 3631, 3686, 3688, 1249, 1237, 1249, 3690, 3631,
05781      1250, 1252, 1252, 1252, 1252, 1258, 1258, 1258, 1258, 3703,
05782      1251, 3647, 1251, 1259, 1259, 1259, 1259, 3705, 3647, 3649,
05783      1258, 1260, 1260, 1260, 1260, 1252, 3649, 1252, 1262, 1262,
05784      1262, 1262, 1274, 1274, 1274, 1274, 1275, 1275, 1275, 1275,
05785      1286, 1286, 1286, 1286, 3717, 3726, 3307, 1262, 3666, 3307,
05786      3730, 1274, 1286, 3307, 3744, 3666, 1250, 1261, 1261, 1261,
05787      1261, 1287, 1287, 1287, 1287, 1290, 1290, 1290, 1290, 3752,
05788      3756, 1290, 1287, 1291, 1291, 1291, 1291, 1294, 3308, 1927,
05789 
05790      1294, 3308, 1927, 3760, 1261, 3308, 3756, 1287, 1296, 1296,
05791      1296, 1296, 1297, 1297, 1297, 1297, 1294, 1294, 1294, 1294,
05792      1294, 1300, 1300, 1300, 1300, 1304, 1304, 1304, 1304, 1927,
05793      3772, 1261, 1304, 1261, 3776, 1302, 1302, 1302, 1302, 1303,
05794      1303, 1303, 1303, 1261, 1261, 3778, 3676, 1261, 1261, 1261,
05795      1927, 1261, 1302, 3676, 3350, 3352, 1303, 3350, 3352, 1302,
05796      3783, 3350, 3352, 1303, 1305, 1305, 1305, 1305, 1307, 1307,
05797      1307, 1307, 1308, 1308, 1308, 1308, 1310, 1310, 1310, 1310,
05798      3669, 1305, 3669, 1310, 3796, 1307, 3834, 3679, 1305, 3669,
05799      3868, 3674, 1307, 1300, 3679, 3674, 1308, 1311, 1311, 1311,
05800 
05801      1311, 3872, 3674, 3687, 1311, 1313, 1313, 1313, 1313, 3674,
05802      3687, 3892, 1313, 1315, 1315, 1315, 1315, 1316, 1316, 1316,
05803      1316, 1316, 3757, 3893, 1316, 1317, 1317, 1317, 1317, 3685,
05804      3685, 1320, 3685, 1307, 1320, 3901, 3685, 1315, 3757, 3689,
05805      3691, 1316, 1322, 1322, 1322, 1322, 3689, 3691, 3930, 1317,
05806      1320, 1320, 1320, 1320, 1320, 1326, 1326, 1326, 1326, 1334,
05807      1334, 1334, 1334, 1356, 1356, 1356, 1356, 1369, 1369, 1369,
05808      1369, 3958, 3996, 1326, 4001, 4016, 4022, 1334, 1379, 1379,
05809      1379, 1379, 1380, 1380, 1380, 1380, 3704, 1381, 1381, 1381,
05810      1381, 3706, 3706, 3704, 1381, 1379, 4047, 1316, 3706, 1380,
05811 
05812      1381, 1382, 1382, 1382, 1382, 1391, 1391, 1391, 1391, 1403,
05813      1403, 1403, 1403, 1408, 1408, 1408, 1408, 2297, 1382, 2296,
05814      1391, 1409, 1409, 1409, 1409, 1411, 1411, 1411, 1411, 1412,
05815      1412, 1412, 1412, 1442, 1442, 1442, 1442, 1408, 1409, 1444,
05816      2295, 3719, 1444, 1444, 1450, 1450, 1450, 1450, 3719, 2294,
05817      2293, 1450, 1444, 1412, 1451, 1451, 1451, 1451, 2291, 3754,
05818      3758, 1451, 1452, 1452, 1452, 1452, 3754, 3758, 3766, 1444,
05819      1453, 1453, 1453, 1453, 3759, 1452, 1455, 1455, 1455, 1455,
05820      3808, 3759, 2288, 1453, 3766, 3876, 2287, 1403, 3762, 1455,
05821      1444, 1458, 1458, 1458, 1458, 3762, 3808, 2285, 1458, 3934,
05822 
05823      1458, 3876, 3777, 3761, 1458, 1459, 1459, 1459, 1459, 3777,
05824      3761, 3944, 1459, 3761, 1459, 3934, 3785, 3786, 1459, 1460,
05825      1460, 1460, 1460, 3785, 3786, 2284, 1460, 3944, 1460, 2283,
05826      2282, 2277, 1460, 1461, 1461, 1461, 1461, 1462, 1462, 1462,
05827      1462, 1463, 1463, 1463, 1463, 1466, 1466, 1466, 1466, 2276,
05828      1467, 1467, 1467, 1467, 2275, 3795, 1466, 1467, 1470, 1470,
05829      1470, 1470, 3795, 1467, 1472, 1472, 1472, 1472, 4040, 1466,
05830      3805, 1472, 1473, 1473, 1473, 1473, 3807, 3805, 3807, 1473,
05831      2274, 3813, 1470, 1461, 4040, 3807, 2273, 1462, 3813, 3815,
05832      3821, 1463, 1475, 1475, 1475, 1475, 3815, 3821, 2271, 1475,
05833 
05834      1477, 1477, 1477, 1477, 1478, 1478, 1478, 1478, 1478, 3822,
05835      4041, 1478, 1479, 1479, 1479, 1479, 3822, 1480, 1480, 1480,
05836      1480, 2270, 2269, 2266, 1477, 2265, 4041, 3823, 1478, 1480,
05837      1481, 1481, 1481, 1481, 3823, 2261, 1479, 1482, 1482, 1482,
05838      1482, 1481, 1489, 1489, 1489, 1489, 2258, 2255, 1482, 1491,
05839      1491, 1491, 1491, 1492, 1492, 1492, 1492, 1512, 1512, 1512,
05840      1512, 2252, 1482, 1517, 1517, 1517, 1517, 1520, 1520, 1520,
05841      1520, 1492, 1525, 1525, 1525, 1525, 1526, 2249, 3833, 1526,
05842      1529, 1529, 1529, 1529, 1478, 3833, 3840, 1482, 1535, 1535,
05843      1535, 1535, 2246, 3840, 2245, 1526, 1526, 1526, 1526, 1526,
05844 
05845      1537, 1537, 1537, 1537, 1541, 1541, 1541, 1541, 2239, 3841,
05846      3841, 1537, 1542, 1542, 1542, 1542, 3841, 3854, 2238, 1541,
05847      1543, 1543, 1543, 1543, 3854, 1537, 1555, 1555, 1555, 1555,
05848      1556, 1556, 1556, 1556, 1571, 1571, 1571, 1571, 2237, 1555,
05849      3871, 1571, 1572, 1572, 1572, 1572, 2236, 3871, 2234, 1572,
05850      1537, 1573, 1573, 1573, 1573, 1575, 1575, 1575, 1575, 1576,
05851      1576, 1576, 1576, 1573, 2230, 3812, 1573, 1575, 3883, 3812,
05852      1575, 1576, 2229, 2227, 1576, 3883, 3812, 2226, 1537, 1577,
05853      1577, 1577, 1577, 3812, 1571, 1579, 1579, 1579, 1579, 2224,
05854      2221, 2220, 1572, 1581, 1581, 1581, 1581, 1579, 3869, 3869,
05855 
05856      1579, 1582, 1582, 1582, 1582, 3869, 3912, 3917, 1582, 1583,
05857      1583, 1583, 1583, 3912, 3917, 2218, 1583, 1584, 1584, 1584,
05858      1584, 1585, 1585, 1585, 1585, 1586, 1586, 1586, 1586, 2217,
05859      2215, 2214, 1585, 2213, 2212, 2210, 1586, 1588, 1588, 1588,
05860      1588, 1594, 1594, 1594, 1594, 3902, 3925, 3902, 1588, 1596,
05861      1596, 1596, 1596, 3925, 3902, 3928, 1596, 1597, 1597, 1597,
05862      1597, 3931, 3928, 3931, 1597, 1594, 1599, 1599, 1599, 1599,
05863      3931, 2209, 2206, 1599, 1601, 1601, 1601, 1601, 1602, 1602,
05864      1602, 1602, 1602, 2201, 3941, 1602, 1603, 1603, 1603, 1603,
05865      1637, 3941, 2198, 1637, 1651, 1651, 1651, 1651, 1601, 3897,
05866 
05867      2195, 1930, 1602, 1637, 1930, 2194, 3897, 1651, 1637, 3897,
05868      1603, 1652, 1652, 1652, 1652, 2192, 1637, 1656, 1656, 1656,
05869      1656, 1657, 1657, 1657, 1657, 1658, 1658, 1658, 1658, 2191,
05870      2190, 1930, 1657, 2189, 3954, 3954, 1658, 1659, 1659, 1659,
05871      1659, 3954, 1656, 1656, 2187, 2111, 1657, 1657, 2111, 1658,
05872      1658, 1658, 1930, 2186, 1659, 2185, 2183, 2182, 1602, 1660,
05873      1660, 1660, 1660, 1661, 1661, 1661, 1661, 2181, 2180, 2178,
05874      1661, 1662, 1662, 1662, 1662, 2111, 1660, 3955, 1662, 1664,
05875      1664, 1664, 1664, 1664, 3955, 2177, 1664, 1665, 1665, 1665,
05876      1665, 1666, 1666, 1666, 1666, 2174, 2111, 2121, 1665, 2114,
05877 
05878      2108, 2105, 1666, 1664, 1667, 1667, 1667, 1667, 1668, 1668,
05879      1668, 1668, 1665, 1665, 2097, 1667, 2095, 2094, 3961, 1668,
05880      1674, 1674, 1674, 1674, 1674, 3961, 3984, 1674, 1677, 1677,
05881      1677, 1677, 1668, 3984, 1676, 1676, 1676, 1676, 2093, 1677,
05882      1687, 1687, 1687, 1687, 1674, 1676, 1684, 1684, 1684, 1684,
05883      1684, 2092, 1677, 1684, 2091, 2090, 2089, 1687, 1676, 1664,
05884      1688, 1688, 1688, 1688, 1687, 2088, 3971, 1688, 3971, 3992,
05885      1684, 1689, 1689, 1689, 1689, 3971, 3992, 2087, 1689, 1690,
05886      1690, 1690, 1690, 1693, 1693, 1693, 1693, 1701, 3819, 3819,
05887      1693, 3819, 1677, 2086, 4015, 3819, 1701, 1701, 1701, 1701,
05888 
05889      1674, 4015, 2115, 1690, 2084, 2115, 1676, 2083, 1687, 2082,
05890      1707, 1707, 1707, 1707, 1708, 1708, 1708, 1708, 1708, 2081,
05891      2080, 1708, 1739, 1739, 1739, 1739, 1684, 1706, 1706, 1706,
05892      1706, 2079, 2115, 1706, 1707, 2078, 2077, 2076, 1708, 1740,
05893      1740, 1740, 1740, 1743, 1743, 1743, 1743, 1741, 1739, 2075,
05894      1741, 1706, 1743, 2115, 1743, 2074, 1743, 1706, 2073, 2072,
05895      2071, 1746, 1746, 1746, 1746, 1740, 1741, 1741, 1741, 1741,
05896      1741, 1706, 1746, 1776, 1776, 1776, 1776, 1706, 2070, 4028,
05897      1706, 1706, 2069, 1706, 1706, 1706, 4028, 2068, 2067, 1706,
05898      1706, 1706, 1706, 1706, 1708, 1706, 2066, 1706, 1706, 1706,
05899 
05900      1706, 1706, 1744, 1744, 1744, 1744, 4042, 3894, 2065, 1744,
05901      2064, 1744, 3894, 4042, 3894, 1744, 1745, 1745, 1745, 1745,
05902      1747, 1747, 1747, 1747, 2063, 2062, 2061, 1747, 1745, 1745,
05903      2059, 1776, 1747, 1748, 1748, 1748, 1748, 3964, 1757, 2058,
05904      1745, 1757, 3964, 2057, 3964, 1748, 1748, 1762, 1762, 1762,
05905      1762, 1757, 1819, 1819, 1819, 1819, 2054, 1748, 1762, 1748,
05906      1760, 1760, 1760, 1760, 1760, 2053, 4044, 1760, 1757, 1764,
05907      1764, 1764, 1764, 4044, 1765, 1765, 1765, 1765, 1819, 3994,
05908      1764, 3994, 2050, 2049, 1760, 1765, 2048, 2047, 3994, 1757,
05909      1766, 1766, 1766, 1766, 1767, 1767, 1767, 1767, 2046, 2044,
05910 
05911      2040, 1766, 2035, 2034, 2027, 1767, 1768, 1768, 1768, 1768,
05912      1769, 1769, 1769, 1769, 2019, 3936, 3936, 1768, 3936, 2014,
05913      2013, 1769, 3936, 2012, 1770, 1770, 1770, 1770, 1765, 2011,
05914      1771, 1771, 1771, 1771, 2010, 1770, 1773, 1773, 1773, 1773,
05915      1760, 1771, 2009, 1774, 1774, 1774, 1774, 1775, 1775, 1775,
05916      1775, 2007, 1821, 1821, 1821, 1821, 1821, 4045, 1766, 1821,
05917      1773, 2006, 1773, 4051, 4045, 2003, 1767, 1774, 1773, 1774,
05918      4051, 1775, 1769, 1775, 2000, 1999, 1821, 1769, 1768, 1770,
05919      1778, 1778, 1778, 1778, 1998, 1775, 1994, 1993, 1774, 1779,
05920      1779, 1779, 1779, 1780, 1780, 1780, 1780, 1992, 4052, 1771,
05921 
05922      1783, 1783, 1783, 1783, 1778, 4052, 1778, 1781, 1781, 1781,
05923      1781, 3997, 3997, 1779, 3997, 1779, 1986, 1780, 3997, 1780,
05924      1782, 1782, 1782, 1782, 1783, 1984, 1783, 1840, 1840, 1840,
05925      1840, 1781, 1821, 1781, 1784, 1784, 1784, 1784, 1983, 1785,
05926      1785, 1785, 1785, 3977, 1782, 1982, 1782, 3977, 1786, 1786,
05927      1786, 1786, 3977, 1778, 1787, 1787, 1787, 1787, 1784, 3977,
05928      1784, 1779, 1783, 1785, 1780, 1785, 1788, 1788, 1788, 1788,
05929      1981, 1781, 1786, 1980, 1786, 1979, 1977, 1976, 1787, 1975,
05930      1787, 1789, 1789, 1789, 1789, 1790, 1790, 1790, 1790, 1974,
05931      1788, 1782, 1788, 1791, 1791, 1791, 1791, 1792, 1792, 1792,
05932 
05933      1792, 1972, 1784, 1970, 1969, 1789, 1785, 1789, 1966, 1790,
05934      1964, 1790, 1962, 1786, 1960, 4033, 4033, 1791, 4033, 1791,
05935      1787, 1792, 4033, 1792, 1788, 1958, 1793, 1793, 1793, 1793,
05936      1794, 1794, 1794, 1794, 1795, 1795, 1795, 1795, 1956, 1796,
05937      1796, 1796, 1796, 1790, 1954, 1789, 1820, 1820, 1820, 1820,
05938      1793, 1791, 1793, 1952, 1794, 1792, 1794, 4021, 1795, 1951,
05939      1795, 4021, 1950, 1796, 1946, 1796, 4021, 1797, 1797, 1797,
05940      1797, 1944, 1820, 4021, 1798, 1798, 1798, 1798, 1934, 1799,
05941      1799, 1799, 1799, 1800, 1800, 1800, 1800, 1933, 1932, 1929,
05942      1793, 1797, 1925, 1797, 1923, 1922, 1795, 1796, 1798, 1921,
05943 
05944      1798, 1920, 1794, 1799, 1919, 1799, 1918, 1800, 1915, 1800,
05945      1801, 1801, 1801, 1801, 1914, 1802, 1802, 1802, 1802, 1803,
05946      1803, 1803, 1803, 1797, 1804, 1804, 1804, 1804, 1843, 1843,
05947      1843, 1843, 1913, 1912, 1801, 1911, 1801, 1910, 1909, 1802,
05948      1799, 1802, 1908, 1803, 1798, 1803, 1907, 1906, 1804, 1905,
05949      1804, 1805, 1805, 1805, 1805, 1902, 1800, 1806, 1806, 1806,
05950      1806, 1901, 1900, 1896, 1801, 1807, 1807, 1807, 1807, 1848,
05951      1848, 1848, 1848, 1802, 1895, 1805, 1888, 1805, 1886, 1885,
05952      1884, 1806, 1883, 1806, 1808, 1808, 1808, 1808, 1882, 1807,
05953      1881, 1807, 1804, 1803, 1880, 1879, 1804, 1809, 1809, 1809,
05954 
05955      1809, 1810, 1810, 1810, 1810, 1876, 1872, 1870, 1808, 1863,
05956      1808, 1811, 1811, 1811, 1811, 1805, 1862, 1812, 1812, 1812,
05957      1812, 1809, 1856, 1809, 1854, 1810, 1852, 1810, 1813, 1813,
05958      1813, 1813, 1849, 1847, 1846, 1811, 1845, 1811, 1807, 1844,
05959      1842, 1812, 1841, 1812, 1814, 1814, 1814, 1814, 4039, 1839,
05960      1808, 4039, 1813, 1834, 1813, 4039, 1815, 1815, 1815, 1815,
05961      1816, 1816, 1816, 1816, 1817, 1817, 1817, 1817, 1814, 1809,
05962      1814, 4039, 1833, 1822, 1810, 1812, 1822, 1832, 1831, 1811,
05963      1815, 1830, 1815, 1829, 1816, 1828, 1816, 1827, 1817, 1823,
05964      1817, 1824, 1823, 1826, 1824, 1813, 1857, 1818, 1777, 1822,
05965 
05966      1761, 1825, 1750, 1822, 1825, 1857, 1857, 1857, 1857, 2117,
05967      1814, 1749, 2117, 1742, 1825, 1823, 1738, 1824, 1817, 1823,
05968      1737, 1824, 1736, 1735, 1822, 1734, 1732, 1825, 1731, 1815,
05969      1730, 1825, 1816, 1850, 1850, 1850, 1850, 1728, 4049, 2117,
05970      1823, 4049, 1824, 1853, 1850, 4049, 1853, 1858, 1858, 1858,
05971      1858, 1727, 1825, 1860, 1860, 1860, 1860, 1726, 1725, 1850,
05972      2117, 4049, 1853, 1853, 1853, 1853, 1853, 1864, 1864, 1864,
05973      1864, 1724, 1723, 1720, 1864, 1865, 1865, 1865, 1865, 1719,
05974      1718, 1716, 1865, 1866, 1866, 1866, 1866, 1867, 1867, 1867,
05975      1867, 1869, 1869, 1869, 1869, 1869, 1715, 1714, 1869, 1713,
05976 
05977      1866, 1712, 4050, 1710, 1867, 4050, 1700, 1866, 1873, 4050,
05978      1698, 1867, 1697, 1696, 1695, 1869, 1694, 1873, 1873, 1873,
05979      1873, 1889, 1889, 1889, 1889, 4050, 1692, 1685, 1889, 1890,
05980      1890, 1890, 1890, 1682, 1889, 1678, 1890, 1892, 1892, 1892,
05981      1892, 1675, 1890, 1673, 1655, 1867, 1898, 1898, 1898, 1898,
05982      1899, 1899, 1899, 1899, 1892, 1926, 1928, 1931, 1648, 1928,
05983      1931, 1898, 1639, 1638, 1926, 1926, 1926, 1926, 1636, 1635,
05984      1634, 1869, 1935, 1935, 1935, 1935, 1633, 1632, 1630, 1935,
05985      1629, 1628, 1928, 1931, 1627, 1935, 1928, 1931, 1936, 1936,
05986      1936, 1936, 1621, 1618, 1617, 1936, 1937, 1937, 1937, 1937,
05987 
05988      1616, 1936, 1938, 1938, 1938, 1938, 1613, 1928, 1931, 1937,
05989      1941, 1941, 1941, 1941, 1941, 1612, 1611, 1941, 1942, 1942,
05990      1942, 1942, 1988, 1988, 1988, 1988, 1938, 1947, 1610, 1942,
05991      1607, 1955, 1606, 1595, 1941, 1959, 1947, 1947, 1947, 1947,
05992      1955, 1955, 1955, 1955, 1959, 1959, 1959, 1959, 1963, 1593,
05993      1968, 1592, 1967, 1968, 1580, 1574, 1973, 1963, 1963, 1963,
05994      1963, 1967, 1967, 1967, 1967, 1973, 1973, 1973, 1973, 1968,
05995      1968, 1968, 1968, 1968, 1987, 1987, 1987, 1987, 1989, 1989,
05996      1989, 1989, 1990, 1990, 1990, 1990, 1987, 1570, 1568, 1987,
05997      1941, 1991, 1991, 1991, 1991, 1996, 1996, 1996, 1996, 1996,
05998 
05999      1567, 1566, 1996, 2022, 2022, 2022, 2022, 2023, 2023, 2023,
06000      2023, 2025, 2025, 2025, 2025, 1565, 1564, 1563, 2023, 1996,
06001      1561, 1560, 2025, 2038, 2038, 2038, 2038, 2022, 2022, 2022,
06002      2038, 2023, 2023, 2023, 1553, 2025, 2041, 2041, 2041, 2041,
06003      2043, 2043, 2043, 2043, 2045, 2045, 2045, 2045, 1552, 1534,
06004      1532, 2045, 2101, 2101, 2101, 2101, 2052, 2106, 1524, 1519,
06005      2041, 1516, 2106, 2101, 2043, 2052, 2052, 2052, 2052, 2106,
06006      2106, 2106, 2106, 2106, 1511, 1996, 2005, 2005, 2005, 2005,
06007      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06008      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06009 
06010      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06011      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06012      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06013      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06014      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
06015      2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2031, 2031,
06016      2031, 2031, 2032, 2032, 2032, 2032, 1501, 1500, 1499, 2031,
06017      1490, 1486, 1471, 2032, 2037, 2037, 2037, 2037, 2037, 1468,
06018      1464, 2037, 2031, 1441, 1436, 1435, 2032, 2039, 2039, 2039,
06019      2039, 2039, 1433, 1428, 2039, 1427, 1423, 1421, 2037, 2042,
06020 
06021      2042, 2042, 2042, 2056, 2056, 2056, 2056, 2124, 2124, 2124,
06022      2124, 2039, 2098, 2098, 2098, 2098, 2042, 1420, 2124, 2098,
06023      2032, 2098, 1419, 2042, 1418, 2098, 1410, 2056, 2031, 2099,
06024      2099, 2099, 2099, 1388, 1387, 1386, 2099, 1385, 2099, 1384,
06025      1383, 1378, 2099, 1377, 2122, 2122, 2122, 2122, 1376, 2100,
06026      2100, 2100, 2100, 1375, 2037, 2122, 2130, 2130, 2130, 2130,
06027      1374, 1373, 1367, 2042, 1366, 2124, 1365, 2039, 2055, 2055,
06028      2055, 2055, 1355, 2100, 2055, 2100, 2103, 2103, 2103, 2103,
06029      2130, 1354, 2130, 2103, 2104, 2104, 2104, 2104, 2103, 1352,
06030      1348, 2104, 2055, 1344, 1342, 2130, 2104, 1341, 2055, 1332,
06031 
06032      2107, 2107, 2107, 2107, 1321, 1309, 1306, 2107, 1301, 2107,
06033      1295, 1285, 2055, 2107, 1284, 2122, 1283, 1282, 2055, 1281,
06034      1280, 2055, 2055, 1279, 2055, 2055, 2055, 1278, 1277, 1270,
06035      2055, 2055, 2055, 2055, 2055, 1268, 2055, 1267, 2055, 2055,
06036      2055, 2055, 2055, 2109, 2109, 2109, 2109, 2123, 2123, 2123,
06037      2123, 2125, 2125, 2125, 2125, 2109, 1266, 1265, 2123, 1264,
06038      1263, 1243, 2125, 2126, 2126, 2126, 2126, 2109, 2127, 2127,
06039      2127, 2127, 1241, 1205, 2126, 2128, 2128, 2128, 2128, 2127,
06040      2129, 2129, 2129, 2129, 1203, 1192, 2128, 2179, 2179, 2179,
06041      2179, 2129, 2131, 2131, 2131, 2131, 2132, 2132, 2132, 2132,
06042 
06043      2133, 2133, 2133, 2133, 2134, 2134, 2134, 2134, 1176, 2278,
06044      2278, 2123, 1170, 2125, 2278, 1169, 2131, 2278, 2131, 1167,
06045      2132, 1165, 2132, 1163, 2133, 1162, 2133, 2278, 2134, 2278,
06046      2134, 1161, 1159, 2132, 2131, 1157, 1156, 2126, 1155, 2128,
06047      2127, 2135, 2135, 2135, 2135, 2136, 2136, 2136, 2136, 2137,
06048      2137, 2137, 2137, 2129, 1154, 2133, 2138, 2138, 2138, 2138,
06049      1152, 2139, 2139, 2139, 2139, 2135, 1143, 2135, 1142, 2136,
06050      1141, 2136, 1138, 2137, 2134, 2137, 2142, 2142, 2142, 2142,
06051      2138, 1136, 2138, 1124, 1119, 2139, 1114, 2139, 1112, 2141,
06052      2141, 2141, 2141, 2143, 2143, 2143, 2143, 1111, 1100, 2136,
06053 
06054      2142, 1088, 2142, 2184, 2184, 2184, 2184, 2188, 2188, 2188,
06055      2188, 1063, 2135, 2141, 1059, 2141, 1044, 2143, 1042, 2143,
06056      1020, 2137, 2138, 2139, 2140, 2140, 2140, 2140, 2140, 2140,
06057      2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
06058      2140, 2140, 2140, 2140, 2144, 2144, 2144, 2144, 2142, 2140,
06059      1019, 2140, 2140, 2140, 2140, 2140, 2145, 2145, 2145, 2145,
06060      1018, 2143, 2146, 2146, 2146, 2146, 1016, 2141, 2144, 1003,
06061      2144, 2147, 2147, 2147, 2147, 2140, 2140, 2140, 1002, 1001,
06062      2145,  992, 2145,  980,  969,  958, 2146,  934, 2146, 2148,
06063      2148, 2148, 2148,  890,  884, 2147,  883, 2147, 2149, 2149,
06064 
06065      2149, 2149,  882, 2140, 2140, 2140, 2144, 2150, 2150, 2150,
06066      2150,  859,  851, 2148,  843, 2148, 2151, 2151, 2151, 2151,
06067       835,  826, 2149,  816, 2149,  810, 2145,  805, 2146,  792,
06068       786, 2150,  775, 2150, 2152, 2152, 2152, 2152,  764,  739,
06069      2151, 2147, 2151, 2153, 2153, 2153, 2153,  738, 2154, 2154,
06070      2154, 2154, 2155, 2155, 2155, 2155,  737,  736, 2152,  733,
06071      2152,  729, 2148,  719,  718, 2149,  717, 2153,  716, 2153,
06072       705,  704, 2154, 2150, 2154,  703, 2155,  702, 2155, 2156,
06073      2156, 2156, 2156,  701,  700,  669, 2151, 2157, 2157, 2157,
06074      2157,  644,  639, 2158, 2158, 2158, 2158, 2153,  637,  636,
06075 
06076       627, 2152,  621, 2156,  614, 2156, 2159, 2159, 2159, 2159,
06077       601, 2157,  600, 2157,  565, 2154, 2155, 2158,  564, 2158,
06078      2160, 2160, 2160, 2160, 2161, 2161, 2161, 2161,  563,  561,
06079      2159,  559, 2159,  547, 2156, 2162, 2162, 2162, 2162, 2163,
06080      2163, 2163, 2163,  536, 2160,  520, 2160, 2158, 2161,  518,
06081      2161, 2164, 2164, 2164, 2164,  511,  497,  495, 2157, 2162,
06082       481, 2162,  472, 2163, 2159, 2163, 2165, 2165, 2165, 2165,
06083      2166, 2166, 2166, 2166,  470, 2164,  469, 2164, 2160, 2193,
06084      2193, 2193, 2193,  468,  467,  466, 2161,  465,  415,  410,
06085      2165, 2162, 2165,  384, 2166,  380, 2166, 2167, 2167, 2167,
06086 
06087      2167, 2163,  378,  376,  375, 2164, 2162, 2168, 2168, 2168,
06088      2168, 2169, 2169, 2169, 2169, 2170, 2170, 2170, 2170,  350,
06089       348, 2167,  336, 2167,  320,  283, 2166,  281, 2165,  266,
06090       243, 2168,    0, 2168,    0, 2169,    0, 2169,    0, 2170,
06091         0, 2170, 2171, 2171, 2171, 2171, 2172, 2172, 2172, 2172,
06092      2173, 2173, 2173, 2173, 2196, 2196, 2196, 2196,    0,    0,
06093         0, 2167,    0,    0, 2168, 2196, 2171,    0, 2171, 2200,
06094      2172,    0, 2172, 2168, 2173, 2170, 2173, 2169, 2200, 2200,
06095      2200, 2200, 2203, 2203, 2203, 2203, 2204, 2204, 2204, 2204,
06096      2205, 2205, 2205, 2205, 2219, 2219, 2219, 2219,    0, 2203,
06097 
06098      2171,    0,    0, 2204,    0,    0, 2203, 2205,    0,    0,
06099      2204, 2219,    0,    0, 2205, 2208,    0,    0,    0, 2172,
06100         0,    0, 2173, 2241, 2208, 2208, 2208, 2208, 2222, 2222,
06101      2222, 2222, 2241, 2241, 2241, 2241, 2242, 2242, 2242, 2242,
06102      2243, 2243, 2243, 2243, 2244, 2244, 2244, 2244, 2248, 2242,
06103      2447, 2447, 2447, 2447,    0,    0,    0, 2248, 2248, 2248,
06104      2248, 2205, 2254,    0, 2243,    0, 2257,    0, 2244,    0,
06105      2260, 2254, 2254, 2254, 2254, 2257, 2257, 2257, 2257, 2260,
06106      2260, 2260, 2260, 2263,    0,    0,    0, 2268, 2465, 2465,
06107      2465, 2465, 2263, 2263, 2263, 2263, 2268, 2268, 2268, 2268,
06108 
06109      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06110      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06111      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06112      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06113      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06114      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06115      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06116      2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
06117      2290, 2290, 2300, 2300,    0,    0,    0, 2300,    0,    0,
06118      2300,    0, 2302, 2302, 2302, 2302, 2303, 2303, 2303, 2303,
06119 
06120      2300,    0, 2300, 2302,    0,    0,    0, 2303, 2305, 2305,
06121      2305, 2305,    0,    0,    0, 2305, 2302,    0,    0,    0,
06122      2303, 2306, 2306, 2306, 2306,    0,    0,    0, 2306,    0,
06123      2308, 2308, 2308, 2308, 2310, 2310, 2310, 2310, 2310,    0,
06124         0, 2310, 2311, 2311, 2311, 2311, 2302, 2312, 2312, 2312,
06125      2312,    0,    0, 2303, 2308,    0,    0,    0, 2310, 2322,
06126      2322, 2322, 2322,    0, 2312,    0, 2311, 2366, 2366, 2366,
06127      2366, 2312, 2337, 2337, 2337, 2337, 2367, 2367, 2367, 2367,
06128      2371,    0,    0, 2322,    0, 2371, 2374, 2374, 2374, 2374,
06129         0, 2366, 2371, 2371, 2371, 2371, 2371,    0, 2374,    0,
06130 
06131      2367,    0, 2367,    0,    0, 2312, 2460, 2460, 2460, 2460,
06132      2374,    0, 2374,    0, 2310, 2321, 2321, 2321, 2321, 2372,
06133         0, 2321,    0, 2460, 2372, 2375, 2375, 2375, 2375,    0,
06134      2460, 2372, 2372, 2372, 2372, 2372,    0, 2375,    0, 2321,
06135      2380, 2380, 2380, 2380,    0, 2321,    0,    0,    0, 2375,
06136      2337, 2380, 2381, 2381, 2381, 2381,    0,    0,    0, 2321,
06137         0,    0,    0, 2381,    0, 2321,    0,    0, 2321, 2321,
06138         0, 2321, 2321, 2321, 2460,    0,    0, 2321, 2321, 2321,
06139      2321, 2321,    0, 2321,    0, 2321, 2321, 2321, 2321, 2321,
06140      2382, 2382, 2382, 2382, 2383, 2383, 2383, 2383,    0,    0,
06141 
06142         0, 2382,    0,    0,    0, 2383, 2385, 2385, 2385, 2385,
06143      2381, 2380, 2384, 2384, 2384, 2384,    0, 2385, 2386, 2386,
06144      2386, 2386,    0, 2384, 2387, 2387, 2387, 2387,    0, 2386,
06145      2388, 2388, 2388, 2388,    0, 2387, 2466, 2466, 2466, 2466,
06146      2548, 2548, 2548, 2548, 2389, 2389, 2389, 2389, 2390, 2390,
06147      2390, 2390,    0,    0, 2388,    0, 2388,    0,    0,    0,
06148      2382, 2383,    0,    0, 2385, 2388, 2384,    0, 2389,    0,
06149      2389,    0, 2390, 2385, 2390, 2391, 2391, 2391, 2391,    0,
06150      2386, 2392, 2392, 2392, 2392,    0, 2387, 2389,    0, 2390,
06151      2393, 2393, 2393, 2393, 2394, 2394, 2394, 2394, 2466, 2391,
06152 
06153         0, 2391,    0,    0,    0, 2392,    0, 2392, 2395, 2395,
06154      2395, 2395,    0,    0, 2393,    0, 2393,    0, 2394,    0,
06155      2394, 2396, 2396, 2396, 2396, 2397, 2397, 2397, 2397,    0,
06156         0,    0, 2395,    0, 2395, 2392,    0,    0,    0, 2391,
06157      2399, 2399, 2399, 2399,    0, 2396,    0, 2396,    0, 2397,
06158         0, 2397, 2402, 2402, 2402, 2402, 2404, 2404, 2404, 2404,
06159      2405, 2405, 2405, 2405, 2399, 2394, 2399,    0, 2393, 2406,
06160      2406, 2406, 2406,    0,    0,    0, 2402,    0, 2402, 2396,
06161      2404,    0, 2404,    0, 2405,    0, 2405, 2407, 2407, 2407,
06162      2407, 2397,    0, 2406,    0, 2406,    0,    0, 2408, 2408,
06163 
06164      2408, 2408, 2409, 2409, 2409, 2409,    0,    0, 2402,    0,
06165         0, 2407,    0, 2407, 2410, 2410, 2410, 2410, 2411, 2411,
06166      2411, 2411, 2408, 2402, 2408, 2406, 2409,    0, 2409,    0,
06167         0,    0, 2405, 2412, 2412, 2412, 2412,    0, 2410,    0,
06168      2410,    0, 2411,    0, 2411,    0, 2413, 2413, 2413, 2413,
06169         0,    0,    0, 2407,    0, 2408,    0, 2412,    0, 2412,
06170      2550, 2550, 2550, 2550, 2409,    0, 2414, 2414, 2414, 2414,
06171      2413, 2410, 2413, 2415, 2415, 2415, 2415,    0, 2416, 2416,
06172      2416, 2416,    0,    0, 2411, 2418, 2418, 2418, 2418,    0,
06173      2414, 2412, 2414, 2417, 2417, 2417, 2417, 2415,    0, 2415,
06174 
06175         0,    0, 2416,    0, 2416, 2413,    0,    0,    0, 2418,
06176         0, 2418, 2413, 2419, 2419, 2419, 2419, 2417,    0, 2417,
06177      2420, 2420, 2420, 2420, 2421, 2421, 2421, 2421, 2422, 2422,
06178      2422, 2422,    0,    0, 2414, 2416,    0, 2419,    0, 2419,
06179         0,    0,    0, 2415, 2420,    0, 2420,    0, 2421, 2418,
06180      2421, 2417, 2422,    0, 2422,    0, 2423, 2423, 2423, 2423,
06181         0, 2426, 2426, 2426, 2426, 2427, 2427, 2427, 2427, 2428,
06182      2428, 2428, 2428, 2429, 2429, 2429, 2429,    0,    0,    0,
06183      2423, 2419, 2423,    0, 2422, 2426,    0, 2426,    0, 2427,
06184         0, 2427, 2420, 2428, 2421, 2428,    0, 2429,    0, 2429,
06185 
06186      2430, 2430, 2430, 2430, 2431, 2431, 2431, 2431, 2433, 2433,
06187      2433, 2433, 2423, 2432, 2432, 2432, 2432, 2434, 2434, 2434,
06188      2434,    0,    0,    0, 2430, 2428, 2430,    0, 2431, 2427,
06189      2431, 2426, 2433,    0, 2433,    0,    0, 2432,    0, 2432,
06190         0, 2434,    0, 2434,    0, 2429, 2435, 2435, 2435, 2435,
06191      2436, 2436, 2436, 2436, 2430, 2437, 2437, 2437, 2437,    0,
06192         0,    0, 2431, 2564, 2564, 2564, 2564, 2432,    0,    0,
06193      2435,    0, 2435,    0, 2436,    0, 2436,    0,    0, 2437,
06194         0, 2437, 2451, 2451, 2451, 2451, 2433, 2453, 2453, 2453,
06195      2453,    0,    0, 2451, 2489, 2489, 2489, 2489, 2453,    0,
06196 
06197         0, 2489,    0,    0, 2436,    0,    0, 2489, 2541, 2541,
06198      2541, 2541, 2542, 2542, 2542, 2542,    0, 2437, 2435, 2541,
06199         0,    0,    0, 2542, 2544, 2544, 2544, 2544, 2544,    0,
06200         0, 2544, 2541,    0,    0,    0, 2542, 2545, 2545, 2545,
06201      2545, 2551, 2551, 2551, 2551,    0,    0,    0, 2544, 2562,
06202      2562, 2562, 2562, 2451, 2545, 2566, 2566, 2566, 2566,    0,
06203         0, 2545,    0,    0, 2541, 2551, 2567, 2567, 2567, 2567,
06204      2589, 2589, 2589, 2589, 2594, 2594, 2594, 2594,    0,    0,
06205         0, 2594,    0, 2594,    0,    0,    0, 2594,    0,    0,
06206      2542, 2596, 2596, 2596, 2596, 2597, 2597, 2597, 2597,    0,
06207 
06208         0,    0, 2545,    0, 2544,    0,    0, 2597,    0,    0,
06209         0, 2566,    0,    0,    0, 2596,    0,    0,    0, 2597,
06210         0, 2597, 2599, 2599, 2599, 2599, 2566, 2562, 2600, 2600,
06211      2600, 2600,    0, 2599,    0, 2601, 2601, 2601, 2601, 2600,
06212      2602, 2602, 2602, 2602,    0,    0, 2601,    0, 2589,    0,
06213         0, 2602, 2603, 2603, 2603, 2603, 2604, 2604, 2604, 2604,
06214         0,    0,    0, 2603,    0,    0,    0, 2604,    0, 2605,
06215      2605, 2605, 2605, 2606, 2606, 2606, 2606,    0,    0,    0,
06216      2605,    0,    0,    0, 2606, 2607, 2607, 2607, 2607, 2608,
06217      2608, 2608, 2608, 2600, 2601,    0, 2607, 2609, 2609, 2609,
06218 
06219      2609,    0, 2610, 2610, 2610, 2610, 2602, 2659, 2659, 2659,
06220      2659,    0, 2604, 2608,    0, 2608, 2611, 2611, 2611, 2611,
06221         0, 2609, 2608, 2609, 2603, 2605, 2610,    0, 2610, 2606,
06222         0,    0, 2609, 2610, 2612, 2612, 2612, 2612,    0,    0,
06223      2611,    0, 2611, 2613, 2613, 2613, 2613, 2615, 2615, 2615,
06224      2615, 2616, 2616, 2616, 2616, 2607,    0,    0, 2612,    0,
06225      2612, 2617, 2617, 2617, 2617,    0,    0, 2613,    0, 2613,
06226         0, 2615, 2617, 2615,    0, 2616,    0, 2616, 2611, 2618,
06227      2618, 2618, 2618,    0,    0, 2617,    0, 2617,    0,    0,
06228      2612, 2621, 2621, 2621, 2621, 2622, 2622, 2622, 2622,    0,
06229 
06230         0, 2616,    0, 2618,    0, 2618,    0, 2616,    0, 2616,
06231      2623, 2623, 2623, 2623,    0, 2621,    0, 2621, 2615, 2622,
06232         0, 2622, 2616,    0, 2616,    0, 2624, 2624, 2624, 2624,
06233         0, 2624,    0,    0, 2623,    0, 2623, 2625, 2625, 2625,
06234      2625, 2626, 2626, 2626, 2626, 2627, 2627, 2627, 2627,    0,
06235      2624, 2618, 2624, 2628, 2628, 2628, 2628, 2622,    0,    0,
06236         0, 2625,    0, 2625,    0, 2626,    0, 2626,    0, 2627,
06237         0, 2627, 2623, 2666, 2666, 2666, 2666, 2628,    0, 2628,
06238      2629, 2629, 2629, 2629, 2630, 2630, 2630, 2630, 2631, 2631,
06239      2631, 2631, 2632, 2632, 2632, 2632,    0, 2626, 2633, 2633,
06240 
06241      2633, 2633,    0, 2627, 2629,    0, 2629,    0, 2630,    0,
06242      2630,    0, 2631,    0, 2631,    0, 2632, 2628, 2632,    0,
06243         0,    0, 2633,    0, 2633, 2634, 2634, 2634, 2634, 2635,
06244      2635, 2635, 2635, 2636, 2636, 2636, 2636,    0, 2630,    0,
06245         0,    0, 2631, 2637, 2637, 2637, 2637,    0,    0, 2634,
06246         0, 2634,    0, 2635,    0, 2635,    0, 2636,    0, 2636,
06247      2638, 2638, 2638, 2638,    0,    0,    0, 2637,    0, 2637,
06248      2669, 2669, 2669, 2669,    0, 2633, 2639, 2639, 2639, 2639,
06249      2640, 2640, 2640, 2640, 2638,    0, 2638, 2641, 2641, 2641,
06250      2641, 2636, 2668, 2668, 2668, 2668, 2634, 2637,    0,    0,
06251 
06252      2639,    0, 2639, 2668, 2640,    0, 2640, 2672, 2672, 2672,
06253      2672, 2641,    0, 2641, 2644, 2644, 2644, 2644, 2638, 2645,
06254      2645, 2645, 2645, 2646, 2646, 2646, 2646, 2647, 2647, 2647,
06255      2647, 2641,    0, 2670, 2670, 2670, 2670,    0, 2644,    0,
06256      2644,    0,    0, 2645, 2670, 2645,    0, 2646, 2639, 2646,
06257         0, 2647, 2640, 2647, 2648, 2648, 2648, 2648, 2641, 2649,
06258      2649, 2649, 2649, 2650, 2650, 2650, 2650, 2651, 2651, 2651,
06259      2651,    0, 2644, 2653, 2653, 2653, 2653,    0, 2648,    0,
06260      2648,    0,    0, 2649,    0, 2649,    0, 2650,    0, 2650,
06261      2645, 2651,    0, 2651,    0,    0,    0, 2653,    0, 2653,
06262 
06263         0, 2654, 2654, 2654, 2654, 2647, 2655, 2655, 2655, 2655,
06264      2656, 2656, 2656, 2656, 2657, 2657, 2657, 2657, 2649,    0,
06265      2663, 2663, 2663, 2663,    0, 2654, 2648, 2654, 2650,    0,
06266      2655, 2663, 2655,    0, 2656,    0, 2656,    0, 2657,    0,
06267      2657, 2675, 2675, 2675, 2675, 2677, 2677, 2677, 2677, 2728,
06268      2728, 2728, 2728, 2729, 2729, 2729, 2729, 2654, 2675,    0,
06269      2728,    0,    0,    0, 2729, 2675,    0,    0, 2732, 2732,
06270      2732, 2732, 2654, 2728, 2656,    0,    0, 2729, 2657, 2733,
06271      2733, 2733, 2733, 2655,    0, 2732, 2735, 2735, 2735, 2735,
06272         0, 2663, 2732,    0,    0, 2675, 2736, 2736, 2736, 2736,
06273 
06274      2737, 2737, 2737, 2737, 2738, 2738, 2738, 2738,    0, 2677,
06275      2750, 2750, 2750, 2750, 2752, 2752, 2752, 2752,    0,    0,
06276         0, 2728, 2754, 2754, 2754, 2754, 2732,    0, 2738,    0,
06277         0, 2729, 2757, 2757, 2757, 2757, 2759, 2759, 2759, 2759,
06278         0, 2762, 2762, 2762, 2762, 2765, 2765, 2765, 2765, 2771,
06279      2771, 2771, 2771, 2773, 2773, 2773, 2773, 2774, 2774, 2774,
06280      2774,    0,    0,    0, 2752, 2762, 2777, 2777, 2777, 2777,
06281      2752,    0, 2752, 2771,    0, 2783, 2783, 2783, 2783,    0,
06282      2784, 2784, 2784, 2784,    0, 2752, 2783, 2752,    0,    0,
06283         0, 2784,    0, 2771, 2785, 2785, 2785, 2785, 2786, 2786,
06284 
06285      2786, 2786,    0,    0,    0, 2785,    0,    0,    0, 2786,
06286      2787, 2787, 2787, 2787, 2788, 2788, 2788, 2788,    0,    0,
06287      2771, 2787,    0,    0,    0, 2788, 2789, 2789, 2789, 2789,
06288         0,    0,    0, 2783, 2784, 2774,    0, 2789, 2790, 2790,
06289      2790, 2790, 2791, 2791, 2791, 2791,    0,    0, 2785, 2790,
06290      2792, 2792, 2792, 2792,    0,    0, 2786,    0,    0, 2793,
06291      2793, 2793, 2793,    0,    0,    0, 2791,    0, 2791,    0,
06292      2816, 2816, 2816, 2816, 2792,    0, 2792, 2794, 2794, 2794,
06293      2794, 2788, 2787, 2793,    0, 2793,    0,    0,    0, 2791,
06294      2795, 2795, 2795, 2795, 2816, 2792, 2790,    0,    0, 2793,
06295 
06296         0, 2794,    0, 2794, 2796, 2796, 2796, 2796, 2799, 2799,
06297      2799, 2799,    0,    0, 2795,    0, 2795,    0,    0, 2799,
06298         0, 2800, 2800, 2800, 2800,    0, 2800,    0, 2796,    0,
06299      2796, 2800, 2799,    0, 2799, 2801, 2801, 2801, 2801, 2804,
06300      2804, 2804, 2804, 2805, 2805, 2805, 2805,    0, 2794, 2806,
06301      2806, 2806, 2806,    0, 2806, 2808, 2808, 2808, 2808, 2801,
06302         0, 2801, 2795, 2804,    0, 2804,    0, 2805,    0, 2805,
06303         0,    0,    0, 2806,    0, 2806,    0,    0,    0, 2808,
06304         0, 2808,    0, 2809, 2809, 2809, 2809,    0, 2811, 2811,
06305      2811, 2811,    0, 2801, 2812, 2812, 2812, 2812,    0, 2813,
06306 
06307      2813, 2813, 2813,    0,    0,    0, 2804, 2809,    0, 2809,
06308         0, 2808, 2811,    0, 2811, 2805,    0,    0, 2812,    0,
06309      2812,    0,    0, 2813,    0, 2813, 2808,    0, 2808, 2810,
06310      2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810,
06311      2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2814,
06312      2814, 2814, 2814,    0, 2810, 2813, 2810, 2810, 2810, 2810,
06313      2810, 2815, 2815, 2815, 2815, 2811, 2817, 2817, 2817, 2817,
06314         0,    0,    0, 2814,    0, 2814, 2818, 2818, 2818, 2818,
06315      2810, 2810, 2810, 2810,    0, 2815,    0, 2815,    0,    0,
06316      2817,    0, 2817, 2819, 2819, 2819, 2819,    0,    0,    0,
06317 
06318      2818,    0, 2818, 2820, 2820, 2820, 2820,    0, 2810, 2810,
06319      2810,    0,    0, 2814,    0,    0,    0, 2819,    0, 2819,
06320      2821, 2821, 2821, 2821,    0,    0,    0, 2820,    0, 2820,
06321      2822, 2822, 2822, 2822, 2823, 2823, 2823, 2823,    0, 2824,
06322      2824, 2824, 2824,    0, 2821,    0, 2821, 2825, 2825, 2825,
06323      2825,    0,    0,    0, 2822,    0, 2822,    0, 2823,    0,
06324      2823,    0,    0, 2824,    0, 2824, 2826, 2826, 2826, 2826,
06325         0, 2825,    0, 2825, 2822,    0, 2821,    0, 2827, 2827,
06326      2827, 2827, 2828, 2828, 2828, 2828, 2832, 2832, 2832, 2832,
06327      2826, 2825, 2846, 2846, 2846, 2846, 2823, 2824,    0,    0,
06328 
06329         0, 2822, 2827, 2846, 2827,    0, 2828,    0, 2828,    0,
06330      2832, 2823, 2832, 2833, 2833, 2833, 2833,    0, 2825, 2834,
06331      2834, 2834, 2834, 2836, 2836, 2836, 2836, 2837, 2837, 2837,
06332      2837, 2827, 2838, 2838, 2838, 2838,    0, 2833,    0, 2833,
06333         0,    0,    0, 2834,    0, 2834, 2828, 2836,    0, 2836,
06334         0, 2837,    0, 2837,    0,    0, 2838,    0, 2838, 2841,
06335      2841, 2841, 2841, 2842, 2842, 2842, 2842, 2843, 2843, 2843,
06336      2843, 2847, 2847, 2847, 2847, 2848, 2848, 2848, 2848,    0,
06337         0, 2836,    0, 2841,    0, 2841,    0, 2842,    0, 2842,
06338      2838, 2843,    0, 2843, 2852, 2852, 2852, 2852, 2854, 2854,
06339 
06340      2854, 2854,    0,    0,    0, 2852, 2855, 2855, 2855, 2855,
06341         0, 2858, 2858, 2858, 2858, 2859, 2859, 2859, 2859, 2902,
06342      2902, 2902, 2902,    0,    0, 2843,    0, 2841, 2858, 2903,
06343      2903, 2903, 2903,    0,    0, 2858, 2902, 2905, 2905, 2905,
06344      2905,    0,    0, 2902, 2906, 2906, 2906, 2906, 2907, 2907,
06345      2907, 2907, 2914, 2914, 2914, 2914, 2919, 2919, 2919, 2919,
06346      2923, 2923, 2923, 2923,    0,    0,    0, 2858, 2925, 2925,
06347      2925, 2925, 2907, 2859, 2928, 2928, 2928, 2928, 2929, 2929,
06348      2929, 2929,    0,    0,    0, 2902, 2930, 2930, 2930, 2930,
06349      2931, 2931, 2931, 2931, 2932, 2932, 2932, 2932, 2928, 2933,
06350 
06351      2933, 2933, 2933, 2935, 2935, 2935, 2935, 2938, 2938, 2938,
06352      2938,    0,    0,    0, 2931, 2939, 2939, 2939, 2939, 2942,
06353      2942, 2942, 2942, 2943, 2943, 2943, 2943, 2935,    0,    0,
06354         0, 2938, 2944, 2944, 2944, 2944, 2945, 2945, 2945, 2945,
06355         0,    0,    0, 2942,    0,    0,    0, 2935,    0,    0,
06356         0, 2938, 2948, 2948, 2948, 2948, 2950, 2950, 2950, 2950,
06357      2951, 2951, 2951, 2951,    0,    0,    0, 2950,    0,    0,
06358         0, 2951,    0,    0, 2935,    0,    0,    0, 2938, 2952,
06359      2952, 2952, 2952, 2953, 2953, 2953, 2953,    0,    0,    0,
06360      2952,    0,    0,    0, 2953, 2954, 2954, 2954, 2954, 2955,
06361 
06362      2955, 2955, 2955,    0,    0,    0, 2954,    0,    0,    0,
06363      2955,    0, 2956, 2956, 2956, 2956, 2951, 2957, 2957, 2957,
06364      2957,    0, 2950, 2956, 2958, 2958, 2958, 2958, 2957,    0,
06365      2959, 2959, 2959, 2959, 2960, 2960, 2960, 2960, 2961, 2961,
06366      2961, 2961,    0, 2952, 2962, 2962, 2962, 2962, 2958,    0,
06367      2958,    0,    0, 2954, 2959,    0, 2959,    0, 2960,    0,
06368      2960,    0, 2961, 2955, 2961,    0,    0,    0, 2962,    0,
06369      2962,    0,    0,    0, 2957,    0,    0, 2959,    0,    0,
06370      2960, 2963, 2963, 2963, 2963, 2965, 2965, 2965, 2965,    0,
06371      2965, 2967, 2967, 2967, 2967, 2965,    0,    0,    0, 2961,
06372 
06373      2970, 2970, 2970, 2970,    0, 2963,    0, 2963, 2971, 2971,
06374      2971, 2971,    0,    0,    0, 2967,    0, 2967, 2976, 2976,
06375      2976, 2976,    0,    0, 2970,    0, 2970, 2978, 2978, 2978,
06376      2978,    0, 2971,    0, 2971,    0, 2979, 2979, 2979, 2979,
06377         0,    0, 2976,    0, 2976, 2980, 2980, 2980, 2980,    0,
06378         0, 2978,    0, 2978, 2981, 2981, 2981, 2981,    0,    0,
06379      2979, 2967, 2979,    0,    0,    0, 2970,    0,    0, 2980,
06380         0, 2980, 2982, 2982, 2982, 2982,    0,    0, 2981,    0,
06381      2981, 2983, 2983, 2983, 2983, 2984, 2984, 2984, 2984, 2985,
06382      2985, 2985, 2985,    0, 2978, 2986, 2986, 2986, 2986, 2987,
06383 
06384      2987, 2987, 2987, 2980,    0, 2983,    0, 2983,    0, 2984,
06385         0, 2984,    0, 2985,    0, 2985,    0,    0,    0, 2986,
06386         0, 2986,    0, 2987,    0, 2987, 2988, 2988, 2988, 2988,
06387      2989, 2989, 2989, 2989, 2990, 2990, 2990, 2990, 2991, 2991,
06388      2991, 2991,    0, 2987,    0, 2992, 2992, 2992, 2992,    0,
06389      2988,    0,    0, 2986, 2989,    0, 2989,    0, 2990,    0,
06390      2990,    0, 2991,    0, 2991, 2993, 2993, 2993, 2993, 2992,
06391      2987, 2992, 2994, 2994, 2994, 2994,    0, 2995, 2995, 2995,
06392      2995,    0,    0, 2989, 2996, 2996, 2996, 2996,    0, 2993,
06393         0, 2993, 2999, 2999, 2999, 2999, 2991,    0, 2990,    0,
06394 
06395         0, 2995,    0, 2995, 3000, 3000, 3000, 3000, 2996,    0,
06396      2996, 3001, 3001, 3001, 3001,    0, 2999,    0, 2999,    0,
06397         0,    0, 2993, 2995, 3002, 3002, 3002, 3002, 3000,    0,
06398      3000, 3003, 3003, 3003, 3003, 3001, 3006, 3006, 3006, 3006,
06399      3007, 3007, 3007, 3007, 3011, 3011, 3011, 3011, 3002,    0,
06400      3002, 2996,    0,    0,    0, 3003,    0, 3003,    0, 2999,
06401      3006,    0, 3006,    0, 3007,    0, 3007, 3012, 3012, 3012,
06402      3012,    0,    0,    0, 3002, 3013, 3013, 3013, 3013,    0,
06403      3002,    0, 3002, 3015, 3015, 3015, 3015, 3030, 3030, 3030,
06404      3030,    0,    0,    0, 3006, 3002,    0, 3002, 3002,    0,
06405 
06406      3015, 3048, 3048, 3048, 3048,    0,    0, 3015, 3049, 3049,
06407      3049, 3049, 3050, 3050, 3050, 3050,    0,    0, 3048, 3051,
06408      3051, 3051, 3051,    0,    0, 3048, 3055, 3055, 3055, 3055,
06409      3058, 3058, 3058, 3058, 3062, 3062, 3062, 3062,    0,    0,
06410         0, 3015,    0, 3051, 3063, 3063, 3063, 3063, 3066, 3066,
06411      3066, 3066, 3067, 3067, 3067, 3067, 3069, 3069, 3069, 3069,
06412      3070, 3070, 3070, 3070, 3071, 3071, 3071, 3071, 3072, 3072,
06413      3072, 3072,    0, 3048, 3074, 3074, 3074, 3074,    0,    0,
06414      3069, 3075, 3075, 3075, 3075,    0,    0,    0, 3071, 3079,
06415      3079, 3079, 3079, 3083, 3083, 3083, 3083,    0, 3074, 3084,
06416 
06417      3084, 3084, 3084, 3085, 3085, 3085, 3085, 3086, 3086, 3086,
06418      3086, 3088, 3088, 3088, 3088,    0,    0, 3083, 3074, 3089,
06419      3089, 3089, 3089, 3090, 3090, 3090, 3090,    0,    0,    0,
06420      3089,    0,    0,    0, 3090, 3091, 3091, 3091, 3091, 3092,
06421      3092, 3092, 3092,    0,    0, 3074, 3091,    0,    0,    0,
06422      3092,    0,    0, 3085, 3093, 3093, 3093, 3093,    0, 3085,
06423         0, 3085,    0,    0,    0, 3093,    0, 3094, 3094, 3094,
06424      3094,    0,    0,    0, 3085,    0, 3085, 3085, 3094,    0,
06425         0, 3090, 3095, 3095, 3095, 3095, 3096, 3096, 3096, 3096,
06426         0, 3089,    0, 3095, 3097, 3097, 3097, 3097, 3098, 3098,
06427 
06428      3098, 3098, 3099, 3099, 3099, 3099, 3102, 3102, 3102, 3102,
06429      3096, 3093, 3096, 3103, 3103, 3103, 3103,    0, 3097,    0,
06430      3097,    0, 3098,    0, 3098,    0, 3099,    0, 3099,    0,
06431      3102,    0, 3102,    0,    0, 3096,    0, 3103,    0, 3103,
06432      3104, 3104, 3104, 3104, 3110, 3110, 3110, 3110, 3111, 3111,
06433      3111, 3111, 3097, 3112, 3112, 3112, 3112, 3113, 3113, 3113,
06434      3113, 3099, 3114, 3114, 3114, 3114,    0,    0, 3110,    0,
06435      3110,    0, 3111,    0, 3111,    0,    0, 3112,    0, 3112,
06436         0, 3113,    0, 3113,    0,    0, 3114, 3116, 3116, 3116,
06437      3116, 3118, 3118, 3118, 3118, 3124, 3124, 3124, 3124, 3127,
06438 
06439      3127, 3127, 3127, 3134, 3134, 3134, 3134,    0,    0,    0,
06440      3110, 3135, 3135, 3135, 3135, 3118,    0, 3118, 3104, 3115,
06441      3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115,
06442      3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3117,
06443      3117, 3117, 3117,    0, 3115, 3115, 3115, 3115, 3115, 3115,
06444      3115, 3119, 3119, 3119, 3119,    0,    0,    0, 3118, 3136,
06445      3136, 3136, 3136, 3117,    0, 3117, 3120, 3120, 3120, 3120,
06446      3115, 3115, 3115, 3124,    0, 3119,    0, 3119,    0, 3121,
06447      3121, 3121, 3121,    0,    0, 3117, 3122, 3122, 3122, 3122,
06448      3120,    0, 3120, 3123, 3123, 3123, 3123,    0, 3115, 3115,
06449 
06450      3115,    0,    0, 3121,    0, 3121, 3126, 3126, 3126, 3126,
06451      3122,    0, 3122, 3130, 3130, 3130, 3130, 3123,    0, 3123,
06452         0,    0, 3119, 3121,    0,    0, 3122,    0,    0,    0,
06453      3126,    0, 3126, 3133, 3133, 3133, 3133, 3130,    0, 3130,
06454      3137, 3137, 3137, 3137, 3138, 3138, 3138, 3138,    0,    0,
06455      3121, 3139, 3139, 3139, 3139,    0,    0, 3133,    0, 3133,
06456      3140, 3140, 3140, 3140,    0, 3123, 3141, 3141, 3141, 3141,
06457         0,    0, 3126, 3150, 3150, 3150, 3150, 3164, 3164, 3164,
06458      3164,    0,    0, 3141, 3165, 3165, 3165, 3165,    0,    0,
06459      3141,    0,    0,    0, 3164, 3166, 3166, 3166, 3166,    0,
06460 
06461         0, 3164, 3167, 3167, 3167, 3167, 3170, 3170, 3170, 3170,
06462      3171, 3171, 3171, 3171, 3173, 3173, 3173, 3173, 3174, 3174,
06463      3174, 3174, 3176, 3176, 3176, 3176, 3167, 3178, 3178, 3178,
06464      3178, 3179, 3179, 3179, 3179, 3180, 3180, 3180, 3180, 3181,
06465      3181, 3181, 3181, 3182, 3182, 3182, 3182,    0, 3164, 3183,
06466      3183, 3183, 3183, 3184, 3184, 3184, 3184, 3188, 3188, 3188,
06467      3188, 3189, 3189, 3189, 3189,    0,    0, 3182, 3192, 3192,
06468      3192, 3192, 3193, 3193, 3193, 3193, 3194, 3194, 3194, 3194,
06469      3195, 3195, 3195, 3195,    0, 3189,    0, 3194,    0,    0,
06470         0, 3195, 3196, 3196, 3196, 3196, 3197, 3197, 3197, 3197,
06471 
06472         0,    0,    0, 3196,    0, 3189,    0, 3197, 3198, 3198,
06473      3198, 3198, 3199, 3199, 3199, 3199,    0,    0,    0, 3198,
06474         0,    0,    0, 3199, 3200, 3200, 3200, 3200,    0,    0,
06475      3194,    0, 3189, 3201, 3201, 3201, 3201, 3202, 3202, 3202,
06476      3202, 3203, 3203, 3203, 3203,    0,    0,    0, 3200,    0,
06477      3200, 3205, 3205, 3205, 3205,    0,    0, 3201,    0, 3201,
06478         0, 3202,    0, 3202, 3206, 3206, 3206, 3206, 3212, 3212,
06479      3212, 3212,    0,    0,    0, 3205,    0, 3205, 3213, 3213,
06480      3213, 3213, 3214, 3214, 3214, 3214, 3215, 3215, 3215, 3215,
06481      3201, 3202, 3212,    0, 3212,    0, 3220, 3220, 3220, 3220,
06482 
06483         0,    0, 3213,    0, 3213,    0, 3214,    0, 3214, 3222,
06484      3222, 3222, 3222, 3224, 3224, 3224, 3224,    0,    0, 3203,
06485      3220,    0, 3220,    0, 3212, 3225, 3225, 3225, 3225, 3229,
06486      3229, 3229, 3229, 3222,    0, 3222, 3220, 3224, 3214,    0,
06487         0,    0, 3206, 3236, 3236, 3236, 3236,    0,    0, 3225,
06488         0, 3225,    0, 3214, 3217, 3217, 3217, 3217, 3217, 3217,
06489      3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217,
06490      3217, 3217, 3217, 3217, 3256, 3256, 3256, 3256, 3225, 3217,
06491      3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217,
06492      3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217,
06493 
06494      3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217,
06495      3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217,
06496      3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217,
06497      3217, 3217, 3217, 3217, 3217, 3217, 3221, 3221, 3221, 3221,
06498      3223, 3223, 3223, 3223,    0, 3226, 3226, 3226, 3226, 3227,
06499      3227, 3227, 3227, 3228, 3228, 3228, 3228,    0,    0,    0,
06500      3221,    0, 3221,    0, 3223,    0, 3223,    0,    0, 3226,
06501         0, 3226,    0, 3227,    0, 3227,    0, 3228,    0, 3228,
06502      3231, 3231, 3231, 3231, 3223,    0, 3232, 3232, 3232, 3232,
06503         0, 3227, 3257, 3257, 3257, 3257, 3237, 3237, 3237, 3237,
06504 
06505         0, 3255, 3255, 3255, 3255,    0,    0,    0, 3221, 3226,
06506      3232, 3223, 3232, 3237,    0,    0, 3257,    0, 3255,    0,
06507      3237,    0,    0,    0, 3228, 3255, 3259, 3259, 3259, 3259,
06508      3260, 3260, 3260, 3260, 3261, 3261, 3261, 3261, 3262, 3262,
06509      3262, 3262, 3232, 3263, 3263, 3263, 3263, 3266, 3266, 3266,
06510      3266, 3267, 3267, 3267, 3267,    0,    0,    0, 3231, 3268,
06511      3268, 3268, 3268, 3269, 3269, 3269, 3269, 3272, 3272, 3272,
06512      3272,    0, 3273, 3273, 3273, 3273, 3274, 3274, 3274, 3274,
06513         0, 3279, 3279, 3279, 3279,    0, 3280, 3280, 3280, 3280,
06514         0, 3272, 3279,    0,    0,    0, 3273, 3280, 3281, 3281,
06515 
06516      3281, 3281, 3282, 3282, 3282, 3282,    0,    0,    0, 3281,
06517      3283, 3283, 3283, 3283,    0, 3268, 3273,    0, 3287, 3287,
06518      3287, 3287, 3291, 3291, 3291, 3291, 3282,    0, 3282,    0,
06519      3268, 3292, 3292, 3292, 3292, 3293, 3293, 3293, 3293,    0,
06520         0,    0, 3287, 3273, 3287, 3294, 3294, 3294, 3294, 3291,
06521         0,    0,    0, 3279,    0, 3292,    0, 3292, 3282, 3293,
06522         0, 3293, 3295, 3295, 3295, 3295,    0,    0,    0, 3294,
06523         0, 3294,    0, 3292,    0,    0, 3287, 3296, 3296, 3296,
06524      3296, 3297, 3297, 3297, 3297,    0, 3295, 3298, 3298, 3298,
06525      3298, 3299, 3299, 3299, 3299, 3300, 3300, 3300, 3300, 3301,
06526 
06527      3301, 3301, 3301,    0,    0, 3297, 3293, 3297,    0,    0,
06528         0, 3298,    0, 3298,    0, 3299,    0, 3299,    0, 3300,
06529         0, 3300, 3303, 3303, 3303, 3303,    0, 3297, 3304, 3304,
06530      3304, 3304, 3315, 3315, 3315, 3315,    0,    0, 3299, 3316,
06531      3316, 3316, 3316,    0,    0,    0, 3303,    0, 3303, 3317,
06532      3317, 3317, 3317,    0, 3298,    0, 3315, 3319, 3319, 3319,
06533      3319, 3320, 3320, 3320, 3320, 3324, 3324, 3324, 3324, 3325,
06534      3325, 3325, 3325, 3317, 3329, 3329, 3329, 3329,    0,    0,
06535      3303, 3330, 3330, 3330, 3330, 3332, 3332, 3332, 3332, 3324,
06536         0,    0, 3330, 3331, 3331, 3331, 3331,    0, 3329, 3336,
06537 
06538      3336, 3336, 3336,    0,    0,    0, 3304, 3337, 3337, 3337,
06539      3337, 3339, 3339, 3339, 3339,    0,    0, 3331,    0, 3331,
06540      3340, 3340, 3340, 3340,    0,    0, 3336, 3341, 3341, 3341,
06541      3341,    0,    0,    0, 3337, 3339,    0, 3339, 3342, 3342,
06542      3342, 3342,    0, 3330, 3340,    0, 3340, 3343, 3343, 3343,
06543      3343, 3331,    0, 3344, 3344, 3344, 3344,    0, 3339,    0,
06544         0,    0, 3342,    0, 3342, 3345, 3345, 3345, 3345,    0,
06545         0, 3343,    0, 3343,    0,    0,    0, 3344, 3342, 3344,
06546      3346, 3346, 3346, 3346, 3347, 3347, 3347, 3347,    0, 3345,
06547         0, 3345, 3349, 3349, 3349, 3349,    0,    0,    0, 3344,
06548 
06549      3356, 3356, 3356, 3356, 3346, 3357, 3357, 3357, 3357, 3361,
06550      3361, 3361, 3361, 3365, 3365, 3365, 3365,    0,    0, 3343,
06551      3366, 3366, 3366, 3366, 3367, 3367, 3367, 3367,    0, 3357,
06552         0,    0,    0, 3361,    0, 3367,    0, 3365, 3368, 3368,
06553      3368, 3368, 3371, 3371, 3371, 3371,    0, 3372, 3372, 3372,
06554      3372, 3373, 3373, 3373, 3373, 3374, 3374, 3374, 3374, 3375,
06555      3375, 3375, 3375,    0,    0,    0, 3371,    0, 3371,    0,
06556      3349, 3372,    0, 3372,    0, 3373,    0,    0,    0, 3374,
06557         0, 3374,    0, 3375,    0, 3375,    0,    0, 3371,    0,
06558         0, 3367, 3376, 3376, 3376, 3376,    0, 3374, 3377, 3377,
06559 
06560      3377, 3377, 3381, 3381, 3381, 3381,    0, 3382, 3382, 3382,
06561      3382, 3385, 3385, 3385, 3385, 3386, 3386, 3386, 3386,    0,
06562         0, 3389, 3389, 3389, 3389, 3392, 3392, 3392, 3392,    0,
06563      3375, 3382, 3389,    0,    0, 3385, 3393, 3393, 3393, 3393,
06564      3394, 3394, 3394, 3394, 3395, 3395, 3395, 3395, 3396, 3396,
06565      3396, 3396, 3399, 3399, 3399, 3399, 3400, 3400, 3400, 3400,
06566      3393,    0, 3393,    0, 3394,    0, 3394, 3400, 3401, 3401,
06567      3401, 3401, 3396,    0,    0,    0, 3399, 3403, 3403, 3403,
06568      3403,    0,    0, 3393,    0,    0,    0, 3389, 3404, 3404,
06569      3404, 3404, 3405, 3405, 3405, 3405, 3406, 3406, 3406, 3406,
06570 
06571         0, 3403,    0, 3403, 3407, 3407, 3407, 3407, 3408, 3408,
06572      3408, 3408, 3404,    0, 3404,    0, 3405, 3410, 3410, 3410,
06573      3410,    0,    0, 3403, 3411, 3411, 3411, 3411, 3407, 3412,
06574      3412, 3412, 3412, 3413, 3413, 3413, 3413,    0,    0,    0,
06575      3412, 3410, 3415, 3415, 3415, 3415, 3401, 3416, 3416, 3416,
06576      3416, 3417, 3417, 3417, 3417, 3418, 3418, 3418, 3418, 3419,
06577      3419, 3419, 3419, 3420, 3420, 3420, 3420, 3422, 3422, 3422,
06578      3422, 3423, 3423, 3423, 3423, 3424, 3424, 3424, 3424, 3418,
06579      3425, 3425, 3425, 3425, 3426, 3426, 3426, 3426, 3427, 3427,
06580      3427, 3427,    0,    0,    0, 3423, 3428, 3428, 3428, 3428,
06581 
06582      3429, 3429, 3429, 3429, 3425, 3430, 3430, 3430, 3430,    0,
06583         0,    0, 3427, 3431, 3431, 3431, 3431,    0,    0,    0,
06584      3415,    0,    0,    0, 3429, 3432, 3432, 3432, 3432, 3433,
06585      3433, 3433, 3433, 3434, 3434, 3434, 3434, 3431, 3435, 3435,
06586      3435, 3435, 3436, 3436, 3436, 3436, 3437, 3437, 3437, 3437,
06587         0,    0,    0, 3433, 3438, 3438, 3438, 3438, 3439, 3439,
06588      3439, 3439, 3435, 3440, 3440, 3440, 3440,    0,    0,    0,
06589      3437, 3441, 3441, 3441, 3441, 3442, 3442, 3442, 3442,    0,
06590         0,    0, 3439, 3443, 3443, 3443, 3443, 3444, 3444, 3444,
06591      3444, 3445, 3445, 3445, 3445, 3441, 3446, 3446, 3446, 3446,
06592 
06593      3447, 3447, 3447, 3447,    0,    0,    0, 3443, 3448, 3448,
06594      3448, 3448,    0,    0,    0, 3445, 3449, 3449, 3449, 3449,
06595      3450, 3450, 3450, 3450, 3447, 3451, 3451, 3451, 3451, 3452,
06596      3452, 3452, 3452, 3453, 3453, 3453, 3453,    0,    0,    0,
06597      3449, 3454, 3454, 3454, 3454, 3455, 3455, 3455, 3455, 3451,
06598      3456, 3456, 3456, 3456,    0,    0,    0, 3453, 3457, 3457,
06599      3457, 3457, 3458, 3458, 3458, 3458,    0,    0,    0, 3455,
06600      3459, 3459, 3459, 3459, 3460, 3460, 3460, 3460, 3461, 3461,
06601      3461, 3461, 3457, 3462, 3462, 3462, 3462, 3463, 3463, 3463,
06602      3463,    0,    0,    0, 3459, 3464, 3464, 3464, 3464,    0,
06603 
06604         0,    0, 3461, 3465, 3465, 3465, 3465, 3466, 3466, 3466,
06605      3466, 3463, 3467, 3467, 3467, 3467, 3468, 3468, 3468, 3468,
06606      3469, 3469, 3469, 3469,    0,    0,    0, 3465, 3470, 3470,
06607      3470, 3470, 3471, 3471, 3471, 3471, 3467, 3472, 3472, 3472,
06608      3472,    0,    0,    0, 3469, 3473, 3473, 3473, 3473, 3474,
06609      3474, 3474, 3474,    0,    0,    0, 3471, 3475, 3475, 3475,
06610      3475, 3476, 3476, 3476, 3476, 3477, 3477, 3477, 3477, 3473,
06611      3478, 3478, 3478, 3478, 3479, 3479, 3479, 3479,    0,    0,
06612         0, 3475, 3480, 3480, 3480, 3480,    0,    0,    0, 3477,
06613      3481, 3481, 3481, 3481, 3482, 3482, 3482, 3482, 3479, 3483,
06614 
06615      3483, 3483, 3483, 3484, 3484, 3484, 3484, 3485, 3485, 3485,
06616      3485,    0,    0,    0, 3481, 3486, 3486, 3486, 3486, 3487,
06617      3487, 3487, 3487, 3483, 3488, 3488, 3488, 3488,    0,    0,
06618         0, 3485, 3489, 3489, 3489, 3489, 3490, 3490, 3490, 3490,
06619         0,    0,    0, 3487, 3491, 3491, 3491, 3491, 3492, 3492,
06620      3492, 3492, 3493, 3493, 3493, 3493, 3489, 3494, 3494, 3494,
06621      3494, 3495, 3495, 3495, 3495,    0,    0,    0, 3491, 3496,
06622      3496, 3496, 3496,    0,    0,    0, 3493, 3497, 3497, 3497,
06623      3497, 3498, 3498, 3498, 3498, 3495, 3499, 3499, 3499, 3499,
06624      3500, 3500, 3500, 3500, 3501, 3501, 3501, 3501,    0,    0,
06625 
06626         0, 3497, 3502, 3502, 3502, 3502, 3503, 3503, 3503, 3503,
06627      3499, 3504, 3504, 3504, 3504,    0,    0,    0, 3501, 3505,
06628      3505, 3505, 3505, 3506, 3506, 3506, 3506,    0,    0,    0,
06629      3503, 3507, 3507, 3507, 3507, 3508, 3508, 3508, 3508, 3509,
06630      3509, 3509, 3509, 3505, 3510, 3510, 3510, 3510, 3511, 3511,
06631      3511, 3511,    0,    0,    0, 3507, 3512, 3512, 3512, 3512,
06632         0,    0,    0, 3509, 3513, 3513, 3513, 3513, 3514, 3514,
06633      3514, 3514, 3511, 3515, 3515, 3515, 3515, 3516, 3516, 3516,
06634      3516, 3517, 3517, 3517, 3517,    0,    0,    0, 3513, 3518,
06635      3518, 3518, 3518, 3519, 3519, 3519, 3519, 3515, 3520, 3520,
06636 
06637      3520, 3520,    0,    0,    0, 3517, 3521, 3521, 3521, 3521,
06638      3522, 3522, 3522, 3522,    0,    0,    0, 3519, 3523, 3523,
06639      3523, 3523, 3524, 3524, 3524, 3524, 3525, 3525, 3525, 3525,
06640      3521, 3526, 3526, 3526, 3526, 3527, 3527, 3527, 3527,    0,
06641         0,    0, 3523, 3528, 3528, 3528, 3528,    0,    0,    0,
06642      3525, 3529, 3529, 3529, 3529, 3530, 3530, 3530, 3530, 3527,
06643      3531, 3531, 3531, 3531, 3532, 3532, 3532, 3532, 3533, 3533,
06644      3533, 3533,    0,    0,    0, 3529, 3534, 3534, 3534, 3534,
06645      3535, 3535, 3535, 3535, 3531, 3536, 3536, 3536, 3536,    0,
06646         0,    0, 3533, 3537, 3537, 3537, 3537, 3538, 3538, 3538,
06647 
06648      3538,    0,    0,    0, 3535, 3539, 3539, 3539, 3539, 3540,
06649      3540, 3540, 3540, 3541, 3541, 3541, 3541, 3537, 3542, 3542,
06650      3542, 3542, 3543, 3543, 3543, 3543,    0,    0,    0, 3539,
06651      3544, 3544, 3544, 3544,    0,    0,    0, 3541, 3545, 3545,
06652      3545, 3545, 3546, 3546, 3546, 3546, 3543, 3547, 3547, 3547,
06653      3547, 3548, 3548, 3548, 3548,    0,    0,    0,    0,    0,
06654         0,    0, 3545,    0,    0,    0,    0,    0,    0,    0,
06655         0, 3547, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
06656      3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
06657      3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
06658 
06659      3550, 3550, 3550, 3551, 3551, 3551, 3551, 3551, 3551, 3551,
06660      3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551,
06661      3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551,
06662      3551, 3551, 3551, 3551, 3552, 3552, 3552, 3552, 3552, 3552,
06663      3552, 3552, 3552, 3552, 3552, 3552, 3552, 3552, 3552, 3552,
06664      3552, 3552, 3552, 3552, 3552, 3552, 3552, 3552, 3552, 3552,
06665      3552, 3552, 3552, 3552, 3552, 3553, 3553, 3553, 3553, 3553,
06666      3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553,
06667      3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553,
06668      3553, 3553, 3553, 3553, 3553, 3553, 3554, 3554, 3554, 3554,
06669 
06670      3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554,
06671      3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554,
06672      3554, 3554, 3554, 3554, 3554, 3554, 3554, 3555, 3555, 3555,
06673      3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555,
06674      3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555,
06675      3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3556, 3556,
06676      3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556,
06677      3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556,
06678      3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556, 3556, 3557,
06679      3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
06680 
06681      3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
06682      3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
06683      3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558,
06684      3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558,
06685      3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558,
06686      3558, 3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559,
06687      3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559,
06688      3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559, 3559,
06689      3559, 3559, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560,
06690      3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560,
06691 
06692      3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560,
06693      3560, 3560, 3560, 3561, 3561, 3561, 3561, 3561, 3561, 3561,
06694      3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561,
06695      3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561,
06696      3561, 3561, 3561, 3561, 3562, 3562, 3562, 3562, 3562, 3562,
06697      3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562,
06698      3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562,
06699      3562, 3562, 3562, 3562, 3562, 3563, 3563, 3563, 3563, 3563,
06700      3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563,
06701      3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563,
06702 
06703      3563, 3563, 3563, 3563, 3563, 3563, 3564, 3564, 3564, 3564,
06704      3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
06705      3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
06706      3564, 3564, 3564, 3564, 3564, 3564, 3564, 3565, 3565, 3565,
06707      3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
06708      3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
06709      3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3566, 3566,
06710      3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566,
06711      3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566,
06712      3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566, 3566, 3567,
06713 
06714      3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567,
06715      3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567,
06716      3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567,
06717      3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568,
06718      3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568,
06719      3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568,
06720      3568, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569,
06721      3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569,
06722      3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569,
06723      3569, 3569, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570,
06724 
06725      3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570,
06726      3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570,
06727      3570, 3570, 3570, 3571, 3571, 3571, 3571, 3571, 3571, 3571,
06728      3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571,
06729      3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571,
06730      3571, 3571, 3571, 3571, 3572, 3572, 3572, 3572, 3572, 3572,
06731      3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
06732      3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
06733      3572, 3572, 3572, 3572, 3572, 3573, 3573, 3573, 3573, 3573,
06734      3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573,
06735 
06736      3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573,
06737      3573, 3573, 3573, 3573, 3573, 3573, 3574, 3574, 3574, 3574,
06738      3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574,
06739      3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574,
06740      3574, 3574, 3574, 3574, 3574, 3574, 3574, 3575, 3575, 3575,
06741      3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575,
06742      3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575,
06743      3575, 3575, 3575, 3575, 3575, 3575, 3575, 3575, 3576, 3576,
06744      3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576,
06745      3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576,
06746 
06747      3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3577,
06748      3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577,
06749      3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577,
06750      3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577,
06751      3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578,
06752      3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578,
06753      3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578,
06754      3578, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579,
06755      3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579,
06756      3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579,
06757 
06758      3579, 3579, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580,
06759      3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580,
06760      3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580,
06761      3580, 3580, 3580, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
06762      3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
06763      3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
06764      3581, 3581, 3581, 3581, 3582, 3582, 3582, 3582, 3582, 3582,
06765      3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582,
06766      3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582,
06767      3582, 3582, 3582, 3582, 3582, 3583, 3583, 3583, 3583, 3583,
06768 
06769      3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583,
06770      3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583,
06771      3583, 3583, 3583, 3583, 3583, 3583, 3584, 3584, 3584, 3584,
06772      3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584,
06773      3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584,
06774      3584, 3584, 3584, 3584, 3584, 3584, 3584, 3585, 3585, 3585,
06775      3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585,
06776      3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585,
06777      3585, 3585, 3585, 3585, 3585, 3585, 3585, 3585, 3586, 3586,
06778      3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586,
06779 
06780      3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586,
06781      3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3587,
06782      3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587,
06783      3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587,
06784      3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587,
06785      3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
06786      3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
06787      3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
06788      3588, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
06789      3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
06790 
06791      3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
06792      3589, 3589, 3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590,
06793      3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590,
06794      3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590, 3590,
06795      3590, 3590, 3590, 3591, 3591, 3591, 3591, 3591, 3591, 3591,
06796      3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591,
06797      3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591,
06798      3591, 3591, 3591, 3591, 3592, 3592, 3592, 3592, 3592, 3592,
06799      3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592,
06800      3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592,
06801 
06802      3592, 3592, 3592, 3592, 3592, 3593, 3593, 3593, 3593, 3593,
06803      3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593,
06804      3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593,
06805      3593, 3593, 3593, 3593, 3593, 3593, 3594, 3594, 3594, 3594,
06806      3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594,
06807      3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594,
06808      3594, 3594, 3594, 3594, 3594, 3594, 3594, 3595, 3595, 3595,
06809      3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595,
06810      3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595,
06811      3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3596, 3596,
06812 
06813      3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596,
06814      3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596,
06815      3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3597,
06816      3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597,
06817      3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597,
06818      3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597,
06819      3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598,
06820      3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598,
06821      3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598, 3598,
06822      3598, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599,
06823 
06824      3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599,
06825      3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599,
06826      3599, 3599, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600,
06827      3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600,
06828      3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600,
06829      3600, 3600, 3600, 3601, 3601, 3601, 3601, 3601, 3601, 3601,
06830      3601, 3601, 3601, 3601, 3601, 3601, 3601, 3601, 3601, 3601,
06831      3601, 3601, 3601, 3601, 3601, 3601, 3601, 3601, 3601, 3601,
06832      3601, 3601, 3601, 3601, 3602, 3602, 3602, 3602, 3602, 3602,
06833      3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602,
06834 
06835      3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602,
06836      3602, 3602, 3602, 3602, 3602, 3603, 3603, 3603, 3603, 3603,
06837      3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603,
06838      3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603,
06839      3603, 3603, 3603, 3603, 3603, 3603, 3604, 3604, 3604, 3604,
06840      3604, 3604, 3604, 3604, 3604, 3604, 3604, 3604, 3604, 3604,
06841      3604, 3604, 3604, 3604, 3604, 3604, 3604, 3604, 3604, 3604,
06842      3604, 3604, 3604, 3604, 3604, 3604, 3604, 3605, 3605, 3605,
06843      3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605,
06844      3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605,
06845 
06846      3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3606, 3606,
06847      3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606,
06848      3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606,
06849      3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3607,
06850      3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607,
06851      3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607,
06852      3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607,
06853      3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608,
06854      3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608,
06855      3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608,
06856 
06857      3608, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609,
06858      3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609,
06859      3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609,
06860      3609, 3609, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610,
06861      3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610,
06862      3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610,
06863      3610, 3610, 3610, 3612,    0,    0, 3612,    0,    0,    0,
06864         0,    0,    0, 3612,    0,    0,    0,    0,    0, 3612,
06865         0,    0,    0,    0,    0,    0, 3612, 3613, 3613, 3613,
06866      3613,    0,    0,    0, 3613,    0,    0,    0,    0,    0,
06867 
06868         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06869      3613, 3614, 3614, 3614, 3614, 3614,    0,    0, 3614,    0,
06870         0,    0,    0,    0,    0,    0,    0,    0, 3614,    0,
06871         0,    0,    0,    0, 3614,    0,    0,    0,    0,    0,
06872      3614, 3615, 3615, 3615, 3615,    0,    0,    0, 3615,    0,
06873         0,    0,    0,    0,    0, 3615,    0,    0,    0,    0,
06874         0,    0,    0,    0, 3615,    0,    0,    0,    0,    0,
06875      3615, 3616, 3616, 3616, 3616,    0,    0,    0,    0,    0,
06876         0, 3616,    0,    0,    0, 3616,    0, 3616, 3616, 3616,
06877      3616,    0,    0,    0, 3616, 3617, 3617, 3617, 3617,    0,
06878 
06879         0,    0, 3617,    0,    0,    0,    0,    0,    0,    0,
06880         0,    0,    0,    0,    0,    0,    0,    0, 3617, 3618,
06881      3618, 3618, 3618,    0,    0,    0, 3618,    0,    0,    0,
06882         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06883         0,    0, 3618, 3619, 3619, 3619, 3619, 3619,    0,    0,
06884      3619,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06885      3619,    0,    0,    0,    0,    0, 3619,    0,    0,    0,
06886         0,    0, 3619, 3620, 3620, 3620, 3620,    0,    0,    0,
06887         0,    0,    0, 3620,    0,    0,    0,    0,    0, 3620,
06888      3620,    0,    0,    0,    0,    0, 3620, 3624,    0,    0,
06889 
06890         0, 3624,    0, 3624,    0,    0, 3624,    0,    0,    0,
06891      3624, 3632, 3632, 3632, 3632,    0,    0,    0, 3632,    0,
06892         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06893         0,    0,    0,    0, 3632,    0,    0,    0, 3632, 3633,
06894      3633, 3633, 3633,    0,    0,    0,    0,    0,    0,    0,
06895         0,    0,    0, 3633,    0, 3633, 3633,    0,    0,    0,
06896         0,    0, 3633, 3634, 3634,    0, 3634,    0, 3634, 3634,
06897      3634, 3634, 3634,    0, 3634, 3634, 3634, 3634, 3634, 3634,
06898      3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634,
06899      3634, 3634, 3634, 3634, 3635, 3635, 3635, 3635,    0,    0,
06900 
06901         0, 3635,    0,    0,    0,    0,    0,    0,    0,    0,
06902         0,    0,    0,    0,    0,    0,    0, 3635, 3636, 3636,
06903      3636, 3636, 3636,    0,    0, 3636,    0,    0,    0,    0,
06904         0,    0,    0,    0,    0, 3636,    0,    0,    0,    0,
06905         0, 3636,    0,    0,    0,    0,    0, 3636, 3637, 3637,
06906      3637, 3637,    0,    0,    0, 3637, 3637,    0,    0,    0,
06907      3637,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06908         0, 3637, 3640, 3640, 3640, 3640,    0,    0,    0,    0,
06909         0,    0,    0,    0,    0,    0,    0,    0, 3640, 3640,
06910         0, 3640,    0,    0,    0, 3640, 3641, 3641, 3641, 3641,
06911 
06912      3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641,
06913      3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641,
06914      3641, 3641, 3641, 3641, 3641, 3641, 3641, 3642, 3642,    0,
06915      3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642,
06916      3642, 3642, 3642, 3642, 3642, 3642, 3642,    0, 3642, 3642,
06917      3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3643, 3643,
06918      3643, 3643,    0,    0,    0, 3643,    0,    0,    0,    0,
06919         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06920         0, 3643, 3644, 3644, 3644, 3644, 3644,    0,    0, 3644,
06921         0,    0,    0,    0,    0,    0,    0,    0,    0, 3644,
06922 
06923         0,    0,    0,    0,    0, 3644,    0,    0,    0,    0,
06924         0, 3644, 3645, 3645, 3645, 3645,    0,    0,    0,    0,
06925         0,    0,    0,    0,    0,    0,    0,    0, 3645, 3645,
06926         0, 3645,    0,    0,    0, 3645, 3650, 3650,    0,    0,
06927      3650, 3650,    0,    0, 3650, 3650,    0, 3650, 3650, 3650,
06928      3650, 3650,    0, 3650, 3650, 3650, 3650, 3650, 3650,    0,
06929      3650, 3650, 3650, 3650,    0,    0, 3650, 3651, 3651,    0,
06930      3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651,
06931      3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651,
06932      3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3652, 3652,
06933 
06934         0, 3652,    0, 3652, 3652, 3652, 3652, 3652,    0, 3652,
06935      3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652,
06936      3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3654,
06937      3654, 3654, 3654,    0,    0,    0,    0,    0,    0,    0,
06938         0,    0,    0, 3654,    0, 3654, 3654,    0,    0,    0,
06939         0,    0, 3654, 3655, 3655, 3655, 3655,    0,    0,    0,
06940      3655,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06941         0,    0,    0,    0,    0,    0, 3655, 3656, 3656, 3656,
06942      3656, 3656,    0,    0, 3656,    0,    0,    0,    0,    0,
06943         0,    0,    0,    0, 3656,    0,    0,    0,    0,    0,
06944 
06945      3656,    0,    0,    0,    0,    0, 3656, 3657, 3657, 3657,
06946      3657,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06947         0,    0,    0, 3657, 3657,    0,    0,    0,    0,    0,
06948      3657, 3658, 3658,    0, 3658, 3658, 3658,    0,    0, 3658,
06949      3658,    0, 3658, 3658, 3658, 3658, 3658,    0, 3658, 3658,
06950      3658, 3658, 3658, 3658,    0, 3658, 3658,    0, 3658,    0,
06951         0, 3658, 3659, 3659,    0, 3659,    0, 3659, 3659, 3659,
06952      3659, 3659,    0, 3659, 3659, 3659, 3659, 3659, 3659, 3659,
06953      3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659,
06954      3659, 3659, 3659, 3660, 3660,    0, 3660, 3660, 3660, 3660,
06955 
06956      3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660,
06957      3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660,
06958      3660, 3660, 3660, 3660, 3661, 3661,    0, 3661, 3661, 3661,
06959      3661, 3661, 3661, 3661, 3661, 3661, 3661,    0, 3661, 3661,
06960      3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661,
06961      3661, 3661, 3661, 3661, 3661, 3662, 3662, 3662, 3662, 3662,
06962      3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662,
06963      3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662,
06964      3662, 3662, 3662, 3662, 3662, 3662, 3663, 3663,    0, 3663,
06965      3663, 3663,    0, 3663, 3663, 3663, 3663, 3663, 3663, 3663,
06966 
06967      3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663,
06968      3663,    0, 3663,    0, 3663, 3663, 3663, 3664, 3664,    0,
06969      3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664,
06970      3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664,
06971      3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3667,    0,
06972         0,    0,    0, 3667, 3667, 3667, 3667, 3667, 3667, 3667,
06973      3667,    0, 3667,    0,    0, 3667, 3667, 3667, 3667, 3667,
06974      3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3671,
06975      3671, 3671, 3671,    0,    0,    0,    0,    0,    0,    0,
06976         0,    0,    0, 3671,    0, 3671,    0,    0,    0,    0,
06977 
06978         0,    0, 3671, 3672, 3672,    0, 3672, 3672, 3672, 3672,
06979      3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672,
06980      3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672,
06981      3672, 3672, 3672, 3672, 3677, 3677,    0, 3677, 3677, 3677,
06982         0, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677,
06983      3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677,
06984      3677, 3677, 3677, 3677, 3677, 3680, 3680, 3680, 3680, 3680,
06985      3680, 3680, 3680, 3680, 3680, 3680, 3680,    0, 3680, 3680,
06986      3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680,
06987      3680, 3680, 3680, 3680, 3680, 3680, 3682, 3682, 3682, 3682,
06988 
06989         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06990         0,    0, 3682, 3682,    0,    0,    0,    0,    0, 3682,
06991      3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683,
06992      3683, 3683,    0, 3683, 3683, 3683, 3683, 3683, 3683, 3683,
06993      3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683,
06994      3683, 3692, 3692,    0, 3692,    0, 3692, 3692, 3692, 3692,
06995      3692,    0, 3692, 3692, 3692, 3692, 3692, 3692, 3692, 3692,
06996      3692, 3692, 3692, 3692, 3692, 3692, 3692, 3692, 3692, 3692,
06997      3692, 3692, 3693, 3693, 3693, 3693,    0,    0,    0, 3693,
06998         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
06999 
07000         0,    0,    0,    0,    0, 3693, 3694, 3694, 3694, 3694,
07001         0,    0,    0,    0,    0,    0,    0,    0, 3694,    0,
07002         0,    0, 3694,    0,    0,    0,    0,    0,    0, 3694,
07003      3695, 3695, 3695, 3695,    0,    0,    0, 3695, 3695,    0,
07004         0,    0, 3695,    0,    0,    0,    0,    0,    0,    0,
07005         0,    0,    0, 3695, 3696, 3696, 3696, 3696,    0,    0,
07006         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07007      3696,    0,    0,    0,    0,    0,    0, 3696, 3696, 3697,
07008      3697, 3697, 3697,    0,    0,    0, 3697,    0,    0,    0,
07009         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07010 
07011         0,    0, 3697, 3698, 3698, 3698, 3698, 3698,    0,    0,
07012      3698,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07013      3698,    0,    0,    0,    0,    0, 3698,    0,    0,    0,
07014         0,    0, 3698, 3699, 3699, 3699, 3699,    0,    0,    0,
07015         0,    0,    0,    0,    0,    0,    0,    0,    0, 3699,
07016      3699,    0,    0,    0,    0,    0, 3699, 3700, 3700,    0,
07017      3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700,
07018      3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700,
07019      3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3701,    0,
07020         0,    0,    0, 3701,    0,    0, 3701, 3701,    0,    0,
07021 
07022         0, 3701, 3701, 3701,    0, 3701, 3701, 3701, 3701, 3701,
07023      3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3702,
07024      3702,    0, 3702,    0, 3702, 3702, 3702, 3702, 3702,    0,
07025      3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702,
07026      3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702,
07027      3707, 3707,    0, 3707, 3707, 3707, 3707, 3707, 3707, 3707,
07028      3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707,
07029      3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707,
07030      3707, 3708, 3708,    0, 3708, 3708, 3708, 3708, 3708, 3708,
07031      3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708,
07032 
07033      3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708,
07034      3708, 3708, 3709, 3709,    0, 3709, 3709, 3709,    0, 3709,
07035      3709, 3709,    0,    0,    0, 3709, 3709, 3709, 3709, 3709,
07036      3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709,
07037      3709, 3709, 3709, 3710, 3710,    0, 3710,    0, 3710, 3710,
07038      3710, 3710, 3710,    0, 3710, 3710, 3710, 3710, 3710, 3710,
07039      3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710,
07040      3710, 3710, 3710, 3710, 3711, 3711,    0, 3711, 3711, 3711,
07041         0, 3711, 3711, 3711,    0, 3711, 3711, 3711, 3711, 3711,
07042         0, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711,
07043 
07044      3711, 3711,    0,    0, 3711, 3712, 3712,    0, 3712,    0,
07045      3712, 3712, 3712, 3712, 3712,    0, 3712, 3712, 3712, 3712,
07046      3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712,
07047      3712, 3712, 3712, 3712, 3712, 3712, 3713, 3713,    0, 3713,
07048      3713, 3713,    0, 3713, 3713, 3713,    0,    0,    0, 3713,
07049      3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713,
07050      3713, 3713, 3713, 3713, 3713, 3713, 3713, 3714, 3714,    0,
07051      3714,    0, 3714, 3714, 3714, 3714, 3714,    0, 3714, 3714,
07052      3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714,
07053      3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3715, 3715,
07054 
07055         0, 3715, 3715, 3715,    0, 3715, 3715, 3715,    0, 3715,
07056      3715, 3715, 3715, 3715,    0, 3715, 3715, 3715, 3715, 3715,
07057      3715, 3715, 3715, 3715, 3715, 3715,    0,    0, 3715, 3716,
07058      3716,    0, 3716,    0, 3716, 3716, 3716, 3716, 3716,    0,
07059      3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716,
07060      3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716,
07061      3718, 3718,    0, 3718,    0, 3718, 3718, 3718, 3718, 3718,
07062         0, 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718,
07063      3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3718,
07064      3718, 3720, 3720,    0, 3720, 3720, 3720,    0, 3720, 3720,
07065 
07066      3720,    0, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720,
07067      3720, 3720, 3720, 3720, 3720, 3720, 3720,    0, 3720, 3720,
07068      3720, 3720, 3721, 3721,    0, 3721, 3721, 3721, 3721, 3721,
07069      3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721,
07070      3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721,
07071      3721, 3721, 3721, 3722, 3722,    0, 3722, 3722, 3722,    0,
07072      3722, 3722, 3722,    0,    0,    0, 3722, 3722, 3722,    0,
07073      3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722,
07074      3722, 3722, 3722, 3722, 3723, 3723,    0, 3723, 3723, 3723,
07075      3723, 3723, 3723, 3723, 3723, 3723, 3723,    0, 3723, 3723,
07076 
07077      3723, 3723, 3723, 3723, 3723, 3723, 3723,    0, 3723, 3723,
07078         0, 3723, 3723, 3723, 3723, 3724, 3724,    0, 3724, 3724,
07079      3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724,
07080      3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724,    0, 3724,
07081      3724,    0, 3724, 3724, 3724, 3724, 3725, 3725, 3725, 3725,
07082         0,    0,    0, 3725,    0,    0,    0,    0,    0,    0,
07083         0,    0,    0,    0,    0,    0,    0,    0,    0, 3725,
07084      3725, 3727, 3727, 3727, 3727,    0,    0,    0,    0,    0,
07085         0,    0, 3727,    0, 3727,    0,    0, 3727,    0,    0,
07086         0,    0,    0,    0, 3727, 3728, 3728, 3728, 3728, 3728,
07087 
07088      3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728,
07089      3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728,
07090      3728, 3728, 3728, 3728, 3728, 3728, 3729, 3729, 3729, 3729,
07091         0,    0,    0, 3729,    0,    0,    0,    0,    0,    0,
07092         0,    0,    0,    0,    0,    0,    0,    0,    0, 3729,
07093      3731, 3731, 3731, 3731,    0,    0,    0,    0,    0,    0,
07094      3731,    0,    0,    0,    0,    0, 3731,    0,    0,    0,
07095         0,    0,    0, 3731, 3732,    0,    0, 3732,    0,    0,
07096         0, 3732, 3732,    0,    0,    0, 3732,    0,    0,    0,
07097         0,    0,    0,    0,    0,    0,    0, 3732, 3733, 3733,
07098 
07099      3733, 3733,    0,    0,    0, 3733,    0,    0,    0,    0,
07100         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07101         0, 3733, 3734, 3734, 3734, 3734, 3734,    0,    0, 3734,
07102         0,    0,    0,    0,    0,    0,    0,    0,    0, 3734,
07103         0,    0,    0,    0,    0, 3734,    0,    0,    0,    0,
07104         0, 3734, 3735, 3735, 3735, 3735,    0,    0,    0,    0,
07105         0,    0,    0,    0,    0,    0,    0,    0, 3735, 3735,
07106         0,    0,    0,    0,    0, 3735, 3736, 3736, 3736, 3736,
07107      3736, 3736, 3736, 3736, 3736, 3736, 3736, 3736, 3736, 3736,
07108      3736, 3736, 3736, 3736, 3736, 3736, 3736, 3736, 3736, 3736,
07109 
07110      3736, 3736, 3736, 3736, 3736, 3736, 3736, 3737, 3737,    0,
07111      3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737,
07112         0, 3737, 3737,    0, 3737, 3737, 3737, 3737, 3737, 3737,
07113         0, 3737, 3737,    0, 3737, 3737, 3737, 3737, 3738, 3738,
07114      3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738,
07115      3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738,
07116      3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3738, 3739,
07117      3739,    0, 3739, 3739, 3739, 3739, 3739,    0, 3739, 3739,
07118      3739, 3739,    0, 3739, 3739,    0, 3739, 3739, 3739,    0,
07119      3739, 3739,    0, 3739, 3739,    0,    0, 3739, 3739, 3739,
07120 
07121      3740,    0,    0, 3740,    0,    0,    0,    0,    0,    0,
07122      3740,    0,    0,    0,    0,    0, 3740,    0,    0,    0,
07123         0,    0,    0, 3740, 3741, 3741, 3741, 3741,    0,    0,
07124         0, 3741,    0,    0,    0,    0,    0,    0, 3741,    0,
07125         0,    0,    0,    0,    0,    0,    0, 3741,    0,    0,
07126         0,    0,    0, 3741, 3742, 3742, 3742, 3742,    0,    0,
07127         0, 3742,    0,    0,    0,    0,    0,    0,    0,    0,
07128         0,    0,    0,    0,    0,    0,    0, 3742, 3743, 3743,
07129      3743, 3743,    0,    0,    0,    0,    0,    0, 3743,    0,
07130         0,    0,    0,    0, 3743,    0, 3743, 3743,    0,    0,
07131 
07132         0, 3743, 3745, 3745, 3745, 3745,    0,    0,    0,    0,
07133         0,    0, 3745,    0,    0,    0, 3745,    0, 3745, 3745,
07134      3745, 3745,    0,    0,    0, 3745, 3746, 3746, 3746, 3746,
07135         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07136      3746,    0, 3746,    0,    0,    0,    0,    0,    0, 3746,
07137      3747, 3747, 3747, 3747,    0,    0,    0, 3747,    0,    0,
07138         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07139         0,    0,    0, 3747, 3748, 3748, 3748, 3748,    0,    0,
07140         0, 3748,    0,    0,    0,    0,    0,    0,    0,    0,
07141         0,    0,    0,    0,    0,    0,    0, 3748, 3749, 3749,
07142 
07143      3749, 3749,    0,    0,    0,    0,    0,    0, 3749,    0,
07144         0,    0,    0,    0, 3749,    0, 3749, 3749,    0,    0,
07145         0, 3749, 3750, 3750, 3750, 3750,    0,    0,    0, 3750,
07146         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07147         0,    0,    0,    0,    0, 3750, 3751, 3751, 3751, 3751,
07148         0,    0,    0,    0,    0,    0, 3751,    0,    0,    0,
07149         0,    0, 3751,    0,    0,    0,    0,    0,    0, 3751,
07150      3753, 3753, 3753, 3753,    0,    0,    0,    0,    0,    0,
07151      3753,    0,    0,    0,    0,    0, 3753, 3753,    0,    0,
07152         0,    0,    0, 3753, 3755,    0,    0,    0, 3755,    0,
07153 
07154      3755,    0,    0, 3755,    0,    0,    0, 3755, 3763, 3763,
07155      3763, 3763,    0,    0,    0, 3763,    0,    0,    0,    0,
07156         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07157         0, 3763,    0,    0,    0, 3763, 3764, 3764, 3764, 3764,
07158         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07159      3764,    0, 3764, 3764,    0,    0,    0,    0,    0, 3764,
07160      3765, 3765, 3765, 3765,    0,    0,    0, 3765,    0,    0,
07161         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07162         0,    0,    0, 3765, 3767, 3767,    0, 3767,    0, 3767,
07163      3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767,
07164 
07165      3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767,
07166         0, 3767, 3767, 3767, 3767, 3768, 3768,    0, 3768, 3768,
07167      3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768,
07168      3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768,
07169      3768, 3768, 3768, 3768, 3768, 3768, 3769, 3769, 3769, 3769,
07170      3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769,
07171      3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769,
07172      3769, 3769, 3769, 3769, 3769, 3769, 3769, 3770, 3770, 3770,
07173      3770,    0,    0,    0, 3770,    0,    0,    0,    0,    0,
07174         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07175 
07176      3770, 3771, 3771, 3771, 3771,    0,    0,    0,    0,    0,
07177         0,    0,    0,    0,    0,    0,    0, 3771,    0,    0,
07178      3771,    0,    0,    0, 3771, 3773, 3773, 3773, 3773,    0,
07179         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07180         0, 3773, 3773,    0, 3773,    0,    0,    0, 3773, 3774,
07181      3774, 3774, 3774,    0,    0,    0, 3774, 3774,    0,    0,
07182         0, 3774,    0,    0,    0,    0,    0,    0,    0,    0,
07183         0,    0, 3774, 3775, 3775, 3775, 3775,    0,    0,    0,
07184         0,    0,    0,    0, 3775, 3775,    0,    0,    0, 3775,
07185      3775,    0, 3775,    0,    0,    0, 3775, 3779, 3779, 3779,
07186 
07187      3779,    0,    0,    0,    0,    0,    0, 3779,    0,    0,
07188         0,    0,    0, 3779,    0,    0,    0,    0,    0,    0,
07189      3779, 3780, 3780,    0, 3780, 3780, 3780, 3780, 3780, 3780,
07190      3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780,
07191      3780,    0, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780,
07192      3780, 3780, 3781, 3781, 3781, 3781,    0,    0,    0, 3781,
07193         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07194         0,    0,    0,    0,    0, 3781, 3782, 3782, 3782, 3782,
07195         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07196         0,    0, 3782,    0,    0, 3782,    0,    0,    0, 3782,
07197 
07198      3784, 3784, 3784, 3784,    0,    0,    0,    0,    0,    0,
07199         0,    0,    0,    0,    0,    0, 3784, 3784,    0, 3784,
07200         0,    0,    0, 3784, 3787, 3787,    0,    0, 3787, 3787,
07201         0,    0, 3787, 3787,    0, 3787, 3787, 3787, 3787, 3787,
07202         0, 3787, 3787, 3787, 3787, 3787, 3787,    0, 3787, 3787,
07203      3787, 3787,    0,    0, 3787, 3788, 3788,    0, 3788, 3788,
07204      3788, 3788, 3788, 3788, 3788, 3788, 3788, 3788, 3788, 3788,
07205      3788, 3788, 3788, 3788, 3788, 3788, 3788, 3788, 3788, 3788,
07206      3788, 3788, 3788, 3788, 3788, 3788, 3789, 3789,    0, 3789,
07207         0, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789,
07208 
07209      3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789,
07210      3789, 3789,    0, 3789, 3789, 3789, 3789, 3790, 3790,    0,
07211      3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790,
07212      3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790,
07213      3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3791, 3791,
07214         0, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791,
07215      3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791,
07216      3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3792,
07217      3792, 3792, 3792,    0,    0,    0,    0,    0,    0,    0,
07218         0,    0,    0, 3792,    0, 3792, 3792,    0,    0,    0,
07219 
07220         0,    0, 3792, 3793, 3793, 3793, 3793,    0,    0,    0,
07221      3793,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07222         0,    0,    0,    0,    0,    0, 3793, 3794, 3794, 3794,
07223      3794,    0,    0,    0, 3794,    0,    0,    0,    0,    0,
07224         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07225      3794, 3797, 3797, 3797, 3797,    0,    0,    0,    0,    0,
07226         0,    0,    0,    0,    0,    0,    0, 3797, 3797,    0,
07227         0,    0,    0,    0, 3797, 3798, 3798,    0, 3798, 3798,
07228      3798,    0,    0, 3798, 3798,    0, 3798, 3798, 3798, 3798,
07229      3798,    0, 3798, 3798, 3798, 3798, 3798, 3798,    0, 3798,
07230 
07231      3798,    0, 3798,    0,    0, 3798, 3799, 3799,    0, 3799,
07232         0, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799,
07233      3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799,
07234      3799, 3799,    0, 3799, 3799, 3799, 3799, 3800, 3800,    0,
07235      3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800,
07236      3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800,
07237      3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3801, 3801,
07238         0, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801,
07239      3801,    0, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801,
07240      3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3802,
07241 
07242      3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802,
07243      3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802,
07244      3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3802,
07245      3803, 3803,    0, 3803, 3803, 3803,    0, 3803, 3803, 3803,
07246      3803, 3803, 3803, 3803, 3803, 3803, 3803, 3803, 3803, 3803,
07247      3803, 3803, 3803, 3803, 3803,    0, 3803,    0, 3803, 3803,
07248      3803, 3804, 3804,    0, 3804, 3804, 3804, 3804, 3804, 3804,
07249      3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804,
07250      3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804,
07251      3804, 3804, 3806,    0,    0,    0,    0, 3806, 3806, 3806,
07252 
07253      3806, 3806, 3806, 3806, 3806,    0, 3806,    0,    0, 3806,
07254      3806, 3806, 3806, 3806, 3806, 3806, 3806, 3806, 3806, 3806,
07255      3806, 3806, 3806, 3809, 3809, 3809, 3809,    0,    0,    0,
07256         0,    0,    0,    0,    0,    0,    0, 3809,    0, 3809,
07257         0,    0,    0,    0,    0,    0, 3809, 3810, 3810, 3810,
07258      3810,    0,    0,    0, 3810,    0,    0,    0,    0, 3810,
07259         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07260      3810, 3811, 3811,    0, 3811, 3811, 3811, 3811, 3811, 3811,
07261      3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811,
07262      3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811,
07263 
07264      3811, 3811, 3814, 3814,    0, 3814, 3814, 3814,    0, 3814,
07265      3814, 3814, 3814, 3814, 3814, 3814, 3814, 3814, 3814, 3814,
07266      3814, 3814, 3814, 3814, 3814, 3814, 3814, 3814, 3814, 3814,
07267      3814, 3814, 3814, 3816, 3816, 3816, 3816, 3816, 3816, 3816,
07268      3816, 3816, 3816, 3816, 3816,    0, 3816, 3816, 3816, 3816,
07269      3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816,
07270      3816, 3816, 3816, 3816, 3817, 3817, 3817, 3817,    0,    0,
07271         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07272      3817, 3817,    0,    0,    0,    0,    0, 3817, 3818, 3818,
07273      3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818,
07274 
07275         0, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818,
07276      3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3820,
07277         0,    0,    0, 3820, 3820,    0,    0, 3820,    0,    0,
07278         0,    0, 3820,    0, 3820, 3824, 3824,    0, 3824,    0,
07279      3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824,
07280      3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824,
07281      3824,    0, 3824, 3824, 3824, 3824, 3825, 3825,    0, 3825,
07282      3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825,
07283      3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825,
07284      3825, 3825, 3825, 3825, 3825, 3825, 3825, 3826, 3826, 3826,
07285 
07286      3826,    0,    0,    0, 3826,    0,    0,    0,    0,    0,
07287         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07288      3826, 3827, 3827, 3827, 3827,    0,    0,    0,    0,    0,
07289         0,    0,    0, 3827,    0,    0,    0, 3827,    0,    0,
07290         0,    0,    0,    0, 3827, 3828, 3828, 3828, 3828,    0,
07291         0,    0, 3828, 3828,    0,    0,    0, 3828,    0,    0,
07292         0,    0,    0,    0,    0,    0,    0,    0, 3828, 3829,
07293      3829, 3829, 3829,    0,    0,    0,    0,    0,    0,    0,
07294         0,    0,    0,    0,    0, 3829,    0,    0,    0,    0,
07295         0,    0, 3829, 3829, 3830, 3830,    0, 3830, 3830, 3830,
07296 
07297      3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830,
07298      3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830, 3830,
07299      3830, 3830, 3830, 3830, 3830, 3831, 3831, 3831, 3831,    0,
07300         0,    0, 3831,    0,    0,    0,    0, 3831,    0,    0,
07301         0,    0,    0,    0,    0,    0,    0,    0, 3831, 3832,
07302      3832, 3832, 3832,    0,    0,    0, 3832,    0,    0,    0,
07303         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07304         0,    0, 3832, 3835, 3835, 3835, 3835,    0,    0,    0,
07305         0,    0,    0,    0,    0,    0,    0,    0,    0, 3835,
07306      3835,    0,    0,    0,    0,    0, 3835, 3836, 3836,    0,
07307 
07308      3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836,
07309      3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836,
07310      3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3837,    0,
07311         0,    0,    0, 3837,    0,    0, 3837, 3837,    0,    0,
07312         0, 3837, 3837, 3837,    0, 3837, 3837, 3837, 3837, 3837,
07313      3837, 3837, 3837, 3837, 3837, 3837, 3837, 3837, 3837, 3838,
07314      3838,    0, 3838,    0, 3838, 3838, 3838, 3838, 3838, 3838,
07315      3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838,
07316      3838, 3838, 3838, 3838, 3838,    0, 3838, 3838, 3838, 3838,
07317      3839, 3839,    0, 3839, 3839, 3839, 3839, 3839, 3839, 3839,
07318 
07319      3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839,
07320      3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839,
07321      3839, 3842, 3842,    0, 3842, 3842, 3842,    0, 3842, 3842,
07322      3842,    0,    0,    0, 3842, 3842, 3842, 3842, 3842, 3842,
07323      3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842,
07324      3842, 3842, 3843, 3843,    0, 3843,    0, 3843, 3843, 3843,
07325      3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843,
07326      3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843,    0, 3843,
07327      3843, 3843, 3843, 3844, 3844,    0, 3844, 3844, 3844, 3844,
07328      3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844,
07329 
07330      3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844,
07331      3844, 3844, 3844, 3844, 3845, 3845,    0, 3845, 3845, 3845,
07332         0, 3845, 3845, 3845,    0, 3845, 3845, 3845, 3845, 3845,
07333         0, 3845, 3845, 3845, 3845, 3845, 3845, 3845, 3845, 3845,
07334      3845, 3845,    0,    0, 3845, 3846, 3846,    0, 3846,    0,
07335      3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846,
07336      3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846,
07337      3846,    0, 3846, 3846, 3846, 3846, 3847, 3847,    0, 3847,
07338      3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847,
07339      3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847,
07340 
07341      3847, 3847, 3847, 3847, 3847, 3847, 3847, 3848, 3848,    0,
07342      3848, 3848, 3848,    0, 3848, 3848, 3848,    0,    0,    0,
07343      3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848,
07344      3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3849, 3849,
07345         0, 3849,    0, 3849, 3849, 3849, 3849, 3849, 3849, 3849,
07346      3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849,
07347      3849, 3849, 3849, 3849,    0, 3849, 3849, 3849, 3849, 3850,
07348      3850,    0, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850,
07349      3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850,
07350      3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850,
07351 
07352      3851, 3851,    0, 3851, 3851, 3851,    0, 3851, 3851, 3851,
07353         0, 3851, 3851, 3851, 3851, 3851,    0, 3851, 3851, 3851,
07354      3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851,    0,    0,
07355      3851, 3852, 3852,    0, 3852,    0, 3852, 3852, 3852, 3852,
07356      3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852,
07357      3852, 3852, 3852, 3852, 3852, 3852, 3852,    0, 3852, 3852,
07358      3852, 3852, 3853, 3853,    0, 3853, 3853, 3853, 3853, 3853,
07359      3853, 3853, 3853, 3853, 3853, 3853, 3853, 3853, 3853, 3853,
07360      3853, 3853, 3853, 3853, 3853, 3853, 3853, 3853, 3853, 3853,
07361      3853, 3853, 3853, 3855, 3855,    0, 3855,    0, 3855, 3855,
07362 
07363      3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855,
07364      3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855, 3855,    0,
07365      3855, 3855, 3855, 3855, 3856, 3856,    0, 3856, 3856, 3856,
07366      3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856,
07367      3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856, 3856,
07368      3856, 3856, 3856, 3856, 3856, 3857, 3857,    0, 3857, 3857,
07369      3857,    0, 3857, 3857, 3857,    0, 3857, 3857, 3857, 3857,
07370      3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857,
07371      3857,    0, 3857, 3857, 3857, 3857, 3858, 3858,    0, 3858,
07372      3858, 3858,    0, 3858, 3858, 3858,    0,    0,    0, 3858,
07373 
07374      3858, 3858,    0, 3858, 3858, 3858, 3858, 3858, 3858, 3858,
07375      3858, 3858, 3858, 3858, 3858, 3858, 3858, 3859, 3859,    0,
07376      3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859,
07377         0, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859, 3859,
07378         0, 3859, 3859,    0, 3859, 3859, 3859, 3859, 3860, 3860,
07379         0, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860,
07380      3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860,
07381      3860,    0, 3860, 3860,    0, 3860, 3860, 3860, 3860, 3861,
07382      3861, 3861, 3861,    0,    0,    0, 3861,    0,    0,    0,
07383         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07384 
07385         0,    0, 3861, 3861, 3862, 3862, 3862, 3862,    0,    0,
07386         0,    0,    0,    0,    0, 3862,    0, 3862,    0,    0,
07387      3862,    0,    0,    0,    0,    0,    0, 3862, 3863, 3863,
07388      3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863,
07389      3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863,
07390      3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863, 3863, 3864,
07391      3864, 3864, 3864,    0,    0,    0,    0,    0,    0,    0,
07392      3864,    0, 3864,    0,    0, 3864,    0,    0,    0,    0,
07393         0,    0, 3864, 3865, 3865, 3865, 3865,    0,    0,    0,
07394      3865,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07395 
07396         0,    0,    0,    0,    0,    0, 3865, 3866, 3866, 3866,
07397      3866,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07398         0,    0,    0, 3866,    0,    0,    0,    0,    0,    0,
07399      3866, 3867, 3867, 3867, 3867,    0,    0,    0,    0,    0,
07400         0, 3867,    0,    0,    0,    0,    0, 3867,    0,    0,
07401         0,    0,    0,    0, 3867, 3870, 3870, 3870, 3870,    0,
07402         0,    0, 3870,    0,    0,    0,    0,    0,    0,    0,
07403         0,    0,    0,    0,    0,    0,    0,    0, 3870, 3873,
07404      3873, 3873, 3873,    0,    0,    0,    0,    0,    0,    0,
07405         0,    0,    0,    0,    0, 3873, 3873,    0,    0,    0,
07406 
07407         0,    0, 3873, 3874, 3874, 3874, 3874, 3874, 3874, 3874,
07408      3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874,
07409      3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874,
07410      3874, 3874, 3874, 3874, 3875, 3875,    0, 3875, 3875, 3875,
07411      3875, 3875, 3875, 3875, 3875, 3875, 3875,    0, 3875, 3875,
07412         0, 3875, 3875, 3875, 3875, 3875, 3875,    0, 3875, 3875,
07413         0, 3875, 3875, 3875, 3875, 3877, 3877, 3877, 3877, 3877,
07414      3877, 3877, 3877, 3877, 3877, 3877, 3877, 3877, 3877, 3877,
07415      3877,    0, 3877, 3877, 3877, 3877, 3877, 3877, 3877, 3877,
07416      3877, 3877, 3877, 3877, 3877, 3877, 3878, 3878,    0, 3878,
07417 
07418      3878, 3878, 3878, 3878,    0, 3878, 3878, 3878, 3878,    0,
07419      3878, 3878,    0, 3878, 3878, 3878,    0, 3878, 3878,    0,
07420      3878, 3878,    0,    0, 3878, 3878, 3878, 3879, 3879, 3879,
07421      3879,    0,    0,    0,    0,    0,    0, 3879,    0,    0,
07422         0,    0,    0, 3879,    0, 3879, 3879,    0,    0,    0,
07423      3879, 3880, 3880, 3880, 3880,    0,    0,    0,    0,    0,
07424         0, 3880,    0,    0,    0,    0,    0, 3880, 3880, 3880,
07425      3880,    0,    0,    0, 3880, 3881, 3881, 3881, 3881,    0,
07426         0,    0,    0,    0,    0,    0,    0,    0,    0, 3881,
07427         0, 3881,    0,    0,    0,    0,    0,    0, 3881, 3882,
07428 
07429      3882, 3882, 3882,    0,    0,    0, 3882,    0,    0,    0,
07430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07431         0,    0, 3882, 3884, 3884, 3884, 3884, 3884,    0,    0,
07432      3884,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07433      3884,    0,    0,    0,    0,    0, 3884,    0,    0,    0,
07434         0,    0, 3884, 3885, 3885, 3885, 3885,    0,    0,    0,
07435         0,    0,    0, 3885,    0,    0,    0,    0,    0, 3885,
07436         0, 3885, 3885,    0,    0,    0, 3885, 3886, 3886, 3886,
07437      3886,    0,    0,    0,    0,    0,    0, 3886,    0,    0,
07438         0,    0,    0, 3886,    0,    0,    0,    0,    0,    0,
07439 
07440      3886, 3887, 3887, 3887, 3887,    0,    0,    0,    0,    0,
07441         0, 3887,    0,    0,    0,    0,    0, 3887, 3887,    0,
07442         0,    0,    0,    0, 3887, 3888, 3888, 3888, 3888, 3888,
07443      3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888,    0, 3888,
07444      3888,    0, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888,
07445      3888, 3888, 3888, 3888, 3888, 3888, 3889, 3889, 3889, 3889,
07446      3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889,
07447      3889, 3889,    0, 3889, 3889, 3889, 3889, 3889, 3889, 3889,
07448      3889, 3889, 3889, 3889, 3889, 3889, 3889, 3890, 3890, 3890,
07449      3890, 3890,    0,    0, 3890,    0,    0,    0,    0,    0,
07450 
07451         0,    0,    0,    0, 3890,    0,    0,    0,    0,    0,
07452      3890,    0,    0,    0,    0,    0, 3890, 3891, 3891, 3891,
07453      3891,    0,    0,    0,    0,    0,    0, 3891,    0,    0,
07454         0,    0,    0, 3891, 3891,    0,    0,    0,    0,    0,
07455      3891, 3895,    0,    0,    0, 3895,    0, 3895,    0,    0,
07456      3895,    0,    0,    0, 3895, 3896, 3896, 3896, 3896, 3896,
07457         0,    0, 3896,    0,    0,    0,    0,    0,    0,    0,
07458         0,    0, 3896,    0,    0,    0,    0,    0, 3896,    0,
07459         0,    0,    0,    0, 3896, 3898, 3898, 3898, 3898,    0,
07460         0,    0,    0,    0,    0,    0,    0,    0,    0, 3898,
07461 
07462         0, 3898, 3898,    0,    0,    0,    0,    0, 3898, 3899,
07463      3899, 3899, 3899,    0,    0,    0, 3899,    0,    0,    0,
07464         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07465         0,    0, 3899, 3900, 3900, 3900, 3900,    0,    0,    0,
07466         0,    0,    0,    0,    0,    0,    0,    0,    0, 3900,
07467      3900,    0,    0,    0,    0,    0, 3900, 3903, 3903,    0,
07468      3903,    0, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903,
07469      3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903,
07470      3903, 3903, 3903,    0, 3903, 3903, 3903, 3903, 3904, 3904,
07471      3904, 3904, 3904,    0,    0, 3904,    0,    0,    0,    0,
07472 
07473         0,    0,    0,    0,    0, 3904,    0,    0,    0,    0,
07474         0, 3904,    0,    0,    0,    0,    0, 3904, 3905, 3905,
07475      3905, 3905,    0,    0,    0,    0,    0,    0,    0,    0,
07476         0,    0,    0,    0, 3905,    0,    0, 3905,    0,    0,
07477         0, 3905, 3906, 3906, 3906, 3906,    0,    0,    0, 3906,
07478      3906,    0,    0,    0, 3906,    0,    0,    0,    0,    0,
07479         0,    0,    0,    0,    0, 3906, 3907, 3907, 3907, 3907,
07480         0,    0,    0, 3907,    0,    0,    0, 3907,    0,    0,
07481         0,    0,    0,    0,    0,    0,    0,    0,    0, 3907,
07482      3908, 3908, 3908, 3908,    0,    0,    0,    0,    0,    0,
07483 
07484         0, 3908, 3908,    0,    0,    0, 3908, 3908,    0, 3908,
07485         0,    0,    0, 3908, 3909,    0,    0, 3909,    0,    0,
07486         0,    0, 3909,    0,    0,    0, 3909, 3909,    0,    0,
07487      3909,    0,    0,    0,    0, 3909,    0, 3909, 3910, 3910,
07488      3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910,
07489      3910,    0, 3910, 3910,    0, 3910, 3910, 3910, 3910, 3910,
07490      3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3911,
07491      3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911,
07492      3911, 3911, 3911, 3911, 3911,    0, 3911, 3911, 3911, 3911,
07493      3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911,
07494 
07495      3913, 3913, 3913, 3913,    0,    0,    0,    0,    0,    0,
07496      3913,    0,    0,    0,    0,    0, 3913,    0,    0,    0,
07497         0,    0,    0, 3913, 3914, 3914, 3914, 3914,    0,    0,
07498         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07499      3914, 3914,    0, 3914,    0,    0,    0, 3914, 3915, 3915,
07500      3915, 3915,    0,    0,    0,    0,    0,    0,    0,    0,
07501         0,    0,    0,    0, 3915,    0,    0, 3915,    0,    0,
07502         0, 3915, 3916, 3916, 3916, 3916, 3916,    0,    0, 3916,
07503         0,    0,    0,    0,    0,    0,    0,    0,    0, 3916,
07504         0,    0,    0,    0,    0, 3916,    0,    0,    0,    0,
07505 
07506         0, 3916, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918,
07507      3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918,
07508      3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918,
07509      3918, 3918, 3918, 3919, 3919,    0, 3919, 3919, 3919, 3919,
07510      3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919,
07511      3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919, 3919,
07512      3919, 3919, 3919, 3919, 3920, 3920,    0, 3920,    0, 3920,
07513      3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
07514      3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
07515         0, 3920, 3920, 3920, 3920, 3921, 3921,    0, 3921, 3921,
07516 
07517      3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921,
07518      3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921,
07519      3921, 3921, 3921, 3921, 3921, 3921, 3922, 3922, 3922, 3922,
07520         0,    0,    0, 3922,    0,    0,    0,    0,    0,    0,
07521         0,    0,    0,    0,    0,    0,    0,    0,    0, 3922,
07522      3923, 3923, 3923, 3923,    0,    0,    0,    0,    0,    0,
07523         0,    0,    0,    0, 3923,    0, 3923, 3923,    0,    0,
07524         0,    0,    0, 3923, 3924, 3924, 3924, 3924,    0,    0,
07525         0,    0,    0,    0,    0,    0,    0,    0, 3924,    0,
07526      3924, 3924,    0,    0,    0,    0,    0, 3924, 3926, 3926,
07527 
07528      3926, 3926, 3926,    0,    0, 3926,    0,    0,    0,    0,
07529         0,    0,    0,    0,    0, 3926,    0,    0,    0,    0,
07530         0, 3926,    0,    0,    0,    0,    0, 3926, 3927, 3927,
07531         0, 3927,    0, 3927, 3927, 3927, 3927, 3927, 3927, 3927,
07532      3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927,
07533      3927, 3927, 3927, 3927,    0, 3927, 3927, 3927, 3927, 3929,
07534         0,    0,    0,    0, 3929, 3929, 3929, 3929, 3929, 3929,
07535      3929, 3929,    0, 3929,    0,    0, 3929, 3929, 3929, 3929,
07536      3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929,
07537      3932, 3932, 3932, 3932,    0,    0,    0, 3932,    0,    0,
07538 
07539         0,    0, 3932,    0,    0,    0,    0,    0,    0,    0,
07540         0,    0,    0, 3932, 3933, 3933, 3933, 3933,    0,    0,
07541         0,    0,    0,    0,    0,    0,    0,    0, 3933,    0,
07542      3933,    0,    0,    0,    0,    0,    0, 3933, 3935,    0,
07543         0,    0, 3935, 3935,    0,    0, 3935,    0,    0,    0,
07544         0, 3935,    0, 3935, 3937, 3937,    0, 3937,    0, 3937,
07545      3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937,
07546      3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937,
07547         0, 3937, 3937, 3937, 3937, 3938, 3938,    0, 3938, 3938,
07548      3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938,
07549 
07550      3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938,
07551      3938, 3938, 3938, 3938, 3938, 3938, 3939, 3939, 3939, 3939,
07552         0,    0,    0, 3939,    0,    0,    0,    0, 3939,    0,
07553         0,    0,    0,    0,    0,    0,    0,    0,    0, 3939,
07554      3940, 3940, 3940, 3940,    0,    0,    0,    0,    0,    0,
07555         0,    0,    0,    0,    0,    0, 3940, 3940,    0,    0,
07556         0,    0,    0, 3940, 3942, 3942, 3942, 3942, 3942,    0,
07557         0, 3942,    0,    0,    0,    0,    0,    0,    0,    0,
07558         0, 3942,    0,    0,    0,    0,    0, 3942,    0,    0,
07559         0,    0,    0, 3942, 3943, 3943,    0, 3943,    0, 3943,
07560 
07561      3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943,
07562      3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943,
07563         0, 3943, 3943, 3943, 3943, 3945, 3945,    0, 3945,    0,
07564      3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945,
07565      3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945,
07566      3945,    0, 3945, 3945, 3945, 3945, 3946, 3946,    0, 3946,
07567         0, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946,
07568      3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946,
07569      3946, 3946,    0, 3946, 3946, 3946, 3946, 3947, 3947,    0,
07570      3947,    0, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947,
07571 
07572      3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947,
07573      3947, 3947, 3947,    0, 3947, 3947, 3947, 3947, 3948, 3948,
07574         0, 3948,    0, 3948, 3948, 3948, 3948, 3948, 3948, 3948,
07575      3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948,
07576      3948, 3948, 3948, 3948,    0, 3948, 3948, 3948, 3948, 3949,
07577      3949,    0, 3949, 3949, 3949,    0, 3949, 3949, 3949,    0,
07578      3949, 3949, 3949, 3949, 3949,    0, 3949, 3949, 3949, 3949,
07579      3949, 3949, 3949, 3949, 3949, 3949, 3949,    0,    0, 3949,
07580      3950, 3950,    0, 3950,    0, 3950, 3950, 3950, 3950, 3950,
07581      3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950,
07582 
07583      3950, 3950, 3950, 3950, 3950, 3950,    0, 3950, 3950, 3950,
07584      3950, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951,
07585      3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951,    0, 3951,
07586      3951, 3951, 3951, 3951, 3951,    0, 3951, 3951, 3951, 3951,
07587      3951, 3951, 3952, 3952, 3952, 3952,    0,    0,    0,    0,
07588         0,    0,    0, 3952,    0, 3952,    0,    0, 3952,    0,
07589         0,    0,    0,    0,    0, 3952, 3953, 3953, 3953, 3953,
07590         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07591         0,    0, 3953,    0,    0,    0,    0,    0,    0, 3953,
07592      3956, 3956, 3956, 3956, 3956,    0,    0, 3956,    0,    0,
07593 
07594         0,    0,    0,    0,    0,    0,    0, 3956,    0,    0,
07595         0,    0,    0, 3956,    0,    0,    0,    0,    0, 3956,
07596      3957, 3957,    0, 3957, 3957, 3957, 3957, 3957, 3957, 3957,
07597      3957, 3957, 3957,    0, 3957, 3957,    0, 3957, 3957, 3957,
07598      3957, 3957, 3957,    0, 3957, 3957,    0, 3957, 3957, 3957,
07599      3957, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959,
07600      3959, 3959, 3959, 3959, 3959, 3959, 3959,    0, 3959, 3959,
07601      3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959,
07602      3959, 3959, 3960, 3960, 3960, 3960,    0,    0,    0,    0,
07603         0,    0, 3960,    0,    0,    0,    0,    0, 3960, 3960,
07604 
07605      3960, 3960,    0,    0,    0, 3960, 3962, 3962, 3962, 3962,
07606         0,    0,    0,    0,    0,    0, 3962,    0,    0,    0,
07607         0,    0, 3962, 3962,    0,    0,    0,    0,    0, 3962,
07608      3963, 3963, 3963, 3963,    0,    0,    0,    0,    0,    0,
07609      3963,    0,    0,    0,    0,    0, 3963, 3963,    0,    0,
07610         0,    0,    0, 3963, 3965,    0,    0,    0, 3965,    0,
07611      3965,    0,    0, 3965,    0,    0,    0, 3965, 3966, 3966,
07612      3966, 3966, 3966,    0,    0, 3966,    0,    0,    0,    0,
07613         0,    0,    0,    0,    0, 3966,    0,    0,    0,    0,
07614         0, 3966,    0,    0,    0,    0,    0, 3966, 3967, 3967,
07615 
07616      3967, 3967,    0,    0,    0, 3967,    0,    0,    0,    0,
07617         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07618         0, 3967, 3968, 3968, 3968, 3968,    0,    0,    0,    0,
07619         0,    0,    0,    0,    0,    0,    0,    0, 3968, 3968,
07620         0,    0,    0,    0,    0, 3968, 3969, 3969, 3969, 3969,
07621         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07622      3969,    0, 3969, 3969,    0,    0,    0,    0,    0, 3969,
07623      3970, 3970, 3970, 3970,    0,    0,    0,    0,    0,    0,
07624         0,    0,    0,    0,    0,    0, 3970, 3970,    0,    0,
07625         0,    0,    0, 3970, 3972, 3972, 3972, 3972,    0,    0,
07626 
07627         0, 3972,    0,    0,    0,    0,    0,    0,    0,    0,
07628         0,    0,    0,    0,    0,    0,    0, 3972, 3973, 3973,
07629         0, 3973,    0, 3973, 3973, 3973, 3973, 3973, 3973, 3973,
07630      3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973,
07631      3973, 3973, 3973, 3973,    0, 3973, 3973, 3973, 3973, 3974,
07632      3974, 3974, 3974,    0,    0,    0, 3974, 3974,    0,    0,
07633         0, 3974,    0,    0,    0,    0,    0,    0,    0,    0,
07634         0,    0, 3974, 3975, 3975, 3975, 3975,    0,    0,    0,
07635         0,    0,    0,    0,    0,    0,    0,    0,    0, 3975,
07636      3975,    0, 3975,    0,    0,    0, 3975, 3976, 3976, 3976,
07637 
07638      3976,    0,    0,    0, 3976,    0,    0,    0, 3976,    0,
07639         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07640      3976, 3978, 3978, 3978, 3978,    0,    0,    0, 3978, 3978,
07641         0,    0,    0, 3978,    0,    0,    0,    0,    0,    0,
07642         0,    0,    0,    0, 3978, 3979,    0,    0, 3979,    0,
07643         0,    0,    0, 3979,    0,    0,    0, 3979, 3979,    0,
07644         0, 3979,    0,    0,    0,    0, 3979,    0, 3979, 3980,
07645      3980,    0, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980,
07646      3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980,
07647      3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980,
07648 
07649      3981, 3981,    0, 3981, 3981, 3981, 3981, 3981, 3981, 3981,
07650      3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981,
07651      3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981,
07652      3981, 3982, 3982, 3982, 3982,    0,    0,    0,    0,    0,
07653         0, 3982,    0,    0,    0,    0,    0, 3982,    0,    0,
07654         0,    0,    0,    0, 3982, 3983, 3983, 3983, 3983,    0,
07655         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07656         0, 3983, 3983,    0, 3983,    0,    0,    0, 3983, 3985,
07657      3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985,
07658      3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985,
07659 
07660      3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985,
07661      3986, 3986,    0, 3986, 3986, 3986, 3986, 3986, 3986, 3986,
07662      3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986,
07663      3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986,
07664      3986, 3987, 3987,    0, 3987,    0, 3987, 3987, 3987, 3987,
07665      3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987,
07666      3987, 3987, 3987, 3987, 3987, 3987, 3987,    0, 3987, 3987,
07667      3987, 3987, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988,
07668      3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988,    0,
07669      3988, 3988, 3988, 3988, 3988, 3988,    0, 3988, 3988, 3988,
07670 
07671      3988, 3988, 3988, 3989, 3989, 3989, 3989,    0,    0,    0,
07672         0,    0,    0,    0,    0,    0,    0, 3989,    0, 3989,
07673      3989,    0,    0,    0,    0,    0, 3989, 3990, 3990, 3990,
07674      3990,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07675         0, 3990,    0, 3990, 3990,    0,    0,    0,    0,    0,
07676      3990, 3991, 3991,    0, 3991,    0, 3991, 3991, 3991, 3991,
07677      3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991,
07678      3991, 3991, 3991, 3991, 3991, 3991, 3991,    0, 3991, 3991,
07679      3991, 3991, 3993,    0,    0,    0,    0, 3993, 3993, 3993,
07680      3993, 3993, 3993, 3993, 3993,    0, 3993,    0,    0, 3993,
07681 
07682      3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993,
07683      3993, 3993, 3993, 3995, 3995, 3995, 3995,    0,    0,    0,
07684         0,    0,    0,    0,    0,    0,    0, 3995,    0, 3995,
07685         0,    0,    0,    0,    0,    0, 3995, 3998, 3998,    0,
07686      3998,    0, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998,
07687      3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998,
07688      3998, 3998, 3998,    0, 3998, 3998, 3998, 3998, 3999, 3999,
07689      3999, 3999,    0,    0,    0,    0,    0,    0,    0,    0,
07690         0,    0,    0,    0, 3999, 3999,    0,    0,    0,    0,
07691         0, 3999, 4000, 4000,    0, 4000,    0, 4000, 4000, 4000,
07692 
07693      4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,
07694      4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,    0, 4000,
07695      4000, 4000, 4000, 4002, 4002,    0, 4002,    0, 4002, 4002,
07696      4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002,
07697      4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002,    0,
07698      4002, 4002, 4002, 4002, 4003, 4003,    0, 4003,    0, 4003,
07699      4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003,
07700      4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003,
07701         0, 4003, 4003, 4003, 4003, 4004, 4004,    0, 4004,    0,
07702      4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004,
07703 
07704      4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004,
07705      4004,    0, 4004, 4004, 4004, 4004, 4005, 4005,    0, 4005,
07706         0, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005,
07707      4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005,
07708      4005, 4005,    0, 4005, 4005, 4005, 4005, 4006, 4006,    0,
07709      4006, 4006, 4006, 4006, 4006, 4006, 4006,    0, 4006, 4006,
07710      4006, 4006, 4006,    0, 4006, 4006, 4006, 4006, 4006, 4006,
07711      4006, 4006, 4006, 4006, 4006,    0,    0, 4006, 4007, 4007,
07712         0, 4007,    0, 4007, 4007, 4007, 4007, 4007, 4007, 4007,
07713      4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007,
07714 
07715      4007, 4007, 4007, 4007,    0, 4007, 4007, 4007, 4007, 4008,
07716      4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008,
07717      4008, 4008, 4008, 4008, 4008, 4008,    0, 4008, 4008, 4008,
07718      4008, 4008, 4008,    0, 4008, 4008, 4008, 4008, 4008, 4008,
07719      4009,    0,    0, 4009,    0,    0,    0, 4009, 4009,    0,
07720         0,    0, 4009,    0,    0,    0,    0,    0,    0,    0,
07721         0,    0,    0, 4009, 4010, 4010,    0, 4010, 4010, 4010,
07722      4010, 4010, 4010, 4010, 4010, 4010, 4010,    0, 4010, 4010,
07723         0, 4010, 4010, 4010, 4010, 4010, 4010,    0, 4010, 4010,
07724         0, 4010, 4010, 4010, 4010, 4011, 4011, 4011, 4011, 4011,
07725 
07726      4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011,
07727      4011, 4011,    0, 4011, 4011, 4011, 4011, 4011, 4011,    0,
07728      4011, 4011, 4011, 4011, 4011, 4011, 4012, 4012, 4012, 4012,
07729         0,    0,    0,    0,    0,    0, 4012,    0,    0,    0,
07730         0,    0, 4012, 4012,    0,    0,    0,    0,    0, 4012,
07731      4013,    0,    0,    0, 4013,    0, 4013,    0,    0, 4013,
07732         0,    0,    0, 4013, 4014, 4014, 4014, 4014,    0,    0,
07733         0, 4014,    0,    0,    0,    0,    0,    0,    0,    0,
07734         0,    0,    0,    0,    0,    0,    0, 4014, 4017, 4017,
07735      4017, 4017,    0,    0,    0,    0,    0,    0,    0,    0,
07736 
07737         0,    0,    0,    0, 4017, 4017,    0,    0,    0,    0,
07738         0, 4017, 4018, 4018, 4018, 4018,    0,    0,    0,    0,
07739         0,    0,    0,    0,    0,    0, 4018,    0, 4018, 4018,
07740         0,    0,    0,    0,    0, 4018, 4019, 4019, 4019, 4019,
07741         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07742         0,    0, 4019, 4019,    0, 4019,    0,    0,    0, 4019,
07743      4020,    0,    0, 4020,    0,    0,    0,    0, 4020,    0,
07744         0,    0, 4020, 4020,    0,    0, 4020,    0,    0,    0,
07745         0, 4020,    0, 4020, 4023, 4023, 4023, 4023,    0,    0,
07746         0,    0,    0,    0,    0, 4023,    0,    0,    0,    0,
07747 
07748      4023, 4023,    0, 4023,    0,    0,    0, 4023, 4024, 4024,
07749         0, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024,
07750      4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024,
07751      4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4025,
07752      4025,    0, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025,
07753      4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025,
07754      4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025,
07755      4026, 4026, 4026, 4026,    0,    0,    0,    0,    0,    0,
07756      4026,    0,    0,    0,    0,    0, 4026,    0,    0,    0,
07757         0,    0,    0, 4026, 4027, 4027, 4027, 4027,    0,    0,
07758 
07759         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07760      4027, 4027,    0, 4027,    0,    0,    0, 4027, 4029, 4029,
07761         0, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029,
07762      4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029,
07763      4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4030,
07764      4030, 4030, 4030,    0,    0,    0,    0,    0,    0,    0,
07765         0,    0,    0, 4030,    0, 4030, 4030,    0,    0,    0,
07766         0,    0, 4030, 4031, 4031, 4031, 4031,    0,    0,    0,
07767         0,    0,    0,    0,    0,    0,    0,    0,    0, 4031,
07768         0,    0,    0,    0,    0,    0, 4031, 4032,    0,    0,
07769 
07770         0,    0, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032,
07771         0, 4032,    0,    0, 4032, 4032, 4032, 4032, 4032, 4032,
07772      4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4034, 4034,
07773      4034, 4034,    0,    0,    0, 4034,    0,    0,    0,    0,
07774      4034,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07775         0, 4034, 4035, 4035,    0, 4035, 4035, 4035,    0, 4035,
07776      4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035,
07777      4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035,
07778      4035, 4035, 4035, 4036, 4036,    0, 4036, 4036, 4036, 4036,
07779      4036, 4036, 4036, 4036, 4036, 4036,    0, 4036, 4036,    0,
07780 
07781      4036, 4036, 4036, 4036, 4036, 4036,    0, 4036, 4036,    0,
07782      4036, 4036, 4036, 4036, 4037, 4037, 4037, 4037,    0,    0,
07783         0,    0,    0,    0, 4037,    0,    0,    0,    0,    0,
07784      4037, 4037,    0,    0,    0,    0,    0, 4037, 4038, 4038,
07785      4038, 4038,    0,    0,    0, 4038, 4038,    0,    0,    0,
07786      4038,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07787         0, 4038, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043,
07788      4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043,    0,
07789      4043, 4043, 4043, 4043, 4043, 4043,    0, 4043, 4043, 4043,
07790      4043, 4043, 4043, 4046, 4046, 4046, 4046, 4046, 4046, 4046,
07791 
07792      4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046,
07793         0, 4046, 4046, 4046, 4046, 4046, 4046,    0, 4046, 4046,
07794      4046, 4046, 4046, 4046, 4048, 4048, 4048, 4048,    0,    0,
07795         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
07796      4048,    0,    0,    0, 4048,    0,    0, 4048, 3549, 3549,
07797      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07798      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07799      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07800      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07801      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07802 
07803      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07804      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07805      3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
07806      3549
07807     } ;
07808 
07809 extern int scanYY_flex_debug;
07810 int scanYY_flex_debug = 0;
07811 
07812 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
07813 static char *yy_full_match;
07814 static int yy_lp;
07815 static int yy_looking_for_trail_begin = 0;
07816 static int yy_full_lp;
07817 static int *yy_full_state;
07818 #define YY_TRAILING_MASK 0x2000
07819 #define YY_TRAILING_HEAD_MASK 0x4000
07820 #define REJECT \
07821 { \
07822 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */ \
07823 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
07824 (yy_lp) = yy_full_lp; /* restore orig. accepting pos. */ \
07825 (yy_state_ptr) = yy_full_state; /* restore orig. state */ \
07826 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
07827 ++(yy_lp); \
07828 goto find_rule; \
07829 }
07830 
07831 #define yymore() yymore_used_but_not_detected
07832 #define YY_MORE_ADJ 0
07833 #define YY_RESTORE_YY_MORE_OFFSET
07834 char *scanYYtext;
07835 #line 1 "scanner.l"
07836 /*****************************************************************************
07837  *
07838  * $Id: scanner.l,v 1.80 2001/03/19 19:27:41 root Exp $
07839  *
07840  * Copyright (C) 1997-2008 by Dimitri van Heesch.
07841  *
07842  * Permission to use, copy, modify, and distribute this software and its
07843  * documentation under the terms of the GNU General Public License is hereby 
07844  * granted. No representations are made about the suitability of this software 
07845  * for any purpose. It is provided "as is" without express or implied warranty.
07846  * See the GNU General Public License for more details.
07847  *
07848  * Documents produced by Doxygen are derivative works derived from the
07849  * input used in their production; they are not affected by this license.
07850  *
07851  */
07852 #line 19 "scanner.l"
07853 
07854 /*
07855  *      includes
07856  */
07857 #include <stdio.h>
07858 #include <stdlib.h>
07859 #include <assert.h>
07860 #include <ctype.h>
07861 
07862 #include "qtbc.h"
07863 #include <qarray.h>
07864 #include <qstack.h>
07865 #include <qregexp.h>
07866 #include <unistd.h>
07867 #include <qfile.h>
07868   
07869 #include "scanner.h"
07870 #include "entry.h"
07871 #include "message.h"
07872 #include "config.h"
07873 #include "doxygen.h"
07874 #include "util.h"
07875 #include "defargs.h"
07876 #include "language.h"
07877 #include "commentscan.h"
07878 #include "code.h"
07879 
07880 #define YY_NEVER_INTERACTIVE 1
07881 
07882 /* -----------------------------------------------------------------
07883  *
07884  *      statics
07885  */
07886 static ParserInterface *g_thisParser;
07887 static const char *     inputString;
07888 static int              inputPosition;
07889 static QFile            inputFile;
07890 static int              lastContext;
07891 static int              lastCContext;
07892 static int              lastDocContext;
07893 static int              lastCPPContext;
07894 static int              lastSkipSharpContext;
07895 static int              lastSkipRoundContext;
07896 static int              lastStringContext;
07897 static int              lastCurlyContext;
07898 static int              lastRoundContext;
07899 static int              lastSquareContext;
07900 static int              lastInitializerContext;
07901 static int              lastClassTemplSpecContext;
07902 static int              lastPreLineCtrlContext;
07903 static int              lastSkipVerbStringContext;
07904 static int              lastCommentInArgContext;
07905 static int              lastCSConstraint;
07906 static Protection       protection;
07907 static Protection       baseProt;
07908 static int              sharpCount   = 0 ;
07909 static int              roundCount   = 0 ;
07910 static int              curlyCount   = 0 ;
07911 static int              squareCount  = 0 ;
07912 static int              padCount     = 0 ;
07913 static QCString         slString;
07914 static Entry*           current_root = 0 ;
07915 static Entry*           global_root  = 0 ;
07916 static Entry*           current      = 0 ;
07917 static Entry*           previous     = 0 ;
07918 static Entry*           tempEntry    = 0 ;
07919 static Entry*           firstTypedefEntry = 0 ;
07920 static Entry*           memspecEntry = 0 ;
07921 static int              yyLineNr     = 1 ;
07922 static int              anonCount    = 0 ;        
07923 static int              anonNSCount  = 0 ;        
07924 static QCString         yyFileName;
07925 static MethodTypes      mtype;
07926 static bool             gstat;
07927 static bool             removeSlashes;
07928 static Specifier        virt;
07929 static Specifier        baseVirt;
07930 static QCString         msType,msName,msArgs;
07931 static bool             isTypedef;
07932 static int              tmpDocType;
07933 static QCString         sectionLabel;
07934 static QCString         sectionTitle;
07935 static QCString         funcPtrType;
07936 static QCString         templateStr;
07937 static QCString         aliasName;
07938 static QCString         baseName;
07939 static QCString*        specName;
07940 static QCString         formulaText;
07941 static QCString         formulaEnd;
07942 static bool             useOverrideCommands = FALSE;
07943 
07944 static bool             insideIDL   = FALSE;            
07945 static bool             insideJava  = FALSE;            
07946 static bool             insideCS    = FALSE;            
07947 static bool             insideD     = FALSE;            
07948 static bool             insidePHP   = FALSE;            
07949 static bool             insideObjC  = FALSE;            
07950 static bool             insideCli   = FALSE;            
07951 static bool             insideJS    = FALSE;            
07952 
07953 static bool             insideCppQuote = FALSE;
07954 static bool             insideProtocolList = FALSE;
07955 
07956 static int              argRoundCount;
07957 static int              argSharpCount;
07958 static int              currentArgumentContext;
07959 static int              lastCopyArgStringContext;
07960 static int              lastCopyArgContext;
07961 static QCString         *copyArgString;
07962 static QCString         fullArgString;
07963 
07964 static ArgumentList     *currentArgumentList;
07965 static char             lastCopyArgChar;
07966 
07967 static QCString         *pCopyQuotedString;
07968 static QCString         *pCopyRoundString;
07969 static QCString         *pCopyCurlyString;
07970 
07971 static QGString         *pCopyCurlyGString;
07972 static QGString         *pCopyRoundGString;
07973 static QGString         *pCopyQuotedGString;
07974 static QGString         *pSkipVerbString;
07975 static QStack<Grouping> autoGroupStack;
07976 
07977 static bool             insideFormula;
07978 static bool             insideTryBlock=FALSE;
07979 static bool             insideCode;
07980 static bool             needsSemi;
07981 
07982 static int              depthIf;
07983 static int              initBracketCount;
07984 static QCString         memberGroupRelates;
07985 static QCString         memberGroupInside;
07986 static QCString         xrefItemKey;
07987 static QCString         xrefItemTitle;
07988 static QCString         xrefListTitle;
07989 
07990 static QCString         g_skipBlockName;
07991 static QCString         oldStyleArgType;
07992 static QCString         docBackup;
07993 static QCString         briefBackup;
07994 static bool             g_inputFromFile;
07995 
07996 static int              docBlockContext;
07997 static QCString         docBlock;
07998 static QCString         docBlockName;
07999 static bool             docBlockInBody;
08000 static bool             docBlockAutoBrief;
08001 static char             docBlockTerm;
08002 
08003 static QCString         idlAttr;
08004 static QCString         idlProp;
08005 
08006 static bool             g_lexInit = FALSE;
08007 
08008 
08009 //-----------------------------------------------------------------------------
08010 
08011 // forward declarations
08012 //static void handleGroupStartCommand(const char *header);
08013 //static void handleGroupEndCommand();
08014 
08015 //-----------------------------------------------------------------------------
08016 
08017 static void initParser()
08018 {
08019   sectionLabel.resize(0);
08020   sectionTitle.resize(0);
08021   baseName.resize(0);
08022   formulaText.resize(0);
08023   protection = Public;
08024   baseProt = Public;
08025   sharpCount = 0;
08026   roundCount = 0;
08027   curlyCount = 0;
08028   mtype = Method;
08029   gstat = FALSE;
08030   virt = Normal;
08031   baseVirt = Normal;
08032   isTypedef = FALSE;
08033   autoGroupStack.clear();
08034   insideTryBlock = FALSE;
08035   autoGroupStack.setAutoDelete(TRUE);
08036   insideFormula = FALSE;
08037   insideCode=FALSE;
08038   insideCli=Config_getBool("CPP_CLI_SUPPORT");
08039   previous = 0;
08040 }
08041 
08042 static void initEntry()
08043 {
08044   if (insideJava) 
08045   {
08046     protection = (current_root->spec & Entry::Interface) ?  Public : Package;
08047   }
08048   current->protection = protection ;
08049   current->mtype      = mtype;
08050   current->virt       = virt;
08051   current->stat       = gstat;
08052   current->objc       = insideObjC;
08053   //if (!autoGroupStack.isEmpty())
08054   //{
08055   //  //printf("Appending group %s\n",autoGroupStack.top()->groupname.data());
08056   //  current->groups->append(new Grouping(*autoGroupStack.top()));
08057   //}
08058   initGroupInfo(current);
08059   isTypedef=FALSE;
08060 }
08061 
08062 
08063 //-----------------------------------------------------------------------------
08064 
08066 //static void setCurrentGroup( QCString *newgroup, Grouping::GroupPri_t pri )
08067 //{
08068 //   /* remove auto group name from current entry and discard it */
08069 //   Grouping *g = current->groups->first();
08070 //   int i=0; 
08071 //   while (g)
08072 //   {
08073 //     if (g->pri <= Grouping::GROUPING_AUTO_DEF)
08074 //     {
08075 //       current->groups->remove(i);
08076 //       i--;
08077 //     }
08078 //     g=current->groups->next();
08079 //     i++;
08080 //   }
08081 //
08082 //   /* use new group name instead? */
08083 //   if ( newgroup )
08084 //   {
08085 //      current->groups->append(new Grouping(*newgroup, pri));
08086 //   } 
08087 //}
08088 //
08089 //static int newMemberGroupId()
08090 //{
08091 //  static int curGroupId=0;
08092 //  return curGroupId++;
08093 //}
08094 //
08095 // forward declarations
08096 //static void startGroupInDoc();
08097 //static void endGroup();
08098 
08099 //-----------------------------------------------------------------------------
08100 
08101 static void lineCount()
08102 {
08103   for( const char* c = scanYYtext ; *c ; ++c )
08104     yyLineNr += (*c == '\n') ;
08105 }
08106 
08107 static void addType( Entry* current )
08108 {
08109     uint tl=current->type.length();
08110     if( tl>0 && !current->name.isEmpty() && current->type.at(tl-1)!='.') 
08111     {
08112       current->type += ' ' ;
08113     }
08114     current->type += current->name ;
08115     current->name.resize(0) ;
08116     tl=current->type.length();
08117     if( tl>0 && !current->args.isEmpty() && current->type.at(tl-1)!='.') 
08118     {
08119       current->type += ' ' ;
08120     }
08121     current->type += current->args ;
08122     current->args.resize(0) ;
08123     current->argList->clear();
08124 }
08125 
08126 
08127 static QCString stripQuotes(const char *s)
08128 {
08129   QCString name;
08130   if (s==0 || *s==0) return name;
08131   name=s;
08132   if (name.at(0)=='"' && name.at(name.length()-1)=='"')
08133   {
08134     name=name.mid(1,name.length()-2);
08135   }
08136   return name;
08137 }
08138 
08139 //-----------------------------------------------------------------
08140 
08141 static void startCommentBlock(bool);
08142 static void handleCommentBlock(const QCString &doc,bool brief);
08143 static void handleParametersCommentBlocks(ArgumentList *al);
08144 
08145 //-----------------------------------------------------------------
08146 
08147 static bool nameIsOperator(QCString &name)
08148 {
08149   int i=name.find("operator");
08150   if (i==-1) return FALSE;
08151   if (i==0 && !isId(name.at(8))) return TRUE; // case operator ::X
08152   if (i>0 && !isId(name.at(i-1)) && !isId(name.at(i+8))) return TRUE; // case X::operator
08153   return FALSE; // case TEXToperatorTEXT
08154 }
08155 
08156 //-----------------------------------------------------------------------------
08157 
08158 static void setContext()
08159 {
08160   QCString fileName = yyFileName;
08161   SrcLangExt langExt = getLanguageFromFileName(fileName);
08162   insideIDL  = langExt==SrcLangExt_IDL;
08163   insideJava = langExt==SrcLangExt_Java;
08164   insideCS   = langExt==SrcLangExt_CSharp; 
08165   insideD    = langExt==SrcLangExt_D;
08166   insidePHP  = langExt==SrcLangExt_PHP;
08167   insideObjC = langExt==SrcLangExt_ObjC;
08168   insideJS   = langExt==SrcLangExt_JS;
08169   if ( insidePHP )
08170   {
08171     useOverrideCommands = TRUE;
08172   }
08173   //printf("setContext(%s) insideIDL=%d insideJava=%d insideCS=%d "
08174   //       "insideD=%d insidePHP=%d insideObjC=%d\n",
08175   //       yyFileName.data(),insideIDL,insideJava,insideCS,insideD,insidePHP,insideObjC
08176   //    );
08177 }
08178 
08179 //-----------------------------------------------------------------------------
08180 
08181 static void prependScope()
08182 {
08183   if (current_root->section & Entry::SCOPE_MASK)
08184   {
08185     //printf("--- prependScope %s to %s\n",current_root->name.data(),current->name.data());
08186     current->name.prepend(current_root->name+"::");
08187     if (current_root->tArgLists)
08188     {
08189       if (current->tArgLists==0)
08190       {
08191         current->tArgLists = new QList<ArgumentList>;
08192         current->tArgLists->setAutoDelete(TRUE);
08193       }
08194       //printf("prependScope #=%d #current=%d\n",current_root->tArgLists->count(),current->tArgLists->count());
08195       QListIterator<ArgumentList> talsi(*current_root->tArgLists);
08196       ArgumentList *srcAl=0;
08197       for (talsi.toLast();(srcAl=talsi.current());--talsi)
08198       {
08199         ArgumentList *dstAl = new ArgumentList;
08200         QListIterator<Argument> tali(*srcAl);
08201         Argument *a;
08202         for (;(a=tali.current());++tali)
08203         {
08204           dstAl->append(new Argument(*a));
08205         //printf("appending argument %s %s\n",a->type.data(),a->name.data());
08206         }         
08207         current->tArgLists->insert(0,dstAl);    
08208       }
08209     }
08210   }
08211 }
08212 
08213 //-----------------------------------------------------------------------------
08214 
08216 static bool checkForKnRstyleC()
08217 {
08218   if (((QCString)yyFileName).right(2).lower()!=".c") return FALSE; // must be a C file
08219   if (!current->argList) return FALSE; // must have arguments
08220   ArgumentListIterator ali(*current->argList);
08221   Argument *a;
08222   for (ali.toFirst();(a=ali.current());++ali)
08223   {
08224     // in K&R style argument do not have a type, but doxygen expects a type
08225     // so it will think the argument has no name
08226     if (a->type.isEmpty() || !a->name.isEmpty()) return FALSE;
08227   }
08228   return TRUE;
08229 }
08230 
08231 //-----------------------------------------------------------------------------
08232 
08233 static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
08234 {
08235   int si = current->args.length();
08236   if (oldStyleArgType.isEmpty()) // new argument
08237   {
08238     static QRegExp re("([^)]*)");
08239     int bi1 = current->args.findRev(re);
08240     int bi2 = bi1!=-1 ? current->args.findRev(re,bi1-1) : -1; 
08241     char c;
08242     if (bi1!=-1 && bi2!=-1) // found something like "int (*func)(int arg)"
08243     {
08244       int s=bi2+1;
08245       oldStyleArgType = current->args.left(s);
08246       int i=s;
08247       while (i<si && ((c=current->args.at(i))=='*' || isspace((uchar)c))) i++;
08248       oldStyleArgType += current->args.mid(s,i-s);
08249       s=i;
08250       while (i<si && isId(current->args.at(i))) i++;
08251       oldStyleArgName = current->args.mid(s,i-s);
08252       oldStyleArgType+=current->args.mid(i);
08253     }
08254     else if (bi1!=-1) // redundant braces like in "int (*var)"
08255     {
08256       int s=bi1;
08257       oldStyleArgType = current->args.left(s);
08258       s++;
08259       int i=s+1;
08260       while (i<si && ((c=current->args.at(i))=='*' || isspace((uchar)c))) i++;
08261       oldStyleArgType += current->args.mid(s,i-s);
08262       s=i;
08263       while (i<si && isId(current->args.at(i))) i++;
08264       oldStyleArgName = current->args.mid(s,i-s);
08265     }
08266     else // normal "int *var"
08267     {
08268       int l=si,i=l-1,j;
08269       char c;
08270       // look for start of name in "type *name"
08271       while (i>=0 && isId(current->args.at(i))) i--;
08272       j=i+1;
08273       // look for start of *'s
08274       while (i>=0 && ((c=current->args.at(i))=='*' || isspace((uchar)c))) i--;
08275       i++;
08276       if (i!=l)
08277       {
08278         oldStyleArgType=current->args.left(i);
08279         oldStyleArgPtr=current->args.mid(i,j-i);
08280         oldStyleArgName=current->args.mid(j).stripWhiteSpace();
08281       }
08282       else
08283       {
08284         oldStyleArgName=current->args.copy().stripWhiteSpace();
08285       }
08286     }
08287   }
08288   else // continuation like *arg2 in "int *args,*arg2"
08289   {
08290     int l=si,j=0;
08291     char c;
08292     while (j<l && ((c=current->args.at(j))=='*' || isspace((uchar)c))) j++;
08293     if (j>0)
08294     {
08295       oldStyleArgPtr=current->args.left(j);
08296       oldStyleArgName=current->args.mid(j).stripWhiteSpace();
08297     }
08298     else
08299     {
08300       oldStyleArgName=current->args.copy().stripWhiteSpace();
08301     }
08302   }
08303   //fprintf(stderr,"type=%s ptr=%s name=%s\n",oldStyleArgType.data(),oldStyleArgPtr.data(),oldStyleArgName.data());
08304 }
08305 
08306 //-----------------------------------------------------------------------------
08307 
08312 static void addKnRArgInfo(const QCString &type,const QCString &name,
08313                           const QCString &brief,const QCString &docs)
08314 {
08315   if (current->argList==0) return;
08316   ArgumentListIterator ali(*current->argList);
08317   Argument *a;
08318   for (ali.toFirst();(a=ali.current());++ali)
08319   {
08320     if (a->type==name)
08321     {
08322       a->type=type.stripWhiteSpace();
08323       if (a->type.left(9)=="register ") // strip keyword
08324       {
08325         a->type=a->type.mid(9);
08326       }
08327       a->name=name.stripWhiteSpace();
08328       if (!brief.isEmpty() && !docs.isEmpty())
08329       {
08330         a->docs=brief+"\n\n"+docs;
08331       }
08332       else if (!brief.isEmpty())
08333       {
08334         a->docs=brief;
08335       }
08336       else
08337       {
08338         a->docs=docs;
08339       }
08340     }
08341   }
08342 }
08343 
08344 //-----------------------------------------------------------------------------
08345 
08346 
08347 void fixArgumentListForJavaScript(ArgumentList *al)
08348 {
08349   if (al==0) return;
08350   ArgumentListIterator ali(*al);
08351   Argument *a;
08352   for (ali.toFirst();(a=ali.current());++ali)
08353   {
08354     if (!a->type.isEmpty() && a->name.isEmpty())
08355     { // a->type is actually the (typeless) parameter name, so move it
08356       a->name=a->type;
08357       a->type.resize(0);
08358     }
08359   }
08360 }
08361 
08362 /* ----------------------------------------------------------------- */
08363 #undef  YY_INPUT
08364 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
08365 
08366 static int yyread(char *buf,int max_size)
08367 {
08368     int c=0;
08369     if (g_inputFromFile)
08370     {
08371        c = inputFile.readBlock(buf,max_size);
08372        if (c==-1) yy_fatal_error("input in flex scanner failed");
08373     }
08374     else
08375     {
08376       while( c < max_size && inputString[inputPosition] )
08377       {
08378         *buf = inputString[inputPosition++] ;
08379         //printf("%d (%c)\n",*buf,*buf);
08380         c++; buf++;
08381       }
08382     }
08383     return c;
08384 }
08385 
08386 /* start command character */
08387 /* language parsing states */
08388 
08389 
08390 
08391 
08392 
08393 
08394 
08395 
08396 
08397 
08398 
08399 
08400 
08401 
08402 
08403 
08404 
08405 
08406 
08407 
08408 
08409 
08410 
08411 
08412 
08413 
08414 
08415 
08416 
08417 
08418 
08419 
08420 
08421 
08422 
08423 
08424 
08425 
08426 
08427 
08428 
08429 
08430 
08431 
08432 
08433 
08434 
08435 
08436 
08437 
08438 
08439 
08440 
08441 
08442 
08443 
08444 
08445 
08446 
08447 
08448 
08449 
08450 
08451 
08452 
08453 
08454 
08455 
08456 
08457 
08458 
08459 
08460 
08461 
08462 
08463 
08464 
08465 
08466 
08467 
08468 
08469 
08470 
08471 
08472 
08473 
08474 
08475 
08476 
08477 
08478 
08479 
08480 
08481 
08482 
08483 
08484 
08485 
08486 
08487 
08488 
08489 
08490 
08491 
08492 
08493 
08494 
08495 
08496 
08497 
08498 
08499 
08510 #line 8511 "<stdout>"
08511 
08512 #define INITIAL 0
08513 #define Define 1
08514 #define DefineEnd 2
08515 #define CompoundName 3
08516 #define ClassVar 4
08517 #define CSConstraintName 5
08518 #define CSConstraintType 6
08519 #define ClassCategory 7
08520 #define ClassTemplSpec 8
08521 #define CliPropertyType 9
08522 #define CliOverride 10
08523 #define Bases 11
08524 #define BasesProt 12
08525 #define NextSemi 13
08526 #define BitFields 14
08527 #define FindMembers 15
08528 #define FindMembersPHP 16
08529 #define FindMemberName 17
08530 #define FindFields 18
08531 #define FindFieldArg 19
08532 #define Function 20
08533 #define FuncRound 21
08534 #define ExcpRound 22
08535 #define ExcpList 23
08536 #define FuncQual 24
08537 #define Operator 25
08538 #define Array 26
08539 #define ReadBody 27
08540 #define ReadNSBody 28
08541 #define ReadBodyIntf 29
08542 #define Using 30
08543 #define UsingDirective 31
08544 #define SkipCurly 32
08545 #define SkipCurlyCpp 33
08546 #define SkipCurlyEndDoc 34
08547 #define SkipString 35
08548 #define SkipPHPString 36
08549 #define SkipInits 37
08550 #define SkipCPP 38
08551 #define SkipCPPBlock 39
08552 #define SkipComment 40
08553 #define SkipCxxComment 41
08554 #define SkipCurlyBlock 42
08555 #define SkipRoundBlock 43
08556 #define Sharp 44
08557 #define SkipSharp 45
08558 #define SkipRound 46
08559 #define SkipSquare 47
08560 #define SkipRemainder 48
08561 #define TypedefName 49
08562 #define TryFunctionBlock 50
08563 #define TryFunctionBlockEnd 51
08564 #define Comment 52
08565 #define PackageName 53
08566 #define JavaImport 54
08567 #define CSAccessorDecl 55
08568 #define PreLineCtrl 56
08569 #define DefinePHP 57
08570 #define DefinePHPEnd 58
08571 #define OldStyleArgs 59
08572 #define SkipVerbString 60
08573 #define ObjCMethod 61
08574 #define ObjCReturnType 62
08575 #define ObjCParams 63
08576 #define ObjCParamType 64
08577 #define ObjCProtocolList 65
08578 #define ObjCPropAttr 66
08579 #define ObjCSkipStatement 67
08580 #define QtPropType 68
08581 #define QtPropName 69
08582 #define QtPropAttr 70
08583 #define QtPropRead 71
08584 #define QtPropWrite 72
08585 #define ReadInitializer 73
08586 #define GetCallType 74
08587 #define CppQuote 75
08588 #define EndCppQuote 76
08589 #define MemberSpec 77
08590 #define MemberSpecSkip 78
08591 #define EndTemplate 79
08592 #define FuncPtr 80
08593 #define FuncPtrOperator 81
08594 #define EndFuncPtr 82
08595 #define ReadFuncArgType 83
08596 #define ReadTempArgs 84
08597 #define IDLUnionCase 85
08598 #define NSAliasName 86
08599 #define NSAliasArg 87
08600 #define CopyString 88
08601 #define CopyPHPString 89
08602 #define CopyGString 90
08603 #define CopyPHPGString 91
08604 #define CopyRound 92
08605 #define CopyCurly 93
08606 #define GCopyRound 94
08607 #define GCopyCurly 95
08608 #define SkipUnionSwitch 96
08609 #define Specialization 97
08610 #define FuncPtrInit 98
08611 #define FuncFunc 99
08612 #define FuncFuncEnd 100
08613 #define FuncFuncType 101
08614 #define FuncFuncArray 102
08615 #define CopyArgString 103
08616 #define CopyArgPHPString 104
08617 #define CopyArgRound 105
08618 #define CopyArgSharp 106
08619 #define CopyArgComment 107
08620 #define CopyArgCommentLine 108
08621 #define CopyArgVerbatim 109
08622 #define IDLAttribute 110
08623 #define IDLProp 111
08624 #define IDLPropName 112
08625 #define Prototype 113
08626 #define PrototypePtr 114
08627 #define PrototypeQual 115
08628 #define PrototypeExc 116
08629 #define PrototypeSkipLine 117
08630 #define DocLine 118
08631 #define DocBlock 119
08632 #define DocCopyBlock 120
08633 
08634 #ifndef YY_NO_UNISTD_H
08635 /* Special case for "unistd.h", since it is non-ANSI. We include it way
08636  * down here because we want the user's section 1 to have been scanned first.
08637  * The user has a chance to override it with an option.
08638  */
08639 #include <unistd.h>
08640 #endif
08641 
08642 #ifndef YY_EXTRA_TYPE
08643 #define YY_EXTRA_TYPE void *
08644 #endif
08645 
08646 static int yy_init_globals (void );
08647 
08648 /* Macros after this point can all be overridden by user definitions in
08649  * section 1.
08650  */
08651 
08652 #ifndef YY_SKIP_YYWRAP
08653 #ifdef __cplusplus
08654 extern "C" int scanYYwrap (void );
08655 #else
08656 extern int scanYYwrap (void );
08657 #endif
08658 #endif
08659 
08660     static void yyunput (int c,char *buf_ptr  );
08661     
08662 #ifndef yytext_ptr
08663 static void yy_flex_strncpy (char *,yyconst char *,int );
08664 #endif
08665 
08666 #ifdef YY_NEED_STRLEN
08667 static int yy_flex_strlen (yyconst char * );
08668 #endif
08669 
08670 #ifndef YY_NO_INPUT
08671 
08672 #ifdef __cplusplus
08673 static int yyinput (void );
08674 #else
08675 static int input (void );
08676 #endif
08677 
08678 #endif
08679 
08680 /* Amount of stuff to slurp up with each read. */
08681 #ifndef YY_READ_BUF_SIZE
08682 #define YY_READ_BUF_SIZE 8192
08683 #endif
08684 
08685 /* Copy whatever the last rule matched to the standard output. */
08686 #ifndef ECHO
08687 /* This used to be an fputs(), but since the string might contain NUL's,
08688  * we now use fwrite().
08689  */
08690 #define ECHO (void) fwrite( scanYYtext, scanYYleng, 1, scanYYout )
08691 #endif
08692 
08693 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
08694  * is returned in "result".
08695  */
08696 #ifndef YY_INPUT
08697 #define YY_INPUT(buf,result,max_size) \
08698         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
08699                 { \
08700                 int c = '*'; \
08701                 size_t n; \
08702                 for ( n = 0; n < max_size && \
08703                              (c = getc( scanYYin )) != EOF && c != '\n'; ++n ) \
08704                         buf[n] = (char) c; \
08705                 if ( c == '\n' ) \
08706                         buf[n++] = (char) c; \
08707                 if ( c == EOF && ferror( scanYYin ) ) \
08708                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
08709                 result = n; \
08710                 } \
08711         else \
08712                 { \
08713                 errno=0; \
08714                 while ( (result = fread(buf, 1, max_size, scanYYin))==0 && ferror(scanYYin)) \
08715                         { \
08716                         if( errno != EINTR) \
08717                                 { \
08718                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
08719                                 break; \
08720                                 } \
08721                         errno=0; \
08722                         clearerr(scanYYin); \
08723                         } \
08724                 }\
08725 \
08726 
08727 #endif
08728 
08729 /* No semi-colon after return; correct usage is to write "yyterminate();" -
08730  * we don't want an extra ';' after the "return" because that will cause
08731  * some compilers to complain about unreachable statements.
08732  */
08733 #ifndef yyterminate
08734 #define yyterminate() return YY_NULL
08735 #endif
08736 
08737 /* Number of entries by which start-condition stack grows. */
08738 #ifndef YY_START_STACK_INCR
08739 #define YY_START_STACK_INCR 25
08740 #endif
08741 
08742 /* Report a fatal error. */
08743 #ifndef YY_FATAL_ERROR
08744 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
08745 #endif
08746 
08747 /* end tables serialization structures and prototypes */
08748 
08749 /* Default declaration of generated scanner - a define so the user can
08750  * easily add parameters.
08751  */
08752 #ifndef YY_DECL
08753 #define YY_DECL_IS_OURS 1
08754 
08755 extern int scanYYlex (void);
08756 
08757 #define YY_DECL int scanYYlex (void)
08758 #endif /* !YY_DECL */
08759 
08760 /* Code executed at the beginning of each rule, after scanYYtext and scanYYleng
08761  * have been set up.
08762  */
08763 #ifndef YY_USER_ACTION
08764 #define YY_USER_ACTION
08765 #endif
08766 
08767 /* Code executed at the end of each rule. */
08768 #ifndef YY_BREAK
08769 #define YY_BREAK break;
08770 #endif
08771 
08772 #define YY_RULE_SETUP \
08773         if ( scanYYleng > 0 ) \
08774                 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
08775                                 (scanYYtext[scanYYleng - 1] == '\n'); \
08776         YY_USER_ACTION
08777 
08780 YY_DECL
08781 {
08782         register yy_state_type yy_current_state;
08783         register char *yy_cp, *yy_bp;
08784         register int yy_act;
08785     
08786 #line 719 "scanner.l"
08787 
08788 
08789 #line 8790 "<stdout>"
08790 
08791         if ( !(yy_init) )
08792                 {
08793                 (yy_init) = 1;
08794 
08795 #ifdef YY_USER_INIT
08796                 YY_USER_INIT;
08797 #endif
08798 
08799         /* Create the reject buffer large enough to save one state per allowed character. */
08800         if ( ! (yy_state_buf) )
08801             (yy_state_buf) = (yy_state_type *)scanYYalloc(YY_STATE_BUF_SIZE  );
08802 
08803                 if ( ! (yy_start) )
08804                         (yy_start) = 1; /* first start state */
08805 
08806                 if ( ! scanYYin )
08807                         scanYYin = stdin;
08808 
08809                 if ( ! scanYYout )
08810                         scanYYout = stdout;
08811 
08812                 if ( ! YY_CURRENT_BUFFER ) {
08813                         scanYYensure_buffer_stack ();
08814                         YY_CURRENT_BUFFER_LVALUE =
08815                                 scanYY_create_buffer(scanYYin,YY_BUF_SIZE );
08816                 }
08817 
08818                 scanYY_load_buffer_state( );
08819                 }
08820 
08821         while ( 1 )             /* loops until end-of-file is reached */
08822                 {
08823                 yy_cp = (yy_c_buf_p);
08824 
08825                 /* Support of scanYYtext. */
08826                 *yy_cp = (yy_hold_char);
08827 
08828                 /* yy_bp points to the position in yy_ch_buf of the start of
08829                  * the current run.
08830                  */
08831                 yy_bp = yy_cp;
08832 
08833                 yy_current_state = (yy_start);
08834                 yy_current_state += YY_AT_BOL();
08835 
08836                 (yy_state_ptr) = (yy_state_buf);
08837                 *(yy_state_ptr)++ = yy_current_state;
08838 
08839 yy_match:
08840                 do
08841                         {
08842                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
08843                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
08844                                 {
08845                                 yy_current_state = (int) yy_def[yy_current_state];
08846                                 if ( yy_current_state >= 3550 )
08847                                         yy_c = yy_meta[(unsigned int) yy_c];
08848                                 }
08849                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
08850                         *(yy_state_ptr)++ = yy_current_state;
08851                         ++yy_cp;
08852                         }
08853                 while ( yy_base[yy_current_state] != 25449 );
08854 
08855 yy_find_action:
08856                 yy_current_state = *--(yy_state_ptr);
08857                 (yy_lp) = yy_accept[yy_current_state];
08858 find_rule: /* we branch to this label when backing up */
08859                 for ( ; ; ) /* until we find what rule we matched */
08860                         {
08861                         if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
08862                                 {
08863                                 yy_act = yy_acclist[(yy_lp)];
08864                                 if ( yy_act & YY_TRAILING_HEAD_MASK ||
08865                                      yy_looking_for_trail_begin )
08866                                         {
08867                                         if ( yy_act == yy_looking_for_trail_begin )
08868                                                 {
08869                                                 yy_looking_for_trail_begin = 0;
08870                                                 yy_act &= ~YY_TRAILING_HEAD_MASK;
08871                                                 break;
08872                                                 }
08873                                         }
08874                                 else if ( yy_act & YY_TRAILING_MASK )
08875                                         {
08876                                         yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
08877                                         yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
08878                                         (yy_full_match) = yy_cp;
08879                                         yy_full_state = (yy_state_ptr);
08880                                         yy_full_lp = (yy_lp);
08881                                         }
08882                                 else
08883                                         {
08884                                         (yy_full_match) = yy_cp;
08885                                         yy_full_state = (yy_state_ptr);
08886                                         yy_full_lp = (yy_lp);
08887                                         break;
08888                                         }
08889                                 ++(yy_lp);
08890                                 goto find_rule;
08891                                 }
08892                         --yy_cp;
08893                         yy_current_state = *--(yy_state_ptr);
08894                         (yy_lp) = yy_accept[yy_current_state];
08895                         }
08896 
08897                 YY_DO_BEFORE_ACTION;
08898 
08899 do_action:      /* This label is used only to access EOF actions. */
08900 
08901                 switch ( yy_act )
08902         { /* beginning of action switch */
08903 case 1:
08904 YY_RULE_SETUP
08905 #line 721 "scanner.l"
08906 {
08907                                           curlyCount=0;
08908                                           needsSemi = TRUE;
08909                                           BEGIN(SkipCurlyBlock); 
08910                                         }
08911         YY_BREAK
08912 case 2:
08913 YY_RULE_SETUP
08914 #line 726 "scanner.l"
08915 {
08916                                           roundCount=0;
08917                                           BEGIN(SkipRoundBlock);
08918                                         }
08919         YY_BREAK
08920 case 3:
08921 YY_RULE_SETUP
08922 #line 730 "scanner.l"
08923 {
08924                                           ++roundCount;
08925                                         }
08926         YY_BREAK
08927 case 4:
08928 YY_RULE_SETUP
08929 #line 733 "scanner.l"
08930 {
08931                                           if (roundCount )
08932                                             --roundCount ;
08933                                           else
08934                                             BEGIN( NextSemi ) ;
08935                                         }
08936         YY_BREAK
08937 case 5:
08938 YY_RULE_SETUP
08939 #line 739 "scanner.l"
08940 {
08941                                           ++curlyCount ; 
08942                                         }
08943         YY_BREAK
08944 case 6:
08945 YY_RULE_SETUP
08946 #line 742 "scanner.l"
08947 { 
08948                                           if( curlyCount )
08949                                           {
08950                                             --curlyCount ;
08951                                           }
08952                                           else if (needsSemi)
08953                                           {
08954                                             BEGIN( NextSemi );
08955                                           }
08956                                           else
08957                                           {
08958                                             BEGIN( FindMembers );
08959                                           }
08960                                         }
08961         YY_BREAK
08962 case 7:
08963 YY_RULE_SETUP
08964 #line 756 "scanner.l"
08965 {
08966                                           if (insidePHP)
08967                                           {
08968                                             lastStringContext=NextSemi;
08969                                             BEGIN(SkipPHPString);
08970                                           }
08971                                         }
08972         YY_BREAK
08973 case 8:
08974 YY_RULE_SETUP
08975 #line 763 "scanner.l"
08976 { if (insidePHP) REJECT; }
08977         YY_BREAK
08978 case 9:
08979 YY_RULE_SETUP
08980 #line 764 "scanner.l"
08981 {
08982                                           lastStringContext=NextSemi;
08983                                           BEGIN(SkipString);
08984                                         }
08985         YY_BREAK
08986 case 10:
08987 YY_RULE_SETUP
08988 #line 768 "scanner.l"
08989 { 
08990                                           unput(*scanYYtext);
08991                                           BEGIN( FindMembers ); 
08992                                         }
08993         YY_BREAK
08994 case 11:
08995 YY_RULE_SETUP
08996 #line 772 "scanner.l"
08997 {
08998                                           unput(*scanYYtext);
08999                                           BEGIN( FindMembers );
09000                                         }
09001         YY_BREAK
09002 case 12:
09003 YY_RULE_SETUP
09004 #line 776 "scanner.l"
09005 { // PHP code with unsupported extension?
09006                                           insidePHP = TRUE;
09007                                         }
09008         YY_BREAK
09009 case 13:
09010 YY_RULE_SETUP
09011 #line 779 "scanner.l"
09012 { // PHP code start
09013                                            BEGIN( FindMembers );
09014                                         }
09015         YY_BREAK
09016 case 14:
09017 YY_RULE_SETUP
09018 #line 782 "scanner.l"
09019 { // Non-PHP code text, ignore
09020                                         }
09021         YY_BREAK
09022 case 15:
09023 /* rule 15 can match eol */
09024 YY_RULE_SETUP
09025 #line 784 "scanner.l"
09026 { // Non-PHP code text, ignore
09027                                           yyLineNr++;
09028                                         }
09029         YY_BREAK
09030 case 16:
09031 YY_RULE_SETUP
09032 #line 787 "scanner.l"
09033 { // Non-PHP code text, ignore
09034                                         }
09035         YY_BREAK
09036 case 17:
09037 YY_RULE_SETUP
09038 #line 789 "scanner.l"
09039 { // PHP code end
09040                                           if (insidePHP)
09041                                             BEGIN( FindMembersPHP );
09042                                           else
09043                                             REJECT;
09044                                         }
09045         YY_BREAK
09046 case 18:
09047 /* rule 18 can match eol */
09048 YY_RULE_SETUP
09049 #line 796 "scanner.l"
09050 { if (insidePHP)
09051                                             BEGIN( NextSemi );
09052                                           else
09053                                             REJECT;
09054                                         }
09055         YY_BREAK
09056 case 19:
09057 /* rule 19 can match eol */
09058 YY_RULE_SETUP
09059 #line 801 "scanner.l"
09060 { // IDL or Borland C++ builder property 
09061                                           current->mtype = mtype = Property;
09062                                           current->protection = protection = Public ;
09063                                           current->type.resize(0); 
09064                                           current->name.resize(0); 
09065                                           current->args.resize(0);
09066                                           current->argList->clear();
09067                                           lineCount() ;
09068                                         }
09069         YY_BREAK
09070 case 20:
09071 /* rule 20 can match eol */
09072 YY_RULE_SETUP
09073 #line 811 "scanner.l"
09074 { current->mtype = mtype = DCOP;
09075                                           current->protection = protection = Public ;
09076                                           current->type.resize(0); 
09077                                           current->name.resize(0); 
09078                                           current->args.resize(0);
09079                                           current->argList->clear();
09080                                           lineCount() ;
09081                                         }
09082         YY_BREAK
09083 case 21:
09084 /* rule 21 can match eol */
09085 YY_RULE_SETUP
09086 #line 820 "scanner.l"
09087 { current->mtype = mtype = Signal;
09088   
09089                                           current->protection = protection = Public ;
09090                                           current->type.resize(0); 
09091                                           current->name.resize(0); 
09092                                           current->args.resize(0);
09093                                           current->argList->clear();
09094                                           lineCount() ;
09095                                         }
09096         YY_BREAK
09097 case 22:
09098 /* rule 22 can match eol */
09099 YY_RULE_SETUP
09100 #line 830 "scanner.l"
09101 {
09102                                           current->protection = protection = Public ;
09103                                           current->mtype = mtype = Slot;
09104                                           current->type.resize(0); 
09105                                           current->name.resize(0); 
09106                                           current->args.resize(0);
09107                                           current->argList->clear();
09108                                           lineCount();
09109                                         }
09110         YY_BREAK
09111 case 23:
09112 /* rule 23 can match eol */
09113 YY_RULE_SETUP
09114 #line 840 "scanner.l"
09115 {
09116                                           current->protection = protection = Protected ;
09117                                           current->mtype = mtype = Slot;
09118                                           current->type.resize(0); 
09119                                           current->name.resize(0); 
09120                                           current->args.resize(0);
09121                                           current->argList->clear();
09122                                           lineCount();
09123                                         }
09124         YY_BREAK
09125 case 24:
09126 /* rule 24 can match eol */
09127 YY_RULE_SETUP
09128 #line 850 "scanner.l"
09129 {
09130                                           current->protection = protection = Private ;
09131                                           current->mtype = mtype = Slot;
09132                                           current->type.resize(0); 
09133                                           current->name.resize(0); 
09134                                           current->args.resize(0);
09135                                           current->argList->clear();
09136                                           lineCount();
09137                                         }
09138         YY_BREAK
09139 case 25:
09140 /* rule 25 can match eol */
09141 YY_RULE_SETUP
09142 #line 859 "scanner.l"
09143 { 
09144                                           current->protection = protection = Public ;
09145                                           current->mtype = mtype = Method;
09146                                           current->type.resize(0); 
09147                                           current->name.resize(0); 
09148                                           current->args.resize(0);
09149                                           current->argList->clear();
09150                                           lineCount() ;
09151                                         }
09152         YY_BREAK
09153 case 26:
09154 /* rule 26 can match eol */
09155 YY_RULE_SETUP
09156 #line 868 "scanner.l"
09157 {  // for now treat C++/CLI's internal as package...
09158                                           current->protection = protection = Package ;
09159                                           current->mtype = mtype = Method;
09160                                           current->type.resize(0); 
09161                                           current->name.resize(0); 
09162                                           current->args.resize(0);
09163                                           current->argList->clear();
09164                                           lineCount() ;
09165                                         }
09166         YY_BREAK
09167 case 27:
09168 /* rule 27 can match eol */
09169 YY_RULE_SETUP
09170 #line 877 "scanner.l"
09171 {  
09172                                           current->protection = protection = Protected ;
09173                                           current->mtype = mtype = Method;
09174                                           current->type.resize(0); 
09175                                           current->name.resize(0); 
09176                                           current->args.resize(0);
09177                                           current->argList->clear();
09178                                           lineCount() ;
09179                                         }
09180         YY_BREAK
09181 case 28:
09182 /* rule 28 can match eol */
09183 YY_RULE_SETUP
09184 #line 886 "scanner.l"
09185 { 
09186                                           current->protection = protection = Private ;
09187                                           current->mtype = mtype = Method;
09188                                           current->type.resize(0); 
09189                                           current->name.resize(0); 
09190                                           current->args.resize(0);
09191                                           current->argList->clear();
09192                                           lineCount() ;
09193                                         }
09194         YY_BREAK
09195 case 29:
09196 /* rule 29 can match eol */
09197 YY_RULE_SETUP
09198 #line 895 "scanner.l"
09199 { 
09200                                           if (insideCli)
09201                                           {
09202                                             // C++/CLI event
09203                                             lineCount() ;
09204                                             current->mtype = mtype = Event;
09205                                             current->bodyLine = yyLineNr;
09206                                             curlyCount=0;
09207                                             BEGIN( CliPropertyType );
09208                                           }
09209                                           else
09210                                           {
09211                                             REJECT;
09212                                           }
09213                                         }
09214         YY_BREAK
09215 case 30:
09216 /* rule 30 can match eol */
09217 YY_RULE_SETUP
09218 #line 910 "scanner.l"
09219 {
09220                                            if (insideCli)
09221                                            {
09222                                              // C++/CLI property
09223                                              lineCount() ;
09224                                              current->mtype = mtype = Property;
09225                                              current->bodyLine = yyLineNr;
09226                                              curlyCount=0;
09227                                              BEGIN( CliPropertyType );
09228                                            }
09229                                            else
09230                                            {
09231                                              REJECT;
09232                                            }
09233                                         }
09234         YY_BREAK
09235 case 31:
09236 YY_RULE_SETUP
09237 #line 925 "scanner.l"
09238 {
09239                                           addType( current );
09240                                           current->name = scanYYtext;
09241                                         }
09242         YY_BREAK
09243 case 32:
09244 YY_RULE_SETUP
09245 #line 929 "scanner.l"
09246 { // C++/CLI indexed property
09247                                           current->args = scanYYtext;
09248                                         }
09249         YY_BREAK
09250 case 33:
09251 YY_RULE_SETUP
09252 #line 932 "scanner.l"
09253 {
09254                                           curlyCount=0;
09255                                           //printf("event: '%s' '%s'\n",current->type.data(),current->name.data());
09256                                           BEGIN( CSAccessorDecl );
09257                                         }
09258         YY_BREAK
09259 case 34:
09260 YY_RULE_SETUP
09261 #line 937 "scanner.l"
09262 {
09263                                           unput(*scanYYtext);
09264                                           BEGIN( FindMembers );
09265                                         }
09266         YY_BREAK
09267 case 35:
09268 /* rule 35 can match eol */
09269 YY_RULE_SETUP
09270 #line 941 "scanner.l"
09271 {
09272                                           yyLineNr++;
09273                                         }
09274         YY_BREAK
09275 case 36:
09276 YY_RULE_SETUP
09277 #line 944 "scanner.l"
09278 {
09279                                         }
09280         YY_BREAK
09281 case 37:
09282 YY_RULE_SETUP
09283 #line 946 "scanner.l"
09284 {
09285                                           addType( current );
09286                                           current->type += scanYYtext;
09287                                         }
09288         YY_BREAK
09289 case 38:
09290 /* rule 38 can match eol */
09291 YY_RULE_SETUP
09292 #line 950 "scanner.l"
09293 { 
09294                                           if (!current->type.isEmpty())
09295                                           {
09296                                             REJECT;
09297                                           }
09298                                           else
09299                                           { 
09300                                             current->mtype = mtype = Property;
09301                                             lineCount();
09302                                           }
09303                                         }
09304         YY_BREAK
09305 case 39:
09306 /* rule 39 can match eol */
09307 YY_RULE_SETUP
09308 #line 961 "scanner.l"
09309 {
09310                                           current->protection = protection = Private ;
09311                                           current->mtype = mtype = Method;
09312                                           current->type.resize(0); 
09313                                           current->name.resize(0); 
09314                                           current->args.resize(0);
09315                                           current->argList->clear();
09316                                           lineCount() ;
09317                                         }
09318         YY_BREAK
09319 case 40:
09320 /* rule 40 can match eol */
09321 YY_RULE_SETUP
09322 #line 970 "scanner.l"
09323 {
09324                                           current->protection = protection = Protected ;
09325                                           current->mtype = mtype = Method;
09326                                           current->type.resize(0); 
09327                                           current->name.resize(0); 
09328                                           current->args.resize(0);
09329                                           current->argList->clear();
09330                                           lineCount() ;
09331                                         }
09332         YY_BREAK
09333 case 41:
09334 /* rule 41 can match eol */
09335 YY_RULE_SETUP
09336 #line 979 "scanner.l"
09337 {
09338                                           current->protection = protection = Public ;
09339                                           current->mtype = mtype = Method;
09340                                           current->type.resize(0); 
09341                                           current->name.resize(0); 
09342                                           current->args.resize(0);
09343                                           current->argList->clear();
09344                                           lineCount() ;
09345                                         }
09346         YY_BREAK
09347 case 42:
09348 /* rule 42 can match eol */
09349 YY_RULE_SETUP
09350 #line 988 "scanner.l"
09351 {
09352                                           if (!insideObjC) 
09353                                           {
09354                                             REJECT;
09355                                           }
09356                                           else
09357                                           {
09358                                             lineCount();
09359                                             current->fileName  = yyFileName;
09360                                             current->startLine = yyLineNr;
09361                                             current->bodyLine  = yyLineNr;
09362                                             current->section = Entry::FUNCTION_SEC;
09363                                             current->protection = protection = Public ;
09364                                             current->objc = TRUE;
09365                                             current->virt = Virtual;
09366                                             current->stat=scanYYtext[0]=='+';
09367                                             current->mtype = mtype = Method;
09368                                             current->type.resize(0); 
09369                                             current->name.resize(0); 
09370                                             current->args.resize(0);
09371                                             current->argList->clear();
09372                                             BEGIN( ObjCMethod );
09373                                           }
09374                                         }
09375         YY_BREAK
09376 case 43:
09377 YY_RULE_SETUP
09378 #line 1012 "scanner.l"
09379 { // start of method's return type
09380                                           BEGIN( ObjCReturnType );
09381                                         }
09382         YY_BREAK
09383 case 44:
09384 YY_RULE_SETUP
09385 #line 1015 "scanner.l"
09386 { // found method name
09387                                           if (current->type.isEmpty())
09388                                           {
09389                                             current->type = "id";
09390                                           }
09391                                           current->name = scanYYtext;
09392                                         }
09393         YY_BREAK
09394 case 45:
09395 YY_RULE_SETUP
09396 #line 1022 "scanner.l"
09397 { // start of parameter list
09398                                           current->name += ':';
09399                                           Argument *a = new Argument;
09400                                           current->argList->append(a);
09401                                           BEGIN( ObjCParams );
09402                                         }
09403         YY_BREAK
09404 case 46:
09405 /* rule 46 can match eol */
09406 YY_RULE_SETUP
09407 #line 1028 "scanner.l"
09408 { // TODO: check if nested braches are possible.
09409                                           current->type = scanYYtext;
09410                                         }
09411         YY_BREAK
09412 case 47:
09413 YY_RULE_SETUP
09414 #line 1031 "scanner.l"
09415 {
09416                                           BEGIN( ObjCMethod );
09417                                         }
09418         YY_BREAK
09419 case 48:
09420 YY_RULE_SETUP
09421 #line 1034 "scanner.l"
09422 { // Keyword of parameter
09423                                           QCString keyw = scanYYtext;
09424                                           keyw=keyw.left(keyw.length()-1); // strip :
09425                                           if (keyw.isEmpty())
09426                                           {
09427                                             current->name += " :";
09428                                           }
09429                                           else
09430                                           {
09431                                             current->name += keyw+":";
09432                                           }
09433                                           if (current->argList->getLast()->type.isEmpty())
09434                                           {
09435                                             current->argList->getLast()->type="id";
09436                                           }
09437                                           Argument *a = new Argument;
09438                                           a->attrib=(QCString)"["+keyw+"]";
09439                                           current->argList->append(a);
09440                                         }
09441         YY_BREAK
09442 case 49:
09443 /* rule 49 can match eol */
09444 YY_RULE_SETUP
09445 #line 1053 "scanner.l"
09446 { // name of parameter
09447                                           lineCount();
09448                                           current->argList->getLast()->name=QCString(scanYYtext).stripWhiteSpace();
09449                                         }
09450         YY_BREAK
09451 case 50:
09452 /* rule 50 can match eol */
09453 YY_RULE_SETUP
09454 #line 1057 "scanner.l"
09455 { // name of parameter
09456                                           lineCount();
09457                                           // do we want the comma as part of the name?
09458                                           //current->name += ",";
09459                                           Argument *a = new Argument;
09460                                           a->attrib="[,]";
09461                                           a->type="...";
09462                                           current->argList->append(a);
09463                                         }
09464         YY_BREAK
09465 /*
09466 <ObjCParams>":"                         { 
09467                                           current->name += ':';
09468                                         }
09469    */
09470 case 51:
09471 YY_RULE_SETUP
09472 #line 1071 "scanner.l"
09473 {
09474                                           BEGIN( ObjCParamType );
09475                                         }
09476         YY_BREAK
09477 case 52:
09478 /* rule 52 can match eol */
09479 YY_RULE_SETUP
09480 #line 1074 "scanner.l"
09481 {
09482                                           current->argList->getLast()->type=QCString(scanYYtext).stripWhiteSpace();
09483                                         }
09484         YY_BREAK
09485 case 53:
09486 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
09487 (yy_c_buf_p) = yy_cp = yy_bp + 1;
09488 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
09489 YY_RULE_SETUP
09490 #line 1077 "scanner.l"
09491 {
09492                                           BEGIN( ObjCParams );
09493                                         }
09494         YY_BREAK
09495 case 54:
09496 YY_RULE_SETUP
09497 #line 1080 "scanner.l"
09498 { // end of method declaration
09499                                           if (current->argList->getLast() && current->argList->getLast()->type.isEmpty())
09500                                           {
09501                                             current->argList->getLast()->type="id";
09502                                           }
09503                                           current->args = argListToString(current->argList);
09504                                           //printf("argList=%s\n",current->args.data());
09505                                           unput(';');
09506                                           BEGIN( Function );
09507                                         }
09508         YY_BREAK
09509 case 55:
09510 /* rule 55 can match eol */
09511 YY_RULE_SETUP
09512 #line 1090 "scanner.l"
09513 { // start of a method body
09514                                           lineCount();
09515                                           //printf("Type=%s Name=%s args=%s\n",
09516                                           //    current->type.data(),current->name.data(),argListToString(current->argList).data()
09517                                           //    );
09518                                           if (current->argList->getLast() && current->argList->getLast()->type.isEmpty())
09519                                           {
09520                                             current->argList->getLast()->type="id";
09521                                           }
09522                                           current->args = argListToString(current->argList);
09523                                           unput('{');
09524                                           BEGIN( Function );
09525                                         }
09526         YY_BREAK
09527 case 56:
09528 /* rule 56 can match eol */
09529 YY_RULE_SETUP
09530 #line 1103 "scanner.l"
09531 {
09532                                           lineCount();
09533                                         }
09534         YY_BREAK
09535 case 57:
09536 /* rule 57 can match eol */
09537 YY_RULE_SETUP
09538 #line 1106 "scanner.l"
09539 {
09540                                           if (insideJava) // Java annotation
09541                                           {
09542                                             lineCount();
09543                                             lastSkipRoundContext = YY_START;
09544                                             roundCount=1;
09545                                             BEGIN( SkipRound );
09546                                           }
09547                                           else if (strncmp(scanYYtext,"@property",9)==0) // ObjC 2.0 property
09548                                           {
09549                                             current->mtype = mtype = Property;
09550                                             current->spec|=Entry::Readable | Entry::Writable | Entry::Assign;
09551                                             current->protection = Public ;
09552                                             unput('(');
09553                                             BEGIN( ObjCPropAttr );
09554                                           }
09555                                           else
09556                                           {
09557                                             REJECT;
09558                                           }
09559                                         }
09560         YY_BREAK
09561 case 58:
09562 YY_RULE_SETUP
09563 #line 1127 "scanner.l"
09564 { 
09565                                           current->read = scanYYtext+7;
09566                                         }
09567         YY_BREAK
09568 case 59:
09569 YY_RULE_SETUP
09570 #line 1130 "scanner.l"
09571 { 
09572                                           current->write = scanYYtext+7;
09573                                         }
09574         YY_BREAK
09575 case 60:
09576 YY_RULE_SETUP
09577 #line 1133 "scanner.l"
09578 {
09579                                           current->spec&=~Entry::Writable;
09580                                         }
09581         YY_BREAK
09582 case 61:
09583 YY_RULE_SETUP
09584 #line 1136 "scanner.l"
09585 { // default
09586                                         }
09587         YY_BREAK
09588 case 62:
09589 YY_RULE_SETUP
09590 #line 1138 "scanner.l"
09591 { // default
09592                                         }
09593         YY_BREAK
09594 case 63:
09595 YY_RULE_SETUP
09596 #line 1140 "scanner.l"
09597 {
09598                                           current->spec&=~Entry::Assign;
09599                                           current->spec|=Entry::Retain;
09600                                         }
09601         YY_BREAK
09602 case 64:
09603 YY_RULE_SETUP
09604 #line 1144 "scanner.l"
09605 {
09606                                           current->spec&=~Entry::Assign;
09607                                           current->spec|=Entry::Copy;
09608                                         }
09609         YY_BREAK
09610 case 65:
09611 YY_RULE_SETUP
09612 #line 1148 "scanner.l"
09613 {
09614                                           current->spec|=Entry::NonAtomic;
09615                                         }
09616         YY_BREAK
09617 case 66:
09618 YY_RULE_SETUP
09619 #line 1151 "scanner.l"
09620 {
09621                                           BEGIN(FindMembers);
09622                                         }
09623         YY_BREAK
09624 case 67:
09625 YY_RULE_SETUP
09626 #line 1154 "scanner.l"
09627 {
09628                                           if (insideJava) // Java annotation
09629                                           {
09630                                             // skip annotation
09631                                           }
09632                                           else if (strcmp(scanYYtext,"@property")==0) // ObjC 2.0 property
09633                                           {
09634                                             current->mtype = mtype = Property;
09635                                             current->spec|=Entry::Writable | Entry::Readable | Entry::Assign;
09636                                             current->protection = Public ;
09637                                           }
09638                                           else if (strcmp(scanYYtext,"@synthesize")==0)
09639                                           {
09640                                             BEGIN( ObjCSkipStatement );
09641                                           }
09642                                           else if (strcmp(scanYYtext,"@dynamic")==0)
09643                                           {
09644                                             BEGIN( ObjCSkipStatement );
09645                                           }
09646                                           else
09647                                           {
09648                                             REJECT;
09649                                           }
09650                                         }
09651         YY_BREAK
09652 case 68:
09653 YY_RULE_SETUP
09654 #line 1178 "scanner.l"
09655 {
09656                                           BEGIN(FindMembers);
09657                                         }
09658         YY_BREAK
09659 case 69:
09660 YY_RULE_SETUP
09661 #line 1181 "scanner.l"
09662 {
09663                                           isTypedef=FALSE;
09664                                           current->name = scanYYtext;
09665                                           current->name = substitute(current->name,".","::");
09666                                           current->section = Entry::NAMESPACE_SEC;
09667                                           current->type = "namespace" ;
09668                                           current->fileName  = yyFileName;
09669                                           current->startLine = yyLineNr;
09670                                           current->bodyLine  = yyLineNr;
09671                                           lineCount();
09672                                           curlyCount=0;
09673                                           current_root->addSubEntry(current);
09674                                           current_root = current ;
09675                                           current             = new Entry ;
09676                                           initEntry();
09677                                           BEGIN( FindMembers ) ;
09678                                         }
09679         YY_BREAK
09680 case 70:
09681 YY_RULE_SETUP
09682 #line 1198 "scanner.l"
09683 {
09684                                           BEGIN(FindMembers);
09685                                         }
09686         YY_BREAK
09687 case 71:
09688 /* rule 71 can match eol */
09689 YY_RULE_SETUP
09690 #line 1201 "scanner.l"
09691 {
09692                                           current->type += " initonly ";
09693                                           if (insideCli) current->spec |= Entry::Initonly;
09694                                           lineCount();
09695                                         }
09696         YY_BREAK
09697 case 72:
09698 /* rule 72 can match eol */
09699 YY_RULE_SETUP
09700 #line 1206 "scanner.l"
09701 { current->type += " static ";
09702                                           current->stat = TRUE;
09703                                           lineCount();
09704                                         }
09705         YY_BREAK
09706 case 73:
09707 /* rule 73 can match eol */
09708 YY_RULE_SETUP
09709 #line 1210 "scanner.l"
09710 {
09711                                           current->stat = FALSE;
09712                                           current->explicitExternal = TRUE;
09713                                           lineCount();
09714                                         }
09715         YY_BREAK
09716 case 74:
09717 /* rule 74 can match eol */
09718 YY_RULE_SETUP
09719 #line 1215 "scanner.l"
09720 { current->type += " virtual ";
09721                                           current->virt = Virtual;
09722                                           lineCount();
09723                                         }
09724         YY_BREAK
09725 case 75:
09726 /* rule 75 can match eol */
09727 YY_RULE_SETUP
09728 #line 1219 "scanner.l"
09729 { 
09730                                           if (!insidePHP) 
09731                                           {
09732                                             current->type += " abstract ";
09733                                             current->virt = Pure;
09734                                           }
09735                                           else
09736                                           {
09737                                             current->spec|=Entry::Abstract;
09738                                           }
09739                                           lineCount();
09740                                         }
09741         YY_BREAK
09742 case 76:
09743 /* rule 76 can match eol */
09744 YY_RULE_SETUP
09745 #line 1231 "scanner.l"
09746 { current->spec|=Entry::Inline;
09747                                           lineCount(); 
09748                                         }
09749         YY_BREAK
09750 case 77:
09751 /* rule 77 can match eol */
09752 YY_RULE_SETUP
09753 #line 1234 "scanner.l"
09754 { current->spec|=Entry::Mutable;
09755                                           lineCount(); 
09756                                         }
09757         YY_BREAK
09758 case 78:
09759 /* rule 78 can match eol */
09760 YY_RULE_SETUP
09761 #line 1237 "scanner.l"
09762 { current->spec|=Entry::Explicit;
09763                                           lineCount(); 
09764                                         }
09765         YY_BREAK
09766 case 79:
09767 /* rule 79 can match eol */
09768 YY_RULE_SETUP
09769 #line 1240 "scanner.l"
09770 { current->spec|=Entry::Required;
09771                                           lineCount(); 
09772                                         }
09773         YY_BREAK
09774 case 80:
09775 /* rule 80 can match eol */
09776 YY_RULE_SETUP
09777 #line 1243 "scanner.l"
09778 { current->spec|=Entry::Optional;
09779                                           lineCount(); 
09780                                         }
09781         YY_BREAK
09782 /*
09783 <FindMembers>{B}*"import"{BN}+          { // IDL import keyword
09784                                           BEGIN( NextSemi );
09785                                         }
09786   */
09787 case 81:
09788 /* rule 81 can match eol */
09789 YY_RULE_SETUP
09790 #line 1251 "scanner.l"
09791 { lineCount(); }
09792         YY_BREAK
09793 case 82:
09794 /* rule 82 can match eol */
09795 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
09796 (yy_c_buf_p) = yy_cp -= 1;
09797 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
09798 YY_RULE_SETUP
09799 #line 1252 "scanner.l"
09800 { 
09801                                           isTypedef=FALSE;
09802                                           current->section = Entry::NAMESPACE_SEC;
09803                                           current->type = "namespace" ;
09804                                           current->fileName  = yyFileName;
09805                                           current->startLine = yyLineNr;
09806                                           current->bodyLine  = yyLineNr;
09807                                           lineCount();
09808                                           BEGIN( CompoundName ); 
09809                                         }
09810         YY_BREAK
09811 case 83:
09812 /* rule 83 can match eol */
09813 YY_RULE_SETUP
09814 #line 1262 "scanner.l"
09815 { 
09816                                           lineCount();
09817                                           if (insideIDL)
09818                                           {
09819                                             isTypedef=FALSE;
09820                                             current->section = Entry::NAMESPACE_SEC;
09821                                             current->type = "module" ;
09822                                             current->fileName  = yyFileName;
09823                                             current->startLine = yyLineNr;
09824                                             current->bodyLine  = yyLineNr;
09825                                             BEGIN( CompoundName ); 
09826                                           }
09827                                           else if (insideD)
09828                                           {
09829                                             lineCount();
09830                                             BEGIN(PackageName);
09831                                           }
09832                                           else
09833                                           {
09834                                             addType( current ) ;
09835                                             current->name = QCString(scanYYtext).stripWhiteSpace();
09836                                           }
09837                                         }
09838         YY_BREAK
09839 case 84:
09840 /* rule 84 can match eol */
09841 YY_RULE_SETUP
09842 #line 1285 "scanner.l"
09843 { 
09844                                           lineCount();
09845                                           if (insideIDL)
09846                                           {
09847                                             isTypedef=FALSE;
09848                                             current->section = Entry::NAMESPACE_SEC;
09849                                             current->type = "library" ;
09850                                             current->fileName  = yyFileName;
09851                                             current->startLine = yyLineNr;
09852                                             current->bodyLine  = yyLineNr;
09853                                             BEGIN( CompoundName ); 
09854                                           }
09855                                           else
09856                                           {
09857                                             addType( current ) ;
09858                                             current->name = QCString(scanYYtext).stripWhiteSpace();
09859                                           }
09860                                         }
09861         YY_BREAK
09862 case 85:
09863 /* rule 85 can match eol */
09864 YY_RULE_SETUP
09865 #line 1303 "scanner.l"
09866 { // M$/Corba IDL/Java interface
09867                                           lineCount();
09868                                           if (insideIDL || insideJava || insideCS || insideD || insidePHP)
09869                                           {
09870                                             isTypedef=FALSE;
09871                                             current->section = Entry::CLASS_SEC;
09872                                             current->spec = Entry::Interface;
09873                                             addType( current ) ;
09874                                             current->type += " interface" ;
09875                                             current->fileName  = yyFileName;
09876                                             current->startLine = yyLineNr;
09877                                             current->bodyLine  = yyLineNr;
09878                                             BEGIN( CompoundName );
09879                                           }
09880                                           else
09881                                           {
09882                                             addType( current ) ;
09883                                             current->name = QCString(scanYYtext).stripWhiteSpace();
09884                                           }
09885                                         }
09886         YY_BREAK
09887 case 86:
09888 /* rule 86 can match eol */
09889 YY_RULE_SETUP
09890 #line 1323 "scanner.l"
09891 { // Objective-C class implementation
09892                                           lineCount();
09893                                           isTypedef=FALSE;
09894                                           current->section = Entry::OBJCIMPL_SEC;
09895                                           current->objc = insideObjC = TRUE;
09896                                           current->protection = protection = Public ;
09897                                           addType( current ) ;
09898                                           current->type += " implementation" ;
09899                                           current->fileName  = yyFileName;
09900                                           current->startLine = yyLineNr;
09901                                           current->bodyLine  = yyLineNr;
09902                                           BEGIN( CompoundName );
09903                                         }
09904         YY_BREAK
09905 case 87:
09906 /* rule 87 can match eol */
09907 YY_RULE_SETUP
09908 #line 1336 "scanner.l"
09909 { // Objective-C class interface, or Java attribute
09910                                           lineCount();
09911                                           isTypedef=FALSE;
09912                                           current->section = Entry::CLASS_SEC;
09913                                           current->spec = Entry::Interface;
09914                                           current->objc = insideObjC = !insideJava;
09915                                           current->protection = protection = Public ;
09916                                           addType( current ) ;
09917                                           current->type += " interface" ;
09918                                           current->fileName  = yyFileName;
09919                                           current->startLine = yyLineNr;
09920                                           current->bodyLine  = yyLineNr;
09921                                           BEGIN( CompoundName );
09922                                         }
09923         YY_BREAK
09924 case 88:
09925 /* rule 88 can match eol */
09926 YY_RULE_SETUP
09927 #line 1350 "scanner.l"
09928 { // Objective-C protocol definition
09929                                           lineCount();
09930                                           isTypedef=FALSE;
09931                                           current->section = Entry::CLASS_SEC;
09932                                           current->spec = Entry::Protocol;
09933                                           current->objc = insideObjC = TRUE;
09934                                           current->protection = protection = Public ;
09935                                           addType( current ) ;
09936                                           current->type += " protocol" ;
09937                                           current->fileName  = yyFileName;
09938                                           current->startLine = yyLineNr;
09939                                           current->bodyLine  = yyLineNr;
09940                                           BEGIN( CompoundName );
09941                                         }
09942         YY_BREAK
09943 case 89:
09944 /* rule 89 can match eol */
09945 YY_RULE_SETUP
09946 #line 1364 "scanner.l"
09947 { // Corba IDL exception
09948                                           isTypedef=FALSE;
09949                                           current->section = Entry::CLASS_SEC;
09950                                           current->spec = Entry::Exception;
09951                                           addType( current ) ;
09952                                           current->type += " exception" ;
09953                                           current->fileName  = yyFileName;
09954                                           current->startLine = yyLineNr;
09955                                           current->bodyLine  = yyLineNr;
09956                                           lineCount();
09957                                           BEGIN( CompoundName );
09958                                         }
09959         YY_BREAK
09960 case 90:
09961 #line 1377 "scanner.l"
09962 case 91:
09963 /* rule 91 can match eol */
09964 #line 1378 "scanner.l"
09965 case 92:
09966 /* rule 92 can match eol */
09967 YY_RULE_SETUP
09968 #line 1378 "scanner.l"
09969 { 
09970                                           isTypedef=((QCString)scanYYtext).find("typedef")!=-1;
09971                                           current->section = Entry::CLASS_SEC;
09972                                           addType( current ) ;
09973                                           current->type += " class" ;
09974                                           current->fileName  = yyFileName;
09975                                           current->startLine = yyLineNr;
09976                                           current->bodyLine  = yyLineNr;
09977                                           lineCount() ;
09978                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
09979                                           if (insidePHP && current->spec&Entry::Abstract)
09980                                           {
09981                                             // convert Abstract to AbstractClass
09982                                             current->spec=(current->spec&~Entry::Abstract)|Entry::AbstractClass;
09983                                           }
09984                                           BEGIN( CompoundName ) ;
09985                                         }
09986         YY_BREAK
09987 case 93:
09988 #line 1396 "scanner.l"
09989 case 94:
09990 /* rule 94 can match eol */
09991 YY_RULE_SETUP
09992 #line 1396 "scanner.l"
09993 {
09994                                           isTypedef=FALSE;
09995                                           current->section = Entry::CLASS_SEC;
09996                                           current->spec = Entry::Value;
09997                                           addType( current ) ;
09998                                           current->type += " value class" ;
09999                                           current->fileName  = yyFileName;
10000                                           current->startLine = yyLineNr;
10001                                           current->bodyLine  = yyLineNr;
10002                                           lineCount() ;
10003                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10004                                           BEGIN( CompoundName ) ;
10005                                         }
10006         YY_BREAK
10007 case 95:
10008 #line 1410 "scanner.l"
10009 case 96:
10010 /* rule 96 can match eol */
10011 YY_RULE_SETUP
10012 #line 1410 "scanner.l"
10013 {
10014                                           isTypedef=FALSE;
10015                                           current->section = Entry::CLASS_SEC;
10016                                           current->spec = Entry::Ref;
10017                                           addType( current ) ;
10018                                           current->type += " ref class" ;
10019                                           current->fileName  = yyFileName;
10020                                           current->startLine = yyLineNr;
10021                                           current->bodyLine  = yyLineNr;
10022                                           lineCount() ;
10023                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10024                                           BEGIN( CompoundName ) ;
10025                                         }
10026         YY_BREAK
10027 case 97:
10028 #line 1424 "scanner.l"
10029 case 98:
10030 /* rule 98 can match eol */
10031 YY_RULE_SETUP
10032 #line 1424 "scanner.l"
10033 {
10034                                           isTypedef=FALSE;
10035                                           current->section = Entry::CLASS_SEC;
10036                                           current->spec = Entry::Interface;
10037                                           addType( current ) ;
10038                                           current->type += " interface class" ;
10039                                           current->fileName  = yyFileName;
10040                                           current->startLine = yyLineNr;
10041                                           current->bodyLine  = yyLineNr;
10042                                           lineCount() ;
10043                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10044                                           BEGIN( CompoundName ) ;
10045                                         }
10046         YY_BREAK
10047 case 99:
10048 /* rule 99 can match eol */
10049 YY_RULE_SETUP
10050 #line 1437 "scanner.l"
10051 {
10052                                           if (insideIDL)
10053                                           {
10054                                             isTypedef=FALSE;
10055                                             current->section = Entry::CLASS_SEC;
10056                                             addType( current ) ;
10057                                             current->type += " coclass" ;
10058                                             current->fileName  = yyFileName;
10059                                             current->startLine = yyLineNr;
10060                                             current->bodyLine  = yyLineNr;
10061                                             lineCount() ;
10062                                             BEGIN( CompoundName ) ;
10063                                           }
10064                                           else
10065                                           {
10066                                             addType(current);
10067                                             current->name = scanYYtext;
10068                                             current->name = current->name.stripWhiteSpace();
10069                                             lineCount();
10070                                           }
10071                                         }
10072         YY_BREAK
10073 case 100:
10074 /* rule 100 can match eol */
10075 #line 1459 "scanner.l"
10076 case 101:
10077 /* rule 101 can match eol */
10078 YY_RULE_SETUP
10079 #line 1459 "scanner.l"
10080 { 
10081                                           isTypedef=((QCString)scanYYtext).find("typedef")!=-1;
10082                                           current->section = Entry::CLASS_SEC ;
10083                                           current->spec    = Entry::Struct;
10084                                           addType( current ) ;
10085                                           current->type += " struct" ;
10086                                           current->fileName  = yyFileName;
10087                                           current->startLine = yyLineNr;
10088                                           current->bodyLine  = yyLineNr;
10089                                           lineCount() ;
10090                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10091                                           BEGIN( CompoundName ) ;
10092                                         }
10093         YY_BREAK
10094 case 102:
10095 #line 1473 "scanner.l"
10096 case 103:
10097 /* rule 103 can match eol */
10098 YY_RULE_SETUP
10099 #line 1473 "scanner.l"
10100 {
10101                                           isTypedef=FALSE;
10102                                           current->section = Entry::CLASS_SEC;
10103                                           current->spec    = Entry::Struct | Entry::Value;
10104                                           addType( current ) ;
10105                                           current->type += " value struct" ;
10106                                           current->fileName  = yyFileName;
10107                                           current->startLine = yyLineNr;
10108                                           current->bodyLine  = yyLineNr;
10109                                           lineCount() ;
10110                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10111                                           BEGIN( CompoundName ) ;
10112                                         }
10113         YY_BREAK
10114 case 104:
10115 #line 1487 "scanner.l"
10116 case 105:
10117 /* rule 105 can match eol */
10118 YY_RULE_SETUP
10119 #line 1487 "scanner.l"
10120 {
10121                                           isTypedef=FALSE;
10122                                           current->section = Entry::CLASS_SEC;
10123                                           current->spec    = Entry::Struct | Entry::Ref;
10124                                           addType( current ) ;
10125                                           current->type += " ref struct" ;
10126                                           current->fileName  = yyFileName;
10127                                           current->startLine = yyLineNr;
10128                                           current->bodyLine  = yyLineNr;
10129                                           lineCount() ;
10130                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10131                                           BEGIN( CompoundName ) ;
10132                                         }
10133         YY_BREAK
10134 case 106:
10135 #line 1501 "scanner.l"
10136 case 107:
10137 /* rule 107 can match eol */
10138 YY_RULE_SETUP
10139 #line 1501 "scanner.l"
10140 {
10141                                           isTypedef=FALSE;
10142                                           current->section = Entry::CLASS_SEC;
10143                                           current->spec    = Entry::Struct | Entry::Interface;
10144                                           addType( current ) ;
10145                                           current->type += " interface struct";
10146                                           current->fileName  = yyFileName;
10147                                           current->startLine = yyLineNr;
10148                                           current->bodyLine  = yyLineNr;
10149                                           lineCount() ;
10150                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10151                                           BEGIN( CompoundName ) ;
10152                                         }
10153         YY_BREAK
10154 case 108:
10155 /* rule 108 can match eol */
10156 #line 1515 "scanner.l"
10157 case 109:
10158 /* rule 109 can match eol */
10159 YY_RULE_SETUP
10160 #line 1515 "scanner.l"
10161 { 
10162                                           isTypedef=((QCString)scanYYtext).find("typedef")!=-1;
10163                                           current->section = Entry::CLASS_SEC;
10164                                           current->spec    = Entry::Union;
10165                                           addType( current ) ;
10166                                           current->type += " union" ;
10167                                           current->fileName  = yyFileName;
10168                                           current->startLine = yyLineNr;
10169                                           current->bodyLine  = yyLineNr;
10170                                           lineCount() ;
10171                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10172                                           BEGIN( CompoundName ) ;
10173                                         }
10174         YY_BREAK
10175 case 110:
10176 /* rule 110 can match eol */
10177 #line 1529 "scanner.l"
10178 case 111:
10179 /* rule 111 can match eol */
10180 YY_RULE_SETUP
10181 #line 1529 "scanner.l"
10182 { // for IDL: typedef [something] enum
10183                                           isTypedef=((QCString)scanYYtext).find("typedef")!=-1;
10184                                           current->section = Entry::ENUM_SEC ;
10185                                           addType( current ) ;
10186                                           current->type += " enum" ;
10187                                           current->fileName  = yyFileName;
10188                                           current->startLine = yyLineNr;
10189                                           current->bodyLine  = yyLineNr;
10190                                           lineCount() ;
10191                                           if (scanYYtext[scanYYleng-1]=='{') unput('{');
10192                                           BEGIN( CompoundName ) ;
10193                                         }
10194         YY_BREAK
10195 case 112:
10196 /* rule 112 can match eol */
10197 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
10198 (yy_c_buf_p) = yy_cp -= 1;
10199 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
10200 YY_RULE_SETUP
10201 #line 1541 "scanner.l"
10202 {  // A::operator()<int>(int arg)
10203                                           lineCount();
10204                                           current->name += "()";
10205                                           BEGIN( FindMembers );
10206                                         }
10207         YY_BREAK
10208 case 113:
10209 /* rule 113 can match eol */
10210 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
10211 (yy_c_buf_p) = yy_cp -= 1;
10212 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
10213 YY_RULE_SETUP
10214 #line 1546 "scanner.l"
10215 {
10216                                           lineCount();
10217                                           current->name += scanYYtext ;
10218                                           current->name = current->name.simplifyWhiteSpace();
10219                                           BEGIN( FindMembers ) ;
10220                                         }
10221         YY_BREAK
10222 case 114:
10223 YY_RULE_SETUP
10224 #line 1552 "scanner.l"
10225 { // can occur when importing members
10226                                           unput(';');
10227                                           BEGIN( FindMembers ) ;
10228                                         }
10229         YY_BREAK
10230 case 115:
10231 /* rule 115 can match eol */
10232 YY_RULE_SETUP
10233 #line 1556 "scanner.l"
10234 { 
10235                                           lineCount();
10236                                           current->name += *scanYYtext ;
10237                                         }
10238         YY_BREAK
10239 case 116:
10240 YY_RULE_SETUP
10241 #line 1560 "scanner.l"
10242 { /* skip guided templ specifiers */ }
10243         YY_BREAK
10244 case 117:
10245 YY_RULE_SETUP
10246 #line 1561 "scanner.l"
10247 {
10248                                           current->name = current->name.simplifyWhiteSpace();
10249                                           unput(*scanYYtext);
10250                                           BEGIN( FindMembers ) ;
10251                                         }
10252         YY_BREAK
10253 case 118:
10254 /* rule 118 can match eol */
10255 YY_RULE_SETUP
10256 #line 1566 "scanner.l"
10257 {  // generic is a C++/CLI extension
10258                                           lineCount();
10259                                           if (current->tArgLists==0)
10260                                           {
10261                                             current->tArgLists = new QList<ArgumentList>;
10262                                             current->tArgLists->setAutoDelete(TRUE);
10263                                           }
10264                                           ArgumentList *al = new ArgumentList;
10265                                           current->spec |= (scanYYtext[0]=='g') ? Entry::Generic : Entry::Template;
10266                                           current->tArgLists->append(al);
10267                                           currentArgumentList = al;
10268                                           templateStr="<";
10269                                           fullArgString = templateStr.copy();
10270                                           copyArgString = &templateStr;
10271                                           currentArgumentContext = FindMembers;
10272                                           BEGIN( ReadTempArgs );
10273                                         }
10274         YY_BREAK
10275 case 119:
10276 /* rule 119 can match eol */
10277 YY_RULE_SETUP
10278 #line 1583 "scanner.l"
10279 { // namespace alias
10280                                           lineCount(); 
10281                                           BEGIN( NSAliasName );
10282                                         }
10283         YY_BREAK
10284 case 120:
10285 YY_RULE_SETUP
10286 #line 1587 "scanner.l"
10287 {
10288                                           aliasName = scanYYtext;
10289                                           BEGIN( NSAliasArg );
10290                                         }
10291         YY_BREAK
10292 case 121:
10293 YY_RULE_SETUP
10294 #line 1591 "scanner.l"
10295 {
10296                                           //printf("Inserting namespace alias %s::%s->%s\n",current_root->name.data(),aliasName.data(),scanYYtext);
10297                                           //if (current_root->name.isEmpty())
10298                                           //{
10299                                           // TODO: namespace aliases are now treated as global entities
10300                                           // while they should be aware of the scope they are in
10301                                             Doxygen::namespaceAliasDict.insert(aliasName,new QCString(scanYYtext));
10302                                           //}
10303                                           //else
10304                                           //{
10305                                           //  Doxygen::namespaceAliasDict.insert(current_root->name+"::"+aliasName,
10306                                           //    new QCString(current_root->name+"::"+scanYYtext));
10307                                           //}
10308                                         }
10309         YY_BREAK
10310 case 122:
10311 YY_RULE_SETUP
10312 #line 1605 "scanner.l"
10313 {
10314                                           BEGIN( FindMembers );
10315                                         }
10316         YY_BREAK
10317 case 123:
10318 /* rule 123 can match eol */
10319 YY_RULE_SETUP
10320 #line 1608 "scanner.l"
10321 { // package import => add as a using directive
10322                                           lineCount();
10323                                           QCString scope=scanYYtext;
10324                                           current->name=removeRedundantWhiteSpace(substitute(scope.left(scope.length()-2),".","::"));
10325                                           current->fileName = yyFileName; 
10326                                           current->section=Entry::USINGDIR_SEC;
10327                                           current_root->addSubEntry(current);
10328                                           current = new Entry ;
10329                                           initEntry();
10330                                           BEGIN(Using);
10331                                         }
10332         YY_BREAK
10333 case 124:
10334 /* rule 124 can match eol */
10335 YY_RULE_SETUP
10336 #line 1619 "scanner.l"
10337 { // class import => add as a using declaration
10338                                           lineCount();
10339                                           QCString scope=scanYYtext;
10340                                           current->name=removeRedundantWhiteSpace(substitute(scope,".","::"));
10341                                           current->fileName = yyFileName; 
10342                                           if (insideD) 
10343                                           {
10344                                             current->section=Entry::USINGDIR_SEC;
10345                                           }
10346                                           else
10347                                           {
10348                                             //printf("import name = %s -> %s\n",scanYYtext,current->name.data());
10349                                             current->section=Entry::USINGDECL_SEC;
10350                                           }
10351                                           current_root->addSubEntry(current);
10352                                           current = new Entry ;
10353                                           initEntry();
10354                                           BEGIN(Using);
10355                                         }
10356         YY_BREAK
10357 case 125:
10358 /* rule 125 can match eol */
10359 YY_RULE_SETUP
10360 #line 1638 "scanner.l"
10361 { 
10362                                           current->startLine=yyLineNr; 
10363                                           lineCount(); 
10364                                           BEGIN(Using); 
10365                                         }
10366         YY_BREAK
10367 case 126:
10368 /* rule 126 can match eol */
10369 YY_RULE_SETUP
10370 #line 1643 "scanner.l"
10371 { lineCount(); BEGIN(UsingDirective); }
10372         YY_BREAK
10373 case 127:
10374 /* rule 127 can match eol */
10375 YY_RULE_SETUP
10376 #line 1644 "scanner.l"
10377 {
10378                                           lineCount();
10379                                           current->name=scanYYtext;
10380                                           current->fileName = yyFileName; 
10381                                           current->section=Entry::USINGDECL_SEC;
10382                                           current_root->addSubEntry(current);
10383                                           current             = new Entry ;
10384                                           if (insideCS) /* Hack: in C# a using declaration and 
10385                                                            directive have the same syntax, so we
10386                                                            also add it as a using directive here
10387                                                          */
10388                                           {
10389                                             current->name=scanYYtext;
10390                                             current->fileName = yyFileName; 
10391                                             current->startLine = yyLineNr;
10392                                             current->section=Entry::USINGDIR_SEC;
10393                                             current_root->addSubEntry(current);
10394                                             current             = new Entry ;
10395                                           }
10396                                           initEntry();
10397                                           BEGIN(Using);
10398                                         }
10399         YY_BREAK
10400 case 128:
10401 /* rule 128 can match eol */
10402 YY_RULE_SETUP
10403 #line 1666 "scanner.l"
10404 { current->name=removeRedundantWhiteSpace(scanYYtext);
10405                                           current->fileName = yyFileName; 
10406                                           current->section=Entry::USINGDIR_SEC;
10407                                           current_root->addSubEntry(current);
10408                                           current             = new Entry ;
10409                                           initEntry();
10410                                           BEGIN(Using);
10411                                         }
10412         YY_BREAK
10413 case 129:
10414 YY_RULE_SETUP
10415 #line 1674 "scanner.l"
10416 { BEGIN(FindMembers); }
10417         YY_BREAK
10418 case 130:
10419 /* rule 130 can match eol */
10420 YY_RULE_SETUP
10421 #line 1675 "scanner.l"
10422 { // guided template decl
10423                                           QCString n=scanYYtext;
10424                                           addType( current );
10425                                           current->name=n.left(n.length()-2);
10426                                         }
10427         YY_BREAK
10428 case 131:
10429 /* rule 131 can match eol */
10430 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
10431 (yy_c_buf_p) = yy_cp -= 1;
10432 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
10433 YY_RULE_SETUP
10434 #line 1680 "scanner.l"
10435 { // Note: this could be a return type!
10436                                           sharpCount=0;
10437                                           lineCount();
10438                                           addType( current );
10439                                           current->name=scanYYtext;
10440                                           current->name=current->name.stripWhiteSpace();
10441                                           //current->scopeSpec.resize(0);
10442                                           // currentTemplateSpec = &current->scopeSpec;
10443                                           if (nameIsOperator(current->name))
10444                                             BEGIN( Operator );
10445                                           else
10446                                             BEGIN( EndTemplate );
10447                                         }
10448         YY_BREAK
10449 case 132:
10450 /* rule 132 can match eol */
10451 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
10452 (yy_c_buf_p) = yy_cp -= 1;
10453 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
10454 YY_RULE_SETUP
10455 #line 1693 "scanner.l"
10456 {
10457                                           sharpCount=0;
10458                                           lineCount();
10459                                           current->name+=((QCString)scanYYtext).stripWhiteSpace();
10460                                           //current->memberSpec.resize(0);
10461                                           // currentTemplateSpec = &current->memberSpec;
10462                                           if (nameIsOperator(current->name))
10463                                             BEGIN( Operator );
10464                                           else
10465                                             BEGIN( EndTemplate );
10466                                         }
10467         YY_BREAK
10468 case 133:
10469 YY_RULE_SETUP
10470 #line 1704 "scanner.l"
10471 {
10472                                           current->name+=scanYYtext;
10473                                           // *currentTemplateSpec+=scanYYtext; 
10474                                         }
10475         YY_BREAK
10476 case 134:
10477 YY_RULE_SETUP
10478 #line 1708 "scanner.l"
10479 { 
10480                                           current->name+='<';
10481                                           // *currentTemplateSpec+='<'; 
10482                                           sharpCount++; 
10483                                         }
10484         YY_BREAK
10485 case 135:
10486 YY_RULE_SETUP
10487 #line 1713 "scanner.l"
10488 {
10489                                           if (insideJava || insideCS)
10490                                           {
10491                                             unput('>');
10492                                             unput(' ');
10493                                             unput('>');
10494                                           }
10495                                           else
10496                                           {
10497                                             current->name+=scanYYtext;
10498                                           }
10499                                           // *currentTemplateSpec+=scanYYtext; 
10500                                         }
10501         YY_BREAK
10502 case 136:
10503 YY_RULE_SETUP
10504 #line 1726 "scanner.l"
10505 {
10506                                           current->name+='>';
10507                                           // *currentTemplateSpec+='>';
10508                                           if (--sharpCount<=0)
10509                                           {  
10510                                             //printf("Found %s\n",current->name.data());
10511                                             BEGIN(FindMembers);
10512                                           }
10513                                         }
10514         YY_BREAK
10515 case 137:
10516 /* rule 137 can match eol */
10517 YY_RULE_SETUP
10518 #line 1735 "scanner.l"
10519 { 
10520                                           lineCount();
10521                                           current->name+='>';
10522                                           // *currentTemplateSpec+='>';
10523                                           if (--sharpCount<=0)
10524                                           {
10525                                             current->args = "(";
10526                                             currentArgumentContext = FuncQual;
10527                                             fullArgString = current->args.copy();
10528                                             copyArgString = &current->args;
10529                                             //printf("Found %s\n",current->name.data());
10530                                             BEGIN( ReadFuncArgType ) ;
10531                                           }
10532                                         }
10533         YY_BREAK
10534 case 138:
10535 /* rule 138 can match eol */
10536 YY_RULE_SETUP
10537 #line 1749 "scanner.l"
10538 { // function pointer returning a template instance
10539                                           lineCount();
10540                                           current->name+='>';
10541                                           BEGIN(FindMembers);
10542                                         }
10543         YY_BREAK
10544 case 139:
10545 /* rule 139 can match eol */
10546 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
10547 (yy_c_buf_p) = yy_cp -= 2;
10548 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
10549 YY_RULE_SETUP
10550 #line 1754 "scanner.l"
10551 {
10552                                           lineCount();
10553                                           current->name+='>';
10554                                           // *currentTemplateSpec+='>';
10555                                           if (--sharpCount<=0)
10556                                           {
10557                                             BEGIN(FindMemberName);
10558                                           }
10559                                         }
10560         YY_BREAK
10561 case 140:
10562 YY_RULE_SETUP
10563 #line 1763 "scanner.l"
10564 { 
10565                                           current->name+=*scanYYtext;
10566                                           // *currentTemplateSpec+=*scanYYtext; 
10567                                         }
10568         YY_BREAK
10569 case 141:
10570 /* rule 141 can match eol */
10571 YY_RULE_SETUP
10572 #line 1767 "scanner.l"
10573 {
10574                                           if (insidePHP)
10575                                           {
10576                                             current->bodyLine = yyLineNr;
10577                                             BEGIN( DefinePHP );
10578                                           }
10579                                           else
10580                                             REJECT;
10581                                         }
10582         YY_BREAK
10583 case 142:
10584 YY_RULE_SETUP
10585 #line 1776 "scanner.l"
10586 { // Qt object macro
10587                                         }
10588         YY_BREAK
10589 case 143:
10590 YY_RULE_SETUP
10591 #line 1778 "scanner.l"
10592 { // Qt property declaration
10593                                           current->protection = protection = Public ;
10594                                           current->mtype = mtype = Property;
10595                                           current->type.resize(0);
10596                                           BEGIN(QtPropType);
10597                                         }
10598         YY_BREAK
10599 case 144:
10600 YY_RULE_SETUP
10601 #line 1784 "scanner.l"
10602 { // start of property arguments
10603                                         }
10604         YY_BREAK
10605 case 145:
10606 YY_RULE_SETUP
10607 #line 1786 "scanner.l"
10608 { // end of property arguments
10609                                           unput(';');
10610                                           BEGIN(FindMembers);
10611                                         }
10612         YY_BREAK
10613 case 146:
10614 YY_RULE_SETUP
10615 #line 1790 "scanner.l"
10616 {
10617                                           current->type+=scanYYtext;
10618                                         }
10619         YY_BREAK
10620 case 147:
10621 YY_RULE_SETUP
10622 #line 1793 "scanner.l"
10623 {
10624                                           current->type+=scanYYtext;
10625                                         }
10626         YY_BREAK
10627 case 148:
10628 YY_RULE_SETUP
10629 #line 1796 "scanner.l"
10630 {
10631                                           current->type+=scanYYtext;
10632                                           BEGIN(QtPropName);
10633                                         }
10634         YY_BREAK
10635 case 149:
10636 YY_RULE_SETUP
10637 #line 1800 "scanner.l"
10638 {
10639                                           current->name=scanYYtext;
10640                                           BEGIN(QtPropAttr);
10641                                         }
10642         YY_BREAK
10643 case 150:
10644 YY_RULE_SETUP
10645 #line 1804 "scanner.l"
10646 {
10647                                           current->spec |= Entry::Readable;
10648                                           BEGIN(QtPropRead);
10649                                         }
10650         YY_BREAK
10651 case 151:
10652 YY_RULE_SETUP
10653 #line 1808 "scanner.l"
10654 {
10655                                           current->spec |= Entry::Writable;
10656                                           BEGIN(QtPropWrite);
10657                                         }
10658         YY_BREAK
10659 case 152:
10660 YY_RULE_SETUP
10661 #line 1812 "scanner.l"
10662 { // reset method => not supported yet
10663                                         }
10664         YY_BREAK
10665 case 153:
10666 YY_RULE_SETUP
10667 #line 1814 "scanner.l"
10668 { // scriptable property => not supported yet
10669                                         }
10670         YY_BREAK
10671 case 154:
10672 YY_RULE_SETUP
10673 #line 1816 "scanner.l"
10674 { // designable property => not supported yet
10675                                         }
10676         YY_BREAK
10677 case 155:
10678 YY_RULE_SETUP
10679 #line 1818 "scanner.l"
10680 {
10681                                           current->read = scanYYtext;
10682                                           BEGIN(QtPropAttr);
10683                                         }
10684         YY_BREAK
10685 case 156:
10686 YY_RULE_SETUP
10687 #line 1822 "scanner.l"
10688 {
10689                                           current->write = scanYYtext;
10690                                           BEGIN(QtPropAttr);
10691                                         }
10692         YY_BREAK
10693 case 157:
10694 /* rule 157 can match eol */
10695 YY_RULE_SETUP
10696 #line 1826 "scanner.l"
10697 {
10698                                           current->name=scanYYtext;
10699                                           BEGIN(FindMembers);
10700                                         }
10701         YY_BREAK
10702 case 158:
10703 /* rule 158 can match eol */
10704 YY_RULE_SETUP
10705 #line 1830 "scanner.l"
10706 {
10707                                           lineCount();
10708                                           if (insideIDL && scanYYleng==9 && strcmp(scanYYtext,"cpp_quote")==0)
10709                                           {
10710                                             BEGIN(CppQuote);
10711                                           }
10712                                           else if ((insideIDL || insideJava || insideD) && scanYYleng==6 && strcmp(scanYYtext,"import")==0)
10713                                           {
10714                                             if (insideIDL)
10715                                               BEGIN(NextSemi);
10716                                             else // insideJava or insideD
10717                                               BEGIN(JavaImport);
10718                                           }
10719                                           else if (insideJava && strcmp(scanYYtext,"package")==0)
10720                                           {
10721                                             lineCount();
10722                                             BEGIN(PackageName);
10723                                           }
10724                                           else if (insideIDL && strcmp(scanYYtext,"case")==0)
10725                                           {
10726                                             BEGIN(IDLUnionCase);
10727                                           }
10728                                           else if (insideTryBlock && strcmp(scanYYtext,"catch")==0)
10729                                           {
10730                                             insideTryBlock=FALSE;
10731                                             BEGIN(TryFunctionBlock);
10732                                           }
10733                                           else if (insideJS && strcmp(scanYYtext,"var")==0)
10734                                           { // javascript variable
10735                                             current->type="var";
10736                                           }
10737                                           else if (insideJS && strcmp(scanYYtext,"function")==0)
10738                                           { // javascript function
10739                                             current->type="function";
10740                                           }
10741                                           else
10742                                           {
10743                                             if (YY_START==FindMembers)
10744                                             {
10745                                               addType( current ) ;
10746                                             }
10747                                             bool javaLike = insideJava || insideCS || insideD || insidePHP || insideJS;
10748                                             if (javaLike && strcmp(scanYYtext,"public")==0)
10749                                             {
10750                                               current->protection = Public;
10751                                             }
10752                                             else if (javaLike && strcmp(scanYYtext,"protected")==0)
10753                                             {
10754                                               current->protection = Protected;
10755                                             }
10756                                             else if (javaLike && strcmp(scanYYtext,"private")==0)
10757                                             {
10758                                               current->protection = Private;
10759                                             }
10760                                             else if (javaLike && strcmp(scanYYtext,"static")==0)
10761                                             {
10762                                               if (YY_START==FindMembers)
10763                                                 current->name  = scanYYtext;
10764                                               else
10765                                                 current->name += scanYYtext;
10766                                               current->stat = TRUE;
10767                                             }
10768                                             else
10769                                             {
10770                                               if (YY_START==FindMembers)
10771                                                 current->name  = scanYYtext;
10772                                               else
10773                                                 current->name += scanYYtext;
10774                                               if (current->name.left(7)=="static ")
10775                                               {
10776                                                 current->stat = TRUE;
10777                                                 current->name= current->name.mid(7);
10778                                               }
10779                                               else if (current->name.left(7)=="inline ")
10780                                               {
10781                                                 if (current->type.isEmpty())
10782                                                 {
10783                                                   current->type="inline";
10784                                                 }
10785                                                 else
10786                                                 {
10787                                                   current->type+="inline ";
10788                                                 }
10789                                                 current->name= current->name.mid(7);
10790                                               }
10791                                               else if (current->name.left(6)=="const ")
10792                                               {
10793                                                 if (current->type.isEmpty())
10794                                                 {
10795                                                   current->type="const";
10796                                                 }
10797                                                 else
10798                                                 {
10799                                                   current->type+="const ";
10800                                                 }
10801                                                 current->name=current->name.mid(6);
10802                                               }
10803                                             }
10804                                             QCString tmp=scanYYtext;
10805                                             if (nameIsOperator(tmp))
10806                                             {
10807                                               BEGIN( Operator );
10808                                             }
10809                                             else
10810                                             {
10811                                               BEGIN(FindMembers);
10812                                             }
10813                                           }
10814                                         }
10815         YY_BREAK
10816 case 159:
10817 YY_RULE_SETUP
10818 #line 1939 "scanner.l"
10819 { // some number where we did not expect one
10820                                         }
10821         YY_BREAK
10822 case 160:
10823 YY_RULE_SETUP
10824 #line 1941 "scanner.l"
10825 {
10826                                           if (insideJava || insideCS || insideD)
10827                                           {
10828                                             current->name+=".";
10829                                           }
10830                                         }
10831         YY_BREAK
10832 case 161:
10833 YY_RULE_SETUP
10834 #line 1947 "scanner.l"
10835 {
10836                                           current->name+=scanYYtext;
10837                                         }
10838         YY_BREAK
10839 case 162:
10840 YY_RULE_SETUP
10841 #line 1950 "scanner.l"
10842 {
10843                                           insideCppQuote=TRUE;
10844                                           BEGIN(FindMembers);
10845                                         }
10846         YY_BREAK
10847 case 163:
10848 YY_RULE_SETUP
10849 #line 1954 "scanner.l"
10850 
10851         YY_BREAK
10852 case 164:
10853 YY_RULE_SETUP
10854 #line 1955 "scanner.l"
10855 { BEGIN(FindMembers); }
10856         YY_BREAK
10857 case 165:
10858 /* rule 165 can match eol */
10859 YY_RULE_SETUP
10860 #line 1956 "scanner.l"
10861 { yyLineNr++; }
10862         YY_BREAK
10863 case 166:
10864 YY_RULE_SETUP
10865 #line 1957 "scanner.l"
10866 
10867         YY_BREAK
10868 case 167:
10869 /* rule 167 can match eol */
10870 YY_RULE_SETUP
10871 #line 1958 "scanner.l"
10872 { yyLineNr++; }
10873         YY_BREAK
10874 case 168:
10875 YY_RULE_SETUP
10876 #line 1959 "scanner.l"
10877 { 
10878                                           curlyCount=0;
10879                                           lastCurlyContext = TryFunctionBlockEnd ;
10880                                           BEGIN( SkipCurly );
10881                                         }
10882         YY_BREAK
10883 case 169:
10884 YY_RULE_SETUP
10885 #line 1964 "scanner.l"
10886 
10887         YY_BREAK
10888 case 170:
10889 YY_RULE_SETUP
10890 #line 1965 "scanner.l"
10891 { BEGIN(TryFunctionBlock); }
10892         YY_BREAK
10893 case 171:
10894 YY_RULE_SETUP
10895 #line 1966 "scanner.l"
10896 { unput(*scanYYtext); 
10897                                           BEGIN( FindMembers );
10898                                         }
10899         YY_BREAK
10900 case 172:
10901 YY_RULE_SETUP
10902 #line 1969 "scanner.l"
10903 {
10904                                           insideCppQuote=FALSE;
10905                                           BEGIN(FindMembers);
10906                                         }
10907         YY_BREAK
10908 case 173:
10909 YY_RULE_SETUP
10910 #line 1973 "scanner.l"
10911 { if (insidePHP)
10912                                             REJECT;
10913                                           lastCPPContext = YY_START;
10914                                           BEGIN( SkipCPP ) ;
10915                                         }
10916         YY_BREAK
10917 case 174:
10918 YY_RULE_SETUP
10919 #line 1978 "scanner.l"
10920 { if (insidePHP)
10921                                             REJECT;
10922                                           current->bodyLine = yyLineNr;
10923                                           BEGIN( Define );
10924                                         }
10925         YY_BREAK
10926 case 175:
10927 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
10928 (yy_c_buf_p) = yy_cp -= 1;
10929 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
10930 YY_RULE_SETUP
10931 #line 1983 "scanner.l"
10932 { /* line control directive */
10933                                           yyLineNr = atoi(&scanYYtext[1]);
10934                                           //printf("setting line number to %d\n",yyLineNr);
10935                                           lastPreLineCtrlContext = YY_START;
10936                                           BEGIN( PreLineCtrl );
10937                                         }
10938         YY_BREAK
10939 case 176:
10940 YY_RULE_SETUP
10941 #line 1989 "scanner.l"
10942 {
10943                                           yyFileName = stripQuotes(scanYYtext);
10944                                         }
10945         YY_BREAK
10946 case 177:
10947 YY_RULE_SETUP
10948 #line 1992 "scanner.l"
10949 {}
10950         YY_BREAK
10951 case 178:
10952 /* rule 178 can match eol */
10953 YY_RULE_SETUP
10954 #line 1993 "scanner.l"
10955 {
10956                                           yyLineNr++;
10957                                           BEGIN( lastPreLineCtrlContext );
10958                                         }
10959         YY_BREAK
10960 case 179:
10961 YY_RULE_SETUP
10962 #line 1997 "scanner.l"
10963 
10964         YY_BREAK
10965 case 180:
10966 /* rule 180 can match eol */
10967 YY_RULE_SETUP
10968 #line 1998 "scanner.l"
10969 { yyLineNr++ ; }
10970         YY_BREAK
10971 case 181:
10972 /* rule 181 can match eol */
10973 YY_RULE_SETUP
10974 #line 1999 "scanner.l"
10975 { yyLineNr++ ;
10976                                           BEGIN( lastCPPContext) ;
10977                                         }
10978         YY_BREAK
10979 case 182:
10980 YY_RULE_SETUP
10981 #line 2002 "scanner.l"
10982 {
10983                                           current->name = scanYYtext;
10984                                           current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
10985                                           current->args = "(";
10986                                           current->bodyLine = yyLineNr;
10987                                           currentArgumentContext = DefineEnd;
10988                                           fullArgString=current->args.copy();
10989                                           copyArgString=&current->args;
10990                                           BEGIN( ReadFuncArgType ) ;
10991                                         }
10992         YY_BREAK
10993 /*
10994 <DefineArg>")"                          {
10995                                           //printf("Define with args\n");
10996                                           current->args += ')';
10997                                           BEGIN( DefineEnd );
10998                                         }
10999 <DefineArg>.                            {
11000                                           current->args += *scanYYtext;
11001                                         }
11002   */
11003 case 183:
11004 YY_RULE_SETUP
11005 #line 2022 "scanner.l"
11006 {
11007                                           //printf("Define `%s' without args\n",scanYYtext);
11008                                           current->bodyLine = yyLineNr;
11009                                           current->name = scanYYtext;
11010                                           BEGIN(DefineEnd);
11011                                         }
11012         YY_BREAK
11013 case 184:
11014 /* rule 184 can match eol */
11015 YY_RULE_SETUP
11016 #line 2028 "scanner.l"
11017 {
11018                                           //printf("End define\n");
11019                                           yyLineNr++;
11020                                           current->fileName   = yyFileName;
11021                                           current->startLine  = yyLineNr;
11022                                           current->type.resize(0);
11023                                           current->args       = current->args.simplifyWhiteSpace();
11024                                           current->name       = current->name.stripWhiteSpace();
11025                                           current->section    = Entry::DEFINE_SEC;
11026                                           current_root->addSubEntry(current);
11027                                           current             = new Entry ;
11028                                           initEntry();
11029                                           BEGIN(FindMembers);
11030                                         }
11031         YY_BREAK
11032 case 185:
11033 YY_RULE_SETUP
11034 #line 2042 "scanner.l"
11035 {
11036                                           //printf("End define\n");
11037                                           current->fileName   = yyFileName;
11038                                           current->startLine  = yyLineNr;
11039                                           current->type.resize(0);
11040                                           current->args       = current->args.simplifyWhiteSpace();
11041                                           current->name       = current->name.stripWhiteSpace();
11042                                           current->section    = Entry::ENUM_SEC;  //HACK!
11043                                           current_root->addSubEntry(current);
11044                                           current             = new Entry ;
11045                                           initEntry();
11046                                           BEGIN(FindMembers);
11047                                         }
11048         YY_BREAK
11049 case 186:
11050 YY_RULE_SETUP
11051 #line 2055 "scanner.l"
11052 
11053         YY_BREAK
11054 case 187:
11055 /* rule 187 can match eol */
11056 YY_RULE_SETUP
11057 #line 2056 "scanner.l"
11058 {
11059                                           yyLineNr++;
11060                                         }
11061         YY_BREAK
11062 case 188:
11063 YY_RULE_SETUP
11064 #line 2059 "scanner.l"
11065 {
11066                                           if (insideIDL && insideCppQuote)
11067                                           {
11068                                             BEGIN(EndCppQuote);
11069                                           }
11070                                           else
11071                                           {
11072                                             lastStringContext=DefineEnd;
11073                                             BEGIN(SkipString);
11074                                           }
11075                                         }
11076         YY_BREAK
11077 case 189:
11078 YY_RULE_SETUP
11079 #line 2070 "scanner.l"
11080 
11081         YY_BREAK
11082 case 190:
11083 /* rule 190 can match eol */
11084 YY_RULE_SETUP
11085 #line 2071 "scanner.l"
11086 {
11087                                           current->name = scanYYtext;
11088                                           current->name = current->name.stripWhiteSpace();
11089                                           current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
11090                                           current->name = current->name.left(current->name.length()-1);
11091                                           current->args = "(";
11092                                           current->bodyLine = yyLineNr;
11093                                           lastRoundContext = DefinePHPEnd;
11094                                           pCopyRoundString = &current->args;
11095                                           roundCount = 0;
11096                                           BEGIN( CopyRound );
11097                                         }
11098         YY_BREAK
11099 case 191:
11100 YY_RULE_SETUP
11101 #line 2084 "scanner.l"
11102 {  // ^ and % are C++/CLI extensions
11103                                           if (insideCli)
11104                                           {
11105                                             addType( current );
11106                                             current->name = scanYYtext ; 
11107                                           }
11108                                           else
11109                                           {
11110                                             REJECT;
11111                                           }
11112                                         }
11113         YY_BREAK
11114 case 192:
11115 YY_RULE_SETUP
11116 #line 2095 "scanner.l"
11117 { 
11118                                           current->name += scanYYtext ;  
11119                                           addType( current );
11120                                         }
11121         YY_BREAK
11122 case 193:
11123 /* rule 193 can match eol */
11124 YY_RULE_SETUP
11125 #line 2099 "scanner.l"
11126 {
11127                                           lineCount();
11128                                           if (current->bodyLine==-1)
11129                                           {
11130                                             current->bodyLine=yyLineNr;
11131                                           }
11132                                           docBlockContext   = YY_START;
11133                                           docBlockInBody    = FALSE;
11134                                           docBlockAutoBrief = ( scanYYtext[scanYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
11135                                                               ( scanYYtext[scanYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
11136                                           docBlock.resize(0);
11137                                           docBlockTerm = ';';
11138                                           if (scanYYtext[scanYYleng-3]=='/')
11139                                           {
11140                                             startCommentBlock(TRUE);
11141                                             BEGIN( DocLine );
11142                                           }
11143                                           else
11144                                           {
11145                                             startCommentBlock(FALSE);
11146                                             BEGIN( DocBlock );
11147                                           }
11148                                         }
11149         YY_BREAK
11150 case 194:
11151 /* rule 194 can match eol */
11152 YY_RULE_SETUP
11153 #line 2122 "scanner.l"
11154 {
11155                                           lineCount();
11156                                           docBlockContext   = YY_START;
11157                                           docBlockInBody    = FALSE;
11158                                           docBlockAutoBrief = ( scanYYtext[scanYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
11159                                                               ( scanYYtext[scanYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
11160                                           docBlock.resize(0);
11161                                           docBlockTerm = ',';
11162                                           if (scanYYtext[scanYYleng-3]=='/')
11163                                           {
11164                                             startCommentBlock(TRUE);
11165                                             BEGIN( DocLine );
11166                                           }
11167                                           else
11168                                           {
11169                                             startCommentBlock(FALSE);
11170                                             BEGIN( DocBlock );
11171                                           }
11172                                         }
11173         YY_BREAK
11174 case 195:
11175 /* rule 195 can match eol */
11176 YY_RULE_SETUP
11177 #line 2141 "scanner.l"
11178 {
11179                                           lineCount();
11180                                           if (current->bodyLine==-1)
11181                                           {
11182                                             current->bodyLine=yyLineNr;
11183                                           }
11184                                           docBlockContext   = YY_START;
11185                                           docBlockInBody    = FALSE;
11186                                           docBlockAutoBrief = ( scanYYtext[scanYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
11187                                                               ( scanYYtext[scanYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
11188                                           docBlock.resize(0);
11189                                           docBlockTerm = 0;
11190                                           if (scanYYtext[scanYYleng-3]=='/')
11191                                           {
11192                                             startCommentBlock(TRUE);
11193                                             BEGIN( DocLine );
11194                                           }
11195                                           else
11196                                           {
11197                                             startCommentBlock(FALSE);
11198                                             BEGIN( DocBlock );
11199                                           }
11200                                         }
11201         YY_BREAK
11202 case 196:
11203 YY_RULE_SETUP
11204 #line 2165 "scanner.l"
11205 {
11206                                           //handleGroupStartCommand(current->name);
11207                                           if (previous && previous->section==Entry::GROUPDOC_SEC)
11208                                           {
11209                                             // link open command to the group defined in the previous entry
11210                                             openGroup(previous,yyFileName,yyLineNr);
11211                                           }
11212                                           else
11213                                           {
11214                                             // link open command to the current entry
11215                                             openGroup(current,yyFileName,yyLineNr);
11216                                           }
11217                                           //current = tmp;
11218                                           initEntry();
11219                                           if (scanYYtext[1]=='/')
11220                                           {
11221                                             if (scanYYtext[2]=='!' || scanYYtext[2]=='/')
11222                                             {
11223                                               docBlockContext   = YY_START;
11224                                               docBlockInBody    = FALSE;
11225                                               docBlockAutoBrief = FALSE;
11226                                               docBlock.resize(0);
11227                                               docBlockTerm = 0;
11228                                               startCommentBlock(TRUE);
11229                                               BEGIN(DocLine);
11230                                             }
11231                                             else
11232                                             {
11233                                               lastCContext=YY_START;
11234                                               BEGIN(SkipCxxComment);
11235                                             }
11236                                           }
11237                                           else
11238                                           {
11239                                             if (scanYYtext[2]=='!' || scanYYtext[2]=='*')
11240                                             {
11241                                               docBlockContext   = YY_START;
11242                                               docBlockInBody    = FALSE;
11243                                               docBlock.resize(0);
11244                                               docBlockAutoBrief = ( scanYYtext[scanYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
11245                                                                   ( scanYYtext[scanYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
11246                                               docBlockTerm = 0;
11247                                               startCommentBlock(FALSE);
11248                                               BEGIN(DocBlock);
11249                                             }
11250                                             else
11251                                             {
11252                                               lastCContext=YY_START;
11253                                               BEGIN(SkipComment);
11254                                             }
11255                                           }
11256                                         }
11257         YY_BREAK
11258 case 197:
11259 YY_RULE_SETUP
11260 #line 2217 "scanner.l"
11261 {
11262                                           closeGroup(current,yyFileName,yyLineNr);
11263                                         }
11264         YY_BREAK
11265 case 198:
11266 YY_RULE_SETUP
11267 #line 2220 "scanner.l"
11268 { // in PHP code this could also be due to "<?="
11269                                           current->bodyLine = yyLineNr;
11270                                           lastInitializerContext = YY_START;
11271                                           initBracketCount=0;
11272                                           BEGIN(ReadInitializer);
11273                                         }
11274         YY_BREAK
11275 /* Read initializer rules */
11276 case 199:
11277 YY_RULE_SETUP
11278 #line 2227 "scanner.l"
11279 {
11280                                           lastRoundContext=YY_START;
11281                                           pCopyRoundGString=&current->initializer;
11282                                           roundCount=0;
11283                                           current->initializer+=*scanYYtext; 
11284                                           BEGIN(GCopyRound);
11285                                         }
11286         YY_BREAK
11287 case 200:
11288 YY_RULE_SETUP
11289 #line 2234 "scanner.l"
11290 {
11291                                           lastCurlyContext=YY_START;
11292                                           pCopyCurlyGString=&current->initializer;
11293                                           curlyCount=0;
11294                                           current->initializer+=*scanYYtext; 
11295                                           BEGIN(GCopyCurly);
11296                                         }
11297         YY_BREAK
11298 case 201:
11299 YY_RULE_SETUP
11300 #line 2241 "scanner.l"
11301 {
11302                                           //printf(">> initializer `%s' <<\n",current->initializer.data());
11303                                           if (*scanYYtext==';' || lastInitializerContext==FindFields)
11304                                           {
11305                                             unput(*scanYYtext);
11306                                             BEGIN(lastInitializerContext);
11307                                           }
11308                                           else if (*scanYYtext==',' && initBracketCount==0) // for "int a=0,b=0"
11309                                           {
11310                                             unput(*scanYYtext);
11311                                             BEGIN(lastInitializerContext);
11312                                           }
11313                                           else
11314                                           {
11315                                             current->initializer+=*scanYYtext; 
11316                                           }
11317                                         }
11318         YY_BREAK
11319 case 202:
11320 YY_RULE_SETUP
11321 #line 2258 "scanner.l"
11322 {
11323                                           if (insideIDL && insideCppQuote)
11324                                           {
11325                                             BEGIN(EndCppQuote);
11326                                           }
11327                                           else
11328                                           {
11329                                             lastStringContext=YY_START;
11330                                             current->initializer+=*scanYYtext; 
11331                                             pCopyQuotedGString=&current->initializer;
11332                                             BEGIN(CopyGString);
11333                                           }
11334                                         }
11335         YY_BREAK
11336 case 203:
11337 YY_RULE_SETUP
11338 #line 2271 "scanner.l"
11339 {
11340                                           current->initializer+=scanYYtext; 
11341                                         }
11342         YY_BREAK
11343 case 204:
11344 YY_RULE_SETUP
11345 #line 2274 "scanner.l"
11346 {
11347                                           current->initializer+=scanYYtext; 
11348                                         }
11349         YY_BREAK
11350 case 205:
11351 YY_RULE_SETUP
11352 #line 2277 "scanner.l"
11353 {
11354                                           current->initializer+=scanYYtext; 
11355                                         }
11356         YY_BREAK
11357 case 206:
11358 YY_RULE_SETUP
11359 #line 2280 "scanner.l"
11360 {
11361                                           initBracketCount++;
11362                                           current->initializer+=*scanYYtext; 
11363                                         }
11364         YY_BREAK
11365 case 207:
11366 YY_RULE_SETUP
11367 #line 2284 "scanner.l"
11368 {
11369                                           initBracketCount--;
11370                                           current->initializer+=*scanYYtext; 
11371                                         }
11372         YY_BREAK
11373 case 208:
11374 YY_RULE_SETUP
11375 #line 2288 "scanner.l"
11376 {       
11377                                           if (insidePHP)
11378                                           {
11379                                             current->initializer+=scanYYtext; 
11380                                             pCopyQuotedGString = &current->initializer;
11381                                             lastStringContext=YY_START;
11382                                             BEGIN(CopyPHPGString);
11383                                           }
11384                                           else
11385                                           {
11386                                             current->initializer+=scanYYtext; 
11387                                           }
11388                                         }
11389         YY_BREAK
11390 case 209:
11391 YY_RULE_SETUP
11392 #line 2301 "scanner.l"
11393 { 
11394                                           if (insidePHP) 
11395                                           {
11396                                             REJECT;
11397                                           }
11398                                           else
11399                                           {  
11400                                             current->initializer+=scanYYtext; 
11401                                           }
11402                                         } 
11403         YY_BREAK
11404 case 210:
11405 /* rule 210 can match eol */
11406 YY_RULE_SETUP
11407 #line 2311 "scanner.l"
11408 {
11409                                           current->initializer+=*scanYYtext;
11410                                           yyLineNr++;
11411                                         }
11412         YY_BREAK
11413 case 211:
11414 YY_RULE_SETUP
11415 #line 2315 "scanner.l"
11416 { 
11417                                           //printf("insideCS=%d\n",insideCS);
11418                                           current->initializer+=scanYYtext;
11419                                           if (!insideCS && !insideObjC) 
11420                                           {
11421                                             REJECT;
11422                                           }
11423                                           else
11424                                           {
11425                                             // C#/ObjC verbatim string
11426                                             lastSkipVerbStringContext=YY_START;
11427                                             pSkipVerbString=&current->initializer;
11428                                             BEGIN(SkipVerbString);
11429                                           }
11430                                         }
11431         YY_BREAK
11432 case 212:
11433 YY_RULE_SETUP
11434 #line 2330 "scanner.l"
11435 {
11436                                           *pSkipVerbString+=scanYYtext;
11437                                         }
11438         YY_BREAK
11439 case 213:
11440 YY_RULE_SETUP
11441 #line 2333 "scanner.l"
11442 { // quote escape
11443                                           *pSkipVerbString+=scanYYtext;
11444                                         }
11445         YY_BREAK
11446 case 214:
11447 YY_RULE_SETUP
11448 #line 2336 "scanner.l"
11449 {
11450                                           *pSkipVerbString+=*scanYYtext;
11451                                           BEGIN(lastSkipVerbStringContext);
11452                                         }
11453         YY_BREAK
11454 case 215:
11455 /* rule 215 can match eol */
11456 YY_RULE_SETUP
11457 #line 2340 "scanner.l"
11458 {
11459                                           *pSkipVerbString+=*scanYYtext;
11460                                           yyLineNr++;
11461                                         }
11462         YY_BREAK
11463 case 216:
11464 YY_RULE_SETUP
11465 #line 2344 "scanner.l"
11466 {
11467                                           *pSkipVerbString+=*scanYYtext;
11468                                         }
11469         YY_BREAK
11470 case 217:
11471 YY_RULE_SETUP
11472 #line 2347 "scanner.l"
11473 {
11474                                           if (insidePHP)
11475                                             BEGIN( FindMembersPHP );
11476                                           else
11477                                             current->initializer+=scanYYtext;
11478                                         }
11479         YY_BREAK
11480 case 218:
11481 YY_RULE_SETUP
11482 #line 2353 "scanner.l"
11483 { 
11484                                           current->initializer+=*scanYYtext; 
11485                                         }
11486         YY_BREAK
11487 /* generic quoted string copy rules */
11488 case 219:
11489 YY_RULE_SETUP
11490 #line 2358 "scanner.l"
11491 {
11492                                           *pCopyQuotedString+=scanYYtext;
11493                                         }
11494         YY_BREAK
11495 case 220:
11496 YY_RULE_SETUP
11497 #line 2361 "scanner.l"
11498 { 
11499                                           *pCopyQuotedString+=*scanYYtext;
11500                                           BEGIN( lastStringContext ); 
11501                                         }
11502         YY_BREAK
11503 case 221:
11504 YY_RULE_SETUP
11505 #line 2365 "scanner.l"
11506 { 
11507                                           *pCopyQuotedString+=*scanYYtext;
11508                                           BEGIN( lastStringContext ); 
11509                                         }
11510         YY_BREAK
11511 case 222:
11512 YY_RULE_SETUP
11513 #line 2369 "scanner.l"
11514 {
11515                                           *pCopyQuotedString+=scanYYtext;
11516                                         }
11517         YY_BREAK
11518 case 223:
11519 /* rule 223 can match eol */
11520 YY_RULE_SETUP
11521 #line 2372 "scanner.l"
11522 {
11523                                           *pCopyQuotedString+=*scanYYtext;
11524                                           yyLineNr++;
11525                                         }
11526         YY_BREAK
11527 case 224:
11528 YY_RULE_SETUP
11529 #line 2376 "scanner.l"
11530 {
11531                                           *pCopyQuotedString+=*scanYYtext;
11532                                         }
11533         YY_BREAK
11534 /* generic quoted growable string copy rules */
11535 case 225:
11536 YY_RULE_SETUP
11537 #line 2381 "scanner.l"
11538 {
11539                                           *pCopyQuotedGString+=scanYYtext;
11540                                         }
11541         YY_BREAK
11542 case 226:
11543 YY_RULE_SETUP
11544 #line 2384 "scanner.l"
11545 { 
11546                                           *pCopyQuotedGString+=*scanYYtext;
11547                                           BEGIN( lastStringContext ); 
11548                                         }
11549         YY_BREAK
11550 case 227:
11551 YY_RULE_SETUP
11552 #line 2388 "scanner.l"
11553 { 
11554                                           *pCopyQuotedGString+=*scanYYtext;
11555                                           BEGIN( lastStringContext ); 
11556                                         }
11557         YY_BREAK
11558 case 228:
11559 YY_RULE_SETUP
11560 #line 2392 "scanner.l"
11561 {
11562                                           *pCopyQuotedGString+=scanYYtext;
11563                                         }
11564         YY_BREAK
11565 case 229:
11566 /* rule 229 can match eol */
11567 YY_RULE_SETUP
11568 #line 2395 "scanner.l"
11569 {
11570                                           *pCopyQuotedGString+=*scanYYtext;
11571                                           yyLineNr++;
11572                                         }
11573         YY_BREAK
11574 case 230:
11575 YY_RULE_SETUP
11576 #line 2399 "scanner.l"
11577 {
11578                                           *pCopyQuotedGString+=*scanYYtext;
11579                                         }
11580         YY_BREAK
11581 /* generic round bracket list copy rules */
11582 case 231:
11583 YY_RULE_SETUP
11584 #line 2404 "scanner.l"
11585 {
11586                                           *pCopyRoundString+=*scanYYtext;
11587                                           pCopyQuotedString=pCopyRoundString;
11588                                           lastStringContext=YY_START;
11589                                           BEGIN(CopyString);
11590                                         }
11591         YY_BREAK
11592 case 232:
11593 YY_RULE_SETUP
11594 #line 2410 "scanner.l"
11595 {
11596                                           *pCopyRoundString+=*scanYYtext;
11597                                           roundCount++;
11598                                         }
11599         YY_BREAK
11600 case 233:
11601 YY_RULE_SETUP
11602 #line 2414 "scanner.l"
11603 {
11604                                           *pCopyRoundString+=*scanYYtext;
11605                                           if (--roundCount<0)
11606                                             BEGIN(lastRoundContext);
11607                                         }
11608         YY_BREAK
11609 case 234:
11610 /* rule 234 can match eol */
11611 YY_RULE_SETUP
11612 #line 2419 "scanner.l"
11613 {
11614                                           yyLineNr++;
11615                                           *pCopyRoundString+=*scanYYtext;
11616                                         }
11617         YY_BREAK
11618 case 235:
11619 YY_RULE_SETUP
11620 #line 2423 "scanner.l"
11621 {
11622                                           if (insidePHP)
11623                                           {
11624                                             current->initializer+=scanYYtext; 
11625                                             pCopyQuotedString = pCopyRoundString;
11626                                             lastStringContext=YY_START;
11627                                             BEGIN(CopyPHPString);
11628                                           }
11629                                           else
11630                                           {
11631                                             *pCopyRoundString+=scanYYtext;
11632                                           }
11633                                         }
11634         YY_BREAK
11635 case 236:
11636 YY_RULE_SETUP
11637 #line 2436 "scanner.l"
11638 { 
11639                                           if (insidePHP)
11640                                           {
11641                                             REJECT;
11642                                           }
11643                                           else
11644                                           {
11645                                             *pCopyRoundString+=scanYYtext; 
11646                                           }
11647                                         }
11648         YY_BREAK
11649 case 237:
11650 YY_RULE_SETUP
11651 #line 2446 "scanner.l"
11652 {
11653                                           *pCopyRoundString+=scanYYtext;
11654                                         }
11655         YY_BREAK
11656 case 238:
11657 YY_RULE_SETUP
11658 #line 2449 "scanner.l"
11659 {
11660                                           *pCopyRoundString+=*scanYYtext;
11661                                         }
11662         YY_BREAK
11663 /* generic round bracket list copy rules for growable strings */
11664 case 239:
11665 YY_RULE_SETUP
11666 #line 2454 "scanner.l"
11667 {
11668                                           *pCopyRoundGString+=*scanYYtext;
11669                                           pCopyQuotedGString=pCopyRoundGString;
11670                                           lastStringContext=YY_START;
11671                                           BEGIN(CopyGString);
11672                                         }
11673         YY_BREAK
11674 case 240:
11675 YY_RULE_SETUP
11676 #line 2460 "scanner.l"
11677 {
11678                                           *pCopyRoundGString+=*scanYYtext;
11679                                           roundCount++;
11680                                         }
11681         YY_BREAK
11682 case 241:
11683 YY_RULE_SETUP
11684 #line 2464 "scanner.l"
11685 {
11686                                           *pCopyRoundGString+=*scanYYtext;
11687                                           if (--roundCount<0)
11688                                             BEGIN(lastRoundContext);
11689                                         }
11690         YY_BREAK
11691 case 242:
11692 /* rule 242 can match eol */
11693 YY_RULE_SETUP
11694 #line 2469 "scanner.l"
11695 {
11696                                           yyLineNr++;
11697                                           *pCopyRoundGString+=*scanYYtext;
11698                                         }
11699         YY_BREAK
11700 case 243:
11701 YY_RULE_SETUP
11702 #line 2473 "scanner.l"
11703 {
11704                                           if (insidePHP)
11705                                           {
11706                                             current->initializer+=scanYYtext; 
11707                                             pCopyQuotedGString = pCopyRoundGString;
11708                                             lastStringContext=YY_START;
11709                                             BEGIN(CopyPHPGString);
11710                                           }
11711                                           else
11712                                           {
11713                                             *pCopyRoundGString+=scanYYtext;
11714                                           }
11715                                         }
11716         YY_BREAK
11717 case 244:
11718 YY_RULE_SETUP
11719 #line 2486 "scanner.l"
11720 { 
11721                                           if (insidePHP)
11722                                           {
11723                                             REJECT;
11724                                           }
11725                                           else
11726                                           {
11727                                             *pCopyRoundGString+=scanYYtext; 
11728                                           }
11729                                         }
11730         YY_BREAK
11731 case 245:
11732 YY_RULE_SETUP
11733 #line 2496 "scanner.l"
11734 {
11735                                           *pCopyRoundGString+=scanYYtext;
11736                                         }
11737         YY_BREAK
11738 case 246:
11739 YY_RULE_SETUP
11740 #line 2499 "scanner.l"
11741 {
11742                                           *pCopyRoundGString+=*scanYYtext;
11743                                         }
11744         YY_BREAK
11745 /* generic curly bracket list copy rules */
11746 case 247:
11747 YY_RULE_SETUP
11748 #line 2504 "scanner.l"
11749 {
11750                                           *pCopyCurlyString+=*scanYYtext;
11751                                           pCopyQuotedString=pCopyCurlyString;
11752                                           lastStringContext=YY_START;
11753                                           BEGIN(CopyString);
11754                                         }
11755         YY_BREAK
11756 case 248:
11757 YY_RULE_SETUP
11758 #line 2510 "scanner.l"
11759 {
11760                                           *pCopyCurlyString+=*scanYYtext;
11761                                           if (insidePHP)
11762                                           {
11763                                             pCopyQuotedString=pCopyCurlyString;
11764                                             lastStringContext=YY_START;
11765                                             BEGIN(CopyPHPString);
11766                                           }
11767                                         }
11768         YY_BREAK
11769 case 249:
11770 YY_RULE_SETUP
11771 #line 2519 "scanner.l"
11772 {
11773                                           *pCopyCurlyString+=*scanYYtext;
11774                                           curlyCount++;
11775                                         }
11776         YY_BREAK
11777 case 250:
11778 YY_RULE_SETUP
11779 #line 2523 "scanner.l"
11780 {
11781                                           *pCopyCurlyString+=*scanYYtext;
11782                                           if (--curlyCount<0)
11783                                             BEGIN(lastCurlyContext); 
11784                                         }
11785         YY_BREAK
11786 case 251:
11787 YY_RULE_SETUP
11788 #line 2528 "scanner.l"
11789 { if (insidePHP) 
11790                                           { 
11791                                             REJECT; 
11792                                           } 
11793                                           else 
11794                                           {
11795                                             *pCopyCurlyString+=scanYYtext; 
11796                                           }
11797                                         }
11798         YY_BREAK
11799 case 252:
11800 YY_RULE_SETUP
11801 #line 2537 "scanner.l"
11802 {
11803                                           *pCopyCurlyString+=scanYYtext;
11804                                         }
11805         YY_BREAK
11806 case 253:
11807 YY_RULE_SETUP
11808 #line 2540 "scanner.l"
11809 { *pCopyCurlyString+=scanYYtext; }
11810         YY_BREAK
11811 case 254:
11812 /* rule 254 can match eol */
11813 YY_RULE_SETUP
11814 #line 2541 "scanner.l"
11815 {
11816                                           yyLineNr++;
11817                                           *pCopyCurlyString+=*scanYYtext;
11818                                         }
11819         YY_BREAK
11820 case 255:
11821 YY_RULE_SETUP
11822 #line 2545 "scanner.l"
11823 {
11824                                           *pCopyCurlyString+=*scanYYtext;
11825                                         }
11826         YY_BREAK
11827 /* generic curly bracket list copy rules for growable strings */
11828 case 256:
11829 /* rule 256 can match eol */
11830 YY_RULE_SETUP
11831 #line 2550 "scanner.l"
11832 { // start of included file marker
11833                                         }
11834         YY_BREAK
11835 case 257:
11836 /* rule 257 can match eol */
11837 YY_RULE_SETUP
11838 #line 2552 "scanner.l"
11839 { // end of included file marker
11840                                           QCString line = QCString(scanYYtext);
11841                                           int s = line.find(' ');
11842                                           int e = line.find('"',s);
11843                                           yyLineNr = line.mid(s,e-s).toInt();
11844                                           if (scanYYtext[scanYYleng-1]=='\n')
11845                                           {
11846                                             yyLineNr++;
11847                                           }
11848                                         }
11849         YY_BREAK
11850 case 258:
11851 YY_RULE_SETUP
11852 #line 2562 "scanner.l"
11853 {
11854                                           *pCopyCurlyGString+=*scanYYtext;
11855                                           pCopyQuotedGString=pCopyCurlyGString;
11856                                           lastStringContext=YY_START;
11857                                           BEGIN(CopyGString);
11858                                         }
11859         YY_BREAK
11860 case 259:
11861 YY_RULE_SETUP
11862 #line 2568 "scanner.l"
11863 {
11864                                           *pCopyCurlyGString+=*scanYYtext;
11865                                           if (insidePHP)
11866                                           {
11867                                             pCopyQuotedGString=pCopyCurlyGString;
11868                                             lastStringContext=YY_START;
11869                                             BEGIN(CopyPHPGString);
11870                                           }
11871                                         }
11872         YY_BREAK
11873 case 260:
11874 YY_RULE_SETUP
11875 #line 2577 "scanner.l"
11876 {
11877                                           *pCopyCurlyGString+=*scanYYtext;
11878                                           curlyCount++;
11879                                         }
11880         YY_BREAK
11881 case 261:
11882 YY_RULE_SETUP
11883 #line 2581 "scanner.l"
11884 {
11885                                           *pCopyCurlyGString+=*scanYYtext;
11886                                           if (--curlyCount<0)
11887                                             BEGIN(lastCurlyContext); 
11888                                         }
11889         YY_BREAK
11890 case 262:
11891 YY_RULE_SETUP
11892 #line 2586 "scanner.l"
11893 { if (insidePHP) 
11894                                           { 
11895                                             REJECT; 
11896                                           } 
11897                                           else 
11898                                           {
11899                                             *pCopyCurlyGString+=scanYYtext; 
11900                                           }
11901                                         }
11902         YY_BREAK
11903 case 263:
11904 YY_RULE_SETUP
11905 #line 2595 "scanner.l"
11906 {
11907                                           *pCopyCurlyGString+=scanYYtext;
11908                                         }
11909         YY_BREAK
11910 case 264:
11911 YY_RULE_SETUP
11912 #line 2598 "scanner.l"
11913 { *pCopyCurlyGString+=scanYYtext; }
11914         YY_BREAK
11915 case 265:
11916 /* rule 265 can match eol */
11917 YY_RULE_SETUP
11918 #line 2599 "scanner.l"
11919 {
11920                                           yyLineNr++;
11921                                           *pCopyCurlyGString+=*scanYYtext;
11922                                         }
11923         YY_BREAK
11924 case 266:
11925 YY_RULE_SETUP
11926 #line 2603 "scanner.l"
11927 {
11928                                           *pCopyCurlyGString+=*scanYYtext;
11929                                         }
11930         YY_BREAK
11931 /* ---------------------- */
11932 case 267:
11933 YY_RULE_SETUP
11934 #line 2610 "scanner.l"
11935 {
11936                                           if (current->type.isEmpty()) // anonymous padding field, e.g. "int :7;"
11937                                           {
11938                                             addType(current);
11939                                             current->name.sprintf("__pad%d__",padCount++);
11940                                           }
11941                                           BEGIN(BitFields);
11942                                           current->bitfields+=":";
11943                                         }
11944         YY_BREAK
11945 case 268:
11946 YY_RULE_SETUP
11947 #line 2619 "scanner.l"
11948 {
11949                                           current->bitfields+=*scanYYtext;
11950                                         }
11951         YY_BREAK
11952 case 269:
11953 YY_RULE_SETUP
11954 #line 2622 "scanner.l"
11955 { 
11956                                           QCString oldType = current->type.copy();
11957                                           if (current->bodyLine==-1)
11958                                           {
11959                                             current->bodyLine = yyLineNr;
11960                                           }
11961                                           if ( insidePHP && current->type.left(3) == "var" )
11962                                           {
11963                                             current->type = current->type.mid(3);
11964                                           }
11965                                           if (isTypedef && current->type.left(8)!="typedef ")
11966                                           {
11967                                             current->type.prepend("typedef ");
11968                                           }
11969                                           bool needNewCurrent=FALSE;
11970                                           if (!current->name.isEmpty() && current->section!=Entry::ENUM_SEC)
11971                                           {
11972                                             current->type=current->type.simplifyWhiteSpace();
11973                                             current->args=removeRedundantWhiteSpace(current->args);
11974                                             current->name=current->name.stripWhiteSpace();
11975                                             current->section = Entry::VARIABLE_SEC ;
11976                                             current->fileName = yyFileName;
11977                                             current->startLine = yyLineNr;
11978                                             current_root->addSubEntry( current ) ;
11979                                             needNewCurrent=TRUE;
11980                                           }
11981                                           if ( *scanYYtext == ',')
11982                                           {
11983                                             if (needNewCurrent)
11984                                             {
11985                                               current = new Entry(*current);
11986                                             }
11987                                             current->name.resize(0);
11988                                             current->args.resize(0);
11989                                             current->brief.resize(0);
11990                                             current->doc.resize(0);
11991                                             current->initializer.resize(0);
11992                                             current->bitfields.resize(0);
11993                                             int i=oldType.length(); 
11994                                             while (i>0 && (oldType[i-1]=='*' || oldType[i-1]=='&' || oldType[i-1]==' ')) i--;
11995                                             current->type = oldType.left(i);
11996                                           }
11997                                           else
11998                                           {
11999                                             if (needNewCurrent)
12000                                             {
12001                                               current = new Entry ;
12002                                             }
12003                                             else if (current->groups)
12004                                             {
12005                                               current->groups->clear();
12006                                             }
12007                                             initEntry();
12008                                           }
12009                                           BEGIN( FindMembers ) ;
12010                                         }
12011         YY_BREAK
12012 case 270:
12013 YY_RULE_SETUP
12014 #line 2679 "scanner.l"
12015 { 
12016                                           if (!insideCS &&  
12017                                               current->name.isEmpty() || 
12018                                               current->name=="typedef"
12019                                              ) // IDL function property
12020                                           {
12021                                             squareCount=1;
12022                                             lastSquareContext = YY_START;
12023                                             idlAttr.resize(0);
12024                                             idlProp.resize(0);
12025                                             current->mtype = mtype;
12026                                             BEGIN( IDLAttribute );
12027                                           }
12028                                           else if (insideCS &&
12029                                                   current->name.isEmpty())
12030                                           {
12031                                             squareCount=1;
12032                                             lastSquareContext = YY_START;
12033                                             // Skip the C# attribute
12034                                             // for this member
12035                                             current->args.resize(0);
12036                                             BEGIN( SkipSquare );
12037                                           }
12038                                           else
12039                                           {
12040                                             current->args += scanYYtext ;
12041                                             squareCount=1;
12042                                             BEGIN( Array ) ;
12043                                           }
12044                                         }
12045         YY_BREAK
12046 case 271:
12047 YY_RULE_SETUP
12048 #line 2709 "scanner.l"
12049 {
12050                                           // end of IDL function attribute
12051                                           if (--squareCount<=0)
12052                                           {
12053                                             lineCount();
12054                                             if (current->mtype == Property)
12055                                               BEGIN( IDLPropName );
12056                                             else
12057                                               BEGIN( lastSquareContext );
12058                                           }
12059                                         }
12060         YY_BREAK
12061 case 272:
12062 YY_RULE_SETUP
12063 #line 2720 "scanner.l"
12064 {
12065                                           current->mtype = Property;
12066                                           current->spec |= Entry::Settable;
12067                                         }
12068         YY_BREAK
12069 case 273:
12070 YY_RULE_SETUP
12071 #line 2724 "scanner.l"
12072 {
12073                                           current->mtype = Property;
12074                                           current->spec |= Entry::Gettable;
12075                                         }
12076         YY_BREAK
12077 case 274:
12078 YY_RULE_SETUP
12079 #line 2728 "scanner.l"
12080 {
12081                                         }
12082         YY_BREAK
12083 case 275:
12084 /* rule 275 can match eol */
12085 YY_RULE_SETUP
12086 #line 2730 "scanner.l"
12087 {
12088                                           // return type (probably HRESULT) - skip it
12089                                         }
12090         YY_BREAK
12091 case 276:
12092 /* rule 276 can match eol */
12093 YY_RULE_SETUP
12094 #line 2733 "scanner.l"
12095 {
12096                                           current->name = scanYYtext;
12097                                           current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
12098                                           current->startLine = yyLineNr;
12099                                           BEGIN( IDLProp );
12100                                         }
12101         YY_BREAK
12102 case 277:
12103 /* rule 277 can match eol */
12104 YY_RULE_SETUP
12105 #line 2739 "scanner.l"
12106 {  // attribute of a parameter
12107                                            idlAttr += scanYYtext;
12108                                         }
12109         YY_BREAK
12110 case 278:
12111 YY_RULE_SETUP
12112 #line 2742 "scanner.l"
12113 {  // property type
12114                                            idlProp = scanYYtext;
12115                                         }
12116         YY_BREAK
12117 case 279:
12118 /* rule 279 can match eol */
12119 YY_RULE_SETUP
12120 #line 2745 "scanner.l"
12121 {  // Rare: Another parameter ([propput] HRESULT Item(int index, [in] Type theRealProperty);)
12122                                           if (!current->args)
12123                                             current->args = "(";
12124                                           else
12125                                             current->args += ", ";
12126                                           current->args += idlAttr;
12127                                           current->args += " ";
12128                                           current->args += idlProp;     // prop was actually type of extra parameter
12129                                           current->args += " ";
12130                                           current->args += scanYYtext;
12131                                           current->args = current->args.left(current->args.length() - 1);       // strip comma
12132                                           idlProp.resize(0);
12133                                           idlAttr.resize(0);
12134                                           BEGIN( IDLProp );
12135                                         }
12136         YY_BREAK
12137 case 280:
12138 /* rule 280 can match eol */
12139 YY_RULE_SETUP
12140 #line 2760 "scanner.l"
12141 {
12142                                           // the parameter name for the property - just skip.
12143                                         }
12144         YY_BREAK
12145 case 281:
12146 YY_RULE_SETUP
12147 #line 2763 "scanner.l"
12148 {
12149                                           current->fileName   = yyFileName;
12150                                           current->type         = idlProp;
12151                                           current->args       = current->args.simplifyWhiteSpace();
12152                                           if (current->args)
12153                                             current->args += ")";
12154                                           current->name       = current->name.stripWhiteSpace();
12155                                           current->section    = Entry::VARIABLE_SEC;
12156                                           current_root->addSubEntry(current);
12157                                           current             = new Entry;
12158                                           initEntry();
12159                                           BEGIN( FindMembers );
12160                                         }
12161         YY_BREAK
12162 case 282:
12163 YY_RULE_SETUP
12164 #line 2776 "scanner.l"
12165 { // spaces, *, or other stuff
12166                                           idlProp+=scanYYtext;
12167                                         }
12168         YY_BREAK
12169 case 283:
12170 YY_RULE_SETUP
12171 #line 2779 "scanner.l"
12172 { current->args += *scanYYtext ;
12173                                           if (--squareCount<=0)
12174                                              BEGIN( FindMembers ) ;
12175                                         }
12176         YY_BREAK
12177 case 284:
12178 YY_RULE_SETUP
12179 #line 2783 "scanner.l"
12180 { current->args += *scanYYtext ;
12181                                           if (--squareCount<=0)
12182                                              BEGIN( Function ) ;
12183                                         }
12184         YY_BREAK
12185 case 285:
12186 YY_RULE_SETUP
12187 #line 2787 "scanner.l"
12188 { current->args += *scanYYtext ;
12189                                           squareCount++;        
12190                                         }
12191         YY_BREAK
12192 case 286:
12193 YY_RULE_SETUP
12194 #line 2790 "scanner.l"
12195 { current->args += *scanYYtext ; }
12196         YY_BREAK
12197 case 287:
12198 YY_RULE_SETUP
12199 #line 2791 "scanner.l"
12200 { squareCount++; }
12201         YY_BREAK
12202 case 288:
12203 YY_RULE_SETUP
12204 #line 2792 "scanner.l"
12205 {
12206                                           if (--squareCount<=0)
12207                                             BEGIN( lastSquareContext );
12208                                         }
12209         YY_BREAK
12210 case 289:
12211 YY_RULE_SETUP
12212 #line 2796 "scanner.l"
12213 {
12214                                           lastStringContext=YY_START;
12215                                           BEGIN( SkipString ); 
12216                                         }
12217         YY_BREAK
12218 case 290:
12219 YY_RULE_SETUP
12220 #line 2800 "scanner.l"
12221 
12222         YY_BREAK
12223 case 291:
12224 YY_RULE_SETUP
12225 #line 2801 "scanner.l"
12226 { addType( current ) ;
12227                                           current->type += scanYYtext ;
12228                                           BEGIN( Sharp ) ;
12229                                         }
12230         YY_BREAK
12231 case 292:
12232 YY_RULE_SETUP
12233 #line 2805 "scanner.l"
12234 { current->type += *scanYYtext ;
12235                                           if (--sharpCount<=0)
12236                                              BEGIN( FindMembers ) ;
12237                                         }
12238         YY_BREAK
12239 case 293:
12240 YY_RULE_SETUP
12241 #line 2809 "scanner.l"
12242 { current->type += *scanYYtext ;
12243                                           sharpCount++; 
12244                                         }
12245         YY_BREAK
12246 case 294:
12247 /* rule 294 can match eol */
12248 YY_RULE_SETUP
12249 #line 2812 "scanner.l"
12250 {
12251                                           lineCount();
12252                                         }
12253         YY_BREAK
12254 case 295:
12255 YY_RULE_SETUP
12256 #line 2815 "scanner.l"
12257 { current->type += *scanYYtext ; }
12258         YY_BREAK
12259 case 296:
12260 YY_RULE_SETUP
12261 #line 2816 "scanner.l"
12262 {
12263                                           current->bodyLine = yyLineNr;
12264                                           current->name     = scanYYtext;
12265                                         }
12266         YY_BREAK
12267 case 297:
12268 YY_RULE_SETUP
12269 #line 2820 "scanner.l"
12270 {
12271                                           // Java enum initializer
12272                                           unput('(');
12273                                           lastInitializerContext = YY_START;
12274                                           initBracketCount=0;
12275                                           BEGIN(ReadInitializer);
12276                                         }
12277         YY_BREAK
12278 case 298:
12279 YY_RULE_SETUP
12280 #line 2827 "scanner.l"
12281 {
12282                                           lastInitializerContext = YY_START;
12283                                           initBracketCount=0;
12284                                           BEGIN(ReadInitializer);
12285                                         }
12286         YY_BREAK
12287 case 299:
12288 YY_RULE_SETUP
12289 #line 2832 "scanner.l"
12290 {
12291                                           if (insideJava)  // last enum field in Java class
12292                                           {
12293                                             if (!current->name.isEmpty())
12294                                             {
12295                                               current->fileName   = yyFileName;
12296                                               current->startLine  = yyLineNr;
12297                                               current->type       = "@"; // enum marker
12298                                               current->args       = current->args.simplifyWhiteSpace();
12299                                               current->name       = current->name.stripWhiteSpace();
12300                                               current->section    = Entry::VARIABLE_SEC;
12301                                               current_root->addSubEntry(current);
12302                                               current             = new Entry ;
12303                                               initEntry();
12304                                             }
12305 
12306                                             // TODO: skip until the end of the scope
12307                                             BEGIN( SkipRemainder );
12308                                           }
12309                                           else
12310                                           {
12311                                             REJECT;
12312                                           }
12313                                         }
12314         YY_BREAK
12315 case 300:
12316 /* rule 300 can match eol */
12317 YY_RULE_SETUP
12318 #line 2856 "scanner.l"
12319 { 
12320                                           yyLineNr++;
12321                                         }
12322         YY_BREAK
12323 case 301:
12324 YY_RULE_SETUP
12325 #line 2859 "scanner.l"
12326 
12327         YY_BREAK
12328 case 302:
12329 YY_RULE_SETUP
12330 #line 2860 "scanner.l"
12331 {
12332                                           //printf("adding `%s' `%s' `%s' to enum `%s' (mGrpId=%d)\n",
12333                                           //     current->type.data(), current->name.data(),
12334                                           //     current->args.data(), current_root->name.data(),current->mGrpId);
12335                                           if (!current->name.isEmpty())
12336                                           {
12337                                             current->fileName   = yyFileName;
12338                                             current->startLine  = yyLineNr;
12339                                             current->type       = "@"; // enum marker
12340                                             current->args       = current->args.simplifyWhiteSpace();
12341                                             current->name       = current->name.stripWhiteSpace();
12342                                             current->section    = Entry::VARIABLE_SEC;
12343                                             // add to the scope of the enum
12344                                             current_root->addSubEntry(current);
12345                                             if (!insideCS && !insideJava) // for C# and Java 1.5+ enum values always have to be explicitly qualified
12346                                             {
12347                                               current             = new Entry(*current);
12348                                               // add to the scope surrounding the enum (copy!)
12349                                               current_root->parent()->addSubEntry(current);
12350                                             }
12351                                             current             = new Entry ;
12352                                             initEntry();
12353                                           }
12354                                           else // probably a redundant , 
12355                                           {
12356                                             current->reset();
12357                                           }
12358                                         }
12359         YY_BREAK
12360 case 303:
12361 YY_RULE_SETUP
12362 #line 2888 "scanner.l"
12363 { // attribute list in IDL
12364                                           squareCount=1;
12365                                           lastSquareContext = YY_START;
12366                                           BEGIN(SkipSquare);
12367                                         }
12368         YY_BREAK
12369 /*
12370 <FindFieldArg>","                       { unput(*scanYYtext); BEGIN(FindFields); }
12371   */
12372 case 304:
12373 YY_RULE_SETUP
12374 #line 2896 "scanner.l"
12375 { current->program += scanYYtext ; }
12376         YY_BREAK
12377 case 305:
12378 YY_RULE_SETUP
12379 #line 2897 "scanner.l"
12380 { current->program += scanYYtext ; }
12381         YY_BREAK
12382 case 306:
12383 YY_RULE_SETUP
12384 #line 2898 "scanner.l"
12385 { if (!insidePHP) 
12386                                             REJECT;
12387                                           // append PHP comment.
12388                                           current->program += scanYYtext ;
12389                                         }
12390         YY_BREAK
12391 case 307:
12392 YY_RULE_SETUP
12393 #line 2903 "scanner.l"
12394 { current->program += scanYYtext ; 
12395                                           pSkipVerbString = &current->program;
12396                                           lastSkipVerbStringContext=YY_START;
12397                                           BEGIN( SkipVerbString );
12398                                         }
12399         YY_BREAK
12400 case 308:
12401 YY_RULE_SETUP
12402 #line 2908 "scanner.l"
12403 { current->program += scanYYtext ; 
12404                                           pCopyQuotedGString = &current->program;
12405                                           lastStringContext=YY_START;
12406                                           BEGIN( CopyGString );
12407                                         }
12408         YY_BREAK
12409 case 309:
12410 YY_RULE_SETUP
12411 #line 2913 "scanner.l"
12412 { current->program += scanYYtext ;
12413                                           lastContext = YY_START ;
12414                                           BEGIN( Comment ) ;
12415                                         }
12416         YY_BREAK
12417 case 310:
12418 /* rule 310 can match eol */
12419 YY_RULE_SETUP
12420 #line 2917 "scanner.l"
12421 { current->program += scanYYtext ;
12422                                           ++yyLineNr ;
12423                                           lastContext = YY_START ;
12424                                           BEGIN( Comment ) ;
12425                                         }
12426         YY_BREAK
12427 case 311:
12428 YY_RULE_SETUP
12429 #line 2922 "scanner.l"
12430 {
12431                                           if (!insidePHP)
12432                                           {
12433                                             current->program += scanYYtext;
12434                                           }
12435                                           else
12436                                           { // begin of single quoted string
12437                                             current->program += scanYYtext;
12438                                             pCopyQuotedGString = &current->program;
12439                                             lastStringContext=YY_START;
12440                                             BEGIN(CopyPHPGString);
12441                                           }
12442                                         }
12443         YY_BREAK
12444 case 312:
12445 YY_RULE_SETUP
12446 #line 2935 "scanner.l"
12447 { 
12448                                               if (insidePHP) 
12449                                               {
12450                                                 REJECT; // for PHP code single quotes 
12451                                                         // are used for strings of arbitrary length
12452                                               }
12453                                               else
12454                                               {
12455                                                 current->program += scanYYtext; 
12456                                               }
12457                                             }
12458         YY_BREAK
12459 case 313:
12460 YY_RULE_SETUP
12461 #line 2946 "scanner.l"
12462 { current->program += scanYYtext ;
12463                                           ++curlyCount ;
12464                                         }
12465         YY_BREAK
12466 case 314:
12467 YY_RULE_SETUP
12468 #line 2949 "scanner.l"
12469 {
12470                                           current->program += scanYYtext ;
12471                                           --curlyCount ;
12472                                         }
12473         YY_BREAK
12474 case 315:
12475 YY_RULE_SETUP
12476 #line 2953 "scanner.l"
12477 { //err("ReadBody count=%d\n",curlyCount);
12478                                           if ( curlyCount>0 )
12479                                           {
12480                                             current->program += scanYYtext ;
12481                                             --curlyCount ;
12482                                           }
12483                                           else
12484                                           {
12485                                             current->endBodyLine = yyLineNr;
12486                                             QCString &cn = current->name;
12487                                             QCString rn = current_root->name.copy();
12488                                             //printf("cn=`%s' rn=`%s'\n",cn.data(),rn.data());
12489                                             if (!cn.isEmpty() && !rn.isEmpty())
12490                                             {
12491                                               prependScope();
12492                                             }
12493                                             if (isTypedef && cn.isEmpty())
12494                                             {
12495                                               //printf("Typedef Name\n");
12496                                               BEGIN( TypedefName );
12497                                             }
12498                                             else
12499                                             {
12500                                               if (current->section == Entry::ENUM_SEC)
12501                                               {
12502                                                 current->program+=','; // add field terminator
12503                                               }
12504                                               // add compound definition to the tree
12505                                               current->args=removeRedundantWhiteSpace(current->args);
12506                                                         // was: current->args.simplifyWhiteSpace();
12507                                               current->type = current->type.simplifyWhiteSpace();
12508                                               current->name = current->name.stripWhiteSpace();
12509                                               //printf("adding `%s' `%s' `%s' brief=%s insideObjC=%d %x\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data(),insideObjC,current->section);
12510                                               if (insideObjC && 
12511                                                   ((current->spec&Entry::Interface) || (current->spec==Entry::Category))
12512                                                  ) // method definition follows
12513                                               {
12514                                                 BEGIN( ReadBodyIntf ) ;
12515                                               }
12516                                               else
12517                                               {
12518                                                 current_root->addSubEntry( current ) ;
12519                                                 memspecEntry = current;
12520                                                 current = new Entry(*current);
12521                                                 if (current->section==Entry::NAMESPACE_SEC || 
12522                                                     (current->spec==Entry::Interface) ||
12523                                                     insideJava || insidePHP || insideCS || insideD || insideJS
12524                                                    )
12525                                                 { // namespaces and interfaces and java classes ends with a closing bracket without semicolon
12526                                                   current->reset();
12527                                                   initEntry();
12528                                                   memspecEntry = 0;
12529                                                   BEGIN( FindMembers ) ;
12530                                                 }
12531                                                 else
12532                                                 {
12533                                                   current->doc.resize(0);
12534                                                   current->brief.resize(0);
12535                                                   BEGIN( MemberSpec ) ;
12536                                                 }
12537                                               }
12538                                             }
12539                                           }
12540                                         }
12541         YY_BREAK
12542 case 316:
12543 /* rule 316 can match eol */
12544 YY_RULE_SETUP
12545 #line 3017 "scanner.l"
12546 { //err("ReadBody count=%d\n",curlyCount);
12547                                           lineCount();
12548                                           if ( curlyCount>0 )
12549                                           {
12550                                             current->program += scanYYtext ;
12551                                             --curlyCount ;
12552                                           }
12553                                           else
12554                                           {
12555                                             isTypedef = TRUE;
12556                                             current->endBodyLine = yyLineNr;
12557                                             QCString &cn = current->name;
12558                                             QCString rn = current_root->name.copy();
12559                                             if (!cn.isEmpty() && !rn.isEmpty())
12560                                             {
12561                                               prependScope();
12562                                             }
12563                                             BEGIN( TypedefName );
12564                                           }
12565                                         }
12566         YY_BREAK
12567 case 317:
12568 /* rule 317 can match eol */
12569 YY_RULE_SETUP
12570 #line 3037 "scanner.l"
12571 { // late "const" or "volatile" keyword
12572                                           lineCount();
12573                                           current->type.prepend(scanYYtext);
12574                                         }
12575         YY_BREAK
12576 case 318:
12577 YY_RULE_SETUP
12578 #line 3041 "scanner.l"
12579 {
12580                                           if (current->section == Entry::ENUM_SEC)
12581                                           {
12582                                             current->program+=","; // add field terminator
12583                                           }
12584                                           current->name=scanYYtext;
12585                                           prependScope();
12586                                           current->args = current->args.simplifyWhiteSpace();
12587                                           current->type = current->type.simplifyWhiteSpace();
12588                                           //printf("Adding compound %s %s %s\n",current->type.data(),current->name.data(),current->args.data());
12589                                           current_root->addSubEntry( current ) ;
12590                                           if (!firstTypedefEntry)
12591                                           {
12592                                             firstTypedefEntry = current;
12593                                           }
12594                                           current = new Entry;
12595                                           initEntry();
12596                                           isTypedef=TRUE; // to undo reset by initEntry()
12597                                           BEGIN(MemberSpecSkip); 
12598                                         }
12599         YY_BREAK
12600 case 319:
12601 YY_RULE_SETUP
12602 #line 3061 "scanner.l"
12603 { /* typedef of anonymous type */
12604                                           current->name.sprintf("@%d",anonCount++);
12605                                           if (current->section == Entry::ENUM_SEC)
12606                                           {
12607                                             current->program+=','; // add field terminator
12608                                           }
12609                                           // add compound definition to the tree
12610                                           current->args = current->args.simplifyWhiteSpace();
12611                                           current->type = current->type.simplifyWhiteSpace();
12612                                           current_root->addSubEntry( current ) ;
12613                                           memspecEntry = current;
12614                                           current = new Entry(*current);
12615                                           unput(';');
12616                                           BEGIN( MemberSpec ) ;
12617                                         }
12618         YY_BREAK
12619 case 320:
12620 /* rule 320 can match eol */
12621 YY_RULE_SETUP
12622 #line 3076 "scanner.l"
12623 { // the [] part could be improved.
12624                                           lineCount();
12625                                           int i=0,l=scanYYleng,j;
12626                                           while (i<l && (!isId(scanYYtext[i]))) i++;
12627                                           msName = QCString(scanYYtext).right(l-i).stripWhiteSpace();
12628                                           j=msName.find("[");
12629                                           if (j!=-1) 
12630                                           {
12631                                             msArgs=msName.right(msName.length()-j);
12632                                             msName=msName.left(j);
12633                                           }
12634                                           msType=QCString(scanYYtext).left(i);
12635 
12636                                           // handle *pName in: typedef { ... } name, *pName;
12637                                           if (firstTypedefEntry) 
12638                                           {
12639                                             if (firstTypedefEntry->spec&Entry::Struct)
12640                                             {
12641                                               msType.prepend("struct "+firstTypedefEntry->name);
12642                                             }
12643                                             else if (firstTypedefEntry->spec&Entry::Union)
12644                                             {
12645                                               msType.prepend("union "+firstTypedefEntry->name);
12646                                             }
12647                                             else if (firstTypedefEntry->section==Entry::ENUM_SEC)
12648                                             {
12649                                               msType.prepend("enum "+firstTypedefEntry->name);
12650                                             }
12651                                             else
12652                                             {
12653                                               msType.prepend(firstTypedefEntry->name);
12654                                             }
12655                                           }
12656                                         }
12657         YY_BREAK
12658 case 321:
12659 YY_RULE_SETUP
12660 #line 3110 "scanner.l"
12661 {
12662                                           //printf("current->name=`%s' msName=`%s'\n",current->name.data(),msName.data());
12663                                           if (msName.isEmpty() && !current->name.isEmpty())
12664                                           { 
12665                                             // see if the compound does not have a name or is inside another
12666                                             // annonymous compound. If so we insert a 
12667                                             // special `annonymous' variable.
12668                                             //Entry *p=current_root;
12669                                             Entry *p=current;
12670                                             while (p)
12671                                             {
12672                                               // only look for class scopes, not namespace scopes
12673                                               if ((p->section & Entry::COMPOUND_MASK) && !p->name.isEmpty())
12674                                               {
12675                                                 //printf("Trying scope `%s'\n",p->name.data());
12676                                                 int i=p->name.findRev("::");
12677                                                 int pi = (i==-1) ? 0 : i+2;
12678                                                 if (p->name.at(pi)=='@')
12679                                                 {
12680                                                   // annonymous compound inside -> insert dummy variable name
12681                                                   //printf("Adding annonymous variable for scope %s\n",p->name.data());
12682                                                   msName.sprintf("@%d",anonCount++); 
12683                                                   break;
12684                                                 }
12685                                               }
12686                                               //p=p->parent;
12687                                               if (p==current) p=current_root; else p=p->parent();
12688                                             }
12689                                           }
12690                                           //printf("msName=%s current->name=%s\n",msName.data(),current->name.data());
12691                                           if (!msName.isEmpty() && msName!=current->name) // skip typedef T {} T;
12692                                           {
12693                                             static bool typedefHidesStruct = Config_getBool("TYPEDEF_HIDES_STRUCT");
12694                                             // case 1: typedef struct _S { ... } S_t; 
12695                                             // -> omit typedef and use S_t as the struct name
12696                                             if (typedefHidesStruct && 
12697                                                 isTypedef && 
12698                                                 ((current->spec&(Entry::Struct|Entry::Union)) ||
12699                                                  current->section==Entry::ENUM_SEC )&&
12700                                                 msType.stripWhiteSpace().isEmpty() && 
12701                                                 memspecEntry)
12702                                             {
12703                                               memspecEntry->name=msName;
12704                                             }
12705                                             else // case 2: create a typedef field
12706                                             {
12707                                               Entry *varEntry=new Entry;
12708                                               varEntry->protection = current->protection ;
12709                                               varEntry->mtype = current->mtype;
12710                                               varEntry->virt = current->virt;
12711                                               varEntry->stat = current->stat;
12712                                               varEntry->section = Entry::VARIABLE_SEC;
12713                                               varEntry->name = msName.stripWhiteSpace();
12714                                               varEntry->type = current->type.simplifyWhiteSpace()+" ";
12715                                               varEntry->args = msArgs; 
12716                                               if (isTypedef)
12717                                               {
12718                                                 varEntry->type.prepend("typedef ");
12719                                                 //  //printf("current->name = %s %s\n",current->name.data(),msName.data());
12720                                               }
12721                                               if (typedefHidesStruct &&
12722                                                   isTypedef &&
12723                                                   (current->spec&(Entry::Struct|Entry::Union)) &&
12724                                                   memspecEntry
12725                                                  ) // case 1: use S_t as type for pS_t in "typedef struct _S {} S_t, *pS_t;"
12726                                               {
12727                                                 varEntry->type+=memspecEntry->name+msType;
12728                                               }
12729                                               else // case 2: use _S as type for for pS_t
12730                                               {
12731                                                 varEntry->type+=current->name+msType;
12732                                               }
12733                                               varEntry->fileName = yyFileName;
12734                                               varEntry->startLine = yyLineNr;
12735                                               varEntry->doc = current->doc.copy();
12736                                               varEntry->brief = current->brief.copy();
12737                                               varEntry->mGrpId = current->mGrpId;
12738 
12739                                               // deep copy group list
12740                                               QListIterator<Grouping> gli(*current->groups);
12741                                               Grouping *g;
12742                                               for (;(g=gli.current());++gli)
12743                                               {
12744                                                 varEntry->groups->append(new Grouping(*g));
12745                                               }
12746                                               if (current->sli) // copy special list items
12747                                               {
12748                                                 QListIterator<ListItemInfo> li(*current->sli);
12749                                                 ListItemInfo *lii;
12750                                                 for (li.toFirst();(lii=li.current());++li)
12751                                                 {
12752                                                   varEntry->addSpecialListItem(lii->type,lii->itemId);
12753                                                 }
12754                                               }
12755 
12756                                               //printf("Add: type=`%s',name=`%s',args=`%s' brief=%s doc=%s\n",
12757                                               //      varEntry->type.data(),varEntry->name.data(),
12758                                               //      varEntry->args.data(),varEntry->brief.data(),varEntry->doc.data());
12759                                               current_root->addSubEntry(varEntry);
12760                                             }
12761                                           }
12762                                           if (*scanYYtext==';')
12763                                           {
12764                                             msType.resize(0);
12765                                             msName.resize(0);
12766                                             msArgs.resize(0);
12767                                             isTypedef=FALSE;
12768                                             firstTypedefEntry=0;
12769                                             memspecEntry=0;
12770                                             current->reset();
12771                                             initEntry();
12772                                             BEGIN( FindMembers );
12773                                           }
12774                                           else
12775                                           {
12776                                             current->doc.resize(0);
12777                                             current->brief.resize(0);
12778                                           }
12779                                         }
12780         YY_BREAK
12781 case 322:
12782 YY_RULE_SETUP
12783 #line 3229 "scanner.l"
12784 { 
12785                                           lastInitializerContext=YY_START;
12786                                           initBracketCount=0;
12787                                           BEGIN(ReadInitializer);
12788                                           /* BEGIN(MemberSpecSkip); */
12789                                         }
12790         YY_BREAK
12791 /*
12792 <MemberSpecSkip>"{"                     {
12793                                           curlyCount=0;
12794                                           lastCurlyContext = MemberSpecSkip;
12795                                           previous = current;
12796                                           BEGIN(SkipCurly);
12797                                         }
12798   */
12799 case 323:
12800 YY_RULE_SETUP
12801 #line 3243 "scanner.l"
12802 { BEGIN(MemberSpec); }
12803         YY_BREAK
12804 case 324:
12805 YY_RULE_SETUP
12806 #line 3244 "scanner.l"
12807 { unput(';'); BEGIN(MemberSpec); }
12808         YY_BREAK
12809 case 325:
12810 /* rule 325 can match eol */
12811 YY_RULE_SETUP
12812 #line 3245 "scanner.l"
12813 { current->program += scanYYtext ;
12814                                           lineCount() ;
12815                                         }
12816         YY_BREAK
12817 case 326:
12818 /* rule 326 can match eol */
12819 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
12820 (yy_c_buf_p) = yy_cp = yy_bp + 4;
12821 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
12822 YY_RULE_SETUP
12823 #line 3248 "scanner.l"
12824 { // end of Objective C block
12825                                           current_root->addSubEntry( current ) ;
12826                                           current=new Entry;
12827                                           initEntry();
12828                                           insideObjC=FALSE;
12829                                           BEGIN( FindMembers ); 
12830                                         }
12831         YY_BREAK
12832 case 327:
12833 YY_RULE_SETUP
12834 #line 3255 "scanner.l"
12835 { current->program += scanYYtext ; }
12836         YY_BREAK
12837 case 328:
12838 /* rule 328 can match eol */
12839 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
12840 (yy_c_buf_p) = yy_cp = yy_bp + 1;
12841 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
12842 #line 3258 "scanner.l"
12843 case 329:
12844 /* rule 329 can match eol */
12845 YY_RULE_SETUP
12846 #line 3258 "scanner.l"
12847 {   /* typedef void (A::*ptr_t)(args...) or int (*func(int))[] */
12848                                           if (insidePHP) // reference parameter
12849                                           {
12850                                             REJECT
12851                                           }
12852                                           else
12853                                           {
12854                                             current->bodyLine = yyLineNr;
12855                                             lineCount();
12856                                             addType(current);
12857                                             funcPtrType=scanYYtext;
12858                                             roundCount=0;
12859                                             //current->type += scanYYtext;
12860                                             BEGIN( FuncPtr );
12861                                           }
12862                                         }
12863         YY_BREAK
12864 case 330:
12865 /* rule 330 can match eol */
12866 YY_RULE_SETUP
12867 #line 3274 "scanner.l"
12868 {
12869                                           current->name = scanYYtext;
12870                                           if (nameIsOperator(current->name))
12871                                           {
12872                                             BEGIN( FuncPtrOperator );
12873                                           }
12874                                           else
12875                                           {
12876                                             if (current->name=="const" || current->name=="volatile")
12877                                             {
12878                                               funcPtrType += current->name;
12879                                             }
12880                                             else
12881                                             {
12882                                               BEGIN( EndFuncPtr );
12883                                             }
12884                                           }
12885                                         }
12886         YY_BREAK
12887 case 331:
12888 YY_RULE_SETUP
12889 #line 3292 "scanner.l"
12890 {
12891                                           //printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*scanYYtext,yyLineNr,yyFileName);
12892                                         }
12893         YY_BREAK
12894 case 332:
12895 /* rule 332 can match eol */
12896 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
12897 (yy_c_buf_p) = yy_cp -= 1;
12898 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
12899 YY_RULE_SETUP
12900 #line 3295 "scanner.l"
12901 {
12902                                           current->name += scanYYtext;
12903                                           current->name = current->name.simplifyWhiteSpace();
12904                                           lineCount();
12905                                         }
12906         YY_BREAK
12907 case 333:
12908 /* rule 333 can match eol */
12909 YY_RULE_SETUP
12910 #line 3300 "scanner.l"
12911 {
12912                                           yyLineNr++;
12913                                           current->name += *scanYYtext;
12914                                         }
12915         YY_BREAK
12916 case 334:
12917 YY_RULE_SETUP
12918 #line 3304 "scanner.l"
12919 {
12920                                           unput(*scanYYtext);
12921                                           BEGIN( EndFuncPtr );
12922                                         }
12923         YY_BREAK
12924 case 335:
12925 YY_RULE_SETUP
12926 #line 3308 "scanner.l"
12927 {
12928                                           current->name += *scanYYtext;
12929                                         }
12930         YY_BREAK
12931 case 336:
12932 /* rule 336 can match eol */
12933 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
12934 (yy_c_buf_p) = yy_cp -= 1;
12935 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
12936 YY_RULE_SETUP
12937 #line 3311 "scanner.l"
12938 { // a variable with extra braces
12939                                           lineCount();
12940                                           current->type+=funcPtrType.data()+1;
12941                                           BEGIN(FindMembers);
12942                                         }
12943         YY_BREAK
12944 case 337:
12945 /* rule 337 can match eol */
12946 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
12947 (yy_c_buf_p) = yy_cp -= 1;
12948 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
12949 YY_RULE_SETUP
12950 #line 3316 "scanner.l"
12951 { // a function pointer
12952                                           lineCount();
12953                                           current->type+=funcPtrType+")";
12954                                           BEGIN(FindMembers);
12955                                         }
12956         YY_BREAK
12957 case 338:
12958 /* rule 338 can match eol */
12959 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
12960 (yy_c_buf_p) = yy_cp -= 1;
12961 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
12962 YY_RULE_SETUP
12963 #line 3321 "scanner.l"
12964 { // an array of variables
12965                                           lineCount();
12966                                           current->type+=funcPtrType.data();
12967                                           current->args += ")";
12968                                           BEGIN(FindMembers);
12969                                         }
12970         YY_BREAK
12971 case 339:
12972 YY_RULE_SETUP
12973 #line 3327 "scanner.l"
12974 { // a function returning a function or 
12975                                           // a function returning a pointer to an array
12976                                           current->args += *scanYYtext ;
12977                                           //roundCount=0;
12978                                           //BEGIN( FuncFunc );
12979                                           current->bodyLine = yyLineNr;
12980                                           currentArgumentContext = FuncFuncEnd;
12981                                           fullArgString=current->args.copy();
12982                                           copyArgString=&current->args;
12983                                           BEGIN( ReadFuncArgType ) ;
12984                                         }
12985         YY_BREAK
12986 case 340:
12987 YY_RULE_SETUP
12988 #line 3338 "scanner.l"
12989 {
12990                                           funcPtrType+=scanYYtext;
12991                                         }
12992         YY_BREAK
12993 case 341:
12994 YY_RULE_SETUP
12995 #line 3341 "scanner.l"
12996 {
12997                                           BEGIN(FindMembers);
12998                                         }
12999         YY_BREAK
13000 case 342:
13001 YY_RULE_SETUP
13002 #line 3344 "scanner.l"
13003 {
13004                                           current->args += *scanYYtext ;
13005                                           ++roundCount;
13006                                         }
13007         YY_BREAK
13008 case 343:
13009 YY_RULE_SETUP
13010 #line 3348 "scanner.l"
13011 {
13012                                           current->args += *scanYYtext ;
13013                                           if ( roundCount )
13014                                             --roundCount;
13015                                           else
13016                                           {
13017                                             BEGIN(FuncFuncEnd);
13018                                           }
13019                                         }
13020         YY_BREAK
13021 case 344:
13022 /* rule 344 can match eol */
13023 YY_RULE_SETUP
13024 #line 3357 "scanner.l"
13025 {
13026                                           lineCount();
13027                                           current->type+=funcPtrType+")(";
13028                                           BEGIN(FuncFuncType);
13029                                         }
13030         YY_BREAK
13031 case 345:
13032 /* rule 345 can match eol */
13033 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
13034 (yy_c_buf_p) = yy_cp -= 1;
13035 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
13036 YY_RULE_SETUP
13037 #line 3362 "scanner.l"
13038 {
13039                                           lineCount();
13040                                           current->type+=funcPtrType.data()+1;
13041                                           BEGIN(Function);
13042                                         }
13043         YY_BREAK
13044 case 346:
13045 /* rule 346 can match eol */
13046 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
13047 (yy_c_buf_p) = yy_cp -= 1;
13048 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
13049 YY_RULE_SETUP
13050 #line 3367 "scanner.l"
13051 { // function returning a pointer to an array
13052                                           lineCount();
13053                                           current->type+=funcPtrType;
13054                                           current->args+=")";
13055                                           BEGIN(FuncFuncArray);
13056                                         }
13057         YY_BREAK
13058 case 347:
13059 YY_RULE_SETUP
13060 #line 3373 "scanner.l"
13061 {
13062                                           current->args += *scanYYtext;
13063                                         }
13064         YY_BREAK
13065 case 348:
13066 YY_RULE_SETUP
13067 #line 3376 "scanner.l"
13068 {
13069                                           current->type += *scanYYtext;
13070                                           roundCount++;
13071                                         }
13072         YY_BREAK
13073 case 349:
13074 YY_RULE_SETUP
13075 #line 3380 "scanner.l"
13076 {
13077                                           current->type += *scanYYtext;
13078                                           if (roundCount)
13079                                             --roundCount;
13080                                           else
13081                                             BEGIN(Function);
13082                                         }
13083         YY_BREAK
13084 case 350:
13085 /* rule 350 can match eol */
13086 YY_RULE_SETUP
13087 #line 3387 "scanner.l"
13088 { lineCount() ; current->type += ", " ; }
13089         YY_BREAK
13090 case 351:
13091 /* rule 351 can match eol */
13092 YY_RULE_SETUP
13093 #line 3388 "scanner.l"
13094 { lineCount() ; current->type += ' ' ; }
13095         YY_BREAK
13096 case 352:
13097 YY_RULE_SETUP
13098 #line 3389 "scanner.l"
13099 {
13100                                           current->type += *scanYYtext;
13101                                         }
13102         YY_BREAK
13103 case 353:
13104 /* rule 353 can match eol */
13105 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
13106 (yy_c_buf_p) = yy_cp = yy_bp + 1;
13107 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
13108 YY_RULE_SETUP
13109 #line 3392 "scanner.l"
13110 { // for catching typedef void (__stdcall *f)() like definitions
13111                                           if (current->type.left(7)=="typedef" && current->bodyLine==-1) 
13112                                             // the bodyLine check is to prevent this guard to be true more than once
13113                                           {
13114                                             current->bodyLine = yyLineNr;
13115                                             BEGIN( GetCallType );
13116                                           }
13117                                           else if (!current->name.isEmpty()) // normal function
13118                                           {
13119                                             current->args = scanYYtext;
13120                                             current->bodyLine = yyLineNr;
13121                                             currentArgumentContext = FuncQual;
13122                                             fullArgString=current->args.copy();
13123                                             copyArgString=&current->args;
13124                                             BEGIN( ReadFuncArgType ) ;
13125                                             //printf(">>> Read function arguments!\n");
13126                                           }
13127                                         }
13128         YY_BREAK
13129 case 354:
13130 /* rule 354 can match eol */
13131 YY_RULE_SETUP
13132 #line 3410 "scanner.l"
13133 {
13134                                           lineCount();
13135                                           addType(current);
13136                                           funcPtrType="(";
13137                                           funcPtrType+=scanYYtext;
13138                                           roundCount=0;
13139                                           BEGIN( FuncPtr );
13140                                         }
13141         YY_BREAK
13142 case 355:
13143 YY_RULE_SETUP
13144 #line 3418 "scanner.l"
13145 { 
13146                                           if (!current->name.isEmpty())
13147                                           {
13148                                             current->args = scanYYtext;
13149                                             current->bodyLine = yyLineNr;
13150                                             currentArgumentContext = FuncQual;
13151                                             fullArgString=current->args.copy();
13152                                             copyArgString=&current->args;
13153                                             BEGIN( ReadFuncArgType ) ;
13154                                             //printf(">>> Read function arguments current->argList->count()=%d\n",current->argList->count());
13155                                           }
13156                                         }
13157         YY_BREAK
13158 /*
13159 <FindMembers>"("{BN}*("void"{BN}*)?")"  {
13160                                           lineCount();
13161                                           current->args = "()"; 
13162                                           BEGIN( FuncQual );
13163                                         }
13164   */
13165 /*- Function argument reading rules ---------------------------------------*/
13166 case 356:
13167 YY_RULE_SETUP
13168 #line 3440 "scanner.l"
13169 { *copyArgString+=scanYYtext; 
13170                                           fullArgString+=scanYYtext;
13171                                         }
13172         YY_BREAK
13173 case 357:
13174 YY_RULE_SETUP
13175 #line 3443 "scanner.l"
13176 { *copyArgString+=scanYYtext; 
13177                                           fullArgString+=scanYYtext;
13178                                         }
13179         YY_BREAK
13180 case 358:
13181 YY_RULE_SETUP
13182 #line 3446 "scanner.l"
13183 { 
13184                                           *copyArgString+=scanYYtext; 
13185                                           fullArgString+=scanYYtext;
13186                                         }
13187         YY_BREAK
13188 case 359:
13189 /* rule 359 can match eol */
13190 YY_RULE_SETUP
13191 #line 3450 "scanner.l"
13192 {
13193                                           *copyArgString+=" ";
13194                                           fullArgString+=" ";
13195                                           lineCount();
13196                                         }
13197         YY_BREAK
13198 case 360:
13199 YY_RULE_SETUP
13200 #line 3455 "scanner.l"
13201 {
13202                                           *copyArgString+=*scanYYtext;
13203                                           fullArgString+=*scanYYtext;
13204                                           lastCopyArgStringContext = YY_START;
13205                                           BEGIN( CopyArgString );
13206                                         }
13207         YY_BREAK
13208 case 361:
13209 YY_RULE_SETUP
13210 #line 3461 "scanner.l"
13211 {
13212                                           *copyArgString+=*scanYYtext;
13213                                           fullArgString+=*scanYYtext;
13214                                           argRoundCount=0; 
13215                                           lastCopyArgContext = YY_START;
13216                                           BEGIN( CopyArgRound ); 
13217                                         }
13218         YY_BREAK
13219 case 362:
13220 YY_RULE_SETUP
13221 #line 3468 "scanner.l"
13222 { 
13223                                           *copyArgString+=*scanYYtext;
13224                                           fullArgString+=*scanYYtext;
13225                                           stringToArgumentList(fullArgString,current->argList);
13226                                           if (insideJS)
13227                                           {
13228                                             fixArgumentListForJavaScript(current->argList);
13229                                           }
13230                                           handleParametersCommentBlocks(current->argList);
13231 
13232                                           /* remember the current documentation block, since
13233                                              we could overwrite it with the documentation of
13234                                              a function argument, which we then have to correct later
13235                                              on
13236                                            */
13237                                           docBackup = current->doc;
13238                                           briefBackup = current->brief;
13239 
13240                                           BEGIN( currentArgumentContext );
13241                                         }
13242         YY_BREAK
13243 /* a special comment */
13244 case 363:
13245 YY_RULE_SETUP
13246 #line 3489 "scanner.l"
13247 { 
13248                                           if (currentArgumentContext==DefineEnd)
13249                                           {
13250                                             // for defines we interpret a comment
13251                                             // as documentation for the define 
13252                                             int i;for (i=scanYYleng-1;i>=0;i--)
13253                                             {
13254                                               unput(scanYYtext[i]);
13255                                             }
13256                                             stringToArgumentList(fullArgString,current->argList);
13257                                             handleParametersCommentBlocks(current->argList);
13258                                             BEGIN( currentArgumentContext );
13259                                           }
13260                                           else // not a define
13261                                           {
13262                                             // for functions we interpret a comment
13263                                             // as documentation for the argument
13264                                             fullArgString+=scanYYtext;
13265                                             lastCopyArgChar=0;
13266                                             lastCommentInArgContext=YY_START;
13267                                             if (scanYYtext[1]=='/')
13268                                               BEGIN( CopyArgCommentLine );
13269                                             else
13270                                               BEGIN( CopyArgComment );
13271                                           }
13272                                         }
13273         YY_BREAK
13274 /* a non-special comment */
13275 case 364:
13276 YY_RULE_SETUP
13277 #line 3516 "scanner.l"
13278 {
13279                                           lastCContext = YY_START;
13280                                           BEGIN( SkipComment );
13281                                         }
13282         YY_BREAK
13283 case 365:
13284 YY_RULE_SETUP
13285 #line 3520 "scanner.l"
13286 {
13287                                           lastCContext = YY_START;
13288                                           BEGIN( SkipCxxComment );
13289                                         }
13290         YY_BREAK
13291 /*
13292 <ReadFuncArgType,ReadTempArgs>"'#"      { if (insidePHP)
13293                                             REJECT;
13294                                           *copyArgString+=scanYYtext; 
13295                                           fullArgString+=scanYYtext; 
13296                                         }
13297 <ReadFuncArgType,ReadTempArgs>"#"       {
13298                                           if (!insidePHP)
13299                                             REJECT;
13300                                           lastCContext = YY_START;
13301                                           BEGIN( SkipCxxComment );
13302                                         }
13303   */
13304 /* `)' followed by a special comment */
13305 case 366:
13306 /* rule 366 can match eol */
13307 YY_RULE_SETUP
13308 #line 3538 "scanner.l"
13309 {
13310                                           lineCount();
13311                                           if (currentArgumentContext==DefineEnd)
13312                                           {
13313                                             // for defines we interpret a comment
13314                                             // as documentation for the define 
13315                                             int i;for (i=scanYYleng-1;i>0;i--)
13316                                             {
13317                                               unput(scanYYtext[i]);
13318                                             }
13319                                             *copyArgString+=*scanYYtext;
13320                                             fullArgString+=*scanYYtext;
13321                                             stringToArgumentList(fullArgString,current->argList);
13322                                             handleParametersCommentBlocks(current->argList);
13323                                             BEGIN( currentArgumentContext );
13324                                           }
13325                                           else
13326                                           {
13327                                             // for functions we interpret a comment
13328                                             // as documentation for the last argument
13329                                             lastCopyArgChar=*scanYYtext;
13330                                             QCString text=&scanYYtext[1];
13331                                             text=text.stripWhiteSpace();
13332                                             lastCommentInArgContext=YY_START;
13333                                             fullArgString+=text;
13334                                             if (text.find("//")!=-1)
13335                                               BEGIN( CopyArgCommentLine );
13336                                             else
13337                                               BEGIN( CopyArgComment );
13338                                           }
13339                                         }
13340         YY_BREAK
13341 case 367:
13342 /* rule 367 can match eol */
13343 YY_RULE_SETUP
13344 #line 3569 "scanner.l"
13345 
13346         YY_BREAK
13347 case 368:
13348 YY_RULE_SETUP
13349 #line 3570 "scanner.l"
13350 { fullArgString+=scanYYtext; }
13351         YY_BREAK
13352 case 369:
13353 YY_RULE_SETUP
13354 #line 3571 "scanner.l"
13355 { fullArgString+=scanYYtext; 
13356                                           if (lastCopyArgChar!=0)
13357                                             unput(lastCopyArgChar); 
13358                                           BEGIN( lastCommentInArgContext ); 
13359                                         }
13360         YY_BREAK
13361 case 370:
13362 /* rule 370 can match eol */
13363 YY_RULE_SETUP
13364 #line 3576 "scanner.l"
13365 { fullArgString+=scanYYtext;
13366                                           yyLineNr++;
13367                                           if (lastCopyArgChar!=0)
13368                                             unput(lastCopyArgChar);
13369                                           BEGIN( lastCommentInArgContext );
13370                                         }
13371         YY_BREAK
13372 case 371:
13373 /* rule 371 can match eol */
13374 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
13375 (yy_c_buf_p) = yy_cp -= 1;
13376 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
13377 YY_RULE_SETUP
13378 #line 3582 "scanner.l"
13379 { // verbatim command (which could contain nested comments!)
13380                                           docBlockName=&scanYYtext[1];
13381                                           fullArgString+=scanYYtext;
13382                                           BEGIN(CopyArgVerbatim);
13383                                         }
13384         YY_BREAK
13385 case 372:
13386 YY_RULE_SETUP
13387 #line 3587 "scanner.l"
13388 {
13389                                           docBlockName=&scanYYtext[1];
13390                                           if (docBlockName.at(1)=='[')
13391                                           {
13392                                             docBlockName.at(1)='}';
13393                                           }
13394                                           if (docBlockName.at(1)=='{')
13395                                           {
13396                                             docBlockName.at(1)='}';
13397                                           }
13398                                           fullArgString+=scanYYtext;
13399                                           BEGIN(CopyArgVerbatim);
13400                                         }
13401         YY_BREAK
13402 case 373:
13403 /* rule 373 can match eol */
13404 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
13405 (yy_c_buf_p) = yy_cp -= 1;
13406 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
13407 YY_RULE_SETUP
13408 #line 3600 "scanner.l"
13409 { // end of verbatim block
13410                                           fullArgString+=scanYYtext;
13411                                           if (scanYYtext[1]=='f') // end of formula
13412                                           {
13413                                             BEGIN(CopyArgCommentLine);
13414                                           }
13415                                           if (&scanYYtext[4]==docBlockName)
13416                                           {
13417                                             BEGIN(CopyArgCommentLine);
13418                                           }
13419                                         }
13420         YY_BREAK
13421 case 374:
13422 YY_RULE_SETUP
13423 #line 3611 "scanner.l"
13424 { fullArgString+=scanYYtext; }
13425         YY_BREAK
13426 case 375:
13427 YY_RULE_SETUP
13428 #line 3612 "scanner.l"
13429 { fullArgString+=*scanYYtext; }
13430         YY_BREAK
13431 case 376:
13432 /* rule 376 can match eol */
13433 YY_RULE_SETUP
13434 #line 3613 "scanner.l"
13435 { fullArgString+=*scanYYtext; yyLineNr++; }
13436         YY_BREAK
13437 case 377:
13438 YY_RULE_SETUP
13439 #line 3614 "scanner.l"
13440 { fullArgString+=*scanYYtext; }
13441         YY_BREAK
13442 case 378:
13443 YY_RULE_SETUP
13444 #line 3615 "scanner.l"
13445 {
13446                                           warn(yyFileName,yyLineNr,
13447                                               "Warning: Ignoring %cbrief command inside argument documentation",*scanYYtext
13448                                              );
13449                                           fullArgString+=' ';
13450                                         }
13451         YY_BREAK
13452 case 379:
13453 YY_RULE_SETUP
13454 #line 3621 "scanner.l"
13455 {
13456                                           *copyArgString+=*scanYYtext;
13457                                           fullArgString+=*scanYYtext;
13458                                           argSharpCount=1;
13459                                           BEGIN( CopyArgSharp );
13460                                         }
13461         YY_BREAK
13462 case 380:
13463 YY_RULE_SETUP
13464 #line 3627 "scanner.l"
13465 {
13466                                           *copyArgString+=*scanYYtext;
13467                                           fullArgString+=*scanYYtext;
13468                                           //printf("end template list %s\n",copyArgString->data());
13469                                           stringToArgumentList(fullArgString,currentArgumentList);
13470                                           BEGIN( currentArgumentContext );
13471                                         }
13472         YY_BREAK
13473 case 381:
13474 YY_RULE_SETUP
13475 #line 3634 "scanner.l"
13476 {
13477                                           argRoundCount++;
13478                                           *copyArgString+=*scanYYtext;
13479                                           fullArgString+=*scanYYtext;
13480                                         }
13481         YY_BREAK
13482 case 382:
13483 YY_RULE_SETUP
13484 #line 3639 "scanner.l"
13485 {
13486                                           *copyArgString+=*scanYYtext;
13487                                           fullArgString+=*scanYYtext;
13488                                           if (argRoundCount>0) 
13489                                             argRoundCount--;
13490                                           else 
13491                                             BEGIN( lastCopyArgContext );
13492                                         }
13493         YY_BREAK
13494 case 383:
13495 YY_RULE_SETUP
13496 #line 3647 "scanner.l"
13497 {
13498                                           argSharpCount++;
13499                                           //printf("argSharpCount++=%d  copy\n",argSharpCount);
13500                                           *copyArgString+=*scanYYtext;
13501                                           fullArgString+=*scanYYtext;
13502                                         }
13503         YY_BREAK
13504 case 384:
13505 YY_RULE_SETUP
13506 #line 3653 "scanner.l"
13507 {
13508                                           *copyArgString+=*scanYYtext;
13509                                           fullArgString+=*scanYYtext;
13510                                           argSharpCount--;
13511                                           if (argSharpCount>0)
13512                                           {
13513                                             //printf("argSharpCount--=%d copy\n",argSharpCount);
13514                                           }
13515                                           else
13516                                           {
13517                                             BEGIN( ReadTempArgs );
13518                                             //printf("end of argSharpCount\n");
13519                                           }
13520                                         }
13521         YY_BREAK
13522 case 385:
13523 YY_RULE_SETUP
13524 #line 3667 "scanner.l"
13525 {
13526                                           *copyArgString+=scanYYtext;
13527                                           fullArgString+=scanYYtext;
13528                                         }
13529         YY_BREAK
13530 case 386:
13531 YY_RULE_SETUP
13532 #line 3671 "scanner.l"
13533 {
13534                                           *copyArgString+=*scanYYtext;
13535                                           fullArgString+=*scanYYtext;
13536                                           BEGIN( lastCopyArgStringContext );
13537                                         }
13538         YY_BREAK
13539 case 387:
13540 YY_RULE_SETUP
13541 #line 3676 "scanner.l"
13542 {
13543                                           *copyArgString+=*scanYYtext;
13544                                           fullArgString+=*scanYYtext;
13545                                           BEGIN( lastCopyArgStringContext );
13546                                         }
13547         YY_BREAK
13548 case 388:
13549 YY_RULE_SETUP
13550 #line 3681 "scanner.l"
13551 { 
13552                                           if (insidePHP)
13553                                           {
13554                                             REJECT;
13555                                           }
13556                                           else
13557                                           {
13558                                             *copyArgString+=scanYYtext; 
13559                                             fullArgString+=scanYYtext; 
13560                                           }
13561                                         }
13562         YY_BREAK
13563 case 389:
13564 YY_RULE_SETUP
13565 #line 3692 "scanner.l"
13566 { 
13567                                           *copyArgString+=scanYYtext; 
13568                                           fullArgString+=scanYYtext; 
13569                                           if (insidePHP)
13570                                           {
13571                                             lastCopyArgStringContext=YY_START;
13572                                             BEGIN(CopyArgPHPString);
13573                                           }
13574                                         }
13575         YY_BREAK
13576 case 390:
13577 /* rule 390 can match eol */
13578 YY_RULE_SETUP
13579 #line 3701 "scanner.l"
13580 { 
13581                                           yyLineNr++; 
13582                                           *copyArgString+=*scanYYtext; 
13583                                           fullArgString+=*scanYYtext; 
13584                                         }
13585         YY_BREAK
13586 case 391:
13587 YY_RULE_SETUP
13588 #line 3706 "scanner.l"
13589 { 
13590                                           *copyArgString+=*scanYYtext; 
13591                                           fullArgString+=*scanYYtext; 
13592                                         }
13593         YY_BREAK
13594 /*------------------------------------------------------------------------*/
13595 case 392:
13596 YY_RULE_SETUP
13597 #line 3716 "scanner.l"
13598 { current->args += *scanYYtext ;
13599                                           ++roundCount ;
13600                                         }
13601         YY_BREAK
13602 case 393:
13603 YY_RULE_SETUP
13604 #line 3719 "scanner.l"
13605 { current->args += *scanYYtext ; 
13606                                           if ( roundCount )
13607                                             --roundCount ;
13608                                           else
13609                                             BEGIN( FuncQual ) ;
13610                                         }
13611         YY_BREAK
13612 /*
13613 <FuncQual>"#"                           { if (insidePHP)
13614                                             REJECT;
13615                                           lastCPPContext = YY_START;
13616                                           BEGIN(SkipCPP);
13617                                         }
13618   */
13619 case 394:
13620 YY_RULE_SETUP
13621 #line 3732 "scanner.l"
13622 {
13623                                           if ( strcmp(scanYYtext,";")==0 && 
13624                                                insidePHP && 
13625                                                !containsWord(current->type,"function") )
13626                                           {
13627                                             current->reset();
13628                                             initEntry();
13629                                             BEGIN( FindMembers );
13630                                           }
13631                                           else
13632                                           {
13633                                             unput(*scanYYtext); BEGIN( Function );
13634                                           }
13635                                         }
13636         YY_BREAK
13637 case 395:
13638 /* rule 395 can match eol */
13639 YY_RULE_SETUP
13640 #line 3746 "scanner.l"
13641 { // pure virtual member function
13642                                           lineCount() ; 
13643                                           current->virt = Pure;
13644                                           current->args += " override "; 
13645                                         }
13646         YY_BREAK
13647 case 396:
13648 /* rule 396 can match eol */
13649 YY_RULE_SETUP
13650 #line 3751 "scanner.l"
13651 { // overridden virtual member function
13652                                           lineCount() ; 
13653                                           current->spec |= Entry::Override;
13654                                           current->args += " override "; 
13655                                         }
13656         YY_BREAK
13657 case 397:
13658 /* rule 397 can match eol */
13659 YY_RULE_SETUP
13660 #line 3756 "scanner.l"
13661 { // sealed member function
13662                                           lineCount() ; 
13663                                           current->spec |= Entry::Sealed;
13664                                           current->args += " sealed "; 
13665                                         }
13666         YY_BREAK
13667 case 398:
13668 /* rule 398 can match eol */
13669 YY_RULE_SETUP
13670 #line 3761 "scanner.l"
13671 { // new member function
13672                                           lineCount() ; 
13673                                           current->spec |= Entry::New;
13674                                           current->args += " new "; 
13675                                         }
13676         YY_BREAK
13677 case 399:
13678 /* rule 399 can match eol */
13679 YY_RULE_SETUP
13680 #line 3766 "scanner.l"
13681 { // const member function
13682                                           lineCount() ; 
13683                                           current->args += " const "; 
13684                                           current->argList->constSpecifier=TRUE;
13685                                         }
13686         YY_BREAK
13687 case 400:
13688 /* rule 400 can match eol */
13689 YY_RULE_SETUP
13690 #line 3771 "scanner.l"
13691 { // volatile member function
13692                                           lineCount() ; 
13693                                           current->args += " volatile "; 
13694                                           current->argList->volatileSpecifier=TRUE;
13695                                         }
13696         YY_BREAK
13697 case 401:
13698 /* rule 401 can match eol */
13699 YY_RULE_SETUP
13700 #line 3776 "scanner.l"
13701 { // pure virtual member function
13702                                           lineCount() ; 
13703                                           current->args += " = 0"; 
13704                                           current->virt = Pure; 
13705                                           current->argList->pureSpecifier=TRUE;
13706                                         }
13707         YY_BREAK
13708 case 402:
13709 /* rule 402 can match eol */
13710 YY_RULE_SETUP
13711 #line 3782 "scanner.l"
13712 { 
13713                                           lineCount() ; 
13714                                           current->args += ", " ; 
13715                                         }
13716         YY_BREAK
13717 case 403:
13718 /* rule 403 can match eol */
13719 YY_RULE_SETUP
13720 #line 3786 "scanner.l"
13721 { 
13722                                           lineCount() ; 
13723                                           current->args += ' ' ; 
13724                                         }
13725         YY_BREAK
13726 case 404:
13727 YY_RULE_SETUP
13728 #line 3790 "scanner.l"
13729 { if (insidePHP)
13730                                             REJECT;
13731                                           lastCPPContext = YY_START;
13732                                           BEGIN(SkipCPP);
13733                                         }       
13734         YY_BREAK
13735 case 405:
13736 YY_RULE_SETUP
13737 #line 3795 "scanner.l"
13738 { 
13739                                           if (insideCli && 
13740                                               (current_root->section&Entry::COMPOUND_MASK) 
13741                                              )
13742                                           {
13743                                             BEGIN(CliOverride);
13744                                           }
13745                                           else
13746                                           {
13747                                             // typically an initialized function pointer
13748                                             lastInitializerContext=YY_START;
13749                                             initBracketCount=0;
13750                                             BEGIN(ReadInitializer);
13751                                           }
13752                                         }
13753         YY_BREAK
13754 case 406:
13755 YY_RULE_SETUP
13756 #line 3810 "scanner.l"
13757 {
13758                                         }
13759         YY_BREAK
13760 case 407:
13761 YY_RULE_SETUP
13762 #line 3812 "scanner.l"
13763 { 
13764                                           unput(*scanYYtext);
13765                                           BEGIN(FuncQual);
13766                                         }
13767         YY_BREAK
13768 case 408:
13769 /* rule 408 can match eol */
13770 YY_RULE_SETUP
13771 #line 3816 "scanner.l"
13772 {
13773                                           yyLineNr++;
13774                                         }
13775         YY_BREAK
13776 case 409:
13777 YY_RULE_SETUP
13778 #line 3819 "scanner.l"
13779 {
13780                                         }
13781         YY_BREAK
13782 case 410:
13783 YY_RULE_SETUP
13784 #line 3821 "scanner.l"
13785 {
13786                                           unput(*scanYYtext);
13787                                           BEGIN(FuncQual);
13788                                         }
13789         YY_BREAK
13790 case 411:
13791 YY_RULE_SETUP
13792 #line 3825 "scanner.l"
13793 {
13794                                           current->args += *scanYYtext; 
13795                                           pCopyQuotedString=&current->args;
13796                                           lastStringContext=FuncPtrInit;
13797                                           BEGIN(CopyString);
13798                                         }
13799         YY_BREAK
13800 case 412:
13801 YY_RULE_SETUP
13802 #line 3831 "scanner.l"
13803 {
13804                                           current->args += *scanYYtext; 
13805                                           if (insidePHP)
13806                                           {
13807                                             pCopyQuotedString=&current->args;
13808                                             lastStringContext=FuncPtrInit;
13809                                             BEGIN(CopyPHPString);
13810                                           }
13811                                         }
13812         YY_BREAK
13813 case 413:
13814 YY_RULE_SETUP
13815 #line 3840 "scanner.l"
13816 {
13817                                           if (insidePHP)
13818                                           {
13819                                             REJECT;
13820                                           }
13821                                           else
13822                                           {
13823                                             current->args += scanYYtext; 
13824                                           }
13825                                         }
13826         YY_BREAK
13827 case 414:
13828 YY_RULE_SETUP
13829 #line 3850 "scanner.l"
13830 {
13831                                           current->args += scanYYtext; 
13832                                         }
13833         YY_BREAK
13834 case 415:
13835 YY_RULE_SETUP
13836 #line 3853 "scanner.l"
13837 {
13838                                           current->args += *scanYYtext; 
13839                                         }
13840         YY_BREAK
13841 case 416:
13842 /* rule 416 can match eol */
13843 YY_RULE_SETUP
13844 #line 3856 "scanner.l"
13845 {
13846                                           current->args += *scanYYtext; 
13847                                           yyLineNr++;
13848                                         }
13849         YY_BREAK
13850 case 417:
13851 YY_RULE_SETUP
13852 #line 3860 "scanner.l"
13853 { // typically a K&R style C function
13854                                           if (insideCS && strcmp(scanYYtext,"where")==0)
13855                                           { 
13856                                             // type contraint for a method
13857                                             delete current->typeConstr;
13858                                             current->typeConstr = new ArgumentList;
13859                                             current->typeConstr->append(new Argument);
13860                                             lastCSConstraint = YY_START;
13861                                             BEGIN( CSConstraintName );
13862                                           }
13863                                           else if (checkForKnRstyleC())
13864                                           {
13865                                             //fprintf(stderr,"===> got a K&R style function\n");
13866                                             current->args = scanYYtext; 
13867                                             oldStyleArgType.resize(0);
13868                                             BEGIN(OldStyleArgs);
13869                                           }
13870                                           else
13871                                           {
13872                                             current->args += scanYYtext; 
13873                                           }
13874                                         }
13875         YY_BREAK
13876 case 418:
13877 YY_RULE_SETUP
13878 #line 3882 "scanner.l"
13879 {
13880                                           QCString oldStyleArgPtr;
13881                                           QCString oldStyleArgName;
13882                                           splitKnRArg(oldStyleArgPtr,oldStyleArgName);
13883                                           QCString doc,brief;
13884                                           if (current->doc!=docBackup)
13885                                           {
13886                                             doc=current->doc.copy();
13887                                             current->doc=docBackup;
13888                                           }
13889                                           if (current->brief!=briefBackup)
13890                                           {
13891                                             brief=current->brief.copy();
13892                                             current->brief=briefBackup;
13893                                           }
13894                                           addKnRArgInfo(oldStyleArgType+oldStyleArgPtr,
13895                                                         oldStyleArgName,brief,doc);
13896                                           current->args.resize(0);
13897                                           if (*scanYYtext==';') oldStyleArgType.resize(0);
13898                                         }
13899         YY_BREAK
13900 case 419:
13901 YY_RULE_SETUP
13902 #line 3902 "scanner.l"
13903 { current->args += scanYYtext; }
13904         YY_BREAK
13905 case 420:
13906 YY_RULE_SETUP
13907 #line 3903 "scanner.l"
13908 {
13909                                           current->args = argListToString(current->argList);
13910                                           unput('{');
13911                                           BEGIN(FuncQual);
13912                                         }
13913         YY_BREAK
13914 case 421:
13915 YY_RULE_SETUP
13916 #line 3908 "scanner.l"
13917 { current->args += *scanYYtext; }
13918         YY_BREAK
13919 case 422:
13920 YY_RULE_SETUP
13921 #line 3909 "scanner.l"
13922 { current->args += *scanYYtext; }
13923         YY_BREAK
13924 case 423:
13925 /* rule 423 can match eol */
13926 YY_RULE_SETUP
13927 #line 3910 "scanner.l"
13928 { /* try-function-block */ 
13929                                           insideTryBlock=TRUE;
13930                                           lineCount();
13931                                         }
13932         YY_BREAK
13933 case 424:
13934 /* rule 424 can match eol */
13935 YY_RULE_SETUP
13936 #line 3914 "scanner.l"
13937 { // C++ style throw clause
13938                                           current->exception = " throw (" ;
13939                                           roundCount=0;
13940                                           lineCount() ;
13941                                           BEGIN( ExcpRound ) ;
13942                                         }
13943         YY_BREAK
13944 case 425:
13945 /* rule 425 can match eol */
13946 YY_RULE_SETUP
13947 #line 3920 "scanner.l"
13948 {
13949                                           current->exception = " raises (" ;
13950                                           lineCount() ;
13951                                           roundCount=0;
13952                                           BEGIN( ExcpRound ) ;
13953                                         }
13954         YY_BREAK
13955 case 426:
13956 /* rule 426 can match eol */
13957 YY_RULE_SETUP
13958 #line 3926 "scanner.l"
13959 { // Java style throw clause
13960                                           current->exception = " throws " ;
13961                                           lineCount() ;
13962                                           BEGIN( ExcpList );
13963                                         }
13964         YY_BREAK
13965 case 427:
13966 YY_RULE_SETUP
13967 #line 3931 "scanner.l"
13968 { current->exception += *scanYYtext ;
13969                                           ++roundCount ;
13970                                         }
13971         YY_BREAK
13972 case 428:
13973 YY_RULE_SETUP
13974 #line 3934 "scanner.l"
13975 { current->exception += *scanYYtext ; 
13976                                           if ( roundCount )
13977                                             --roundCount ;
13978                                           else
13979                                             BEGIN( FuncQual ) ;
13980                                         }
13981         YY_BREAK
13982 case 429:
13983 YY_RULE_SETUP
13984 #line 3940 "scanner.l"
13985 {
13986                                           current->exception += *scanYYtext;
13987                                         }
13988         YY_BREAK
13989 case 430:
13990 YY_RULE_SETUP
13991 #line 3943 "scanner.l"
13992 {
13993                                           unput('{'); BEGIN( FuncQual );
13994                                         }
13995         YY_BREAK
13996 case 431:
13997 YY_RULE_SETUP
13998 #line 3946 "scanner.l"
13999 {
14000                                           unput(';'); BEGIN( FuncQual );
14001                                         }
14002         YY_BREAK
14003 case 432:
14004 /* rule 432 can match eol */
14005 YY_RULE_SETUP
14006 #line 3949 "scanner.l"
14007 {
14008                                           current->exception += ' ';
14009                                           yyLineNr++;
14010                                         }
14011         YY_BREAK
14012 case 433:
14013 YY_RULE_SETUP
14014 #line 3953 "scanner.l"
14015 {
14016                                           current->exception += *scanYYtext;
14017                                         }
14018         YY_BREAK
14019 case 434:
14020 YY_RULE_SETUP
14021 #line 3956 "scanner.l"
14022 { current->type += current->name ;
14023                                           current->name  = current->args ;
14024                                           current->args  = scanYYtext ;
14025                                           roundCount=0;
14026                                           BEGIN( FuncRound ) ;
14027                                         }
14028         YY_BREAK
14029 case 435:
14030 YY_RULE_SETUP
14031 #line 3962 "scanner.l"
14032 {
14033                                           if (!insidePHP) BEGIN(SkipInits);
14034                                         }
14035         YY_BREAK
14036 case 436:
14037 YY_RULE_SETUP
14038 #line 3965 "scanner.l"
14039 { 
14040                                           current->name=current->name.simplifyWhiteSpace();
14041                                           current->type=current->type.simplifyWhiteSpace();
14042                                           current->args=removeRedundantWhiteSpace(current->args);
14043                                                         // was: current->args.simplifyWhiteSpace();
14044                                           current->fileName = yyFileName;
14045                                           current->startLine = yyLineNr;
14046                                           static QRegExp re("([^)]*\\[*&][^)]*)"); // (...*...)
14047                                           if (*scanYYtext!=';' || (current_root->section&Entry::COMPOUND_MASK) )
14048                                           {
14049                                             int tempArg=current->name.find('<');
14050                                             QCString tempName;
14051                                             if (tempArg==-1) tempName=current->name; else tempName=current->name.left(tempArg);
14052                                             if (current->type.isEmpty() &&
14053                                                 (current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
14054                                             {
14055                                               //printf("Scanner.l: found in class variable: `%s' `%s' `%s'\n", current->type.data(),current->name.data(),current->args.data());
14056                                               current->section = Entry::VARIABLE_SEC ;
14057                                             }
14058                                             else              
14059                                             {
14060                                               //printf("Scanner.l: found in class function: `%s' `%s' `%s'\n", current->type.data(),current->name.data(),current->args.data());
14061                                               current->section = Entry::FUNCTION_SEC ;
14062                                               current->proto = *scanYYtext==';';
14063                                             }
14064                                           }
14065                                           else // a global function prototype or function variable
14066                                           {
14067                                             //printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
14068                                             if (!current->type.isEmpty() && 
14069                                                 (current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
14070                                             {
14071                                               //printf("Scanner.l: found function variable!\n");
14072                                               current->section = Entry::VARIABLE_SEC;
14073                                             }
14074                                             else
14075                                             {
14076                                               //printf("Scanner.l: found prototype\n");
14077                                               current->section = Entry::FUNCTION_SEC;
14078                                               current->proto = TRUE;
14079                                             }
14080                                           }
14081                                           //printf("Adding entry `%s'\n",current->name.data());
14082                                           if ( insidePHP)
14083                                           {
14084                                             if (findAndRemoveWord(current->type,"final"))
14085                                             {
14086                                               current->spec |= Entry::Final;
14087                                             }
14088                                             if (findAndRemoveWord(current->type,"abstract"))
14089                                             {
14090                                               current->spec |= Entry::Abstract;
14091                                             }
14092                                           }
14093                                           if ( insidePHP && !containsWord(current->type,"function"))
14094                                           {
14095                                             initEntry();
14096                                           }
14097                                           else
14098                                           {
14099                                             if ( insidePHP)
14100                                             {
14101                                               findAndRemoveWord(current->type,"function");
14102                                             }
14103                                             previous = current;
14104                                             current_root->addSubEntry(current);
14105                                             current = new Entry ;
14106                                             initEntry();
14107                                             lastCurlyContext = FindMembers;
14108                                             if ( *scanYYtext == ',' )
14109                                             {
14110                                               current->type = previous->type.data();
14111                                             }
14112                                             if ( *scanYYtext == '{' )
14113                                             {
14114                                               if ( !insidePHP && (current_root->section & Entry::COMPOUND_MASK) )
14115                                               {
14116                                                 previous->spec |= Entry::Inline;
14117                                               }
14118                                               //addToBody(scanYYtext);
14119                                               curlyCount=0;
14120                                               BEGIN( SkipCurly ) ;
14121                                             }
14122                                             else
14123                                             {
14124                                               if (previous->section!=Entry::VARIABLE_SEC)
14125                                                 previous->bodyLine=-1; // a function/member declaration
14126                                               BEGIN( FindMembers ) ;
14127                                             }
14128                                           }
14129                                         }
14130         YY_BREAK
14131 case 437:
14132 YY_RULE_SETUP
14133 #line 4056 "scanner.l"
14134 { 
14135                                           //addToBody(scanYYtext);
14136                                           //lastCurlyContext = FindMembers;
14137                                           //curlyCount=0;
14138                                           //BEGIN( SkipCurly ) ; 
14139                                           unput('{');
14140                                           BEGIN( Function );
14141                                         }
14142         YY_BREAK
14143 case 438:
14144 YY_RULE_SETUP
14145 #line 4064 "scanner.l"
14146 { 
14147                                           //addToBody(scanYYtext);
14148                                           ++curlyCount ; 
14149                                         }
14150         YY_BREAK
14151 case 439:
14152 YY_RULE_SETUP
14153 #line 4068 "scanner.l"
14154 { 
14155                                           //addToBody(scanYYtext);
14156                                           if( curlyCount )
14157                                           {
14158                                             --curlyCount ;
14159                                           }
14160                                           else
14161                                           {
14162 #if 0
14163                                             if (!Config_getBool("HIDE_IN_BODY_DOCS") && 
14164                                                 !current->doc.isEmpty())
14165                                             {
14166                                               // copy documentation found inside the body
14167                                               // to the previous item
14168                                               if (previous->inbodyLine==-1)
14169                                               {
14170                                                 previous->inbodyLine = current->docLine;
14171                                                 previous->inbodyFile = current->docFile;
14172                                               }
14173                                               //printf("*** inbodyDocs+=%s\n",current->doc.data());
14174                                               previous->inbodyDocs += current->doc;
14175                                               current->doc.resize(0);
14176                                             }
14177 #endif
14178                                             if (current->sli) // copy special list items
14179                                             {
14180                                               QListIterator<ListItemInfo> li(*current->sli);
14181                                               ListItemInfo *lii;
14182                                               for (li.toFirst();(lii=li.current());++li)
14183                                               {
14184                                                 previous->addSpecialListItem(lii->type,lii->itemId);
14185                                               }
14186                                               delete current->sli;
14187                                               current->sli = 0;
14188                                             }
14189                                             if (previous) previous->endBodyLine=yyLineNr;
14190                                             BEGIN( lastCurlyContext ) ;
14191                                           }
14192                                         }
14193         YY_BREAK
14194 case 440:
14195 /* rule 440 can match eol */
14196 YY_RULE_SETUP
14197 #line 4107 "scanner.l"
14198 { 
14199                                           lineCount();
14200                                           if ( curlyCount )
14201                                           {
14202                                             //addToBody(scanYYtext);
14203                                             --curlyCount ;
14204                                           }
14205                                           else
14206                                           {
14207                                             current->endBodyLine=yyLineNr;
14208 
14209                                             tempEntry = current; // temporarily switch to the previous entry
14210                                             current = previous;
14211 
14212                                             docBlockContext   = SkipCurlyEndDoc;
14213                                             docBlockInBody    = FALSE;
14214                                             docBlockAutoBrief = ( scanYYtext[scanYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
14215                                                                 ( scanYYtext[scanYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
14216                                             docBlock.resize(0);
14217                                             docBlockTerm = '}';
14218                                             if (scanYYtext[scanYYleng-3]=='/')
14219                                             {
14220                                               startCommentBlock(TRUE);
14221                                               BEGIN( DocLine );
14222                                             }
14223                                             else
14224                                             {
14225                                               startCommentBlock(FALSE);
14226                                               BEGIN( DocBlock );
14227                                             }
14228                                           }
14229                                         }
14230         YY_BREAK
14231 case 441:
14232 /* rule 441 can match eol */
14233 YY_RULE_SETUP
14234 #line 4139 "scanner.l"
14235 { // desc is followed by another one
14236                                           docBlockContext   = SkipCurlyEndDoc;
14237                                           docBlockInBody    = FALSE;
14238                                           docBlockAutoBrief = ( scanYYtext[scanYYleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
14239                                                               ( scanYYtext[scanYYleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
14240                                           docBlock.resize(0);
14241                                           docBlockTerm = '}';
14242                                           if (scanYYtext[scanYYleng-3]=='/')
14243                                           {
14244                                             startCommentBlock(TRUE);
14245                                             BEGIN( DocLine );
14246                                           }
14247                                           else
14248                                           {
14249                                             startCommentBlock(FALSE);
14250                                             BEGIN( DocBlock );
14251                                           }
14252                                         }
14253         YY_BREAK
14254 case 442:
14255 YY_RULE_SETUP
14256 #line 4157 "scanner.l"
14257 {
14258                                           //addToBody("}");
14259                                           current = tempEntry;
14260                                           BEGIN( lastCurlyContext );
14261                                         }
14262         YY_BREAK
14263 case 443:
14264 YY_RULE_SETUP
14265 #line 4162 "scanner.l"
14266 { 
14267                                           //addToBody(scanYYtext);
14268                                           lastStringContext=SkipCurly;
14269                                           BEGIN( SkipString ); 
14270                                         }
14271         YY_BREAK
14272 case 444:
14273 YY_RULE_SETUP
14274 #line 4167 "scanner.l"
14275 { 
14276                                           if (insidePHP)
14277                                             REJECT;
14278                                           //addToBody(scanYYtext);
14279                                           BEGIN( SkipCurlyCpp );
14280                                         }
14281         YY_BREAK
14282 case 445:
14283 /* rule 445 can match eol */
14284 YY_RULE_SETUP
14285 #line 4173 "scanner.l"
14286 {
14287                                           yyLineNr++;
14288                                           //addToBody(scanYYtext);
14289                                         }
14290         YY_BREAK
14291 case 446:
14292 YY_RULE_SETUP
14293 #line 4177 "scanner.l"
14294 {
14295                                           //addToBody(scanYYtext);
14296                                         }
14297         YY_BREAK
14298 case 447:
14299 /* rule 447 can match eol */
14300 YY_RULE_SETUP
14301 #line 4180 "scanner.l"
14302 { 
14303                                           //addToBody(scanYYtext);
14304                                           yyLineNr++; 
14305                                           lastCurlyContext = FindMembers;
14306                                           BEGIN( SkipCurly ); 
14307                                         }
14308         YY_BREAK
14309 case 448:
14310 /* rule 448 can match eol */
14311 YY_RULE_SETUP
14312 #line 4186 "scanner.l"
14313 { 
14314                                           //addToBody(scanYYtext);
14315                                           yyLineNr++; 
14316                                         }
14317         YY_BREAK
14318 case 449:
14319 YY_RULE_SETUP
14320 #line 4190 "scanner.l"
14321 {
14322                                           //addToBody(scanYYtext);
14323                                           lastCContext = YY_START;
14324                                           BEGIN(SkipComment);
14325                                         }
14326         YY_BREAK
14327 case 450:
14328 YY_RULE_SETUP
14329 #line 4195 "scanner.l"
14330 {
14331                                           //addToBody(scanYYtext);
14332                                           lastCContext = YY_START;
14333                                           BEGIN(SkipCxxComment);
14334                                         }
14335         YY_BREAK
14336 case 451:
14337 YY_RULE_SETUP
14338 #line 4200 "scanner.l"
14339 {
14340                                           lastStringContext=YY_START;
14341                                           BEGIN( SkipString ); 
14342                                         }
14343         YY_BREAK
14344 case 452:
14345 YY_RULE_SETUP
14346 #line 4204 "scanner.l"
14347 {
14348                                           warn(yyFileName,yyLineNr,
14349                                               "Warning: Found ';' while parsing initializer list! "
14350                                               "(doxygen could be confused by a macro call without semicolon)"
14351                                              );
14352                                           BEGIN( FindMembers );
14353                                         }
14354         YY_BREAK
14355 case 453:
14356 YY_RULE_SETUP
14357 #line 4211 "scanner.l"
14358 {
14359                                           if (!insidePHP)
14360                                             REJECT;
14361                                           //addToBody(scanYYtext);
14362                                           lastCContext = YY_START;
14363                                           BEGIN(SkipCxxComment);
14364                                         }
14365         YY_BREAK
14366 case 454:
14367 YY_RULE_SETUP
14368 #line 4218 "scanner.l"
14369 {
14370                                           if (!insideCS) REJECT;
14371                                           // C# verbatim string
14372                                           lastSkipVerbStringContext=YY_START;
14373                                           pSkipVerbString=&current->initializer;
14374                                           BEGIN(SkipVerbString);
14375                                         }
14376         YY_BREAK
14377 case 455:
14378 YY_RULE_SETUP
14379 #line 4225 "scanner.l"
14380 {
14381                                           if (insidePHP) REJECT;
14382                                         }
14383         YY_BREAK
14384 case 456:
14385 YY_RULE_SETUP
14386 #line 4228 "scanner.l"
14387 {
14388                                           if (insidePHP)
14389                                           {
14390                                             lastStringContext=YY_START;
14391                                             BEGIN(SkipPHPString);
14392                                           }
14393                                         }
14394         YY_BREAK
14395 case 457:
14396 YY_RULE_SETUP
14397 #line 4235 "scanner.l"
14398 { }
14399         YY_BREAK
14400 case 458:
14401 YY_RULE_SETUP
14402 #line 4236 "scanner.l"
14403 { }
14404         YY_BREAK
14405 case 459:
14406 YY_RULE_SETUP
14407 #line 4237 "scanner.l"
14408 { 
14409                                           BEGIN( lastStringContext ); 
14410                                         }
14411         YY_BREAK
14412 case 460:
14413 YY_RULE_SETUP
14414 #line 4240 "scanner.l"
14415 { 
14416                                           BEGIN( lastStringContext ); 
14417                                         }
14418         YY_BREAK
14419 case 461:
14420 YY_RULE_SETUP
14421 #line 4243 "scanner.l"
14422 { }
14423         YY_BREAK
14424 case 462:
14425 /* rule 462 can match eol */
14426 YY_RULE_SETUP
14427 #line 4244 "scanner.l"
14428 {
14429                                           yyLineNr++;
14430                                         }
14431         YY_BREAK
14432 case 463:
14433 YY_RULE_SETUP
14434 #line 4247 "scanner.l"
14435 { }
14436         YY_BREAK
14437 case 464:
14438 YY_RULE_SETUP
14439 #line 4248 "scanner.l"
14440 { 
14441                                           current->section = Entry::EMPTY_SEC ;
14442                                           current->type.resize(0) ;
14443                                           current->name.resize(0) ;
14444                                           current->args.resize(0) ;
14445                                           current->argList->clear();
14446                                           BEGIN( FindMembers ) ;
14447                                         }
14448         YY_BREAK
14449 case 465:
14450 /* rule 465 can match eol */
14451 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
14452 (yy_c_buf_p) = yy_cp -= 1;
14453 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
14454 YY_RULE_SETUP
14455 #line 4256 "scanner.l"
14456 {
14457                                           sharpCount = 0;
14458                                           current->name = scanYYtext ;
14459                                           if (current->spec & Entry::Protocol)
14460                                           {
14461                                             current->name+="-p";
14462                                           }
14463                                           lineCount();
14464                                           lastClassTemplSpecContext = ClassVar;
14465                                           if (insideObjC) // protocol list
14466                                           {
14467                                             BEGIN( ObjCProtocolList );
14468                                           }
14469                                           else // C++ template specialization
14470                                           {
14471                                             BEGIN( ClassTemplSpec );
14472                                           }
14473                                         }
14474         YY_BREAK
14475 case 466:
14476 YY_RULE_SETUP
14477 #line 4274 "scanner.l"
14478 {
14479                                           insideProtocolList=TRUE;
14480                                           BEGIN( Bases );
14481                                         }
14482         YY_BREAK
14483 case 467:
14484 /* rule 467 can match eol */
14485 YY_RULE_SETUP
14486 #line 4278 "scanner.l"
14487 {
14488                                           current->name += scanYYtext;
14489                                           lineCount();
14490                                           if (--sharpCount<=0)
14491                                           {
14492                                             current->name = removeRedundantWhiteSpace(current->name);
14493                                             if (current->spec & Entry::Protocol)
14494                                             { // Objective-C protocol
14495                                               unput('{'); // fake start of body
14496                                               BEGIN( ClassVar );
14497                                             }
14498                                             else
14499                                             {
14500                                               BEGIN( lastClassTemplSpecContext );
14501                                             }
14502                                           }
14503                                         }
14504         YY_BREAK
14505 case 468:
14506 YY_RULE_SETUP
14507 #line 4295 "scanner.l"
14508 {
14509                                           current->name += scanYYtext;
14510                                           sharpCount++;
14511                                         }
14512         YY_BREAK
14513 case 469:
14514 YY_RULE_SETUP
14515 #line 4299 "scanner.l"
14516 {
14517                                           current->name += scanYYtext;
14518                                         }
14519         YY_BREAK
14520 case 470:
14521 /* rule 470 can match eol */
14522 YY_RULE_SETUP
14523 #line 4302 "scanner.l"
14524 { // forward declaration
14525                                           unput(';');
14526                                           current->reset();
14527                                           if (isTypedef) // typedef of a class, put typedef keyword back
14528                                           {
14529                                             current->type.prepend("typedef");
14530                                           }
14531                                           BEGIN( FindMembers );
14532                                         }
14533         YY_BREAK
14534 case 471:
14535 /* rule 471 can match eol */
14536 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
14537 (yy_c_buf_p) = yy_cp -= 1;
14538 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
14539 YY_RULE_SETUP
14540 #line 4311 "scanner.l"
14541 { 
14542                                           current->name = scanYYtext ;
14543                                           lineCount();
14544                                           if (current->spec & Entry::Protocol)
14545                                           {
14546                                             current->name += "-p";
14547                                           }
14548                                           BEGIN( ClassVar );
14549                                         }
14550         YY_BREAK
14551 case 472:
14552 /* rule 472 can match eol */
14553 YY_RULE_SETUP
14554 #line 4320 "scanner.l"
14555 { 
14556                                           current->name = scanYYtext ;
14557                                           lineCount();
14558                                           if (current->spec & Entry::Protocol)
14559                                           {
14560                                             current->name += "-p";
14561                                           }
14562                                           if ((current->section & Entry::Protocol) ||
14563                                               current->section == Entry::OBJCIMPL_SEC)
14564                                           {
14565                                             unput('{'); // fake start of body
14566                                           }
14567                                           BEGIN( ClassVar );
14568                                         }
14569         YY_BREAK
14570 case 473:
14571 /* rule 473 can match eol */
14572 YY_RULE_SETUP
14573 #line 4334 "scanner.l"
14574 { // C# style scope
14575                                           current->name = substitute(scanYYtext,".","::");
14576                                           lineCount();
14577                                           BEGIN( ClassVar );
14578                                         }
14579         YY_BREAK
14580 case 474:
14581 /* rule 474 can match eol */
14582 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
14583 (yy_c_buf_p) = yy_cp -= 1;
14584 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
14585 YY_RULE_SETUP
14586 #line 4339 "scanner.l"
14587 {
14588                                           if (insideIDL && strncmp(scanYYtext,"switch",6)==0 && !isId(scanYYtext[6]))
14589                                           {
14590                                             // Corba IDL style union
14591                                             roundCount=0;
14592                                             BEGIN(SkipUnionSwitch);
14593                                           }
14594                                           else
14595                                           {
14596                                             addType(current);
14597                                             current->name = scanYYtext;
14598                                             current->name = current->name.stripWhiteSpace();
14599                                             lineCount();
14600                                             BEGIN( FindMembers );
14601                                           }
14602                                         }
14603         YY_BREAK
14604 case 475:
14605 YY_RULE_SETUP
14606 #line 4355 "scanner.l"
14607 {
14608                                           if (isTypedef)
14609                                           {
14610                                             // multiple types in one typedef
14611                                             unput(',');
14612                                             current->type.prepend("typedef ");
14613                                             BEGIN(FindMembers);
14614                                           }
14615                                           else
14616                                           { 
14617                                             // Multiple class forward declaration
14618                                           }
14619                                         }
14620         YY_BREAK
14621 case 476:
14622 /* rule 476 can match eol */
14623 YY_RULE_SETUP
14624 #line 4368 "scanner.l"
14625 {
14626                                           if (insideCli)
14627                                           {
14628                                             if (scanYYtext[0]=='s') // sealed
14629                                               current->spec |= Entry::SealedClass;
14630                                             else // abstract
14631                                               current->spec |= Entry::AbstractClass;
14632                                             BEGIN( ClassVar ); 
14633                                           }
14634                                           else
14635                                           {
14636                                             REJECT;
14637                                           }
14638                                         }
14639         YY_BREAK
14640 case 477:
14641 YY_RULE_SETUP
14642 #line 4382 "scanner.l"
14643 {
14644                                           if (insideIDL && strcmp(scanYYtext,"switch")==0)
14645                                           {
14646                                             // Corba IDL style union
14647                                             roundCount=0;
14648                                             BEGIN(SkipUnionSwitch);
14649                                           }
14650                                           else if ((insideJava || insidePHP || insideJS) && (strcmp(scanYYtext,"implements")==0 || strcmp(scanYYtext,"extends")==0))
14651                                           {
14652                                             current->type.resize(0);
14653                                             baseProt=Public;
14654                                             baseVirt=Normal;
14655                                             baseName.resize(0);
14656                                             BEGIN( BasesProt ) ;
14657                                           }
14658                                           else if (insideCS && strcmp(scanYYtext,"where")==0) // C# type contraint
14659                                           {
14660                                             delete current->typeConstr;
14661                                             current->typeConstr = new ArgumentList;
14662                                             current->typeConstr->append(new Argument);
14663                                             lastCSConstraint = YY_START;
14664                                             BEGIN( CSConstraintName );
14665                                           }
14666                                           else
14667                                           {
14668                                             if (current->section == Entry::ENUM_SEC)
14669                                             { // found "enum a b" -> variable
14670                                               current->section = Entry::VARIABLE_SEC ;
14671                                             }
14672                                             current->type += ' ' ;
14673                                             current->type += current->name ;
14674                                             current->name = scanYYtext ;
14675                                             
14676                                             if (nameIsOperator(current->name))
14677                                             {
14678                                               BEGIN( Operator );
14679                                             }
14680                                           }
14681                                         }
14682         YY_BREAK
14683 case 478:
14684 YY_RULE_SETUP
14685 #line 4421 "scanner.l"
14686 {
14687                                           if (insideObjC && *scanYYtext=='(') // class category
14688                                           {
14689                                             current->name+='(';
14690                                             if (current->section!=Entry::OBJCIMPL_SEC)
14691                                             {
14692                                               current->spec|=Entry::Category;
14693                                             }
14694                                             BEGIN( ClassCategory );
14695                                           }
14696                                           else
14697                                           {
14698                                             // probably a function anyway
14699                                             unput(*scanYYtext);
14700                                             BEGIN( FindMembers );
14701                                           }
14702                                         }
14703         YY_BREAK
14704 case 479:
14705 YY_RULE_SETUP
14706 #line 4438 "scanner.l"
14707 { // special comment
14708                                           fullArgString.resize(0);
14709                                           lastCopyArgChar='#'; // end marker
14710                                           lastCommentInArgContext=YY_START;
14711                                           if (scanYYtext[1]=='/')
14712                                             BEGIN( CopyArgCommentLine );
14713                                           else
14714                                             BEGIN( CopyArgComment );
14715                                         }
14716         YY_BREAK
14717 case 480:
14718 YY_RULE_SETUP
14719 #line 4447 "scanner.l"
14720 { // artifically inserted token to signal end of comment block
14721                                           current->typeConstr->last()->docs = fullArgString;
14722                                         }
14723         YY_BREAK
14724 case 481:
14725 YY_RULE_SETUP
14726 #line 4450 "scanner.l"
14727 { // end of type constraint reached
14728                                           // parse documentation of the constraints
14729                                           handleParametersCommentBlocks(current->typeConstr);
14730                                           unput('{');
14731                                           BEGIN( lastCSConstraint );
14732                                         }
14733         YY_BREAK
14734 case 482:
14735 YY_RULE_SETUP
14736 #line 4456 "scanner.l"
14737 {
14738                                           BEGIN( CSConstraintType );
14739                                         }
14740         YY_BREAK
14741 case 483:
14742 YY_RULE_SETUP
14743 #line 4459 "scanner.l"
14744 {
14745                                           // parameter name
14746                                           current->typeConstr->last()->name=scanYYtext;
14747                                         }
14748         YY_BREAK
14749 case 484:
14750 YY_RULE_SETUP
14751 #line 4463 "scanner.l"
14752 { // another constraint for a different param
14753                                           current->typeConstr->append(new Argument);
14754                                           BEGIN( CSConstraintName );
14755                                         }
14756         YY_BREAK
14757 case 485:
14758 YY_RULE_SETUP
14759 #line 4467 "scanner.l"
14760 {
14761                                           if (current->typeConstr->last()->type.isEmpty())
14762                                               // first type constraint for this parameter
14763                                           {
14764                                             current->typeConstr->last()->type=scanYYtext;
14765                                           }
14766                                           else // new type constraint for same parameter
14767                                           {
14768                                             QCString name = current->typeConstr->last()->name;
14769                                             current->typeConstr->append(new Argument);
14770                                             current->typeConstr->last()->name=name;
14771                                             current->typeConstr->last()->type=scanYYtext;
14772                                           }
14773                                         }
14774         YY_BREAK
14775 case 486:
14776 /* rule 486 can match eol */
14777 YY_RULE_SETUP
14778 #line 4481 "scanner.l"
14779 {
14780                                           yyLineNr++;
14781                                         }
14782         YY_BREAK
14783 case 487:
14784 YY_RULE_SETUP
14785 #line 4484 "scanner.l"
14786 {
14787                                         }
14788         YY_BREAK
14789 case 488:
14790 YY_RULE_SETUP
14791 #line 4486 "scanner.l"
14792 {
14793                                           current->name+=scanYYtext;
14794                                         }
14795         YY_BREAK
14796 case 489:
14797 YY_RULE_SETUP
14798 #line 4489 "scanner.l"
14799 {
14800                                           current->name+=')';
14801                                           if ((current->section & Entry::Protocol) ||
14802                                               current->section == Entry::OBJCIMPL_SEC)
14803                                           {
14804                                             unput('{'); // fake start of body
14805                                           }
14806                                           else // category has no variables so push back an empty body
14807                                           {
14808                                             unput('}');
14809                                             unput('{');
14810                                           }
14811                                           BEGIN( ClassVar );
14812                                         }
14813         YY_BREAK
14814 case 490:
14815 YY_RULE_SETUP
14816 #line 4503 "scanner.l"
14817 { 
14818                                           current->type.resize(0);
14819                                           if ((current->spec & Entry::Interface) || 
14820                                               (current->spec & Entry::Struct) || 
14821                                               insidePHP || insideCS || insideD || insideObjC
14822                                              )
14823                                             baseProt=Public;
14824                                           else
14825                                             baseProt=Private;
14826                                           baseVirt=Normal;
14827                                           baseName.resize(0);
14828                                           BEGIN( BasesProt ) ;
14829                                         }
14830         YY_BREAK
14831 case 491:
14832 YY_RULE_SETUP
14833 #line 4516 "scanner.l"
14834 {
14835                                           unput(*scanYYtext);
14836                                           if (isTypedef) // typedef of a class, put typedef keyword back
14837                                           {
14838                                             current->type.prepend("typedef");
14839                                           }
14840                                           BEGIN( FindMembers );
14841                                         }
14842         YY_BREAK
14843 case 492:
14844 /* rule 492 can match eol */
14845 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
14846 (yy_c_buf_p) = yy_cp = yy_bp + 3;
14847 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
14848 YY_RULE_SETUP
14849 #line 4524 "scanner.l"
14850 {
14851                                           if (!insideObjC)
14852                                           {
14853                                             REJECT;
14854                                           }
14855                                           else
14856                                           {
14857                                             lineCount();
14858                                             current->program+=scanYYtext;
14859                                             current->fileName = yyFileName ;
14860                                             current->startLine = yyLineNr ;
14861                                             curlyCount=0;
14862                                             BEGIN( ReadBodyIntf );
14863                                           }
14864                                         }
14865         YY_BREAK
14866 case 493:
14867 /* rule 493 can match eol */
14868 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
14869 (yy_c_buf_p) = yy_cp -= 1;
14870 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
14871 #line 4540 "scanner.l"
14872 case 494:
14873 /* rule 494 can match eol */
14874 #line 4541 "scanner.l"
14875 case 495:
14876 /* rule 495 can match eol */
14877 #line 4542 "scanner.l"
14878 case 496:
14879 /* rule 496 can match eol */
14880 YY_RULE_SETUP
14881 #line 4542 "scanner.l"
14882 {
14883                                           if (!insideObjC)
14884                                           {
14885                                             REJECT;
14886                                           }
14887                                           else
14888                                           {
14889                                             lineCount();
14890                                             current->program+=scanYYtext;
14891                                             current->fileName = yyFileName ;
14892                                             current->startLine = yyLineNr ;
14893                                             curlyCount=0;
14894                                             BEGIN( ReadBodyIntf );
14895                                           }
14896                                         }
14897         YY_BREAK
14898 case 497:
14899 YY_RULE_SETUP
14900 #line 4557 "scanner.l"
14901 { 
14902                                           current->fileName = yyFileName ;
14903                                           current->startLine = yyLineNr ;
14904                                           current->name = removeRedundantWhiteSpace(current->name);
14905                                           if (current->name.isEmpty() && !isTypedef) // anonymous compound
14906                                           {
14907                                             if (current->section==Entry::NAMESPACE_SEC) // allow reopening of anonymous namespaces
14908                                             {
14909                                               if (Config_getBool("EXTRACT_ANON_NSPACES")) // use visible name
14910                                               {
14911                                                 current->name="anonymous_namespace{"+stripPath(current->fileName)+"}";
14912                                               }
14913                                               else // use invisible name
14914                                               {
14915                                                 current->name.sprintf("@%d",anonNSCount);
14916                                               }
14917                                             }
14918                                             else
14919                                             {
14920                                               current->name.sprintf("@%d",anonCount++);
14921                                             }
14922                                           }
14923                                           curlyCount=0;
14924                                           if (current_root && // not a nested struct inside an @interface section
14925                                               !(current_root->spec & Entry::Interface) &&
14926                                               ((current->spec & (Entry::Interface | Entry::Protocol | Entry::Category) ||
14927                                                 current->section==Entry::OBJCIMPL_SEC)
14928                                               ) &&
14929                                               insideObjC
14930                                              )
14931                                           { // ObjC body that ends with @end
14932                                             BEGIN( ReadBodyIntf );
14933                                           }
14934                                           else if (current->section==Entry::NAMESPACE_SEC)
14935                                           { // namespace body
14936                                             BEGIN( ReadNSBody );
14937                                           }
14938                                           else
14939                                           { // class body
14940                                             BEGIN( ReadBody ) ;
14941                                           }
14942                                         }
14943         YY_BREAK
14944 case 498:
14945 /* rule 498 can match eol */
14946 YY_RULE_SETUP
14947 #line 4599 "scanner.l"
14948 { lineCount(); baseVirt = Virtual; }
14949         YY_BREAK
14950 case 499:
14951 /* rule 499 can match eol */
14952 YY_RULE_SETUP
14953 #line 4600 "scanner.l"
14954 { lineCount(); baseProt = Public; }
14955         YY_BREAK
14956 case 500:
14957 /* rule 500 can match eol */
14958 YY_RULE_SETUP
14959 #line 4601 "scanner.l"
14960 { lineCount(); baseProt = Protected; }
14961         YY_BREAK
14962 case 501:
14963 /* rule 501 can match eol */
14964 YY_RULE_SETUP
14965 #line 4602 "scanner.l"
14966 { lineCount(); baseProt = Private; }
14967         YY_BREAK
14968 case 502:
14969 /* rule 502 can match eol */
14970 YY_RULE_SETUP
14971 #line 4603 "scanner.l"
14972 { lineCount(); }
14973         YY_BREAK
14974 case 503:
14975 YY_RULE_SETUP
14976 #line 4604 "scanner.l"
14977 { unput(*scanYYtext); BEGIN(Bases); }
14978         YY_BREAK
14979 case 504:
14980 /* rule 504 can match eol */
14981 YY_RULE_SETUP
14982 #line 4605 "scanner.l"
14983 { 
14984                                           baseName+=scanYYtext;
14985                                           current->args += ' ';
14986                                           current->args += scanYYtext;
14987                                         }
14988         YY_BREAK
14989 case 505:
14990 /* rule 505 can match eol */
14991 YY_RULE_SETUP
14992 #line 4610 "scanner.l"
14993 { // Java style class
14994                                           QCString name = substitute(scanYYtext,".","::");
14995                                           baseName += name;
14996                                           current->args += ' ';
14997                                           current->args += name;
14998                                         }
14999         YY_BREAK
15000 case 506:
15001 /* rule 506 can match eol */
15002 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15003 (yy_c_buf_p) = yy_cp = yy_bp + 1;
15004 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15005 YY_RULE_SETUP
15006 #line 4616 "scanner.l"
15007 {
15008                                           if (!insideObjC) 
15009                                           {
15010                                             REJECT;
15011                                           }
15012                                           else
15013                                           {
15014                                             yyLineNr++;
15015                                             //unput('{');
15016                                           }
15017                                         }
15018         YY_BREAK
15019 case 507:
15020 YY_RULE_SETUP
15021 #line 4627 "scanner.l"
15022 { // empty ObjC interface
15023                                           unput('d'); // insert fake body: {}@end
15024                                           unput('n'); 
15025                                           unput('e'); 
15026                                           unput('@'); 
15027                                           unput('}'); 
15028                                           unput('{');
15029                                         }
15030         YY_BREAK
15031 case 508:
15032 YY_RULE_SETUP
15033 #line 4635 "scanner.l"
15034 { current->name += *scanYYtext;
15035                                           sharpCount=1; 
15036                                           roundCount=0;
15037                                           lastSkipSharpContext = YY_START;
15038                                           specName = &current->name;
15039                                           BEGIN ( Specialization );
15040                                         }
15041         YY_BREAK
15042 case 509:
15043 YY_RULE_SETUP
15044 #line 4642 "scanner.l"
15045 { 
15046                                           sharpCount=1; 
15047                                           roundCount=0;
15048                                           lastSkipSharpContext = YY_START;
15049                                           if (insideObjC) // start of protocol list
15050                                           {
15051                                             unput(',');
15052                                           }
15053                                           else // template specialization
15054                                           {
15055                                             baseName += *scanYYtext;
15056                                             specName = &baseName;
15057                                             BEGIN ( Specialization );
15058                                           }
15059                                         }
15060         YY_BREAK
15061 case 510:
15062 YY_RULE_SETUP
15063 #line 4657 "scanner.l"
15064 { *specName += *scanYYtext;
15065                                           if (roundCount==0) sharpCount++;
15066                                         }
15067         YY_BREAK
15068 case 511:
15069 YY_RULE_SETUP
15070 #line 4660 "scanner.l"
15071 {
15072                                           *specName += *scanYYtext;
15073                                           if (roundCount==0 && --sharpCount<=0)
15074                                             BEGIN(lastSkipSharpContext);
15075                                         }
15076         YY_BREAK
15077 case 512:
15078 /* rule 512 can match eol */
15079 YY_RULE_SETUP
15080 #line 4665 "scanner.l"
15081 { lineCount(); *specName +=' '; }
15082         YY_BREAK
15083 case 513:
15084 YY_RULE_SETUP
15085 #line 4666 "scanner.l"
15086 { *specName += scanYYtext; }
15087         YY_BREAK
15088 case 514:
15089 YY_RULE_SETUP
15090 #line 4667 "scanner.l"
15091 {
15092                                           if (insideCS) // for C# >> ends a nested template
15093                                           {
15094                                             REJECT;
15095                                           }
15096                                           else // for C++ >> is a bitshift operator and > > would end a nested template
15097                                           {
15098                                             *specName += scanYYtext; 
15099                                           }
15100                                         }
15101         YY_BREAK
15102 case 515:
15103 /* rule 515 can match eol */
15104 YY_RULE_SETUP
15105 #line 4677 "scanner.l"
15106 { lineCount(); }
15107         YY_BREAK
15108 case 516:
15109 YY_RULE_SETUP
15110 #line 4678 "scanner.l"
15111 { *specName += *scanYYtext; roundCount++; }
15112         YY_BREAK
15113 case 517:
15114 YY_RULE_SETUP
15115 #line 4679 "scanner.l"
15116 { *specName += *scanYYtext; roundCount--; }
15117         YY_BREAK
15118 case 518:
15119 YY_RULE_SETUP
15120 #line 4680 "scanner.l"
15121 {
15122                                           *specName += *scanYYtext;
15123                                         }
15124         YY_BREAK
15125 case 519:
15126 YY_RULE_SETUP
15127 #line 4683 "scanner.l"
15128 { ++sharpCount; }
15129         YY_BREAK
15130 case 520:
15131 YY_RULE_SETUP
15132 #line 4684 "scanner.l"
15133 { if (--sharpCount<=0)
15134                                             BEGIN ( lastSkipSharpContext );
15135                                         }
15136         YY_BREAK
15137 case 521:
15138 YY_RULE_SETUP
15139 #line 4687 "scanner.l"
15140 { ++roundCount; }
15141         YY_BREAK
15142 case 522:
15143 YY_RULE_SETUP
15144 #line 4688 "scanner.l"
15145 { if (--roundCount<=0)
15146                                             BEGIN ( lastSkipRoundContext );
15147                                         }
15148         YY_BREAK
15149 case 523:
15150 /* rule 523 can match eol */
15151 YY_RULE_SETUP
15152 #line 4691 "scanner.l"
15153 { lineCount();
15154                                           if (insideProtocolList)
15155                                           {
15156                                             baseName+="-p";
15157                                           }
15158                                           else
15159                                           {
15160                                             current->args += ',' ; 
15161                                           }
15162                                           current->name = removeRedundantWhiteSpace(current->name);
15163                                           if (!baseName.isEmpty())
15164                                           {
15165                                             current->extends->append(
15166                                               new BaseInfo(baseName,baseProt,baseVirt)
15167                                             );
15168                                           }
15169                                           if ((current->spec & Entry::Interface) || 
15170                                               insideJava || insidePHP || insideCS || 
15171                                               insideD || insideObjC)
15172                                           {
15173                                             baseProt=Public;
15174                                           }
15175                                           else
15176                                           {
15177                                             baseProt=Private;
15178                                           }
15179                                           baseVirt=Normal;
15180                                           baseName.resize(0);
15181                                           if (*scanYYtext=='>')
15182                                           { // end of a ObjC protocol list
15183                                             insideProtocolList=FALSE;
15184                                           }
15185                                           else
15186                                           {
15187                                             if (*scanYYtext==',' && insideObjC) // Begin of protocol list
15188                                             {
15189                                               insideProtocolList=TRUE;
15190                                             }
15191                                             BEGIN(BasesProt);
15192                                           }
15193                                         }
15194         YY_BREAK
15195 case 524:
15196 YY_RULE_SETUP
15197 #line 4732 "scanner.l"
15198 { current->fileName = yyFileName ;
15199                                           current->startLine = yyLineNr ;
15200                                           current->name = removeRedundantWhiteSpace(current->name);
15201                                           if (!baseName.isEmpty())
15202                                             current->extends->append(
15203                                               new BaseInfo(baseName,baseProt,baseVirt)
15204                                             );
15205                                           curlyCount=0;
15206                                           if (insideObjC)
15207                                           {
15208                                             BEGIN( ReadBodyIntf );
15209                                           }
15210                                           else
15211                                           {
15212                                             BEGIN( ReadBody ) ;
15213                                           }
15214                                         }
15215         YY_BREAK
15216 case 525:
15217 YY_RULE_SETUP
15218 #line 4749 "scanner.l"
15219 {
15220                                           roundCount++;
15221                                         }
15222         YY_BREAK
15223 case 526:
15224 YY_RULE_SETUP
15225 #line 4752 "scanner.l"
15226 {
15227                                           if (--roundCount==0)
15228                                           {
15229                                             BEGIN(ClassVar);
15230                                           }
15231                                         }
15232         YY_BREAK
15233 case 527:
15234 /* rule 527 can match eol */
15235 YY_RULE_SETUP
15236 #line 4758 "scanner.l"
15237 { yyLineNr++; }
15238         YY_BREAK
15239 case 528:
15240 YY_RULE_SETUP
15241 #line 4759 "scanner.l"
15242 
15243         YY_BREAK
15244 case 529:
15245 /* rule 529 can match eol */
15246 YY_RULE_SETUP
15247 #line 4760 "scanner.l"
15248 { current->program += scanYYtext ;
15249                                           lineCount() ;
15250                                         }
15251         YY_BREAK
15252 case 530:
15253 YY_RULE_SETUP
15254 #line 4763 "scanner.l"
15255 { current->program += scanYYtext ; } 
15256         YY_BREAK
15257 case 531:
15258 YY_RULE_SETUP
15259 #line 4764 "scanner.l"
15260 { current->program += scanYYtext ; }
15261         YY_BREAK
15262 case 532:
15263 YY_RULE_SETUP
15264 #line 4765 "scanner.l"
15265 {
15266                                           insideCode=TRUE;
15267                                           current->program += scanYYtext ;
15268                                         }
15269         YY_BREAK
15270 case 533:
15271 YY_RULE_SETUP
15272 #line 4769 "scanner.l"
15273 {
15274                                           insideCode=FALSE;
15275                                           current->program += scanYYtext ;
15276                                         }
15277         YY_BREAK
15278 case 534:
15279 YY_RULE_SETUP
15280 #line 4773 "scanner.l"
15281 { current->program += scanYYtext ; }
15282         YY_BREAK
15283 case 535:
15284 YY_RULE_SETUP
15285 #line 4774 "scanner.l"
15286 { current->program += scanYYtext ;
15287                                           if (!insideCode) BEGIN( lastContext ) ;
15288                                         }
15289         YY_BREAK
15290 case 536:
15291 YY_RULE_SETUP
15292 #line 4777 "scanner.l"
15293 { current->program += *scanYYtext ; }
15294         YY_BREAK
15295 case 537:
15296 YY_RULE_SETUP
15297 #line 4779 "scanner.l"
15298 { 
15299                                           //printf("Start doc block at %d\n",yyLineNr);
15300                                           removeSlashes=(scanYYtext[1]=='/');
15301                                           tmpDocType=-1;
15302 #if 0
15303                                           if (YY_START!=SkipCurly)
15304                                           {
15305                                             current->doc.resize(0);
15306                                           }
15307 #endif
15308                                           if (!current->doc.isEmpty())
15309                                           {
15310                                             current->doc+="\n\n";
15311                                           }
15312                                           else
15313                                           {
15314                                             current->docLine = yyLineNr;
15315                                             current->docFile = yyFileName;
15316                                           }
15317 //
15318 
15319                                           lastDocContext = YY_START;
15320                                           if (current_root->section & Entry::SCOPE_MASK)
15321                                           {
15322                                             current->inside = current_root->name+"::";
15323                                             //if (current->mGrpId!=DOX_NOGROUP)
15324                                             //{
15325                                             //  memberGroupInside = current->inside.copy();
15326                                             //}
15327                                           }
15328                                           docBlockContext   = YY_START;
15329                                           docBlockInBody    = YY_START==SkipCurly;
15330                                           docBlockAutoBrief = Config_getBool("QT_AUTOBRIEF");
15331                                           docBlock.resize(0);
15332                                           if (docBlockAutoBrief)
15333                                           {
15334                                             current->briefLine = yyLineNr;
15335                                             current->briefFile = yyFileName;
15336                                           }
15337 #if 0
15338                                           if (!docBlockInBody)
15339                                           {
15340                                             current->doc.resize(0);
15341                                             if (docBlockAutoBrief)
15342                                             {
15343                                               current->brief.resize(0);
15344                                             }
15345                                           }
15346 #endif
15347                                           startCommentBlock(FALSE);
15348                                           BEGIN( DocBlock );
15349                                         }
15350         YY_BREAK
15351 case 538:
15352 /* rule 538 can match eol */
15353 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15354 (yy_c_buf_p) = yy_cp -= 1;
15355 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15356 YY_RULE_SETUP
15357 #line 4831 "scanner.l"
15358 {
15359                                           removeSlashes=(scanYYtext[1]=='/');
15360                                           lastDocContext = YY_START;
15361                                           //printf("Found comment block at %s:%d\n",yyFileName,yyLineNr);
15362                                           if (current_root->section & Entry::SCOPE_MASK)
15363                                           {
15364                                             current->inside = current_root->name+"::";
15365                                             //if (current->mGrpId!=DOX_NOGROUP)
15366                                             //{
15367                                             //  memberGroupInside = current->inside.copy();
15368                                             //}
15369                                           }
15370                                           current->docLine = yyLineNr;
15371                                           current->docFile = yyFileName;
15372                                           docBlockContext = YY_START;
15373                                           docBlockInBody  = YY_START==SkipCurly;
15374                                           docBlockAutoBrief = Config_getBool("JAVADOC_AUTOBRIEF");
15375                                           docBlock.resize(0);
15376                                           if (docBlockAutoBrief)
15377                                           {
15378                                             current->briefLine = yyLineNr;
15379                                             current->briefFile = yyFileName;
15380                                           }
15381 #if 0
15382                                           if (!docBlockInBody)
15383                                           {
15384                                             current->doc.resize(0);
15385                                             if (docBlockAutoBrief)
15386                                             {
15387                                               current->brief.resize(0);
15388                                             }
15389                                           }
15390 #endif
15391                                           startCommentBlock(FALSE);
15392                                           BEGIN( DocBlock );
15393                                         }
15394         YY_BREAK
15395 case 539:
15396 YY_RULE_SETUP
15397 #line 4867 "scanner.l"
15398 { 
15399 #if 0
15400                                           if (YY_START!=SkipCurly)
15401                                           {
15402                                             current->brief.resize(0);
15403                                             current->briefFile=yyFileName;
15404                                             current->briefLine=yyLineNr;
15405                                           }
15406 #endif
15407                                           tmpDocType=-1;
15408                                           lastDocContext = YY_START;
15409                                           if (current_root->section & Entry::SCOPE_MASK)
15410                                           {
15411                                             current->inside = current_root->name+"::";
15412                                             //if (current->mGrpId!=DOX_NOGROUP)
15413                                             //{
15414                                             //  memberGroupInside = current->inside.copy();
15415                                             //}
15416                                           }
15417                                           docBlockContext   = YY_START;
15418                                           docBlockInBody    = YY_START==SkipCurly;
15419                                           docBlockAutoBrief = FALSE;
15420                                           docBlock.resize(0);
15421                                           startCommentBlock(current->brief.isEmpty());
15422                                           BEGIN( DocLine );
15423                                         }
15424         YY_BREAK
15425 case 540:
15426 /* rule 540 can match eol */
15427 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15428 (yy_c_buf_p) = yy_cp = yy_bp + 3;
15429 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15430 YY_RULE_SETUP
15431 #line 4893 "scanner.l"
15432 { 
15433 #if 0
15434                                           if (YY_START!=SkipCurly)
15435                                           {
15436                                             current->brief.resize(0);
15437                                             current->briefFile=yyFileName;
15438                                             current->briefLine=yyLineNr;
15439                                           }
15440 #endif
15441                                           tmpDocType=-1;
15442                                           lastDocContext = YY_START;
15443                                           if (current_root->section & Entry::SCOPE_MASK)
15444                                           {
15445                                             current->inside = current_root->name+"::";
15446                                             //if (current->mGrpId!=DOX_NOGROUP)
15447                                             //{
15448                                             //  memberGroupInside = current->inside.copy();
15449                                             //}
15450                                           }
15451                                           docBlockContext   = YY_START;
15452                                           docBlockInBody    = YY_START==SkipCurly;
15453                                           docBlockAutoBrief = FALSE;
15454                                           docBlock.resize(0);
15455                                           startCommentBlock(current->brief.isEmpty());
15456                                           BEGIN( DocLine );
15457                                         }
15458         YY_BREAK
15459 case 541:
15460 /* rule 541 can match eol */
15461 YY_RULE_SETUP
15462 #line 4919 "scanner.l"
15463 {
15464                                           lineCount();
15465                                         }
15466         YY_BREAK
15467 case 542:
15468 YY_RULE_SETUP
15469 #line 4922 "scanner.l"
15470 {
15471                                           if (insideCS &&    
15472                                               !current->name.isEmpty() && 
15473                                               !current->type.isEmpty())
15474                                           {
15475                                             if (containsWord(current->type,"event")) // event
15476                                             {
15477                                               current->mtype = mtype = Event;
15478                                             }
15479                                             else // property
15480                                             {                           
15481                                               current->mtype = mtype = Property;
15482                                             }
15483                                             current->bodyLine = yyLineNr;
15484                                             curlyCount=0;
15485                                             BEGIN( CSAccessorDecl );
15486                                           }
15487                                           else
15488                                           {
15489                                             if ((insideJava || insideCS || insideD) &&
15490                                                 current->name.isEmpty()
15491                                                )
15492                                             {
15493                                               // static Java initializer
15494                                               needsSemi = FALSE;
15495                                               if (current->stat)
15496                                               {
15497                                                 current->name="[static initializer]";
15498                                                 current->type.resize(0);
15499                                               }
15500                                               else
15501                                               {
15502                                                 current->name="[instance initializer]";
15503                                               }
15504                                               unput(*scanYYtext); 
15505                                               BEGIN( Function );
15506                                             }
15507                                             else
15508                                             {
15509                                               needsSemi = TRUE;
15510                                               current->type.resize(0);
15511                                               current->name.resize(0);
15512                                               current->args.resize(0);
15513                                               current->argList->clear();
15514                                               curlyCount=0;
15515                                               BEGIN( SkipCurlyBlock );
15516                                             }
15517                                           }
15518                                         }
15519         YY_BREAK
15520 case 543:
15521 YY_RULE_SETUP
15522 #line 4971 "scanner.l"
15523 { curlyCount++; }
15524         YY_BREAK
15525 case 544:
15526 YY_RULE_SETUP
15527 #line 4972 "scanner.l"
15528 { 
15529                                           if (curlyCount) 
15530                                           {
15531                                             curlyCount--; 
15532                                           }
15533                                           else
15534                                           {
15535                                             mtype = Method;
15536                                             unput(';');
15537                                             BEGIN(FindMembers);
15538                                           }
15539                                         }
15540         YY_BREAK
15541 case 545:
15542 YY_RULE_SETUP
15543 #line 4984 "scanner.l"
15544 { if (curlyCount==0) current->spec |= Entry::Settable;  }
15545         YY_BREAK
15546 case 546:
15547 YY_RULE_SETUP
15548 #line 4985 "scanner.l"
15549 { if (curlyCount==0) current->spec |= Entry::Gettable;  }
15550         YY_BREAK
15551 case 547:
15552 YY_RULE_SETUP
15553 #line 4986 "scanner.l"
15554 { if (curlyCount==0) current->spec |= Entry::Addable;   }
15555         YY_BREAK
15556 case 548:
15557 YY_RULE_SETUP
15558 #line 4987 "scanner.l"
15559 { if (curlyCount==0) current->spec |= Entry::Removable; }
15560         YY_BREAK
15561 case 549:
15562 YY_RULE_SETUP
15563 #line 4988 "scanner.l"
15564 { if (curlyCount==0) current->spec |= Entry::Raisable;  }
15565         YY_BREAK
15566 case 550:
15567 YY_RULE_SETUP
15568 #line 4989 "scanner.l"
15569 {}
15570         YY_BREAK
15571 case 551:
15572 /* rule 551 can match eol */
15573 YY_RULE_SETUP
15574 #line 4990 "scanner.l"
15575 { yyLineNr++; }
15576         YY_BREAK
15577 /**********************************************************************************/
15578 /******************** Documentation block related rules ***************************/
15579 /**********************************************************************************/
15580 /* ---- Single line comments ------ */
15581 case 552:
15582 /* rule 552 can match eol */
15583 YY_RULE_SETUP
15584 #line 5000 "scanner.l"
15585 { // continuation of multiline C++-style comment
15586                                            docBlock+=scanYYtext;
15587                                            docBlock.resize(docBlock.size() - 3);
15588                                            yyLineNr++;
15589                                         }
15590         YY_BREAK
15591 case 553:
15592 /* rule 553 can match eol */
15593 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15594 (yy_c_buf_p) = yy_cp -= 1;
15595 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15596 YY_RULE_SETUP
15597 #line 5005 "scanner.l"
15598 { // whole line
15599                                           docBlock+=scanYYtext;
15600                                           handleCommentBlock(docBlock,current->brief.isEmpty());
15601                                           BEGIN( docBlockContext );
15602                                         }
15603         YY_BREAK
15604 /* ---- Comments blocks ------ */
15605 case 554:
15606 YY_RULE_SETUP
15607 #line 5013 "scanner.l"
15608 { // end of comment block
15609                                           handleCommentBlock(docBlock,FALSE);
15610                                           BEGIN(docBlockContext);
15611                                         }
15612         YY_BREAK
15613 case 555:
15614 /* rule 555 can match eol */
15615 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15616 (yy_c_buf_p) = yy_cp -= 1;
15617 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15618 YY_RULE_SETUP
15619 #line 5017 "scanner.l"
15620 { // start of a comment line
15621                                         }
15622         YY_BREAK
15623 case 556:
15624 YY_RULE_SETUP
15625 #line 5019 "scanner.l"
15626 { // strip embedded C++ comments if at the start of a line
15627                                         }
15628         YY_BREAK
15629 case 557:
15630 YY_RULE_SETUP
15631 #line 5021 "scanner.l"
15632 { // slashes in the middle of a comment block
15633                                           docBlock+=scanYYtext;
15634                                         }
15635         YY_BREAK
15636 case 558:
15637 YY_RULE_SETUP
15638 #line 5024 "scanner.l"
15639 { // start of a new comment in the 
15640                                           // middle of a comment block
15641                                           docBlock+=scanYYtext;
15642                                         }
15643         YY_BREAK
15644 case 559:
15645 /* rule 559 can match eol */
15646 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15647 (yy_c_buf_p) = yy_cp -= 1;
15648 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15649 YY_RULE_SETUP
15650 #line 5028 "scanner.l"
15651 { // escaped command
15652                                           docBlock+=scanYYtext;
15653                                         }
15654         YY_BREAK
15655 case 560:
15656 YY_RULE_SETUP
15657 #line 5031 "scanner.l"
15658 {
15659                                           docBlock+=scanYYtext;
15660                                           docBlockName=&scanYYtext[1];
15661                                           if (docBlockName.at(1)=='{')
15662                                           {
15663                                             docBlockName.at(1)='}';
15664                                           }
15665                                           BEGIN(DocCopyBlock);
15666                                         }
15667         YY_BREAK
15668 case 561:
15669 YY_RULE_SETUP
15670 #line 5040 "scanner.l"
15671 {
15672                                           docBlock+=scanYYtext;
15673                                           docBlockName="<pre>";
15674                                           BEGIN(DocCopyBlock);
15675                                         }
15676         YY_BREAK
15677 case 562:
15678 /* rule 562 can match eol */
15679 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15680 (yy_c_buf_p) = yy_cp -= 1;
15681 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15682 YY_RULE_SETUP
15683 #line 5045 "scanner.l"
15684 { // verbatim command (which could contain nested comments!)
15685                                           docBlock+=scanYYtext;
15686                                           docBlockName=&scanYYtext[1];
15687                                           BEGIN(DocCopyBlock);
15688                                         }
15689         YY_BREAK
15690 case 563:
15691 YY_RULE_SETUP
15692 #line 5050 "scanner.l"
15693 {
15694                                           if (insideCS)
15695                                           {
15696                                             docBlock+=scanYYtext;
15697                                             docBlockName="<code>";
15698                                             BEGIN(DocCopyBlock);
15699                                           }
15700                                           else
15701                                           {
15702                                             REJECT;
15703                                           }
15704                                         }
15705         YY_BREAK
15706 case 564:
15707 YY_RULE_SETUP
15708 #line 5062 "scanner.l"
15709 { // any character that isn't special
15710                                           docBlock+=scanYYtext;
15711                                         }
15712         YY_BREAK
15713 case 565:
15714 /* rule 565 can match eol */
15715 YY_RULE_SETUP
15716 #line 5065 "scanner.l"
15717 { // newline
15718                                           yyLineNr++;
15719                                           docBlock+=*scanYYtext;
15720                                         }
15721         YY_BREAK
15722 case 566:
15723 YY_RULE_SETUP
15724 #line 5069 "scanner.l"
15725 { // command block
15726                                           docBlock+=*scanYYtext;
15727                                         }
15728         YY_BREAK
15729 /* ---- Copy verbatim sections ------ */
15730 case 567:
15731 YY_RULE_SETUP
15732 #line 5075 "scanner.l"
15733 { // end of a <pre> block
15734                                           docBlock+=scanYYtext;
15735                                           if (docBlockName=="<pre>")
15736                                           {
15737                                             BEGIN(DocBlock);
15738                                           }
15739                                         }
15740         YY_BREAK
15741 case 568:
15742 YY_RULE_SETUP
15743 #line 5082 "scanner.l"
15744 { // end of a <code> block
15745                                           docBlock+=scanYYtext;
15746                                           if (docBlockName=="<code>")
15747                                           {
15748                                             BEGIN(DocBlock);
15749                                           }
15750                                         }
15751         YY_BREAK
15752 case 569:
15753 YY_RULE_SETUP
15754 #line 5089 "scanner.l"
15755 {
15756                                           docBlock+=scanYYtext;
15757                                           BEGIN(DocBlock);
15758                                         }
15759         YY_BREAK
15760 case 570:
15761 /* rule 570 can match eol */
15762 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15763 (yy_c_buf_p) = yy_cp -= 1;
15764 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15765 YY_RULE_SETUP
15766 #line 5093 "scanner.l"
15767 { // end of verbatim block
15768                                           docBlock+=scanYYtext;
15769                                           if (&scanYYtext[4]==docBlockName)
15770                                           {
15771                                             BEGIN(DocBlock);
15772                                           }
15773                                         }
15774         YY_BREAK
15775 case 571:
15776 /* rule 571 can match eol */
15777 YY_RULE_SETUP
15778 #line 5100 "scanner.l"
15779 { // start of a comment line
15780                                           if (docBlockName=="verbatim")
15781                                           {
15782                                             REJECT;
15783                                           }
15784                                         }
15785         YY_BREAK
15786 case 572:
15787 YY_RULE_SETUP
15788 #line 5106 "scanner.l"
15789 { // any character that is not special
15790                                           docBlock+=scanYYtext;
15791                                         }
15792         YY_BREAK
15793 case 573:
15794 YY_RULE_SETUP
15795 #line 5109 "scanner.l"
15796 {
15797                                           docBlock+=scanYYtext;
15798                                         }
15799         YY_BREAK
15800 case 574:
15801 /* rule 574 can match eol */
15802 YY_RULE_SETUP
15803 #line 5112 "scanner.l"
15804 { // newline
15805                                           docBlock+=*scanYYtext;
15806                                           yyLineNr++;
15807                                         }
15808         YY_BREAK
15809 case 575:
15810 YY_RULE_SETUP
15811 #line 5116 "scanner.l"
15812 { // any other character
15813                                           docBlock+=*scanYYtext;
15814                                         }
15815         YY_BREAK
15816 case YY_STATE_EOF(DocCopyBlock):
15817 #line 5119 "scanner.l"
15818 {
15819                                           warn(yyFileName,yyLineNr,
15820                                               "Warning: reached end of file while inside a %s block!\n"
15821                                               "The command that should end the block seems to be missing!\n",
15822                                               docBlockName.data());
15823                                           yyterminate();
15824                                         }
15825         YY_BREAK
15826 /* ------------- Prototype parser -------------- */
15827 case 576:
15828 YY_RULE_SETUP
15829 #line 5130 "scanner.l"
15830 {
15831                                           current->name+=scanYYtext;
15832                                         }
15833         YY_BREAK
15834 case 577:
15835 YY_RULE_SETUP
15836 #line 5133 "scanner.l"
15837 {
15838                                           current->args+=*scanYYtext;
15839                                           currentArgumentContext = PrototypeQual;
15840                                           fullArgString = current->args.copy();
15841                                           copyArgString = &current->args;
15842                                           BEGIN( ReadFuncArgType ) ;
15843                                         }
15844         YY_BREAK
15845 case 578:
15846 YY_RULE_SETUP
15847 #line 5140 "scanner.l"
15848 {
15849                                           current->type+=current->name+scanYYtext;
15850                                           current->name.resize(0);
15851                                           BEGIN( PrototypePtr );
15852                                         }
15853         YY_BREAK
15854 case 579:
15855 /* rule 579 can match eol */
15856 YY_RULE_SETUP
15857 #line 5145 "scanner.l"
15858 {
15859                                           current->name+=scanYYtext;
15860                                         }
15861         YY_BREAK
15862 case 580:
15863 YY_RULE_SETUP
15864 #line 5148 "scanner.l"
15865 {
15866                                           current->args+=*scanYYtext;
15867                                           currentArgumentContext = PrototypeQual;
15868                                           fullArgString = current->args.copy();
15869                                           copyArgString = &current->args;
15870                                           BEGIN( ReadFuncArgType ) ;
15871                                         }
15872         YY_BREAK
15873 case 581:
15874 YY_RULE_SETUP
15875 #line 5155 "scanner.l"
15876 {
15877                                           current->type+=')';
15878                                           BEGIN( Prototype );
15879                                         }
15880         YY_BREAK
15881 case 582:
15882 YY_RULE_SETUP
15883 #line 5159 "scanner.l"
15884 {
15885                                           current->name+=scanYYtext;
15886                                         }
15887         YY_BREAK
15888 case 583:
15889 YY_RULE_SETUP
15890 #line 5162 "scanner.l"
15891 {
15892                                           BEGIN( PrototypeSkipLine);
15893                                         }
15894         YY_BREAK
15895 case 584:
15896 YY_RULE_SETUP
15897 #line 5165 "scanner.l"
15898 { 
15899                                           current->args += " const "; 
15900                                           current->argList->constSpecifier=TRUE;
15901                                         }
15902         YY_BREAK
15903 case 585:
15904 YY_RULE_SETUP
15905 #line 5169 "scanner.l"
15906 { 
15907                                           current->args += " volatile "; 
15908                                           current->argList->volatileSpecifier=TRUE;
15909                                         }
15910         YY_BREAK
15911 case 586:
15912 YY_RULE_SETUP
15913 #line 5173 "scanner.l"
15914 { 
15915                                           current->args += " = 0"; 
15916                                           current->virt = Pure; 
15917                                           current->argList->pureSpecifier=TRUE;
15918                                         }
15919         YY_BREAK
15920 case 587:
15921 YY_RULE_SETUP
15922 #line 5178 "scanner.l"
15923 {
15924                                           current->exception = "throw(";
15925                                           BEGIN(PrototypeExc);
15926                                         }
15927         YY_BREAK
15928 case 588:
15929 YY_RULE_SETUP
15930 #line 5182 "scanner.l"
15931 {
15932                                           current->exception += ')';
15933                                           BEGIN(PrototypeQual);
15934                                         }
15935         YY_BREAK
15936 case 589:
15937 YY_RULE_SETUP
15938 #line 5186 "scanner.l"
15939 {
15940                                           current->exception += *scanYYtext;
15941                                         }
15942         YY_BREAK
15943 case 590:
15944 YY_RULE_SETUP
15945 #line 5189 "scanner.l"
15946 {
15947                                           current->args += *scanYYtext;
15948                                         }
15949         YY_BREAK
15950 case 591:
15951 YY_RULE_SETUP
15952 #line 5192 "scanner.l"
15953 {
15954                                           current->name += *scanYYtext;
15955                                         }
15956         YY_BREAK
15957 case 592:
15958 YY_RULE_SETUP
15959 #line 5195 "scanner.l"
15960 {
15961                                         }
15962         YY_BREAK
15963 /* ------------ Generic rules -------------- */
15964 case 593:
15965 /* rule 593 can match eol */
15966 *yy_cp = (yy_hold_char); /* undo effects of setting up scanYYtext */
15967 (yy_c_buf_p) = yy_cp -= 1;
15968 YY_DO_BEFORE_ACTION; /* set up scanYYtext again */
15969 YY_RULE_SETUP
15970 #line 5202 "scanner.l"
15971 { 
15972                                           BEGIN( lastCContext ) ;
15973                                         }
15974         YY_BREAK
15975 case 594:
15976 YY_RULE_SETUP
15977 #line 5205 "scanner.l"
15978 
15979         YY_BREAK
15980 case 595:
15981 /* rule 595 can match eol */
15982 YY_RULE_SETUP
15983 #line 5206 "scanner.l"
15984 { yyLineNr++ ; }
15985         YY_BREAK
15986 case 596:
15987 YY_RULE_SETUP
15988 #line 5207 "scanner.l"
15989 {
15990                                           if (insideIDL && insideCppQuote)
15991                                           {
15992                                             BEGIN(EndCppQuote);
15993                                           }
15994                                         }
15995         YY_BREAK
15996 case 597:
15997 YY_RULE_SETUP
15998 #line 5213 "scanner.l"
15999 {       
16000                                           if (!insidePHP)
16001                                             REJECT;
16002                                           lastCContext = YY_START ;
16003                                           BEGIN( SkipCxxComment ) ;
16004                                         }
16005         YY_BREAK
16006 case 598:
16007 YY_RULE_SETUP
16008 #line 5219 "scanner.l"
16009 {
16010                                           if (insidePHP)
16011                                           {
16012                                             lastStringContext=YY_START;
16013                                             BEGIN(SkipPHPString);
16014                                           }
16015                                         }
16016         YY_BREAK
16017 case 599:
16018 YY_RULE_SETUP
16019 #line 5226 "scanner.l"
16020 {
16021                                           if (insidePHP)
16022                                           {
16023                                             lastStringContext=YY_START;
16024                                             BEGIN(SkipString);
16025                                           }
16026                                         }
16027         YY_BREAK
16028 case 600:
16029 YY_RULE_SETUP
16030 #line 5233 "scanner.l"
16031 
16032         YY_BREAK
16033 case 601:
16034 YY_RULE_SETUP
16035 #line 5234 "scanner.l"
16036 
16037         YY_BREAK
16038 case 602:
16039 YY_RULE_SETUP
16040 #line 5235 "scanner.l"
16041 { lastCContext = YY_START ;
16042                                           BEGIN( SkipComment ) ;
16043                                         }
16044         YY_BREAK
16045 case 603:
16046 YY_RULE_SETUP
16047 #line 5238 "scanner.l"
16048 { BEGIN( lastCContext ) ; }
16049         YY_BREAK
16050 case 604:
16051 YY_RULE_SETUP
16052 #line 5239 "scanner.l"
16053 {       
16054                                           lastCContext = YY_START ;
16055                                           BEGIN( SkipCxxComment ) ;
16056                                         }
16057         YY_BREAK
16058 case 605:
16059 YY_RULE_SETUP
16060 #line 5243 "scanner.l"
16061 ECHO;
16062         YY_BREAK
16063 #line 16064 "<stdout>"
16064                         case YY_STATE_EOF(INITIAL):
16065                         case YY_STATE_EOF(Define):
16066                         case YY_STATE_EOF(DefineEnd):
16067                         case YY_STATE_EOF(CompoundName):
16068                         case YY_STATE_EOF(ClassVar):
16069                         case YY_STATE_EOF(CSConstraintName):
16070                         case YY_STATE_EOF(CSConstraintType):
16071                         case YY_STATE_EOF(ClassCategory):
16072                         case YY_STATE_EOF(ClassTemplSpec):
16073                         case YY_STATE_EOF(CliPropertyType):
16074                         case YY_STATE_EOF(CliOverride):
16075                         case YY_STATE_EOF(Bases):
16076                         case YY_STATE_EOF(BasesProt):
16077                         case YY_STATE_EOF(NextSemi):
16078                         case YY_STATE_EOF(BitFields):
16079                         case YY_STATE_EOF(FindMembers):
16080                         case YY_STATE_EOF(FindMembersPHP):
16081                         case YY_STATE_EOF(FindMemberName):
16082                         case YY_STATE_EOF(FindFields):
16083                         case YY_STATE_EOF(FindFieldArg):
16084                         case YY_STATE_EOF(Function):
16085                         case YY_STATE_EOF(FuncRound):
16086                         case YY_STATE_EOF(ExcpRound):
16087                         case YY_STATE_EOF(ExcpList):
16088                         case YY_STATE_EOF(FuncQual):
16089                         case YY_STATE_EOF(Operator):
16090                         case YY_STATE_EOF(Array):
16091                         case YY_STATE_EOF(ReadBody):
16092                         case YY_STATE_EOF(ReadNSBody):
16093                         case YY_STATE_EOF(ReadBodyIntf):
16094                         case YY_STATE_EOF(Using):
16095                         case YY_STATE_EOF(UsingDirective):
16096                         case YY_STATE_EOF(SkipCurly):
16097                         case YY_STATE_EOF(SkipCurlyCpp):
16098                         case YY_STATE_EOF(SkipCurlyEndDoc):
16099                         case YY_STATE_EOF(SkipString):
16100                         case YY_STATE_EOF(SkipPHPString):
16101                         case YY_STATE_EOF(SkipInits):
16102                         case YY_STATE_EOF(SkipCPP):
16103                         case YY_STATE_EOF(SkipCPPBlock):
16104                         case YY_STATE_EOF(SkipComment):
16105                         case YY_STATE_EOF(SkipCxxComment):
16106                         case YY_STATE_EOF(SkipCurlyBlock):
16107                         case YY_STATE_EOF(SkipRoundBlock):
16108                         case YY_STATE_EOF(Sharp):
16109                         case YY_STATE_EOF(SkipSharp):
16110                         case YY_STATE_EOF(SkipRound):
16111                         case YY_STATE_EOF(SkipSquare):
16112                         case YY_STATE_EOF(SkipRemainder):
16113                         case YY_STATE_EOF(TypedefName):
16114                         case YY_STATE_EOF(TryFunctionBlock):
16115                         case YY_STATE_EOF(TryFunctionBlockEnd):
16116                         case YY_STATE_EOF(Comment):
16117                         case YY_STATE_EOF(PackageName):
16118                         case YY_STATE_EOF(JavaImport):
16119                         case YY_STATE_EOF(CSAccessorDecl):
16120                         case YY_STATE_EOF(PreLineCtrl):
16121                         case YY_STATE_EOF(DefinePHP):
16122                         case YY_STATE_EOF(DefinePHPEnd):
16123                         case YY_STATE_EOF(OldStyleArgs):
16124                         case YY_STATE_EOF(SkipVerbString):
16125                         case YY_STATE_EOF(ObjCMethod):
16126                         case YY_STATE_EOF(ObjCReturnType):
16127                         case YY_STATE_EOF(ObjCParams):
16128                         case YY_STATE_EOF(ObjCParamType):
16129                         case YY_STATE_EOF(ObjCProtocolList):
16130                         case YY_STATE_EOF(ObjCPropAttr):
16131                         case YY_STATE_EOF(ObjCSkipStatement):
16132                         case YY_STATE_EOF(QtPropType):
16133                         case YY_STATE_EOF(QtPropName):
16134                         case YY_STATE_EOF(QtPropAttr):
16135                         case YY_STATE_EOF(QtPropRead):
16136                         case YY_STATE_EOF(QtPropWrite):
16137                         case YY_STATE_EOF(ReadInitializer):
16138                         case YY_STATE_EOF(GetCallType):
16139                         case YY_STATE_EOF(CppQuote):
16140                         case YY_STATE_EOF(EndCppQuote):
16141                         case YY_STATE_EOF(MemberSpec):
16142                         case YY_STATE_EOF(MemberSpecSkip):
16143                         case YY_STATE_EOF(EndTemplate):
16144                         case YY_STATE_EOF(FuncPtr):
16145                         case YY_STATE_EOF(FuncPtrOperator):
16146                         case YY_STATE_EOF(EndFuncPtr):
16147                         case YY_STATE_EOF(ReadFuncArgType):
16148                         case YY_STATE_EOF(ReadTempArgs):
16149                         case YY_STATE_EOF(IDLUnionCase):
16150                         case YY_STATE_EOF(NSAliasName):
16151                         case YY_STATE_EOF(NSAliasArg):
16152                         case YY_STATE_EOF(CopyString):
16153                         case YY_STATE_EOF(CopyPHPString):
16154                         case YY_STATE_EOF(CopyGString):
16155                         case YY_STATE_EOF(CopyPHPGString):
16156                         case YY_STATE_EOF(CopyRound):
16157                         case YY_STATE_EOF(CopyCurly):
16158                         case YY_STATE_EOF(GCopyRound):
16159                         case YY_STATE_EOF(GCopyCurly):
16160                         case YY_STATE_EOF(SkipUnionSwitch):
16161                         case YY_STATE_EOF(Specialization):
16162                         case YY_STATE_EOF(FuncPtrInit):
16163                         case YY_STATE_EOF(FuncFunc):
16164                         case YY_STATE_EOF(FuncFuncEnd):
16165                         case YY_STATE_EOF(FuncFuncType):
16166                         case YY_STATE_EOF(FuncFuncArray):
16167                         case YY_STATE_EOF(CopyArgString):
16168                         case YY_STATE_EOF(CopyArgPHPString):
16169                         case YY_STATE_EOF(CopyArgRound):
16170                         case YY_STATE_EOF(CopyArgSharp):
16171                         case YY_STATE_EOF(CopyArgComment):
16172                         case YY_STATE_EOF(CopyArgCommentLine):
16173                         case YY_STATE_EOF(CopyArgVerbatim):
16174                         case YY_STATE_EOF(IDLAttribute):
16175                         case YY_STATE_EOF(IDLProp):
16176                         case YY_STATE_EOF(IDLPropName):
16177                         case YY_STATE_EOF(Prototype):
16178                         case YY_STATE_EOF(PrototypePtr):
16179                         case YY_STATE_EOF(PrototypeQual):
16180                         case YY_STATE_EOF(PrototypeExc):
16181                         case YY_STATE_EOF(PrototypeSkipLine):
16182                         case YY_STATE_EOF(DocLine):
16183                         case YY_STATE_EOF(DocBlock):
16184                                 yyterminate();
16185 
16186         case YY_END_OF_BUFFER:
16187                 {
16188                 /* Amount of text matched not including the EOB char. */
16189                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
16190 
16191                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
16192                 *yy_cp = (yy_hold_char);
16193                 YY_RESTORE_YY_MORE_OFFSET
16194 
16195                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
16196                         {
16197                         /* We're scanning a new file or input source.  It's
16198                          * possible that this happened because the user
16199                          * just pointed scanYYin at a new source and called
16200                          * scanYYlex().  If so, then we have to assure
16201                          * consistency between YY_CURRENT_BUFFER and our
16202                          * globals.  Here is the right place to do so, because
16203                          * this is the first action (other than possibly a
16204                          * back-up) that will match for the new input source.
16205                          */
16206                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
16207                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = scanYYin;
16208                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
16209                         }
16210 
16211                 /* Note that here we test for yy_c_buf_p "<=" to the position
16212                  * of the first EOB in the buffer, since yy_c_buf_p will
16213                  * already have been incremented past the NUL character
16214                  * (since all states make transitions on EOB to the
16215                  * end-of-buffer state).  Contrast this with the test
16216                  * in input().
16217                  */
16218                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
16219                         { /* This was really a NUL. */
16220                         yy_state_type yy_next_state;
16221 
16222                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
16223 
16224                         yy_current_state = yy_get_previous_state(  );
16225 
16226                         /* Okay, we're now positioned to make the NUL
16227                          * transition.  We couldn't have
16228                          * yy_get_previous_state() go ahead and do it
16229                          * for us because it doesn't know how to deal
16230                          * with the possibility of jamming (and we don't
16231                          * want to build jamming into it because then it
16232                          * will run more slowly).
16233                          */
16234 
16235                         yy_next_state = yy_try_NUL_trans( yy_current_state );
16236 
16237                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
16238 
16239                         if ( yy_next_state )
16240                                 {
16241                                 /* Consume the NUL. */
16242                                 yy_cp = ++(yy_c_buf_p);
16243                                 yy_current_state = yy_next_state;
16244                                 goto yy_match;
16245                                 }
16246 
16247                         else
16248                                 {
16249                                 yy_cp = (yy_c_buf_p);
16250                                 goto yy_find_action;
16251                                 }
16252                         }
16253 
16254                 else switch ( yy_get_next_buffer(  ) )
16255                         {
16256                         case EOB_ACT_END_OF_FILE:
16257                                 {
16258                                 (yy_did_buffer_switch_on_eof) = 0;
16259 
16260                                 if ( scanYYwrap( ) )
16261                                         {
16262                                         /* Note: because we've taken care in
16263                                          * yy_get_next_buffer() to have set up
16264                                          * scanYYtext, we can now set up
16265                                          * yy_c_buf_p so that if some total
16266                                          * hoser (like flex itself) wants to
16267                                          * call the scanner after we return the
16268                                          * YY_NULL, it'll still work - another
16269                                          * YY_NULL will get returned.
16270                                          */
16271                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
16272 
16273                                         yy_act = YY_STATE_EOF(YY_START);
16274                                         goto do_action;
16275                                         }
16276 
16277                                 else
16278                                         {
16279                                         if ( ! (yy_did_buffer_switch_on_eof) )
16280                                                 YY_NEW_FILE;
16281                                         }
16282                                 break;
16283                                 }
16284 
16285                         case EOB_ACT_CONTINUE_SCAN:
16286                                 (yy_c_buf_p) =
16287                                         (yytext_ptr) + yy_amount_of_matched_text;
16288 
16289                                 yy_current_state = yy_get_previous_state(  );
16290 
16291                                 yy_cp = (yy_c_buf_p);
16292                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
16293                                 goto yy_match;
16294 
16295                         case EOB_ACT_LAST_MATCH:
16296                                 (yy_c_buf_p) =
16297                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
16298 
16299                                 yy_current_state = yy_get_previous_state(  );
16300 
16301                                 yy_cp = (yy_c_buf_p);
16302                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
16303                                 goto yy_find_action;
16304                         }
16305                 break;
16306                 }
16307 
16308         default:
16309                 YY_FATAL_ERROR(
16310                         "fatal flex scanner internal error--no action found" );
16311         } /* end of action switch */
16312                 } /* end of scanning one token */
16313 } /* end of scanYYlex */
16314 
16315 /* yy_get_next_buffer - try to read in a new buffer
16316  *
16317  * Returns a code representing an action:
16318  *      EOB_ACT_LAST_MATCH -
16319  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
16320  *      EOB_ACT_END_OF_FILE - end of file
16321  */
16322 static int yy_get_next_buffer (void)
16323 {
16324         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
16325         register char *source = (yytext_ptr);
16326         register int number_to_move, i;
16327         int ret_val;
16328 
16329         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
16330                 YY_FATAL_ERROR(
16331                 "fatal flex scanner internal error--end of buffer missed" );
16332 
16333         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
16334                 { /* Don't try to fill the buffer, so this is an EOF. */
16335                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
16336                         {
16337                         /* We matched a single character, the EOB, so
16338                          * treat this as a final EOF.
16339                          */
16340                         return EOB_ACT_END_OF_FILE;
16341                         }
16342 
16343                 else
16344                         {
16345                         /* We matched some text prior to the EOB, first
16346                          * process it.
16347                          */
16348                         return EOB_ACT_LAST_MATCH;
16349                         }
16350                 }
16351 
16352         /* Try to read more data. */
16353 
16354         /* First move last chars to start of buffer. */
16355         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
16356 
16357         for ( i = 0; i < number_to_move; ++i )
16358                 *(dest++) = *(source++);
16359 
16360         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
16361                 /* don't do the read, it's not guaranteed to return an EOF,
16362                  * just force an EOF
16363                  */
16364                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
16365 
16366         else
16367                 {
16368                         int num_to_read =
16369                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
16370 
16371                 while ( num_to_read <= 0 )
16372                         { /* Not enough room in the buffer - grow it. */
16373 
16374                         YY_FATAL_ERROR(
16375 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
16376 
16377                         }
16378 
16379                 if ( num_to_read > YY_READ_BUF_SIZE )
16380                         num_to_read = YY_READ_BUF_SIZE;
16381 
16382                 /* Read in more data. */
16383                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
16384                         (yy_n_chars), num_to_read );
16385 
16386                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
16387                 }
16388 
16389         if ( (yy_n_chars) == 0 )
16390                 {
16391                 if ( number_to_move == YY_MORE_ADJ )
16392                         {
16393                         ret_val = EOB_ACT_END_OF_FILE;
16394                         scanYYrestart(scanYYin  );
16395                         }
16396 
16397                 else
16398                         {
16399                         ret_val = EOB_ACT_LAST_MATCH;
16400                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
16401                                 YY_BUFFER_EOF_PENDING;
16402                         }
16403                 }
16404 
16405         else
16406                 ret_val = EOB_ACT_CONTINUE_SCAN;
16407 
16408         (yy_n_chars) += number_to_move;
16409         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
16410         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
16411 
16412         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
16413 
16414         return ret_val;
16415 }
16416 
16417 /* yy_get_previous_state - get the state just before the EOB char was reached */
16418 
16419     static yy_state_type yy_get_previous_state (void)
16420 {
16421         register yy_state_type yy_current_state;
16422         register char *yy_cp;
16423     
16424         yy_current_state = (yy_start);
16425         yy_current_state += YY_AT_BOL();
16426 
16427         (yy_state_ptr) = (yy_state_buf);
16428         *(yy_state_ptr)++ = yy_current_state;
16429 
16430         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
16431                 {
16432                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
16433                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
16434                         {
16435                         yy_current_state = (int) yy_def[yy_current_state];
16436                         if ( yy_current_state >= 3550 )
16437                                 yy_c = yy_meta[(unsigned int) yy_c];
16438                         }
16439                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
16440                 *(yy_state_ptr)++ = yy_current_state;
16441                 }
16442 
16443         return yy_current_state;
16444 }
16445 
16446 /* yy_try_NUL_trans - try to make a transition on the NUL character
16447  *
16448  * synopsis
16449  *      next_state = yy_try_NUL_trans( current_state );
16450  */
16451     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
16452 {
16453         register int yy_is_jam;
16454     
16455         register YY_CHAR yy_c = 1;
16456         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
16457                 {
16458                 yy_current_state = (int) yy_def[yy_current_state];
16459                 if ( yy_current_state >= 3550 )
16460                         yy_c = yy_meta[(unsigned int) yy_c];
16461                 }
16462         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
16463         yy_is_jam = (yy_current_state == 3549);
16464         if ( ! yy_is_jam )
16465                 *(yy_state_ptr)++ = yy_current_state;
16466 
16467         return yy_is_jam ? 0 : yy_current_state;
16468 }
16469 
16470     static void yyunput (int c, register char * yy_bp )
16471 {
16472         register char *yy_cp;
16473     
16474     yy_cp = (yy_c_buf_p);
16475 
16476         /* undo effects of setting up scanYYtext */
16477         *yy_cp = (yy_hold_char);
16478 
16479         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
16480                 { /* need to shift things up to make room */
16481                 /* +2 for EOB chars. */
16482                 register int number_to_move = (yy_n_chars) + 2;
16483                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
16484                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
16485                 register char *source =
16486                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
16487 
16488                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
16489                         *--dest = *--source;
16490 
16491                 yy_cp += (int) (dest - source);
16492                 yy_bp += (int) (dest - source);
16493                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
16494                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
16495 
16496                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
16497                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
16498                 }
16499 
16500         *--yy_cp = (char) c;
16501 
16502         (yytext_ptr) = yy_bp;
16503         (yy_hold_char) = *yy_cp;
16504         (yy_c_buf_p) = yy_cp;
16505 }
16506 
16507 #ifndef YY_NO_INPUT
16508 #ifdef __cplusplus
16509     static int yyinput (void)
16510 #else
16511     static int input  (void)
16512 #endif
16513 
16514 {
16515         int c;
16516     
16517         *(yy_c_buf_p) = (yy_hold_char);
16518 
16519         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
16520                 {
16521                 /* yy_c_buf_p now points to the character we want to return.
16522                  * If this occurs *before* the EOB characters, then it's a
16523                  * valid NUL; if not, then we've hit the end of the buffer.
16524                  */
16525                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
16526                         /* This was really a NUL. */
16527                         *(yy_c_buf_p) = '\0';
16528 
16529                 else
16530                         { /* need more input */
16531                         int offset = (yy_c_buf_p) - (yytext_ptr);
16532                         ++(yy_c_buf_p);
16533 
16534                         switch ( yy_get_next_buffer(  ) )
16535                                 {
16536                                 case EOB_ACT_LAST_MATCH:
16537                                         /* This happens because yy_g_n_b()
16538                                          * sees that we've accumulated a
16539                                          * token and flags that we need to
16540                                          * try matching the token before
16541                                          * proceeding.  But for input(),
16542                                          * there's no matching to consider.
16543                                          * So convert the EOB_ACT_LAST_MATCH
16544                                          * to EOB_ACT_END_OF_FILE.
16545                                          */
16546 
16547                                         /* Reset buffer status. */
16548                                         scanYYrestart(scanYYin );
16549 
16550                                         /*FALLTHROUGH*/
16551 
16552                                 case EOB_ACT_END_OF_FILE:
16553                                         {
16554                                         if ( scanYYwrap( ) )
16555                                                 return 0;
16556 
16557                                         if ( ! (yy_did_buffer_switch_on_eof) )
16558                                                 YY_NEW_FILE;
16559 #ifdef __cplusplus
16560                                         return yyinput();
16561 #else
16562                                         return input();
16563 #endif
16564                                         }
16565 
16566                                 case EOB_ACT_CONTINUE_SCAN:
16567                                         (yy_c_buf_p) = (yytext_ptr) + offset;
16568                                         break;
16569                                 }
16570                         }
16571                 }
16572 
16573         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
16574         *(yy_c_buf_p) = '\0';   /* preserve scanYYtext */
16575         (yy_hold_char) = *++(yy_c_buf_p);
16576 
16577         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
16578 
16579         return c;
16580 }
16581 #endif  /* ifndef YY_NO_INPUT */
16582 
16588     void scanYYrestart  (FILE * input_file )
16589 {
16590     
16591         if ( ! YY_CURRENT_BUFFER ){
16592         scanYYensure_buffer_stack ();
16593                 YY_CURRENT_BUFFER_LVALUE =
16594             scanYY_create_buffer(scanYYin,YY_BUF_SIZE );
16595         }
16596 
16597         scanYY_init_buffer(YY_CURRENT_BUFFER,input_file );
16598         scanYY_load_buffer_state( );
16599 }
16600 
16605     void scanYY_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
16606 {
16607     
16608         /* TODO. We should be able to replace this entire function body
16609          * with
16610          *              scanYYpop_buffer_state();
16611          *              scanYYpush_buffer_state(new_buffer);
16612      */
16613         scanYYensure_buffer_stack ();
16614         if ( YY_CURRENT_BUFFER == new_buffer )
16615                 return;
16616 
16617         if ( YY_CURRENT_BUFFER )
16618                 {
16619                 /* Flush out information for old buffer. */
16620                 *(yy_c_buf_p) = (yy_hold_char);
16621                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
16622                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
16623                 }
16624 
16625         YY_CURRENT_BUFFER_LVALUE = new_buffer;
16626         scanYY_load_buffer_state( );
16627 
16628         /* We don't actually know whether we did this switch during
16629          * EOF (scanYYwrap()) processing, but the only time this flag
16630          * is looked at is after scanYYwrap() is called, so it's safe
16631          * to go ahead and always set it.
16632          */
16633         (yy_did_buffer_switch_on_eof) = 1;
16634 }
16635 
16636 static void scanYY_load_buffer_state  (void)
16637 {
16638         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
16639         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
16640         scanYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
16641         (yy_hold_char) = *(yy_c_buf_p);
16642 }
16643 
16650     YY_BUFFER_STATE scanYY_create_buffer  (FILE * file, int  size )
16651 {
16652         YY_BUFFER_STATE b;
16653     
16654         b = (YY_BUFFER_STATE) scanYYalloc(sizeof( struct yy_buffer_state )  );
16655         if ( ! b )
16656                 YY_FATAL_ERROR( "out of dynamic memory in scanYY_create_buffer()" );
16657 
16658         b->yy_buf_size = size;
16659 
16660         /* yy_ch_buf has to be 2 characters longer than the size given because
16661          * we need to put in 2 end-of-buffer characters.
16662          */
16663         b->yy_ch_buf = (char *) scanYYalloc(b->yy_buf_size + 2  );
16664         if ( ! b->yy_ch_buf )
16665                 YY_FATAL_ERROR( "out of dynamic memory in scanYY_create_buffer()" );
16666 
16667         b->yy_is_our_buffer = 1;
16668 
16669         scanYY_init_buffer(b,file );
16670 
16671         return b;
16672 }
16673 
16678     void scanYY_delete_buffer (YY_BUFFER_STATE  b )
16679 {
16680     
16681         if ( ! b )
16682                 return;
16683 
16684         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
16685                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
16686 
16687         if ( b->yy_is_our_buffer )
16688                 scanYYfree((void *) b->yy_ch_buf  );
16689 
16690         scanYYfree((void *) b  );
16691 }
16692 
16693 #ifndef __cplusplus
16694 extern int isatty (int );
16695 #endif /* __cplusplus */
16696     
16697 /* Initializes or reinitializes a buffer.
16698  * This function is sometimes called more than once on the same buffer,
16699  * such as during a scanYYrestart() or at EOF.
16700  */
16701     static void scanYY_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
16702 
16703 {
16704         int oerrno = errno;
16705     
16706         scanYY_flush_buffer(b );
16707 
16708         b->yy_input_file = file;
16709         b->yy_fill_buffer = 1;
16710 
16711     /* If b is the current buffer, then scanYY_init_buffer was _probably_
16712      * called from scanYYrestart() or through yy_get_next_buffer.
16713      * In that case, we don't want to reset the lineno or column.
16714      */
16715     if (b != YY_CURRENT_BUFFER){
16716         b->yy_bs_lineno = 1;
16717         b->yy_bs_column = 0;
16718     }
16719 
16720         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
16721     
16722         errno = oerrno;
16723 }
16724 
16729     void scanYY_flush_buffer (YY_BUFFER_STATE  b )
16730 {
16731         if ( ! b )
16732                 return;
16733 
16734         b->yy_n_chars = 0;
16735 
16736         /* We always need two end-of-buffer characters.  The first causes
16737          * a transition to the end-of-buffer state.  The second causes
16738          * a jam in that state.
16739          */
16740         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
16741         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
16742 
16743         b->yy_buf_pos = &b->yy_ch_buf[0];
16744 
16745         b->yy_at_bol = 1;
16746         b->yy_buffer_status = YY_BUFFER_NEW;
16747 
16748         if ( b == YY_CURRENT_BUFFER )
16749                 scanYY_load_buffer_state( );
16750 }
16751 
16758 void scanYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
16759 {
16760         if (new_buffer == NULL)
16761                 return;
16762 
16763         scanYYensure_buffer_stack();
16764 
16765         /* This block is copied from scanYY_switch_to_buffer. */
16766         if ( YY_CURRENT_BUFFER )
16767                 {
16768                 /* Flush out information for old buffer. */
16769                 *(yy_c_buf_p) = (yy_hold_char);
16770                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
16771                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
16772                 }
16773 
16774         /* Only push if top exists. Otherwise, replace top. */
16775         if (YY_CURRENT_BUFFER)
16776                 (yy_buffer_stack_top)++;
16777         YY_CURRENT_BUFFER_LVALUE = new_buffer;
16778 
16779         /* copied from scanYY_switch_to_buffer. */
16780         scanYY_load_buffer_state( );
16781         (yy_did_buffer_switch_on_eof) = 1;
16782 }
16783 
16788 void scanYYpop_buffer_state (void)
16789 {
16790         if (!YY_CURRENT_BUFFER)
16791                 return;
16792 
16793         scanYY_delete_buffer(YY_CURRENT_BUFFER );
16794         YY_CURRENT_BUFFER_LVALUE = NULL;
16795         if ((yy_buffer_stack_top) > 0)
16796                 --(yy_buffer_stack_top);
16797 
16798         if (YY_CURRENT_BUFFER) {
16799                 scanYY_load_buffer_state( );
16800                 (yy_did_buffer_switch_on_eof) = 1;
16801         }
16802 }
16803 
16804 /* Allocates the stack if it does not exist.
16805  *  Guarantees space for at least one push.
16806  */
16807 static void scanYYensure_buffer_stack (void)
16808 {
16809         int num_to_alloc;
16810     
16811         if (!(yy_buffer_stack)) {
16812 
16813                 /* First allocation is just for 2 elements, since we don't know if this
16814                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
16815                  * immediate realloc on the next call.
16816          */
16817                 num_to_alloc = 1;
16818                 (yy_buffer_stack) = (struct yy_buffer_state**)scanYYalloc
16819                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
16820                                                                 );
16821                 
16822                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
16823                                 
16824                 (yy_buffer_stack_max) = num_to_alloc;
16825                 (yy_buffer_stack_top) = 0;
16826                 return;
16827         }
16828 
16829         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
16830 
16831                 /* Increase the buffer to prepare for a possible push. */
16832                 int grow_size = 8 /* arbitrary grow size */;
16833 
16834                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
16835                 (yy_buffer_stack) = (struct yy_buffer_state**)scanYYrealloc
16836                                                                 ((yy_buffer_stack),
16837                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
16838                                                                 );
16839 
16840                 /* zero only the new slots.*/
16841                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
16842                 (yy_buffer_stack_max) = num_to_alloc;
16843         }
16844 }
16845 
16852 YY_BUFFER_STATE scanYY_scan_buffer  (char * base, yy_size_t  size )
16853 {
16854         YY_BUFFER_STATE b;
16855     
16856         if ( size < 2 ||
16857              base[size-2] != YY_END_OF_BUFFER_CHAR ||
16858              base[size-1] != YY_END_OF_BUFFER_CHAR )
16859                 /* They forgot to leave room for the EOB's. */
16860                 return 0;
16861 
16862         b = (YY_BUFFER_STATE) scanYYalloc(sizeof( struct yy_buffer_state )  );
16863         if ( ! b )
16864                 YY_FATAL_ERROR( "out of dynamic memory in scanYY_scan_buffer()" );
16865 
16866         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
16867         b->yy_buf_pos = b->yy_ch_buf = base;
16868         b->yy_is_our_buffer = 0;
16869         b->yy_input_file = 0;
16870         b->yy_n_chars = b->yy_buf_size;
16871         b->yy_is_interactive = 0;
16872         b->yy_at_bol = 1;
16873         b->yy_fill_buffer = 0;
16874         b->yy_buffer_status = YY_BUFFER_NEW;
16875 
16876         scanYY_switch_to_buffer(b  );
16877 
16878         return b;
16879 }
16880 
16889 YY_BUFFER_STATE scanYY_scan_string (yyconst char * yystr )
16890 {
16891     
16892         return scanYY_scan_bytes(yystr,strlen(yystr) );
16893 }
16894 
16902 YY_BUFFER_STATE scanYY_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
16903 {
16904         YY_BUFFER_STATE b;
16905         char *buf;
16906         yy_size_t n;
16907         int i;
16908     
16909         /* Get memory for full buffer, including space for trailing EOB's. */
16910         n = _yybytes_len + 2;
16911         buf = (char *) scanYYalloc(n  );
16912         if ( ! buf )
16913                 YY_FATAL_ERROR( "out of dynamic memory in scanYY_scan_bytes()" );
16914 
16915         for ( i = 0; i < _yybytes_len; ++i )
16916                 buf[i] = yybytes[i];
16917 
16918         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
16919 
16920         b = scanYY_scan_buffer(buf,n );
16921         if ( ! b )
16922                 YY_FATAL_ERROR( "bad buffer in scanYY_scan_bytes()" );
16923 
16924         /* It's okay to grow etc. this buffer, and we should throw it
16925          * away when we're done.
16926          */
16927         b->yy_is_our_buffer = 1;
16928 
16929         return b;
16930 }
16931 
16932 #ifndef YY_EXIT_FAILURE
16933 #define YY_EXIT_FAILURE 2
16934 #endif
16935 
16936 static void yy_fatal_error (yyconst char* msg )
16937 {
16938         (void) fprintf( stderr, "%s\n", msg );
16939         exit( YY_EXIT_FAILURE );
16940 }
16941 
16942 /* Redefine yyless() so it works in section 3 code. */
16943 
16944 #undef yyless
16945 #define yyless(n) \
16946         do \
16947                 { \
16948                 /* Undo effects of setting up scanYYtext. */ \
16949         int yyless_macro_arg = (n); \
16950         YY_LESS_LINENO(yyless_macro_arg);\
16951                 scanYYtext[scanYYleng] = (yy_hold_char); \
16952                 (yy_c_buf_p) = scanYYtext + yyless_macro_arg; \
16953                 (yy_hold_char) = *(yy_c_buf_p); \
16954                 *(yy_c_buf_p) = '\0'; \
16955                 scanYYleng = yyless_macro_arg; \
16956                 } \
16957         while ( 0 )
16958 
16959 /* Accessor  methods (get/set functions) to struct members. */
16960 
16964 int scanYYget_lineno  (void)
16965 {
16966         
16967     return scanYYlineno;
16968 }
16969 
16973 FILE *scanYYget_in  (void)
16974 {
16975         return scanYYin;
16976 }
16977 
16981 FILE *scanYYget_out  (void)
16982 {
16983         return scanYYout;
16984 }
16985 
16989 int scanYYget_leng  (void)
16990 {
16991         return scanYYleng;
16992 }
16993 
16998 char *scanYYget_text  (void)
16999 {
17000         return scanYYtext;
17001 }
17002 
17007 void scanYYset_lineno (int  line_number )
17008 {
17009     
17010     scanYYlineno = line_number;
17011 }
17012 
17019 void scanYYset_in (FILE *  in_str )
17020 {
17021         scanYYin = in_str ;
17022 }
17023 
17024 void scanYYset_out (FILE *  out_str )
17025 {
17026         scanYYout = out_str ;
17027 }
17028 
17029 int scanYYget_debug  (void)
17030 {
17031         return scanYY_flex_debug;
17032 }
17033 
17034 void scanYYset_debug (int  bdebug )
17035 {
17036         scanYY_flex_debug = bdebug ;
17037 }
17038 
17039 static int yy_init_globals (void)
17040 {
17041         /* Initialization is the same as for the non-reentrant scanner.
17042      * This function is called from scanYYlex_destroy(), so don't allocate here.
17043      */
17044 
17045     (yy_buffer_stack) = 0;
17046     (yy_buffer_stack_top) = 0;
17047     (yy_buffer_stack_max) = 0;
17048     (yy_c_buf_p) = (char *) 0;
17049     (yy_init) = 0;
17050     (yy_start) = 0;
17051 
17052     (yy_state_buf) = 0;
17053     (yy_state_ptr) = 0;
17054     (yy_full_match) = 0;
17055     (yy_lp) = 0;
17056 
17057 /* Defined in main.c */
17058 #ifdef YY_STDINIT
17059     scanYYin = stdin;
17060     scanYYout = stdout;
17061 #else
17062     scanYYin = (FILE *) 0;
17063     scanYYout = (FILE *) 0;
17064 #endif
17065 
17066     /* For future reference: Set errno on error, since we are called by
17067      * scanYYlex_init()
17068      */
17069     return 0;
17070 }
17071 
17072 /* scanYYlex_destroy is for both reentrant and non-reentrant scanners. */
17073 int scanYYlex_destroy  (void)
17074 {
17075     
17076     /* Pop the buffer stack, destroying each element. */
17077         while(YY_CURRENT_BUFFER){
17078                 scanYY_delete_buffer(YY_CURRENT_BUFFER  );
17079                 YY_CURRENT_BUFFER_LVALUE = NULL;
17080                 scanYYpop_buffer_state();
17081         }
17082 
17083         /* Destroy the stack itself. */
17084         scanYYfree((yy_buffer_stack) );
17085         (yy_buffer_stack) = NULL;
17086 
17087     scanYYfree ( (yy_state_buf) );
17088     (yy_state_buf)  = NULL;
17089 
17090     /* Reset the globals. This is important in a non-reentrant scanner so the next time
17091      * scanYYlex() is called, initialization will occur. */
17092     yy_init_globals( );
17093 
17094     return 0;
17095 }
17096 
17097 /*
17098  * Internal utility routines.
17099  */
17100 
17101 #ifndef yytext_ptr
17102 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
17103 {
17104         register int i;
17105         for ( i = 0; i < n; ++i )
17106                 s1[i] = s2[i];
17107 }
17108 #endif
17109 
17110 #ifdef YY_NEED_STRLEN
17111 static int yy_flex_strlen (yyconst char * s )
17112 {
17113         register int n;
17114         for ( n = 0; s[n]; ++n )
17115                 ;
17116 
17117         return n;
17118 }
17119 #endif
17120 
17121 void *scanYYalloc (yy_size_t  size )
17122 {
17123         return (void *) malloc( size );
17124 }
17125 
17126 void *scanYYrealloc  (void * ptr, yy_size_t  size )
17127 {
17128         /* The cast to (char *) in the following accommodates both
17129          * implementations that use char* generic pointers, and those
17130          * that use void* generic pointers.  It works with the latter
17131          * because both ANSI C and C++ allow castless assignment from
17132          * any pointer type to void*, and deal with argument conversions
17133          * as though doing an assignment.
17134          */
17135         return (void *) realloc( (char *) ptr, size );
17136 }
17137 
17138 void scanYYfree (void * ptr )
17139 {
17140         free( (char *) ptr );   /* see scanYYrealloc() for (char *) cast */
17141 }
17142 
17143 #define YYTABLES_NAME "yytables"
17144 
17145 #line 5243 "scanner.l"
17146 
17147 
17148 
17149 //----------------------------------------------------------------------------
17150 
17151 static void startCommentBlock(bool brief)
17152 {
17153   if (brief)
17154   {
17155     current->briefFile = yyFileName;
17156     current->briefLine = yyLineNr;
17157   }
17158   else
17159   {
17160     current->docFile = yyFileName;
17161     current->docLine = yyLineNr;
17162   }
17163 }
17164   
17165 //----------------------------------------------------------------------------
17166 
17167 static void newEntry()
17168 {
17169   current_root->addSubEntry(current);
17170   previous = current;
17171   current = new Entry ;
17172   initEntry();
17173 }
17174 
17175 static void handleCommentBlock(const QCString &doc,bool brief)
17176 {
17177   static bool hideInBodyDocs = Config_getBool("HIDE_IN_BODY_DOCS");
17178   int position=0;
17179   bool needsEntry=FALSE;
17180   if (docBlockInBody && hideInBodyDocs) return;
17181   //printf("parseCommentBlock [%s]\n",doc.data());
17182   while (parseCommentBlock(
17183         g_thisParser,
17184         docBlockInBody ? previous : current,
17185         doc,        // text
17186         yyFileName, // file
17187         brief ? current->briefLine : current->docLine,   // line of block start
17188         docBlockInBody ? FALSE : brief, 
17189         docBlockInBody ? FALSE : docBlockAutoBrief,
17190         docBlockInBody,
17191         protection,
17192         position,
17193         needsEntry
17194         )
17195      ) 
17196   {
17197     //printf("parseCommentBlock position=%d [%s]\n",position,doc.data()+position);
17198     if (needsEntry) newEntry();
17199   }
17200   if (needsEntry)
17201   {
17202     newEntry();
17203   }
17204 
17205   if (docBlockTerm)
17206   {
17207     unput(docBlockTerm);
17208     docBlockTerm=0;
17209   }
17210 }
17211 
17212 static void handleParametersCommentBlocks(ArgumentList *al)
17213 {
17214   //printf(">>>>>>> handleParametersCommentBlocks()\n");
17215   ArgumentListIterator ali(*al);
17216   Argument *a;
17217   for (ali.toFirst();(a=ali.current());++ali)
17218   {
17219     //printf("    Param %s docs=%s\n",a->name.data(),a->docs.data());
17220     if (!a->docs.isEmpty())
17221     {
17222       int position=0;
17223       bool needsEntry;
17224 
17225       // save context
17226       QCString orgDoc   = current->doc;
17227       QCString orgBrief = current->brief;
17228       int orgDocLine    = current->docLine;
17229       int orgBriefLine  = current->briefLine;
17230 
17231       current->doc.resize(0);
17232       current->brief.resize(0);
17233 
17234       //printf("handleParametersCommentBlock [%s]\n",doc.data());
17235       while (parseCommentBlock(
17236              g_thisParser,
17237              current,
17238              a->docs,            // text
17239              yyFileName,         // file
17240              current->docLine,   // line of block start
17241              FALSE, 
17242              FALSE,
17243              FALSE,
17244              protection,
17245              position,
17246              needsEntry
17247             )
17248           ) 
17249       {
17250         //printf("handleParametersCommentBlock position=%d [%s]\n",position,doc.data()+position);
17251         if (needsEntry) newEntry();
17252       }
17253       if (needsEntry)
17254       {
17255         newEntry();
17256       }
17257       a->docs = current->doc;
17258 
17259       // restore context
17260       current->doc       = orgDoc;
17261       current->brief     = orgBrief;
17262       current->docLine   = orgDocLine;
17263       current->briefLine = orgBriefLine;
17264     }
17265   }
17266 }
17267 
17268 
17269 //----------------------------------------------------------------------------
17270 
17271 static void parseCompounds(Entry *rt)
17272 {
17273   //printf("parseCompounds(%s)\n",rt->name.data());
17274   g_inputFromFile = FALSE;
17275   EntryListIterator eli(*rt->children());
17276   Entry *ce;
17277   for (;(ce=eli.current());++eli)
17278   {
17279     if (!ce->program.isEmpty())
17280     {
17281       //printf("-- %s ---------\n%s\n---------------\n",
17282       //  ce->name.data(),ce->program.data());
17283       // init scanner state
17284       padCount=0;
17285       depthIf = 0;
17286       inputString = ce->program;
17287       inputPosition = 0;
17288       scanYYrestart( scanYYin ) ;
17289       if (ce->section==Entry::ENUM_SEC)
17290         BEGIN( FindFields ) ;
17291       else
17292         BEGIN( FindMembers ) ;
17293       current_root = ce ;
17294       yyFileName = ce->fileName;
17295       //setContext();
17296       yyLineNr = ce->startLine ;
17297       insideObjC = ce->objc;
17298       //printf("---> Inner block starts at line %d objC=%d\n",yyLineNr,insideObjC);
17299       //current->reset();
17300       if (current) delete current;
17301       current = new Entry;
17302       gstat = FALSE;
17303       int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2;
17304       // set default protection based on the compound type
17305       if( ce->section==Entry::CLASS_SEC ) // class
17306       {
17307 
17308         if (insidePHP || insideD || insideJS)
17309         {
17310           current->protection = protection = Public ; 
17311         }
17312         else if (insideJava)
17313         {
17314           current->protection = protection = Package ; 
17315         }
17316         else if (ce->spec&(Entry::Interface | Entry::Ref | Entry::Value | Entry::Struct | Entry::Union))
17317         {
17318           if (ce->objc)
17319           {
17320             current->protection = protection = Protected ;
17321           }
17322           else
17323           {
17324             current->protection = protection = Public ;
17325           }
17326         }
17327         else 
17328         {
17329           current->protection = protection = Private ;
17330         }
17331       }
17332       else if (ce->section == Entry::ENUM_SEC ) // enum
17333       {
17334         current->protection = protection = ce->protection;
17335       }
17336       else if (!ce->name.isEmpty() && ce->name.at(ni)=='@') // unnamed union or namespace
17337       {
17338         if (ce->section == Entry::NAMESPACE_SEC ) // unnamed namespace
17339         {
17340           current->stat = gstat = TRUE;
17341         }
17342         current->protection = protection = ce->protection;
17343       }
17344       else // named struct, union, protocol, category
17345       {
17346         current->protection = protection = Public ;
17347       }
17348       mtype = Method;
17349       virt = Normal;
17350       //printf("name=%s current->stat=%d gstat=%d\n",ce->name.data(),current->stat,gstat);
17351 
17352       //memberGroupId = DOX_NOGROUP;
17353       //memberGroupRelates.resize(0);
17354       //memberGroupInside.resize(0);
17355       groupEnterCompound(yyFileName,yyLineNr,ce->name);
17356       
17357       scanYYlex() ;
17358       g_lexInit=TRUE;
17359       //forceEndGroup();
17360 
17361       groupLeaveCompound(yyFileName,yyLineNr,ce->name);
17362       
17363       delete current; current=0;
17364       ce->program.resize(0);
17365 
17366 
17367       if (depthIf>0)
17368       {
17369         warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
17370       }
17371     }
17372     parseCompounds(ce);
17373   }
17374 }
17375 
17376 //----------------------------------------------------------------------------
17377 
17378 static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
17379 {
17380   initParser();
17381   //g_inputFromFile = TRUE;
17382 
17383   inputString = fileBuf;
17384   inputPosition = 0;
17385   g_inputFromFile = FALSE;
17386 
17387   //anonCount     = 0;  // don't reset per file
17388   depthIf       = 0;
17389   protection    = Public;
17390   mtype         = Method;
17391   gstat         = FALSE;
17392   virt          = Normal;
17393   current_root  = rt;
17394   global_root   = rt;
17395   inputFile.setName(fileName);
17396   if (inputFile.open(IO_ReadOnly))
17397   {
17398     yyLineNr= 1 ; 
17399     yyFileName = fileName;
17400     setContext();
17401     msg("Parsing file %s...\n",yyFileName.data());
17402 
17403     current_root  = rt ;
17404     initParser();
17405     groupEnterFile(yyFileName,yyLineNr);
17406     current       = new Entry;
17407     //printf("current=%p current_root=%p\n",current,current_root);
17408     int sec=guessSection(yyFileName);
17409     if (sec)
17410     {
17411       current->name    = yyFileName;
17412       current->section = sec;
17413       current_root->addSubEntry(current);
17414       current          = new Entry;
17415     }
17416     current->reset();
17417     scanYYrestart( scanYYin );
17418     if ( insidePHP )
17419     {
17420       BEGIN( FindMembersPHP );
17421     }
17422     else
17423     {
17424       BEGIN( FindMembers );
17425     }
17426 
17427     scanYYlex();
17428     g_lexInit=TRUE;
17429 
17430     if (YY_START==Comment)
17431     {
17432       warn(yyFileName,yyLineNr,"File ended in the middle of a comment block! Perhaps a missing \\endcode?");
17433     }
17434 
17435     //forceEndGroup();
17436     groupLeaveFile(yyFileName,yyLineNr);
17437 
17438     if (depthIf>0)
17439     {
17440       warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
17441     }
17442 
17443     rt->program.resize(0);
17444     delete current; current=0;
17445 
17446     parseCompounds(rt);
17447 
17448     inputFile.close();
17449 
17450     anonNSCount++;
17451   }
17452 }
17453 
17454 //----------------------------------------------------------------------------
17455 
17456 static void parsePrototype(const QCString &text)
17457 {
17458   //printf("**** parsePrototype(%s) begin\n",text.data());
17459   if (text.isEmpty()) 
17460   {
17461     warn(yyFileName,yyLineNr,"Empty prototype found!");
17462     return;
17463   }
17464 
17465   const char *orgInputString;
17466   int orgInputPosition;
17467   YY_BUFFER_STATE orgState;
17468   bool orgInputFromFile;
17469   
17470   // save scanner state
17471   orgState = YY_CURRENT_BUFFER;
17472   scanYY_switch_to_buffer(scanYY_create_buffer(scanYYin,YY_BUF_SIZE));
17473   orgInputString = inputString; 
17474   orgInputPosition = inputPosition;
17475   orgInputFromFile = g_inputFromFile;
17476 
17477   // set new string
17478   inputString = text;
17479   inputPosition = 0;
17480   g_inputFromFile = FALSE;
17481   scanYYrestart( scanYYin );
17482   BEGIN(Prototype);
17483   scanYYlex();
17484   g_lexInit=TRUE;
17485 
17486   current->name = current->name.stripWhiteSpace();
17487   if (current->section == Entry::MEMBERDOC_SEC && current->args.isEmpty())
17488     current->section = Entry::VARIABLEDOC_SEC;
17489 
17490   // restore original scanner state
17491   YY_BUFFER_STATE tmpState = YY_CURRENT_BUFFER;
17492   scanYY_switch_to_buffer(orgState);
17493   scanYY_delete_buffer(tmpState);
17494   inputString = orgInputString; 
17495   inputPosition = orgInputPosition;
17496   g_inputFromFile = orgInputFromFile;
17497 
17498   //printf("**** parsePrototype end\n");
17499 }
17500 
17501 void scanFreeScanner()
17502 {
17503 #if defined(YY_FLEX_SUBMINOR_VERSION)
17504   if (g_lexInit)
17505   {
17506     scanYYlex_destroy();
17507   }
17508 #endif
17509 }
17510 
17511 //static void handleGroupStartCommand(const char *header)
17512 //{
17513 //  memberGroupHeader=header;
17514 //  startGroupInDoc();
17515 //}
17516 //
17517 //static void handleGroupEndCommand()
17518 //{
17519 //  endGroup();
17520 //  previous=0;
17521 //}
17522 
17523 //----------------------------------------------------------------------------
17524 
17525 void CLanguageScanner::parseInput(const char *fileName,const char *fileBuf,Entry *root)
17526 {
17527   g_thisParser = this;
17528   ::parseMain(fileName,fileBuf,root);
17529 }
17530 
17531 void CLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf,
17532                    const char * scopeName,
17533                    const QCString & input,
17534                    bool isExampleBlock,
17535                    const char * exampleName,
17536                    FileDef * fileDef,
17537                    int startLine,
17538                    int endLine,
17539                    bool inlineFragment,
17540                    MemberDef *memberDef
17541                   )
17542 {
17543   ::parseCCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName,
17544                fileDef,startLine,endLine,inlineFragment,memberDef);
17545 }
17546 
17547 bool CLanguageScanner::needsPreprocessing(const QCString &extension)
17548 {
17549   QCString fe=extension.lower();
17550   return 
17551    !( fe==".java" || fe==".as"  || fe==".d"    || fe==".php" || 
17552       fe==".php4" || fe==".inc" || fe==".phtml" 
17553     );
17554 }
17555 
17556 void CLanguageScanner::resetCodeParserState()
17557 {
17558   ::resetCCodeParserState();
17559 }
17560 
17561 void CLanguageScanner::parsePrototype(const char *text)
17562 {
17563   ::parsePrototype(text);
17564 }
17565 
17566 //----------------------------------------------------------------------------
17567 
17568 #if !defined(YY_FLEX_SUBMINOR_VERSION) 
17569 //----------------------------------------------------------------------------
17570 extern "C" { // some bogus code to keep the compiler happy
17571   void scannerYYdummy() { yy_flex_realloc(0,0); } 
17572 }
17573 #endif
17574 
17575 



Generated on Mon Mar 31 10:58:43 2008 by  doxygen 1.5.1