File:  [GCC 2.x] / gcc / cp-parse.c
Revision 1.1.1.6 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:11:19 2018 UTC (8 years, 2 months ago) by root
Branches: fsf, MAIN
CVS tags: gcc-258, HEAD
gcc-2.5.8


/*  A Bison parser, made from cp-parse.y with Bison version GNU Bison version 1.22
  */

#define YYBISON 1  /* Identify Bison output.  */

#define	IDENTIFIER	258
#define	TYPENAME	259
#define	SCOPED_TYPENAME	260
#define	SCSPEC	261
#define	TYPESPEC	262
#define	TYPE_QUAL	263
#define	CONSTANT	264
#define	STRING	265
#define	ELLIPSIS	266
#define	SIZEOF	267
#define	ENUM	268
#define	IF	269
#define	ELSE	270
#define	WHILE	271
#define	DO	272
#define	FOR	273
#define	SWITCH	274
#define	CASE	275
#define	DEFAULT	276
#define	BREAK	277
#define	CONTINUE	278
#define	RETURN	279
#define	GOTO	280
#define	ASM_KEYWORD	281
#define	GCC_ASM_KEYWORD	282
#define	TYPEOF	283
#define	ALIGNOF	284
#define	HEADOF	285
#define	CLASSOF	286
#define	ATTRIBUTE	287
#define	EXTENSION	288
#define	LABEL	289
#define	AGGR	290
#define	VISSPEC	291
#define	DELETE	292
#define	NEW	293
#define	OVERLOAD	294
#define	THIS	295
#define	OPERATOR	296
#define	LEFT_RIGHT	297
#define	TEMPLATE	298
#define	TYPEID	299
#define	DYNAMIC_CAST	300
#define	SCOPE	301
#define	START_DECLARATOR	302
#define	EMPTY	303
#define	TYPENAME_COLON	304
#define	ASSIGN	305
#define	RANGE	306
#define	OROR	307
#define	ANDAND	308
#define	MIN_MAX	309
#define	EQCOMPARE	310
#define	ARITHCOMPARE	311
#define	LSHIFT	312
#define	RSHIFT	313
#define	UNARY	314
#define	PLUSPLUS	315
#define	MINUSMINUS	316
#define	HYPERUNARY	317
#define	PAREN_STAR_PAREN	318
#define	POINTSAT	319
#define	POINTSAT_STAR	320
#define	DOT_STAR	321
#define	RAISE	322
#define	RAISES	323
#define	RERAISE	324
#define	TRY	325
#define	EXCEPT	326
#define	CATCH	327
#define	THROW	328
#define	ANSI_TRY	329
#define	ANSI_THROW	330
#define	TYPENAME_ELLIPSIS	331
#define	PTYPENAME	332
#define	PRE_PARSED_FUNCTION_DECL	333
#define	EXTERN_LANG_STRING	334
#define	ALL	335
#define	PRE_PARSED_CLASS_DECL	336
#define	TYPENAME_DEFN	337
#define	IDENTIFIER_DEFN	338
#define	PTYPENAME_DEFN	339
#define	END_OF_SAVED_INPUT	340

#line 42 "cp-parse.y"

#if defined(GATHER_STATISTICS) || defined(SPEW_DEBUG)
#undef YYDEBUG
#define YYDEBUG 1
#endif

#include "config.h"

#include <stdio.h>
#include <errno.h>

#include "tree.h"
#include "input.h"
#include "flags.h"
#include "cp-lex.h"
#include "cp-tree.h"

/* Since parsers are distinct for each language, put the language string
   definition here.  (fnf) */
char *language_string = "GNU C++";

extern tree void_list_node;
extern struct obstack permanent_obstack;

#ifndef errno
extern int errno;
#endif

extern int end_of_file;

void yyerror ();

/* Like YYERROR but do call yyerror.  */
#define YYERROR1 { yyerror ("syntax error"); YYERROR; }

static void position_after_white_space ();

/* Contains the statement keyword (if/while/do) to include in an
   error message if the user supplies an empty conditional expression.  */
static char *cond_stmt_keyword;

/* Nonzero if we have an `extern "C"' acting as an extern specifier.  */
int have_extern_spec;
int used_extern_spec;

void yyhook ();

/* Cons up an empty parameter list.  */
#ifdef __GNUC__
__inline
#endif
static tree
empty_parms ()
{
  tree parms;

  if (strict_prototype)
    parms = void_list_node;
  else
    parms = NULL_TREE;
  return parms;
}

#line 108 "cp-parse.y"
typedef union {long itype; tree ttype; char *strtype; enum tree_code code; } YYSTYPE;
#line 269 "cp-parse.y"

/* List of types and structure classes of the current declaration.  */
static tree current_declspecs;

/* When defining an aggregate, this is the most recent one being defined.  */
static tree current_aggr;

/* Tell yyparse how to print a token's value, if yydebug is set.  */

#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
extern void yyprint ();
extern tree combine_strings		PROTO((tree));
extern tree truthvalue_conversion	PROTO((tree));

#ifndef YYLTYPE
typedef
  struct yyltype
    {
      int timestamp;
      int first_line;
      int first_column;
      int last_line;
      int last_column;
      char *text;
   }
  yyltype;

#define YYLTYPE yyltype
#endif

#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		1340
#define	YYFLAG		-32768
#define	YYNTBASE	110

#define YYTRANSLATE(x) ((unsigned)(x) <= 340 ? yytranslate[x] : 311)

static const char yytranslate[] = {     0,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   108,     2,     2,     2,    73,    61,     2,    83,
   104,    71,    69,    51,    70,    81,    72,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,    55,   105,    65,
    53,    66,    54,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    84,     2,   109,    60,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,    50,    59,   106,   107,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
    46,    47,    48,    49,    52,    56,    57,    58,    62,    63,
    64,    67,    68,    74,    75,    76,    77,    78,    79,    80,
    82,    85,    86,    87,    88,    89,    90,    91,    92,    93,
    94,    95,    96,    97,    98,    99,   100,   101,   102,   103
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     1,     3,     4,     7,    10,    11,    12,    14,    16,
    18,    20,    22,    24,    30,    35,    39,    44,    49,    51,
    52,    58,    60,    64,    67,    72,    76,    78,    82,    84,
    88,    89,    95,    96,   102,   103,   109,   110,   116,   120,
   124,   131,   139,   144,   148,   152,   154,   156,   158,   160,
   162,   165,   169,   173,   177,   181,   184,   187,   190,   193,
   195,   199,   204,   208,   214,   219,   223,   227,   230,   234,
   238,   241,   248,   255,   260,   265,   267,   274,   279,   283,
   290,   295,   299,   302,   305,   307,   311,   316,   319,   323,
   324,   325,   327,   331,   334,   338,   340,   345,   348,   353,
   356,   361,   364,   370,   374,   376,   378,   380,   382,   384,
   386,   388,   390,   392,   395,   397,   401,   406,   411,   413,
   415,   416,   417,   419,   423,   425,   427,   428,   435,   436,
   438,   439,   442,   444,   446,   448,   450,   452,   454,   456,
   458,   462,   464,   468,   469,   471,   473,   474,   483,   485,
   486,   490,   496,   502,   505,   508,   513,   518,   520,   522,
   526,   530,   532,   533,   537,   540,   543,   546,   549,   552,
   555,   560,   563,   568,   572,   579,   586,   593,   603,   608,
   616,   622,   631,   641,   651,   658,   668,   675,   685,   689,
   696,   699,   704,   710,   712,   717,   725,   730,   735,   740,
   742,   746,   750,   754,   758,   762,   766,   770,   774,   778,
   782,   786,   790,   794,   798,   802,   806,   810,   816,   820,
   824,   828,   831,   833,   835,   837,   839,   843,   847,   848,
   853,   854,   861,   864,   869,   872,   876,   879,   882,   884,
   889,   894,   897,   905,   910,   915,   921,   925,   928,   931,
   934,   940,   944,   950,   954,   961,   966,   971,   978,   980,
   985,   986,   988,   990,   993,   995,   998,   999,  1002,  1005,
  1008,  1012,  1016,  1020,  1024,  1027,  1030,  1032,  1034,  1037,
  1040,  1042,  1045,  1048,  1052,  1054,  1056,  1059,  1062,  1064,
  1066,  1069,  1072,  1074,  1077,  1080,  1084,  1086,  1089,  1091,
  1093,  1095,  1097,  1102,  1107,  1109,  1111,  1113,  1115,  1117,
  1121,  1123,  1127,  1128,  1133,  1134,  1142,  1147,  1148,  1156,
  1161,  1162,  1170,  1175,  1176,  1183,  1185,  1189,  1191,  1196,
  1205,  1207,  1211,  1213,  1216,  1220,  1225,  1227,  1229,  1233,
  1238,  1245,  1249,  1255,  1256,  1264,  1269,  1270,  1277,  1281,
  1284,  1289,  1291,  1292,  1294,  1295,  1297,  1299,  1302,  1305,
  1308,  1311,  1314,  1317,  1320,  1324,  1328,  1331,  1332,  1336,
  1337,  1341,  1344,  1346,  1348,  1349,  1351,  1354,  1356,  1360,
  1362,  1364,  1367,  1370,  1373,  1377,  1379,  1381,  1383,  1386,
  1389,  1391,  1392,  1394,  1399,  1403,  1405,  1408,  1411,  1415,
  1421,  1427,  1431,  1435,  1439,  1443,  1447,  1453,  1459,  1463,
  1467,  1471,  1475,  1477,  1480,  1483,  1487,  1491,  1492,  1494,
  1498,  1503,  1510,  1515,  1520,  1524,  1529,  1536,  1541,  1546,
  1550,  1552,  1556,  1558,  1562,  1565,  1568,  1569,  1571,  1574,
  1576,  1579,  1580,  1583,  1584,  1587,  1593,  1599,  1603,  1609,
  1614,  1618,  1622,  1628,  1630,  1632,  1638,  1642,  1646,  1648,
  1654,  1660,  1664,  1670,  1675,  1679,  1683,  1685,  1687,  1691,
  1695,  1701,  1707,  1711,  1717,  1721,  1725,  1729,  1734,  1738,
  1740,  1742,  1745,  1748,  1751,  1755,  1759,  1767,  1775,  1781,
  1789,  1793,  1801,  1809,  1815,  1823,  1827,  1829,  1832,  1835,
  1838,  1840,  1843,  1847,  1851,  1854,  1856,  1860,  1864,  1867,
  1873,  1877,  1882,  1886,  1891,  1894,  1898,  1901,  1906,  1912,
  1917,  1923,  1929,  1935,  1937,  1939,  1942,  1945,  1948,  1949,
  1950,  1952,  1954,  1957,  1961,  1963,  1966,  1970,  1976,  1982,
  1983,  1984,  1991,  1993,  1996,  1998,  2000,  2002,  2005,  2006,
  2011,  2013,  2014,  2015,  2022,  2023,  2024,  2032,  2033,  2034,
  2035,  2046,  2047,  2048,  2049,  2060,  2061,  2069,  2070,  2076,
  2077,  2085,  2086,  2091,  2094,  2097,  2100,  2104,  2111,  2120,
  2131,  2144,  2149,  2153,  2156,  2159,  2161,  2164,  2168,  2175,
  2180,  2187,  2192,  2196,  2197,  2205,  2208,  2209,  2215,  2219,
  2221,  2224,  2228,  2232,  2235,  2238,  2240,  2241,  2246,  2249,
  2253,  2257,  2258,  2259,  2264,  2265,  2266,  2271,  2272,  2277,
  2278,  2280,  2281,  2282,  2291,  2295,  2300,  2305,  2309,  2314,
  2321,  2328,  2329,  2331,  2332,  2334,  2336,  2337,  2339,  2341,
  2345,  2350,  2352,  2356,  2357,  2359,  2363,  2366,  2368,  2370,
  2373,  2376,  2378,  2382,  2386,  2392,  2396,  2402,  2406,  2410,
  2412,  2414,  2417,  2419,  2420,  2422,  2423,  2426,  2431,  2433,
  2435,  2437,  2440,  2443,  2446,  2448,  2450,  2452,  2456,  2458,
  2462,  2465,  2468,  2471,  2474,  2477,  2480,  2483,  2486,  2489,
  2492,  2495,  2498,  2501,  2504,  2507,  2510,  2513,  2516,  2519,
  2522,  2525,  2528,  2531,  2535,  2538,  2541,  2544,  2547,  2551,
  2554,  2557,  2561
};

static const short yyrhs[] = {    -1,
   111,     0,     0,   112,   116,     0,   111,   116,     0,     0,
     0,    26,     0,    27,     0,   131,     0,   130,     0,   124,
     0,   122,     0,   115,    83,   174,   104,   105,     0,   117,
    50,   111,   106,     0,   117,    50,   106,     0,   117,   113,
   131,   114,     0,   117,   113,   130,   114,     0,    97,     0,
     0,    43,    65,   119,   120,    66,     0,   121,     0,   120,
    51,   121,     0,   207,   140,     0,   207,   141,    55,   219,
     0,   207,    49,   219,     0,   300,     0,    39,   123,   105,
     0,     3,     0,   123,    51,     3,     0,     0,   118,   208,
    50,   125,   105,     0,     0,   118,   209,    50,   126,   105,
     0,     0,   118,   208,    55,   127,   105,     0,     0,   118,
   209,    55,   128,   105,     0,   118,   208,   105,     0,   118,
   209,   105,     0,   118,   238,   305,   189,   196,   129,     0,
   118,   180,   179,   305,   189,   196,   129,     0,   118,   182,
   179,   129,     0,   118,     1,   106,     0,   118,     1,   105,
     0,    50,     0,    55,     0,   105,     0,    53,     0,    24,
     0,   188,   105,     0,   182,   188,   105,     0,   182,   179,
   105,     0,   180,   187,   105,     0,   180,   179,   105,     0,
   182,   105,     0,   180,   105,     0,     1,   105,     0,     1,
   106,     0,   105,     0,   132,   136,   251,     0,   132,   135,
   136,   251,     0,   132,   175,   251,     0,   132,   135,   105,
   175,   251,     0,   132,   135,   175,   251,     0,   180,   179,
     1,     0,   182,   238,     1,     0,   238,     1,     0,   180,
   179,   305,     0,   182,   238,   305,     0,   238,   305,     0,
     4,    83,   298,   104,   233,   305,     0,   241,    83,   298,
   104,   233,   305,     0,     4,    42,   233,   305,     0,   241,
    42,   233,   305,     0,    96,     0,   180,    83,   298,   104,
   233,   305,     0,   180,    42,   233,   305,     0,   180,   179,
   305,     0,   182,    83,   298,   104,   233,   305,     0,   182,
    42,   233,   305,     0,   182,   179,   305,     0,   238,   305,
     0,    24,     3,     0,   134,     0,   134,    53,   200,     0,
   134,    83,   163,   104,     0,   134,    42,     0,    55,   137,
   138,     0,     0,     0,   139,     0,   138,    51,   139,     0,
   138,     1,     0,    83,   163,   104,     0,    42,     0,   140,
    83,   163,   104,     0,   140,    42,     0,   144,    83,   163,
   104,     0,   144,    42,     0,   241,    83,   163,   104,     0,
   241,    42,     0,   239,   140,    83,   163,   104,     0,   239,
   140,    42,     0,     3,     0,     4,     0,    95,     0,   101,
     0,   100,     0,   102,     0,     3,     0,     4,     0,    95,
     0,   107,   140,     0,   310,     0,   144,   145,   151,     0,
    95,    65,   147,    66,     0,     4,    65,   147,    66,     0,
    50,     0,    55,     0,     0,     0,   148,     0,   147,    51,
   148,     0,   230,     0,   167,     0,     0,    99,   215,   150,
   221,   222,   106,     0,     0,   149,     0,     0,   149,   152,
     0,    70,     0,    69,     0,    75,     0,    76,     0,   108,
     0,   163,     0,   167,     0,    42,     0,    83,   154,   104,
     0,    42,     0,    83,   158,   104,     0,     0,   158,     0,
     1,     0,     0,   183,   179,   305,   189,   196,    53,   159,
   200,     0,   154,     0,     0,    50,   160,   106,     0,    50,
   160,   248,   245,   106,     0,    50,   160,   248,     1,   106,
     0,   160,   258,     0,    50,   106,     0,    50,   248,   245,
   106,     0,    50,   248,     1,   106,     0,   258,     0,   167,
     0,   163,    51,   167,     0,   163,    51,     1,     0,   168,
     0,     0,    33,   165,   166,     0,    71,   166,     0,    61,
   166,     0,   107,   166,     0,   153,   166,     0,    58,   140,
     0,    12,   164,     0,    12,    83,   230,   104,     0,    29,
   164,     0,    29,    83,   230,   104,     0,   172,   171,   230,
     0,   172,   171,    83,   163,   104,   230,     0,   172,   171,
   185,    83,   163,   104,     0,   172,   171,   185,    83,   185,
   104,     0,   172,   171,    83,   163,   104,   185,    83,   163,
   104,     0,   172,   171,   185,    42,     0,   172,   171,    83,
   163,   104,   185,    42,     0,   172,   171,   230,    53,   200,
     0,   172,   171,    83,   163,   104,   230,    53,   200,     0,
   172,   171,    83,   183,   231,   104,    84,   234,   109,     0,
   172,   171,    83,   232,   231,   104,    84,   234,   109,     0,
   172,   171,    83,   183,   231,   104,     0,   172,   171,    83,
   163,   104,    83,   183,   231,   104,     0,   172,   171,    83,
   232,   231,   104,     0,   172,   171,    83,   163,   104,    83,
   232,   231,   104,     0,   172,   171,    49,     0,   172,   171,
    83,   163,   104,    49,     0,   173,   166,     0,   173,    84,
   109,   166,     0,   173,    84,   154,   109,   166,     0,   164,
     0,    83,   230,   104,   167,     0,    83,   230,   104,    50,
   201,   205,   106,     0,    30,    83,   154,   104,     0,    31,
    83,   154,   104,     0,    31,    83,     4,   104,     0,   166,
     0,   167,    69,   167,     0,   167,    70,   167,     0,   167,
    71,   167,     0,   167,    72,   167,     0,   167,    73,   167,
     0,   167,    67,   167,     0,   167,    68,   167,     0,   167,
    64,   167,     0,   167,    65,   167,     0,   167,    66,   167,
     0,   167,    63,   167,     0,   167,    62,   167,     0,   167,
    61,   167,     0,   167,    59,   167,     0,   167,    60,   167,
     0,   167,    58,   167,     0,   167,    57,   167,     0,   167,
    54,   293,    55,   167,     0,   167,    53,   167,     0,   167,
    52,   167,     0,   168,    82,   167,     0,   177,   167,     0,
     3,     0,   310,     0,     9,     0,   174,     0,    83,   154,
   104,     0,    83,     1,   104,     0,     0,    83,   169,   252,
   104,     0,     0,   168,    83,   163,   104,   170,   152,     0,
   168,    42,     0,   168,    84,   154,   109,     0,   176,   142,
     0,   176,   239,   142,     0,   168,    75,     0,   168,    76,
     0,    40,     0,     8,    83,   163,   104,     0,   185,    83,
   163,   104,     0,   185,    42,     0,    45,    65,   230,    66,
    83,   154,   104,     0,    44,    83,   154,   104,     0,    44,
    83,   230,   104,     0,    46,   185,    83,   163,   104,     0,
    46,   185,    42,     0,    46,     3,     0,    46,   310,     0,
   239,   142,     0,   239,   142,    83,   163,   104,     0,   239,
   142,    42,     0,   176,   142,    83,   163,   104,     0,   176,
   142,    42,     0,   176,   239,   142,    83,   163,   104,     0,
   176,   239,   142,    42,     0,   176,   107,     7,    42,     0,
   176,     7,    46,   107,     7,    42,     0,    38,     0,    38,
    50,   163,   106,     0,     0,    46,     0,    37,     0,    46,
   173,     0,    10,     0,   174,    10,     0,     0,   168,    81,
     0,   168,    79,     0,   168,    80,     0,   180,   187,   105,
     0,   180,   179,   105,     0,   182,   188,   105,     0,   182,
   179,   105,     0,   180,   105,     0,   182,   105,     0,   236,
     0,   238,     0,    47,   236,     0,    47,   238,     0,   185,
     0,   182,   185,     0,   185,   181,     0,   182,   185,   181,
     0,   186,     0,     6,     0,   181,   186,     0,   181,     6,
     0,     8,     0,     6,     0,   182,     8,     0,   182,     6,
     0,   185,     0,   232,   185,     0,   185,   184,     0,   232,
   185,   184,     0,   186,     0,   184,   186,     0,   202,     0,
     7,     0,     4,     0,   241,     0,    28,    83,   154,   104,
     0,    28,    83,   230,   104,     0,   143,     0,     7,     0,
     8,     0,   202,     0,   190,     0,   187,    51,   192,     0,
   194,     0,   188,    51,   192,     0,     0,   115,    83,   174,
   104,     0,     0,   179,   305,   189,   196,    53,   191,   200,
     0,   179,   305,   189,   196,     0,     0,   179,   305,   189,
   196,    53,   193,   200,     0,   179,   305,   189,   196,     0,
     0,   238,   305,   189,   196,    53,   195,   200,     0,   238,
   305,   189,   196,     0,     0,    32,    83,    83,   197,   104,
   104,     0,   198,     0,   197,    51,   198,     0,     3,     0,
     3,    83,     9,   104,     0,     3,    83,     3,    51,     9,
    51,     9,   104,     0,   140,     0,   199,    51,   140,     0,
   167,     0,    50,   106,     0,    50,   201,   106,     0,    50,
   201,    51,   106,     0,     1,     0,   200,     0,   201,    51,
   200,     0,    84,   167,   109,   200,     0,   201,    51,    20,
   167,    55,   200,     0,   140,    55,   200,     0,   201,    51,
   140,    55,   200,     0,     0,    13,   140,    50,   203,   228,
   206,   106,     0,    13,   140,    50,   106,     0,     0,    13,
    50,   204,   228,   206,   106,     0,    13,    50,   106,     0,
    13,   140,     0,   214,   221,   222,   106,     0,   214,     0,
     0,    51,     0,     0,    51,     0,    35,     0,   207,     6,
     0,   207,     7,     0,   207,     8,     0,   207,    35,     0,
   207,   140,     0,   207,   144,     0,   207,    49,     0,   207,
   144,    50,     0,   207,   144,    55,     0,   207,   141,     0,
     0,   208,   211,   215,     0,     0,   209,   212,   215,     0,
   207,    50,     0,   213,     0,   210,     0,     0,    55,     0,
    55,   216,     0,   217,     0,   216,    51,   217,     0,   219,
     0,   218,     0,   220,   219,     0,   220,   218,     0,   219,
     5,     0,   144,   146,   151,     0,   140,     0,    36,     0,
     6,     0,   220,    36,     0,   220,     6,     0,    50,     0,
     0,   223,     0,   222,    36,    55,   223,     0,   222,    36,
    55,     0,   224,     0,   223,   224,     0,   223,   105,     0,
   180,   225,   105,     0,   180,    83,   298,   104,   105,     0,
   180,    83,   298,   104,   106,     0,   180,    42,   105,     0,
   180,    42,   106,     0,   182,   225,   105,     0,   182,   179,
   105,     0,   182,   225,   106,     0,   182,    83,   298,   104,
   105,     0,   182,    83,   298,   104,   106,     0,   182,    42,
   105,     0,   182,    42,   106,     0,    55,   167,   105,     0,
    55,   167,   106,     0,     1,     0,   133,    55,     0,   133,
    50,     0,   238,   305,   105,     0,   238,   305,   106,     0,
     0,   226,     0,   225,    51,   227,     0,   179,   305,   189,
   196,     0,   179,   305,   189,   196,    53,   200,     0,     3,
    55,   167,   196,     0,     4,    55,   167,   196,     0,    55,
   167,   196,     0,   179,   305,   189,   196,     0,   179,   305,
   189,   196,    53,   200,     0,     3,    55,   167,   196,     0,
     4,    55,   167,   196,     0,    55,   167,   196,     0,   229,
     0,   228,    51,   229,     0,   140,     0,   140,    53,   167,
     0,   183,   231,     0,   232,   231,     0,     0,   242,     0,
    47,   242,     0,     8,     0,   232,     8,     0,     0,   233,
     8,     0,     0,   235,   154,     0,   236,    83,   163,   104,
   233,     0,   236,    83,   298,   104,   233,     0,   236,    42,
   233,     0,   236,    83,     1,   104,   233,     0,   236,    84,
   234,   109,     0,   236,    84,   109,     0,    83,   237,   104,
     0,    83,    71,   233,   236,   104,     0,    78,     0,   244,
     0,    83,    61,   233,   236,   104,     0,    71,   233,   236,
     0,    61,   233,   236,     0,     4,     0,   237,    83,   163,
   104,   233,     0,   237,    83,   298,   104,   233,     0,   237,
    42,   233,     0,   237,    83,     1,   104,   233,     0,   237,
    84,   234,   109,     0,   237,    84,   109,     0,    83,   237,
   104,     0,    78,     0,   244,     0,    71,   233,   236,     0,
    61,   233,   236,     0,   238,    83,   163,   104,   233,     0,
   238,    83,   298,   104,   233,     0,   238,    42,   233,     0,
   238,    83,     1,   104,   233,     0,    83,   238,   104,     0,
    71,   233,   238,     0,    61,   233,   238,     0,   238,    84,
   234,   109,     0,   238,    84,   109,     0,     3,     0,   310,
     0,   107,     4,     0,   107,     3,     0,   107,    95,     0,
   239,   302,   238,     0,   239,   302,     4,     0,   239,   302,
     4,    83,   163,   104,   233,     0,   239,   302,     4,    83,
   298,   104,   233,     0,   239,   302,     4,    42,   233,     0,
   239,   302,     4,    83,     1,   104,   233,     0,   239,   302,
    95,     0,   239,   302,    95,    83,   163,   104,   233,     0,
   239,   302,    95,    83,   298,   104,   233,     0,   239,   302,
    95,    42,   233,     0,   239,   302,    95,    83,     1,   104,
   233,     0,    46,   302,   238,     0,   240,     0,     3,    46,
     0,   143,    46,     0,     4,    46,     0,     5,     0,   143,
     5,     0,    83,   242,   104,     0,    71,   233,   242,     0,
    71,   233,     0,    78,     0,    83,   243,   104,     0,    61,
   233,   242,     0,    61,   233,     0,   242,    83,   298,   104,
   233,     0,   242,    42,   233,     0,   242,    84,   234,   109,
     0,   242,    84,   109,     0,    83,   298,   104,   233,     0,
    42,   233,     0,    84,   234,   109,     0,    84,   109,     0,
   239,   302,    71,   233,     0,   239,   302,    71,   233,   242,
     0,   239,   302,    61,   233,     0,   239,   302,    61,   233,
   242,     0,   239,   302,    71,   233,   236,     0,   239,   302,
    61,   233,   236,     0,   257,     0,   246,     0,   245,   257,
     0,   245,   246,     0,     1,   105,     0,     0,     0,   249,
     0,   250,     0,   249,   250,     0,    34,   199,   105,     0,
   252,     0,     1,   252,     0,    50,   247,   106,     0,    50,
   247,   248,   245,   106,     0,    50,   247,   248,     1,   106,
     0,     0,     0,    14,   254,   247,   156,   255,   161,     0,
   252,     0,   247,   258,     0,   252,     0,   258,     0,   178,
     0,   154,   105,     0,     0,   253,    15,   259,   161,     0,
   253,     0,     0,     0,    16,   260,   247,   156,   261,   162,
     0,     0,     0,    17,   262,   256,    16,   263,   155,   105,
     0,     0,     0,     0,   290,   264,   247,   157,   105,   265,
   293,   104,   266,   162,     0,     0,     0,     0,   291,   267,
   247,   157,   105,   268,   293,   104,   269,   162,     0,     0,
    19,   247,    83,   158,   104,   270,   161,     0,     0,    20,
   167,    55,   271,   257,     0,     0,    20,   167,    56,   167,
    55,   272,   257,     0,     0,    21,    55,   273,   257,     0,
    22,   105,     0,    23,   105,     0,    24,   105,     0,    24,
   154,   105,     0,   115,   292,    83,   174,   104,   105,     0,
   115,   292,    83,   174,    55,   294,   104,   105,     0,   115,
   292,    83,   174,    55,   294,    55,   294,   104,   105,     0,
   115,   292,    83,   174,    55,   294,    55,   294,    55,   297,
   104,   105,     0,    25,    71,   154,   105,     0,    25,   140,
   105,     0,   277,   257,     0,   277,   106,     0,   105,     0,
    93,   105,     0,    93,   154,   105,     0,    91,   306,    83,
   163,   104,   105,     0,    91,   306,    42,   105,     0,    85,
   306,    83,   163,   104,   105,     0,    85,   306,    42,   105,
     0,    85,   140,   105,     0,     0,   276,    89,   140,    50,
   274,   284,   106,     0,   276,     1,     0,     0,   280,   281,
   281,   275,   288,     0,   276,    87,   308,     0,   276,     0,
   278,   106,     0,   278,   245,   106,     0,   278,     1,   106,
     0,     3,    55,     0,    95,    55,     0,    49,     0,     0,
    88,    50,   279,   247,     0,   282,   106,     0,   282,   245,
   106,     0,   282,     1,   106,     0,     0,     0,    92,    50,
   283,   247,     0,     0,     0,   284,   306,   285,   252,     0,
     0,   284,    21,   286,   252,     0,     0,   140,     0,     0,
     0,   288,    90,    83,   230,   287,   104,   289,   252,     0,
    18,    83,   105,     0,    18,    83,   154,   105,     0,    18,
    83,    50,   106,     0,    18,    83,   178,     0,    18,    83,
     1,   105,     0,    18,    83,    50,   247,   245,   106,     0,
    18,    83,    50,   247,     1,   106,     0,     0,     8,     0,
     0,   154,     0,     1,     0,     0,   295,     0,   296,     0,
   295,    51,   296,     0,    10,    83,   154,   104,     0,    10,
     0,   297,    51,    10,     0,     0,   299,     0,   299,    51,
    11,     0,   299,    11,     0,    11,     0,    94,     0,   299,
    94,     0,   299,    55,     0,   300,     0,   300,    53,   200,
     0,   299,    51,   300,     0,   299,    51,   300,    53,   200,
     0,   299,    51,   304,     0,   299,    51,   304,    53,   200,
     0,   180,   303,   301,     0,   182,   303,   301,     0,   231,
     0,   238,     0,    47,   238,     0,   233,     0,     0,   301,
     0,     0,    86,   308,     0,    93,    83,   309,   104,     0,
    98,     0,     3,     0,     4,     0,    46,     3,     0,    46,
     4,     0,   239,     3,     0,   241,     0,   230,     0,   306,
     0,   308,    51,   306,     0,   307,     0,   309,    51,   307,
     0,    41,    71,     0,    41,    72,     0,    41,    73,     0,
    41,    69,     0,    41,    70,     0,    41,    61,     0,    41,
    59,     0,    41,    60,     0,    41,   107,     0,    41,    51,
     0,    41,    64,     0,    41,    65,     0,    41,    66,     0,
    41,    63,     0,    41,    52,     0,    41,    53,     0,    41,
    67,     0,    41,    68,     0,    41,    75,     0,    41,    76,
     0,    41,    58,     0,    41,    57,     0,    41,   108,     0,
    41,    54,    55,     0,    41,    62,     0,    41,    79,     0,
    41,    80,     0,    41,    42,     0,    41,    84,   109,     0,
    41,    38,     0,    41,    37,     0,    41,   183,   231,     0,
    41,     1,     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   285,   286,   300,   302,   303,   307,   312,   316,   319,   322,
   325,   327,   329,   330,   333,   335,   337,   340,   345,   350,
   353,   357,   360,   364,   377,   384,   391,   394,   399,   401,
   405,   411,   411,   414,   414,   417,   417,   430,   430,   435,
   440,   455,   478,   487,   488,   491,   492,   493,   494,   495,
   498,   504,   507,   512,   518,   525,   527,   545,   546,   547,
   550,   564,   577,   580,   583,   586,   588,   590,   594,   600,
   605,   610,   615,   620,   625,   630,   636,   646,   655,   662,
   671,   680,   687,   696,   704,   706,   708,   710,   714,   727,
   750,   753,   755,   756,   759,   766,   773,   777,   779,   781,
   783,   785,   787,   791,   797,   799,   800,   803,   805,   806,
   809,   811,   812,   816,   817,   820,   849,   852,   856,   860,
   861,   865,   870,   873,   877,   880,   883,   916,   932,   935,
   939,   942,   946,   948,   950,   952,   954,   958,   961,   964,
   969,   973,   978,   982,   985,   986,   990,  1009,  1016,  1021,
  1033,  1040,  1046,  1052,  1059,  1062,  1064,  1066,  1069,  1072,
  1074,  1078,  1085,  1088,  1091,  1093,  1095,  1097,  1104,  1115,
  1135,  1137,  1139,  1142,  1144,  1146,  1148,  1151,  1153,  1155,
  1157,  1159,  1167,  1177,  1180,  1182,  1184,  1186,  1189,  1191,
  1194,  1196,  1200,  1206,  1208,  1211,  1226,  1228,  1230,  1241,
  1243,  1245,  1247,  1249,  1251,  1253,  1255,  1257,  1259,  1261,
  1263,  1265,  1267,  1269,  1271,  1273,  1275,  1277,  1279,  1281,
  1288,  1291,  1308,  1311,  1328,  1329,  1331,  1333,  1335,  1343,
  1358,  1363,  1370,  1377,  1380,  1382,  1384,  1393,  1398,  1421,
  1465,  1467,  1470,  1473,  1475,  1478,  1480,  1482,  1521,  1528,
  1530,  1532,  1534,  1549,  1564,  1566,  1569,  1576,  1625,  1627,
  1634,  1637,  1641,  1643,  1651,  1653,  1657,  1670,  1671,  1677,
  1680,  1687,  1695,  1698,  1705,  1710,  1717,  1719,  1720,  1722,
  1730,  1733,  1735,  1737,  1741,  1745,  1750,  1752,  1763,  1767,
  1769,  1772,  1787,  1790,  1792,  1794,  1798,  1801,  1809,  1810,
  1811,  1812,  1813,  1817,  1821,  1826,  1827,  1828,  1831,  1833,
  1836,  1838,  1841,  1844,  1848,  1856,  1858,  1867,  1873,  1874,
  1880,  1888,  1890,  1901,  1904,  1909,  1911,  1916,  1922,  1933,
  1948,  1951,  1955,  1957,  1962,  1965,  1968,  1974,  1977,  1980,
  1982,  1984,  1986,  1990,  1994,  1998,  2001,  2004,  2008,  2011,
  2015,  2070,  2085,  2087,  2090,  2092,  2096,  2097,  2099,  2101,
  2103,  2107,  2110,  2112,  2114,  2120,  2124,  2129,  2134,  2141,
  2146,  2155,  2160,  2160,  2162,  2165,  2167,  2171,  2173,  2177,
  2182,  2186,  2190,  2196,  2205,  2219,  2222,  2224,  2228,  2254,
  2263,  2289,  2292,  2294,  2296,  2301,  2304,  2317,  2320,  2326,
  2328,  2332,  2334,  2338,  2341,  2344,  2348,  2350,  2354,  2356,
  2360,  2362,  2366,  2371,  2373,  2375,  2377,  2383,  2386,  2387,
  2398,  2403,  2407,  2411,  2415,  2421,  2425,  2428,  2431,  2434,
  2443,  2445,  2449,  2452,  2457,  2460,  2465,  2468,  2469,  2473,
  2476,  2480,  2483,  2491,  2493,  2497,  2500,  2502,  2504,  2506,
  2508,  2510,  2512,  2514,  2516,  2517,  2519,  2521,  2523,  2526,
  2529,  2531,  2533,  2535,  2537,  2539,  2541,  2543,  2544,  2546,
  2553,  2556,  2558,  2560,  2562,  2564,  2566,  2568,  2570,  2572,
  2576,  2579,  2585,  2587,  2589,  2598,  2600,  2602,  2604,  2606,
  2609,  2611,  2613,  2615,  2617,  2619,  2623,  2636,  2638,  2655,
  2658,  2659,  2680,  2685,  2687,  2689,  2691,  2693,  2695,  2697,
  2699,  2701,  2703,  2705,  2707,  2709,  2711,  2715,  2723,  2730,
  2737,  2746,  2754,  2767,  2769,  2770,  2771,  2774,  2781,  2791,
  2793,  2798,  2800,  2803,  2817,  2820,  2823,  2828,  2833,  2840,
  2843,  2847,  2849,  2852,  2859,  2862,  2865,  2868,  2881,  2884,
  2890,  2897,  2902,  2905,  2911,  2915,  2918,  2924,  2929,  2932,
  2937,  2947,  2951,  2954,  2960,  2971,  2978,  2985,  3036,  3036,
  3116,  3116,  3132,  3132,  3136,  3140,  3143,  3148,  3155,  3164,
  3173,  3182,  3185,  3191,  3193,  3197,  3201,  3202,  3203,  3206,
  3209,  3212,  3215,  3218,  3230,  3259,  3269,  3282,  3310,  3341,
  3353,  3361,  3366,  3373,  3381,  3383,  3390,  3392,  3392,  3400,
  3405,  3412,  3413,  3415,  3415,  3418,  3439,  3455,  3474,  3492,
  3495,  3497,  3500,  3517,  3535,  3538,  3540,  3544,  3547,  3549,
  3551,  3557,  3560,  3564,  3567,  3568,  3574,  3576,  3579,  3581,
  3585,  3590,  3593,  3602,  3609,  3614,  3619,  3623,  3630,  3634,
  3638,  3652,  3655,  3657,  3659,  3661,  3663,  3671,  3687,  3692,
  3693,  3694,  3698,  3702,  3720,  3728,  3731,  3733,  3737,  3740,
  3742,  3744,  3746,  3748,  3750,  3753,  3758,  3760,  3767,  3769,
  3776,  3779,  3781,  3783,  3785,  3787,  3789,  3791,  3793,  3795,
  3797,  3799,  3801,  3803,  3805,  3807,  3816,  3818,  3820,  3822,
  3824,  3826,  3828,  3830,  3832,  3834,  3846,  3858,  3870,  3882,
  3910,  3941,  3943
};

static const char * const yytname[] = {   "$","error","$illegal.","IDENTIFIER",
"TYPENAME","SCOPED_TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING",
"ELLIPSIS","SIZEOF","ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
"BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","GCC_ASM_KEYWORD","TYPEOF",
"ALIGNOF","HEADOF","CLASSOF","ATTRIBUTE","EXTENSION","LABEL","AGGR","VISSPEC",
"DELETE","NEW","OVERLOAD","THIS","OPERATOR","LEFT_RIGHT","TEMPLATE","TYPEID",
"DYNAMIC_CAST","SCOPE","START_DECLARATOR","EMPTY","TYPENAME_COLON","'{'","','",
"ASSIGN","'='","'?'","':'","RANGE","OROR","ANDAND","'|'","'^'","'&'","MIN_MAX",
"EQCOMPARE","ARITHCOMPARE","'<'","'>'","LSHIFT","RSHIFT","'+'","'-'","'*'","'/'",
"'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","PAREN_STAR_PAREN","POINTSAT",
"POINTSAT_STAR","'.'","DOT_STAR","'('","'['","RAISE","RAISES","RERAISE","TRY",
"EXCEPT","CATCH","THROW","ANSI_TRY","ANSI_THROW","TYPENAME_ELLIPSIS","PTYPENAME",
"PRE_PARSED_FUNCTION_DECL","EXTERN_LANG_STRING","ALL","PRE_PARSED_CLASS_DECL",
"TYPENAME_DEFN","IDENTIFIER_DEFN","PTYPENAME_DEFN","END_OF_SAVED_INPUT","')'",
"';'","'}'","'~'","'!'","']'","program","extdefs","@1",".hush_warning",".warning_ok",
"asm_keyword","extdef","extern_lang_string","template_header","@2","template_parm_list",
"template_parm","overloaddef","ov_identifiers","template_def","@3","@4","@5",
"@6","fn_tmpl_end","datadef","fndef","fn.def1","fn.def2","return_id","return_init",
"base_init",".set_base_init","member_init_list","member_init","identifier","identifier_defn",
"identifier_or_opname","template_type","template_type_name","tmpl.1","tmpl.2",
"template_arg_list","template_arg","template_instantiate_once","@7","template_instantiation",
"template_instantiate_some","unop","expr","paren_expr_or_null","paren_cond_or_null",
"xcond","condition","@8",".kindof_pushlevel","partially_scoped_stmt","already_scoped_stmt",
"nonnull_exprlist","unary_expr","@9","cast_expr","expr_no_commas","primary",
"@10","@11","new",".scope","delete","string","nodecls","object","object_star",
"decl","declarator","typed_declspecs","reserved_declspecs","declmods","typed_typespecs",
"reserved_typespecquals","typespec","typespecqual_reserved","initdecls","notype_initdecls",
"maybeasm","initdcl0","@12","initdcl","@13","notype_initdcl0","@14","maybe_attribute",
"attribute_list","attrib","identifiers_or_typenames","init","initlist","structsp",
"@15","@16","maybecomma","maybecomma_warn","aggr","named_class_head_sans_basetype",
"named_class_head_sans_basetype_defn","named_class_head","@17","@18","unnamed_class_head",
"class_head","maybe_base_class_list","base_class_list","base_class","scoped_base_class",
"base_class.1","base_class_visibility_list","left_curly","opt.component_decl_list",
"component_decl_list","component_decl","components","component_declarator0",
"component_declarator","enumlist","enumerator","typename","absdcl","nonempty_type_quals",
"type_quals","nonmomentary_expr","@19","after_type_declarator","after_type_declarator_no_typename",
"notype_declarator","id_scope","typename_scope","scoped_typename","absdcl1",
"abs_member_declarator","after_type_member_declarator","stmts","errstmt",".pushlevel",
"maybe_label_decls","label_decls","label_decl","compstmt_or_error","compstmt",
"simple_if","@20","@21","implicitly_scoped_stmt","stmt","simple_stmt","@22",
"@23","@24","@25","@26","@27","@28","@29","@30","@31","@32","@33","@34","@35",
"@36","@37","@38","try","label_colon","try_head","@39","ansi_try","ansi_dummy",
"ansi_try_head","@40","except_stmts","@41","@42","optional_identifier","ansi_except_stmts",
"@43","forhead.1","forhead.2","maybe_type_qual","xexpr","asm_operands","nonnull_asm_operands",
"asm_operand","asm_clobbers","parmlist","parms","parm","abs_or_notype_decl",
"see_typename","dont_see_typename","bad_parm","maybe_raises","raise_identifier",
"ansi_raise_identifier","raise_identifiers","ansi_raise_identifiers","operator_name",
""
};
#endif

static const short yyr1[] = {     0,
   110,   110,   112,   111,   111,   113,   114,   115,   115,   116,
   116,   116,   116,   116,   116,   116,   116,   116,   117,   119,
   118,   120,   120,   121,   121,   121,   121,   122,   123,   123,
   125,   124,   126,   124,   127,   124,   128,   124,   124,   124,
   124,   124,   124,   124,   124,   129,   129,   129,   129,   129,
   130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
   131,   131,   131,   131,   131,   131,   131,   131,   132,   132,
   132,   132,   132,   132,   132,   132,   133,   133,   133,   133,
   133,   133,   133,   134,   135,   135,   135,   135,   136,   137,
   138,   138,   138,   138,   139,   139,   139,   139,   139,   139,
   139,   139,   139,   139,   140,   140,   140,   141,   141,   141,
   142,   142,   142,   142,   142,   143,   144,   144,   145,   145,
   145,   146,   147,   147,   148,   148,   150,   149,   151,   151,
   152,   152,   153,   153,   153,   153,   153,   154,   154,   155,
   155,   156,   156,   157,   157,   157,   159,   158,   158,   160,
   161,   161,   161,   161,   162,   162,   162,   162,   163,   163,
   163,   164,   165,   164,   164,   164,   164,   164,   164,   164,
   164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
   164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
   164,   164,   164,   166,   166,   166,   166,   166,   166,   167,
   167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
   167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
   167,   167,   168,   168,   168,   168,   168,   168,   169,   168,
   170,   168,   168,   168,   168,   168,   168,   168,   168,   168,
   168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
   168,   168,   168,   168,   168,   168,   168,   168,   171,   171,
   172,   172,   173,   173,   174,   174,   175,   176,   176,   177,
   178,   178,   178,   178,   178,   178,   179,   179,   179,   179,
   180,   180,   180,   180,   181,   181,   181,   181,   182,   182,
   182,   182,   183,   183,   183,   183,   184,   184,   185,   185,
   185,   185,   185,   185,   185,   186,   186,   186,   187,   187,
   188,   188,   189,   189,   191,   190,   190,   193,   192,   192,
   195,   194,   194,   196,   196,   197,   197,   198,   198,   198,
   199,   199,   200,   200,   200,   200,   200,   201,   201,   201,
   201,   201,   201,   203,   202,   202,   204,   202,   202,   202,
   202,   202,   205,   205,   206,   206,   207,   207,   207,   207,
   207,   208,   208,   208,   208,   208,   209,   211,   210,   212,
   210,   213,   214,   214,   215,   215,   215,   216,   216,   217,
   217,   217,   217,   218,   219,   219,   220,   220,   220,   220,
   221,   222,   222,   222,   222,   223,   223,   223,   224,   224,
   224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
   224,   224,   224,   224,   224,   224,   224,   225,   225,   225,
   226,   226,   226,   226,   226,   227,   227,   227,   227,   227,
   228,   228,   229,   229,   230,   230,   231,   231,   231,   232,
   232,   233,   233,   235,   234,   236,   236,   236,   236,   236,
   236,   236,   236,   236,   236,   236,   236,   236,   236,   237,
   237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
   238,   238,   238,   238,   238,   238,   239,   239,   239,   240,
   241,   241,   242,   242,   242,   242,   242,   242,   242,   242,
   242,   242,   242,   242,   242,   242,   242,   243,   243,   243,
   243,   244,   244,   245,   245,   245,   245,   246,   247,   248,
   248,   249,   249,   250,   251,   251,   252,   252,   252,   254,
   255,   253,   256,   256,   257,   257,   258,   258,   259,   258,
   258,   260,   261,   258,   262,   263,   258,   264,   265,   266,
   258,   267,   268,   269,   258,   270,   258,   271,   258,   272,
   258,   273,   258,   258,   258,   258,   258,   258,   258,   258,
   258,   258,   258,   258,   258,   258,   258,   258,   258,   258,
   258,   258,   258,   274,   258,   258,   275,   258,   258,   258,
   276,   276,   276,   277,   277,   277,   279,   278,   280,   280,
   280,   281,   283,   282,   284,   285,   284,   286,   284,   287,
   287,   288,   289,   288,   290,   290,   290,   291,   291,   291,
   291,   292,   292,   293,   293,   293,   294,   294,   295,   295,
   296,   297,   297,   298,   298,   298,   298,   298,   298,   298,
   298,   299,   299,   299,   299,   299,   299,   300,   300,   301,
   301,   301,   302,   303,   304,   305,   305,   305,   306,   306,
   306,   306,   306,   306,   306,   307,   308,   308,   309,   309,
   310,   310,   310,   310,   310,   310,   310,   310,   310,   310,
   310,   310,   310,   310,   310,   310,   310,   310,   310,   310,
   310,   310,   310,   310,   310,   310,   310,   310,   310,   310,
   310,   310,   310
};

static const short yyr2[] = {     0,
     0,     1,     0,     2,     2,     0,     0,     1,     1,     1,
     1,     1,     1,     5,     4,     3,     4,     4,     1,     0,
     5,     1,     3,     2,     4,     3,     1,     3,     1,     3,
     0,     5,     0,     5,     0,     5,     0,     5,     3,     3,
     6,     7,     4,     3,     3,     1,     1,     1,     1,     1,
     2,     3,     3,     3,     3,     2,     2,     2,     2,     1,
     3,     4,     3,     5,     4,     3,     3,     2,     3,     3,
     2,     6,     6,     4,     4,     1,     6,     4,     3,     6,
     4,     3,     2,     2,     1,     3,     4,     2,     3,     0,
     0,     1,     3,     2,     3,     1,     4,     2,     4,     2,
     4,     2,     5,     3,     1,     1,     1,     1,     1,     1,
     1,     1,     1,     2,     1,     3,     4,     4,     1,     1,
     0,     0,     1,     3,     1,     1,     0,     6,     0,     1,
     0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
     3,     1,     3,     0,     1,     1,     0,     8,     1,     0,
     3,     5,     5,     2,     2,     4,     4,     1,     1,     3,
     3,     1,     0,     3,     2,     2,     2,     2,     2,     2,
     4,     2,     4,     3,     6,     6,     6,     9,     4,     7,
     5,     8,     9,     9,     6,     9,     6,     9,     3,     6,
     2,     4,     5,     1,     4,     7,     4,     4,     4,     1,
     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
     3,     3,     3,     3,     3,     3,     3,     5,     3,     3,
     3,     2,     1,     1,     1,     1,     3,     3,     0,     4,
     0,     6,     2,     4,     2,     3,     2,     2,     1,     4,
     4,     2,     7,     4,     4,     5,     3,     2,     2,     2,
     5,     3,     5,     3,     6,     4,     4,     6,     1,     4,
     0,     1,     1,     2,     1,     2,     0,     2,     2,     2,
     3,     3,     3,     3,     2,     2,     1,     1,     2,     2,
     1,     2,     2,     3,     1,     1,     2,     2,     1,     1,
     2,     2,     1,     2,     2,     3,     1,     2,     1,     1,
     1,     1,     4,     4,     1,     1,     1,     1,     1,     3,
     1,     3,     0,     4,     0,     7,     4,     0,     7,     4,
     0,     7,     4,     0,     6,     1,     3,     1,     4,     8,
     1,     3,     1,     2,     3,     4,     1,     1,     3,     4,
     6,     3,     5,     0,     7,     4,     0,     6,     3,     2,
     4,     1,     0,     1,     0,     1,     1,     2,     2,     2,
     2,     2,     2,     2,     3,     3,     2,     0,     3,     0,
     3,     2,     1,     1,     0,     1,     2,     1,     3,     1,
     1,     2,     2,     2,     3,     1,     1,     1,     2,     2,
     1,     0,     1,     4,     3,     1,     2,     2,     3,     5,
     5,     3,     3,     3,     3,     3,     5,     5,     3,     3,
     3,     3,     1,     2,     2,     3,     3,     0,     1,     3,
     4,     6,     4,     4,     3,     4,     6,     4,     4,     3,
     1,     3,     1,     3,     2,     2,     0,     1,     2,     1,
     2,     0,     2,     0,     2,     5,     5,     3,     5,     4,
     3,     3,     5,     1,     1,     5,     3,     3,     1,     5,
     5,     3,     5,     4,     3,     3,     1,     1,     3,     3,
     5,     5,     3,     5,     3,     3,     3,     4,     3,     1,
     1,     2,     2,     2,     3,     3,     7,     7,     5,     7,
     3,     7,     7,     5,     7,     3,     1,     2,     2,     2,
     1,     2,     3,     3,     2,     1,     3,     3,     2,     5,
     3,     4,     3,     4,     2,     3,     2,     4,     5,     4,
     5,     5,     5,     1,     1,     2,     2,     2,     0,     0,
     1,     1,     2,     3,     1,     2,     3,     5,     5,     0,
     0,     6,     1,     2,     1,     1,     1,     2,     0,     4,
     1,     0,     0,     6,     0,     0,     7,     0,     0,     0,
    10,     0,     0,     0,    10,     0,     7,     0,     5,     0,
     7,     0,     4,     2,     2,     2,     3,     6,     8,    10,
    12,     4,     3,     2,     2,     1,     2,     3,     6,     4,
     6,     4,     3,     0,     7,     2,     0,     5,     3,     1,
     2,     3,     3,     2,     2,     1,     0,     4,     2,     3,
     3,     0,     0,     4,     0,     0,     4,     0,     4,     0,
     1,     0,     0,     8,     3,     4,     4,     3,     4,     6,
     6,     0,     1,     0,     1,     1,     0,     1,     1,     3,
     4,     1,     3,     0,     1,     3,     2,     1,     1,     2,
     2,     1,     3,     3,     5,     3,     5,     3,     3,     1,
     1,     2,     1,     0,     1,     0,     2,     4,     1,     1,
     1,     2,     2,     2,     1,     1,     1,     3,     1,     3,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     3,     2,     2,     2,     2,     3,     2,
     2,     3,     2
};

static const short yydefact[] = {     3,
     0,     0,     0,   480,   301,   501,   290,   300,   289,     0,
     8,     9,     0,   357,     0,     0,     0,   442,   442,   442,
     0,     0,    76,    19,    60,     0,     0,     5,     6,     0,
    13,    12,    11,    10,   267,   305,   121,     0,     0,   281,
     0,   311,   299,     0,   368,   370,   374,   373,   352,     0,
   442,   497,   302,   481,     4,    58,    59,   498,   442,   500,
   261,   644,   105,   106,   347,   107,   350,   261,    29,     0,
   713,   301,   440,   711,   710,   708,   690,   695,   696,     0,
   702,   701,   687,   688,   686,   705,   694,   691,   692,   693,
   697,   698,   684,   685,   681,   682,   683,   699,   700,   706,
   707,     0,   689,   703,   305,   437,   293,     0,   302,    20,
   663,     0,     0,     0,     0,     0,     0,   261,   483,   482,
   484,     0,     3,     0,     0,   301,     0,     0,   368,   370,
   666,     0,    90,    85,   267,     0,     0,   502,   499,   119,
   120,   129,   459,     0,   442,   442,   454,     0,    57,     0,
     0,   309,   277,   278,   442,   455,   301,   292,   291,    56,
     0,   282,     0,     0,   286,   306,   307,   283,   285,   308,
     0,    51,   106,   358,   359,   360,   361,   364,   372,   107,
   109,   108,   110,   362,   367,   363,   375,   375,   391,     0,
    68,   442,     0,   444,     0,     0,    71,     0,   442,   644,
   666,   223,   440,   225,   265,   261,   261,     0,     0,   163,
   263,   239,     0,     0,   262,     0,   261,   134,   133,   261,
   135,   136,     0,   261,   137,     0,   123,   261,   194,   200,
   126,   162,     0,   261,   226,     0,   261,   437,   293,   125,
   437,     0,   224,   648,   649,   664,   664,     0,   645,   652,
   349,     0,   344,     0,   138,   139,     0,     0,    28,   704,
   709,   442,     0,   442,   442,   506,   644,   444,   712,   438,
   295,   297,   441,   294,     0,   443,   496,   477,   476,   475,
     0,     0,    16,     0,     7,     7,    45,    44,   666,     0,
    31,    35,    39,    33,    37,    40,   313,    84,    91,    88,
     0,   261,   267,     0,     0,     0,   529,    61,   535,    63,
   375,   130,   116,   279,   280,     0,     0,   442,   442,   467,
     0,     0,   468,    66,    55,    69,     0,    54,   442,     0,
   444,     0,    53,   284,    52,    67,    70,   288,   287,   666,
   312,   365,   366,   376,   369,   371,   413,   261,     0,   418,
   418,     0,     0,   396,   666,   473,     0,   289,     0,   159,
   281,     0,   479,     0,   261,   670,   671,     0,   669,     0,
     0,   675,   677,   667,     0,     0,   324,   486,   491,   485,
   666,     0,    74,   261,     0,     0,   170,   162,     0,     0,
   172,   261,   261,   261,   261,     0,   248,     0,   264,     0,
   249,   169,   166,   165,     0,     0,     0,     0,   167,   261,
   118,   168,   261,   261,     0,   261,   261,   261,   261,   261,
   261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
   261,   261,   233,   237,   238,   269,   270,   268,   261,   261,
   261,   259,     0,   261,   191,   266,   111,   112,     0,   113,
     0,   235,     0,   115,   222,   435,   242,   261,   436,   111,
   112,   113,     0,   250,   437,   437,   442,   647,   437,   651,
   650,     0,   433,   355,   431,   346,     0,   303,     0,   304,
    30,   515,   439,   509,   505,     0,   442,     0,     0,     0,
   517,     0,   442,   644,   444,   298,   296,     0,    22,     0,
    27,   117,     0,    15,    18,    17,   313,    50,    46,    49,
    47,    48,    43,     0,     0,     0,     0,   324,   105,   106,
    96,   261,     0,    92,     0,   121,     0,     0,   337,     0,
   333,    86,     0,     0,    62,    65,   536,   530,   127,   458,
   457,     0,     0,   442,   442,     0,   442,     0,   444,   452,
   324,   310,   448,     0,     0,     0,   451,     0,   442,   442,
   313,   388,   387,   386,   122,   377,   378,   381,   380,     0,
     0,   415,   414,   480,   459,   442,   261,   644,   666,     0,
   419,   301,   442,   644,   666,     0,     0,   351,   398,   397,
    83,   442,   442,   442,   478,   445,   672,   673,   674,     0,
   676,   679,     0,     0,     0,   323,   442,     0,   442,     0,
    75,   442,     0,     0,     0,     0,   301,     0,   164,     0,
     0,     0,   247,   261,   228,   227,     0,   261,   124,   220,
   219,   636,   635,     0,   217,   216,   214,   215,   213,   212,
   211,   208,   209,   210,   206,   207,   201,   202,   203,   204,
   205,   221,     0,     0,   261,   189,   261,   293,   174,   261,
     0,     0,     0,   114,   254,   261,   236,     0,   252,   261,
     0,   442,   442,   644,   660,   661,   658,   659,   666,   646,
   654,   665,   656,   653,   261,   356,     0,   355,   161,   160,
   508,   504,     0,   503,   507,   442,   516,   511,     0,   513,
     0,     0,    21,   364,   362,   367,    14,   324,    32,    36,
    34,    38,     0,     0,    94,     0,    98,   261,   100,   261,
     0,   102,   261,   223,   301,   261,   334,     0,   338,     0,
    87,    64,     0,   537,     0,   531,   532,     0,     0,     0,
     0,     0,   466,   462,     0,     0,     0,   465,     0,   317,
   442,   442,   442,   450,     0,     0,   324,   129,     0,   384,
   390,   389,   383,   382,   411,   412,   261,   261,   402,   403,
   666,   324,     0,   313,     0,   399,   409,   410,   666,     0,
   405,   313,   404,   406,     0,   416,   417,   474,   471,   472,
   678,     0,   668,     0,     0,   321,   489,     0,     0,     0,
   494,     0,     0,     0,   666,   240,   171,   173,   197,   199,
   198,   244,   245,     0,     0,   230,     0,   195,   261,   231,
   234,     0,     0,   437,   437,   179,   261,     0,   192,   261,
     0,   257,     0,   256,   261,   241,     0,   662,   509,   505,
   442,    72,     0,     0,   434,   432,   348,     0,   442,   442,
   514,   442,   512,    23,    26,     0,     0,    41,    95,    93,
     0,     0,   104,   261,     0,     0,     0,     0,   335,   331,
     0,     0,   223,   540,   552,   555,     0,   529,   261,     0,
     0,     0,   261,     0,   606,     0,     0,     0,     0,   261,
     0,   586,   632,     0,   547,     0,     0,     0,   525,   545,
   551,   524,   546,     0,   261,     0,   612,     0,   558,   562,
   533,     0,   456,   453,   470,   469,   442,   442,   442,   464,
   315,   449,   446,   447,   523,   522,   320,   385,   379,   324,
   324,    78,   425,   442,   324,   480,   459,   261,   666,   420,
    81,   442,     0,   680,   314,     0,     0,   442,   442,   442,
   442,   442,   442,    73,   261,   246,   353,   218,   131,   260,
     0,     0,     0,     0,     0,   181,   193,     0,   253,     0,
   251,     0,   655,   657,   345,   520,   518,   510,    25,    42,
    97,    99,     0,   101,     0,   342,   261,   336,     0,   339,
     0,   534,   528,   539,   604,   529,   529,   529,     0,     0,
     0,   572,   574,   575,   576,     0,   261,     0,   670,   671,
     0,     0,   607,     0,   613,   587,     0,   605,   633,     0,
   548,   275,   666,     0,   276,     0,     0,   666,     0,   538,
   527,   526,   549,   596,     0,     0,   585,   584,     0,   601,
     0,   612,     0,   609,     0,   529,   529,     0,   463,   460,
   461,     0,   318,   423,   424,   400,   401,   666,   421,   261,
   261,   324,   313,   407,   408,   666,   328,     0,   326,   322,
   490,   487,   488,   495,   492,   493,     0,     0,     0,   131,
   232,   190,     0,   293,   175,   185,   187,   176,   177,   258,
   255,   442,   442,   521,   519,   103,   340,     0,     0,   332,
     0,     0,   261,   543,     0,     0,   529,   625,     0,   628,
   261,   568,   261,   261,   577,     0,   583,   593,     0,   261,
   529,     0,   261,   529,   588,     0,   272,   313,   271,   274,
   273,   313,   150,   599,     0,   603,   602,   597,   611,   610,
     0,     0,   128,   316,     0,    77,     0,   324,   324,   430,
   324,    80,     0,     0,     0,   243,   196,   132,   437,   437,
   180,   261,     0,   444,   444,   520,   518,     0,   343,   142,
   261,   541,   553,   544,   556,   629,   627,     0,   626,   149,
     0,     0,   261,     0,   573,   582,   592,     0,   608,   590,
     0,   614,     0,   150,   261,   550,   594,   622,   146,     0,
   145,     0,   319,   422,   428,   429,   426,     0,     0,   327,
   325,     0,     0,     0,   182,     0,     0,   341,     0,   150,
   261,     0,     0,     0,   566,   666,   569,   570,     0,     0,
   637,     0,   530,   154,   615,   598,   559,   563,     0,     0,
   329,   186,   188,   178,   183,   184,   143,   542,   530,   554,
   158,   140,   261,     0,   631,   630,   150,   313,   261,   591,
   589,     0,     0,   638,   639,   578,   151,     0,     0,     0,
     0,     0,   427,     0,   155,     0,     0,   557,   567,   324,
   571,   261,   637,     0,     0,     0,     0,   618,   595,   616,
     0,     0,     0,     0,     0,     0,   141,     0,     0,     0,
   579,   640,   153,   152,     0,     0,   620,   560,   564,     0,
   157,   156,   147,   641,     0,     0,   619,   617,   621,     0,
   261,   261,   330,     0,   642,     0,   580,   623,   561,   565,
   148,     0,     0,     0,   643,   581,   624,     0,     0,     0
};

static const short yydefgoto[] = {  1338,
     1,     2,   124,   505,   893,    28,    29,    30,   275,   498,
   499,    31,    70,    32,   514,   516,   515,   517,   513,    33,
    34,    35,   349,   134,   135,   136,   299,   523,   524,   564,
   185,   452,    36,    37,   142,   758,   226,   227,   312,   738,
   313,  1081,   228,   894,  1254,  1172,  1200,  1201,  1324,  1195,
  1196,  1250,   255,   229,   394,   230,   256,   232,   407,   959,
   443,   233,   234,   235,   137,   236,   237,   895,   340,   896,
   168,   897,   238,   271,   389,   272,   151,    41,   377,   152,
  1052,   341,  1145,    42,   947,   606,  1068,  1069,   871,   729,
   730,    43,   477,   252,  1079,   687,    44,    45,    46,    47,
   187,   188,    48,    49,   345,   566,   567,   568,   569,   570,
   190,   352,   353,   354,   580,   581,   940,   474,   475,   240,
   675,   241,   111,   364,   365,   153,   322,   154,   242,    52,
   109,   270,   489,   156,   898,   899,   538,   735,   736,   737,
   308,   900,   901,   996,  1220,  1105,   902,   903,  1133,   997,
  1221,   998,  1222,  1046,  1271,  1321,  1047,  1272,  1322,  1257,
  1183,  1259,  1114,  1235,  1198,   904,   905,   906,  1121,   907,
  1042,   908,  1124,  1269,  1306,  1305,  1320,  1236,  1334,   909,
   910,  1020,   634,  1263,  1264,  1265,  1326,   490,   249,   250,
   677,   112,   465,   683,   197,   373,   602,   374,   603,   243
};

static const short yypact[] = {    77,
  2324,  5489,   459,    73,   779,-32768,-32768,-32768,-32768,    70,
-32768,-32768,    19,-32768,   179,  2429,   122,-32768,-32768,-32768,
  1334,   144,-32768,-32768,-32768,   130,   159,-32768,   223,  2541,
-32768,-32768,-32768,-32768,   258,   100,   372,  1744,  6807,   986,
    71,-32768,-32768,  1231,-32768,-32768,-32768,-32768,   235,  1577,
-32768,-32768,   143,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  6418,   654,-32768,-32768,   252,-32768,   363,  6418,-32768,   187,
-32768,   314,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   369,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   388,-32768,-32768,   481,  1127,  1081,  1339,-32768,-32768,
   456,  1334,   796,   796,   570,   462,   272,  6418,-32768,-32768,
-32768,   611,   546,  2116,   665,   570,  5500,  6948,   210,   376,
   704,   738,-32768,   700,   347,   204,   204,-32768,-32768,-32768,
-32768,   610,   570,    60,-32768,-32768,-32768,  1546,-32768,  2193,
   218,-32768,   423,   506,-32768,-32768,  1764,-32768,-32768,-32768,
   615,   986,   220,  1670,-32768,-32768,-32768,  1055,-32768,-32768,
  5500,-32768,   314,-32768,-32768,-32768,-32768,-32768,-32768,   144,
-32768,-32768,-32768,-32768,-32768,   385,   730,   730,-32768,  1357,
-32768,-32768,  2002,   680,   497,   713,   529,  1804,-32768,   654,
   148,    73,   720,-32768,-32768,  6624,  6701,   732,   752,-32768,
-32768,-32768,   765,   787,   910,   132,  6499,-32768,-32768,  6499,
-32768,-32768,  4944,  6499,-32768,   519,-32768,  6499,-32768,-32768,
  5567,  1424,   828,  6091,   892,   108,  6499,  1127,   397,-32768,
  7007,    53,-32768,-32768,-32768,-32768,   983,   804,   245,   859,
-32768,   132,   819,   806,   880,  7157,   853,   951,-32768,-32768,
-32768,-32768,  1506,-32768,-32768,-32768,  6962,   868,-32768,   530,
  1081,-32768,-32768,  1081,  1196,-32768,-32768,   506,   506,-32768,
   561,    41,-32768,  2525,-32768,-32768,-32768,-32768,   417,   343,
-32768,-32768,-32768,-32768,-32768,-32768,   637,-32768,   511,-32768,
  5025,  6499,-32768,   204,   204,   932,-32768,-32768,-32768,-32768,
   730,-32768,-32768,   423,   506,  1211,  1211,-32768,-32768,-32768,
  4165,   307,-32768,-32768,-32768,   529,  5500,-32768,-32768,  4101,
   877,  2168,-32768,  1055,-32768,-32768,   529,-32768,-32768,   417,
-32768,-32768,-32768,    80,-32768,-32768,-32768,  6499,   924,   471,
  6745,    56,  4444,-32768,   704,   456,   893,   720,   243,  7245,
   329,   896,-32768,   904,  6499,    73,   570,   851,-32768,   100,
  1006,-32768,-32768,   964,  1881,   934,   995,   570,   144,-32768,
   148,   928,-32768,  6499,   720,  4944,-32768,  1367,   377,  4944,
-32768,  6499,  6580,  6499,  6418,  1881,-32768,   717,-32768,   442,
-32768,-32768,-32768,-32768,   941,   956,   932,   960,-32768,  6418,
-32768,-32768,  6499,  6499,  5106,  6499,  6499,  6499,  6499,  6499,
  6499,  6499,  6499,  6499,  6499,  6499,  6499,  6499,  6499,  6499,
  6499,  6499,-32768,-32768,-32768,-32768,-32768,-32768,  6499,  6499,
  6499,  1003,   823,  5430,-32768,-32768,    73,   570,   990,   144,
   121,   447,    53,-32768,-32768,-32768,-32768,  6499,-32768,-32768,
-32768,-32768,   132,   503,   629,   629,-32768,-32768,   691,-32768,
-32768,  5025,  1016,  1020,-32768,-32768,   132,-32768,  5349,-32768,
-32768,   456,   530,  1051,  1051,    73,-32768,   440,   973,   992,
-32768,   991,-32768,   654,   994,-32768,  1081,   589,-32768,  1608,
-32768,-32768,  1000,-32768,-32768,-32768,   637,-32768,-32768,-32768,
-32768,-32768,-32768,  1002,  1015,  1031,  1032,   995,    73,   570,
-32768,  6499,   333,-32768,   558,   763,   132,   737,-32768,  4533,
  7245,-32768,   271,   204,-32768,-32768,-32768,    31,-32768,   423,
   423,  1211,  1211,-32768,-32768,   521,-32768,  4209,  1034,-32768,
   995,-32768,   456,  1007,   311,  1043,-32768,  1040,-32768,-32768,
   637,-32768,-32768,-32768,-32768,  1100,-32768,-32768,  1150,   305,
  7084,-32768,-32768,    58,    34,   775,  6499,  6852,   417,   225,
-32768,  7012,   838,  6852,   435,   142,  1101,-32768,-32768,-32768,
   897,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   497,
-32768,-32768,   321,   611,  1074,  1105,-32768,  4317,-32768,  4425,
-32768,-32768,   352,  1056,  1057,  1059,   184,  1060,-32768,  1061,
  1063,  1106,-32768,  6499,-32768,-32768,  1067,  6175,-32768,  7245,
  7245,-32768,-32768,  1118,  7281,  7296,  2383,  2711,  4053,  1953,
  2068,  1448,  1448,  1448,   953,   953,   895,   895,-32768,-32768,
-32768,-32768,   355,  1072,  6499,-32768,  6418,   709,  1131,  6499,
  1076,  1079,  1145,-32768,-32768,  6499,   739,   367,-32768,  6499,
  2293,-32768,-32768,  1856,-32768,   506,-32768,-32768,   148,-32768,
  1137,-32768,  1140,-32768,  6499,   132,  1090,  1020,-32768,  7245,
   530,   530,   788,-32768,-32768,-32768,-32768,   456,  1093,-32768,
  1097,  1196,-32768,  1104,   640,  1157,-32768,   995,-32768,-32768,
-32768,-32768,   343,   400,-32768,   511,-32768,  6499,-32768,  6499,
   801,-32768,  6499,   722,   900,  6499,-32768,  1162,-32768,    67,
-32768,-32768,   132,-32768,  3669,  1184,-32768,   235,   534,   601,
  1211,  1211,-32768,   456,  1117,   480,  1121,-32768,  1113,  1174,
-32768,-32768,-32768,-32768,  1211,  1211,   995,   610,    80,-32768,
-32768,-32768,-32768,  1150,-32768,-32768,  6499,  6499,-32768,-32768,
   148,  7134,  1125,   908,  1026,-32768,-32768,-32768,   148,  1126,
-32768,   926,-32768,-32768,  1419,-32768,-32768,   456,   456,   456,
-32768,  1881,-32768,    59,  1153,-32768,   456,  1129,   483,  1138,
   456,  1139,   516,  1142,   148,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,  1158,   520,-32768,  4860,-32768,  6499,-32768,
-32768,   113,   540,  1127,  7007,-32768,  6499,  5025,-32768,  6499,
  1240,-32768,   568,-32768,  6499,-32768,   575,   506,  2047,  2047,
-32768,-32768,  5025,  5025,  7245,-32768,-32768,  1144,-32768,-32768,
   456,-32768,-32768,-32768,-32768,   136,   343,-32768,-32768,-32768,
   579,   606,-32768,  6499,   635,  7062,  5025,  4617,-32768,-32768,
   277,   901,   884,-32768,-32768,-32768,  1165,-32768,  6499,  1198,
  1146,  1151,  6256,   232,-32768,   533,  1209,   497,  1210,  6337,
   818,-32768,  1253,  1159,-32768,  2157,  6903,  2805,-32768,-32768,
  1247,-32768,-32768,  2662,  5667,  2913,-32768,  3021,-32768,-32768,
-32768,  1357,-32768,-32768,   423,   423,-32768,-32768,-32768,-32768,
-32768,   456,   456,   456,   423,   423,  1217,-32768,-32768,  7134,
  7134,-32768,-32768,   929,   995,   886,   949,  6499,   417,-32768,
-32768,   944,  5562,-32768,-32768,  1260,  5025,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,  6499,-32768,  1222,  7265,   610,-32768,
  2758,  1170,  1172,   660,    49,-32768,-32768,  1235,-32768,   663,
-32768,  2301,-32768,-32768,-32768,  1051,  1051,   456,-32768,-32768,
-32768,-32768,   672,-32768,  5025,-32768,  6499,-32768,  1224,-32768,
   132,-32768,-32768,-32768,-32768,-32768,-32768,   932,  4698,  1200,
  7179,-32768,-32768,-32768,-32768,  1179,  6499,  1182,    83,   197,
  1183,   811,-32768,   826,-32768,-32768,  1187,-32768,-32768,  1215,
-32768,-32768,   510,   318,-32768,  1188,   348,   843,  1195,-32768,
-32768,-32768,-32768,-32768,   497,   132,-32768,-32768,   946,-32768,
  3129,-32768,   970,-32768,  3237,-32768,-32768,    62,   456,   456,
   456,  5025,-32768,-32768,-32768,-32768,-32768,   148,  1248,  6499,
  6499,  7134,   637,-32768,-32768,   148,  1220,   689,-32768,-32768,
   456,   456,   456,   456,   456,   456,  1204,  4779,  1203,   610,
-32768,-32768,  1881,   799,  1261,  1229,  1232,-32768,-32768,-32768,
-32768,-32768,-32768,   530,   530,-32768,-32768,  7201,  5025,-32768,
   850,   850,  5985,-32768,  1299,  1218,  1216,-32768,  1219,-32768,
  6418,-32768,  6499,  5773,-32768,  1223,-32768,-32768,  1225,  6499,
-32768,  1236,  6499,-32768,-32768,   611,-32768,   637,-32768,-32768,
-32768,   637,  1279,   964,  1286,-32768,-32768,-32768,-32768,-32768,
  5187,  5187,-32768,-32768,  5025,-32768,  5025,  7134,  7134,-32768,
   995,-32768,   814,  1260,  1238,-32768,-32768,-32768,  1127,  7007,
-32768,  6499,  5025,-32768,-32768,  2047,  2047,  5025,-32768,-32768,
  6418,-32768,-32768,-32768,-32768,-32768,-32768,  3777,-32768,-32768,
  1244,  5500,  5773,  7223,-32768,-32768,-32768,   706,-32768,-32768,
   707,-32768,    38,-32768,  5985,-32768,-32768,-32768,-32768,  1249,
-32768,  1251,-32768,-32768,-32768,-32768,  1287,  1302,  1255,-32768,
-32768,  1262,  1268,   710,-32768,  1264,  1267,-32768,  1273,  1279,
  5879,   857,   980,  3345,-32768,   417,-32768,-32768,  1277,  1278,
  1368,  1281,    44,-32768,-32768,  1294,-32768,-32768,  5025,  1378,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    48,-32768,
-32768,-32768,  6499,  1283,-32768,-32768,  1279,   637,  5773,-32768,
-32768,  1306,   195,  1340,-32768,-32768,-32768,  3885,   547,  1307,
  5268,  5268,-32768,  1343,-32768,  3993,  1292,-32768,-32768,   995,
-32768,  6499,  1368,  1296,  1368,   993,  3453,-32768,-32768,-32768,
  1881,  1298,  1300,  1390,  1013,  3561,-32768,  1353,  1303,   379,
-32768,-32768,-32768,-32768,   932,   932,   132,-32768,-32768,  1304,
-32768,-32768,-32768,-32768,  1400,  1308,-32768,-32768,-32768,  1317,
  5879,  5879,-32768,  5025,-32768,   715,-32768,-32768,-32768,-32768,
-32768,  1401,  1325,   932,-32768,-32768,-32768,  1431,  1433,-32768
};

static const short yypgoto[] = {-32768,
  1312,-32768,-32768,  1152,    20,  1435,-32768,-32768,-32768,-32768,
   747,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -671,  1315,
  1329,-32768,-32768,-32768,-32768,  1321,-32768,-32768,   741,    -8,
   958,  -225,   145,   -24,-32768,-32768,  1341,  1062,  -900,-32768,
   703,   389,-32768,   -27,-32768,   368,   334, -1041,-32768,   281,
  -799,  -230,  -161,   919,-32768,  -149,  1114,  -162,-32768,-32768,
-32768,-32768,  -180,  -114,  -108,-32768,-32768,   472,   -32,   771,
  1316,  1295,    -3,  1205,    -1,    36,   581,   -28,  -283,-32768,
-32768,  1164,-32768,-32768,-32768,  -502,-32768,   332,-32768,  -270,
   675,   -10,-32768,-32768,-32768,   805,  -252,  1459,  1464,-32768,
-32768,-32768,-32768,-32768,  -154,-32768,   742,   927,  -530,-32768,
   758,   597,   725,  -335,  1161,-32768,-32768,  1036,   836,   -42,
   -94,    12,  1709,  -243,-32768,  -105,  1202,   726,  1018,-32768,
     2,  -217,-32768,  -111,  -798,  -808,  -826, -1146,-32768,   793,
  -104,  -127,-32768,-32768,-32768,-32768,  -851,  -944,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   505,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,  -144,   268,-32768,   267,-32768,    -9,-32768,  -256,
  -182,   -46,  1310,-32768,   -50,  -576,   766,   524,-32768,  1638
};


#define	YYLAST		7369


static const short yytable[] = {    40,
    40,    67,    53,    53,   198,   150,   161,   282,   309,   309,
   163,   269,   106,   518,   107,   713,   464,   590,   501,   186,
    27,    27,   500,   791,   492,   257,   305,   108,    40,   170,
   532,   359,   310,   346,   399,   184,   323,   162,   314,   764,
   254,   858,   551,   388,   388,   483,  1032,   446,   750,   488,
   446,  1000,   248,  1038,   388,   460,   461,   388,  1080,   239,
    40,   388,     4,   143,   733,   388,   239,   403,   446,  1181,
   404,   388,    63,    64,   409,   169,    -1,   733,   412,    60,
   297,   733,    63,   173,   445,   562,  1268,   558,   768,  1031,
   457,   587,  1231,    16,   289,   290,   170,   587,    61,   326,
    16,    68,  1276,    58,   138,    18,   274,  1041,   332,  1045,
   447,   448,   767,   337,   449,   563,   239,   868,    58,    65,
   145,   171,    40,    63,    64,    53,   162,   663,    58,  1219,
   146,   458,   119,   120,    63,    64,   734,   147,    63,   173,
   533,  1232,   148,   456,   503,   139,   459,   462,    16,  1267,
   383,   170,  1089,  1275,    22,   276,   539,   170,  1174,   463,
   105,   588,   945,   479,    66,   116,    26,  1143,   555,  1101,
  1102,  1103,   869,   855,   180,   172,   309,   309,   537,  1080,
   408,    69,   116,   362,   199,   980,   110,  -105,    40,  1032,
   382,   361,   775,  1032,   534,   406,   372,   169,    40,   535,
   536,   684,   450,   339,   306,   857,   105,   402,   118,   323,
   540,   541,   681,   400,   451,    66,   376,   399,   960,  1141,
  1142,   239,   613,   708,   121,   200,    66,   667,   170,    60,
   180,   388,  1031,   195,    63,    64,  1031,   258,   507,   274,
   196,   122,    60,   473,   619,   162,   783,   784,    61,  1283,
  1234,   701,   105,   307,   927,   468,   116,   116,   116,   291,
   170,    61,  1185,   170,   292,    40,   691,   692,   327,   933,
   171,   116,   123,    40,   526,   775,  1251,   757,   653,   627,
  1178,   132,    40,   678,   189,    53,   682,   810,   116,   561,
   525,   259,   116,   479,  1189,   469,   668,  1192,  1284,   470,
   528,  -106,  1007,    27,   591,   749,   496,    63,   173,  1012,
   761,  1014,   133,   192,   293,   116,   376,   579,   585,   565,
   556,   479,   328,   170,   335,   979,    66,   991,   361,   776,
   611,  1227,   601,   715,   165,   166,   167,   596,   471,   370,
   762,    10,   116,   614,   105,   376,   593,   615,   547,   162,
   170,    40,   621,   622,   193,   194,   376,   251,   406,   105,
   714,   479,   406,    14,   616,   618,   508,   620,   327,   339,
   457,   792,  1032,   107,   731,   280,  1251,  1251,    61,  1224,
   116,   992,   -89,   716,   239,   105,   746,   633,   239,   548,
   549,   105,   509,   239,   107,   510,   169,   511,   171,   180,
   659,   133,   479,   166,   167,   479,   309,  1281,   239,    10,
   550,   458,   253,   654,   752,  1031,   661,   479,   457,   105,
  1248,   140,  1129,   260,   793,   294,   141,  1054,  1055,   732,
   295,    14,  1059,  1315,   342,  1032,   739,   740,   457,   343,
   693,   658,   664,   370,  1032,   501,   799,   512,   803,   500,
   479,   303,  1131,   483,   664,   806,   488,  1279,   820,   458,
   116,   116,   815,   276,   329,   116,   323,    40,   473,  1287,
   836,   116,   323,   574,   575,   186,   116,  1296,  1031,   458,
   296,   493,  1316,   623,   699,   138,   170,  1031,   665,   794,
   935,   705,    40,   822,   116,   823,   261,   388,   935,   366,
   367,     6,   195,   859,   833,   330,   331,   139,   837,   196,
   829,    16,   576,   519,   520,     6,    18,   144,   721,   105,
   195,   728,   494,   495,   624,   577,   376,   196,   774,   666,
   479,   145,   496,   479,   782,  1009,  1010,     6,   747,   781,
   105,   146,   368,   694,   669,   565,   361,   192,   147,   366,
   367,     6,   521,   578,    11,    12,   861,   966,   862,  1150,
  -313,   865,   547,    56,    57,    22,   479,  1288,   773,   410,
   479,   493,   973,   974,   780,   329,    40,    26,   368,  -313,
   376,  -313,    40,   918,   411,   670,   949,   105,   193,   194,
   479,    22,   368,   522,   369,   195,   986,   990,   800,   717,
   804,   372,   196,   548,   549,   180,   361,   590,   361,   116,
   116,   410,   494,   495,  1127,    60,   330,   331,   479,   952,
   205,   691,   692,   956,   743,   479,   502,   180,   842,   479,
   369,     4,   115,  -313,    61,   915,   916,   913,   105,   702,
   718,    22,   329,   961,   369,  1205,  1206,   170,  1207,   925,
   926,   283,  1289,   824,   703,   239,   479,    72,     6,     7,
     8,     9,    11,    12,   244,   964,    10,   388,   825,    16,
   262,   969,    40,   970,    18,   671,  1070,   473,   971,   565,
   967,    13,   981,   330,   331,   479,   116,   116,    14,   672,
   -24,   526,  1290,     4,   126,     6,     7,     8,     9,   673,
    40,   680,   983,    10,   914,   -24,   266,   525,   311,   982,
   479,   674,   268,   479,  1097,   166,   167,   528,    13,   333,
   932,    10,   479,    22,   870,    14,    50,    50,   941,   962,
   963,    16,   262,   361,   565,    26,    18,   671,   984,  1154,
   298,   300,   939,    14,   370,   192,   117,   245,    22,   601,
   826,   672,   301,   211,   954,   131,   479,   479,  1094,  1095,
   479,   673,   398,  1088,   164,  1332,  1091,    58,   266,   287,
   288,    38,    38,   674,   268,  1096,  -105,  1298,   722,  1151,
   834,  1144,   302,    40,   344,    22,   193,   194,   363,   195,
   107,   827,  1155,   376,   972,   375,   196,    26,     4,   115,
   127,   376,   384,   276,   719,   166,   167,   990,   728,  1229,
  1230,    10,   140,  1244,   392,   116,  1208,   141,  1333,   723,
    59,   835,  1209,   274,    60,   965,    72,     6,  1169,     8,
    73,   565,   246,    14,   393,    10,    16,   277,   278,   279,
  1161,    18,   863,    61,   551,   720,   105,   395,   849,    50,
    13,   396,  1119,   597,   598,  1006,    19,    14,   850,   989,
   370,    62,  1017,  1023,  1026,   442,    20,  1122,  1027,   315,
  1104,   656,  1018,   117,  1203,  1008,  1204,  1011,    21,   769,
   770,  1162,   118,   864,   192,   116,   116,   372,  1063,   372,
    22,  1170,  1215,  1120,    38,   162,   361,  1218,  1252,   116,
   116,   446,    26,   361,   361,   657,   361,   467,  1123,   478,
    40,   472,   397,    72,     6,   355,     8,    22,  1085,   116,
  1216,  1217,    10,   380,   476,   193,   194,  1077,   195,    58,
   479,    58,  1171,    11,    12,   196,   105,    13,   995,  1253,
  1060,    40,   777,   778,    14,    60,   211,  -278,  1094,  1095,
    16,    11,    12,   481,  -106,   398,   480,   -79,  1188,  1084,
   350,  1191,   -79,   246,    61,   430,   431,   432,  1273,   105,
   246,  1109,  1128,   572,  1280,   -82,   491,  1132,   573,  1116,
   -82,   307,  1100,   116,   116,   557,    72,     6,   158,     8,
   159,   165,   166,   167,    60,    10,   592,   361,    10,   594,
  1214,   786,   787,  1061,    22,   993,   994,  1146,   599,    50,
    13,  1193,   595,    61,   600,  1152,   604,    14,    51,    51,
    14,   428,   429,   430,   431,   432,   605,  1135,   936,   937,
   370,   612,   370,  1056,  1057,   662,   372,   246,    51,   361,
   116,   278,   279,   361,   625,   246,   117,    51,  1064,  1065,
   993,  1136,   655,  1331,    38,   155,   155,   380,   276,   626,
   338,   166,   167,   628,  1212,  1213,    16,    10,   685,   989,
   686,    18,   144,   170,   993,  1139,   695,    22,   355,  1159,
   938,   107,   376,  1180,   993,  1255,   145,   166,   167,    14,
  1329,  1330,   262,    10,  1160,   696,   146,   993,  1303,   697,
   246,   361,   700,   147,   707,   105,   709,  1182,   148,   239,
   751,   264,   361,  1180,  1180,    14,   116,   993,  1311,   710,
    22,   265,   108,   350,   387,   391,  1292,  1293,   266,    51,
    51,    51,    26,   267,   268,   711,   712,  1182,  1182,   239,
   239,    51,   748,  1180,   155,   155,   753,   376,   754,  1226,
   759,   376,   108,   108,   760,   785,   795,   796,   274,   807,
   808,   155,   809,   811,   812,   155,   813,  1182,   262,   239,
   816,   814,   819,   263,   231,  1258,   361,  1317,  1318,   370,
   821,   361,   108,   828,   830,   831,   832,   264,   155,   843,
   676,   676,   844,   361,   676,   847,   852,   265,   180,    72,
     6,     7,     8,     9,   266,   853,  1337,    51,    10,   267,
   268,   856,   371,     4,   143,    51,   867,   733,   276,   361,
   917,   920,   361,    13,   919,  1277,   921,   105,   934,   942,
    14,   231,   948,    63,   173,   946,   174,   175,   176,   246,
   955,   950,   951,   633,   633,   953,   968,   999,  1307,   975,
  1003,    16,  1002,   453,  1299,  1004,    18,   361,  1013,  1015,
  1019,  1033,  1067,  1021,   246,   177,   361,   278,   279,  1053,
   372,   145,  1078,  1086,   361,  1087,  1090,   376,  1099,   178,
   179,   146,  1111,  1115,   487,   361,  1117,  1118,   147,   107,
    22,  1125,  1130,   148,   361,    39,    39,  1126,  1319,   993,
  1147,    51,  1153,   117,   105,    22,   360,  1156,  1157,   117,
   116,   116,  1164,  1163,  1175,  1165,   527,    26,   246,   361,
   361,  1177,  1176,  1179,   128,   180,   116,  1186,  1194,  1187,
   181,   182,   183,   155,   155,  1197,     4,   115,   155,  1239,
  1190,  1211,    72,     6,   155,     8,   273,  1225,   246,    51,
   455,    10,  1240,  1237,   246,  1238,   247,   347,  1241,     4,
   126,     6,     7,     8,     9,  1242,    13,   155,   155,    10,
    51,  1243,  1245,    14,    16,  1246,  1247,  1262,   246,    18,
   246,  1260,  1261,  1270,    13,  1266,  1274,  1278,  1282,  1291,
  1285,    14,  -392,  1294,    19,  1297,   838,    16,  1310,   117,
  1301,  1308,    18,  1309,    20,  1313,  1314,  1323,   433,  1325,
  1335,   348,  1327,   370,   531,   360,    21,    19,    39,   347,
  1328,     4,   126,     6,     7,     8,     9,    20,    22,  1336,
  1339,    10,  1340,    22,   284,   105,    55,   506,   285,    21,
    26,   434,   435,   360,   246,   436,    13,   438,   854,   440,
   441,    22,   286,    14,  -395,   304,   860,   706,   281,    16,
   928,   571,  -392,    26,    18,   433,   278,   279,  1158,  1173,
  1110,   629,   246,   348,  1233,  1202,  1024,   334,   497,    19,
   278,   279,    51,    51,   351,  1210,    51,   247,   129,    20,
   552,   957,   848,   130,   247,   912,   763,   360,   434,   435,
   929,    21,   436,   437,   438,   439,   440,   441,  1048,   943,
   355,   586,   688,    22,   426,   427,   428,   429,   430,   431,
   432,   846,   546,   231,  -395,    26,   630,   631,   911,   635,
   636,   637,   638,   639,   640,   641,   642,   643,   644,   645,
   646,   647,   648,   649,   650,   651,  1138,   262,     4,   115,
  1300,  1302,   652,   360,     0,   350,   466,   944,  1134,   155,
   155,   247,     0,     0,   278,   279,   264,     0,     0,   247,
     0,   360,     0,     0,     0,     0,   265,   191,    39,     0,
     0,     0,     0,   266,     0,   531,    16,     0,   267,   268,
     0,    18,   690,     0,     0,   155,     0,     0,     0,     0,
  -666,   155,  -666,  -666,     0,     0,   318,     0,  -666,     0,
    63,   173,     0,   174,   175,   176,   319,   371,   192,     0,
     0,     0,  1028,   320,   247,     0,  -666,  -666,   321,  -666,
     0,  -666,     0,     0,     0,   360,     0,   355,    54,    54,
    22,     0,   177,   531,     0,     0,     0,   351,     0,     0,
     0,     0,    26,     0,     0,     0,   704,   179,    54,   193,
   194,   360,   195,     0,     0,     0,     0,    54,   355,   196,
   336,     0,     0,     0,     0,    54,    54,     0,     0,     0,
     0,  -666,   350,     0,     0,     0,     0,     0,    51,     0,
   772,   841,     0,  -666,     0,  -666,  -666,   380,     0,     0,
     0,  -666,   180,     0,     0,     0,     0,   181,   182,   183,
     0,   192,     0,   350,     0,     0,     0,     0,     0,  -666,
  -666,   360,  -666,   360,  -666,     0,     0,   113,   114,     0,
     0,     0,     0,   527,     0,     0,     0,   360,     0,     0,
     0,   818,     0,     0,     0,     0,     4,   143,     0,    54,
    54,    54,   193,   194,     0,   195,     0,     0,   155,   155,
     0,    54,   196,   247,    54,    54,     0,   201,   360,     0,
   360,     0,   155,   155,  -278,     0,     0,     0,     0,   360,
     0,    54,     0,   360,    16,    54,     0,  -459,   247,    18,
   144,     0,   155,     0,     0,     0,     0,     0,   845,     0,
     0,     0,    51,     0,   145,  -459,     4,   378,    54,    60,
     0,     0,     0,  -459,   146,     0,  -459,     0,  -459,     0,
     0,   147,     0,     0,     0,     0,   148,    54,    61,     0,
     0,   360,     0,   360,     0,    54,   360,     0,    22,   866,
     0,     0,   247,     0,    16,     0,     0,  -459,   149,    18,
    26,     0,   401,   316,   317,     0,    51,    51,     4,   126,
     6,     7,     8,     9,    19,     0,   244,     0,    10,     0,
     0,     0,   247,   454,    20,     0,     0,     0,   247,   454,
   930,   931,     0,    13,    72,     6,    21,     8,    73,     0,
    14,   278,   279,    10,     0,     0,    16,   262,   379,     0,
   356,    18,   247,   371,   247,   371,     0,   381,    13,     0,
    26,     0,     0,   155,   155,    14,   672,     0,     0,     0,
     0,    54,     0,     0,     0,     0,   673,     0,     0,    51,
   531,     0,   958,   266,     0,     0,     0,     0,   674,   268,
   360,   531,     0,     0,     0,     0,     0,     0,   360,   245,
    22,     0,     0,    54,    54,     0,   531,   531,    54,     0,
    51,     0,    26,     0,    54,     0,     0,     0,   247,    54,
   482,     0,   484,   485,     0,    22,     0,   360,     0,     0,
   531,   531,     0,     0,     0,     0,     0,    54,    54,    51,
    54,     0,  1001,     0,     0,     0,   247,     0,     0,     0,
     0,     0,   357,     0,   202,   126,     6,     7,     8,   358,
   204,   205,   244,   206,    10,   422,   423,   424,   425,   426,
   427,   428,   429,   430,   431,   432,   542,   543,     0,    13,
   207,   208,   209,     0,   210,     0,    14,   553,   211,  -261,
     0,   212,    16,     0,     0,   213,   214,   215,     0,     4,
   115,  1062,   371,     0,   276,     0,     0,     0,     0,   216,
   531,     0,   217,     0,     0,     0,     0,     0,     0,     0,
   218,   219,   220,     0,     0,     0,   221,   222,     0,   351,
     0,     0,     0,     0,   223,     0,     0,    16,   262,     0,
   454,     0,    18,     0,     0,   245,    22,     0,   531,     0,
  1098,     0,    54,    54,     0,  -644,    54,   672,   224,   225,
     0,     0,     0,     0,     0,     0,     3,   673,     4,     5,
     6,     7,     8,     9,   266,     0,     0,     0,    10,   674,
   268,   423,   424,   425,   426,   427,   428,   429,   430,   431,
   432,    22,     0,    13,     0,     0,     0,     0,     0,     0,
    14,     0,     0,    26,     0,     0,    16,     0,     0,     4,
   143,    18,     0,     0,     0,   531,     0,     0,     0,     0,
     4,   378,     0,  1148,  1149,   679,    19,     0,     0,    54,
    54,     0,     0,    51,    51,     0,    20,     0,     0,     0,
     0,   531,     0,   324,     0,     0,     0,    16,    21,   155,
     0,   698,    18,   144,     0,     0,   351,     0,    16,     0,
    22,    23,   531,    18,     0,    54,  -666,   145,  -666,  -666,
    25,    54,    26,     0,  -666,     0,  1184,   146,   559,     0,
     0,     0,     0,   360,   147,     0,   360,   351,   560,   148,
     0,     0,  -666,  -666,     0,  -666,     0,  -666,     0,     0,
    21,    22,   741,   742,     0,   744,     0,     0,   531,     0,
   531,  1022,   379,    26,     0,     0,     0,   755,   756,     0,
     0,     0,     0,     0,    26,   360,   531,     0,   195,     0,
     0,   531,     0,     0,   771,   196,   371,     0,     0,     0,
     0,   779,     0,     0,     0,     4,   115,   325,     0,     0,
   788,   789,   790,     4,   378,     0,     0,     0,    54,     0,
     0,    54,     0,     0,     0,   797,     0,   801,     0,     0,
   805,     0,     0,    -2,     3,     0,     4,     5,     6,     7,
     8,     9,     0,    16,   262,     0,    10,     0,    18,     0,
     0,    16,     0,     0,     0,     0,    18,     0,     0,    11,
    12,    13,   531,   672,     0,     0,     0,     0,    14,     0,
     0,  1092,    15,   673,    16,     0,    17,     0,     0,    18,
   266,  1093,     0,     0,     0,   674,   268,     0,    54,    54,
   839,   840,     0,    21,    19,     0,     0,    22,     0,     0,
     0,     0,    54,    54,    20,   379,     0,     0,     0,    26,
     0,     0,     0,     0,   851,     0,    21,    26,     0,     0,
     0,     0,    54,     0,     0,     0,     0,     0,    22,    23,
    24,     0,    54,     0,     0,     0,     0,     0,    25,    71,
    26,     0,    72,     6,     0,     8,    73,   531,     0,     0,
     0,    10,   419,   420,   421,   422,   423,   424,   425,   426,
   427,   428,   429,   430,   431,   432,    13,     0,     0,   922,
   923,   924,     0,    14,     0,    74,    75,     0,     0,     0,
    76,     0,     0,     0,     0,     0,    54,    54,     0,    77,
    78,    79,    80,     0,     0,    81,    82,    83,    84,    85,
    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
    96,    97,     0,    98,    99,     0,     0,   100,   101,     0,
     0,     0,   102,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,    22,     0,     3,     0,     4,     5,     6,
     7,     8,     9,    54,    54,   103,   104,    10,     0,     0,
     0,   125,     0,     4,   126,     6,     7,     8,     9,    54,
    11,    12,    13,    10,     0,     0,     0,   976,   977,    14,
   978,     0,     0,    15,     0,    16,     0,    17,    13,     0,
    18,     0,     0,     0,     0,    14,     0,     0,     0,     0,
    54,    16,     0,     0,     0,    19,    18,     0,     0,     0,
     0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
     0,    19,     0,     0,     0,     0,     0,    21,     0,    54,
     0,    20,     0,     0,     0,     0,     0,     0,     0,    22,
    23,    24,     0,    21,     0,  1049,  1050,  1051,     0,    25,
   504,    26,     0,     0,     0,    22,     0,     0,     0,     0,
     0,     0,  1058,     0,     0,     0,     0,    26,     0,     0,
  1066,     0,     0,     0,     0,     0,  1071,  1072,  1073,  1074,
  1075,  1076,  1034,     0,  -600,  -600,  -600,  -600,  -600,  -600,
  -600,  -600,     0,  -600,  -600,  -600,  -600,  -600,  -600,  -600,
  -600,  -600,  -600,  -600,  -600,  -600,  -600,  -600,  -600,  -600,
  -600,  -600,  -600,     0,  -600,     0,  -600,     0,  -600,  -600,
     0,  -600,  -600,     0,     0,  -600,  -600,  -600,     0,     0,
  -600,  -600,     0,     0,     0,     0,     0,     0,     0,  -600,
     0,     0,  -600,     0,     0,     0,     0,     0,     0,     0,
  -600,  -600,  -600,     0,     0,     0,  -600,  -600,     0,     0,
     0,     0,     0,     0,  -600,     0,  -600,     0,  1035,  -600,
  1036,     0,  -600,  -600,  -600,     0,  -600,     0,     0,     0,
     0,    72,     6,     0,     8,    73,  -600,  -600,  -600,  -600,
    10,   420,   421,   422,   423,   424,   425,   426,   427,   428,
   429,   430,   431,   432,     0,    13,     0,     0,     0,     0,
     0,     0,    14,     0,     0,     0,     0,     0,     0,     0,
  1166,  1167,     0,    54,    54,  1029,  1082,   873,   126,     6,
     7,     8,   358,   204,   205,     0,   206,    10,   874,    54,
   875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
    11,    12,    13,   207,   208,   209,     0,   210,     0,    14,
  1083,   211,  -261,     0,   212,    16,     0,     0,   213,   214,
   215,     0,    22,   885,   307,     0,     0,     0,     0,     0,
     0,     0,   216,     0,     0,   217,     0,     0,     0,     0,
     0,     0,     0,   218,   219,   220,     0,     0,     0,   221,
   222,     0,     0,     0,     0,     0,     0,   223,     0,   886,
     0,     0,   887,     0,     0,   888,   889,   890,     0,   891,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   892,
  1030,   224,   225,  1039,     0,   873,   126,     6,     7,     8,
   358,   204,   205,     0,   206,    10,   874,     0,   875,   876,
   877,   878,   879,   880,   881,   882,   883,   884,    11,    12,
    13,   207,   208,   209,     0,   210,     0,    14,     0,   211,
  -261,     0,   212,    16,     0,     0,   213,   214,   215,     0,
     0,   885,   307,     0,     0,     0,     0,     0,     0,     0,
   216,     0,     0,   217,     0,     0,     0,     0,     0,     0,
     0,   218,   219,   220,     0,     0,     0,   221,   222,     0,
     0,     0,     0,     0,     0,   223,     0,   886,     0,     0,
   887,     0,     0,   888,   889,   890,     0,   891,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   892,  1040,   224,
   225,  1043,     0,   873,   126,     6,     7,     8,   358,   204,
   205,     0,   206,    10,   874,     0,   875,   876,   877,   878,
   879,   880,   881,   882,   883,   884,    11,    12,    13,   207,
   208,   209,     0,   210,     0,    14,     0,   211,  -261,     0,
   212,    16,     0,     0,   213,   214,   215,     0,     0,   885,
   307,     0,     0,     0,     0,     0,     0,     0,   216,     0,
     0,   217,     0,     0,     0,     0,     0,     0,     0,   218,
   219,   220,     0,     0,     0,   221,   222,     0,     0,     0,
     0,     0,     0,   223,     0,   886,     0,     0,   887,     0,
     0,   888,   889,   890,     0,   891,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   892,  1044,   224,   225,  1029,
     0,   873,   126,     6,     7,     8,   358,   204,   205,     0,
   206,    10,   874,     0,   875,   876,   877,   878,   879,   880,
   881,   882,   883,   884,    11,    12,    13,   207,   208,   209,
     0,   210,     0,    14,     0,   211,  -261,     0,   212,    16,
     0,     0,   213,   214,   215,     0,     0,   885,   307,     0,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,     0,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
     0,   223,     0,   886,     0,     0,   887,     0,     0,   888,
   889,   890,     0,   891,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   892,  1137,   224,   225,  1029,     0,   873,
   126,     6,     7,     8,   358,   204,   205,     0,   206,    10,
   874,     0,   875,   876,   877,   878,   879,   880,   881,   882,
   883,   884,    11,    12,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,  -261,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,   885,   307,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,     0,   223,
     0,   886,     0,     0,   887,     0,     0,   888,   889,   890,
     0,   891,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   892,  1140,   224,   225,  1029,     0,   873,   126,     6,
     7,     8,   358,   204,   205,     0,   206,    10,   874,     0,
   875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
    11,    12,    13,   207,   208,   209,     0,   210,     0,    14,
     0,   211,  -261,     0,   212,    16,     0,     0,   213,   214,
   215,     0,     0,   885,   307,     0,     0,     0,     0,     0,
     0,     0,   216,     0,     0,   217,     0,     0,     0,     0,
     0,     0,     0,   218,   219,   220,     0,     0,     0,   221,
   222,     0,     0,     0,     0,     0,     0,   223,     0,   886,
     0,     0,   887,     0,     0,   888,   889,   890,     0,   891,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   892,
  1256,   224,   225,  1029,     0,   873,   126,     6,     7,     8,
   358,   204,   205,     0,   206,    10,   874,     0,   875,   876,
   877,   878,   879,   880,   881,   882,   883,   884,    11,    12,
    13,   207,   208,   209,     0,   210,     0,    14,     0,   211,
  -261,     0,   212,    16,     0,     0,   213,   214,   215,     0,
     0,   885,   307,     0,     0,     0,     0,     0,     0,     0,
   216,     0,     0,   217,     0,     0,     0,     0,     0,     0,
     0,   218,   219,   220,     0,     0,     0,   221,   222,     0,
     0,     0,     0,     0,     0,   223,     0,   886,     0,     0,
   887,     0,     0,   888,   889,   890,     0,   891,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   892,  1304,   224,
   225,  1029,     0,   873,   126,     6,     7,     8,   358,   204,
   205,     0,   206,    10,   874,     0,   875,   876,   877,   878,
   879,   880,   881,   882,   883,   884,    11,    12,    13,   207,
   208,   209,     0,   210,     0,    14,     0,   211,  -261,     0,
   212,    16,     0,     0,   213,   214,   215,     0,     0,   885,
   307,     0,     0,     0,     0,     0,     0,     0,   216,     0,
     0,   217,     0,     0,     0,     0,     0,     0,     0,   218,
   219,   220,     0,     0,     0,   221,   222,     0,     0,     0,
     0,     0,     0,   223,     0,   886,     0,     0,   887,     0,
     0,   888,   889,   890,     0,   891,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   892,  1312,   224,   225,   872,
     0,   873,   126,     6,     7,     8,   358,   204,   205,     0,
   206,    10,   874,     0,   875,   876,   877,   878,   879,   880,
   881,   882,   883,   884,    11,    12,    13,   207,   208,   209,
     0,   210,     0,    14,     0,   211,  -261,     0,   212,    16,
     0,     0,   213,   214,   215,     0,     0,   885,   307,     0,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,     0,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
     0,   223,     0,   886,     0,     0,   887,     0,     0,   888,
   889,   890,     0,   891,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   892,     0,   224,   225,  1223,     0,   873,
   126,     6,     7,     8,   358,   204,   205,     0,   206,    10,
   874,     0,   875,   876,   877,   878,   879,   880,   881,   882,
   883,   884,    11,    12,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,  -261,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,   885,   307,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,     0,   223,
     0,   886,     0,     0,   887,     0,     0,   888,   889,   890,
     0,   891,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   892,     0,   224,   225,  1286,     0,   873,   126,     6,
     7,     8,   358,   204,   205,     0,   206,    10,   874,     0,
   875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
    11,    12,    13,   207,   208,   209,     0,   210,     0,    14,
     0,   211,  -261,     0,   212,    16,     0,     0,   213,   214,
   215,     0,     0,   885,   307,     0,     0,     0,     0,     0,
     0,     0,   216,     0,     0,   217,     0,     0,     0,     0,
     0,     0,     0,   218,   219,   220,     0,     0,     0,   221,
   222,     0,     0,     0,     0,     0,     0,   223,     0,   886,
     0,     0,   887,     0,     0,   888,   889,   890,     0,   891,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   892,
     0,   224,   225,  1295,     0,   873,   126,     6,     7,     8,
   358,   204,   205,     0,   206,    10,   874,     0,   875,   876,
   877,   878,   879,   880,   881,   882,   883,   884,    11,    12,
    13,   207,   208,   209,     0,   210,     0,    14,     0,   211,
  -261,     0,   212,    16,     0,     0,   213,   214,   215,     0,
     0,   885,   307,     0,     0,     0,     0,     0,     0,     0,
   216,     0,     0,   217,     0,     0,     0,     0,     0,     0,
     0,   218,   219,   220,     0,     0,     0,   221,   222,     0,
     0,     0,     0,     0,     0,   223,     0,   886,     0,     0,
   887,     0,     0,   888,   889,   890,     0,   891,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   892,     0,   224,
   225,   554,     0,   202,   126,     6,     7,     8,   358,   204,
   205,   244,   206,    10,   421,   422,   423,   424,   425,   426,
   427,   428,   429,   430,   431,   432,     0,     0,    13,   207,
   208,   209,     0,   210,     0,    14,     0,   211,  -261,     0,
   212,    16,     0,     0,   213,   214,   215,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   216,     0,
     0,   217,     0,     0,     0,     0,     0,     4,   115,   218,
   219,   220,     0,     0,     0,   221,   222,     0,     0,     0,
     0,     0,     0,   223,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   245,    22,     0,     0,     0,     0,
     0,     0,     0,     0,  -644,    16,     0,   224,   225,   745,
    18,   202,   126,     6,     7,     8,   358,   204,   205,   244,
   206,    10,     0,     0,     0,   544,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   545,    13,   207,   208,   209,
     0,   210,   320,    14,     0,   211,  -261,   321,   212,    16,
     0,     0,   213,   214,   215,     0,     0,     0,     0,    22,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,    26,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
     0,   223,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   245,    22,     0,     0,     0,     0,     0,     0,
     0,     0,  -644,     0,     0,   224,   225,   798,     0,   202,
   126,     6,     7,     8,   358,   204,   205,   244,   206,    10,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,  -261,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,     0,   223,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   245,    22,     0,     0,     0,     0,     0,     0,     0,     0,
  -644,     0,     0,   224,   225,   802,     0,   202,   126,     6,
     7,     8,   358,   204,   205,   244,   206,    10,     0,     0,
     0,     0,     0,     0,   347,     0,     4,   126,     6,     7,
     8,     9,    13,   207,   208,   209,    10,   210,     0,    14,
     0,   211,  -261,     0,   212,    16,     0,     0,   213,   214,
   215,    13,     0,     0,     0,     0,     0,     0,    14,  -393,
     0,     0,   216,     0,    16,   217,     0,     0,     0,    18,
     0,     0,     0,   218,   219,   220,     0,     0,   348,   221,
   222,     0,     0,     0,    19,     0,     0,   223,     0,     0,
     0,     0,     0,     0,    20,     0,     0,     0,   245,    22,
     0,     0,     0,     0,     0,     0,    21,     0,  -644,     0,
     0,   224,   225,   529,     0,   724,   725,     6,    22,     8,
   385,   204,   205,     0,   206,    10,     0,     0,   589,  -393,
    26,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    13,   207,   208,   209,     0,   210,     0,    14,     0,   211,
  -261,     0,   212,    16,     0,     0,   213,   214,   215,     0,
     0,     0,   530,     0,     0,     0,     0,     0,     0,     0,
   216,     0,     0,   217,     0,     0,     0,     0,     0,     0,
     0,   218,   219,   220,     0,     0,     0,   221,   222,     0,
     0,     0,     0,     0,     0,   223,   726,   529,     0,   724,
   725,     6,     0,     8,   385,   204,   205,   180,   206,    10,
     0,     0,     0,     0,     0,     0,   987,     0,   727,   224,
   225,     0,     0,     0,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,  -261,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,     0,   530,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,  1106,   223,
   202,   126,     6,     7,     8,   358,   204,   205,     0,   206,
    10,   180,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   988,   224,   225,    13,   207,   208,   209,     0,
   210,     0,    14,     0,   211,  -261,     0,   212,    16,     0,
     0,   213,   214,   215,     0,     0,     0,  1107,     0,     0,
     0,     0,     0,     0,     0,   216,     0,     0,   217,     0,
     0,     0,     0,     0,     0,     0,   218,   219,   220,     0,
     0,     0,   221,   222,     0,     0,     0,     0,     0,   529,
   223,   724,   725,     6,     0,     8,   385,   204,   205,     0,
   206,    10,    22,     0,     0,     0,     0,     0,   987,     0,
     0,     0,  1108,     0,   224,   225,    13,   207,   208,   209,
     0,   210,     0,    14,     0,   211,  -261,     0,   212,    16,
     0,     0,   213,   214,   215,     0,     0,     0,   530,     0,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,     0,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
   529,   223,   724,   725,     6,     0,     8,   385,   204,   205,
     0,   206,    10,   180,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,  -354,   224,   225,    13,   207,   208,
   209,     0,   210,     0,    14,     0,   211,  -261,     0,   212,
    16,     0,     0,   213,   214,   215,     0,     0,     0,   530,
     0,     0,     0,     0,     0,     0,     0,   216,     0,     0,
   217,     0,     0,     0,     0,     0,     0,     0,   218,   219,
   220,     0,     0,     0,   221,   222,     0,     0,     0,     0,
     0,     0,   223,   726,   405,     0,   202,   126,     6,     0,
     8,   203,   204,   205,   180,   206,    10,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   224,   225,     0,     0,
     0,    13,   207,   208,   209,     0,   210,     0,    14,     0,
   211,  -261,     0,   212,    16,     0,     0,   213,   214,   215,
     0,     0,     0,  -229,     0,     0,     0,     0,     0,     0,
     0,   216,     0,     0,   217,     0,     0,     0,     0,     0,
     0,     0,   218,   219,   220,     0,     0,     0,   221,   222,
     0,     0,     0,     0,     0,   529,   223,   202,   126,     6,
     0,     8,   385,   204,   205,     0,   206,    10,    22,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   224,   225,    13,   207,   208,   209,     0,   210,     0,    14,
     0,   211,  -261,     0,   212,    16,     0,     0,   213,   214,
   215,     0,     0,     0,   530,     0,     0,     0,     0,     0,
     0,     0,   216,     0,     0,   217,     0,     0,     0,     0,
     0,     0,     0,   218,   219,   220,     0,     0,     0,   221,
   222,     0,     0,     0,     0,     0,   632,   223,   202,   126,
     6,     0,     8,   385,   204,   205,     0,   206,    10,    22,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   224,   225,    13,   207,   208,   209,     0,   210,     0,
    14,     0,   211,  -261,     0,   212,    16,     0,     0,   213,
   214,   215,     0,     0,     0,     0,     0,     0,     0,     0,
  -634,     0,     0,   216,     0,     0,   217,     0,     0,     0,
     0,     0,     0,     0,   218,   219,   220,     0,     0,     0,
   221,   222,     0,     0,     0,     0,     0,  1199,   223,   202,
   126,     6,     0,     8,   203,   204,   205,     0,   206,    10,
    22,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   224,   225,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,  -261,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,   632,   223,
   202,   126,     6,     0,     8,   385,   204,   205,     0,   206,
    10,    22,     0,     0,     0,     0,     0,     0,     0,     0,
     0,  -144,     0,   224,   225,    13,   207,   208,   209,     0,
   210,     0,    14,     0,   211,  -261,     0,   212,    16,     0,
     0,   213,   214,   215,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   216,     0,     0,   217,     0,
     0,     0,     0,     0,     0,     0,   218,   219,   220,     0,
     0,     0,   221,   222,     0,     0,     0,     0,     0,   689,
   223,   202,   126,     6,     0,     8,   385,   204,   205,     0,
   206,    10,    22,     0,     0,     0,     0,     0,     0,     0,
     0,  -634,     0,     0,   224,   225,    13,   207,   208,   209,
     0,   210,     0,    14,     0,   211,  -261,     0,   212,    16,
     0,     0,   213,   214,   215,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,     0,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
     0,   223,   202,   126,     6,     0,     8,   385,   204,   205,
     0,   206,    10,    22,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   224,   225,    13,   207,   208,
   209,     0,   210,     0,    14,     0,   211,     0,     0,   212,
    16,     0,     0,   213,   214,   215,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   216,     0,     3,
   217,     4,     5,     6,     7,     8,     9,     0,   218,   219,
   220,    10,     4,   143,   221,   222,     0,     0,     0,     0,
     0,     0,   223,     0,    11,    12,    13,     0,     0,     0,
     0,     0,     0,    14,    22,     0,     0,    15,     0,    16,
     0,    17,     0,     0,    18,     0,   224,   225,   660,     0,
    16,     0,     0,     0,     0,    18,   144,     0,     0,    19,
     0,     0,     0,     0,     0,     0,     0,     0,     0,    20,
   145,     0,   347,     0,     4,   126,     6,     7,     8,     9,
   146,    21,     0,     0,    10,     0,     0,   147,     0,     0,
     0,     0,   148,    22,    23,    24,     0,     0,     0,    13,
     0,     0,     0,    25,    22,    26,    14,  -394,     0,     0,
     0,     0,    16,     0,     0,     0,    26,    18,     0,     0,
     0,     0,     0,     0,     0,     0,   348,     0,   413,   414,
   415,     0,    19,   416,   417,   418,   419,   420,   421,   422,
   423,   424,    20,   426,   427,   428,   429,   430,   431,   432,
     0,     0,     0,     0,    21,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,    22,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   589,  -394,    26,   873,
   126,     6,     7,     8,   358,   204,   205,     0,   206,    10,
   874,     0,   875,   876,   877,   878,   879,   880,   881,   882,
   883,   884,    11,    12,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,     0,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,   885,   307,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,     0,   223,
     0,   886,     0,     0,   887,     0,     0,   888,   889,   890,
     0,   891,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   892,  1037,   224,   225,   873,   126,     6,     7,     8,
   358,   204,   205,     0,   206,    10,   874,     0,   875,   876,
   877,   878,   879,   880,   881,   882,   883,   884,    11,    12,
    13,   207,   208,   209,     0,   210,     0,    14,     0,   211,
     0,     0,   212,    16,     0,     0,   213,   214,   215,     0,
     0,   885,   307,     0,     0,     0,     0,     0,     0,     0,
   216,     0,     0,   217,     0,     0,     0,     0,     0,     0,
     0,   218,   219,   220,     0,     0,     0,   221,   222,     0,
     0,     0,     0,     0,     0,   223,     0,   886,     0,     0,
   887,     0,     0,   888,   889,   890,     0,   891,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   892,     0,   224,
   225,   873,   126,     6,     7,     8,   358,   204,   205,     0,
   206,    10,   874,     0,   875,   876,   877,   878,   879,   880,
   881,   882,   883,   884,    11,    12,    13,   207,   208,   209,
     0,   210,     0,    14,     0,   211,     0,     0,   212,    16,
     0,     0,   213,   214,   215,     0,     0,   885,  1249,     0,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,     0,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
     0,   223,     0,   886,     0,     0,   887,     0,     0,   888,
   889,   890,     0,   891,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   892,     0,   224,   225,   873,   126,     6,
     7,     8,   358,   204,   205,     0,   206,    10,   874,     0,
   875,   876,   877,   878,   879,   880,   881,   882,   883,   884,
    11,    12,    13,   207,   208,   209,     0,   210,     0,    14,
     0,   211,     0,     0,   212,    16,     0,     0,   213,   214,
   215,     0,     0,   885,     0,     0,     0,     0,     0,     0,
     0,     0,   216,     0,     0,   217,     0,     0,     0,     0,
     0,     0,     0,   218,   219,   220,     0,     0,     0,   221,
   222,     0,     0,     0,     0,     0,     0,   223,     0,   886,
     0,     0,   887,     0,     0,   888,   889,   890,     0,   891,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   892,
     0,   224,   225,   202,   126,     6,     0,     8,   385,   204,
   205,     0,   206,    10,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,    13,   207,
   208,   209,     0,   210,     0,    14,     0,   211,     0,     0,
   212,    16,     0,     0,   213,   214,   215,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   216,     0,
     0,   217,     0,     0,     0,     0,     0,     0,     0,   218,
   219,   220,     0,     0,     0,   221,   222,     0,     0,     0,
     0,     0,     0,   223,   444,     0,     0,   202,   126,     6,
     0,     8,   385,   204,   205,    22,   206,    10,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   224,   225,     0,
     0,     0,    13,   207,   208,   209,     0,   210,     0,    14,
     0,   211,     0,     0,   212,    16,     0,     0,   213,   214,
   215,     0,     0,     0,   817,     0,     0,     0,     0,     0,
     0,     0,   216,     0,     0,   217,     0,     0,     0,     0,
     0,     0,     0,   218,   219,   220,     0,     0,     0,   221,
   222,     0,     0,     0,     0,     0,     0,   223,   202,   126,
     6,     0,     8,   385,   204,   205,     0,   206,    10,    22,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   224,   225,    13,   207,   208,   209,     0,   210,     0,
    14,     0,   211,     0,     0,   212,    16,     0,     0,   213,
   214,   215,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   216,     0,     0,   217,     0,     0,     0,
     0,     0,     0,     0,   218,   219,   220,     0,     0,     0,
   221,   222,     0,     0,     0,     0,     0,     0,   223,   202,
   126,     6,     0,     8,   385,   204,   205,     0,   206,    10,
    22,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  1005,     0,   224,   225,    13,   207,   208,   209,     0,   210,
     0,    14,     0,   211,     0,     0,   212,    16,     0,     0,
   213,   214,   215,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   216,     0,     0,   217,     0,     0,
     0,     0,     0,     0,     0,   218,   219,   220,     0,     0,
     0,   221,   222,     0,     0,     0,     0,     0,     0,   223,
   202,   126,     6,     0,     8,   203,   204,   205,     0,   206,
    10,    22,     0,     0,     0,     0,     0,     0,     0,     0,
     0,  1016,     0,   224,   225,    13,   207,   208,   209,     0,
   210,     0,    14,     0,   211,     0,     0,   212,    16,     0,
     0,   213,   214,   215,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   216,     0,     0,   217,     0,
     0,     0,     0,     0,     0,     0,   218,   219,   220,     0,
     0,     0,   221,   222,     0,     0,     0,     0,     0,     0,
   223,   202,   126,     6,     0,     8,   385,   204,   205,     0,
   206,    10,    22,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   224,   225,    13,   207,   208,   209,
     0,   210,     0,    14,     0,   211,     0,     0,   212,    16,
     0,     0,   213,   214,   215,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   216,     0,     0,   217,
     0,     0,     0,     0,     0,     0,     0,   218,   219,   220,
     0,     0,     0,   221,   222,     0,     0,     0,     0,     0,
     0,   223,   202,   617,     6,     0,     8,   385,   204,   205,
     0,   206,    10,    22,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   224,   225,    13,   207,   208,
   209,     0,   210,     0,    14,     0,   211,     0,     0,   212,
    16,     0,     0,   213,   214,   215,   202,   126,     6,     0,
     8,   385,   204,   205,     0,   206,    10,   216,     0,     0,
   217,     0,     0,     0,     0,     0,     0,     0,   218,   219,
   220,    13,   207,     0,   221,   222,   210,     0,    14,     0,
   211,     0,   223,   212,    16,     0,     0,   213,   214,   215,
     0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
     0,   216,     0,     0,   217,     0,   224,   225,     0,     0,
     0,     0,   218,   219,   220,     0,     0,     0,   221,   222,
     0,     0,     0,   202,   126,     6,   386,     8,   385,   204,
   205,     0,   206,    10,     0,     0,     0,     0,    22,     0,
     0,     0,     0,     0,     0,     0,     0,     0,    13,   207,
   224,   225,     0,   210,     0,    14,     0,   211,     0,     0,
   212,    16,     0,     0,   213,   214,   215,   574,   582,     6,
   158,     8,   159,     0,     0,     0,     0,    10,   216,     0,
     0,   217,     0,     0,     0,     0,     0,     0,     0,   218,
   219,   220,    13,     0,     0,   221,   222,     0,     0,    14,
     0,     0,     0,   390,     0,    16,   583,     0,     0,     0,
    18,   144,     0,     0,     0,    22,     0,     0,     0,   577,
     0,     0,     0,     0,     0,   145,     0,   224,   225,     4,
   157,     6,   158,     8,   159,   146,     0,     0,     0,    10,
     0,     0,   147,     0,     0,     0,     0,   584,     0,     0,
     0,     0,     0,     0,    13,     0,     0,     0,     0,    22,
     0,    14,     0,     0,     0,     0,     0,    16,     0,     0,
     0,    26,    18,   144,     4,   126,     6,     7,     8,     9,
     0,     0,   244,     0,    10,     0,     0,   145,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   146,     0,    13,
     0,     0,     0,     0,   147,     0,    14,     0,     0,   148,
     0,     0,    16,     0,     0,     0,     0,    18,     0,     0,
     0,    22,     0,     0,     0,     4,   157,     6,   158,     8,
   159,   160,   318,    26,     0,    10,     0,     0,     0,     0,
     0,     0,   319,     0,     0,     0,     0,     0,     0,   320,
    13,     0,     0,     0,   321,     0,     0,    14,     0,     0,
     0,     0,     0,    16,     0,   245,    22,     0,    18,   144,
     4,   157,     6,   158,     8,   159,     0,     0,    26,     0,
    10,     0,     0,   145,   486,   126,     6,     7,     8,     9,
     0,     0,   244,   146,    10,    13,     0,     0,     0,     0,
   147,     0,    14,     0,     0,   148,     0,     0,    16,    13,
     0,     0,     0,    18,   144,     0,    14,    22,     0,     0,
     0,     0,     0,   262,     0,     0,     0,  1025,   145,    26,
    72,     6,     0,     8,   273,     0,     0,     0,   146,    10,
     0,     0,   264,     0,     0,   147,     0,     0,     0,     0,
   148,     0,   265,     0,    13,     0,     0,  -459,  -459,   266,
     0,    14,    22,  -459,   267,   268,     0,     0,   262,     0,
     0,     0,     0,   263,    26,   245,    22,    60,     0,     0,
     0,  -459,     0,     0,  -459,     0,   768,   264,     0,     0,
     0,     0,     0,     0,     0,     0,    61,   265,     0,     0,
     0,     0,     0,     0,   266,     0,     0,     0,     0,   267,
   268,     0,     0,     0,     0,  -459,     0,  -459,     0,     0,
     0,    22,     0,     0,  -459,     0,     0,     0,     0,     0,
     0,     0,     0,   413,   414,   415,     0,  -459,   416,   417,
   418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
   428,   429,   430,   431,   432,   413,   414,   415,     0,     0,
   416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
   426,   427,   428,   429,   430,   431,   432,     0,     0,     0,
     0,     0,     0,     0,     0,   605,     0,     0,     0,     0,
   985,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   413,   414,   415,   765,   766,
   416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
   426,   427,   428,   429,   430,   431,   432,  -159,   413,   414,
   415,     0,     0,   416,   417,   418,   419,   420,   421,   422,
   423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
   413,   414,   415,  1112,  1113,   416,   417,   418,   419,   420,
   421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
   431,   432,   413,   414,   415,  1168,     0,   416,   417,   418,
   419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
   429,   430,   431,   432,   413,   414,   415,  1228,     0,   416,
   417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
   427,   428,   429,   430,   431,   432,   413,   414,   415,     0,
     0,   416,   417,   418,   419,   420,   421,   422,   423,   424,
   425,   426,   427,   428,   429,   430,   431,   432,   415,     0,
     0,   416,   417,   418,   419,   420,   421,   422,   423,   424,
   425,   426,   427,   428,   429,   430,   431,   432,   417,   418,
   419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
   429,   430,   431,   432,   418,   419,   420,   421,   422,   423,
   424,   425,   426,   427,   428,   429,   430,   431,   432
};

static const short yycheck[] = {     1,
     2,    10,     1,     2,    51,    38,    39,   122,   136,   137,
    39,   106,    16,   297,    16,   518,   242,   353,   275,    44,
     1,     2,   275,   600,   268,    68,   135,    16,    30,    40,
   301,   193,   137,   188,   215,    44,   148,    39,   144,   570,
    68,   713,   326,   206,   207,   263,   898,    10,   551,   267,
    10,   878,    62,   905,   217,     3,     4,   220,   959,    61,
    62,   224,     3,     4,    34,   228,    68,   217,    10,  1111,
   220,   234,     3,     4,   224,    40,     0,    34,   228,    46,
   131,    34,     3,     4,   234,     6,  1233,   331,    55,   898,
    42,    36,    55,    41,   127,   128,   107,    36,    65,   150,
    41,    83,  1249,    46,     5,    46,   108,   906,   155,   908,
     3,     4,    55,   164,     7,    36,   118,    51,    46,    50,
    61,    51,   124,     3,     4,   124,   128,     7,    46,  1171,
    71,    83,     3,     4,     3,     4,   106,    78,     3,     4,
   302,   104,    83,   238,   104,    46,   241,    95,    41,   106,
   201,   162,   104,   106,    95,     8,   311,   168,  1103,   107,
    16,   106,   104,    51,    95,    21,   107,   106,   330,   996,
   997,   998,   106,   704,    95,   105,   304,   305,   306,  1080,
   223,     3,    38,   193,    42,   857,    65,   105,   190,  1041,
   200,   193,    51,  1045,   303,   223,   195,   162,   200,   304,
   305,   472,    95,   168,     1,   708,    62,   216,    65,   321,
   316,   317,   469,   215,   107,    95,   197,   398,   106,  1046,
  1047,   223,   384,   507,    95,    83,    95,   453,   239,    46,
    95,   394,  1041,    86,     3,     4,  1045,    51,   289,   241,
    93,    83,    46,   252,   394,   247,   105,   106,    65,    55,
  1195,   495,   108,    50,   757,    11,   112,   113,   114,    50,
   271,    65,  1114,   274,    55,   267,   484,   485,    51,   772,
    51,   127,    50,   275,   299,    51,  1221,   561,   440,   407,
  1107,    24,   284,   466,    50,   284,   469,   104,   144,   340,
   299,   105,   148,    51,  1121,    51,   458,  1124,   104,    55,
   299,   105,    71,   284,   355,   549,   271,     3,     4,   886,
     6,   888,    55,    42,   105,   171,   297,   350,   351,   344,
   330,    51,   105,   334,   105,   856,    95,    51,   330,   105,
   381,  1183,   375,     1,     6,     7,     8,   365,    94,   195,
    36,    13,   198,   386,   200,   326,   104,   390,    42,   351,
   361,   353,   395,   396,    83,    84,   337,   106,   386,   215,
   522,    51,   390,    35,   392,   393,    24,   395,    51,   334,
    42,    51,  1224,   375,   104,   104,  1321,  1322,    65,  1178,
   236,   105,    50,    51,   386,   241,   548,   415,   390,    83,
    84,   247,    50,   395,   396,    53,   361,    55,    51,    95,
   443,    55,    51,     7,     8,    51,   534,  1259,   410,    13,
   104,    83,    50,   441,   104,  1224,   444,    51,    42,   275,
  1220,    50,   105,    55,   104,    50,    55,   930,   931,   534,
    55,    35,   935,    55,    50,  1287,   542,   543,    42,    55,
   487,   443,   451,   299,  1296,   702,   608,   105,   610,   702,
    51,   105,   105,   671,   463,   104,   674,  1257,   104,    83,
   316,   317,   624,     8,    42,   321,   578,   469,   477,  1268,
   104,   327,   584,     3,     4,   500,   332,  1276,  1287,    83,
   105,    42,   104,    42,   494,     5,   497,  1296,    42,   604,
   774,   500,   494,   655,   350,   657,   109,   660,   782,     3,
     4,     5,    86,   104,   666,    83,    84,    46,   670,    93,
   660,    41,    42,     3,     4,     5,    46,    47,   527,   375,
    86,   530,    83,    84,    83,    55,   507,    93,   579,    83,
    51,    61,   497,    51,   585,     3,     4,     5,   548,   105,
   396,    71,    46,   104,    42,   570,   548,    42,    78,     3,
     4,     5,    42,    83,    26,    27,   718,   828,   720,  1062,
    32,   723,    42,   105,   106,    95,    51,    21,   578,    51,
    51,    42,   843,   844,   584,    42,   578,   107,    46,    51,
   561,    53,   584,   104,    66,    83,   104,   443,    83,    84,
    51,    95,    46,    83,    98,    86,   867,   868,   608,    42,
   610,   600,    93,    83,    84,    95,   608,   943,   610,   465,
   466,    51,    83,    84,   105,    46,    83,    84,    51,   104,
    10,   839,   840,   104,   104,    51,    66,    95,   679,    51,
    98,     3,     4,   105,    65,   741,   742,   104,   494,    51,
    83,    95,    42,   104,    98,  1148,  1149,   658,  1151,   755,
   756,   106,   106,   657,    66,   657,    51,     4,     5,     6,
     7,     8,    26,    27,    11,   827,    13,   830,   657,    41,
    42,   104,   674,   835,    46,    47,   947,   686,   104,   704,
   830,    28,   104,    83,    84,    51,   542,   543,    35,    61,
    51,   716,  1269,     3,     4,     5,     6,     7,     8,    71,
   702,    11,   864,    13,   104,    66,    78,   716,    99,   104,
    51,    83,    84,    51,   985,     7,     8,   716,    28,   105,
   771,    13,    51,    95,   733,    35,     1,     2,   779,   824,
   825,    41,    42,   735,   759,   107,    46,    47,   104,    51,
     3,    42,   775,    35,   600,    42,    21,    94,    95,   792,
    42,    61,    53,    37,   805,    30,    51,    51,   976,   977,
    51,    71,    46,   104,    39,    51,   104,    46,    78,   105,
   106,     1,     2,    83,    84,   104,    55,  1280,    42,  1063,
    42,  1052,    83,   785,    55,    95,    83,    84,   109,    86,
   792,    83,   104,   774,   841,    83,    93,   107,     3,     4,
    30,   782,    83,     8,    42,     7,     8,  1078,   817,   104,
   104,    13,    50,   104,    83,   671,     3,    55,   104,    83,
    42,    83,     9,   825,    46,   827,     4,     5,  1099,     7,
     8,   856,    62,    35,    83,    13,    41,   112,   113,   114,
    42,    46,    42,    65,  1128,    83,   702,    83,    61,   124,
    28,    65,    42,     3,     4,   883,    61,    35,    71,   868,
   716,    83,   890,   896,   897,    38,    71,    42,   897,   144,
   998,    49,    55,   148,  1145,   884,  1147,   886,    83,   105,
   106,    83,    65,    83,    42,   741,   742,   886,   939,   888,
    95,    42,  1163,    83,   124,   897,   898,  1168,    42,   755,
   756,    10,   107,   905,   906,    83,   908,   104,    83,   104,
   912,    53,     3,     4,     5,   190,     7,    95,   961,   775,
  1164,  1165,    13,   198,   106,    83,    84,   955,    86,    46,
    51,    46,    83,    26,    27,    93,   792,    28,    55,    83,
    55,   943,   105,   106,    35,    46,    37,   105,  1166,  1167,
    41,    26,    27,     3,    55,    46,   104,    50,  1120,   961,
   190,  1123,    55,   193,    65,    71,    72,    73,  1239,   825,
   200,   999,  1023,    50,  1258,    50,   109,  1028,    55,  1007,
    55,    50,   991,   839,   840,   109,     4,     5,     6,     7,
     8,     6,     7,     8,    46,    13,   104,   999,    13,   104,
  1162,   105,   106,    55,    95,   105,   106,  1058,     3,   284,
    28,  1126,   109,    65,    51,  1066,    83,    35,     1,     2,
    35,    69,    70,    71,    72,    73,    32,  1036,     3,     4,
   886,   104,   888,   105,   106,    46,  1035,   267,    21,  1041,
   896,   316,   317,  1045,   104,   275,   321,    30,   105,   106,
   105,   106,    50,  1324,   284,    38,    39,   332,     8,   104,
     6,     7,     8,   104,  1159,  1160,    41,    13,    53,  1078,
    51,    46,    47,  1084,   105,   106,   104,    95,   353,  1083,
    55,  1083,  1063,  1111,   105,   106,    61,     7,     8,    35,
  1321,  1322,    42,    13,  1083,   104,    71,   105,   106,   109,
   330,  1103,   109,    78,   105,   961,   105,  1111,    83,  1111,
   104,    61,  1114,  1141,  1142,    35,   972,   105,   106,   105,
    95,    71,  1111,   353,   206,   207,  1271,  1272,    78,   112,
   113,   114,   107,    83,    84,   105,   105,  1141,  1142,  1141,
  1142,   124,   109,  1171,   127,   128,   104,  1128,   109,  1182,
    51,  1132,  1141,  1142,     5,    55,    83,    53,  1160,   104,
   104,   144,   104,   104,   104,   148,   104,  1171,    42,  1171,
   104,    66,    55,    47,    61,  1226,  1178,  1305,  1306,  1035,
   109,  1183,  1171,    53,   109,   107,    42,    61,   171,    53,
   465,   466,    53,  1195,   469,   106,   104,    71,    95,     4,
     5,     6,     7,     8,    78,   109,  1334,   190,    13,    83,
    84,    55,   195,     3,     4,   198,    55,    34,     8,  1221,
   104,   109,  1224,    28,   104,  1253,    53,  1083,   104,   104,
    35,   118,   104,     3,     4,    83,     6,     7,     8,   469,
    83,   104,   104,  1271,  1272,   104,     7,    83,  1291,   106,
   105,    41,    55,   236,  1282,   105,    46,  1259,    50,    50,
     8,    15,     3,   105,   494,    35,  1268,   542,   543,    53,
  1269,    61,    51,   104,  1276,   104,    42,  1258,    55,    49,
    50,    71,    83,   105,   267,  1287,   105,   105,    78,  1291,
    95,   105,   105,    83,  1296,     1,     2,    83,  1307,   105,
    53,   284,    83,   578,  1160,    95,   193,   104,   106,   584,
  1166,  1167,    84,    53,    16,    84,   299,   107,   548,  1321,
  1322,   106,   105,   105,    30,    95,  1182,   105,    50,   105,
   100,   101,   102,   316,   317,    50,     3,     4,   321,    53,
   105,   104,     4,     5,   327,     7,     8,   104,   578,   332,
   237,    13,    51,   105,   584,   105,    62,     1,   104,     3,
     4,     5,     6,     7,     8,   104,    28,   350,   351,    13,
   353,   104,   109,    35,    41,   109,   104,    10,   608,    46,
   610,   105,   105,    90,    28,   105,     9,   105,    83,    83,
    51,    35,    36,    51,    61,   104,   671,    41,     9,   674,
   105,   104,    46,   104,    71,    53,   104,   104,    42,    10,
    10,    55,   105,  1269,   301,   302,    83,    61,   124,     1,
   104,     3,     4,     5,     6,     7,     8,    71,    95,   105,
     0,    13,     0,    95,   123,  1291,     2,   286,   124,    83,
   107,    75,    76,   330,   674,    79,    28,    81,   702,    83,
    84,    95,   124,    35,    36,   135,   716,   500,   118,    41,
   758,   348,   106,   107,    46,    42,   741,   742,  1080,  1102,
   999,   410,   702,    55,  1194,  1142,   896,   162,   274,    61,
   755,   756,   465,   466,   190,  1154,   469,   193,    30,    71,
   327,   817,   688,    30,   200,   738,   570,   384,    75,    76,
   759,    83,    79,    80,    81,    82,    83,    84,   912,   785,
   785,   351,   477,    95,    67,    68,    69,    70,    71,    72,
    73,   686,   321,   410,   106,   107,   413,   414,   736,   416,
   417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
   427,   428,   429,   430,   431,   432,  1042,    42,     3,     4,
  1283,  1285,   439,   440,    -1,   785,   247,   792,  1035,   542,
   543,   267,    -1,    -1,   839,   840,    61,    -1,    -1,   275,
    -1,   458,    -1,    -1,    -1,    -1,    71,     1,   284,    -1,
    -1,    -1,    -1,    78,    -1,   472,    41,    -1,    83,    84,
    -1,    46,   479,    -1,    -1,   578,    -1,    -1,    -1,    -1,
    24,   584,    26,    27,    -1,    -1,    61,    -1,    32,    -1,
     3,     4,    -1,     6,     7,     8,    71,   600,    42,    -1,
    -1,    -1,   897,    78,   330,    -1,    50,    51,    83,    53,
    -1,    55,    -1,    -1,    -1,   522,    -1,   912,     1,     2,
    95,    -1,    35,   530,    -1,    -1,    -1,   353,    -1,    -1,
    -1,    -1,   107,    -1,    -1,    -1,    49,    50,    21,    83,
    84,   548,    86,    -1,    -1,    -1,    -1,    30,   943,    93,
     1,    -1,    -1,    -1,    -1,    38,    39,    -1,    -1,    -1,
    -1,   105,   912,    -1,    -1,    -1,    -1,    -1,   671,    -1,
   577,   674,    -1,    24,    -1,    26,    27,   972,    -1,    -1,
    -1,    32,    95,    -1,    -1,    -1,    -1,   100,   101,   102,
    -1,    42,    -1,   943,    -1,    -1,    -1,    -1,    -1,    50,
    51,   608,    53,   610,    55,    -1,    -1,    19,    20,    -1,
    -1,    -1,    -1,   716,    -1,    -1,    -1,   624,    -1,    -1,
    -1,   628,    -1,    -1,    -1,    -1,     3,     4,    -1,   112,
   113,   114,    83,    84,    -1,    86,    -1,    -1,   741,   742,
    -1,   124,    93,   469,   127,   128,    -1,    59,   655,    -1,
   657,    -1,   755,   756,   105,    -1,    -1,    -1,    -1,   666,
    -1,   144,    -1,   670,    41,   148,    -1,    24,   494,    46,
    47,    -1,   775,    -1,    -1,    -1,    -1,    -1,   685,    -1,
    -1,    -1,   785,    -1,    61,    42,     3,     4,   171,    46,
    -1,    -1,    -1,    50,    71,    -1,    53,    -1,    55,    -1,
    -1,    78,    -1,    -1,    -1,    -1,    83,   190,    65,    -1,
    -1,   718,    -1,   720,    -1,   198,   723,    -1,    95,   726,
    -1,    -1,   548,    -1,    41,    -1,    -1,    84,   105,    46,
   107,    -1,   215,   145,   146,    -1,   839,   840,     3,     4,
     5,     6,     7,     8,    61,    -1,    11,    -1,    13,    -1,
    -1,    -1,   578,   236,    71,    -1,    -1,    -1,   584,   242,
   767,   768,    -1,    28,     4,     5,    83,     7,     8,    -1,
    35,  1166,  1167,    13,    -1,    -1,    41,    42,    95,    -1,
   192,    46,   608,   886,   610,   888,    -1,   199,    28,    -1,
   107,    -1,    -1,   896,   897,    35,    61,    -1,    -1,    -1,
    -1,   284,    -1,    -1,    -1,    -1,    71,    -1,    -1,   912,
   817,    -1,   819,    78,    -1,    -1,    -1,    -1,    83,    84,
   827,   828,    -1,    -1,    -1,    -1,    -1,    -1,   835,    94,
    95,    -1,    -1,   316,   317,    -1,   843,   844,   321,    -1,
   943,    -1,   107,    -1,   327,    -1,    -1,    -1,   674,   332,
   262,    -1,   264,   265,    -1,    95,    -1,   864,    -1,    -1,
   867,   868,    -1,    -1,    -1,    -1,    -1,   350,   351,   972,
   353,    -1,   879,    -1,    -1,    -1,   702,    -1,    -1,    -1,
    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
     9,    10,    11,    12,    13,    63,    64,    65,    66,    67,
    68,    69,    70,    71,    72,    73,   318,   319,    -1,    28,
    29,    30,    31,    -1,    33,    -1,    35,   329,    37,    38,
    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,     3,
     4,   938,  1035,    -1,     8,    -1,    -1,    -1,    -1,    58,
   947,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,   785,
    -1,    -1,    -1,    -1,    83,    -1,    -1,    41,    42,    -1,
   453,    -1,    46,    -1,    -1,    94,    95,    -1,   985,    -1,
   987,    -1,   465,   466,    -1,   104,   469,    61,   107,   108,
    -1,    -1,    -1,    -1,    -1,    -1,     1,    71,     3,     4,
     5,     6,     7,     8,    78,    -1,    -1,    -1,    13,    83,
    84,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    95,    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,
    35,    -1,    -1,   107,    -1,    -1,    41,    -1,    -1,     3,
     4,    46,    -1,    -1,    -1,  1052,    -1,    -1,    -1,    -1,
     3,     4,    -1,  1060,  1061,   467,    61,    -1,    -1,   542,
   543,    -1,    -1,  1166,  1167,    -1,    71,    -1,    -1,    -1,
    -1,  1078,    -1,     1,    -1,    -1,    -1,    41,    83,  1182,
    -1,   493,    46,    47,    -1,    -1,   912,    -1,    41,    -1,
    95,    96,  1099,    46,    -1,   578,    24,    61,    26,    27,
   105,   584,   107,    -1,    32,    -1,  1113,    71,    61,    -1,
    -1,    -1,    -1,  1120,    78,    -1,  1123,   943,    71,    83,
    -1,    -1,    50,    51,    -1,    53,    -1,    55,    -1,    -1,
    83,    95,   544,   545,    -1,   547,    -1,    -1,  1145,    -1,
  1147,   105,    95,   107,    -1,    -1,    -1,   559,   560,    -1,
    -1,    -1,    -1,    -1,   107,  1162,  1163,    -1,    86,    -1,
    -1,  1168,    -1,    -1,   576,    93,  1269,    -1,    -1,    -1,
    -1,   583,    -1,    -1,    -1,     3,     4,   105,    -1,    -1,
   592,   593,   594,     3,     4,    -1,    -1,    -1,   671,    -1,
    -1,   674,    -1,    -1,    -1,   607,    -1,   609,    -1,    -1,
   612,    -1,    -1,     0,     1,    -1,     3,     4,     5,     6,
     7,     8,    -1,    41,    42,    -1,    13,    -1,    46,    -1,
    -1,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    26,
    27,    28,  1239,    61,    -1,    -1,    -1,    -1,    35,    -1,
    -1,    61,    39,    71,    41,    -1,    43,    -1,    -1,    46,
    78,    71,    -1,    -1,    -1,    83,    84,    -1,   741,   742,
   672,   673,    -1,    83,    61,    -1,    -1,    95,    -1,    -1,
    -1,    -1,   755,   756,    71,    95,    -1,    -1,    -1,   107,
    -1,    -1,    -1,    -1,   696,    -1,    83,   107,    -1,    -1,
    -1,    -1,   775,    -1,    -1,    -1,    -1,    -1,    95,    96,
    97,    -1,   785,    -1,    -1,    -1,    -1,    -1,   105,     1,
   107,    -1,     4,     5,    -1,     7,     8,  1324,    -1,    -1,
    -1,    13,    60,    61,    62,    63,    64,    65,    66,    67,
    68,    69,    70,    71,    72,    73,    28,    -1,    -1,   751,
   752,   753,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
    42,    -1,    -1,    -1,    -1,    -1,   839,   840,    -1,    51,
    52,    53,    54,    -1,    -1,    57,    58,    59,    60,    61,
    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
    72,    73,    -1,    75,    76,    -1,    -1,    79,    80,    -1,
    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    95,    -1,     1,    -1,     3,     4,     5,
     6,     7,     8,   896,   897,   107,   108,    13,    -1,    -1,
    -1,     1,    -1,     3,     4,     5,     6,     7,     8,   912,
    26,    27,    28,    13,    -1,    -1,    -1,   849,   850,    35,
   852,    -1,    -1,    39,    -1,    41,    -1,    43,    28,    -1,
    46,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,
   943,    41,    -1,    -1,    -1,    61,    46,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    83,    -1,   972,
    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,
    96,    97,    -1,    83,    -1,   917,   918,   919,    -1,   105,
   106,   107,    -1,    -1,    -1,    95,    -1,    -1,    -1,    -1,
    -1,    -1,   934,    -1,    -1,    -1,    -1,   107,    -1,    -1,
   942,    -1,    -1,    -1,    -1,    -1,   948,   949,   950,   951,
   952,   953,     1,    -1,     3,     4,     5,     6,     7,     8,
     9,    10,    -1,    12,    13,    14,    15,    16,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,
    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,
    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    87,    88,
    89,    -1,    91,    92,    93,    -1,    95,    -1,    -1,    -1,
    -1,     4,     5,    -1,     7,     8,   105,   106,   107,   108,
    13,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    -1,    28,    -1,    -1,    -1,    -1,
    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1092,  1093,    -1,  1166,  1167,     1,    49,     3,     4,     5,
     6,     7,     8,     9,    10,    -1,    12,    13,    14,  1182,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    83,    37,    38,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    -1,    95,    49,    50,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,
    -1,    -1,    88,    -1,    -1,    91,    92,    93,    -1,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,
   106,   107,   108,     1,    -1,     3,     4,     5,     6,     7,
     8,     9,    10,    -1,    12,    13,    14,    -1,    16,    17,
    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,
    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,
    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,
   108,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
    10,    -1,    12,    13,    14,    -1,    16,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,
    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,    88,    -1,
    -1,    91,    92,    93,    -1,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   105,   106,   107,   108,     1,
    -1,     3,     4,     5,     6,     7,     8,     9,    10,    -1,
    12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    49,    50,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    83,    -1,    85,    -1,    -1,    88,    -1,    -1,    91,
    92,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   105,   106,   107,   108,     1,    -1,     3,
     4,     5,     6,     7,     8,     9,    10,    -1,    12,    13,
    14,    -1,    16,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    49,    50,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    -1,    85,    -1,    -1,    88,    -1,    -1,    91,    92,    93,
    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   105,   106,   107,   108,     1,    -1,     3,     4,     5,
     6,     7,     8,     9,    10,    -1,    12,    13,    14,    -1,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    -1,    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,
    -1,    -1,    88,    -1,    -1,    91,    92,    93,    -1,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,
   106,   107,   108,     1,    -1,     3,     4,     5,     6,     7,
     8,     9,    10,    -1,    12,    13,    14,    -1,    16,    17,
    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,
    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,
    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,
   108,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
    10,    -1,    12,    13,    14,    -1,    16,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,
    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,    88,    -1,
    -1,    91,    92,    93,    -1,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   105,   106,   107,   108,     1,
    -1,     3,     4,     5,     6,     7,     8,     9,    10,    -1,
    12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    49,    50,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    83,    -1,    85,    -1,    -1,    88,    -1,    -1,    91,
    92,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   105,    -1,   107,   108,     1,    -1,     3,
     4,     5,     6,     7,     8,     9,    10,    -1,    12,    13,
    14,    -1,    16,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    49,    50,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    -1,    85,    -1,    -1,    88,    -1,    -1,    91,    92,    93,
    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   105,    -1,   107,   108,     1,    -1,     3,     4,     5,
     6,     7,     8,     9,    10,    -1,    12,    13,    14,    -1,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    -1,    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,
    -1,    -1,    88,    -1,    -1,    91,    92,    93,    -1,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,
    -1,   107,   108,     1,    -1,     3,     4,     5,     6,     7,
     8,     9,    10,    -1,    12,    13,    14,    -1,    16,    17,
    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,
    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,
    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,   107,
   108,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
    10,    11,    12,    13,    62,    63,    64,    65,    66,    67,
    68,    69,    70,    71,    72,    73,    -1,    -1,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,     3,     4,    69,
    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   104,    41,    -1,   107,   108,     1,
    46,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    12,    13,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    71,    28,    29,    30,    31,
    -1,    33,    78,    35,    -1,    37,    38,    83,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    -1,    -1,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,   107,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   104,    -1,    -1,   107,   108,     1,    -1,     3,
     4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   104,    -1,    -1,   107,   108,     1,    -1,     3,     4,     5,
     6,     7,     8,     9,    10,    11,    12,    13,    -1,    -1,
    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,
     7,     8,    28,    29,    30,    31,    13,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    28,    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,
    -1,    -1,    58,    -1,    41,    61,    -1,    -1,    -1,    46,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    55,    75,
    76,    -1,    -1,    -1,    61,    -1,    -1,    83,    -1,    -1,
    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    94,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,   104,    -1,
    -1,   107,   108,     1,    -1,     3,     4,     5,    95,     7,
     8,     9,    10,    -1,    12,    13,    -1,    -1,   105,   106,
   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,
    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,    84,     1,    -1,     3,
     4,     5,    -1,     7,     8,     9,    10,    95,    12,    13,
    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,   106,   107,
   108,    -1,    -1,    -1,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,     1,    83,
     3,     4,     5,     6,     7,     8,     9,    10,    -1,    12,
    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   106,   107,   108,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,
    -1,    44,    45,    46,    -1,    -1,    -1,    50,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,
    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,     1,
    83,     3,     4,     5,    -1,     7,     8,     9,    10,    -1,
    12,    13,    95,    -1,    -1,    -1,    -1,    -1,    20,    -1,
    -1,    -1,   105,    -1,   107,   108,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    -1,    50,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
     1,    83,     3,     4,     5,    -1,     7,     8,     9,    10,
    -1,    12,    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   106,   107,   108,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    -1,    -1,    44,    45,    46,    -1,    -1,    -1,    50,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
    -1,    -1,    83,    84,     1,    -1,     3,     4,     5,    -1,
     7,     8,     9,    10,    95,    12,    13,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,
    -1,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    -1,    -1,    44,    45,    46,
    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,     1,    83,     3,     4,     5,
    -1,     7,     8,     9,    10,    -1,    12,    13,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   107,   108,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,     1,    83,     3,     4,
     5,    -1,     7,     8,     9,    10,    -1,    12,    13,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   107,   108,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    -1,    -1,    44,
    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    55,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,     1,    83,     3,
     4,     5,    -1,     7,     8,     9,    10,    -1,    12,    13,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   107,   108,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,     1,    83,
     3,     4,     5,    -1,     7,     8,     9,    10,    -1,    12,
    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   105,    -1,   107,   108,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    -1,
    -1,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,
    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,     1,
    83,     3,     4,     5,    -1,     7,     8,     9,    10,    -1,
    12,    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   104,    -1,    -1,   107,   108,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    83,     3,     4,     5,    -1,     7,     8,     9,    10,
    -1,    12,    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   107,   108,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,    40,
    41,    -1,    -1,    44,    45,    46,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,     1,
    61,     3,     4,     5,     6,     7,     8,    -1,    69,    70,
    71,    13,     3,     4,    75,    76,    -1,    -1,    -1,    -1,
    -1,    -1,    83,    -1,    26,    27,    28,    -1,    -1,    -1,
    -1,    -1,    -1,    35,    95,    -1,    -1,    39,    -1,    41,
    -1,    43,    -1,    -1,    46,    -1,   107,   108,   109,    -1,
    41,    -1,    -1,    -1,    -1,    46,    47,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
    61,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
    71,    83,    -1,    -1,    13,    -1,    -1,    78,    -1,    -1,
    -1,    -1,    83,    95,    96,    97,    -1,    -1,    -1,    28,
    -1,    -1,    -1,   105,    95,   107,    35,    36,    -1,    -1,
    -1,    -1,    41,    -1,    -1,    -1,   107,    46,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    52,    53,
    54,    -1,    61,    57,    58,    59,    60,    61,    62,    63,
    64,    65,    71,    67,    68,    69,    70,    71,    72,    73,
    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,     3,
     4,     5,     6,     7,     8,     9,    10,    -1,    12,    13,
    14,    -1,    16,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    -1,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    49,    50,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    -1,    85,    -1,    -1,    88,    -1,    -1,    91,    92,    93,
    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   105,   106,   107,   108,     3,     4,     5,     6,     7,
     8,     9,    10,    -1,    12,    13,    14,    -1,    16,    17,
    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    -1,    -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,
    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,
    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,   107,
   108,     3,     4,     5,     6,     7,     8,     9,    10,    -1,
    12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    -1,    -1,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    49,    50,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    83,    -1,    85,    -1,    -1,    88,    -1,    -1,    91,
    92,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   105,    -1,   107,   108,     3,     4,     5,
     6,     7,     8,     9,    10,    -1,    12,    13,    14,    -1,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    -1,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,
    -1,    -1,    88,    -1,    -1,    91,    92,    93,    -1,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,
    -1,   107,   108,     3,     4,     5,    -1,     7,     8,     9,
    10,    -1,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,
    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
    -1,    -1,    -1,    83,    84,    -1,    -1,     3,     4,     5,
    -1,     7,     8,     9,    10,    95,    12,    13,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,
    -1,    -1,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    -1,    -1,    40,    41,    -1,    -1,    44,    45,
    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,     3,     4,
     5,    -1,     7,     8,     9,    10,    -1,    12,    13,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   107,   108,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    -1,    -1,    40,    41,    -1,    -1,    44,
    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,     3,
     4,     5,    -1,     7,     8,     9,    10,    -1,    12,    13,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   105,    -1,   107,   108,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    -1,    -1,    40,    41,    -1,    -1,
    44,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3,     4,     5,    -1,     7,     8,     9,    10,    -1,    12,
    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   105,    -1,   107,   108,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    -1,    -1,    40,    41,    -1,
    -1,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,
    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    83,     3,     4,     5,    -1,     7,     8,     9,    10,    -1,
    12,    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   107,   108,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    -1,    -1,    40,    41,
    -1,    -1,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    83,     3,     4,     5,    -1,     7,     8,     9,    10,
    -1,    12,    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   107,   108,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,    40,
    41,    -1,    -1,    44,    45,    46,     3,     4,     5,    -1,
     7,     8,     9,    10,    -1,    12,    13,    58,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
    71,    28,    29,    -1,    75,    76,    33,    -1,    35,    -1,
    37,    -1,    83,    40,    41,    -1,    -1,    44,    45,    46,
    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,   107,   108,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,     3,     4,     5,    83,     7,     8,     9,
    10,    -1,    12,    13,    -1,    -1,    -1,    -1,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
   107,   108,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,
    40,    41,    -1,    -1,    44,    45,    46,     3,     4,     5,
     6,     7,     8,    -1,    -1,    -1,    -1,    13,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    70,    71,    28,    -1,    -1,    75,    76,    -1,    -1,    35,
    -1,    -1,    -1,    83,    -1,    41,    42,    -1,    -1,    -1,
    46,    47,    -1,    -1,    -1,    95,    -1,    -1,    -1,    55,
    -1,    -1,    -1,    -1,    -1,    61,    -1,   107,   108,     3,
     4,     5,     6,     7,     8,    71,    -1,    -1,    -1,    13,
    -1,    -1,    78,    -1,    -1,    -1,    -1,    83,    -1,    -1,
    -1,    -1,    -1,    -1,    28,    -1,    -1,    -1,    -1,    95,
    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
    -1,   107,    46,    47,     3,     4,     5,     6,     7,     8,
    -1,    -1,    11,    -1,    13,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    28,
    -1,    -1,    -1,    -1,    78,    -1,    35,    -1,    -1,    83,
    -1,    -1,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
    -1,    95,    -1,    -1,    -1,     3,     4,     5,     6,     7,
     8,   105,    61,   107,    -1,    13,    -1,    -1,    -1,    -1,
    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,
    28,    -1,    -1,    -1,    83,    -1,    -1,    35,    -1,    -1,
    -1,    -1,    -1,    41,    -1,    94,    95,    -1,    46,    47,
     3,     4,     5,     6,     7,     8,    -1,    -1,   107,    -1,
    13,    -1,    -1,    61,     3,     4,     5,     6,     7,     8,
    -1,    -1,    11,    71,    13,    28,    -1,    -1,    -1,    -1,
    78,    -1,    35,    -1,    -1,    83,    -1,    -1,    41,    28,
    -1,    -1,    -1,    46,    47,    -1,    35,    95,    -1,    -1,
    -1,    -1,    -1,    42,    -1,    -1,    -1,   105,    61,   107,
     4,     5,    -1,     7,     8,    -1,    -1,    -1,    71,    13,
    -1,    -1,    61,    -1,    -1,    78,    -1,    -1,    -1,    -1,
    83,    -1,    71,    -1,    28,    -1,    -1,    26,    27,    78,
    -1,    35,    95,    32,    83,    84,    -1,    -1,    42,    -1,
    -1,    -1,    -1,    47,   107,    94,    95,    46,    -1,    -1,
    -1,    50,    -1,    -1,    53,    -1,    55,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    65,    71,    -1,    -1,
    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    83,
    84,    -1,    -1,    -1,    -1,    84,    -1,    86,    -1,    -1,
    -1,    95,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    52,    53,    54,    -1,   106,    57,    58,
    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
    69,    70,    71,    72,    73,    52,    53,    54,    -1,    -1,
    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,
   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    52,    53,    54,   105,   106,
    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    51,    52,    53,
    54,    -1,    -1,    57,    58,    59,    60,    61,    62,    63,
    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
    72,    73,    52,    53,    54,    55,    -1,    57,    58,    59,
    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    52,    53,    54,    55,    -1,    57,
    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
    68,    69,    70,    71,    72,    73,    52,    53,    54,    -1,
    -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
    66,    67,    68,    69,    70,    71,    72,    73,    54,    -1,
    -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
    66,    67,    68,    69,    70,    71,    72,    73,    58,    59,
    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    59,    60,    61,    62,    63,    64,
    65,    66,    67,    68,    69,    70,    71,    72,    73
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/local/lib/bison.simple"

/* Skeleton output parser for bison,
   Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 1, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */


#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#include <malloc.h>
 #pragma alloca
#else /* not MSDOS, __TURBOC__, or _AIX */
#ifdef __hpux
#ifdef __cplusplus
extern "C" {
void *alloca (unsigned int);
};
#else /* not __cplusplus */
void *alloca ();
#endif /* not __cplusplus */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc.  */
#endif /* not GNU C.  */
#endif /* alloca not defined.  */

/* This is the parser code that is written into each bison parser
  when the %semantic_parser declaration is not specified in the grammar.
  It was written by Richard Stallman by simplifying the hairy parser
  used when %semantic_parser is specified.  */

/* Note: there must be only one dollar sign in this file.
   It is replaced by the list of actions, each action
   as one case of the switch.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	return(0)
#define YYABORT 	return(1)
#define YYERROR		goto yyerrlab1
/* Like YYERROR except do call yyerror.
   This remains here temporarily to ease the
   transition to the new meaning of YYERROR, for GCC.
   Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(token, value) \
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    { yychar = (token), yylval = (value);			\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
while (0)

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#endif

#ifdef YYPURE
#ifdef YYLSP_NEEDED
#define YYLEX		yylex(&yylval, &yylloc)
#else
#define YYLEX		yylex(&yylval)
#endif
#endif

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
				/*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
				/*  symbol				*/
#endif

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
/* Since this is uninitialized, it does not stop multiple parsers
   from coexisting.  */
#endif

/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

/*  YYMAXDEPTH is the maximum size the stacks can grow to
    (effective only if the built-in stack extension method is used).  */

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
int yyparse (void);
#endif

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_bcopy(FROM,TO,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_bcopy (from, to, count)
     char *from;
     char *to;
     int count;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_bcopy (char *from, char *to, int count)
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#endif
#endif

#line 184 "/usr/local/lib/bison.simple"

/* The user can define YYPARSE_PARAM as the name of an argument to be passed
   into yyparse.  The argument should have type void *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   to the proper pointer type.  */

#ifdef YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#else
#define YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#endif

int
yyparse(YYPARSE_PARAM)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register YYSTYPE *yyvsp;
  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;

#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

  int yystacksize = YYINITDEPTH;

#ifdef YYPURE
  int yychar;
  YYSTYPE yylval;
  int yynerrs;
#ifdef YYLSP_NEEDED
  YYLTYPE yylloc;
#endif
#endif

  YYSTYPE yyval;		/*  the variable used to return		*/
				/*  semantic values from the action	*/
				/*  routines				*/

  int yylen;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Starting parse\n");
#endif

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;		/* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss - 1;
  yyvsp = yyvs;
#ifdef YYLSP_NEEDED
  yylsp = yyls;
#endif

/* Push a new state, which is found in  yystate  .  */
/* In all cases, when you get here, the value and location stacks
   have just been pushed. so pushing a state here evens the stacks.  */
yynewstate:

  *++yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Give user a chance to reallocate the stack */
      /* Use copies of these so that the &'s don't force the real ones into memory. */
      YYSTYPE *yyvs1 = yyvs;
      short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
	 the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* This used to be a conditional around just the two extra args,
	 but that might be undefined if yyoverflow is a macro.  */
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yyls1, size * sizeof (*yylsp),
		 &yystacksize);
#else
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	{
	  yyerror("parser stack overflow");
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
      __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
      __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
      __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto yybackup;
 yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise meaning
	     of a token, for further debugging info.  */
#ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
#endif
	  fprintf (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* count tokens shifted since error; after three, turn off error status.  */
  if (yyerrstatus) yyerrstatus--;

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

      fprintf (stderr, "Reducing via rule %d (line %d), ",
	       yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif


  switch (yyn) {

case 2:
#line 287 "cp-parse.y"
{
		  /* In case there were missing closebraces,
		     get us back to the global binding level.  */
		  while (! global_bindings_p ())
		    poplevel (0, 0, 0);
		  finish_file ();
		;
    break;}
case 3:
#line 301 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 4:
#line 302 "cp-parse.y"
{yyval.ttype = NULL_TREE; ;
    break;}
case 5:
#line 304 "cp-parse.y"
{yyval.ttype = NULL_TREE; ;
    break;}
case 6:
#line 308 "cp-parse.y"
{ have_extern_spec = 1;
		  used_extern_spec = 0;
		  yyval.ttype = NULL_TREE; ;
    break;}
case 7:
#line 313 "cp-parse.y"
{ have_extern_spec = 0; ;
    break;}
case 8:
#line 317 "cp-parse.y"
{ if (pedantic)
		      pedwarn ("ANSI C++ forbids use of `asm' keyword"); ;
    break;}
case 10:
#line 324 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 11:
#line 326 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 12:
#line 328 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 14:
#line 331 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  assemble_asm (yyvsp[-2].ttype); ;
    break;}
case 15:
#line 334 "cp-parse.y"
{ pop_lang_context (); ;
    break;}
case 16:
#line 336 "cp-parse.y"
{ pop_lang_context (); ;
    break;}
case 17:
#line 338 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 18:
#line 341 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 19:
#line 347 "cp-parse.y"
{ push_lang_context (yyvsp[0].ttype); ;
    break;}
case 20:
#line 352 "cp-parse.y"
{ begin_template_parm_list (); ;
    break;}
case 21:
#line 354 "cp-parse.y"
{ yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
    break;}
case 22:
#line 359 "cp-parse.y"
{ yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 23:
#line 361 "cp-parse.y"
{ yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 24:
#line 372 "cp-parse.y"
{
		  if (yyvsp[-1].ttype != class_type_node)
		    error ("template type parameter must use keyword `class'");
		  yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 25:
#line 378 "cp-parse.y"
{
		  if (yyvsp[-3].ttype != class_type_node)
		    error ("template type parameter must use keyword `class'");
		  warning ("restricted template type parameters not yet implemented");
		  yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
		;
    break;}
case 26:
#line 385 "cp-parse.y"
{
		  if (yyvsp[-2].ttype != class_type_node)
		    error ("template type parameter must use keyword `class'");
		  warning ("restricted template type parameters not yet implemented");
		  yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 28:
#line 396 "cp-parse.y"
{ warning ("use of `overload' is an anachronism"); ;
    break;}
case 29:
#line 400 "cp-parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 30:
#line 402 "cp-parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 31:
#line 409 "cp-parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 33:
#line 412 "cp-parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 35:
#line 415 "cp-parse.y"
{ yychar = ':'; goto template1; ;
    break;}
case 37:
#line 418 "cp-parse.y"
{
		  yychar = ':';
		template1:
		  if (current_aggr == exception_type_node)
		    error ("template type must define an aggregate or union");
		  /* Maybe pedantic warning for union?
		     How about an enum? :-)  */
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr);
		  reinit_parse_for_template (yychar, yyvsp[-2].ttype, yyvsp[-1].ttype);
		  yychar = YYEMPTY;
		;
    break;}
case 39:
#line 431 "cp-parse.y"
{
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr);
		  /* declare $2 as template name with $1 parm list */
		;
    break;}
case 40:
#line 436 "cp-parse.y"
{
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr);
		  /* declare $2 as template name with $1 parm list */
		;
    break;}
case 41:
#line 443 "cp-parse.y"
{
		  tree d;
		  int momentary;
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, /*current_declspecs*/NULL_TREE, 0, yyvsp[-3].ttype);
		  cplus_decl_attributes (d, yyvsp[-1].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0);
		  end_template_decl (yyvsp[-5].ttype, d, 0);
		  if (yyvsp[0].itype != ';')
		    reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-5].ttype, d);
		  resume_momentary (momentary);
		;
    break;}
case 42:
#line 458 "cp-parse.y"
{
		  tree d;
		  int momentary;

		  current_declspecs = yyvsp[-5].ttype;
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, current_declspecs,
				  0, yyvsp[-3].ttype);
		  cplus_decl_attributes (d, yyvsp[-1].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0);
		  end_exception_decls ();
		  end_template_decl (yyvsp[-6].ttype, d, 0);
		  if (yyvsp[0].itype != ';')
		    {
		      reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-6].ttype, d);
		      yychar = YYEMPTY;
		    }
		  note_list_got_semicolon (yyvsp[-5].ttype);
		  resume_momentary (momentary);
		;
    break;}
case 43:
#line 479 "cp-parse.y"
{
		  tree d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  end_template_decl (yyvsp[-3].ttype, d, 0);
		  if (yyvsp[0].itype != ';')
		    reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-3].ttype, d);
		;
    break;}
case 44:
#line 487 "cp-parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0); ;
    break;}
case 45:
#line 488 "cp-parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0); ;
    break;}
case 46:
#line 491 "cp-parse.y"
{ yyval.itype = '{'; ;
    break;}
case 47:
#line 492 "cp-parse.y"
{ yyval.itype = ':'; ;
    break;}
case 48:
#line 493 "cp-parse.y"
{ yyval.itype = ';'; ;
    break;}
case 49:
#line 494 "cp-parse.y"
{ yyval.itype = '='; ;
    break;}
case 50:
#line 495 "cp-parse.y"
{ yyval.itype = RETURN; ;
    break;}
case 51:
#line 500 "cp-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C++ forbids data definition with no type or storage class");
  		  else if (! flag_traditional && ! have_extern_spec)
  		    warning ("data definition has no type or storage class"); ;
    break;}
case 52:
#line 505 "cp-parse.y"
{;
    break;}
case 53:
#line 508 "cp-parse.y"
{ tree d;
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		;
    break;}
case 54:
#line 513 "cp-parse.y"
{
		  end_exception_decls ();
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 55:
#line 519 "cp-parse.y"
{ tree d;
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  end_exception_decls ();
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 56:
#line 526 "cp-parse.y"
{ pedwarn ("empty declaration"); ;
    break;}
case 57:
#line 528 "cp-parse.y"
{
	    tree t = yyval.ttype;
	    shadow_tag (t);
	    if (TREE_CODE (t) == TREE_LIST
		&& TREE_PURPOSE (t) == NULL_TREE)
	      {
		t = TREE_VALUE (t);
		if (TREE_CODE (t) == RECORD_TYPE
		    && TYPE_SIZE (t)
		    && CLASSTYPE_USE_TEMPLATE (t) == 0)
		  CLASSTYPE_USE_TEMPLATE (t) = 2;
		else if (TREE_CODE (t) == ENUMERAL_TYPE
			 && !TYPE_SIZE (t))
		  cp_error ("forward declaration of `%#T'", t);
	      }
	    note_list_got_semicolon (yyval.ttype);
	  ;
    break;}
case 61:
#line 552 "cp-parse.y"
{
		  finish_function (lineno, 1);
		  /* finish_function performs these three statements:

		     expand_end_bindings (getdecls (), 1, 0);
		     poplevel (1, 1, 0);

		     expand_end_bindings (0, 0, 0);
		     poplevel (0, 0, 1);
		     */
		  if (yyval.ttype) process_next_inline (yyval.ttype);
		;
    break;}
case 62:
#line 565 "cp-parse.y"
{
		  finish_function (lineno, 1);
		  /* finish_function performs these three statements:

		     expand_end_bindings (getdecls (), 1, 0);
		     poplevel (1, 1, 0);

		     expand_end_bindings (0, 0, 0);
		     poplevel (0, 0, 1);
		     */
		  if (yyval.ttype) process_next_inline (yyval.ttype);
		;
    break;}
case 63:
#line 578 "cp-parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 64:
#line 581 "cp-parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 65:
#line 584 "cp-parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 66:
#line 587 "cp-parse.y"
{;
    break;}
case 67:
#line 589 "cp-parse.y"
{;
    break;}
case 68:
#line 591 "cp-parse.y"
{;
    break;}
case 69:
#line 596 "cp-parse.y"
{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 70:
#line 601 "cp-parse.y"
{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 71:
#line 606 "cp-parse.y"
{ if (! start_function (NULL_TREE, yyval.ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 72:
#line 611 "cp-parse.y"
{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype), yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 73:
#line 616 "cp-parse.y"
{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype), yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 74:
#line 621 "cp-parse.y"
{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[-1].ttype), yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 75:
#line 626 "cp-parse.y"
{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[-1].ttype), yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 76:
#line 631 "cp-parse.y"
{ start_function (NULL_TREE, TREE_VALUE (yyval.ttype), NULL_TREE, 1);
		  reinit_parse_for_function (); ;
    break;}
case 77:
#line 638 "cp-parse.y"
{
		  tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 78:
#line 647 "cp-parse.y"
{
		  tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), empty_parms (), yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 79:
#line 656 "cp-parse.y"
{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 80:
#line 663 "cp-parse.y"
{
		  tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 81:
#line 672 "cp-parse.y"
{
		  tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), empty_parms (), yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 82:
#line 681 "cp-parse.y"
{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 83:
#line 688 "cp-parse.y"
{ yyval.ttype = start_method (NULL_TREE, yyval.ttype, yyvsp[0].ttype);
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 84:
#line 697 "cp-parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 85:
#line 705 "cp-parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 86:
#line 707 "cp-parse.y"
{ store_return_init (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 87:
#line 709 "cp-parse.y"
{ store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 88:
#line 711 "cp-parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 89:
#line 716 "cp-parse.y"
{
		  if (yyvsp[0].itype == 0)
		    error ("no base initializers given following ':'");
		  setup_vtbl_ptr ();
		  /* Always keep the BLOCK node associated with the outermost
		     pair of curley braces of a function.  These are needed
		     for correct operation of dwarfout.c.  */
		  keep_next_level ();
		;
    break;}
case 90:
#line 729 "cp-parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();

		  /* Flag that we are processing base and member initializers.  */
		  current_vtable_decl = error_mark_node;

		  if (DECL_CONSTRUCTOR_P (current_function_decl))
		    {
		      /* Make a contour for the initializer list.  */
		      pushlevel (0);
		      clear_last_expr ();
		      expand_start_bindings (0);
		    }
		  else if (current_class_type == NULL_TREE)
		    error ("base initializers not allowed for non-member functions");
		  else if (! DECL_CONSTRUCTOR_P (current_function_decl))
		    error ("only constructors take base initializers");
		;
    break;}
case 91:
#line 752 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 92:
#line 754 "cp-parse.y"
{ yyval.itype = 1; ;
    break;}
case 95:
#line 760 "cp-parse.y"
{
		  if (current_class_name && !flag_traditional)
		    pedwarn ("ANSI C++ forbids old style base class initialization",
			     IDENTIFIER_POINTER (current_class_name));
		  expand_member_init (C_C_D, NULL_TREE, yyvsp[-1].ttype);
		;
    break;}
case 96:
#line 767 "cp-parse.y"
{
		  if (current_class_name && !flag_traditional)
		    pedwarn ("ANSI C++ forbids old style base class initialization",
			     IDENTIFIER_POINTER (current_class_name));
		  expand_member_init (C_C_D, NULL_TREE, void_type_node);
		;
    break;}
case 97:
#line 774 "cp-parse.y"
{
		  expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype);
		;
    break;}
case 98:
#line 778 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 99:
#line 780 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 100:
#line 782 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 101:
#line 784 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 102:
#line 786 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 103:
#line 788 "cp-parse.y"
{
		  do_member_init (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype);
		;
    break;}
case 104:
#line 792 "cp-parse.y"
{
		  do_member_init (yyval.ttype, yyvsp[-1].ttype, void_type_node);
		;
    break;}
case 114:
#line 816 "cp-parse.y"
{ yyval.ttype = build_parse_node (BIT_NOT_EXPR,yyvsp[0].ttype);;
    break;}
case 116:
#line 822 "cp-parse.y"
{
  		  extern tree template_type_seen_before_scope;

		  if (yyvsp[0].ttype) 
		    yyval.ttype = yyvsp[0].ttype;
		  else if (yyval.ttype != error_mark_node)
		    yyval.ttype = IDENTIFIER_TYPE_VALUE (yyval.ttype);
		  /* This is a kludge: In order to detect nested types inside
		   * template classes, we have to tell the lexer that it should
		   * try to replace a following SCOPE token with the correct
		   * SCOPED_TYPENAME for the nested type.  This SCOPED_TYPENAME
		   * token will be handled in the rule "scoped_typename".
		   * - [email protected] */
		  if (yychar == SCOPE)
		    {
		      /* We set template_type_seen_before_scope to be
			 an error_mark_node so we can avoid meaningless
			 and unhelpful syntax errors later.  */
		      if (yyval.ttype != error_mark_node)
			template_type_seen_before_scope = TYPE_IDENTIFIER (yyval.ttype);
		      else
			template_type_seen_before_scope = error_mark_node;
		      yychar = YYLEX;
		    }
		;
    break;}
case 117:
#line 851 "cp-parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 118:
#line 853 "cp-parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 119:
#line 859 "cp-parse.y"
{ yyungetc ('{', 1); yyval.ttype = 0; ;
    break;}
case 120:
#line 860 "cp-parse.y"
{ yyungetc (':', 1); yyval.ttype = 0; ;
    break;}
case 121:
#line 862 "cp-parse.y"
{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
    break;}
case 122:
#line 867 "cp-parse.y"
{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
    break;}
case 123:
#line 872 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 124:
#line 874 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 125:
#line 879 "cp-parse.y"
{ yyval.ttype = groktypename (yyval.ttype); ;
    break;}
case 127:
#line 885 "cp-parse.y"
{
		  tree t, decl, id, tmpl;

		  id = TREE_VALUE (yyvsp[-1].ttype);
		  tmpl = TREE_PURPOSE (IDENTIFIER_TEMPLATE (id));
		  t = xref_tag (DECL_TEMPLATE_INFO (tmpl)->aggr, id, yyvsp[0].ttype);
		  set_current_level_tags_transparency (1);
		  my_friendly_assert (TREE_CODE (t) == RECORD_TYPE
				      || TREE_CODE (t) == UNION_TYPE, 257);
		  yyval.ttype = t;

		  /* Now, put a copy of the decl in global scope, to avoid
		     recursive expansion.  */
		  decl = IDENTIFIER_LOCAL_VALUE (id);
		  if (!decl)
		    decl = IDENTIFIER_CLASS_VALUE (id);
		  /* Now, put a copy of the decl in global scope, to avoid
		     recursive expansion.  */
                  if (decl)
                    {
		      /* Need to copy it to clear the chain pointer,
			 and need to get it into permanent storage.  */
                      my_friendly_assert (TREE_CODE (decl) == TYPE_DECL, 258);
		      push_obstacks (&permanent_obstack, &permanent_obstack);
                      decl = copy_node (decl);
		      if (DECL_LANG_SPECIFIC (decl))
			copy_lang_decl (decl);
		      pop_obstacks ();
		      pushdecl_top_level (decl);
		    }
		;
    break;}
case 128:
#line 917 "cp-parse.y"
{
		  yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-1].ttype, 0);

		  pop_obstacks ();
		  end_template_instantiation (yyvsp[-5].ttype, yyvsp[-3].ttype);

                  /* Now go after the methods & class data.  */
                  instantiate_member_templates (yyvsp[-5].ttype);

		  pop_tinst_level();

		  CLASSTYPE_GOT_SEMICOLON (yyval.ttype) = 1;
		;
    break;}
case 129:
#line 934 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 130:
#line 936 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 131:
#line 941 "cp-parse.y"
{ yyval.ttype = NULL_TREE; /* never used from here... */;
    break;}
case 132:
#line 943 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; /*???*/ ;
    break;}
case 133:
#line 947 "cp-parse.y"
{ yyval.code = NEGATE_EXPR; ;
    break;}
case 134:
#line 949 "cp-parse.y"
{ yyval.code = CONVERT_EXPR; ;
    break;}
case 135:
#line 951 "cp-parse.y"
{ yyval.code = PREINCREMENT_EXPR; ;
    break;}
case 136:
#line 953 "cp-parse.y"
{ yyval.code = PREDECREMENT_EXPR; ;
    break;}
case 137:
#line 955 "cp-parse.y"
{ yyval.code = TRUTH_NOT_EXPR; ;
    break;}
case 138:
#line 959 "cp-parse.y"
{ yyval.ttype = build_x_compound_expr (yyval.ttype); ;
    break;}
case 140:
#line 966 "cp-parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 141:
#line 970 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 142:
#line 975 "cp-parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 143:
#line 979 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 144:
#line 984 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 146:
#line 987 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 147:
#line 992 "cp-parse.y"
{ {
		  tree d;
		  for (d = getdecls (); d; d = TREE_CHAIN (d))
		    if (TREE_CODE (d) == TYPE_DECL) {
		      tree s = TREE_TYPE (d);
		      if (TREE_CODE (s) == RECORD_TYPE)
			cp_error ("definition of class `%T' in condition", s);
		      else if (TREE_CODE (s) == ENUMERAL_TYPE)
			cp_error ("definition of enum `%T' in condition", s);
		    }
		  }
		  current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype);
		;
    break;}
case 148:
#line 1009 "cp-parse.y"
{ 
		  finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 0);
		  resume_momentary (yyvsp[-2].itype);
		  yyval.ttype = yyvsp[-1].ttype; 
		  if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE)
		    cp_error ("definition of array `%#D' in condition", yyval.ttype); 
		;
    break;}
case 150:
#line 1022 "cp-parse.y"
{ tree d = getdecls ();
		  emit_line_note (input_filename, lineno);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0);
		  if (d) pushdecl (d);
	        ;
    break;}
case 151:
#line 1035 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); 
		  finish_stmt (); ;
    break;}
case 152:
#line 1041 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); 
		  finish_stmt (); ;
    break;}
case 153:
#line 1047 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
		  pop_momentary (); 
		  finish_stmt (); ;
    break;}
case 154:
#line 1053 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 155:
#line 1061 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 156:
#line 1063 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 157:
#line 1065 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 159:
#line 1071 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 160:
#line 1073 "cp-parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 161:
#line 1075 "cp-parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
    break;}
case 162:
#line 1080 "cp-parse.y"
{
		  if (TREE_CODE (yyval.ttype) == TYPE_EXPR)
		    yyval.ttype = build_component_type_expr (C_C_D, yyval.ttype, NULL_TREE, 1);
		;
    break;}
case 163:
#line 1086 "cp-parse.y"
{ yyvsp[0].itype = pedantic;
		  pedantic = 0; ;
    break;}
case 164:
#line 1089 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  pedantic = yyvsp[-2].itype; ;
    break;}
case 165:
#line 1092 "cp-parse.y"
{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
    break;}
case 166:
#line 1094 "cp-parse.y"
{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
    break;}
case 167:
#line 1096 "cp-parse.y"
{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
    break;}
case 168:
#line 1098 "cp-parse.y"
{ yyval.ttype = build_x_unary_op ((enum tree_code) yyval.ttype, yyvsp[0].ttype);
		  if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
		    TREE_NEGATED_INT (yyval.ttype) = 1;
		  overflow_warning (yyval.ttype);
		;
    break;}
case 169:
#line 1105 "cp-parse.y"
{ tree label = lookup_label (yyvsp[0].ttype);
		  if (label == NULL_TREE)
		    yyval.ttype = null_pointer_node;
		  else
		    {
		      TREE_USED (label) = 1;
		      yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
		      TREE_CONSTANT (yyval.ttype) = 1;
		    }
		;
    break;}
case 170:
#line 1116 "cp-parse.y"
{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
		      && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
		    error ("sizeof applied to a bit-field");
		  /* ANSI says arrays and functions are converted inside comma.
		     But we can't really convert them in build_compound_expr
		     because that would break commas in lvalues.
		     So do the conversion here if operand was a comma.  */
		  if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
		      && (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
			  || TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
		    yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
		  else if (TREE_CODE (yyvsp[0].ttype) == TREE_LIST)
	            {
		      tree t = TREE_VALUE (yyvsp[0].ttype);
		      if (t != NULL_TREE
			  && TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
			pedwarn ("ANSI C++ forbids using sizeof() on a function");
		    }
		  yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
    break;}
case 171:
#line 1136 "cp-parse.y"
{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 172:
#line 1138 "cp-parse.y"
{ yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
    break;}
case 173:
#line 1140 "cp-parse.y"
{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 174:
#line 1143 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 175:
#line 1145 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 176:
#line 1147 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 177:
#line 1149 "cp-parse.y"
{ cp_error ("`%T' is not a valid expression", yyvsp[-1].ttype);
		  yyval.ttype = error_mark_node; ;
    break;}
case 178:
#line 1152 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 179:
#line 1154 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 180:
#line 1156 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 181:
#line 1158 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 182:
#line 1160 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 183:
#line 1168 "cp-parse.y"
{
		  tree absdcl, typename;

		illegal_new_array:
		  absdcl = build_parse_node (ARRAY_REF, yyvsp[-4].ttype, yyvsp[-1].ttype);
		  typename = build_decl_list (yyvsp[-5].ttype, absdcl);
		  pedwarn ("ANSI C++ forbids array dimensions with parenthesized type");
		  yyval.ttype = build_new (yyvsp[-7].ttype, typename, NULL_TREE, yyval.ttype != NULL_TREE);
		;
    break;}
case 184:
#line 1178 "cp-parse.y"
{ goto illegal_new_array; ;
    break;}
case 185:
#line 1181 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 186:
#line 1183 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-5].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 187:
#line 1185 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 188:
#line 1187 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-5].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 189:
#line 1190 "cp-parse.y"
{ yyungetc (':', 1); yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 190:
#line 1192 "cp-parse.y"
{ yyungetc (':', 1); yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 191:
#line 1195 "cp-parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0); ;
    break;}
case 192:
#line 1197 "cp-parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX; ;
    break;}
case 193:
#line 1201 "cp-parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX; ;
    break;}
case 195:
#line 1209 "cp-parse.y"
{ tree type = groktypename (yyvsp[-2].ttype);
		  yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
    break;}
case 196:
#line 1212 "cp-parse.y"
{ tree type = groktypename (yyvsp[-5].ttype);
		  tree init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids constructor-expressions");
		  /* Indicate that this was a GNU C constructor expression.  */
		  TREE_HAS_CONSTRUCTOR (init) = 1;
		  yyval.ttype = digest_init (type, init, (tree *) 0);
		  if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
		    {
		      int failure = complete_array_type (type, yyval.ttype, 1);
		      if (failure)
			my_friendly_abort (78);
		    }
		;
    break;}
case 197:
#line 1227 "cp-parse.y"
{ yyval.ttype = build_headof (yyvsp[-1].ttype); ;
    break;}
case 198:
#line 1229 "cp-parse.y"
{ yyval.ttype = build_classof (yyvsp[-1].ttype); ;
    break;}
case 199:
#line 1231 "cp-parse.y"
{ if (is_aggr_typedef (yyvsp[-1].ttype, 1))
		    {
		      tree type = IDENTIFIER_TYPE_VALUE (yyvsp[-1].ttype);
		      yyval.ttype = CLASSTYPE_DOSSIER (type);
		    }
		  else
		    yyval.ttype = error_mark_node;
		;
    break;}
case 201:
#line 1244 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 202:
#line 1246 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 203:
#line 1248 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 204:
#line 1250 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 205:
#line 1252 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 206:
#line 1254 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 207:
#line 1256 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 208:
#line 1258 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 209:
#line 1260 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 210:
#line 1262 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 211:
#line 1264 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 212:
#line 1266 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 213:
#line 1268 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 214:
#line 1270 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 215:
#line 1272 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 216:
#line 1274 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 217:
#line 1276 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 218:
#line 1278 "cp-parse.y"
{ yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 219:
#line 1280 "cp-parse.y"
{ yyval.ttype = build_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype); ;
    break;}
case 220:
#line 1282 "cp-parse.y"
{ register tree rval;
		  if (rval = build_opfncall (MODIFY_EXPR, LOOKUP_NORMAL, yyval.ttype, yyvsp[0].ttype,
					     make_node (yyvsp[-1].code)))
		    yyval.ttype = rval;
		  else
		    yyval.ttype = build_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
    break;}
case 221:
#line 1289 "cp-parse.y"
{ yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 222:
#line 1292 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 223:
#line 1310 "cp-parse.y"
{ yyval.ttype = do_identifier (yyval.ttype); ;
    break;}
case 224:
#line 1312 "cp-parse.y"
{
		  tree op = yyval.ttype;
		  if (TREE_CODE (op) != IDENTIFIER_NODE)
		    yyval.ttype = op;
		  else
		    {
		      yyval.ttype = lookup_name (op, 0);
		      if (yyval.ttype == NULL_TREE)
			{
			  if (op != ansi_opname[ERROR_MARK])
			    error ("operator %s not defined",
				   operator_name_string (op));
			  yyval.ttype = error_mark_node;
			}
		    }
		;
    break;}
case 226:
#line 1330 "cp-parse.y"
{ yyval.ttype = combine_strings (yyval.ttype); ;
    break;}
case 227:
#line 1332 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 228:
#line 1334 "cp-parse.y"
{ yyval.ttype = error_mark_node; ;
    break;}
case 229:
#line 1336 "cp-parse.y"
{ if (current_function_decl == 0)
		    {
		      error ("braced-group within expression allowed only inside a function");
		      YYERROR;
		    }
		  keep_next_level ();
		  yyval.ttype = expand_start_stmt_expr (); ;
    break;}
case 230:
#line 1344 "cp-parse.y"
{ tree rtl_exp;
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids braced-groups within expressions");
		  rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
		  /* The statements have side effects, so the group does.  */
		  TREE_SIDE_EFFECTS (rtl_exp) = 1;
		  /* Make a BIND_EXPR for the BLOCK already made.  */
		  yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
			      NULL_TREE, rtl_exp, yyvsp[-1].ttype);
		  /* Remove the block from the tree at this point.
		     It gets put back at the proper place
		     when the BIND_EXPR is expanded.  */
		  delete_block (yyvsp[-1].ttype);
		;
    break;}
case 231:
#line 1359 "cp-parse.y"
{ /* [eichin:19911016.1902EST] */
                  yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); 
                  /* here we instantiate_class_template as needed... */
                  do_pending_templates ();
                ;
    break;}
case 232:
#line 1363 "cp-parse.y"
{
                  if (TREE_CODE (yyvsp[-1].ttype) == CALL_EXPR
                      && TREE_TYPE (yyvsp[-1].ttype) != void_type_node)
	            yyval.ttype = require_complete_type (yyvsp[-1].ttype);
                  else
                    yyval.ttype = yyvsp[-1].ttype;
                ;
    break;}
case 233:
#line 1371 "cp-parse.y"
{
		  yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_decl);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
                ;
    break;}
case 234:
#line 1378 "cp-parse.y"
{ do_array:
		    yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 235:
#line 1381 "cp-parse.y"
{ yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 236:
#line 1383 "cp-parse.y"
{ yyval.ttype = build_object_ref (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 237:
#line 1385 "cp-parse.y"
{ /* If we get an OFFSET_REF, turn it into what it really
		     means (e.g., a COMPONENT_REF).  This way if we've got,
		     say, a reference to a static member that's being operated
		     on, we don't end up trying to find a member operator for
		     the class it's in.  */
		  if (TREE_CODE (yyval.ttype) == OFFSET_REF)
		    yyval.ttype = resolve_offset_ref (yyval.ttype);
		  yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
    break;}
case 238:
#line 1394 "cp-parse.y"
{ if (TREE_CODE (yyval.ttype) == OFFSET_REF)
		    yyval.ttype = resolve_offset_ref (yyval.ttype);
		  yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
    break;}
case 239:
#line 1399 "cp-parse.y"
{ if (current_class_decl)
		    {
#ifdef WARNING_ABOUT_CCD
		      TREE_USED (current_class_decl) = 1;
#endif
		      yyval.ttype = current_class_decl;
		    }
		  else if (current_function_decl
			   && DECL_STATIC_FUNCTION_P (current_function_decl))
		    {
		      error ("`this' is unavailable for static member functions");
		      yyval.ttype = error_mark_node;
		    }
		  else
		    {
		      if (current_function_decl)
			error ("invalid use of `this' in non-member function");
		      else
			error ("invalid use of `this' at top level");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 240:
#line 1422 "cp-parse.y"
{
		  tree type;
		  tree id = yyval.ttype;

		  /* This is a C cast in C++'s `functional' notation.  */
		  if (yyvsp[-1].ttype == error_mark_node)
		    {
		      yyval.ttype = error_mark_node;
		      break;
		    }
#if 0
		  if (yyvsp[-1].ttype == NULL_TREE)
		    {
		      error ("cannot cast null list to type `%s'",
		             IDENTIFIER_POINTER (TYPE_NAME (id)));
		      yyval.ttype = error_mark_node;
		      break;
		    }
#endif
#if 0
		  /* type is not set! (mrs) */
		  if (type == error_mark_node)
		    yyval.ttype = error_mark_node;
		  else
#endif
		    {
		      if (id == ridpointers[(int) RID_CONST])
		        type = build_type_variant (integer_type_node, 1, 0);
		      else if (id == ridpointers[(int) RID_VOLATILE])
		        type = build_type_variant (integer_type_node, 0, 1);
#if 0
		      /* should not be able to get here (mrs) */
		      else if (id == ridpointers[(int) RID_FRIEND])
		        {
		          error ("cannot cast expression to `friend' type");
		          yyval.ttype = error_mark_node;
		          break;
		        }
#endif
		      else my_friendly_abort (79);
		      yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype));
		    }
		;
    break;}
case 241:
#line 1466 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 242:
#line 1468 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyval.ttype, NULL_TREE); ;
    break;}
case 243:
#line 1471 "cp-parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
    break;}
case 244:
#line 1474 "cp-parse.y"
{ yyval.ttype = build_typeid (yyvsp[-1].ttype); ;
    break;}
case 245:
#line 1476 "cp-parse.y"
{ tree type = groktypename (yyvsp[-1].ttype);
		  yyval.ttype = get_typeid (type); ;
    break;}
case 246:
#line 1479 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 247:
#line 1481 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 248:
#line 1483 "cp-parse.y"
{
		do_scoped_id:
		  yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  if (! yyval.ttype)
		    {
		      if (yychar == '(' || yychar == LEFT_RIGHT)
			yyval.ttype = implicitly_declare (yyvsp[0].ttype);
		      else
			{
			  if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node)
			    error ("undeclared variable `%s' (first use here)",
				   IDENTIFIER_POINTER (yyvsp[0].ttype));
			  yyval.ttype = error_mark_node;
			  /* Prevent repeated error messages.  */
			  IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
			}
		    }
		  else
		    {
		      if (TREE_CODE (yyval.ttype) == ADDR_EXPR)
			assemble_external (TREE_OPERAND (yyval.ttype, 0));
		      else
			assemble_external (yyval.ttype);
		      TREE_USED (yyval.ttype) = 1;
		    }
		  if (TREE_CODE (yyval.ttype) == CONST_DECL)
		    {
		      /* XXX CHS - should we set TREE_USED of the constant? */
		      yyval.ttype = DECL_INITIAL (yyval.ttype);
		      /* This is to prevent an enum whose value is 0
			 from being considered a null pointer constant.  */
		      yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
		      TREE_CONSTANT (yyval.ttype) = 1;
		    }

		;
    break;}
case 249:
#line 1522 "cp-parse.y"
{
		  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
		    goto do_scoped_id;
		do_scoped_operator:
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 250:
#line 1529 "cp-parse.y"
{ yyval.ttype = build_offset_ref (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 251:
#line 1531 "cp-parse.y"
{ yyval.ttype = build_member_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 252:
#line 1533 "cp-parse.y"
{ yyval.ttype = build_member_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 253:
#line 1535 "cp-parse.y"
{
#if 0
		  /* This is a future direction of this code, but because
		     build_x_function_call cannot always undo what is done
		     in build_component_ref entirely yet, we cannot do this. */
		  yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-3].ttype, NULL_TREE, 1), yyvsp[-1].ttype, yyval.ttype);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
#else
		  yyval.ttype = build_method_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR));
#endif
		;
    break;}
case 254:
#line 1550 "cp-parse.y"
{
#if 0
		  /* This is a future direction of this code, but because
		     build_x_function_call cannot always undo what is done
		     in build_component_ref entirely yet, we cannot do this. */
		  yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, 1), NULL_TREE, yyval.ttype);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
#else
		  yyval.ttype = build_method_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR));
#endif
		;
    break;}
case 255:
#line 1565 "cp-parse.y"
{ yyval.ttype = build_scoped_method_call (yyval.ttype, yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 256:
#line 1567 "cp-parse.y"
{ yyval.ttype = build_scoped_method_call (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 257:
#line 1570 "cp-parse.y"
{ 
		  if (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype)) 
		      != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype))))
		    cp_error ("`%E' is not of type `%T'", yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = void_zero_node;
		;
    break;}
case 258:
#line 1577 "cp-parse.y"
{ 
		  if (yyvsp[-4].ttype != yyvsp[-1].ttype)
		    cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
		  if (TREE_CODE (TREE_TYPE (yyvsp[-5].ttype))
		      != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-4].ttype))))
		    cp_error ("`%E' is not of type `%T'", yyvsp[-5].ttype, yyvsp[-4].ttype);
		  yyval.ttype = void_zero_node; 
		;
    break;}
case 259:
#line 1626 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 260:
#line 1628 "cp-parse.y"
{
		  yyval.ttype = yyvsp[-1].ttype;
		  pedwarn ("old style placement syntax, use () instead");
		;
    break;}
case 261:
#line 1636 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 262:
#line 1638 "cp-parse.y"
{ yyval.itype = 1; ;
    break;}
case 263:
#line 1642 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 264:
#line 1644 "cp-parse.y"
{ if (yyvsp[0].ttype)
		    error ("extra `::' before `delete' ignored");
		  yyval.ttype = error_mark_node;
		;
    break;}
case 266:
#line 1654 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 267:
#line 1659 "cp-parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  setup_vtbl_ptr ();
		  /* Always keep the BLOCK node associated with the outermost
		     pair of curley braces of a function.  These are needed
		     for correct operation of dwarfout.c.  */
		  keep_next_level ();
		;
    break;}
case 269:
#line 1672 "cp-parse.y"
{
		  yyval.ttype = build_x_arrow (yyval.ttype);
		;
    break;}
case 271:
#line 1682 "cp-parse.y"
{
		  resume_momentary (yyvsp[-1].itype);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 272:
#line 1688 "cp-parse.y"
{ tree d;
		  int yes = suspend_momentary ();
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  resume_momentary (yes);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 273:
#line 1696 "cp-parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); ;
    break;}
case 274:
#line 1699 "cp-parse.y"
{ tree d;
		  int yes = suspend_momentary ();
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  resume_momentary (yes);
		;
    break;}
case 275:
#line 1706 "cp-parse.y"
{
		  shadow_tag (yyval.ttype);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 276:
#line 1711 "cp-parse.y"
{ warning ("empty declaration"); ;
    break;}
case 279:
#line 1721 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 280:
#line 1723 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 281:
#line 1732 "cp-parse.y"
{ if (yyval.ttype) yyval.ttype = list_hash_lookup_or_cons (yyval.ttype); ;
    break;}
case 282:
#line 1734 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 283:
#line 1736 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 284:
#line 1738 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[-1].ttype, hash_chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 285:
#line 1744 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 286:
#line 1746 "cp-parse.y"
{ if (extra_warnings)
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyval.ttype));
		  yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 287:
#line 1751 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 288:
#line 1753 "cp-parse.y"
{ if (extra_warnings)
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyvsp[0].ttype));
		  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 289:
#line 1765 "cp-parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype);
		  TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 290:
#line 1768 "cp-parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 291:
#line 1770 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 292:
#line 1773 "cp-parse.y"
{ if (extra_warnings && TREE_STATIC (yyval.ttype))
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyvsp[0].ttype));
		  yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
    break;}
case 293:
#line 1789 "cp-parse.y"
{ yyval.ttype = get_decl_list (yyval.ttype); ;
    break;}
case 294:
#line 1791 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 295:
#line 1793 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 296:
#line 1795 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, hash_chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 297:
#line 1800 "cp-parse.y"
{ yyval.ttype = get_decl_list (yyval.ttype); ;
    break;}
case 298:
#line 1802 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 303:
#line 1814 "cp-parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 304:
#line 1818 "cp-parse.y"
{ yyval.ttype = groktypename (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 313:
#line 1843 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 314:
#line 1845 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 315:
#line 1850 "cp-parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 316:
#line 1856 "cp-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 317:
#line 1859 "cp-parse.y"
{ tree d;
		  current_declspecs = yyvsp[-4].ttype;
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 318:
#line 1869 "cp-parse.y"
{ yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 319:
#line 1873 "cp-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0); ;
    break;}
case 320:
#line 1875 "cp-parse.y"
{ tree d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 321:
#line 1882 "cp-parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 322:
#line 1888 "cp-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 323:
#line 1891 "cp-parse.y"
{ tree d;
		  current_declspecs = yyvsp[-4].ttype;
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 324:
#line 1903 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 325:
#line 1905 "cp-parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 326:
#line 1910 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 327:
#line 1912 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
    break;}
case 328:
#line 1917 "cp-parse.y"
{ if (strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "packed")
	      && strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "noreturn"))
	    warning ("`%s' attribute directive ignored",
		     IDENTIFIER_POINTER (yyvsp[0].ttype));
	  yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 329:
#line 1923 "cp-parse.y"
{ /* if not "aligned(n)", then issue warning */
	  if (strcmp (IDENTIFIER_POINTER (yyvsp[-3].ttype), "aligned") != 0
	      || TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST)
	    {
	      warning ("`%s' attribute directive ignored",
		       IDENTIFIER_POINTER (yyvsp[-3].ttype));
	      yyval.ttype = yyvsp[-3].ttype;
	    }
	  else
	    yyval.ttype = tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 330:
#line 1934 "cp-parse.y"
{ /* if not "format(...)", then issue warning */
	  if (strcmp (IDENTIFIER_POINTER (yyvsp[-7].ttype), "format") != 0
	      || TREE_CODE (yyvsp[-3].ttype) != INTEGER_CST
	      || TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST)
	    {
	      warning ("`%s' attribute directive ignored",
		       IDENTIFIER_POINTER (yyvsp[-7].ttype));
	      yyval.ttype = yyvsp[-7].ttype;
	    }
	  else
	    yyval.ttype = tree_cons (yyvsp[-7].ttype, tree_cons (yyvsp[-5].ttype, tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE), NULL_TREE), NULL_TREE); ;
    break;}
case 331:
#line 1950 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 332:
#line 1952 "cp-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 334:
#line 1958 "cp-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1;
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids empty initializer braces"); ;
    break;}
case 335:
#line 1963 "cp-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 336:
#line 1966 "cp-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 337:
#line 1969 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 338:
#line 1976 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 339:
#line 1978 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 340:
#line 1981 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 341:
#line 1983 "cp-parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 342:
#line 1985 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 343:
#line 1987 "cp-parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 344:
#line 1992 "cp-parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
    break;}
case 345:
#line 1995 "cp-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-4].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 346:
#line 1999 "cp-parse.y"
{ yyval.ttype = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 347:
#line 2002 "cp-parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (make_anon_name ()); ;
    break;}
case 348:
#line 2005 "cp-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-5].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 349:
#line 2009 "cp-parse.y"
{ yyval.ttype = finish_enum (start_enum (make_anon_name()), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 350:
#line 2012 "cp-parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 351:
#line 2016 "cp-parse.y"
{
		  int semi;
		  tree id;

#if 0
		  /* Need to rework class nesting in the
		     presence of nested classes, etc.  */
		  shadow_tag (CLASSTYPE_AS_LIST (yyval.ttype)); */
#endif
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  semi = yychar == ';';
		  /* finish_struct nukes this anyway; if
		     finish_exception does too, then it can go. */
		  if (semi)
		    note_got_semicolon (yyval.ttype);

		  if (TREE_CODE (yyval.ttype) == ENUMERAL_TYPE)
		    /* $$ = $1 from default rule.  */;
		  else if (CLASSTYPE_DECLARED_EXCEPTION (yyval.ttype))
		    {
		      if (! semi)
			yyval.ttype = finish_exception (yyval.ttype, yyvsp[-1].ttype);
		      else
			warning ("empty exception declaration\n");
		    }
		  else
		    {
		      yyval.ttype = finish_struct (yyval.ttype, yyvsp[-1].ttype, semi);
		      if (semi) note_got_semicolon (yyval.ttype);
		    }

		  pop_obstacks ();

		  id = TYPE_IDENTIFIER (yyval.ttype);
		  if (id && IDENTIFIER_TEMPLATE (id))
		    {
		      tree decl;

		      /* I don't know if the copying of this TYPE_DECL is
		       * really needed.  However, it's such a small per-
		       * formance penalty that the extra safety is a bargain.
		       * - [email protected]
		       */
		      push_obstacks (&permanent_obstack, &permanent_obstack);
		      decl = copy_node (lookup_name (id, 0));
		      if (DECL_LANG_SPECIFIC (decl))
			copy_lang_decl (decl);
		      pop_obstacks ();
		      undo_template_name_overload (id, 0);
		      pushdecl_top_level (decl);
		    }
		  if (! semi)
		    check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 352:
#line 2071 "cp-parse.y"
{
#if 0
  /* It's no longer clear what the following error is supposed to
     accomplish.  If it turns out to be needed, add a comment why.  */
		  if (TYPE_BINFO_BASETYPES (yyval.ttype) && !TYPE_SIZE (yyval.ttype))
		    {
		      error ("incomplete definition of type `%s'",
			     TYPE_NAME_STRING (yyval.ttype));
		      yyval.ttype = error_mark_node;
		    }
#endif
		;
    break;}
case 356:
#line 2093 "cp-parse.y"
{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
    break;}
case 358:
#line 2098 "cp-parse.y"
{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 359:
#line 2100 "cp-parse.y"
{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 360:
#line 2102 "cp-parse.y"
{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 361:
#line 2104 "cp-parse.y"
{ error ("no body nor ';' separates two class, struct or union declarations"); ;
    break;}
case 362:
#line 2109 "cp-parse.y"
{ aggr1: current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 363:
#line 2111 "cp-parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 364:
#line 2113 "cp-parse.y"
{ yyungetc (':', 1); goto aggr1; ;
    break;}
case 365:
#line 2115 "cp-parse.y"
{ yyungetc ('{', 1);
		aggr2:
		  current_aggr = yyval.ttype;
		  yyval.ttype = yyvsp[-1].ttype;
		  overload_template_name (yyval.ttype, 0); ;
    break;}
case 366:
#line 2121 "cp-parse.y"
{ yyungetc (':', 1); goto aggr2; ;
    break;}
case 367:
#line 2126 "cp-parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 368:
#line 2131 "cp-parse.y"
{
		  yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 369:
#line 2135 "cp-parse.y"
{
		  if (yyvsp[0].ttype)
		    yyval.ttype = xref_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype);
		  else
		    yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 370:
#line 2143 "cp-parse.y"
{
		  yyval.ttype = xref_defn_tag (current_aggr, yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 371:
#line 2147 "cp-parse.y"
{
		  if (yyvsp[0].ttype)
		    yyval.ttype = xref_defn_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype);
		  else
		    yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 372:
#line 2156 "cp-parse.y"
{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE);
		  yyungetc ('{', 1); ;
    break;}
case 375:
#line 2164 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 376:
#line 2166 "cp-parse.y"
{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
    break;}
case 377:
#line 2168 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 379:
#line 2174 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 380:
#line 2179 "cp-parse.y"
{ if (! is_aggr_typedef (yyval.ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
    break;}
case 381:
#line 2183 "cp-parse.y"
{ if (! is_aggr_typedef (yyval.ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
    break;}
case 382:
#line 2187 "cp-parse.y"
{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 383:
#line 2191 "cp-parse.y"
{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 384:
#line 2198 "cp-parse.y"
{
  		  /* Kludge!!! See rule "template_type" and the code
		   * dealing with "template_type_seen_before_scope" in
		   * yylex(). */
  		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 385:
#line 2207 "cp-parse.y"
{
  		  extern tree template_type_seen_before_scope;
		  tree id = yyvsp[0].ttype ? TYPE_IDENTIFIER (yyvsp[0].ttype) : yyvsp[-2].ttype;

  		  /* Check the rule template_type to get this... */
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  if (yychar == SCOPE) {
		    template_type_seen_before_scope = id;
		    yychar = YYLEX;
		  }
		;
    break;}
case 388:
#line 2225 "cp-parse.y"
{ if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual visibility");
		  yyval.itype = visibility_default_virtual; ;
    break;}
case 389:
#line 2229 "cp-parse.y"
{ int err = 0;
		  if (yyvsp[0].itype == visibility_protected)
		    {
		      warning ("`protected' visibility not implemented");
		      yyvsp[0].itype = visibility_public;
		      err++;
		    }
		  else if (yyvsp[0].itype == visibility_public)
		    {
		      if (yyvsp[-1].itype == visibility_private)
			{
			mixed:
			  error ("base class cannot be public and private");
			}
		      else if (yyvsp[-1].itype == visibility_default_virtual)
			yyval.itype = visibility_public_virtual;
		    }
		  else /* $2 == visibility_private */
		    {
		      if (yyvsp[-1].itype == visibility_public)
			goto mixed;
		      else if (yyvsp[-1].itype == visibility_default_virtual)
			yyval.itype = visibility_private_virtual;
		    }
		;
    break;}
case 390:
#line 2255 "cp-parse.y"
{ if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual visibility");
		  if (yyval.itype == visibility_public)
		    yyval.itype = visibility_public_virtual;
		  else if (yyval.itype == visibility_private)
		    yyval.itype = visibility_private_virtual; ;
    break;}
case 391:
#line 2264 "cp-parse.y"
{ tree t;
		  push_obstacks_nochange ();
		  end_temporary_allocation ();

		  if (! IS_AGGR_TYPE (yyvsp[-1].ttype))
		    {
		      yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
		      TYPE_NAME (yyvsp[-1].ttype) = get_identifier ("erroneous type");
		    }
		  if (TYPE_SIZE (yyvsp[-1].ttype))
		    duplicate_tag_error (yyvsp[-1].ttype);
                  if (TYPE_SIZE (yyvsp[-1].ttype) || TYPE_BEING_DEFINED (yyvsp[-1].ttype))
                    {
                      t = make_lang_type (TREE_CODE (yyvsp[-1].ttype));
                      pushtag (TYPE_IDENTIFIER (yyvsp[-1].ttype), t);
                      yyvsp[-1].ttype = t;
                    }
		  pushclass (yyvsp[-1].ttype, 0);
		  TYPE_BEING_DEFINED (yyvsp[-1].ttype) = 1;
		  t = TYPE_IDENTIFIER (yyvsp[-1].ttype);
		  if (t && IDENTIFIER_TEMPLATE (t))
		    overload_template_name (t, 1);
		;
    break;}
case 392:
#line 2291 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 393:
#line 2293 "cp-parse.y"
{ yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
    break;}
case 394:
#line 2295 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list ((tree) yyvsp[-2].itype, yyvsp[0].ttype)); ;
    break;}
case 396:
#line 2303 "cp-parse.y"
{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; ;
    break;}
case 397:
#line 2305 "cp-parse.y"
{ /* In pushdecl, we created a reverse list of names
		     in this binding level.  Make sure that the chain
		     of what we're trying to add isn't the item itself
		     (which can happen with what pushdecl's doing).  */
		  if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node)
		    {
		      if (TREE_CHAIN (yyvsp[0].ttype) != yyval.ttype)
			yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		      else
			yyval.ttype = yyvsp[0].ttype;
		    }
		;
    break;}
case 399:
#line 2322 "cp-parse.y"
{ do_components:
		  yyval.ttype = grok_x_components (yyval.ttype, yyvsp[-1].ttype);
		  end_exception_decls ();
		;
    break;}
case 400:
#line 2327 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 401:
#line 2329 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 402:
#line 2333 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 403:
#line 2335 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 404:
#line 2339 "cp-parse.y"
{ goto do_components; ;
    break;}
case 405:
#line 2342 "cp-parse.y"
{ yyval.ttype = grokfield (yyvsp[-1].ttype, yyval.ttype,
				  NULL_TREE, NULL_TREE, NULL_TREE); ;
    break;}
case 406:
#line 2345 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  goto do_components; ;
    break;}
case 407:
#line 2349 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 408:
#line 2351 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 409:
#line 2355 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 410:
#line 2357 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 411:
#line 2361 "cp-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 412:
#line 2363 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 413:
#line 2367 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 414:
#line 2372 "cp-parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 415:
#line 2374 "cp-parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 416:
#line 2376 "cp-parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 417:
#line 2378 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 418:
#line 2385 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 420:
#line 2388 "cp-parse.y"
{
		  /* In this context, void_type_node encodes
		     friends.  They have been recorded elsewhere.  */
		  if (yyval.ttype == void_type_node)
		    yyval.ttype = yyvsp[0].ttype;
		  else
		    yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 421:
#line 2400 "cp-parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 422:
#line 2404 "cp-parse.y"
{ current_declspecs = yyvsp[-6].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 423:
#line 2408 "cp-parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 424:
#line 2412 "cp-parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 425:
#line 2416 "cp-parse.y"
{ current_declspecs = yyvsp[-3].ttype;
		  yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 426:
#line 2423 "cp-parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 427:
#line 2426 "cp-parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 428:
#line 2429 "cp-parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 429:
#line 2432 "cp-parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 430:
#line 2435 "cp-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 432:
#line 2446 "cp-parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 433:
#line 2451 "cp-parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
    break;}
case 434:
#line 2453 "cp-parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 435:
#line 2459 "cp-parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 436:
#line 2461 "cp-parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 437:
#line 2467 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 439:
#line 2470 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 440:
#line 2475 "cp-parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 441:
#line 2477 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 442:
#line 2482 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 443:
#line 2484 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 444:
#line 2492 "cp-parse.y"
{ yyval.itype = suspend_momentary (); ;
    break;}
case 445:
#line 2493 "cp-parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 446:
#line 2499 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 447:
#line 2501 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 448:
#line 2503 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 449:
#line 2505 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 450:
#line 2507 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 451:
#line 2509 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 452:
#line 2511 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 453:
#line 2513 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
    break;}
case 454:
#line 2515 "cp-parse.y"
{ see_typename (); ;
    break;}
case 456:
#line 2518 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
    break;}
case 457:
#line 2520 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 458:
#line 2522 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 460:
#line 2528 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 461:
#line 2530 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 462:
#line 2532 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 463:
#line 2534 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 464:
#line 2536 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 465:
#line 2538 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 466:
#line 2540 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 467:
#line 2542 "cp-parse.y"
{ see_typename (); ;
    break;}
case 469:
#line 2545 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 470:
#line 2547 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 471:
#line 2555 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 472:
#line 2557 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 473:
#line 2559 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 474:
#line 2561 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 475:
#line 2563 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 476:
#line 2565 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 477:
#line 2567 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 478:
#line 2569 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 479:
#line 2571 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 480:
#line 2573 "cp-parse.y"
{ see_typename (); ;
    break;}
case 481:
#line 2577 "cp-parse.y"
{ see_typename (); ;
    break;}
case 482:
#line 2580 "cp-parse.y"
{
		destructor_name:
		  see_typename ();
		  yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype);
		;
    break;}
case 483:
#line 2586 "cp-parse.y"
{ goto destructor_name; ;
    break;}
case 484:
#line 2588 "cp-parse.y"
{ goto destructor_name; ;
    break;}
case 485:
#line 2590 "cp-parse.y"
{ see_typename ();
		  if (TREE_CODE (yyval.ttype) != SCOPE_REF)
		    yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype);
		  else if (TREE_OPERAND (yyval.ttype, 1) == NULL_TREE)
		    TREE_OPERAND (yyval.ttype, 1) = yyvsp[0].ttype;
		  else
		    yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 486:
#line 2599 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 487:
#line 2601 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
    break;}
case 488:
#line 2603 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
    break;}
case 489:
#line 2605 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype)); ;
    break;}
case 490:
#line 2607 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
    break;}
case 491:
#line 2610 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 492:
#line 2612 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
    break;}
case 493:
#line 2614 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
    break;}
case 494:
#line 2616 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype)); ;
    break;}
case 495:
#line 2618 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
    break;}
case 496:
#line 2620 "cp-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 497:
#line 2624 "cp-parse.y"
{ tree t;
                  do_id_scope:

		  t = resolve_scope_to_name (NULL_TREE, yyval.ttype);
		  if (t == NULL_TREE)
		    {
		      cp_error ("`%T' is not a valid scope", yyval.ttype);
		      yyval.ttype = error_mark_node; 
		    }
		  else
		    yyval.ttype = t;
		;
    break;}
case 498:
#line 2637 "cp-parse.y"
{ goto do_id_scope; ;
    break;}
case 499:
#line 2639 "cp-parse.y"
{
                  if (yyval.ttype == error_mark_node)
                    /* leave it alone */;
                  else
		    {
		      yyval.ttype = resolve_scope_to_name (NULL_TREE, TYPE_IDENTIFIER (yyval.ttype));
		      if (yyval.ttype == NULL_TREE)
			{
			  error ("undefined explicitly scoped type");
			  yyval.ttype = error_mark_node; 
			}
		    }
/*                  if ($3) popclass (1); */
		;
    break;}
case 502:
#line 2660 "cp-parse.y"
{
  		  /* Kludge!!! See rule "template_type" and the code
		   * dealing with "template_type_seen_before_scope" in
		   * yylex(). */
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 503:
#line 2682 "cp-parse.y"
{ see_typename ();
		  yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 504:
#line 2686 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 505:
#line 2688 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 506:
#line 2690 "cp-parse.y"
{ see_typename (); ;
    break;}
case 507:
#line 2692 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 508:
#line 2694 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 509:
#line 2696 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 510:
#line 2698 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 511:
#line 2700 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 512:
#line 2702 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 513:
#line 2704 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 514:
#line 2706 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 515:
#line 2708 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 516:
#line 2710 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 517:
#line 2712 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
    break;}
case 518:
#line 2717 "cp-parse.y"
{ tree t;
		  t = yyval.ttype;
		  while (TREE_OPERAND (t, 1))
		    t = TREE_OPERAND (t, 1);
		  TREE_OPERAND (t, 1) = build_parse_node (INDIRECT_REF, 0);
		;
    break;}
case 519:
#line 2724 "cp-parse.y"
{ tree t;
		  t = yyval.ttype;
		  while (TREE_OPERAND (t, 1))
		    t = TREE_OPERAND (t, 1);
		  TREE_OPERAND (t, 1) = build_parse_node (INDIRECT_REF, yyvsp[0].ttype);
		;
    break;}
case 520:
#line 2731 "cp-parse.y"
{ tree t;
		  t = yyval.ttype;
		  while (TREE_OPERAND (t, 1))
		    t = TREE_OPERAND (t, 1);
		  TREE_OPERAND (t, 1) = build_parse_node (ADDR_EXPR, 0);
		;
    break;}
case 521:
#line 2738 "cp-parse.y"
{ tree t;
		  t = yyval.ttype;
		  while (TREE_OPERAND (t, 1))
		    t = TREE_OPERAND (t, 1);
		  TREE_OPERAND (t, 1) = build_parse_node (ADDR_EXPR, yyvsp[0].ttype);
		;
    break;}
case 522:
#line 2748 "cp-parse.y"
{ tree t;
		  t = yyval.ttype;
		  while (TREE_OPERAND (t, 1))
		    t = TREE_OPERAND (t, 1);
		  TREE_OPERAND (t, 1) = build_parse_node (INDIRECT_REF, yyvsp[0].ttype);
		;
    break;}
case 523:
#line 2755 "cp-parse.y"
{ tree t;
		  t = yyval.ttype;
		  while (TREE_OPERAND (t, 1))
		    t = TREE_OPERAND (t, 1);
		  TREE_OPERAND (t, 1) = build_parse_node (ADDR_EXPR, yyvsp[0].ttype);
		;
    break;}
case 529:
#line 2782 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0); ;
    break;}
case 531:
#line 2794 "cp-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C++ forbids label declarations"); ;
    break;}
case 534:
#line 2805 "cp-parse.y"
{ tree link;
		  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
		    {
		      tree label = shadow_label (TREE_VALUE (link));
		      C_DECLARED_LABEL_FLAG (label) = 1;
		      declare_nonlocal_label (label);
		    }
		;
    break;}
case 535:
#line 2819 "cp-parse.y"
{;
    break;}
case 537:
#line 2824 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 538:
#line 2829 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 539:
#line 2834 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
		  pop_momentary (); ;
    break;}
case 540:
#line 2842 "cp-parse.y"
{ cond_stmt_keyword = "if"; ;
    break;}
case 541:
#line 2844 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_start_cond (truthvalue_conversion (yyvsp[0].ttype), 0); ;
    break;}
case 543:
#line 2851 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 544:
#line 2853 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), getdecls() != NULL_TREE, 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 545:
#line 2861 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 547:
#line 2867 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 548:
#line 2869 "cp-parse.y"
{
  		  tree expr = yyvsp[-1].ttype;
		  emit_line_note (input_filename, lineno);
		  /* Do default conversion if safe and possibly important,
		     in case within ({...}).  */
		  if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
		       && lvalue_p (expr))
		      || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
		    expr = default_conversion (expr);
		  cplus_expand_expr_stmt (expr);
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 549:
#line 2882 "cp-parse.y"
{ expand_start_else (); ;
    break;}
case 550:
#line 2884 "cp-parse.y"
{ expand_end_cond ();
		  pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 551:
#line 2891 "cp-parse.y"
{ expand_end_cond ();
		  pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 552:
#line 2898 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop (1);
		  cond_stmt_keyword = "while"; ;
    break;}
case 553:
#line 2903 "cp-parse.y"
{ expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[0].ttype)); ;
    break;}
case 554:
#line 2905 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  expand_end_loop ();
		  finish_stmt (); ;
    break;}
case 555:
#line 2912 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 556:
#line 2916 "cp-parse.y"
{ expand_loop_continue_here ();
		  cond_stmt_keyword = "do"; ;
    break;}
case 557:
#line 2919 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype));
		  expand_end_loop ();
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 558:
#line 2925 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  if (yyvsp[0].ttype) cplus_expand_expr_stmt (yyvsp[0].ttype);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 559:
#line 2930 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype)); ;
    break;}
case 560:
#line 2935 "cp-parse.y"
{ push_momentary (); ;
    break;}
case 561:
#line 2937 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_loop_continue_here ();
		  if (yyvsp[-3].ttype) cplus_expand_expr_stmt (yyvsp[-3].ttype);
		  pop_momentary ();
		  pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  expand_end_loop ();
		  finish_stmt (); ;
    break;}
case 562:
#line 2948 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 563:
#line 2952 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype)); ;
    break;}
case 564:
#line 2957 "cp-parse.y"
{ push_momentary ();
		  yyvsp[0].itype = lineno; ;
    break;}
case 565:
#line 2960 "cp-parse.y"
{ emit_line_note (input_filename, (int) yyvsp[-2].itype);
		  expand_loop_continue_here ();
		  if (yyvsp[-3].ttype) cplus_expand_expr_stmt (yyvsp[-3].ttype);
		  pop_momentary ();
		  pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  expand_end_loop ();
		  finish_stmt ();
		;
    break;}
case 566:
#line 2972 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_start_case (yyvsp[-1].ttype); 
		  /* Don't let the tree nodes for $4 be discarded by
		     clear_momentary during the parsing of the next stmt.  */
		  push_momentary (); ;
    break;}
case 567:
#line 2978 "cp-parse.y"
{ expand_end_case (yyvsp[-3].ttype);
		  pop_momentary ();
		  pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 568:
#line 2986 "cp-parse.y"
{ register tree value = yyvsp[-1].ttype;
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);

		  /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
		     Strip such NOP_EXPRs.  */
		  if (TREE_CODE (value) == NOP_EXPR
		      && TREE_TYPE (value) == TREE_TYPE (TREE_OPERAND (value, 0)))
		    value = TREE_OPERAND (value, 0);

		  if (TREE_READONLY_DECL_P (value))
		    {
		      value = decl_constant_value (value);
		      /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
			 Strip such NOP_EXPRs.  */
		      if (TREE_CODE (value) == NOP_EXPR
			  && TREE_TYPE (value) == TREE_TYPE (TREE_OPERAND (value, 0)))
			value = TREE_OPERAND (value, 0);
		    }
		  value = fold (value);

		  if (TREE_CODE (value) != INTEGER_CST
		      && value != error_mark_node)
		    {
		      cp_error ("case label `%E' does not reduce to an integer constant", yyvsp[-1].ttype);
		      value = error_mark_node;
		    }
		  else
		    /* Promote char or short to int.  */
		    value = default_conversion (value);
		  if (value != error_mark_node)
		    {
		      tree duplicate;
		      int success = pushcase (value, convert_and_check,
					      label, &duplicate);
		      if (success == 1)
			cp_error ("case label `%E' not within a switch statement", yyvsp[-1].ttype);
		      else if (success == 2)
			{
			  cp_error ("duplicate case value `%E'", yyvsp[-1].ttype);
			  cp_error_at ("`%E' previously used here", duplicate);
			}
		      else if (success == 3)
			warning ("case value out of range");
		      else if (success == 5)
			cp_error ("case label `%E' within scope of cleanup or variable array", yyvsp[-1].ttype);
		    }
		  define_case_label (label);
		;
    break;}
case 570:
#line 3037 "cp-parse.y"
{ register tree value1 = yyvsp[-3].ttype;
		  register tree value2 = yyvsp[-1].ttype;
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);

		  if (pedantic)
		    pedwarn ("ANSI C++ forbids range expressions in switch statement");

		  /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
		     Strip such NOP_EXPRs.  */
		  if (TREE_CODE (value1) == NOP_EXPR
		      && TREE_TYPE (value1) == TREE_TYPE (TREE_OPERAND (value1, 0)))
		    value1 = TREE_OPERAND (value1, 0);

		  if (TREE_READONLY_DECL_P (value1))
		    {
		      value1 = decl_constant_value (value1);
		      /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
			 Strip such NOP_EXPRs.  */
		      if (TREE_CODE (value1) == NOP_EXPR
			  && TREE_TYPE (value1) == TREE_TYPE (TREE_OPERAND (value1, 0)))
			value1 = TREE_OPERAND (value1, 0);
		    }
		  value1 = fold (value1);

		  /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
		     Strip such NOP_EXPRs.  */
		  if (TREE_CODE (value2) == NOP_EXPR
		      && TREE_TYPE (value2) == TREE_TYPE (TREE_OPERAND (value2, 0)))
		    value2 = TREE_OPERAND (value2, 0);

		  if (TREE_READONLY_DECL_P (value2))
		    {
		      value2 = decl_constant_value (value2);
		      /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
			 Strip such NOP_EXPRs.  */
		      if (TREE_CODE (value2) == NOP_EXPR
			  && TREE_TYPE (value2) == TREE_TYPE (TREE_OPERAND (value2, 0)))
			value2 = TREE_OPERAND (value2, 0);
		    }
		  value2 = fold (value2);


		  if (TREE_CODE (value1) != INTEGER_CST
		      && value1 != error_mark_node)
		    {
		      error ("case label does not reduce to an integer constant");
		      value1 = error_mark_node;
		    }
		  if (TREE_CODE (value2) != INTEGER_CST
		      && value2 != error_mark_node)
		    {
		      error ("case label does not reduce to an integer constant");
		      value2 = error_mark_node;
		    }
		  if (value1 != error_mark_node
		      && value2 != error_mark_node)
		    {
		      tree duplicate;
		      int success = pushcase_range (value1, value2,
						    convert_and_check, label,
						    &duplicate);
		      if (success == 1)
			error ("case label not within a switch statement");
		      else if (success == 2)
			{
			  error ("duplicate (or overlapping) case value");
			  error_with_decl (duplicate, "this is the first entry overlapping that value");
			}
		      else if (success == 3)
			warning ("case value out of range");
		      else if (success == 4)
			warning ("empty range specified");
		      else if (success == 5)
			error ("case label within scope of cleanup or variable array");
		    }
		  define_case_label (label);
		;
    break;}
case 572:
#line 3117 "cp-parse.y"
{
		  tree duplicate;
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
		  int success = pushcase (NULL_TREE, 0, label, &duplicate);
		  if (success == 1)
		    error ("default label not within a switch statement");
		  else if (success == 2)
		    {
		      error ("multiple default labels in one switch");
		      error_with_decl (duplicate, "this is the first default label");
		    }
		  define_case_label (NULL_TREE);
		;
    break;}
case 574:
#line 3133 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  if ( ! expand_exit_something ())
		    error ("break statement not within loop or switch"); ;
    break;}
case 575:
#line 3137 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  if (! expand_continue_loop (0))
		    error ("continue statement not within a loop"); ;
    break;}
case 576:
#line 3141 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (NULL_TREE); ;
    break;}
case 577:
#line 3144 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (yyvsp[-1].ttype);
		  finish_stmt ();
		;
    break;}
case 578:
#line 3149 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  emit_line_note (input_filename, lineno);
		  expand_asm (yyvsp[-2].ttype);
		  finish_stmt ();
		;
    break;}
case 579:
#line 3156 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
					 yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 580:
#line 3165 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
					 yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 581:
#line 3175 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
					 yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 582:
#line 3183 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_computed_goto (yyvsp[-1].ttype); ;
    break;}
case 583:
#line 3186 "cp-parse.y"
{ tree decl;
		  emit_line_note (input_filename, lineno);
		  decl = lookup_label (yyvsp[-1].ttype);
		  TREE_USED (decl) = 1;
		  expand_goto (decl); ;
    break;}
case 584:
#line 3192 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 585:
#line 3194 "cp-parse.y"
{ error ("label must be followed by statement");
		  yyungetc ('}', 0);
		  finish_stmt (); ;
    break;}
case 586:
#line 3198 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 587:
#line 3201 "cp-parse.y"
{ cplus_expand_throw (NULL_TREE); ;
    break;}
case 588:
#line 3202 "cp-parse.y"
{ cplus_expand_throw (yyvsp[-1].ttype); ;
    break;}
case 589:
#line 3204 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 590:
#line 3207 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 591:
#line 3210 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 592:
#line 3213 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 593:
#line 3216 "cp-parse.y"
{ cplus_expand_reraise (yyvsp[-1].ttype);
		  finish_stmt (); ;
    break;}
case 594:
#line 3219 "cp-parse.y"
{
		  tree decl = cplus_expand_end_try (yyvsp[-3].itype);
		  yyvsp[-2].ttype = current_exception_type;
		  yyvsp[0].ttype = current_exception_decl;
		  yyval.ttype = current_exception_object;
		  cplus_expand_start_except (yyvsp[-1].ttype, decl);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0);
		;
    break;}
case 595:
#line 3231 "cp-parse.y"
{
		  tree decls = getdecls ();
		  /* If there is a default exception to handle,
		     handle it here.  */
		  if (yyvsp[-1].ttype)
		    {
		      tree decl = build_decl (CPLUS_CATCH_DECL, NULL_TREE, 0);
		      tree block;

		      pushlevel (1);
		      expand_start_bindings (0);
		      expand_expr (yyvsp[-1].ttype, 0, 0, 0);
		      expand_end_bindings (0, 1, 0);
		      block = poplevel (1, 0, 0);

		      /* This is a catch block.  */
		      TREE_LANG_FLAG_2 (block) = 1;
		      BLOCK_VARS (block) = decl;
		    }

		  expand_end_bindings (decls, decls != 0, 1);
		  poplevel (decls != 0, 1, 0);
		  pop_momentary ();
		  current_exception_type = yyvsp[-5].ttype;
		  current_exception_decl = yyvsp[-3].ttype;
		  current_exception_object = yyvsp[-2].ttype;
		  cplus_expand_end_except (yyvsp[-1].ttype);
		;
    break;}
case 596:
#line 3260 "cp-parse.y"
{
		  cplus_expand_end_try (yyvsp[-1].itype);
		  /* These are the important actions of
		     `cplus_expand_end_except' which we must emulate.  */
		  if (expand_escape_except ())
		    expand_end_except ();
		  expand_end_bindings (0, 0, 1);
		  poplevel (0, 0, 0);
		;
    break;}
case 597:
#line 3270 "cp-parse.y"
{
		  tree decl = cplus_expand_end_try (yyvsp[-2].itype);
		  yyvsp[-1].ttype = current_exception_type;
		  yyvsp[0].ttype = current_exception_decl;
		  yyval.ttype = current_exception_object;
		  cplus_expand_start_except (NULL, decl);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0);
		;
    break;}
case 598:
#line 3282 "cp-parse.y"
{
		  tree decls = getdecls ();
		  /* If there is a default exception to handle,
		     handle it here.  */
		  if (yyvsp[0].ttype)
		    {
		      tree decl = build_decl (CPLUS_CATCH_DECL, NULL_TREE, 0);
		      tree block;

		      pushlevel (1);
		      expand_start_bindings (0);
		      expand_expr (yyvsp[0].ttype, 0, 0, 0);
		      expand_end_bindings (0, 1, 0);
		      block = poplevel (1, 0, 0);

		      /* This is a catch block.  */
		      TREE_LANG_FLAG_2 (block) = 1;
		      BLOCK_VARS (block) = decl;
		    }

		  expand_end_bindings (decls, decls != 0, 1);
		  poplevel (decls != 0, 1, 0);
		  pop_momentary ();
		  current_exception_type = yyvsp[-3].ttype;
		  current_exception_decl = yyvsp[-2].ttype;
		  current_exception_object = yyvsp[-1].ttype;
		  cplus_expand_end_except (yyvsp[0].ttype);
		;
    break;}
case 599:
#line 3311 "cp-parse.y"
{ tree name = get_identifier ("(compiler error)");
		  tree orig_ex_type = current_exception_type;
		  tree orig_ex_decl = current_exception_decl;
		  tree orig_ex_obj = current_exception_object;
		  tree decl = cplus_expand_end_try (yyvsp[-2].itype), decls;

		  /* Start hidden EXCEPT.  */
		  cplus_expand_start_except (name, decl);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0);

		  /* This sets up the reraise.  */
		  cplus_expand_reraise (yyvsp[0].ttype);

		  decls = getdecls ();
		  expand_end_bindings (decls, decls != 0, 1);
		  poplevel (decls != 0, 1, 0);
		  pop_momentary ();
		  current_exception_type = orig_ex_type;
		  current_exception_decl = orig_ex_decl;
		  current_exception_object = orig_ex_obj;
		  /* This will reraise for us.  */
		  cplus_expand_end_except (error_mark_node);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  if (yychar != ';')
		    error ("missing ';' after reraise statement");
		;
    break;}
case 600:
#line 3342 "cp-parse.y"
{ yyerror ("`except' missing after `try' statement");
		  /* Terminate the binding contour started by special
		     code in `.pushlevel'.  Automagically pops off
		     the conditional we started for `try' stmt.  */
		  cplus_expand_end_try (yyvsp[0].itype);
		  expand_end_bindings (0, 0, 1);
		  poplevel (0, 0, 0);
		  pop_momentary ();
		  YYERROR; ;
    break;}
case 601:
#line 3357 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 602:
#line 3362 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 603:
#line 3367 "cp-parse.y"
{
		  yyval.itype = 0;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 604:
#line 3375 "cp-parse.y"
{ tree label;
		do_label:
		  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
		  if (label)
		    expand_label (label);
		;
    break;}
case 605:
#line 3382 "cp-parse.y"
{ goto do_label; ;
    break;}
case 606:
#line 3384 "cp-parse.y"
{ tree label = define_label (input_filename, lineno, yyvsp[0].ttype);
		  if (label)
		    expand_label (label);
		;
    break;}
case 607:
#line 3390 "cp-parse.y"
{ cplus_expand_start_try (0); ;
    break;}
case 609:
#line 3396 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 610:
#line 3401 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 611:
#line 3406 "cp-parse.y"
{
		  yyval.itype = 0;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 613:
#line 3413 "cp-parse.y"
{ cplus_expand_start_try (0); ;
    break;}
case 615:
#line 3417 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 616:
#line 3419 "cp-parse.y"
{
		  tree type = lookup_exception_type (current_class_type, current_class_name, yyvsp[0].ttype);
		  if (type == NULL_TREE)
		    {
		      error ("`%s' is not an exception type",
			     IDENTIFIER_POINTER (TREE_VALUE (yyvsp[0].ttype)));
		      current_exception_type = NULL_TREE;
		      TREE_TYPE (current_exception_object) = error_mark_node;
		    }
		  else
		    {
		      current_exception_type = type;
		      /* In-place union.  */
		      TREE_TYPE (current_exception_object) = type;
		    }
		  yyvsp[0].ttype = cplus_expand_start_catch (yyvsp[0].ttype);
		  pushlevel (1);
		  expand_start_bindings (0);
		;
    break;}
case 617:
#line 3439 "cp-parse.y"
{
		  expand_end_bindings (0, 1, 0);
		  yyvsp[0].ttype = poplevel (1, 0, 0);

		  cplus_expand_end_catch (0);

		  /* Mark this as a catch block.  */
		  TREE_LANG_FLAG_2 (yyvsp[0].ttype) = 1;
		  if (yyvsp[-2].ttype != error_mark_node)
		    {
		      tree decl = build_decl (CPLUS_CATCH_DECL, DECL_NAME (yyvsp[-2].ttype), 0);
		      DECL_RTL (decl) = DECL_RTL (yyvsp[-2].ttype);
		      TREE_CHAIN (decl) = BLOCK_VARS (yyvsp[0].ttype);
		      BLOCK_VARS (yyvsp[0].ttype) = decl;
		    }
		;
    break;}
case 618:
#line 3456 "cp-parse.y"
{
		  if (yyvsp[-1].ttype)
		    error ("duplicate default in exception handler");
		  current_exception_type = NULL_TREE;
		  /* Takes it right out of scope.  */
		  TREE_TYPE (current_exception_object) = error_mark_node;

		  if (! expand_catch_default ())
		    compiler_error ("default catch botch");

		  /* The default exception is handled as the
		     last in the chain of exceptions handled.  */
		  do_pending_stack_adjust ();
		  yyvsp[-1].ttype = make_node (RTL_EXPR);
		  TREE_TYPE (yyvsp[-1].ttype) = void_type_node;
		  start_sequence_for_rtl_expr (yyvsp[-1].ttype);
		;
    break;}
case 619:
#line 3474 "cp-parse.y"
{
		  extern struct rtx_def *get_insns ();
		  do_pending_stack_adjust ();
		  if (! expand_catch (NULL_TREE))
		    compiler_error ("except nesting botch");
		  if (! expand_end_catch ())
		    compiler_error ("except nesting botch");
		  RTL_EXPR_SEQUENCE (yyvsp[-3].ttype) = get_insns ();
		  if (yyvsp[0].ttype)
		    {
		      /* Mark this block as the default catch block.  */
		      TREE_LANG_FLAG_1 (yyvsp[0].ttype) = 1;
		      TREE_LANG_FLAG_2 (yyvsp[0].ttype) = 1;
		    }
		  end_sequence ();
		;
    break;}
case 620:
#line 3494 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 622:
#line 3499 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 623:
#line 3501 "cp-parse.y"
{
		  tree type = groktypename (yyvsp[-2].ttype);
		  current_exception_type = type;
		  /* In-place union.  */
		  if (yyvsp[-1].ttype)
		    {
		      tree tmp;
		      tmp = pushdecl (build_decl (VAR_DECL, yyvsp[-1].ttype, type));
		      current_exception_object =
		          build1 (INDIRECT_REF, type, tmp);
		     }
		  yyvsp[-2].ttype = ansi_expand_start_catch(type);
		  pushlevel (1);
		  expand_start_bindings (0);
		;
    break;}
case 624:
#line 3517 "cp-parse.y"
{
		  expand_end_bindings (0, 1, 0);
		  yyvsp[0].ttype = poplevel (1, 0, 0);

		  cplus_expand_end_catch (0);

		  /* Mark this as a catch block.  */
		  TREE_LANG_FLAG_2 (yyvsp[0].ttype) = 1;
		  if (yyvsp[-4].ttype != error_mark_node)
		    {
		      tree decl = build_decl (CPLUS_CATCH_DECL, DECL_NAME (yyvsp[-4].ttype), 0);
		      DECL_RTL (decl) = DECL_RTL (yyvsp[-4].ttype);
		      TREE_CHAIN (decl) = BLOCK_VARS (yyvsp[0].ttype);
		      BLOCK_VARS (yyvsp[0].ttype) = decl;
		    }
		;
    break;}
case 625:
#line 3537 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 626:
#line 3539 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 627:
#line 3541 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 628:
#line 3546 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 629:
#line 3548 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 630:
#line 3550 "cp-parse.y"
{ yyval.itype = 1; ;
    break;}
case 631:
#line 3552 "cp-parse.y"
{ yyval.itype = -1; ;
    break;}
case 632:
#line 3559 "cp-parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 633:
#line 3561 "cp-parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 634:
#line 3566 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 636:
#line 3569 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 637:
#line 3575 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 640:
#line 3582 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 641:
#line 3587 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 642:
#line 3592 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
    break;}
case 643:
#line 3594 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 644:
#line 3603 "cp-parse.y"
{
		  if (strict_prototype)
		    yyval.ttype = void_list_node;
		  else
		    yyval.ttype = NULL_TREE;
		;
    break;}
case 645:
#line 3610 "cp-parse.y"
{
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 646:
#line 3615 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 647:
#line 3620 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 648:
#line 3624 "cp-parse.y"
{
		  /* ARM $8.2.5 has this as a boxed-off comment.  */
		  if (pedantic)
		    warning ("use of `...' without a first argument is non-portable");
		  yyval.ttype = NULL_TREE;
		;
    break;}
case 649:
#line 3631 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 650:
#line 3635 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 651:
#line 3639 "cp-parse.y"
{
		  /* This helps us recover from really nasty
		     parse errors, for example, a missing right
		     parenthesis.  */
		  yyerror ("possibly missing ')'");
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		  yyungetc (':', 0);
		  yychar = ')';
		;
    break;}
case 652:
#line 3654 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 653:
#line 3656 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 654:
#line 3658 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 655:
#line 3660 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
    break;}
case 656:
#line 3662 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 657:
#line 3664 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
    break;}
case 658:
#line 3685 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype);
		  see_typename (); ;
    break;}
case 659:
#line 3688 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype);
		  see_typename (); ;
    break;}
case 662:
#line 3695 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 663:
#line 3699 "cp-parse.y"
{ see_typename (); ;
    break;}
case 664:
#line 3703 "cp-parse.y"
{ dont_see_typename (); ;
    break;}
case 665:
#line 3722 "cp-parse.y"
{
		  warning ("type specifier omitted for parameter");
		  yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-2].ttype)), yyval.ttype);
		;
    break;}
case 666:
#line 3730 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 667:
#line 3732 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 668:
#line 3734 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 669:
#line 3739 "cp-parse.y"
{ yyval.ttype = void_list_node; ;
    break;}
case 670:
#line 3741 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 671:
#line 3743 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 672:
#line 3745 "cp-parse.y"
{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
    break;}
case 673:
#line 3747 "cp-parse.y"
{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
    break;}
case 674:
#line 3749 "cp-parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 676:
#line 3755 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 678:
#line 3761 "cp-parse.y"
{
  		  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 680:
#line 3770 "cp-parse.y"
{
  		  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 681:
#line 3778 "cp-parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
    break;}
case 682:
#line 3780 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
    break;}
case 683:
#line 3782 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
    break;}
case 684:
#line 3784 "cp-parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
    break;}
case 685:
#line 3786 "cp-parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
    break;}
case 686:
#line 3788 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
    break;}
case 687:
#line 3790 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
    break;}
case 688:
#line 3792 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
    break;}
case 689:
#line 3794 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
    break;}
case 690:
#line 3796 "cp-parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
    break;}
case 691:
#line 3798 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 692:
#line 3800 "cp-parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ;
    break;}
case 693:
#line 3802 "cp-parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ;
    break;}
case 694:
#line 3804 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 695:
#line 3806 "cp-parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
    break;}
case 696:
#line 3808 "cp-parse.y"
{
		  yyval.ttype = ansi_opname [MODIFY_EXPR];
		  if (current_class_type)
		    {
		      TYPE_HAS_ASSIGNMENT (current_class_type) = 1;
		      TYPE_GETS_ASSIGNMENT (current_class_type) = 1;
		    }
		;
    break;}
case 697:
#line 3817 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 698:
#line 3819 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 699:
#line 3821 "cp-parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
    break;}
case 700:
#line 3823 "cp-parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
    break;}
case 701:
#line 3825 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
    break;}
case 702:
#line 3827 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
    break;}
case 703:
#line 3829 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
    break;}
case 704:
#line 3831 "cp-parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ;
    break;}
case 705:
#line 3833 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 706:
#line 3835 "cp-parse.y"
{ yyval.ttype = ansi_opname[COMPONENT_REF];
		  if (current_class_type)
		    {
		      tree t = current_class_type;
		      while (t)
			{
			  TYPE_OVERLOADS_ARROW (t) = 1;
			  t = TYPE_NEXT_VARIANT (t);
			}
		    }
		;
    break;}
case 707:
#line 3847 "cp-parse.y"
{ yyval.ttype = ansi_opname[MEMBER_REF];
		  if (current_class_type)
		    {
		      tree t = current_class_type;
		      while (t)
			{
			  TYPE_OVERLOADS_ARROW (t) = 1;
			  t = TYPE_NEXT_VARIANT (t);
			}
		    }
		;
    break;}
case 708:
#line 3859 "cp-parse.y"
{ yyval.ttype = ansi_opname[CALL_EXPR];
		  if (current_class_type)
		    {
		      tree t = current_class_type;
		      while (t)
			{
			  TYPE_OVERLOADS_CALL_EXPR (t) = 1;
			  t = TYPE_NEXT_VARIANT (t);
			}
		    }
		;
    break;}
case 709:
#line 3871 "cp-parse.y"
{ yyval.ttype = ansi_opname[ARRAY_REF];
		  if (current_class_type)
		    {
		      tree t = current_class_type;
		      while (t)
			{
			  TYPE_OVERLOADS_ARRAY_REF (t) = 1;
			  t = TYPE_NEXT_VARIANT (t);
			}
		    }
		;
    break;}
case 710:
#line 3883 "cp-parse.y"
{
		  yyval.ttype = ansi_opname[NEW_EXPR];
		  if (current_class_type)
		    {
		      tree t = current_class_type;
		      while (t)
			{
			  TREE_GETS_NEW (t) = 1;
			  t = TYPE_NEXT_VARIANT (t);
			}
		    }
		;
    break;}
case 711:
#line 3911 "cp-parse.y"
{
		  yyval.ttype = ansi_opname[DELETE_EXPR];
		  if (current_class_type)
		    {
		      tree t = current_class_type;
		      while (t)
			{
			  TREE_GETS_DELETE (t) = 1;
			  t = TYPE_NEXT_VARIANT (t);
			}
		    }
		;
    break;}
case 712:
#line 3942 "cp-parse.y"
{ yyval.ttype = build1 (TYPE_EXPR, yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 713:
#line 3944 "cp-parse.y"
{ yyval.ttype = ansi_opname[ERROR_MARK]; ;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 480 "/usr/local/lib/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#endif

  /* Now "shift" the result of the reduction.
     Determine what state that goes to,
     based on the state we popped back to
     and the rule number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;

yyerrlab:   /* here on detecting error */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {
	      strcpy(msg, "parse error");

	      if (count < 5)
		{
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)
		      {
			strcat(msg, count == 0 ? ", expecting `" : " or `");
			strcat(msg, yytname[x]);
			strcat(msg, "'");
			count++;
		      }
		}
	      yyerror(msg);
	      free(msg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exceeded");
	}
      else
#endif /* YYERROR_VERBOSE */
	yyerror("parse error");
    }

  goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

  if (yyerrstatus == 3)
    {
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
	YYABORT;

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      yychar = YYEMPTY;
    }

  /* Else will try to reuse lookahead token
     after shifting the error token.  */

  yyerrstatus = 3;		/* Each real token shifted decrements this */

  goto yyerrhandle;

yyerrdefault:  /* current state does not do anything special for the error token. */

#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

  if (yyssp == yyss) YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#ifdef YYLSP_NEEDED
  yylsp--;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "Error: state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

yyerrhandle:

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yyerrdefault;

  yyn += YYTERROR;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
    goto yyerrdefault;

  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;

  if (yyn == YYFINAL)
    YYACCEPT;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting error token, ");
#endif

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  yystate = yyn;
  goto yynewstate;
}
#line 3947 "cp-parse.y"


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.