From 93307a76942c3d0e463af62442eef5a542ebdfb2 Mon Sep 17 00:00:00 2001 From: drl7x Date: Mon, 20 Nov 2000 22:05:53 +0000 Subject: [PATCH] If checking mostly works. Boolean expression are handled. Need to add > or < support. Committing to have a good back up. --- src/Headers/cgrammar_tokens.h | 21 +- src/Headers/constraint.h | 10 + src/Headers/constraintList.h | 8 +- src/Headers/constraintTerm.h | 6 + src/Headers/forwardTypes.h | 2 + src/Headers/lltok.h | 11 + src/Headers/uentry.h | 6 + src/cgrammar.tab.c | 5745 +++++++++++++++++---------------- src/cgrammar.tab.h | 21 +- src/cgrammar.y | 112 +- src/clabstract.c | 23 + src/constraint.c | 140 +- src/constraintGeneration.c | 164 +- src/constraintList.bak.c | 852 ----- src/constraintList.c | 27 +- src/constraintListold.c | 149 - src/constraintResolve.c | 45 +- src/constraintTerm.c | 124 +- src/cscanner.l | 6 + src/exprChecks.c | 47 +- src/lex.yy.c | 1005 +++--- src/sRef.c | 2 +- src/uentry.c | 72 +- 23 files changed, 4161 insertions(+), 4437 deletions(-) delete mode 100644 src/constraintList.bak.c delete mode 100644 src/constraintListold.c diff --git a/src/Headers/cgrammar_tokens.h b/src/Headers/cgrammar_tokens.h index bc701e0..900f5cc 100644 --- a/src/Headers/cgrammar_tokens.h +++ b/src/Headers/cgrammar_tokens.h @@ -241,15 +241,18 @@ typedef union #define QSIGNEDINTEGRALTYPE 429 #define QNULLTERMINATED 430 #define QSETBUFFERSIZE 431 -#define QSETSTRINGLENGTH 432 -#define QTESTINRANGE 433 -#define IDENTIFIER 434 -#define NEW_IDENTIFIER 435 -#define TYPE_NAME_OR_ID 436 -#define CCONSTANT 437 -#define ITER_NAME 438 -#define ITER_ENDNAME 439 -#define TYPE_NAME 440 +#define QBUFFERCONSTRAINT 432 +#define QSETSTRINGLENGTH 433 +#define QMAXSET 434 +#define QMAXREAD 435 +#define QTESTINRANGE 436 +#define IDENTIFIER 437 +#define NEW_IDENTIFIER 438 +#define TYPE_NAME_OR_ID 439 +#define CCONSTANT 440 +#define ITER_NAME 441 +#define ITER_ENDNAME 442 +#define TYPE_NAME 443 extern YYSTYPE yylval; diff --git a/src/Headers/constraint.h b/src/Headers/constraint.h index 4336289..d8e1b50 100644 --- a/src/Headers/constraint.h +++ b/src/Headers/constraint.h @@ -23,6 +23,10 @@ abst_typedef struct _constraintTerm * constraintTerm; //constraint constraint_create (exprNode e1, exprNode e2, arithType restriction, constraintType kind); + +constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant); + + constraint constraint_createReadSafe (exprNode p_e1, exprNode p_e2); constraint constraint_makeInc_Op (exprNode p_e1); @@ -76,6 +80,12 @@ constraint constraint_makeEnsureEqual (exprNode e1, exprNode e2, fileloc sequenc constraint constraint_makeMaxSetSideEffectPostIncrement (exprNode e, fileloc sequencePoint); +constraint constraint_preserveOrig (constraint c); +constraint constraint_doSRefFixBaseParam (constraint precondition, + exprNodeList arglist); + +cstring constraint_printDetailed (constraint c); + /*@=czechfcns*/ #warning take this out #include "constraintList.h" diff --git a/src/Headers/constraintList.h b/src/Headers/constraintList.h index d0eaaea..b71370b 100644 --- a/src/Headers/constraintList.h +++ b/src/Headers/constraintList.h @@ -7,12 +7,15 @@ typedef /*@only@*/ constraint o_constraint; -abst_typedef struct _constraintList +struct _constraintList { int nelements; int nspace; /*@reldef@*/ /*@relnull@*/ o_constraint *elements; -} *constraintList; +} ; + +/*@constant null constraintList constraintList_undefined;@*/ +# define constraintList_undefined ((constraintList) 0) /*@iter constraintList_elements (sef constraintList x, yield exposed constraint el); @*/ # define constraintList_elements(x, m_el) \ @@ -49,6 +52,7 @@ extern constraintList constraintList_preserveOrig (constraintList c); /*@constant int constraintListBASESIZE;@*/ +extern constraintList constraintList_doSRefFixBaseParam (constraintList preconditions, exprNodeList arglist); # define constraintListBASESIZE SMALLBASESIZE diff --git a/src/Headers/constraintTerm.h b/src/Headers/constraintTerm.h index 9eaf7e8..95ab19a 100644 --- a/src/Headers/constraintTerm.h +++ b/src/Headers/constraintTerm.h @@ -39,6 +39,12 @@ bool constraintTerm_isIntLiteral (constraintTerm term); cstring constraintTerm_print (constraintTerm term); +constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s); + +bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2); + + +constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist); #endif diff --git a/src/Headers/forwardTypes.h b/src/Headers/forwardTypes.h index 5d575f5..d341778 100644 --- a/src/Headers/forwardTypes.h +++ b/src/Headers/forwardTypes.h @@ -22,6 +22,8 @@ abst_typedef /*@null@*/ struct __fileloc *fileloc; abst_typedef /*@null@*/ struct _environmentTable *environmentTable; abst_typedef /*@null@*/ struct _constraint *constraint; +abst_typedef struct _constraintList *constraintList; + /* DRL modified 9 26 00 */ diff --git a/src/Headers/lltok.h b/src/Headers/lltok.h index 837aa98..4cace03 100644 --- a/src/Headers/lltok.h +++ b/src/Headers/lltok.h @@ -32,6 +32,17 @@ extern bool lltok_isSemi (lltok p_tok); /* DRL added 10/23/2000 for boolean stuff */ extern bool lltok_isEq_Op (lltok tok); + +extern bool lltok_isMult (lltok tok); + +extern bool lltok_isInc_Op (lltok tok); + +extern bool lltok_isAnd_Op (lltok tok); + +extern bool lltok_isOr_Op (lltok tok); + +extern bool lltok_isNot_Op (lltok tok); + # else # error "Multiple include" # endif diff --git a/src/Headers/uentry.h b/src/Headers/uentry.h index fcb6788..515e4fe 100644 --- a/src/Headers/uentry.h +++ b/src/Headers/uentry.h @@ -103,6 +103,9 @@ typedef struct _ufinfo /*@dependent@*/ uentryList defparams; bool hasGlobs BOOLBITS; bool hasMods BOOLBITS; + + constraintList preconditions; + } *ufinfo ; typedef struct _uiinfo @@ -628,6 +631,9 @@ extern void uentry_tallyAnnots (uentry u, ancontext kind); /* start modifications */ extern void uentry_setBufferSize (uentry p_e, exprNode p_cconstant); +/*drl7x*/ +constraintList uentry_getFcnPreconditions (uentry ue); + /*end mods*/ # else # error "Multiple include" diff --git a/src/cgrammar.tab.c b/src/cgrammar.tab.c index e8e34b0..137c76f 100644 --- a/src/cgrammar.tab.c +++ b/src/cgrammar.tab.c @@ -179,15 +179,18 @@ #define QSIGNEDINTEGRALTYPE 429 #define QNULLTERMINATED 430 #define QSETBUFFERSIZE 431 -#define QSETSTRINGLENGTH 432 -#define QTESTINRANGE 433 -#define IDENTIFIER 434 -#define NEW_IDENTIFIER 435 -#define TYPE_NAME_OR_ID 436 -#define CCONSTANT 437 -#define ITER_NAME 438 -#define ITER_ENDNAME 439 -#define TYPE_NAME 440 +#define QBUFFERCONSTRAINT 432 +#define QSETSTRINGLENGTH 433 +#define QMAXSET 434 +#define QMAXREAD 435 +#define QTESTINRANGE 436 +#define IDENTIFIER 437 +#define NEW_IDENTIFIER 438 +#define TYPE_NAME_OR_ID 439 +#define CCONSTANT 440 +#define ITER_NAME 441 +#define ITER_ENDNAME 442 +#define TYPE_NAME 443 #line 19 "cgrammar.y" @@ -283,11 +286,11 @@ typedef union -#define YYFINAL 1182 +#define YYFINAL 1209 #define YYFLAG -32768 -#define YYNTBASE 186 +#define YYNTBASE 189 -#define YYTRANSLATE(x) ((unsigned)(x) <= 440 ? yytranslate[x] : 418) +#define YYTRANSLATE(x) ((unsigned)(x) <= 443 ? yytranslate[x] : 430) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -333,7 +336,8 @@ static const short yytranslate[] = { 0, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185 + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188 }; #if YYDEBUG != 0 @@ -342,272 +346,279 @@ static const short yyprhs[] = { 0, 21, 23, 32, 44, 45, 51, 53, 57, 59, 62, 64, 71, 75, 82, 83, 91, 92, 101, 103, 110, 114, 121, 122, 129, 130, 138, 139, 140, 151, 155, - 159, 163, 166, 168, 169, 172, 174, 176, 177, 183, - 184, 185, 188, 190, 193, 195, 198, 200, 203, 205, - 209, 212, 214, 216, 218, 220, 222, 224, 226, 227, - 230, 231, 238, 239, 246, 248, 250, 251, 252, 258, - 259, 265, 267, 269, 270, 272, 273, 274, 278, 279, - 283, 285, 287, 289, 291, 293, 295, 297, 299, 301, - 303, 305, 307, 309, 311, 313, 315, 317, 318, 326, - 327, 336, 338, 342, 343, 347, 348, 352, 355, 359, - 362, 365, 367, 369, 371, 375, 380, 383, 387, 391, - 395, 397, 399, 401, 405, 407, 409, 413, 418, 421, - 425, 429, 433, 435, 439, 441, 443, 445, 449, 451, - 453, 455, 460, 464, 469, 476, 482, 488, 491, 494, - 496, 500, 502, 505, 508, 511, 514, 517, 520, 523, - 526, 528, 530, 534, 536, 546, 547, 551, 556, 559, - 564, 567, 569, 574, 576, 580, 584, 588, 590, 594, - 598, 600, 604, 608, 610, 614, 618, 622, 626, 628, - 632, 636, 638, 642, 644, 648, 650, 654, 656, 657, - 662, 664, 665, 670, 672, 673, 674, 682, 684, 688, - 692, 696, 700, 704, 708, 712, 716, 720, 724, 728, - 730, 734, 735, 737, 739, 741, 743, 745, 749, 750, - 760, 761, 773, 776, 777, 784, 785, 793, 798, 803, - 804, 805, 808, 810, 815, 816, 821, 823, 827, 832, - 834, 838, 840, 842, 844, 846, 848, 851, 854, 857, - 860, 863, 866, 869, 872, 875, 878, 881, 884, 887, - 890, 893, 896, 899, 902, 905, 908, 911, 914, 917, - 920, 923, 926, 929, 932, 935, 938, 941, 944, 947, - 950, 953, 956, 959, 962, 965, 968, 971, 974, 977, - 980, 983, 986, 988, 990, 992, 994, 997, 1000, 1003, - 1006, 1009, 1012, 1015, 1018, 1021, 1024, 1027, 1030, 1033, - 1036, 1040, 1042, 1047, 1049, 1053, 1056, 1059, 1062, 1063, - 1065, 1066, 1067, 1079, 1080, 1081, 1093, 1100, 1107, 1108, - 1109, 1120, 1121, 1122, 1133, 1139, 1145, 1150, 1155, 1156, - 1158, 1160, 1163, 1169, 1173, 1176, 1181, 1183, 1187, 1192, - 1199, 1200, 1209, 1214, 1216, 1220, 1223, 1225, 1230, 1232, - 1234, 1237, 1240, 1242, 1245, 1247, 1250, 1252, 1254, 1256, - 1259, 1261, 1264, 1267, 1271, 1273, 1277, 1279, 1283, 1285, - 1287, 1291, 1292, 1295, 1296, 1301, 1306, 1308, 1310, 1313, - 1315, 1317, 1320, 1321, 1323, 1329, 1332, 1336, 1340, 1345, - 1349, 1354, 1359, 1365, 1367, 1369, 1371, 1373, 1375, 1377, - 1379, 1381, 1383, 1385, 1390, 1395, 1400, 1403, 1405, 1407, - 1409, 1412, 1415, 1423, 1430, 1433, 1434, 1435, 1446, 1447, - 1454, 1456, 1458, 1460, 1462, 1465, 1467, 1469, 1471, 1473, - 1475, 1477, 1479, 1483, 1485, 1488, 1491, 1494, 1496, 1498, - 1500, 1502, 1504, 1506, 1508, 1510, 1512, 1514, 1518, 1520, - 1522, 1525, 1528, 1529, 1534, 1535, 1541, 1542, 1546, 1547, - 1552, 1556, 1559, 1563, 1564, 1565, 1566, 1567, 1568, 1570, - 1573, 1576, 1580, 1583, 1587, 1591, 1596, 1599, 1602, 1606, - 1610, 1615, 1617, 1620, 1622, 1625, 1627, 1630, 1632, 1635, - 1637, 1640, 1642, 1647, 1650, 1651, 1657, 1658, 1665, 1670, - 1675, 1676, 1677, 1688, 1690, 1691, 1696, 1698, 1700, 1702, - 1704, 1706, 1710, 1712, 1717, 1721, 1726, 1733, 1739, 1745, - 1748, 1751, 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1774, - 1777, 1779, 1781, 1786, 1788, 1792, 1796, 1800, 1802, 1806, - 1810, 1812, 1816, 1820, 1822, 1826, 1830, 1834, 1838, 1840, - 1844, 1848, 1850, 1854, 1856, 1860, 1862, 1866, 1868, 1872, - 1874, 1878, 1880, 1881, 1882, 1890, 1892, 1896, 1900, 1904, - 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1938, 1939, - 1941, 1944, 1952, 1955, 1958, 1966, 1973, 1976, 1980, 1983, - 1987, 1990, 1994, 1998, 2002, 2006, 2009, 2013, 2014, 2016, - 2018, 2020, 2022, 2024, 2026, 2028, 2030 + 159, 163, 166, 168, 169, 172, 173, 176, 178, 179, + 184, 185, 188, 190, 195, 197, 199, 201, 203, 205, + 207, 212, 218, 220, 222, 224, 226, 228, 230, 231, + 234, 235, 238, 240, 243, 245, 248, 250, 253, 255, + 259, 262, 264, 266, 268, 270, 272, 274, 276, 277, + 280, 281, 288, 289, 296, 298, 300, 301, 302, 308, + 309, 315, 317, 319, 320, 322, 323, 324, 328, 329, + 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, + 353, 355, 357, 359, 361, 363, 365, 367, 368, 376, + 377, 386, 388, 392, 393, 397, 398, 402, 405, 409, + 412, 415, 417, 419, 421, 425, 430, 433, 437, 441, + 445, 447, 449, 451, 455, 457, 459, 463, 468, 471, + 475, 479, 483, 485, 489, 491, 493, 495, 499, 501, + 503, 505, 510, 514, 519, 526, 532, 538, 541, 544, + 546, 550, 552, 555, 558, 561, 564, 567, 570, 573, + 576, 578, 580, 584, 586, 596, 597, 601, 606, 609, + 614, 617, 619, 624, 626, 630, 634, 638, 640, 644, + 648, 650, 654, 658, 660, 664, 668, 672, 676, 678, + 682, 686, 688, 692, 694, 698, 700, 704, 706, 707, + 712, 714, 715, 720, 722, 723, 724, 732, 734, 738, + 742, 746, 750, 754, 758, 762, 766, 770, 774, 778, + 780, 784, 785, 787, 789, 791, 793, 795, 799, 800, + 810, 811, 823, 826, 827, 834, 835, 843, 848, 853, + 854, 855, 858, 860, 865, 866, 871, 873, 877, 882, + 884, 888, 890, 892, 894, 896, 898, 901, 904, 907, + 910, 913, 916, 919, 922, 925, 928, 931, 934, 937, + 940, 943, 946, 949, 952, 955, 958, 961, 964, 967, + 970, 973, 976, 979, 982, 985, 988, 991, 994, 997, + 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021, 1024, 1027, + 1030, 1033, 1036, 1038, 1040, 1042, 1044, 1047, 1050, 1053, + 1056, 1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083, + 1086, 1090, 1092, 1097, 1099, 1103, 1106, 1109, 1112, 1113, + 1115, 1116, 1117, 1129, 1130, 1131, 1143, 1150, 1157, 1158, + 1159, 1170, 1171, 1172, 1183, 1189, 1195, 1200, 1205, 1206, + 1208, 1210, 1213, 1219, 1223, 1226, 1231, 1233, 1237, 1242, + 1249, 1250, 1259, 1264, 1266, 1270, 1273, 1275, 1280, 1282, + 1284, 1287, 1290, 1292, 1295, 1297, 1300, 1302, 1304, 1306, + 1309, 1311, 1314, 1317, 1321, 1323, 1327, 1329, 1333, 1335, + 1337, 1341, 1342, 1345, 1346, 1351, 1356, 1358, 1360, 1363, + 1365, 1367, 1370, 1371, 1373, 1379, 1382, 1386, 1390, 1395, + 1399, 1404, 1409, 1415, 1417, 1419, 1421, 1423, 1425, 1427, + 1429, 1431, 1433, 1435, 1440, 1445, 1450, 1453, 1455, 1457, + 1459, 1462, 1465, 1473, 1480, 1483, 1484, 1485, 1496, 1497, + 1504, 1506, 1508, 1510, 1512, 1515, 1517, 1519, 1521, 1523, + 1525, 1527, 1529, 1533, 1535, 1538, 1541, 1544, 1546, 1548, + 1550, 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1568, 1570, + 1572, 1575, 1578, 1579, 1584, 1585, 1591, 1592, 1596, 1597, + 1602, 1606, 1609, 1613, 1614, 1615, 1616, 1617, 1618, 1620, + 1623, 1626, 1630, 1633, 1637, 1641, 1646, 1649, 1652, 1656, + 1660, 1665, 1667, 1670, 1672, 1675, 1677, 1680, 1682, 1685, + 1687, 1690, 1692, 1697, 1700, 1701, 1707, 1708, 1715, 1720, + 1725, 1726, 1727, 1738, 1740, 1741, 1746, 1748, 1750, 1752, + 1754, 1756, 1760, 1762, 1767, 1771, 1776, 1783, 1789, 1795, + 1798, 1801, 1803, 1806, 1809, 1812, 1815, 1818, 1821, 1824, + 1827, 1829, 1831, 1836, 1838, 1842, 1846, 1850, 1852, 1856, + 1860, 1862, 1866, 1870, 1872, 1876, 1880, 1884, 1888, 1890, + 1894, 1898, 1900, 1904, 1906, 1910, 1912, 1916, 1918, 1922, + 1924, 1928, 1930, 1931, 1932, 1940, 1942, 1946, 1950, 1954, + 1958, 1962, 1966, 1970, 1974, 1978, 1982, 1986, 1988, 1989, + 1991, 1994, 2002, 2005, 2008, 2016, 2023, 2026, 2030, 2033, + 2037, 2040, 2044, 2048, 2052, 2056, 2059, 2063, 2064, 2066, + 2068, 2070, 2072, 2074, 2076, 2078, 2080 }; static const short yyrhs[] = { -1, - 187, 0, 188, 0, 187, 188, 0, 244, 414, 0, - 189, 0, 190, 0, 200, 0, 203, 0, 281, 0, - 1, 0, 75, 301, 314, 324, 314, 414, 289, 88, - 0, 75, 301, 314, 324, 314, 23, 289, 294, 293, - 414, 88, 0, 0, 76, 191, 192, 414, 88, 0, - 193, 0, 301, 314, 193, 0, 197, 0, 328, 197, - 0, 416, 0, 289, 24, 314, 324, 289, 25, 0, - 194, 26, 27, 0, 194, 26, 289, 280, 27, 314, - 0, 0, 194, 290, 24, 25, 195, 205, 207, 0, - 0, 194, 290, 24, 325, 25, 196, 205, 207, 0, - 416, 0, 289, 24, 314, 193, 289, 25, 0, 197, - 26, 27, 0, 197, 26, 289, 280, 27, 314, 0, - 0, 197, 290, 24, 25, 198, 211, 0, 0, 197, - 290, 24, 325, 25, 199, 211, 0, 0, 0, 77, - 416, 24, 325, 25, 201, 211, 202, 414, 88, 0, - 89, 355, 92, 0, 90, 342, 92, 0, 91, 343, - 92, 0, 89, 92, 0, 240, 0, 0, 206, 213, - 0, 208, 0, 209, 0, 0, 210, 176, 415, 182, - 88, 0, 0, 0, 212, 214, 0, 221, 0, 215, - 221, 0, 224, 0, 215, 224, 0, 237, 0, 237, - 215, 0, 217, 0, 216, 21, 217, 0, 220, 218, - 0, 415, 0, 180, 0, 86, 0, 87, 0, 116, - 0, 117, 0, 130, 0, 0, 219, 220, 0, 0, - 72, 222, 375, 414, 88, 227, 0, 0, 72, 223, - 216, 414, 88, 227, 0, 74, 0, 228, 0, 0, - 0, 72, 225, 375, 414, 227, 0, 0, 72, 226, - 216, 414, 227, 0, 74, 0, 230, 0, 0, 228, - 0, 0, 0, 73, 229, 245, 0, 0, 73, 231, - 246, 0, 78, 0, 79, 0, 80, 0, 81, 0, + 190, 0, 191, 0, 190, 191, 0, 256, 426, 0, + 192, 0, 193, 0, 203, 0, 206, 0, 293, 0, + 1, 0, 75, 313, 326, 336, 326, 426, 301, 88, + 0, 75, 313, 326, 336, 326, 23, 301, 306, 305, + 426, 88, 0, 0, 76, 194, 195, 426, 88, 0, + 196, 0, 313, 326, 196, 0, 200, 0, 340, 200, + 0, 428, 0, 301, 24, 326, 336, 301, 25, 0, + 197, 26, 27, 0, 197, 26, 301, 292, 27, 326, + 0, 0, 197, 302, 24, 25, 198, 208, 210, 0, + 0, 197, 302, 24, 337, 25, 199, 208, 210, 0, + 428, 0, 301, 24, 326, 196, 301, 25, 0, 200, + 26, 27, 0, 200, 26, 301, 292, 27, 326, 0, + 0, 200, 302, 24, 25, 201, 223, 0, 0, 200, + 302, 24, 337, 25, 202, 223, 0, 0, 0, 77, + 428, 24, 337, 25, 204, 223, 205, 426, 88, 0, + 89, 367, 92, 0, 90, 354, 92, 0, 91, 355, + 92, 0, 89, 92, 0, 252, 0, 0, 209, 225, + 0, 0, 211, 212, 0, 213, 0, 0, 214, 177, + 215, 88, 0, 0, 216, 215, 0, 216, 0, 219, + 218, 219, 18, 0, 179, 0, 180, 0, 52, 0, + 51, 0, 53, 0, 220, 0, 221, 24, 219, 25, + 0, 24, 219, 222, 219, 25, 0, 427, 0, 183, + 0, 185, 0, 217, 0, 33, 0, 32, 0, 0, + 0, 226, 0, 0, 224, 226, 0, 233, 0, 227, + 233, 0, 236, 0, 227, 236, 0, 249, 0, 249, + 227, 0, 229, 0, 228, 21, 229, 0, 232, 230, + 0, 427, 0, 183, 0, 86, 0, 87, 0, 116, + 0, 117, 0, 130, 0, 0, 231, 232, 0, 0, + 72, 234, 387, 426, 88, 239, 0, 0, 72, 235, + 228, 426, 88, 239, 0, 74, 0, 240, 0, 0, + 0, 72, 237, 387, 426, 239, 0, 0, 72, 238, + 228, 426, 239, 0, 74, 0, 242, 0, 0, 240, + 0, 0, 0, 73, 241, 257, 0, 0, 73, 243, + 258, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 88, 0, 88, 0, 83, 0, 84, 0, 119, 0, 137, 0, 135, 0, 133, 0, 132, 0, - 121, 0, 138, 0, 150, 0, 0, 232, 314, 238, - 251, 414, 234, 289, 0, 0, 235, 314, 236, 239, - 251, 414, 233, 289, 0, 324, 0, 301, 314, 324, - 0, 0, 19, 242, 371, 0, 0, 375, 243, 364, - 0, 204, 241, 0, 249, 414, 88, 0, 414, 88, - 0, 249, 414, 0, 414, 0, 415, 0, 180, 0, - 247, 26, 27, 0, 247, 26, 248, 27, 0, 34, - 247, 0, 24, 247, 25, 0, 247, 28, 416, 0, - 247, 44, 416, 0, 247, 0, 182, 0, 247, 0, - 249, 21, 247, 0, 415, 0, 180, 0, 250, 26, - 27, 0, 250, 26, 248, 27, 0, 34, 250, 0, - 24, 250, 25, 0, 250, 28, 416, 0, 250, 44, - 416, 0, 250, 0, 251, 21, 250, 0, 415, 0, - 180, 0, 182, 0, 24, 278, 25, 0, 181, 0, - 111, 0, 252, 0, 253, 26, 278, 27, 0, 253, - 24, 25, 0, 253, 24, 254, 25, 0, 70, 24, - 277, 21, 336, 25, 0, 253, 314, 28, 416, 289, - 0, 253, 314, 44, 416, 289, 0, 253, 47, 0, - 253, 48, 0, 277, 0, 254, 21, 277, 0, 253, - 0, 47, 255, 0, 48, 255, 0, 29, 261, 0, - 34, 261, 0, 33, 261, 0, 32, 261, 0, 31, - 261, 0, 30, 261, 0, 258, 0, 257, 0, 256, - 28, 416, 0, 416, 0, 46, 289, 24, 336, 314, - 21, 256, 25, 289, 0, 0, 289, 259, 260, 0, - 42, 24, 336, 25, 0, 42, 255, 0, 43, 24, - 336, 25, 0, 43, 255, 0, 255, 0, 24, 336, - 25, 261, 0, 261, 0, 262, 34, 261, 0, 262, - 35, 261, 0, 262, 36, 261, 0, 262, 0, 263, - 33, 262, 0, 263, 32, 262, 0, 263, 0, 264, - 49, 263, 0, 264, 50, 263, 0, 264, 0, 265, - 37, 264, 0, 265, 38, 264, 0, 265, 51, 264, - 0, 265, 52, 264, 0, 265, 0, 266, 53, 265, - 0, 266, 54, 265, 0, 266, 0, 267, 29, 266, - 0, 267, 0, 268, 39, 267, 0, 268, 0, 269, - 40, 268, 0, 269, 0, 0, 270, 55, 271, 269, - 0, 270, 0, 0, 272, 56, 273, 270, 0, 272, - 0, 0, 0, 272, 41, 275, 278, 22, 276, 274, - 0, 274, 0, 255, 23, 277, 0, 255, 57, 277, - 0, 255, 58, 277, 0, 255, 59, 277, 0, 255, - 60, 277, 0, 255, 61, 277, 0, 255, 62, 277, - 0, 255, 63, 277, 0, 255, 64, 277, 0, 255, - 65, 277, 0, 255, 66, 277, 0, 277, 0, 278, - 21, 277, 0, 0, 278, 0, 274, 0, 282, 0, - 71, 0, 287, 0, 301, 289, 18, 0, 0, 301, - 314, 324, 314, 283, 289, 293, 18, 289, 0, 0, - 301, 314, 324, 314, 23, 284, 289, 294, 293, 18, - 289, 0, 324, 314, 0, 0, 324, 314, 23, 286, - 289, 294, 0, 0, 45, 301, 288, 314, 291, 289, - 18, 0, 45, 301, 289, 18, 0, 45, 291, 289, - 18, 0, 0, 0, 292, 289, 0, 285, 0, 291, - 21, 314, 285, 0, 0, 293, 21, 314, 285, 0, - 277, 0, 19, 295, 20, 0, 19, 295, 21, 20, - 0, 294, 0, 295, 21, 294, 0, 112, 0, 110, - 0, 113, 0, 114, 0, 115, 0, 108, 289, 0, - 109, 289, 0, 116, 289, 0, 117, 289, 0, 130, - 289, 0, 131, 289, 0, 132, 289, 0, 133, 289, - 0, 118, 289, 0, 120, 289, 0, 119, 289, 0, - 128, 289, 0, 129, 289, 0, 121, 289, 0, 123, - 289, 0, 139, 289, 0, 140, 289, 0, 142, 289, - 0, 143, 289, 0, 141, 289, 0, 136, 289, 0, - 151, 289, 0, 134, 289, 0, 135, 289, 0, 137, - 289, 0, 124, 289, 0, 127, 289, 0, 125, 289, - 0, 126, 289, 0, 156, 289, 0, 157, 289, 0, - 148, 289, 0, 158, 289, 0, 149, 289, 0, 152, - 289, 0, 153, 289, 0, 154, 289, 0, 155, 289, - 0, 150, 289, 0, 159, 289, 0, 160, 289, 0, - 163, 289, 0, 164, 289, 0, 161, 289, 0, 162, - 289, 0, 175, 289, 0, 147, 0, 144, 0, 145, - 0, 146, 0, 165, 314, 0, 167, 314, 0, 166, - 314, 0, 168, 314, 0, 169, 314, 0, 170, 314, - 0, 171, 314, 0, 172, 314, 0, 173, 314, 0, - 174, 314, 0, 417, 314, 0, 305, 314, 0, 319, - 314, 0, 298, 314, 0, 289, 301, 289, 0, 303, - 0, 303, 85, 302, 88, 0, 336, 0, 336, 21, - 302, 0, 296, 304, 0, 297, 304, 0, 299, 304, - 0, 0, 301, 0, 0, 0, 314, 67, 416, 289, - 19, 306, 368, 315, 369, 307, 20, 0, 0, 0, - 314, 68, 416, 289, 19, 308, 368, 315, 369, 309, - 20, 0, 314, 67, 416, 289, 19, 20, 0, 314, - 68, 416, 289, 19, 20, 0, 0, 0, 314, 67, - 289, 19, 310, 368, 315, 369, 311, 20, 0, 0, - 0, 314, 68, 289, 19, 312, 368, 315, 369, 313, - 20, 0, 314, 67, 289, 19, 20, 0, 314, 68, - 289, 19, 20, 0, 314, 67, 416, 314, 0, 314, - 68, 416, 314, 0, 0, 316, 0, 203, 0, 315, - 316, 0, 301, 314, 317, 289, 18, 0, 301, 289, - 18, 0, 318, 314, 0, 317, 21, 318, 314, 0, - 324, 0, 22, 289, 280, 0, 324, 22, 289, 280, - 0, 314, 69, 19, 321, 20, 289, 0, 0, 314, - 69, 416, 19, 320, 321, 20, 289, 0, 314, 69, - 416, 289, 0, 322, 0, 321, 21, 322, 0, 321, - 21, 0, 416, 0, 416, 23, 289, 280, 0, 194, - 0, 338, 0, 328, 185, 0, 328, 323, 0, 194, - 0, 328, 194, 0, 331, 0, 314, 329, 0, 108, - 0, 109, 0, 326, 0, 327, 326, 0, 34, 0, - 34, 327, 0, 34, 328, 0, 34, 327, 328, 0, - 330, 0, 330, 21, 5, 0, 416, 0, 330, 21, - 416, 0, 5, 0, 332, 0, 332, 21, 5, 0, - 0, 333, 335, 0, 0, 332, 21, 334, 335, 0, - 289, 301, 323, 289, 0, 416, 0, 300, 0, 300, - 337, 0, 328, 0, 339, 0, 328, 339, 0, 0, - 339, 0, 289, 24, 314, 337, 25, 0, 26, 27, - 0, 26, 280, 27, 0, 339, 26, 27, 0, 339, - 26, 280, 27, 0, 289, 24, 25, 0, 289, 24, - 331, 25, 0, 339, 289, 24, 25, 0, 339, 289, - 24, 331, 25, 0, 357, 0, 358, 0, 361, 0, - 364, 0, 377, 0, 380, 0, 411, 0, 385, 0, - 413, 0, 341, 0, 176, 415, 182, 88, 0, 177, - 415, 182, 88, 0, 178, 415, 182, 88, 0, 22, - 416, 0, 344, 0, 342, 0, 351, 0, 344, 351, - 0, 384, 344, 0, 410, 356, 11, 24, 278, 25, - 18, 0, 410, 356, 11, 24, 278, 25, 0, 346, - 351, 0, 0, 0, 13, 24, 279, 18, 279, 18, - 347, 279, 348, 25, 0, 0, 183, 366, 24, 350, - 388, 25, 0, 184, 0, 357, 0, 358, 0, 361, - 0, 353, 375, 0, 353, 0, 354, 0, 377, 0, - 352, 0, 345, 0, 349, 0, 413, 0, 24, 351, - 25, 0, 1, 0, 379, 351, 0, 366, 19, 0, - 370, 20, 0, 356, 0, 374, 0, 357, 0, 358, - 0, 361, 0, 365, 0, 378, 0, 380, 0, 385, - 0, 412, 0, 24, 356, 25, 0, 413, 0, 1, - 0, 416, 22, 0, 107, 340, 0, 0, 6, 280, - 359, 22, 0, 0, 98, 6, 280, 360, 22, 0, - 0, 7, 362, 22, 0, 0, 98, 7, 363, 22, - 0, 24, 364, 25, 0, 366, 372, 0, 366, 373, - 367, 0, 0, 0, 0, 0, 0, 20, 0, 107, - 20, 0, 376, 20, 0, 376, 107, 20, 0, 375, - 20, 0, 375, 107, 20, 0, 375, 376, 20, 0, - 375, 376, 107, 20, 0, 19, 371, 0, 19, 20, - 0, 19, 374, 20, 0, 19, 375, 20, 0, 19, - 375, 376, 20, 0, 356, 0, 374, 356, 0, 281, - 0, 375, 281, 0, 340, 0, 376, 340, 0, 18, - 0, 278, 18, 0, 18, 0, 278, 18, 0, 278, - 0, 8, 24, 278, 25, 0, 379, 340, 0, 0, - 379, 340, 9, 381, 340, 0, 0, 10, 24, 278, - 382, 25, 340, 0, 11, 24, 278, 25, 0, 11, - 24, 278, 25, 0, 0, 0, 183, 386, 366, 24, - 387, 388, 25, 364, 409, 367, 0, 390, 0, 0, - 388, 389, 21, 390, 0, 408, 0, 415, 0, 181, - 0, 180, 0, 182, 0, 24, 278, 25, 0, 391, - 0, 253, 26, 278, 27, 0, 253, 24, 25, 0, - 253, 24, 254, 25, 0, 70, 24, 277, 21, 336, - 25, 0, 253, 314, 28, 416, 289, 0, 253, 314, - 44, 416, 289, 0, 253, 47, 0, 253, 48, 0, - 392, 0, 47, 255, 0, 48, 255, 0, 29, 261, - 0, 34, 261, 0, 33, 261, 0, 32, 261, 0, - 31, 261, 0, 30, 261, 0, 258, 0, 393, 0, - 24, 336, 25, 261, 0, 394, 0, 262, 34, 261, - 0, 262, 35, 261, 0, 262, 36, 261, 0, 395, - 0, 263, 33, 262, 0, 263, 32, 262, 0, 396, - 0, 264, 49, 263, 0, 264, 50, 263, 0, 397, - 0, 265, 37, 264, 0, 265, 38, 264, 0, 265, - 51, 264, 0, 265, 52, 264, 0, 398, 0, 266, - 53, 265, 0, 266, 54, 265, 0, 399, 0, 267, - 29, 266, 0, 400, 0, 268, 39, 267, 0, 401, - 0, 269, 40, 268, 0, 402, 0, 270, 55, 269, - 0, 403, 0, 272, 56, 270, 0, 404, 0, 0, - 0, 272, 41, 406, 278, 22, 407, 274, 0, 405, - 0, 255, 23, 277, 0, 255, 57, 277, 0, 255, - 58, 277, 0, 255, 59, 277, 0, 255, 60, 277, - 0, 255, 61, 277, 0, 255, 62, 277, 0, 255, - 63, 277, 0, 255, 64, 277, 0, 255, 65, 277, - 0, 255, 66, 277, 0, 184, 0, 0, 12, 0, - 383, 340, 0, 410, 340, 11, 24, 278, 25, 18, - 0, 346, 340, 0, 383, 356, 0, 410, 356, 11, - 24, 278, 25, 18, 0, 410, 356, 11, 24, 278, - 25, 0, 346, 356, 0, 14, 416, 18, 0, 15, + 121, 0, 138, 0, 150, 0, 0, 244, 326, 250, + 263, 426, 246, 301, 0, 0, 247, 326, 248, 251, + 263, 426, 245, 301, 0, 336, 0, 313, 326, 336, + 0, 0, 19, 254, 383, 0, 0, 387, 255, 376, + 0, 207, 253, 0, 261, 426, 88, 0, 426, 88, + 0, 261, 426, 0, 426, 0, 427, 0, 183, 0, + 259, 26, 27, 0, 259, 26, 260, 27, 0, 34, + 259, 0, 24, 259, 25, 0, 259, 28, 428, 0, + 259, 44, 428, 0, 259, 0, 185, 0, 259, 0, + 261, 21, 259, 0, 427, 0, 183, 0, 262, 26, + 27, 0, 262, 26, 260, 27, 0, 34, 262, 0, + 24, 262, 25, 0, 262, 28, 428, 0, 262, 44, + 428, 0, 262, 0, 263, 21, 262, 0, 427, 0, + 183, 0, 185, 0, 24, 290, 25, 0, 184, 0, + 111, 0, 264, 0, 265, 26, 290, 27, 0, 265, + 24, 25, 0, 265, 24, 266, 25, 0, 70, 24, + 289, 21, 348, 25, 0, 265, 326, 28, 428, 301, + 0, 265, 326, 44, 428, 301, 0, 265, 47, 0, + 265, 48, 0, 289, 0, 266, 21, 289, 0, 265, + 0, 47, 267, 0, 48, 267, 0, 29, 273, 0, + 34, 273, 0, 33, 273, 0, 32, 273, 0, 31, + 273, 0, 30, 273, 0, 270, 0, 269, 0, 268, + 28, 428, 0, 428, 0, 46, 301, 24, 348, 326, + 21, 268, 25, 301, 0, 0, 301, 271, 272, 0, + 42, 24, 348, 25, 0, 42, 267, 0, 43, 24, + 348, 25, 0, 43, 267, 0, 267, 0, 24, 348, + 25, 273, 0, 273, 0, 274, 34, 273, 0, 274, + 35, 273, 0, 274, 36, 273, 0, 274, 0, 275, + 33, 274, 0, 275, 32, 274, 0, 275, 0, 276, + 49, 275, 0, 276, 50, 275, 0, 276, 0, 277, + 37, 276, 0, 277, 38, 276, 0, 277, 51, 276, + 0, 277, 52, 276, 0, 277, 0, 278, 53, 277, + 0, 278, 54, 277, 0, 278, 0, 279, 29, 278, + 0, 279, 0, 280, 39, 279, 0, 280, 0, 281, + 40, 280, 0, 281, 0, 0, 282, 55, 283, 281, + 0, 282, 0, 0, 284, 56, 285, 282, 0, 284, + 0, 0, 0, 284, 41, 287, 290, 22, 288, 286, + 0, 286, 0, 267, 23, 289, 0, 267, 57, 289, + 0, 267, 58, 289, 0, 267, 59, 289, 0, 267, + 60, 289, 0, 267, 61, 289, 0, 267, 62, 289, + 0, 267, 63, 289, 0, 267, 64, 289, 0, 267, + 65, 289, 0, 267, 66, 289, 0, 289, 0, 290, + 21, 289, 0, 0, 290, 0, 286, 0, 294, 0, + 71, 0, 299, 0, 313, 301, 18, 0, 0, 313, + 326, 336, 326, 295, 301, 305, 18, 301, 0, 0, + 313, 326, 336, 326, 23, 296, 301, 306, 305, 18, + 301, 0, 336, 326, 0, 0, 336, 326, 23, 298, + 301, 306, 0, 0, 45, 313, 300, 326, 303, 301, + 18, 0, 45, 313, 301, 18, 0, 45, 303, 301, + 18, 0, 0, 0, 304, 301, 0, 297, 0, 303, + 21, 326, 297, 0, 0, 305, 21, 326, 297, 0, + 289, 0, 19, 307, 20, 0, 19, 307, 21, 20, + 0, 306, 0, 307, 21, 306, 0, 112, 0, 110, + 0, 113, 0, 114, 0, 115, 0, 108, 301, 0, + 109, 301, 0, 116, 301, 0, 117, 301, 0, 130, + 301, 0, 131, 301, 0, 132, 301, 0, 133, 301, + 0, 118, 301, 0, 120, 301, 0, 119, 301, 0, + 128, 301, 0, 129, 301, 0, 121, 301, 0, 123, + 301, 0, 139, 301, 0, 140, 301, 0, 142, 301, + 0, 143, 301, 0, 141, 301, 0, 136, 301, 0, + 151, 301, 0, 134, 301, 0, 135, 301, 0, 137, + 301, 0, 124, 301, 0, 127, 301, 0, 125, 301, + 0, 126, 301, 0, 156, 301, 0, 157, 301, 0, + 148, 301, 0, 158, 301, 0, 149, 301, 0, 152, + 301, 0, 153, 301, 0, 154, 301, 0, 155, 301, + 0, 150, 301, 0, 159, 301, 0, 160, 301, 0, + 163, 301, 0, 164, 301, 0, 161, 301, 0, 162, + 301, 0, 175, 301, 0, 147, 0, 144, 0, 145, + 0, 146, 0, 165, 326, 0, 167, 326, 0, 166, + 326, 0, 168, 326, 0, 169, 326, 0, 170, 326, + 0, 171, 326, 0, 172, 326, 0, 173, 326, 0, + 174, 326, 0, 429, 326, 0, 317, 326, 0, 331, + 326, 0, 310, 326, 0, 301, 313, 301, 0, 315, + 0, 315, 85, 314, 88, 0, 348, 0, 348, 21, + 314, 0, 308, 316, 0, 309, 316, 0, 311, 316, + 0, 0, 313, 0, 0, 0, 326, 67, 428, 301, + 19, 318, 380, 327, 381, 319, 20, 0, 0, 0, + 326, 68, 428, 301, 19, 320, 380, 327, 381, 321, + 20, 0, 326, 67, 428, 301, 19, 20, 0, 326, + 68, 428, 301, 19, 20, 0, 0, 0, 326, 67, + 301, 19, 322, 380, 327, 381, 323, 20, 0, 0, + 0, 326, 68, 301, 19, 324, 380, 327, 381, 325, + 20, 0, 326, 67, 301, 19, 20, 0, 326, 68, + 301, 19, 20, 0, 326, 67, 428, 326, 0, 326, + 68, 428, 326, 0, 0, 328, 0, 206, 0, 327, + 328, 0, 313, 326, 329, 301, 18, 0, 313, 301, + 18, 0, 330, 326, 0, 329, 21, 330, 326, 0, + 336, 0, 22, 301, 292, 0, 336, 22, 301, 292, + 0, 326, 69, 19, 333, 20, 301, 0, 0, 326, + 69, 428, 19, 332, 333, 20, 301, 0, 326, 69, + 428, 301, 0, 334, 0, 333, 21, 334, 0, 333, + 21, 0, 428, 0, 428, 23, 301, 292, 0, 197, + 0, 350, 0, 340, 188, 0, 340, 335, 0, 197, + 0, 340, 197, 0, 343, 0, 326, 341, 0, 108, + 0, 109, 0, 338, 0, 339, 338, 0, 34, 0, + 34, 339, 0, 34, 340, 0, 34, 339, 340, 0, + 342, 0, 342, 21, 5, 0, 428, 0, 342, 21, + 428, 0, 5, 0, 344, 0, 344, 21, 5, 0, + 0, 345, 347, 0, 0, 344, 21, 346, 347, 0, + 301, 313, 335, 301, 0, 428, 0, 312, 0, 312, + 349, 0, 340, 0, 351, 0, 340, 351, 0, 0, + 351, 0, 301, 24, 326, 349, 25, 0, 26, 27, + 0, 26, 292, 27, 0, 351, 26, 27, 0, 351, + 26, 292, 27, 0, 301, 24, 25, 0, 301, 24, + 343, 25, 0, 351, 301, 24, 25, 0, 351, 301, + 24, 343, 25, 0, 369, 0, 370, 0, 373, 0, + 376, 0, 389, 0, 392, 0, 423, 0, 397, 0, + 425, 0, 353, 0, 176, 427, 185, 88, 0, 178, + 427, 185, 88, 0, 181, 427, 185, 88, 0, 22, + 428, 0, 356, 0, 354, 0, 363, 0, 356, 363, + 0, 396, 356, 0, 422, 368, 11, 24, 290, 25, + 18, 0, 422, 368, 11, 24, 290, 25, 0, 358, + 363, 0, 0, 0, 13, 24, 291, 18, 291, 18, + 359, 291, 360, 25, 0, 0, 186, 378, 24, 362, + 400, 25, 0, 187, 0, 369, 0, 370, 0, 373, + 0, 365, 387, 0, 365, 0, 366, 0, 389, 0, + 364, 0, 357, 0, 361, 0, 425, 0, 24, 363, + 25, 0, 1, 0, 391, 363, 0, 378, 19, 0, + 382, 20, 0, 368, 0, 386, 0, 369, 0, 370, + 0, 373, 0, 377, 0, 390, 0, 392, 0, 397, + 0, 424, 0, 24, 368, 25, 0, 425, 0, 1, + 0, 428, 22, 0, 107, 352, 0, 0, 6, 292, + 371, 22, 0, 0, 98, 6, 292, 372, 22, 0, + 0, 7, 374, 22, 0, 0, 98, 7, 375, 22, + 0, 24, 376, 25, 0, 378, 384, 0, 378, 385, + 379, 0, 0, 0, 0, 0, 0, 20, 0, 107, + 20, 0, 388, 20, 0, 388, 107, 20, 0, 387, + 20, 0, 387, 107, 20, 0, 387, 388, 20, 0, + 387, 388, 107, 20, 0, 19, 383, 0, 19, 20, + 0, 19, 386, 20, 0, 19, 387, 20, 0, 19, + 387, 388, 20, 0, 368, 0, 386, 368, 0, 293, + 0, 387, 293, 0, 352, 0, 388, 352, 0, 18, + 0, 290, 18, 0, 18, 0, 290, 18, 0, 290, + 0, 8, 24, 290, 25, 0, 391, 352, 0, 0, + 391, 352, 9, 393, 352, 0, 0, 10, 24, 290, + 394, 25, 352, 0, 11, 24, 290, 25, 0, 11, + 24, 290, 25, 0, 0, 0, 186, 398, 378, 24, + 399, 400, 25, 376, 421, 379, 0, 402, 0, 0, + 400, 401, 21, 402, 0, 420, 0, 427, 0, 184, + 0, 183, 0, 185, 0, 24, 290, 25, 0, 403, + 0, 265, 26, 290, 27, 0, 265, 24, 25, 0, + 265, 24, 266, 25, 0, 70, 24, 289, 21, 348, + 25, 0, 265, 326, 28, 428, 301, 0, 265, 326, + 44, 428, 301, 0, 265, 47, 0, 265, 48, 0, + 404, 0, 47, 267, 0, 48, 267, 0, 29, 273, + 0, 34, 273, 0, 33, 273, 0, 32, 273, 0, + 31, 273, 0, 30, 273, 0, 270, 0, 405, 0, + 24, 348, 25, 273, 0, 406, 0, 274, 34, 273, + 0, 274, 35, 273, 0, 274, 36, 273, 0, 407, + 0, 275, 33, 274, 0, 275, 32, 274, 0, 408, + 0, 276, 49, 275, 0, 276, 50, 275, 0, 409, + 0, 277, 37, 276, 0, 277, 38, 276, 0, 277, + 51, 276, 0, 277, 52, 276, 0, 410, 0, 278, + 53, 277, 0, 278, 54, 277, 0, 411, 0, 279, + 29, 278, 0, 412, 0, 280, 39, 279, 0, 413, + 0, 281, 40, 280, 0, 414, 0, 282, 55, 281, + 0, 415, 0, 284, 56, 282, 0, 416, 0, 0, + 0, 284, 41, 418, 290, 22, 419, 286, 0, 417, + 0, 267, 23, 289, 0, 267, 57, 289, 0, 267, + 58, 289, 0, 267, 59, 289, 0, 267, 60, 289, + 0, 267, 61, 289, 0, 267, 62, 289, 0, 267, + 63, 289, 0, 267, 64, 289, 0, 267, 65, 289, + 0, 267, 66, 289, 0, 187, 0, 0, 12, 0, + 395, 352, 0, 422, 352, 11, 24, 290, 25, 18, + 0, 358, 352, 0, 395, 368, 0, 422, 368, 11, + 24, 290, 25, 18, 0, 422, 368, 11, 24, 290, + 25, 0, 358, 368, 0, 14, 428, 18, 0, 15, 18, 0, 97, 15, 18, 0, 16, 18, 0, 93, 16, 18, 0, 94, 16, 18, 0, 95, 16, 18, - 0, 96, 16, 18, 0, 17, 18, 0, 17, 278, - 18, 0, 0, 18, 0, 179, 0, 180, 0, 183, - 0, 184, 0, 415, 0, 181, 0, 185, 0, 181, + 0, 96, 16, 18, 0, 17, 18, 0, 17, 290, + 18, 0, 0, 18, 0, 182, 0, 183, 0, 186, + 0, 187, 0, 427, 0, 184, 0, 188, 0, 184, 0 }; @@ -615,70 +626,72 @@ static const short yyrhs[] = { -1, #if YYDEBUG != 0 static const short yyrline[] = { 0, - 241, 242, 245, 246, 249, 250, 251, 252, 253, 254, - 255, 258, 260, 264, 264, 269, 275, 279, 280, 284, - 285, 287, 289, 293, 296, 304, 307, 314, 315, 317, - 319, 335, 339, 346, 350, 356, 358, 358, 362, 363, - 364, 365, 368, 371, 372, 376, 379, 382, 382, 383, - 389, 390, 393, 394, 397, 398, 401, 402, 405, 406, - 409, 412, 413, 416, 417, 418, 419, 420, 423, 424, - 427, 427, 430, 430, 433, 437, 438, 441, 441, 444, - 444, 447, 451, 452, 455, 456, 459, 465, 472, 478, - 485, 486, 487, 488, 489, 492, 495, 498, 499, 502, - 503, 504, 505, 506, 507, 508, 509, 512, 518, 525, - 531, 540, 546, 550, 552, 556, 559, 566, 576, 577, - 580, 581, 584, 585, 586, 587, 588, 589, 590, 591, - 595, 596, 600, 601, 604, 606, 608, 609, 610, 611, - 612, 614, 618, 622, 634, 635, 636, 637, 638, 639, - 642, 643, 644, 645, 646, 647, 648, 649, 650, 653, - 654, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 670, 671, 674, 678, 679, 682, 683, 684, - 685, 688, 689, 693, 694, 695, 696, 699, 700, 701, - 704, 705, 706, 709, 710, 711, 712, 713, 716, 717, - 718, 721, 722, 725, 726, 730, 731, 734, 735, 740, - 746, 747, 753, 759, 760, 760, 762, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 779, - 780, 783, 784, 787, 792, 793, 794, 797, 810, 814, - 815, 818, 823, 824, 824, 829, 830, 831, 832, 835, - 838, 841, 844, 845, 848, 849, 852, 853, 854, 858, - 860, 869, 870, 871, 872, 873, 876, 877, 878, 879, - 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, - 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, - 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, - 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, - 920, 921, 927, 928, 929, 930, 933, 934, 935, 936, - 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, - 949, 953, 954, 958, 959, 963, 964, 965, 968, 969, - 972, 974, 976, 977, 979, 981, 982, 984, 986, 988, - 990, 991, 993, 995, 996, 998, 1000, 1001, 1004, 1007, - 1008, 1009, 1012, 1014, 1018, 1020, 1024, 1025, 1026, 1030, - 1032, 1032, 1034, 1037, 1039, 1041, 1044, 1049, 1056, 1057, - 1058, 1065, 1069, 1070, 1074, 1075, 1078, 1079, 1082, 1083, - 1086, 1087, 1088, 1089, 1092, 1093, 1096, 1097, 1100, 1101, - 1102, 1105, 1105, 1106, 1107, 1110, 1122, 1138, 1139, 1142, - 1143, 1144, 1147, 1148, 1151, 1153, 1154, 1156, 1157, 1159, - 1161, 1163, 1165, 1171, 1172, 1173, 1174, 1175, 1176, 1177, - 1178, 1179, 1181, 1185, 1187, 1189, 1195, 1200, 1203, 1206, - 1207, 1211, 1213, 1215, 1217, 1221, 1222, 1224, 1228, 1230, - 1232, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, - 1244, 1245, 1246, 1247, 1250, 1256, 1259, 1262, 1263, 1266, - 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, - 1279, 1280, 1286, 1287, 1288, 1289, 1292, 1293, 1294, 1295, - 1298, 1299, 1303, 1306, 1309, 1312, 1315, 1318, 1321, 1322, - 1323, 1324, 1326, 1327, 1329, 1331, 1338, 1342, 1344, 1346, - 1348, 1352, 1353, 1356, 1357, 1360, 1361, 1364, 1365, 1368, - 1369, 1370, 1373, 1381, 1386, 1387, 1391, 1392, 1395, 1400, - 1403, 1404, 1405, 1413, 1414, 1414, 1418, 1419, 1420, 1431, - 1438, 1439, 1442, 1443, 1444, 1445, 1446, 1448, 1449, 1450, - 1451, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, - 1463, 1466, 1467, 1470, 1471, 1472, 1473, 1476, 1477, 1478, - 1481, 1482, 1483, 1486, 1487, 1488, 1489, 1490, 1493, 1494, - 1495, 1498, 1499, 1502, 1503, 1507, 1508, 1511, 1512, 1515, - 1516, 1519, 1520, 1521, 1522, 1525, 1526, 1527, 1528, 1529, - 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1539, 1540, 1543, - 1546, 1548, 1550, 1554, 1555, 1557, 1559, 1562, 1563, 1564, - 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1575, 1576, 1579, - 1582, 1583, 1584, 1585, 1586, 1589, 1590 + 260, 261, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 277, 279, 283, 283, 288, 294, 298, 299, 303, + 304, 306, 308, 312, 315, 323, 326, 335, 336, 338, + 340, 356, 360, 367, 371, 377, 379, 379, 383, 384, + 385, 386, 389, 392, 393, 399, 400, 404, 407, 412, + 419, 422, 423, 426, 431, 432, 435, 436, 437, 440, + 441, 442, 447, 450, 451, 462, 466, 467, 472, 473, + 483, 484, 487, 488, 491, 492, 495, 496, 499, 500, + 503, 506, 507, 510, 511, 512, 513, 514, 517, 518, + 521, 521, 524, 524, 527, 531, 532, 535, 535, 538, + 538, 541, 545, 546, 549, 550, 553, 559, 566, 572, + 579, 580, 581, 582, 583, 586, 589, 592, 593, 596, + 597, 598, 599, 600, 601, 602, 603, 606, 612, 619, + 625, 634, 640, 644, 646, 650, 653, 660, 670, 671, + 674, 675, 678, 679, 680, 681, 682, 683, 684, 685, + 689, 690, 694, 695, 698, 700, 702, 703, 704, 705, + 706, 708, 712, 716, 728, 729, 730, 731, 732, 733, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 747, + 748, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 764, 765, 768, 772, 773, 776, 777, 778, + 779, 782, 783, 787, 788, 789, 790, 793, 794, 795, + 798, 799, 800, 803, 804, 805, 806, 807, 810, 811, + 812, 815, 816, 819, 820, 824, 825, 828, 829, 834, + 840, 841, 847, 853, 854, 854, 856, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, 870, 873, + 874, 877, 878, 881, 886, 887, 888, 891, 904, 908, + 909, 912, 917, 918, 918, 923, 924, 925, 926, 929, + 932, 935, 938, 939, 942, 943, 946, 947, 948, 952, + 954, 963, 964, 965, 966, 967, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, + 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 1014, 1015, 1021, 1022, 1023, 1024, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1043, 1047, 1048, 1052, 1053, 1057, 1058, 1059, 1062, 1063, + 1066, 1068, 1070, 1071, 1073, 1075, 1076, 1078, 1080, 1082, + 1084, 1085, 1087, 1089, 1090, 1092, 1094, 1095, 1098, 1101, + 1102, 1103, 1106, 1108, 1112, 1114, 1118, 1119, 1120, 1124, + 1126, 1126, 1128, 1131, 1133, 1135, 1138, 1143, 1150, 1151, + 1152, 1159, 1163, 1164, 1168, 1169, 1172, 1173, 1176, 1177, + 1180, 1181, 1182, 1183, 1186, 1187, 1190, 1191, 1194, 1195, + 1196, 1199, 1199, 1200, 1201, 1204, 1216, 1232, 1233, 1236, + 1237, 1238, 1241, 1242, 1245, 1247, 1248, 1250, 1251, 1253, + 1255, 1257, 1259, 1265, 1266, 1267, 1268, 1269, 1270, 1271, + 1272, 1273, 1275, 1279, 1281, 1283, 1289, 1294, 1297, 1300, + 1301, 1305, 1307, 1309, 1311, 1315, 1316, 1318, 1322, 1324, + 1326, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1344, 1350, 1353, 1356, 1357, 1360, + 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, + 1373, 1374, 1380, 1381, 1382, 1383, 1386, 1387, 1388, 1389, + 1392, 1393, 1397, 1400, 1403, 1406, 1409, 1412, 1415, 1416, + 1417, 1418, 1420, 1421, 1423, 1425, 1432, 1436, 1438, 1440, + 1442, 1446, 1447, 1450, 1451, 1454, 1455, 1458, 1459, 1462, + 1463, 1464, 1467, 1475, 1480, 1481, 1485, 1486, 1489, 1494, + 1497, 1498, 1499, 1507, 1508, 1508, 1512, 1513, 1514, 1525, + 1532, 1533, 1536, 1537, 1538, 1539, 1540, 1542, 1543, 1544, + 1545, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, + 1557, 1560, 1561, 1564, 1565, 1566, 1567, 1570, 1571, 1572, + 1575, 1576, 1577, 1580, 1581, 1582, 1583, 1584, 1587, 1588, + 1589, 1592, 1593, 1596, 1597, 1601, 1602, 1605, 1606, 1609, + 1610, 1613, 1614, 1615, 1616, 1619, 1620, 1621, 1622, 1623, + 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1633, 1634, 1637, + 1640, 1642, 1644, 1648, 1649, 1651, 1653, 1656, 1657, 1658, + 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1669, 1670, 1673, + 1676, 1677, 1678, 1679, 1680, 1683, 1684 }; #endif @@ -709,112 +722,116 @@ static const char * const yytname[] = { "$","error","$undefined.","BADTOK", "QTRUENULL","QFALSENULL","QEXTERNAL","QREFCOUNTED","QREFS","QNEWREF","QTEMPREF", "QKILLREF","QRELDEF","CGCHAR","CBOOL","CINT","CGFLOAT","CDOUBLE","CVOID","QANYTYPE", "QINTEGRALTYPE","QUNSIGNEDINTEGRALTYPE","QSIGNEDINTEGRALTYPE","QNULLTERMINATED", -"QSETBUFFERSIZE","QSETSTRINGLENGTH","QTESTINRANGE","IDENTIFIER","NEW_IDENTIFIER", -"TYPE_NAME_OR_ID","CCONSTANT","ITER_NAME","ITER_ENDNAME","TYPE_NAME","file", -"externalDefs","externalDef","constantDecl","fcnDecl","@1","plainFcn","plainNamedDecl", -"namedDeclBase","@2","@3","plainNamedDeclBase","@4","@5","iterDecl","@6","@7", -"macroDef","fcnDefHdr","optGlobMods","@8","optGlobBufConstraints","optGlobBufConstraintsRest", -"optGlobBufConstraintsAux","@9","optPlainGlobMods","@10","optGlobModsRest","optPlainGlobModsRest", +"QSETBUFFERSIZE","QBUFFERCONSTRAINT","QSETSTRINGLENGTH","QMAXSET","QMAXREAD", +"QTESTINRANGE","IDENTIFIER","NEW_IDENTIFIER","TYPE_NAME_OR_ID","CCONSTANT","ITER_NAME", +"ITER_ENDNAME","TYPE_NAME","file","externalDefs","externalDef","constantDecl", +"fcnDecl","@1","plainFcn","plainNamedDecl","namedDeclBase","@2","@3","plainNamedDeclBase", +"@4","@5","iterDecl","@6","@7","macroDef","fcnDefHdr","optGlobMods","@8","optGlobBufConstraints", +"@9","optGlobBufConstraintsRest","optGlobBufConstraintsAux","@10","BufConstraintList", +"BufConstraint","bufferModifier","relationalOp","BufConstraintExpr","BufConstraintTerm", +"BufUnaryOp","BufBinaryOp","optPlainGlobMods","@12","optGlobModsRest","optPlainGlobModsRest", "specialClauses","globIdList","globIdListExpr","globId","globQual","optGlobQuals", -"optGlobModsAux","@11","@12","optPlainGlobModsAux","@13","@14","optMods","fcnMods", -"@15","fcnPlainMods","@16","specialTag","endStateTag","endSpecialTag","stateSpecialClause", -"specialClauseType","specialClause","@17","@18","fcnDefHdrAux","fcnBody","@19", -"@20","fcnDef","locModifies","locPlainModifies","modListExpr","mExpr","modList", +"optGlobModsAux","@13","@14","optPlainGlobModsAux","@15","@16","optMods","fcnMods", +"@17","fcnPlainMods","@18","specialTag","endStateTag","endSpecialTag","stateSpecialClause", +"specialClauseType","specialClause","@19","@20","fcnDefHdrAux","fcnBody","@21", +"@22","fcnDef","locModifies","locPlainModifies","modListExpr","mExpr","modList", "specClauseListExpr","specClauseList","primaryExpr","postfixExpr","argumentExprList", -"unaryExpr","fieldDesignator","offsetofExpr","sizeofExpr","@21","sizeofExprAux", +"unaryExpr","fieldDesignator","offsetofExpr","sizeofExpr","@23","sizeofExprAux", "castExpr","timesExpr","plusExpr","shiftExpr","relationalExpr","equalityExpr", -"bitandExpr","xorExpr","bitorExpr","andExpr","@22","orExpr","@23","conditionalExpr", -"@24","@25","assignExpr","expr","optExpr","constantExpr","initializer","instanceDecl", -"@26","@27","namedInitializer","@28","typeDecl","@29","IsType","PushType","namedInitializerList", +"bitandExpr","xorExpr","bitorExpr","andExpr","@24","orExpr","@25","conditionalExpr", +"@26","@27","assignExpr","expr","optExpr","constantExpr","initializer","instanceDecl", +"@28","@29","namedInitializer","@30","typeDecl","@31","IsType","PushType","namedInitializerList", "namedInitializerListAux","optDeclarators","init","initList","storageSpecifier", "typeQualifier","typeModifier","typeSpecifier","completeType","completeTypeSpecifier", -"altType","completeTypeSpecifierAux","optCompleteType","suSpc","@30","@31","@32", -"@33","@34","@35","@36","@37","NotType","structDeclList","structDecl","structNamedDeclList", -"structNamedDecl","enumSpc","@38","enumeratorList","enumerator","optNamedDecl", +"altType","completeTypeSpecifierAux","optCompleteType","suSpc","@32","@33","@34", +"@35","@36","@37","@38","@39","NotType","structDeclList","structDecl","structNamedDeclList", +"structNamedDecl","enumSpc","@40","enumeratorList","enumerator","optNamedDecl", "namedDecl","genericParamList","innerMods","innerModsList","pointers","paramIdList", -"idList","paramTypeList","paramList","@39","@40","paramDecl","typeExpression", +"idList","paramTypeList","paramList","@41","@42","paramDecl","typeExpression", "abstractDecl","optAbstractDeclBase","abstractDeclBase","stmt","lclintassertion", -"iterBody","endBody","iterDefStmtList","iterDefIterationStmt","forPred","@41", -"@42","partialIterStmt","@43","iterDefStmt","iterSelectionStmt","openScope", -"closeScope","macroBody","stmtErr","labeledStmt","caseStmt","@44","@45","defaultStmt", -"@46","@47","compoundStmt","compoundStmtErr","CreateInnerScope","DeleteInnerScope", +"iterBody","endBody","iterDefStmtList","iterDefIterationStmt","forPred","@43", +"@44","partialIterStmt","@45","iterDefStmt","iterSelectionStmt","openScope", +"closeScope","macroBody","stmtErr","labeledStmt","caseStmt","@46","@47","defaultStmt", +"@48","@49","compoundStmt","compoundStmtErr","CreateInnerScope","DeleteInnerScope", "CreateStructInnerScope","DeleteStructInnerScope","DeleteInnerScopeSafe","compoundStmtRest", "compoundStmtAux","compoundStmtAuxErr","stmtListErr","initializerList","stmtList", -"expressionStmt","expressionStmtErr","ifPred","selectionStmt","@48","@49","whilePred", -"iterWhilePred","iterStmt","@50","@51","iterArgList","@52","iterArgExpr","primaryIterExpr", +"expressionStmt","expressionStmtErr","ifPred","selectionStmt","@50","@51","whilePred", +"iterWhilePred","iterStmt","@52","@53","iterArgList","@54","iterArgExpr","primaryIterExpr", "postfixIterExpr","unaryIterExpr","castIterExpr","timesIterExpr","plusIterExpr", "shiftIterExpr","relationalIterExpr","equalityIterExpr","bitandIterExpr","xorIterExpr", -"bitorIterExpr","andIterExpr","orIterExpr","conditionalIterExpr","@53","@54", +"bitorIterExpr","andIterExpr","orIterExpr","conditionalIterExpr","@55","@56", "assignIterExpr","endIter","doHeader","iterationStmt","iterationStmtErr","jumpStmt", "optSemi","id","newId","typeName", NULL }; #endif static const short yyr1[] = { 0, - 186, 186, 187, 187, 188, 188, 188, 188, 188, 188, - 188, 189, 189, 191, 190, 192, 192, 193, 193, 194, - 194, 194, 194, 195, 194, 196, 194, 197, 197, 197, - 197, 198, 197, 199, 197, 201, 202, 200, 203, 203, - 203, 203, 204, 206, 205, 207, 208, 210, 209, 209, - 212, 211, 213, 213, 214, 214, 215, 215, 216, 216, - 217, 218, 218, 219, 219, 219, 219, 219, 220, 220, - 222, 221, 223, 221, 221, 221, 221, 225, 224, 226, - 224, 224, 224, 224, 227, 227, 229, 228, 231, 230, - 232, 232, 232, 232, 232, 233, 234, 235, 235, 236, - 236, 236, 236, 236, 236, 236, 236, 238, 237, 239, - 237, 240, 240, 242, 241, 243, 241, 244, 245, 245, - 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, - 248, 248, 249, 249, 250, 250, 250, 250, 250, 250, - 250, 250, 251, 251, 252, 252, 252, 252, 252, 252, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 254, - 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 256, 256, 257, 259, 258, 260, 260, 260, - 260, 261, 261, 262, 262, 262, 262, 263, 263, 263, - 264, 264, 264, 265, 265, 265, 265, 265, 266, 266, - 266, 267, 267, 268, 268, 269, 269, 270, 271, 270, - 272, 273, 272, 274, 275, 276, 274, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 278, - 278, 279, 279, 280, 281, 281, 281, 282, 283, 282, - 284, 282, 285, 286, 285, 288, 287, 287, 287, 289, - 290, 291, 292, 292, 293, 293, 294, 294, 294, 295, - 295, 296, 296, 296, 296, 296, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 298, 298, 298, 298, 299, 299, 299, 299, - 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, - 300, 301, 301, 302, 302, 303, 303, 303, 304, 304, - 306, 307, 305, 308, 309, 305, 305, 305, 310, 311, - 305, 312, 313, 305, 305, 305, 305, 305, 314, 315, - 315, 315, 316, 316, 317, 317, 318, 318, 318, 319, - 320, 319, 319, 321, 321, 321, 322, 322, 323, 323, - 323, 323, 324, 324, 325, 325, 326, 326, 327, 327, - 328, 328, 328, 328, 329, 329, 330, 330, 331, 331, - 331, 333, 332, 334, 332, 335, 335, 336, 336, 337, - 337, 337, 338, 338, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 341, 341, 341, -1, 342, 343, 344, - 344, 345, 345, 345, 345, 347, 348, 346, 350, 349, - 349, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 351, 352, 353, 354, 355, 355, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 357, 357, 359, 358, 360, 358, 362, 361, 363, 361, - 364, 364, 365, 366, 367, 368, 369, 370, 371, 371, - 371, 371, 371, 371, 371, 371, 372, 373, 373, 373, - 373, 374, 374, 375, 375, 376, 376, 377, 377, 378, - 378, 378, 379, 380, 381, 380, 382, 380, 383, 384, - 386, 387, 385, 388, 389, 388, 390, 390, 390, 390, - 391, 391, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 393, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 394, 394, 395, 395, 395, 395, 396, 396, 396, - 397, 397, 397, 398, 398, 398, 398, 398, 399, 399, - 399, 400, 400, 401, 401, 402, 402, 403, 403, 404, - 404, 405, 406, 407, 405, 408, 408, 408, 408, 408, - 408, 408, 408, 408, 408, 408, 408, 409, 409, 410, - 411, 411, 411, 412, 412, 412, 412, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 414, 414, 415, - 416, 416, 416, 416, 416, 417, 417 + 189, 189, 190, 190, 191, 191, 191, 191, 191, 191, + 191, 192, 192, 194, 193, 195, 195, 196, 196, 197, + 197, 197, 197, 198, 197, 199, 197, 200, 200, 200, + 200, 201, 200, 202, 200, 204, 205, 203, 206, 206, + 206, 206, 207, 209, 208, 211, 210, 212, 214, 213, + 213, 215, 215, 216, 217, 217, 218, 218, 218, 219, + 219, 219, 220, 220, 220, 221, 222, 222, -1, -1, + 224, 223, 225, 225, 226, 226, 227, 227, 228, 228, + 229, 230, 230, 231, 231, 231, 231, 231, 232, 232, + 234, 233, 235, 233, 233, 233, 233, 237, 236, 238, + 236, 236, 236, 236, 239, 239, 241, 240, 243, 242, + 244, 244, 244, 244, 244, 245, 246, 247, 247, 248, + 248, 248, 248, 248, 248, 248, 248, 250, 249, 251, + 249, 252, 252, 254, 253, 255, 253, 256, 257, 257, + 258, 258, 259, 259, 259, 259, 259, 259, 259, 259, + 260, 260, 261, 261, 262, 262, 262, 262, 262, 262, + 262, 262, 263, 263, 264, 264, 264, 264, 264, 264, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, + 266, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 268, 268, 269, 271, 270, 272, 272, 272, + 272, 273, 273, 274, 274, 274, 274, 275, 275, 275, + 276, 276, 276, 277, 277, 277, 277, 277, 278, 278, + 278, 279, 279, 280, 280, 281, 281, 282, 283, 282, + 284, 285, 284, 286, 287, 288, 286, 289, 289, 289, + 289, 289, 289, 289, 289, 289, 289, 289, 289, 290, + 290, 291, 291, 292, 293, 293, 293, 294, 295, 294, + 296, 294, 297, 298, 297, 300, 299, 299, 299, 301, + 302, 303, 304, 304, 305, 305, 306, 306, 306, 307, + 307, 308, 308, 308, 308, 308, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 310, 310, 310, 310, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 312, 313, 313, 314, 314, 315, 315, 315, 316, 316, + 318, 319, 317, 320, 321, 317, 317, 317, 322, 323, + 317, 324, 325, 317, 317, 317, 317, 317, 326, 327, + 327, 327, 328, 328, 329, 329, 330, 330, 330, 331, + 332, 331, 331, 333, 333, 333, 334, 334, 335, 335, + 335, 335, 336, 336, 337, 337, 338, 338, 339, 339, + 340, 340, 340, 340, 341, 341, 342, 342, 343, 343, + 343, 345, 344, 346, 344, 347, 347, 348, 348, 349, + 349, 349, 350, 350, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 353, 353, 353, -1, 354, 355, 356, + 356, 357, 357, 357, 357, 359, 360, 358, 362, 361, + 361, 363, 363, 363, 363, 363, 363, 363, 363, 363, + 363, 363, 363, 363, 364, 365, 366, 367, 367, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 371, 370, 372, 370, 374, 373, 375, 373, + 376, 376, 377, 378, 379, 380, 381, 382, 383, 383, + 383, 383, 383, 383, 383, 383, 384, 385, 385, 385, + 385, 386, 386, 387, 387, 388, 388, 389, 389, 390, + 390, 390, 391, 392, 393, 392, 394, 392, 395, 396, + 398, 399, 397, 400, 401, 400, 402, 402, 402, 402, + 403, 403, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 405, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 406, 406, 407, 407, 407, 407, 408, 408, 408, + 409, 409, 409, 410, 410, 410, 410, 410, 411, 411, + 411, 412, 412, 413, 413, 414, 414, 415, 415, 416, + 416, 417, 418, 419, 417, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 421, 421, 422, + 423, 423, 423, 424, 424, 424, 424, 425, 425, 425, + 425, 425, 425, 425, 425, 425, 425, 426, 426, 427, + 428, 428, 428, 428, 428, 429, 429 }; static const short yyr2[] = { 0, @@ -822,7 +839,9 @@ static const short yyr2[] = { 0, 1, 8, 11, 0, 5, 1, 3, 1, 2, 1, 6, 3, 6, 0, 7, 0, 8, 1, 6, 3, 6, 0, 6, 0, 7, 0, 0, 10, 3, 3, - 3, 2, 1, 0, 2, 1, 1, 0, 5, 0, + 3, 2, 1, 0, 2, 0, 2, 1, 0, 4, + 0, 2, 1, 4, 1, 1, 1, 1, 1, 1, + 4, 5, 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, 1, 2, 1, 2, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 6, 0, 6, 1, 1, 0, 0, 5, 0, @@ -885,610 +904,632 @@ static const short yyr2[] = { 0, }; static const short yydefact[] = { 0, - 11, 391, 359, 236, 359, 14, 0, 0, 0, 0, - 250, 250, 263, 262, 264, 265, 266, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 314, 315, 316, 313, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 359, 359, 359, 359, 359, 359, - 359, 359, 359, 359, 250, 630, 631, 635, 632, 633, - 636, 0, 3, 6, 7, 383, 8, 9, 359, 43, - 628, 10, 235, 237, 0, 339, 339, 359, 339, 359, - 332, 359, 0, 359, 112, 250, 634, 20, 359, 387, - 388, 389, 392, 393, 253, 250, 250, 246, 359, 637, - 359, 359, 635, 0, 480, 250, 487, 0, 0, 0, - 610, 0, 0, 0, 0, 250, 520, 0, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 0, 42, 0, - 0, 0, 0, 0, 0, 250, 150, 146, 149, 147, - 531, 151, 162, 182, 172, 171, 184, 188, 191, 194, - 199, 202, 204, 206, 208, 211, 214, 218, 230, 522, - 176, 0, 0, 512, 470, 471, 472, 473, 0, 0, - 474, 250, 475, 0, 476, 0, 477, 479, 145, 0, - 464, 0, 518, 0, 494, 451, 0, 0, 0, 460, - 0, 461, 440, 459, 456, 457, 452, 453, 454, 0, - 0, 458, 0, 0, 0, 462, 439, 0, 267, 268, - 269, 270, 275, 277, 276, 280, 281, 292, 294, 295, - 293, 278, 279, 271, 272, 273, 274, 289, 290, 287, - 291, 282, 283, 286, 284, 285, 298, 300, 305, 288, - 301, 302, 303, 304, 296, 297, 299, 306, 307, 310, - 311, 308, 309, 317, 319, 318, 320, 321, 322, 323, - 324, 325, 326, 312, 4, 250, 0, 114, 118, 514, - 359, 359, 629, 5, 359, 340, 336, 337, 330, 338, - 0, 250, 250, 328, 250, 250, 0, 329, 384, 327, - 390, 394, 359, 0, 252, 359, 0, 243, 250, 628, - 16, 18, 0, 359, 250, 28, 402, 250, 146, 149, - 182, 234, 483, 145, 0, 250, 250, 250, 250, 0, - 619, 621, 626, 0, 0, 359, 408, 0, 0, 165, - 170, 169, 168, 167, 166, 0, 250, 163, 164, 250, - 0, 0, 0, 0, 0, 250, 489, 250, 0, 0, - 0, 482, 433, 250, 424, 425, 426, 427, 0, 428, - 429, 250, 431, 250, 430, 432, 494, 250, 250, 158, - 159, 0, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 209, - 215, 212, 521, 250, 0, 617, 39, 0, 495, 513, - 524, 614, 0, 481, 250, 0, 0, 0, 519, 40, - 441, 445, 455, 466, 467, 465, 0, 0, 41, 22, - 250, 402, 359, 250, 494, 515, 250, 238, 113, 359, - 0, 334, 0, 359, 0, 359, 0, 250, 250, 249, - 250, 248, 244, 359, 0, 250, 0, 359, 250, 19, - 399, 0, 0, 385, 400, 250, 0, 0, 488, 0, - 527, 0, 233, 0, 618, 627, 148, 250, 250, 0, - 410, 409, 411, 250, 478, 250, 0, 622, 623, 624, - 625, 620, 485, 0, 0, 0, 0, 0, 613, 359, - 492, 611, 0, 0, 153, 0, 160, 0, 0, 0, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 185, 186, 187, 190, 189, 192, 193, 195, 196, - 197, 198, 200, 201, 203, 205, 207, 250, 250, 250, - 231, 250, 250, 177, 508, 149, 512, 0, 359, 493, - 525, 0, 0, 463, 449, 0, 0, 24, 0, 499, - 250, 516, 115, 359, 250, 359, 494, 117, 250, 239, - 333, 250, 349, 0, 357, 352, 0, 358, 0, 374, - 377, 371, 373, 254, 250, 250, 628, 15, 30, 250, - 402, 250, 17, 386, 395, 397, 36, 404, 359, 403, - 407, 484, 523, 0, 529, 250, 331, 416, 0, 402, - 412, 250, 0, 183, 359, 250, 0, 490, 491, 0, - 0, 0, 507, 0, 532, 250, 154, 152, 250, 250, - 210, 0, 213, 250, 179, 250, 181, 509, 510, 250, - 250, 250, 530, 250, 250, 359, 44, 26, 500, 503, - 250, 250, 501, 250, 517, 0, 241, 250, 335, 355, - 496, 341, 356, 496, 344, 250, 376, 250, 0, 0, - 250, 250, 250, 0, 32, 0, 250, 0, 51, 401, - 250, 413, 250, 0, 417, 420, 250, 0, 418, 0, - 402, 0, 0, 486, 434, 435, 436, 250, 250, 161, - 156, 157, 216, 0, 0, 511, 526, 0, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 0, 146, 149, - 147, 162, 182, 171, 188, 191, 194, 199, 202, 204, - 206, 208, 211, 0, 535, 534, 543, 552, 562, 564, - 568, 571, 574, 579, 582, 584, 586, 588, 590, 592, - 596, 537, 145, 0, 23, 50, 77, 44, 504, 505, - 250, 502, 21, 250, 255, 359, 347, 496, 359, 348, - 496, 370, 375, 250, 0, 247, 250, 257, 245, 250, - 0, 359, 51, 34, 0, 396, 398, 37, 84, 405, - 379, 0, 250, 413, 380, 414, 528, 446, 0, 421, - 419, 422, 0, 0, 155, 0, 535, 250, 178, 180, - 616, 0, 0, 165, 170, 169, 168, 167, 166, 163, - 164, 250, 250, 250, 158, 159, 0, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 209, 593, 212, 450, 0, 444, - 25, 46, 47, 0, 71, 87, 75, 91, 92, 93, - 94, 95, 98, 99, 45, 77, 53, 76, 359, 359, - 57, 50, 506, 250, 0, 361, 359, 359, 360, 359, - 359, 359, 378, 250, 260, 0, 255, 12, 31, 33, - 51, 29, 628, 78, 89, 82, 52, 84, 55, 83, - 402, 406, 381, 382, 250, 415, 423, 0, 174, 0, - 494, 217, 615, 148, 250, 0, 153, 0, 0, 0, - 0, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 185, 186, 187, 190, 189, 192, 193, 195, - 196, 197, 198, 200, 201, 203, 205, 207, 589, 250, - 591, 250, 443, 0, 359, 69, 628, 54, 108, 0, - 58, 27, 255, 250, 359, 0, 250, 362, 350, 359, - 353, 359, 372, 258, 250, 628, 35, 0, 359, 69, - 628, 56, 250, 447, 250, 0, 612, 609, 183, 250, - 154, 152, 250, 250, 0, 536, 0, 359, 64, 65, - 66, 67, 68, 628, 59, 69, 0, 0, 0, 124, - 88, 133, 628, 0, 123, 0, 100, 105, 104, 103, - 102, 101, 106, 107, 110, 0, 240, 250, 364, 250, - 250, 359, 367, 0, 342, 0, 345, 259, 261, 0, - 38, 628, 628, 90, 628, 122, 250, 0, 175, 173, - 608, 495, 0, 156, 157, 594, 0, 0, 69, 0, - 70, 63, 61, 62, 0, 127, 0, 0, 0, 0, - 0, 120, 0, 0, 136, 143, 628, 135, 0, 250, - 256, 250, 250, 0, 365, 250, 351, 0, 354, 0, - 13, 86, 86, 121, 448, 533, 155, 250, 49, 86, - 60, 86, 128, 125, 132, 131, 0, 129, 130, 134, - 119, 0, 139, 0, 0, 0, 0, 0, 628, 242, - 368, 359, 363, 250, 343, 346, 79, 85, 81, 595, - 72, 74, 126, 140, 137, 0, 141, 142, 144, 97, - 250, 0, 366, 369, 138, 109, 96, 250, 111, 0, - 0, 0 + 11, 411, 379, 256, 379, 14, 0, 0, 0, 0, + 270, 270, 283, 282, 284, 285, 286, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 334, 335, 336, 333, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 270, 650, 651, 655, 652, 653, + 656, 0, 3, 6, 7, 403, 8, 9, 379, 43, + 648, 10, 255, 257, 0, 359, 359, 379, 359, 379, + 352, 379, 0, 379, 132, 270, 654, 20, 379, 407, + 408, 409, 412, 413, 273, 270, 270, 266, 379, 657, + 379, 379, 655, 0, 500, 270, 507, 0, 0, 0, + 630, 0, 0, 0, 0, 270, 540, 0, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 0, 42, 0, + 0, 0, 0, 0, 0, 270, 170, 166, 169, 167, + 551, 171, 182, 202, 192, 191, 204, 208, 211, 214, + 219, 222, 224, 226, 228, 231, 234, 238, 250, 542, + 196, 0, 0, 532, 490, 491, 492, 493, 0, 0, + 494, 270, 495, 0, 496, 0, 497, 499, 165, 0, + 484, 0, 538, 0, 514, 471, 0, 0, 0, 480, + 0, 481, 460, 479, 476, 477, 472, 473, 474, 0, + 0, 478, 0, 0, 0, 482, 459, 0, 287, 288, + 289, 290, 295, 297, 296, 300, 301, 312, 314, 315, + 313, 298, 299, 291, 292, 293, 294, 309, 310, 307, + 311, 302, 303, 306, 304, 305, 318, 320, 325, 308, + 321, 322, 323, 324, 316, 317, 319, 326, 327, 330, + 331, 328, 329, 337, 339, 338, 340, 341, 342, 343, + 344, 345, 346, 332, 4, 270, 0, 134, 138, 534, + 379, 379, 649, 5, 379, 360, 356, 357, 350, 358, + 0, 270, 270, 348, 270, 270, 0, 349, 404, 347, + 410, 414, 379, 0, 272, 379, 0, 263, 270, 648, + 16, 18, 0, 379, 270, 28, 422, 270, 166, 169, + 202, 254, 503, 165, 0, 270, 270, 270, 270, 0, + 639, 641, 646, 0, 0, 379, 428, 0, 0, 185, + 190, 189, 188, 187, 186, 0, 270, 183, 184, 270, + 0, 0, 0, 0, 0, 270, 509, 270, 0, 0, + 0, 502, 453, 270, 444, 445, 446, 447, 0, 448, + 449, 270, 451, 270, 450, 452, 514, 270, 270, 178, + 179, 0, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 229, + 235, 232, 541, 270, 0, 637, 39, 0, 515, 533, + 544, 634, 0, 501, 270, 0, 0, 0, 539, 40, + 461, 465, 475, 486, 487, 485, 0, 0, 41, 22, + 270, 422, 379, 270, 514, 535, 270, 258, 133, 379, + 0, 354, 0, 379, 0, 379, 0, 270, 270, 269, + 270, 268, 264, 379, 0, 270, 0, 379, 270, 19, + 419, 0, 0, 405, 420, 270, 0, 0, 508, 0, + 547, 0, 253, 0, 638, 647, 168, 270, 270, 0, + 430, 429, 431, 270, 498, 270, 0, 642, 643, 644, + 645, 640, 505, 0, 0, 0, 0, 0, 633, 379, + 512, 631, 0, 0, 173, 0, 180, 0, 0, 0, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 205, 206, 207, 210, 209, 212, 213, 215, 216, + 217, 218, 220, 221, 223, 225, 227, 270, 270, 270, + 251, 270, 270, 197, 528, 169, 532, 0, 379, 513, + 545, 0, 0, 483, 469, 0, 0, 24, 0, 519, + 270, 536, 135, 379, 270, 379, 514, 137, 270, 259, + 353, 270, 369, 0, 377, 372, 0, 378, 0, 394, + 397, 391, 393, 274, 270, 270, 648, 15, 30, 270, + 422, 270, 17, 406, 415, 417, 36, 424, 379, 423, + 427, 504, 543, 0, 549, 270, 351, 436, 0, 422, + 432, 270, 0, 203, 379, 270, 0, 510, 511, 0, + 0, 0, 527, 0, 552, 270, 174, 172, 270, 270, + 230, 0, 233, 270, 199, 270, 201, 529, 530, 270, + 270, 270, 550, 270, 270, 379, 44, 26, 520, 523, + 270, 270, 521, 270, 537, 0, 261, 270, 355, 375, + 516, 361, 376, 516, 364, 270, 396, 270, 0, 0, + 270, 270, 270, 0, 32, 0, 270, 0, 71, 421, + 270, 433, 270, 0, 437, 440, 270, 0, 438, 0, + 422, 0, 0, 506, 454, 455, 456, 270, 270, 181, + 176, 177, 236, 0, 0, 531, 546, 0, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 0, 166, 169, + 167, 182, 202, 191, 208, 211, 214, 219, 222, 224, + 226, 228, 231, 0, 555, 554, 563, 572, 582, 584, + 588, 591, 594, 599, 602, 604, 606, 608, 610, 612, + 616, 557, 165, 0, 23, 46, 97, 44, 524, 525, + 270, 522, 21, 270, 275, 379, 367, 516, 379, 368, + 516, 390, 395, 270, 0, 267, 270, 277, 265, 270, + 0, 379, 71, 34, 0, 416, 418, 37, 104, 425, + 399, 0, 270, 433, 400, 434, 548, 466, 0, 441, + 439, 442, 0, 0, 175, 0, 555, 270, 198, 200, + 636, 0, 0, 185, 190, 189, 188, 187, 186, 183, + 184, 270, 270, 270, 178, 179, 0, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 229, 613, 232, 470, 0, 464, + 25, 51, 91, 107, 95, 111, 112, 113, 114, 115, + 118, 119, 45, 97, 73, 96, 379, 379, 77, 46, + 526, 270, 0, 381, 379, 379, 380, 379, 379, 379, + 398, 270, 280, 0, 275, 12, 31, 33, 71, 29, + 648, 98, 109, 102, 72, 104, 75, 103, 422, 426, + 401, 402, 270, 435, 443, 0, 194, 0, 514, 237, + 635, 168, 270, 0, 173, 0, 0, 0, 0, 617, + 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, + 205, 206, 207, 210, 209, 212, 213, 215, 216, 217, + 218, 220, 221, 223, 225, 227, 609, 270, 611, 270, + 463, 47, 48, 0, 379, 89, 648, 74, 128, 0, + 78, 27, 275, 270, 379, 0, 270, 382, 370, 379, + 373, 379, 392, 278, 270, 648, 35, 0, 379, 89, + 648, 76, 270, 467, 270, 0, 632, 629, 203, 270, + 174, 172, 270, 270, 0, 556, 0, 379, 84, 85, + 86, 87, 88, 648, 79, 89, 0, 0, 0, 144, + 108, 153, 648, 0, 143, 0, 120, 125, 124, 123, + 122, 121, 126, 127, 130, 0, 260, 270, 384, 270, + 270, 379, 387, 0, 362, 0, 365, 279, 281, 0, + 38, 648, 648, 110, 648, 142, 270, 0, 195, 193, + 628, 515, 0, 176, 177, 614, 0, 55, 56, 64, + 65, 0, 53, 66, 0, 60, 0, 63, 0, 89, + 0, 90, 83, 81, 82, 0, 147, 0, 0, 0, + 0, 0, 140, 0, 0, 156, 163, 648, 155, 0, + 270, 276, 270, 270, 0, 385, 270, 371, 0, 374, + 0, 13, 106, 106, 141, 468, 553, 175, 270, 0, + 50, 52, 58, 57, 59, 0, 0, 106, 80, 106, + 148, 145, 152, 151, 0, 149, 150, 154, 139, 0, + 159, 0, 0, 0, 0, 0, 648, 262, 388, 379, + 383, 270, 363, 366, 99, 105, 101, 615, 68, 67, + 0, 0, 0, 92, 94, 146, 160, 157, 0, 161, + 162, 164, 117, 270, 0, 386, 389, 0, 54, 61, + 158, 129, 116, 270, 62, 131, 0, 0, 0 }; -static const short yydefgoto[] = { 1180, +static const short yydefgoto[] = { 1207, 82, 83, 84, 85, 122, 320, 321, 86, 667, 778, - 322, 803, 921, 87, 699, 923, 906, 89, 776, 777, - 881, 882, 883, 884, 808, 809, 895, 927, 896, 1034, - 1035, 1093, 1036, 1037, 897, 985, 986, 929, 1009, 1010, - 1157, 1158, 987, 930, 1011, 899, 1178, 1171, 900, 1055, - 901, 1046, 1109, 90, 289, 453, 455, 91, 1041, 1074, - 1042, 1137, 1043, 1106, 1107, 162, 163, 526, 164, 938, - 165, 166, 425, 564, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 558, 177, 560, 178, 559, 828, - 179, 207, 494, 333, 290, 93, 678, 784, 115, 606, - 94, 316, 181, 287, 116, 117, 905, 799, 916, 96, - 97, 98, 99, 347, 291, 461, 101, 297, 102, 788, - 1118, 791, 1120, 681, 1064, 684, 1066, 103, 908, 909, - 1061, 1062, 104, 689, 599, 600, 813, 119, 483, 112, - 113, 106, 614, 615, 484, 485, 486, 701, 620, 348, - 819, 815, 503, 372, 373, 208, 228, 209, 210, 374, - 935, 1078, 212, 664, 213, 214, 215, 216, 183, 430, - 375, 376, 488, 637, 377, 335, 514, 378, 188, 379, - 570, 786, 999, 221, 583, 521, 429, 190, 584, 585, - 380, 191, 192, 381, 661, 624, 382, 224, 383, 387, - 719, 755, 879, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 980, - 1128, 772, 1082, 384, 385, 197, 386, 294, 334, 200, - 109 + 322, 803, 919, 87, 699, 921, 904, 89, 776, 777, + 881, 882, 982, 983, 984, 1092, 1093, 1094, 1146, 1095, + 1096, 1097, 1181, 808, 809, 893, 925, 894, 1034, 1035, + 1104, 1036, 1037, 895, 985, 986, 927, 1009, 1010, 1175, + 1176, 987, 928, 1011, 897, 1204, 1194, 898, 1055, 899, + 1046, 1120, 90, 289, 453, 455, 91, 1041, 1074, 1042, + 1155, 1043, 1117, 1118, 162, 163, 526, 164, 936, 165, + 166, 425, 564, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 558, 177, 560, 178, 559, 828, 179, + 207, 494, 333, 290, 93, 678, 784, 115, 606, 94, + 316, 181, 287, 116, 117, 903, 799, 914, 96, 97, + 98, 99, 347, 291, 461, 101, 297, 102, 788, 1129, + 791, 1131, 681, 1064, 684, 1066, 103, 906, 907, 1061, + 1062, 104, 689, 599, 600, 813, 119, 483, 112, 113, + 106, 614, 615, 484, 485, 486, 701, 620, 348, 819, + 815, 503, 372, 373, 208, 228, 209, 210, 374, 933, + 1078, 212, 664, 213, 214, 215, 216, 183, 430, 375, + 376, 488, 637, 377, 335, 514, 378, 188, 379, 570, + 786, 999, 221, 583, 521, 429, 190, 584, 585, 380, + 191, 192, 381, 661, 624, 382, 224, 383, 387, 719, + 755, 879, 756, 757, 758, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 768, 769, 770, 771, 978, 1139, + 772, 1082, 384, 385, 197, 386, 294, 334, 200, 109 }; -static const short yypact[] = { 2013, --32768, 127, 5648,-32768, 6547,-32768, 701, 2968, 3340, 3340, +static const short yypact[] = { 2181, +-32768, 89, 5902,-32768, 6571,-32768, 817, 3148, 3526, 3526, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 446,-32768,-32768, +-32768, 2357,-32768,-32768,-32768, 207,-32768,-32768, 5594,-32768, + 110,-32768,-32768,-32768, 184, 6407, 6407,-32768, 6407, 131, + 160,-32768, 604,-32768,-32768, 817,-32768,-32768,-32768,-32768, +-32768,-32768, 89,-32768,-32768, 198,-32768, 131,-32768,-32768, +-32768, 5902,-32768, 230,-32768, 2353,-32768, 256, 307, 369, +-32768, 403, 817, 272, 417, 1001,-32768, 2729, 2353, 2353, + 2353, 2353, 2353, 2353,-32768, 3628, 3628, 425,-32768, 445, + 473, 503, 514, 523, 337, 5041,-32768, 566, 581,-32768, + 660,-32768, 755, 1187,-32768,-32768,-32768, 728, 331, 455, + 556, 500, 671, 584, 665, 686, 100,-32768,-32768, 260, +-32768, 3672, 657, 684,-32768,-32768,-32768,-32768, 766, 3294, +-32768, 5041,-32768, 3672,-32768, 3672,-32768,-32768, 778, 785, +-32768, 791,-32768, 2917, 660, 812, 332, 750, 3337,-32768, + 3526,-32768,-32768,-32768, 6167,-32768,-32768,-32768,-32768, 847, + 843,-32768, 3526, 3526, 3672,-32768,-32768, 792,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 664,-32768,-32768, --32768, 2189,-32768,-32768,-32768, 325,-32768,-32768, 5268,-32768, - 73,-32768,-32768,-32768, 90, 6386, 6386,-32768, 6386, 121, - 66,-32768, 364,-32768,-32768, 701,-32768,-32768,-32768,-32768, --32768,-32768, 127,-32768,-32768, 151,-32768, 121,-32768,-32768, --32768, 5648,-32768, 183,-32768, 5857,-32768, 229, 235, 266, --32768, 286, 701, 299, 305, 1655,-32768, 2555, 5857, 5857, - 5857, 5857, 5857, 5857,-32768, 5868, 5868, 340,-32768, 373, - 385, 397, 410, 428, 369, 4714,-32768, 430, 438,-32768, - 451,-32768, 937, 976,-32768,-32768,-32768, 474, 694, 525, - 542, 707, 468, 461, 489, 488, 96,-32768,-32768, 195, --32768, 3483, 462, 477,-32768,-32768,-32768,-32768, 572, 3111, --32768, 4714,-32768, 3483,-32768, 3483,-32768,-32768, 582, 591, --32768, 603,-32768, 2740, 451, 616, 201, 559, 3154,-32768, - 3340,-32768,-32768,-32768, 6146,-32768,-32768,-32768,-32768, 670, - 639,-32768, 3340, 3340, 3483,-32768,-32768, 599,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 873, 868,-32768,-32768,-32768, + 131, 5437,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 891, 802,-32768,-32768, 817, 817, 224,-32768, 207,-32768, +-32768,-32768,-32768, 913,-32768,-32768, 934, 919, 802, 110, +-32768, 288, 936,-32768, 817,-32768, 85, 2353,-32768,-32768, +-32768,-32768,-32768,-32768, 939, 2353, 2353, 2353, 1330, 945, +-32768,-32768,-32768, 367, 380, 6036, 396, 946, 948,-32768, +-32768,-32768,-32768,-32768,-32768, 963, 2353,-32768,-32768, 2353, + 952, 975, 977, 978, 980, 2353,-32768, 1749, 823, 823, + 823,-32768,-32768, 5041,-32768,-32768,-32768,-32768, 988,-32768, +-32768, 5041,-32768, 5041,-32768,-32768,-32768, 1940, 2353,-32768, +-32768, 125, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, + 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, + 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,-32768, +-32768,-32768,-32768, 2353, 482,-32768,-32768, 2541,-32768,-32768, + 1005,-32768, 1006,-32768, 2353, 562, 991, 1002,-32768,-32768, +-32768,-32768, 6167,-32768,-32768,-32768, 3105, 1017,-32768,-32768, + 2353, 291, 3774, 802, 1003,-32768, 802,-32768, 277, 6571, + 949, 1015, 1019, 1023, 1024, 1023, 817, 1025, 802,-32768, + 802,-32768,-32768,-32768, 951, 1013, 1022,-32768, 802, 288, +-32768, 817, 1027,-32768, 1029, 817, 348, 1031,-32768, 350, + 1033, 412, 1033, 1038,-32768,-32768,-32768,-32768, 1872, 1035, + 458,-32768, 695, 2353,-32768,-32768, 1036,-32768,-32768,-32768, +-32768,-32768,-32768, 1040, 1039, 860, 878, 882,-32768, 3774, +-32768,-32768, 1058, 1046,-32768, 442,-32768, 140, 817, 817, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 673, 682,-32768,-32768,-32768, - 121, 5111,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 696, 623,-32768,-32768, 701, 701, 483,-32768, 325,-32768, --32768,-32768,-32768, 698,-32768,-32768, 703, 713, 623, 73, --32768, 395, 695,-32768, 701,-32768, 418, 5857,-32768,-32768, --32768,-32768,-32768,-32768, 711, 5857, 5857, 5857, 1870, 721, --32768,-32768,-32768, 213, 733, 6015, 251, 730, 741,-32768, --32768,-32768,-32768,-32768,-32768, 745, 5857,-32768,-32768, 5857, - 757, 770, 772, 800, 802, 5857,-32768, 3393, 644, 644, - 644,-32768,-32768, 4714,-32768,-32768,-32768,-32768, 817,-32768, --32768, 4714,-32768, 4714,-32768,-32768,-32768, 1748, 5857,-32768, --32768, 103, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, - 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, - 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857,-32768, --32768,-32768,-32768, 5857, 766,-32768,-32768, 2370,-32768,-32768, - 829,-32768, 862,-32768, 5857, 843, 853, 865,-32768,-32768, --32768,-32768, 6146,-32768,-32768,-32768, 2925, 883,-32768,-32768, - 5857, 267, 3585, 623, 875,-32768, 623,-32768, 460, 6547, - 848, 895, 919, 922, 925, 922, 701, 951, 623,-32768, - 623,-32768,-32768,-32768, 889, 956, 969,-32768, 623, 395, --32768, 701, 973,-32768, 979, 701, 160, 984,-32768, 244, - 993, 245, 993, 1001,-32768,-32768,-32768,-32768, 5507, 998, - 535,-32768, 656, 5857,-32768,-32768, 1010,-32768,-32768,-32768, --32768,-32768,-32768, 1029, 1030, 877, 880, 881,-32768, 3585, --32768,-32768, 1045, 1040,-32768, 268,-32768, 155, 701, 701, +-32768,-32768,-32768,-32768, 728, 728, 331, 331, 455, 455, + 455, 455, 556, 556, 500, 671, 584, 2353, 2353, 2353, +-32768, 4408, 4633,-32768,-32768, 5825,-32768, 3483, 3957,-32768, +-32768, 1048, 489,-32768,-32768, 1050, 1049,-32768, 1055,-32768, + 4323,-32768,-32768, 4140, 4366,-32768, 1003,-32768,-32768, 1052, +-32768,-32768, 1071, 1073,-32768, 1076, 1079,-32768, 542,-32768, + 1083,-32768,-32768,-32768, 198,-32768, 199,-32768,-32768, 2353, + 374, 802,-32768,-32768, 1089,-32768,-32768, 1106, 6571,-32768, +-32768,-32768,-32768, 1088,-32768, 1330,-32768,-32768, 1090, 793, + 695, 1990, 1091,-32768,-32768,-32768, 1097,-32768,-32768, 1034, + 1042, 1044,-32768, 1102,-32768, 2353,-32768,-32768,-32768,-32768, + 665, 550, 686, 2353,-32768, 2353,-32768,-32768,-32768, 4548, + 5041, 2353,-32768, 4858, 2353,-32768,-32768,-32768,-32768,-32768, + 4591, 4773,-32768, 4816,-32768, 1098,-32768,-32768,-32768,-32768, +-32768, 1113,-32768,-32768, 1114,-32768, 817,-32768, 817, 1118, + 1797,-32768,-32768, 1111,-32768, 1116,-32768, 153,-32768,-32768, + 817, 540, 5041, 1121,-32768,-32768, 249, 1120,-32768, 1122, + 122, 1126, 1123,-32768,-32768,-32768,-32768, 2353, 4858,-32768, +-32768,-32768,-32768, 1125, 1127,-32768,-32768, 491, 2353, 2353, + 2353, 2353, 2353, 2353, 2353, 3628, 3628, 1129, 574, 579, + 594, 809, 1741, 601, 930, 602, 597, 638, 609, 1128, + 1119, 1130, 1101, 150, 1140,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 474, 474, 694, 694, 525, 525, - 525, 525, 542, 542, 707, 468, 461, 5857, 5857, 5857, --32768, 5888, 5913,-32768,-32768, 5496,-32768, 3297, 3765,-32768, --32768, 1041, 279,-32768,-32768, 1042, 1055,-32768, 1044,-32768, - 4125,-32768,-32768, 3945, 4168,-32768, 875,-32768,-32768, 1049, --32768,-32768, 1053, 1067,-32768, 1068, 1070,-32768, 830,-32768, - 1064,-32768,-32768,-32768, 151,-32768, 214,-32768,-32768, 5857, - 309, 623,-32768,-32768, 1069,-32768,-32768, 1087, 6547,-32768, --32768,-32768,-32768, 1071,-32768, 1870,-32768,-32768, 1066, 311, - 656, 5675, 1075,-32768,-32768,-32768, 1078,-32768,-32768, 1013, - 1014, 1020,-32768, 1085,-32768, 5857,-32768,-32768,-32768,-32768, - 489, 854, 488, 5857,-32768, 5857,-32768,-32768,-32768, 4307, - 4714, 5857,-32768, 5940, 5857,-32768,-32768,-32768,-32768,-32768, - 4350, 4489,-32768, 4532,-32768, 1086,-32768,-32768,-32768,-32768, --32768, 1094,-32768,-32768, 1097,-32768, 701,-32768, 701, 1101, - 4980,-32768,-32768, 1088,-32768, 1112,-32768, 551,-32768,-32768, - 701, 645, 4714, 1108,-32768,-32768, 114, 1113,-32768, 1115, - 110, 1122, 1119,-32768,-32768,-32768,-32768, 5857, 5940,-32768, --32768,-32768,-32768, 1120, 1121,-32768,-32768, 323, 5857, 5857, - 5857, 5857, 5857, 5857, 5857, 5868, 5868, 1123, 345, 353, - 366, 963, 1135, 449, 710, 914, 907, 726, 942, 1124, - 1117, 1111, 1099, 101, 1127,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 627, 632,-32768,-32768, 1021,-32768,-32768,-32768, + 4998,-32768,-32768,-32768,-32768, 6494,-32768,-32768, 6494,-32768, +-32768,-32768,-32768, 2353, 710,-32768, 1797,-32768,-32768, 1797, + 1080,-32768,-32768,-32768, 1144,-32768,-32768,-32768, 1331,-32768, + 207, 1147,-32768, 457,-32768, 695,-32768,-32768, 1148,-32768, +-32768,-32768, 1149, 817,-32768, 643, 1152, 2353,-32768,-32768, + 1160, 658, 1155, 674, 687, 711, 723, 725, 769, 772, + 784, 2353, 2016, 2353, 799, 800, 136, 2353, 2353, 2353, + 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, + 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, + 2353, 2353, 2353, 2353, 2353,-32768, 2353,-32768, 1161, 1163, +-32768, 1010, 359,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 907,-32768,-32768,-32768,-32768, 1117,-32768, +-32768, 1797, 395,-32768, 131, 5671,-32768, 6494, 5671, 6494, +-32768,-32768,-32768, 829,-32768,-32768,-32768,-32768,-32768,-32768, + 110, 361,-32768,-32768,-32768, 918,-32768,-32768, 483,-32768, +-32768,-32768, 2059,-32768,-32768, 512,-32768, 1170, 1003,-32768, +-32768, 805, 2353, 1168, 820, 822, 311, 817, 817,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 515, 545,-32768, 983, 1130,-32768,-32768,-32768, - 4671,-32768,-32768,-32768,-32768, 6473,-32768,-32768, 6473,-32768, --32768,-32768,-32768, 5857, 988,-32768, 4980,-32768,-32768, 4980, - 1072,-32768,-32768,-32768, 1132,-32768,-32768,-32768, 1192,-32768, - 325, 1137,-32768, 613,-32768, 656,-32768,-32768, 1138,-32768, --32768,-32768, 1141, 701,-32768, 547, 1142, 5857,-32768,-32768, - 1144, 562, 1143, 590, 627, 640, 731, 760, 774, 794, - 816, 5857, 5812, 5857, 828, 876, 118, 5857, 5857, 5857, - 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, - 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, - 5857, 5857, 5857, 5857, 5857,-32768, 5857,-32768, 1148, 1147, --32768,-32768,-32768, 994, 38,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 814,-32768,-32768,-32768,-32768, - 1051, 983,-32768, 4980, 226,-32768, 121, 5342,-32768, 6473, - 5342, 6473,-32768,-32768,-32768, 1027,-32768,-32768,-32768,-32768, --32768,-32768, 73, 72,-32768,-32768,-32768, 931,-32768,-32768, - 679,-32768,-32768,-32768, 5837,-32768,-32768, 304,-32768, 1154, - 875,-32768,-32768, 890, 5857, 1152, 896, 897, 165, 701, - 701,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 898, 909, 912, 660, 991, 506, 589, 233, - 762, 796, 879, 888, 1046, 387, 181, 403, 489, 5857, - 488, 5940,-32768, 644, 6277, 256, 70,-32768,-32768, 758, --32768,-32768,-32768,-32768,-32768, 1157, 686,-32768,-32768, 5342, --32768, 5342,-32768,-32768, 1937, 381,-32768, 1091, 6277, 256, - 70,-32768, 46,-32768,-32768, 701,-32768, 996, 934,-32768, - 941, 943,-32768,-32768, 1028,-32768, 999, 4953,-32768,-32768, --32768,-32768,-32768, 516,-32768, 256, 874, 59, 59,-32768, --32768, 100, 567, 1102,-32768, 77,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 625,-32768, 623,-32768,-32768, - 1161,-32768, 1162, 1163,-32768, 1165,-32768,-32768,-32768, 1118, --32768, 4795, 516,-32768, 567,-32768, 651, 1164,-32768,-32768, --32768,-32768, 1180, 946, 961,-32768, 1128, 1129, 256, 1139, --32768,-32768,-32768,-32768, 411, 100, 129, 701, 701, 59, - 1149,-32768, 77, 77,-32768, 143, 654,-32768, 77,-32768, --32768, 5857, 686, 1168,-32768,-32768,-32768, 1167,-32768, 1187, --32768, 1146, 1146,-32768,-32768,-32768, 967, 5857,-32768, 1146, --32768, 1146,-32768,-32768,-32768, 100, 1188,-32768,-32768, 100, --32768, 479, 143, 592, 701, 701, 77, 1150, 654,-32768, --32768,-32768,-32768, 5857,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 1193,-32768,-32768, 143,-32768, --32768, 1151,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1225, - 1228,-32768 + 837, 844, 858, 225, 883, 839, 926, 134, 345, 393, + 471, 530, 666, 86, 544, 121, 665, 2353, 686, 4858, +-32768,-32768,-32768, 1026, 6298, 27, 102,-32768,-32768, 654, +-32768,-32768,-32768,-32768,-32768, 1172, 242,-32768,-32768, 5671, +-32768, 5671,-32768,-32768, 1577, 603,-32768, 1104, 6298, 27, + 102,-32768, 694,-32768,-32768, 817,-32768, 1018, 864,-32768, + 865, 872,-32768,-32768, 915,-32768, 560, 5280,-32768,-32768, +-32768,-32768,-32768, 753,-32768, 27, 762, 147, 147,-32768, +-32768, 266, 759, 1105,-32768, 175,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 810,-32768, 802,-32768,-32768, + 1181,-32768, 1184, 1188,-32768, 1189,-32768,-32768,-32768, 1124, +-32768, 5122, 753,-32768, 759,-32768, 551, 1186,-32768,-32768, +-32768,-32768, 1190, 881, 890,-32768, 560,-32768,-32768,-32768, +-32768, 1133, 560,-32768, 958,-32768, 1192,-32768, 1134, 27, + 1135,-32768,-32768,-32768,-32768, 188, 266, 169, 817, 817, + 147, 1137,-32768, 175, 175,-32768, 352, 830,-32768, 175, +-32768,-32768, 2353, 242, 1195,-32768,-32768,-32768, 1197,-32768, + 1206,-32768, 1154, 1154,-32768,-32768,-32768, 929, 2353, 924, +-32768,-32768,-32768,-32768,-32768, 560, 560, 1154,-32768, 1154, +-32768,-32768,-32768, 266, 1201,-32768,-32768, 266,-32768, 469, + 352, 431, 817, 817, 175, 1141, 830,-32768,-32768,-32768, +-32768, 2353,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 560, 1212, 1207,-32768,-32768,-32768,-32768,-32768, 1208,-32768, +-32768, 352,-32768,-32768, 1145,-32768,-32768, 1209,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1236, 1239,-32768 }; static const short yypgoto[] = {-32768, --32768, 1153,-32768,-32768,-32768,-32768, -400, -102,-32768,-32768, - 904,-32768,-32768,-32768,-32768,-32768, 123,-32768, 453,-32768, - 341,-32768,-32768,-32768, -698,-32768,-32768,-32768, -700, 232, - 157,-32768,-32768, 208, 354,-32768,-32768, 321,-32768,-32768, - -674, -701,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1159,-32768,-32768,-32768,-32768, -394, -100,-32768,-32768, + 917,-32768,-32768,-32768,-32768,-32768, 88,-32768, 477,-32768, + 356,-32768,-32768,-32768,-32768, 164,-32768,-32768,-32768, -858, +-32768,-32768,-32768, -695,-32768,-32768,-32768, -707, 248, 159, +-32768,-32768, 232, 366,-32768,-32768, 335,-32768,-32768, -982, + -700,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -888, + 101, 258, -1011, 151,-32768, -618, 427, 1020,-32768,-32768, + -590,-32768,-32768, 35, -363, -342, -319, -343, -402, -401, + -338, -478, -462,-32768, -588,-32768, -117,-32768,-32768, 1261, + 1341, -613, -362, 1,-32768,-32768,-32768, -467,-32768,-32768, +-32768, 0, -238, 801,-32768, -806, -701,-32768,-32768,-32768, +-32768,-32768,-32768, 66, 682,-32768, 824,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1016, -703, -774,-32768, + 152,-32768,-32768, 586, 591, 465, 5, -373, 1167,-32768, + 8,-32768,-32768, -614,-32768,-32768,-32768, 582, -295, 935, +-32768, -487, 559,-32768, 1274,-32768, 1062,-32768, 650,-32768, +-32768,-32768,-32768, -99,-32768,-32768,-32768,-32768, 117, 1099, + 1282,-32768,-32768, 1361,-32768,-32768, -321,-32768, 744, 205, + -606, -790,-32768, 768,-32768,-32768, 866, -82, -344, 163, +-32768, 180, 57,-32768,-32768, 62,-32768, 83,-32768,-32768, + 577,-32768, 317,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -824, 107, 241, -905, 145,-32768, -590, 413, 981,-32768, --32768, -587,-32768,-32768, 219, -338, -312, -234, -308, -314, - -401, -352, -431, -544,-32768, -565,-32768, -111,-32768,-32768, - 1096, 1098, -613, -365, 2,-32768,-32768,-32768, -463,-32768, --32768,-32768, 0, -256, 786,-32768, -805, -708,-32768,-32768, --32768,-32768,-32768,-32768, 68, 671,-32768, 612,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 446, -744, -738, --32768, 149,-32768,-32768, 578, 594, 465, 5, -408, 1170, --32768, 8,-32768,-32768, -616,-32768,-32768,-32768, 585, -238, - 948,-32768, -493, -43,-32768, 1280,-32768, 1073,-32768, 1095, --32768,-32768,-32768,-32768, -68,-32768,-32768,-32768,-32768, 102, - 1131, 1140,-32768,-32768, 1323,-32768,-32768, -359,-32768, 1036, - 216, -594, -809,-32768, 773,-32768,-32768, 868, -82, -395, - 37,-32768, 211, 105,-32768,-32768, 175,-32768, 200,-32768, --32768, 581,-32768, 319,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1435,-32768,-32768, 1544, -201, 271, 78, --32768 +-32768,-32768, 1409,-32768,-32768, 1512, -205, 227, 453,-32768 }; -#define YYLAST 6732 +#define YYLAST 6759 static const short yytable[] = { 95, - 513, 92, 95, 309, 105, 604, 292, 631, 515, 114, - 229, 230, 704, 708, 332, 653, 556, 231, 232, 233, + 92, 604, 95, 513, 105, 309, 292, 462, 332, 114, + 229, 230, 704, 631, 555, 708, 556, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 579, 911, 222, 222, 257, 258, 259, + 254, 255, 256, 545, 546, 742, 515, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 462, 477, 557, 100, 545, 546, - 118, 499, 121, 742, 284, 898, 744, 108, 613, 2, - 108, 95, 1038, 92, 124, 577, 105, 293, 915, 789, - 293, 917, 1039, 1038, 823, 588, 547, 548, 754, 301, - 1103, 1001, 555, 1039, 920, 95, 553, 554, 928, 184, - 1104, 1006, 193, 295, 481, 314, 315, 317, 475, 753, - 312, 323, 88, -73, -73, 1097, 651, 1098, 742, 325, - 529, 744, 443, 629, 822, 437, 421, 346, -250, 499, - 441, 876, 442, 1099, 356, 950, 530, 2, 431, 100, - 303, 422, 1038, 754, 446, 1134, 877, -80, -80, 108, - 2, 951, 1039, 296, 296, 1000, 296, 1002, 1144, 998, - 1145, 313, 998, 660, 753, 424, 549, 550, 551, 552, - 424, 648, 194, 108, 497, 424, 1146, 1056, 672, 324, - 1065, 1022, 1067, 910, 898, 993, 912, 1142, 1143, 326, - 991, -585, 696, 346, 88, -585, 327, 195, 816, 417, - 340, 697, 423, 1095, 1096, 424, -73, -73, 439, 223, - 223, 424, 1007, 477, 76, 77, 123, 515, 79, 80, - 496, 293, 752, 424, 110, 111, 692, 76, 1040, 349, - 222, 1169, 193, 994, 694, 222, 995, 222, 76, 1040, - -80, -80, 336, -575, 332, 76, 1105, -575, 337, 222, - 222, 998, 750, 998, 424, 424, 710, 635, 623, 625, - 107, 481, 1136, 107, -250, 1140, 499, 107, 199, 199, - 199, 409, 410, 426, 2, 451, 193, 752, 646, 338, - 301, 578, 647, 456, 193, 432, 1069, 433, 193, 424, - 193, 95, 460, 663, 463, 465, 459, 76, 1040, 339, - 1135, 751, 194, 481, 708, 481, 341, 750, 95, 1136, - 816, 1014, 342, 474, 323, 745, 448, 346, 1015, 193, - 519, 1016, 981, 695, -359, 706, -359, 195, 522, 332, - 523, 1029, 1030, 424, -359, 569, 500, 831, -251, 749, - 286, 746, 107, 462, 501, 748, 194, 350, 351, 352, - 353, 354, 355, 360, 194, -540, 751, 346, 194, -540, - 194, 1031, 1032, -539, 366, 367, 107, -539, 441, 108, - 745, 195, 464, 466, 468, 1033, -541, 332, 361, 195, - -541, 742, 107, 195, 744, 195, 108, 713, 293, 194, - 362, 995, 326, 107, 749, 693, 746, -583, 199, 582, - 748, -583, 363, 498, 223, 724, 754, 725, -251, 223, - 476, 223, 481, -587, 195, 364, 199, -587, 913, 747, - 305, 306, 307, 223, 223, 1133, 1097, 753, 1098, 415, - 416, 418, 365, 979, 456, -359, -359, -359, 1159, -359, - -359, -631, 199, 95, 1099, 1161, 95, 1162, 586, -635, - 199, 589, 199, 594, 199, 597, 199, 603, 95, -561, - 95, 977, -632, -561, 199, 610, 582, -359, 323, 199, - -359, 199, -359, 222, 747, 619, 325, -359, -359, -359, - 833, -359, -359, 199, 199, 199, 417, 627, 332, 418, - 500, 467, 633, 1164, 1144, 460, 1145, 404, 405, 406, + 270, 271, 272, 273, 193, 100, 547, 548, 118, 194, + 121, 553, 554, 744, 284, 754, 896, 789, 579, 651, + 557, 95, 92, 477, 613, 909, 105, 88, 577, 481, + 195, 549, 550, 551, 552, 913, 823, 653, 915, 301, + 742, 926, 1160, 1161, 437, 95, -603, 918, 1006, 441, + -603, 442, 1029, 1030, 475, 314, 315, 317, 1001, 293, + 312, 323, 2, 446, 184, 1038, 481, 293, 744, 325, + 754, 998, 443, 588, 998, 1039, 629, 346, 415, 416, + 421, -607, 1031, 1032, 356, -607, 822, 100, -270, 1106, + 1107, 1177, 529, 1192, -595, 422, 1033, 806, -595, 418, + 424, 296, 296, 948, 296, 1184, 648, 1185, 530, 88, + 1038, 222, 222, 350, 351, 352, 353, 354, 355, 949, + 1039, 908, 409, 410, 910, 752, 1056, 324, 223, 223, + 876, 991, 1038, 896, 193, 1152, 110, 111, 1114, 194, + 993, 753, 1039, 346, 1000, 877, 1002, 295, 1115, 1065, + 635, 1067, 1151, 1108, 816, 1109, 293, 697, 313, 1154, + 195, 692, 1158, 1007, 660, 998, 107, 998, 1140, 107, + -271, 1110, 286, 107, 199, 199, 199, 696, 193, 672, + 752, 477, 467, 194, 303, -590, 193, 694, 332, -590, + 193, 194, 193, 327, 349, 194, 753, 194, 404, 405, + 406, 749, 750, 1060, 195, 515, -379, -379, -379, 710, + -379, -379, 195, 1154, 499, 2, 195, 423, 195, 336, + 424, 193, 2, 76, 1040, 451, 194, 1182, 1183, 341, + 301, 1108, 456, 1109, -379, 481, 462, -379, 426, -379, + 745, 95, 460, 1069, 463, 465, 459, 195, 107, 1110, + 432, -271, 433, 476, 708, 578, 749, 750, 95, 1014, + 748, 746, 1198, 474, 323, 751, 816, 346, 76, 1040, + 337, 424, 107, 332, 76, 77, 123, 1022, 79, 80, + 713, 448, 366, 367, 747, 569, 500, 441, 107, 439, + 76, 1040, 424, 1153, 501, 745, 76, 1116, 724, 107, + 725, 742, 407, 408, 199, -596, 222, 346, 424, -596, + 424, 222, 497, 222, 623, 748, 746, 1162, 481, 1163, + 751, 332, 199, 223, 496, 222, 222, 424, 223, 744, + 223, 754, 338, 409, 410, 1164, 977, 423, 695, 747, + 424, 693, 223, 223, 497, 76, 77, 123, 199, 79, + 80, 498, 994, -597, 979, 995, 199, -597, 199, -270, + 199, 499, 199, 76, 77, 123, 339, 79, 80, 2, + 199, 911, 424, 833, 342, 199, 625, 199, 542, 543, + 544, 409, 410, 456, -93, -93, -100, -100, 360, 199, + 199, 199, 108, 95, 1038, 108, 95, 1188, 586, 124, + 361, 589, 646, 594, 1039, 597, 647, 603, 95, 974, + 95, 975, -379, -379, -379, 610, -379, -379, 323, -657, + -270, -270, 499, 499, 193, 619, 325, 481, 362, 194, + 2, -598, 332, 1187, 1162, -598, 1163, 627, 964, 965, + 500, 752, 633, 409, 410, 460, -379, 706, -379, 424, + 195, 424, 1164, 663, 332, 831, -379, 753, 363, 409, + 410, 966, 967, 562, 563, 498, 972, 973, 107, 364, + -657, 107, 107, 107, 108, 976, 1015, 365, 634, 1016, + -93, -93, -100, -100, 567, 107, 968, 969, 970, 971, + -600, 107, 415, 416, -600, -379, -379, -379, 108, -379, + -379, 686, 687, -270, -605, 499, 411, 412, -605, 456, + 424, 723, 417, 2, 326, -430, 499, 749, 750, 439, + 413, 414, 424, 1087, 456, 340, 497, -651, 676, 631, + 1122, 460, 411, 412, -560, 516, 517, 518, -560, -559, + 199, 811, -655, -559, 690, 691, 413, 414, 199, 222, + 199, 323, 76, 1040, -561, 1153, 745, 1018, -561, 325, + 293, -581, 418, 995, 193, -581, 223, -657, -657, 194, + 633, -657, -657, 862, 863, 460, 748, 746, 76, 77, + 123, 751, 79, 80, 931, 864, 865, -558, 721, 722, + 195, -558, 424, 346, 199, 346, 880, 182, 211, 211, + 747, 870, 871, 424, -379, -379, -379, 938, -379, -379, + 305, 306, 307, 199, 866, 867, 332, 785, 424, 199, + 107, -652, 942, 107, 702, 792, -601, 794, 868, 869, + -601, 800, 801, 107, -575, 107, 805, 107, -575, 417, + 619, 812, 411, 412, 419, 107, 500, -580, 107, 814, + 940, -580, 107, 811, 501, 1008, 413, 414, -270, 499, + 632, 76, 77, 123, 1083, 79, 80, 2, 346, 912, + 687, -579, 76, 77, 123, -579, 79, 80, 1088, 1089, + 420, 76, 1090, -578, 1091, -577, 199, -578, 427, -577, + 431, 189, 220, 220, 108, 107, 107, 464, 466, 468, + 1169, 404, 405, 406, 834, 835, 836, 837, 838, 839, + 293, 108, 1047, 1100, 1048, -488, 293, 326, 388, 1111, + 389, 1044, -379, 902, 428, 1049, 1050, 182, 1051, -576, + 1052, 1053, -573, -576, 199, 199, -573, 481, -379, -654, + 1070, 390, 391, 1054, -574, 1076, 434, 199, -574, 1197, + 199, 199, 930, 812, 435, 633, -379, 706, -379, -570, + -571, 814, 1099, -570, -571, -562, -379, 1121, 1101, -562, + 995, 182, 843, -653, 844, 2, -379, 1112, 107, 182, + -565, 440, 646, 182, -565, 182, 1021, 293, 1004, 1005, + 1165, 905, -379, 211, 905, 845, 846, -585, 211, -592, + 211, -585, 445, -592, -586, 444, 1133, 1134, -586, 1135, + 407, 408, 211, 211, 182, 76, 77, 123, -587, 79, + 80, 189, -587, 449, -583, -566, 199, 199, -583, -566, + 773, 452, -564, 961, 962, 963, -564, 199, 199, 450, + 199, -568, 1028, -589, 996, -568, 108, -589, 458, 108, + -569, 1003, 1166, 107, -569, 107, 404, 405, 406, 601, + 298, 108, 300, 108, 107, 189, 1072, 107, 107, 199, + 470, 326, 519, 189, 616, 424, 1086, 189, 621, 189, + 522, 473, 523, 76, 1103, 773, -593, 220, 438, -567, + -593, 472, 220, -567, 220, 1179, 1180, 407, 408, 478, + 489, 1195, 495, 859, 860, 861, 220, 220, 189, 508, + 504, 905, 505, 905, 905, 905, 309, 1019, 883, 884, + 885, 649, 650, 76, 77, 123, 506, 79, 80, 922, + 923, 924, 509, 1057, 510, 511, 95, 512, 76, 77, + 123, 1063, 79, 80, 76, 332, 520, 199, 1143, 1144, + 1145, 582, 812, 571, 1079, 574, 572, 589, 343, 460, + 1077, 1178, 1084, 1085, 328, 575, 587, 576, 456, 139, + 140, 141, 142, 143, 144, 592, 591, 593, 608, 609, + 107, -270, 596, 602, 640, 611, 145, 146, 147, 618, + 107, 617, 622, 424, 332, 626, 636, 95, 630, 1123, + 1125, 638, 641, 639, 326, 905, 642, 905, 644, 645, + 148, 662, 456, 665, 677, 666, 812, 182, 582, 668, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 332, 978, 1146, 966, 967, 582, -572, 498, 419, 567, - -572, 108, 193, 293, 108, -538, 1089, 407, 408, -538, - 582, 675, 420, 299, 601, 302, 108, 304, 108, 308, - 752, 968, 969, 427, 310, 806, 326, 976, -250, 616, - 499, 974, 975, 621, 318, 424, 319, 424, -468, 880, - 456, 940, 107, 409, 410, 107, 107, 107, 411, 412, - 750, 1018, 424, 631, 293, 456, 944, 1100, 676, 107, - 428, 460, 413, 414, 1111, 107, -359, -359, -359, 811, - -359, -359, 194, -634, 690, 691, 649, 650, 392, -573, - -555, 323, 434, -573, -555, 1038, 675, 727, 1165, 325, - 407, 408, 542, 543, 544, 1039, 435, 195, 675, 751, - 633, 970, 971, 972, 973, 460, -250, -633, 499, 516, - 517, 518, 1110, 745, 199, 995, 2, -560, 721, 722, - 440, -560, 199, 346, 199, 346, 2, 223, 445, 817, - -559, 76, 77, 123, -559, 79, 80, 749, -250, 746, - 499, 293, 193, 748, 1147, -410, 499, 785, 2, -250, - -570, 632, 332, 481, -570, 792, 702, 794, 444, 326, - 449, 800, 801, 404, 405, 406, 805, -637, 199, 450, - 619, 812, -359, 706, -359, 452, 500, 1060, 298, 814, - 300, 811, -359, 458, 501, 470, 942, 199, 478, 2, - 472, 1008, 634, 199, 107, 407, 408, 107, 346, 76, - 77, 123, 489, 79, 80, 473, 454, 107, 495, 107, - 457, 107, 194, 859, 860, 861, 1151, 747, -637, 107, - 423, -558, 107, 424, 504, -558, 107, 497, 469, 415, - 416, 471, 866, 867, 601, 505, 601, 195, 506, 479, - 76, 1040, 482, 1135, 508, 807, 868, 869, 621, 108, - -557, 1083, -576, 904, -557, 1044, -576, 509, 1174, 510, - 199, 76, 77, 123, -556, 79, 80, 933, -556, 107, - 107, 76, 77, 123, 1070, 79, 80, 562, 563, 1076, - 409, 410, 932, 812, -553, 633, -577, 511, -553, 512, - -577, 814, 76, 76, 77, 123, 1088, 79, 80, 76, - 77, 123, 1090, 79, 80, 520, -554, 571, 199, 199, - -554, 1101, -637, -637, 409, 410, -637, -637, -550, 686, - 687, 199, -550, 907, 199, 199, 907, -359, -359, -359, - 439, -359, -359, 424, 76, 77, 123, 497, 79, 80, - 1122, 1123, 572, 1124, 424, 723, 1047, 574, 1048, 76, - 77, 123, 107, 79, 80, 885, 886, 887, 575, 1049, - 1050, 108, 1051, 576, 1052, 1053, -551, 482, 587, -578, - -551, 939, 1028, -578, 590, 1148, 996, 1054, -580, 595, - -542, 598, -580, 1003, -542, 592, -545, 646, -565, 607, - -545, 1021, -565, 612, 411, 412, 1072, 409, 410, -566, - 199, 199, -567, -566, 773, 591, -567, 593, 413, 414, - -250, 199, 199, 596, 199, 862, 863, 1172, 834, 835, - 836, 837, 838, 839, -563, 864, 865, 107, -563, 107, - 388, -546, 389, -544, -359, -546, -548, -544, 107, 602, - -548, 107, 107, 199, 309, 907, 608, 907, 907, 907, - -359, -549, 609, 390, 391, -549, 843, -547, 844, 773, - -359, -547, 611, 1057, 870, 871, 95, 617, 393, 618, - 332, 1063, 924, 925, 926, 622, -359, 914, 687, 845, - 846, -569, 812, 424, 1079, -569, 1160, 589, 626, 460, - 1077, 630, 1084, 1085, 404, 405, 406, 1023, 1024, 456, - 636, 590, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 332, 189, 220, 220, 1004, 1005, 424, 1086, - 638, 199, 76, 1092, 639, 644, 482, 95, 640, 1112, - 1114, 641, 642, 645, 662, 665, -581, 907, 668, 907, - -581, 677, 680, 456, 108, 707, 812, 963, 964, 965, - 712, 666, 411, 412, 107, 682, 688, 683, 685, 698, - 108, 700, 705, 1080, 107, 703, 413, 414, 711, 714, - 715, 716, 182, 211, 211, 180, 331, 717, 718, 1150, - 783, 775, 95, 787, 802, 1154, 790, 1063, 796, 331, - 331, 331, 331, 331, 331, 818, 358, 359, 888, 889, - 890, 891, 892, 893, 894, 108, 804, 820, 185, 217, - 217, 821, 824, 825, 829, 830, 842, 186, 218, 218, - 874, 878, 872, 875, 108, 873, 922, 848, -48, 918, - 931, 943, 936, 1019, 983, 937, 941, 945, 982, 984, - 1176, 1017, 1020, 189, 1059, 1138, 1139, 1179, 1071, 1081, - 1087, 1113, 1117, 1116, 1119, 1153, 1155, 847, 1125, 1102, - 108, 849, 850, 851, 852, 853, 854, 855, 856, 857, - 858, 885, 886, 887, 1127, 1121, 1156, 888, 889, 890, - 891, 892, 893, 894, 1163, 1129, 1130, 189, 886, 1175, - 107, 107, 1167, 1168, 1181, 189, 1132, 1182, 480, 189, - 902, 189, 182, 344, 285, 345, 1141, 1170, 1177, 220, - 438, 1073, 992, 1091, 220, 1131, 220, 919, 1012, 988, - 1166, 1075, 773, 1149, 1027, 948, 605, 1045, 220, 220, - 189, 1152, 679, 924, 925, 926, 795, 107, 185, 888, - 889, 890, 891, 892, 893, 894, 182, 186, 934, 180, - 793, 1045, 311, 107, 182, 810, 107, 180, 182, 227, - 182, 180, 643, 180, 502, 568, 447, 1126, 211, 827, - 1026, 436, 0, 211, 0, 211, 0, 1094, 1045, 1045, - 0, 0, 185, 0, 0, 0, 1108, 211, 211, 182, - 185, 186, 180, 0, 185, 0, 185, 0, 107, 186, - 187, 219, 219, 186, 217, 186, 0, 0, 0, 217, - 0, 217, 0, 218, 989, 990, 331, 107, 218, 0, - 218, 0, 997, 217, 217, 185, 0, 0, 0, 0, - 0, 0, 218, 218, 186, 0, 0, 1045, 107, 107, - 1045, 0, 0, 1108, 1108, 0, 1013, 0, 0, 1108, - 0, 0, 0, 107, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 680, 682, 883, 884, 885, 683, 211, 685, 886, 887, + 888, 889, 890, 891, 892, 688, 185, 217, 217, 698, + 700, 157, 703, 299, 711, 302, 705, 304, 714, 308, + 1168, 715, 783, 95, 310, 718, 1172, 582, 1063, 716, + 524, 717, 787, 790, 318, 796, 319, 802, 818, 601, + 804, 601, 582, 675, 820, 331, 824, 825, 821, 829, + 807, 830, 842, 621, 108, 875, 872, 873, 331, 331, + 331, 331, 331, 331, 878, 358, 359, 916, 920, 874, + 929, 189, 934, 935, 107, 107, 939, 941, 392, 943, + 981, 980, 76, 329, 330, 160, -49, 1017, 1020, 1059, + 220, 1071, 1113, 1202, 886, 887, 888, 889, 890, 891, + 892, 1124, 1027, 1206, 1081, 1127, 773, 1128, 1130, 393, + 1136, 1132, 1171, 1045, 1138, 1147, 1173, 182, 675, 727, + 1141, 1148, 1150, 107, 1159, 1174, 884, 1186, 1193, 1199, + 675, 1200, 1203, 1205, 1201, 1208, 185, 1045, 1209, 107, + 285, 480, 107, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 1098, 900, 992, 1142, 1073, 1149, 988, + 1012, 817, 1189, 1105, 1045, 1045, 108, 1102, 1075, 946, + 1167, 605, 1119, 679, 795, 1170, 937, 793, 932, 311, + 185, 502, 810, 227, 107, 447, 1137, 643, 185, 186, + 218, 218, 185, 568, 185, 827, 1026, 0, 0, 0, + 0, 0, 217, 107, 0, 0, 454, 217, 0, 217, + 457, 189, 0, 1098, 0, 0, 0, 0, 0, 1098, + 0, 217, 217, 185, 0, 0, 0, 0, 469, 0, + 0, 471, 0, 0, 1045, 107, 107, 1045, 0, 479, + 1119, 1119, 482, 0, 0, 0, 1119, -252, 180, 0, + 107, 0, 0, 328, 0, 0, 0, 0, 139, 140, + 141, 142, 143, 144, 0, 0, 0, 0, 187, 219, + 219, 0, 1098, 1098, 0, 145, 146, 147, 0, 0, + 0, 0, 0, 0, 0, 331, 0, 0, 1045, 107, + 107, 1119, 0, 0, 0, 0, 0, 0, 0, 148, + 1023, 1024, 922, 923, 924, 0, 0, 1098, 886, 887, + 888, 889, 890, 891, 892, 0, 196, 225, 225, 186, + 0, 0, 0, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, + 157, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1045, 107, 107, 1108, 0, 0, - 0, 0, 524, 0, 0, 487, 0, 0, 0, 0, - 0, 331, 0, 490, 491, 492, 493, 0, 0, 0, - 1058, 0, 196, 225, 225, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 487, 507, 0, 0, 0, 0, - 187, 0, 0, 189, 0, 487, 0, 0, 0, 0, + 0, 0, 0, 186, 0, 108, 0, 482, 1080, 0, + 331, 186, 0, 0, 590, 186, 344, 186, 345, 595, + 0, 598, 0, 0, 0, 218, 0, 0, 0, 607, + 218, 0, 218, 612, 0, 0, 0, 0, 187, 0, + 0, 0, 0, 0, 218, 218, 186, 0, 0, 0, + 108, 76, 329, 330, 160, 0, 0, 0, 331, 198, + 226, 226, 180, 331, 0, 0, 185, 0, 0, 108, + 180, 0, 0, 0, 180, 0, 180, 0, 0, 0, + 0, 0, 187, 0, 436, 217, 196, 0, 0, 0, + 187, 0, 0, 0, 187, 0, 187, 0, 0, 0, + 0, 1156, 1157, 0, 219, 180, 0, 0, 0, 219, + 0, 219, 0, 0, 0, 0, 108, 331, 0, 331, + 0, 655, 657, 219, 219, 187, 0, 0, 0, 0, + 196, 0, 0, 0, 0, 797, 1068, 0, 196, 0, + 328, 590, 196, 0, 196, 139, 140, 141, 142, 143, + 144, 0, 225, 0, 0, 1190, 1191, 225, 0, 225, + 507, 0, 145, 146, 147, 0, 482, 0, 0, 331, + 0, 225, 225, 196, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 707, 148, 0, 527, 198, + 712, 331, 0, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 541, 0, 0, 185, 0, 487, 0, + 0, 0, 0, 0, 0, 0, 490, 491, 492, 493, + 0, 775, 0, 743, 561, 0, 0, 157, 0, 0, + 0, 0, 0, 198, 0, 0, 0, 487, 0, 0, + 0, 198, 0, 0, 0, 198, 0, 198, 487, 186, + 0, 0, 0, 0, 0, 226, 0, 0, 0, 0, + 226, 0, 226, 0, 0, 0, 0, 0, 218, 528, + 0, 0, 0, 0, 226, 226, 198, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 220, 527, 331, 0, 528, 0, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 0, - 0, 0, 0, 0, 187, 0, 0, 1115, 0, 0, - 0, 0, 187, 0, 0, 0, 187, 0, 187, 561, - 0, 0, 182, 0, 0, 180, 219, 0, 0, 0, - 0, 219, 573, 219, 0, 0, 0, 0, 331, 0, - 331, 211, 655, 657, 0, 219, 219, 187, 0, 0, - 0, 198, 226, 226, 0, 0, 0, 0, 185, 0, - 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, - 0, 0, 196, 0, 0, 0, 0, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 218, 0, 0, 0, - 331, 0, 0, 0, 0, 0, 0, 1173, 0, 0, - 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 331, 0, 0, 0, 196, 0, 0, 0, - 0, 0, 0, 0, 196, 0, 0, 0, 196, 0, - 196, 0, 0, 0, 0, 0, 0, 0, 225, 0, - 0, 0, 0, 225, 743, 225, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 652, 225, 225, 196, - 0, 0, 182, 0, 0, 180, 0, 0, 0, 0, - 0, 0, 343, 0, 0, 0, 0, 0, 328, 0, - 0, 198, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 185, 743, - 145, 146, 147, 0, 0, 0, 0, 186, 0, 0, - 331, 331, 331, 331, 331, 331, 840, 841, 0, 0, - 0, 0, 0, 493, 148, 198, 0, 0, 0, 0, - 0, 0, 0, 198, 0, 0, 0, 198, 0, 198, - 0, 720, 0, 0, 0, 0, 0, 226, 0, 0, - 187, 487, 226, 487, 226, 0, 0, 0, 0, 728, - 0, 0, 774, 0, 0, 157, 226, 226, 198, 219, - 0, 328, 525, 0, 331, 0, 139, 140, 141, 142, - 143, 144, 0, 0, 0, 0, 798, 0, 0, 0, - 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, - 0, 0, 0, 0, 0, 826, 0, 148, 0, 0, - 0, 0, 0, 0, 0, 0, 832, 0, 0, 0, - 0, 0, 0, 76, 329, 330, 160, 0, 0, 331, + 331, 331, 331, 331, 331, 840, 841, 847, 76, 329, + 330, 160, 0, 848, 0, 0, 0, -514, 180, 0, + 0, 0, 368, 0, 0, 573, 0, 139, 140, 141, + 142, 143, 144, 0, 0, 0, 0, 0, 187, 0, + 0, 0, 0, 0, 145, 146, 147, 849, 850, 851, + 852, 853, 854, 855, 856, 857, 858, 219, 0, 0, + 0, 0, 0, 331, 0, 797, 0, 917, 148, 0, + 328, 0, 0, 0, 0, 139, 140, 141, 142, 143, + 144, 0, 0, 0, 0, 0, 196, 0, 0, 0, + 0, 0, 145, 146, 147, 0, 0, 331, 0, 186, + 0, 0, 0, 0, 0, 225, 0, 0, 0, 157, + 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 0, 331, 157, 0, - 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 0, 0, 0, 0, 0, -232, 0, 0, - 187, 0, 798, 328, 0, 798, 0, 0, 139, 140, + 331, 331, 331, 331, 331, 328, 331, 0, 628, 652, + 139, 140, 141, 142, 143, 144, 720, 157, 180, 0, + 0, 0, 989, 990, 0, 0, 0, 145, 146, 147, + 997, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 76, 329, 330, 160, 0, 0, 0, 0, 0, 198, + 0, 148, 0, 0, 1013, 0, 0, 0, 0, 0, + 0, 798, 0, 0, 0, 0, 0, 0, 226, 0, + 0, 0, 331, 328, 525, 0, 493, 0, 139, 140, + 141, 142, 143, 144, 0, 0, 196, 0, 76, 329, + 330, 160, 157, 0, 0, 145, 146, 147, 0, 0, + 0, 0, 0, 0, 487, 0, 487, 0, 0, 743, + 0, 0, 728, 0, 0, 774, 0, 0, 0, 148, + 1058, 0, 0, 328, 0, 0, 709, 0, 139, 140, 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 146, 147, 0, 0, - 0, 0, 0, 0, 0, 331, 76, 329, 330, 160, - 0, 0, 0, 0, 0, 0, 0, 946, 527, 148, - 0, 949, 0, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 0, 797, 1068, 0, 0, 0, - 328, 0, 743, 0, 0, 139, 140, 141, 142, 143, - 144, 198, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 0, 145, 146, 147, 0, 0, 0, 0, 0, - 226, 0, 0, 0, 0, 0, 0, 0, 0, 798, - 0, 0, 196, 0, 0, 0, 148, 0, 0, 0, - 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 493, 0, 0, 0, -250, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, 157, 76, 329, - 330, 160, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 145, 146, 147, 0, 328, + 945, 0, 0, 0, 139, 140, 141, 142, 143, 144, + 157, 0, 0, 76, 329, 330, 160, 798, 826, 148, + 798, 145, 146, 147, 0, 0, 0, 0, 0, 832, + 0, 0, 0, 0, 0, 0, 0, 1126, 0, 198, + 0, 0, 328, -252, 0, 148, 0, 139, 140, 141, + 142, 143, 144, 0, 0, 0, 0, 0, 0, 0, + 157, 0, 944, 527, 145, 146, 147, 0, 950, 951, + 952, 953, 954, 955, 956, 957, 958, 959, 960, 0, + 0, 76, 329, 330, 160, 0, 157, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1025, 0, -359, - -359, -359, 0, 4, 0, 0, 0, 5, 6, 7, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, - 798, 8, 9, 10, 0, 0, 0, 0, 331, 0, - 0, 198, 0, 0, 0, 76, 329, 330, 160, 0, - 11, 12, 13, 0, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 331, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, -2, 1, - 0, 76, 77, 78, 0, 79, 80, 81, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 798, 0, 0, 0, 0, 0, 0, 157, + 0, 76, 329, 330, 160, 0, 0, 0, 0, 0, + -1, 1, 0, 0, 947, 1196, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 76, 329, 330, + 160, 0, 0, 0, -270, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 76, 329, 330, 160, 0, 0, 0, -379, -379, -379, + 0, 4, 0, 0, 0, 5, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 798, 0, 0, 0, 8, + 9, 10, 0, 493, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, + 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 1025, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -2, 1, 0, 0, + 0, 0, 76, 77, 78, 0, 79, 80, 81, 0, + 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, + -270, 139, 140, 141, 142, 143, 144, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 145, 146, + 147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -359, -359, -359, 0, 4, - 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, + 0, 0, 148, -379, -379, -379, 0, 4, 0, 0, + 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 12, 13, 0, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 0, 0, 0, 76, 77, 78, - 125, 79, 80, 81, 0, 126, 127, 128, 0, 129, - 130, 131, 132, 133, 134, 135, 136, 137, -494, 565, - 0, 0, 0, 138, 0, 0, 0, 0, 139, 140, - 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, -250, -250, 0, 3, 145, 146, 147, 0, 0, + 0, 0, 0, 157, 11, 12, 13, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 0, 0, 76, 329, 330, 160, 76, 77, + 78, 125, 79, 80, 81, 0, 126, 127, 128, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -514, + 565, 0, 0, 0, 138, 0, 0, 0, 0, 139, + 140, 141, 142, 143, 144, 0, 0, 0, 0, 0, + 0, 0, -270, -270, 0, 3, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -359, -359, -359, 148, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -379, -379, -379, + 148, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 11, 12, 13, - 157, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 0, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 0, 0, 0, 76, 158, - 566, 160, 161, 80, 81, 125, 0, 0, 0, 0, - 126, 127, 128, 0, 129, 130, 131, 132, 133, 134, - 135, 136, 137, -494, 0, 0, 0, 0, 138, 0, - 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, -250, -250, 0, 0, - 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 150, 151, 152, 153, 154, 155, 0, + 0, 0, 0, 0, 0, 0, 0, 156, 11, 12, + 13, 157, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 0, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, + 0, 0, 76, 158, 566, 160, 161, 80, 81, 125, + 0, 0, 0, 0, 126, 127, 128, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 137, -514, 0, 0, + 0, 0, 138, 0, 0, 0, 0, 139, 140, 141, + 142, 143, 144, 0, 0, 0, 0, 0, 0, 0, + -270, -270, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -250, -250, -250, 148, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -270, -270, -270, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - 0, 156, -250, -250, -250, 157, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, 0, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, 0, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - 0, 0, 0, 76, 158, 159, 160, 161, 80, -250, - 201, 0, 0, 0, 0, 126, 127, 128, 0, 0, - 202, 131, 132, 133, 134, 135, 136, 203, -494, -498, - 0, 0, 0, 204, 0, 0, 0, 0, 139, 140, - 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, -250, -250, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -250, -250, -250, 148, + 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 156, -270, -270, -270, 157, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + 0, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, 0, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, 0, 0, 0, 0, 0, 0, + 76, 158, 159, 160, 161, 80, -270, 201, 0, 0, + 0, 0, 126, 127, 128, 0, 0, 202, 131, 132, + 133, 134, 135, 136, 203, -514, -518, 0, 0, 0, + 204, 0, 0, 0, 0, 139, 140, 141, 142, 143, + 144, 0, 0, 0, 0, 0, 0, 0, -270, -270, + 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -270, -270, -270, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, - 0, 0, 0, 0, 0, 0, 156, -250, -250, -250, - 157, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, 0, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, 0, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, 0, 0, 0, 76, 158, - 159, 160, 205, 206, -250, 201, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, + 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 156, -270, -270, -270, 157, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, 0, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, 0, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, 0, 0, 0, 0, 0, 0, 76, 158, + 159, 160, 205, 206, -270, 201, 0, 0, 0, 0, 126, 127, 128, 0, 0, 202, 131, 132, 133, 134, - 135, 136, 203, -442, -442, 0, 0, 0, 204, -442, + 135, 136, 203, -462, -462, 0, 0, 0, 204, -462, 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, -250, -250, 125, 0, + 0, 0, 0, 0, 0, 0, -270, -270, 125, 0, 145, 146, 147, 126, 127, 128, 0, 129, 130, 131, - 132, 133, 134, 135, 136, 137, -494, 0, 0, 0, + 132, 133, 134, 135, 136, 137, -514, 0, 0, 0, 0, 138, 0, 0, 148, 0, 139, 140, 141, 142, - 143, 144, 0, 0, 0, 0, 0, 0, 0, -250, - -250, 0, 0, 145, 146, 147, -442, 150, 151, 152, + 143, 144, 0, 0, 0, 0, 0, 0, 0, -270, + -270, 0, 0, 145, 146, 147, -462, 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 157, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1497,318 +1538,289 @@ static const short yytable[] = { 95, 0, 0, 0, 0, 156, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 76, 158, 159, 160, 205, 206, 0, - 0, 125, 0, 0, 0, 0, 126, 127, 128, 0, - 129, 130, 131, 132, 133, 134, 135, 136, 137, -494, - 0, 0, 0, 0, 138, 0, 0, 0, 0, 139, - 140, 141, 142, 143, 144, 0, 76, 158, 159, 160, - 161, 80, -250, -250, 201, 0, 145, 146, 147, 126, - 127, 128, 0, 0, 202, 131, 132, 133, 134, 135, - 136, 203, -494, -498, 0, 0, 0, 204, 0, 0, - 148, 0, 139, 140, 141, 142, 143, 144, 0, 0, - 0, 0, 0, 0, 0, -250, -250, 0, 0, 145, - 146, 147, -469, 150, 151, 152, 153, 154, 155, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, - 0, 157, 0, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -438, 150, 151, 152, 153, + 0, 0, 0, 0, 0, 0, 76, 158, 159, 160, + 205, 206, 0, 0, 125, 0, 0, 0, 0, 126, + 127, 128, 0, 129, 130, 131, 132, 133, 134, 135, + 136, 137, -514, 0, 0, 0, 0, 138, 0, 0, + 0, 0, 139, 140, 141, 142, 143, 144, 0, 76, + 158, 159, 160, 161, 80, -270, -270, 201, 0, 145, + 146, 147, 126, 127, 128, 0, 0, 202, 131, 132, + 133, 134, 135, 136, 203, -514, -518, 0, 0, 0, + 204, 0, 0, 148, 0, 139, 140, 141, 142, 143, + 144, 0, 0, 0, 0, 0, 0, 0, -270, -270, + 0, 0, 145, 146, 147, -489, 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, - 156, 0, 0, 0, 157, 0, 0, 0, 0, 0, + 156, 0, 0, 0, 157, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, - 158, 159, 160, 161, 80, 0, 0, 125, 0, 0, - 0, 0, 126, 127, 128, 0, 129, 130, 131, 132, - 133, 134, 135, 136, 137, -494, 658, 0, 0, 0, - 138, 0, 0, 0, 0, 139, 140, 141, 142, 143, - 144, 0, 76, 158, 159, 160, 205, 206, -250, -250, - 201, 0, 145, 146, 147, 126, 127, 128, 0, 0, - 202, 131, 132, 133, 134, 135, 136, 203, -494, -498, - 0, 0, 0, 204, 0, 0, 148, 0, 139, 140, - 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, -250, -250, 0, 0, 145, 146, 147, 0, 150, + 0, 0, 0, 0, 0, 0, 0, 0, -458, 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, - 0, 0, 0, 156, 0, 0, 0, 157, 0, 148, - 0, -494, 0, 0, 0, 0, 368, 0, 0, 0, - 0, 139, 140, 141, 142, 143, 144, 0, 0, 0, - 0, 0, 150, 151, 152, 153, 154, 155, 145, 146, - 147, 0, 0, 0, 0, 0, 156, 0, 0, 0, - 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 156, 0, 0, 0, 157, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 158, 159, 160, 161, 80, 0, 0, 125, 0, 0, 0, 0, 126, 127, 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, - 137, -494, 0, 157, 0, 0, 138, 0, 0, 0, + 137, -514, 658, 0, 0, 0, 138, 0, 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, 76, 158, - 159, 160, 205, 206, -250, -250, 0, 0, 145, 146, - 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 159, 160, 205, 206, -270, -270, 201, 0, 145, 146, + 147, 126, 127, 128, 0, 0, 202, 131, 132, 133, + 134, 135, 136, 203, -514, -518, 0, 0, 0, 204, + 0, 0, 148, 0, 139, 140, 141, 142, 143, 144, + 0, 0, 0, 0, 0, 0, 0, -270, -270, 0, + 0, 145, 146, 147, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, 0, 156, + 0, 0, 0, 157, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 156, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 329, 330, 160, 150, 151, 152, 153, 154, - 155, 0, 0, 0, 0, 0, 0, 0, 0, 156, - 126, 127, 128, 157, 129, 130, 131, 132, 133, 134, - 135, 136, 203, -494, 580, 0, 0, 0, 368, 0, - 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, -250, -250, 0, 3, - 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 357, 0, 0, 0, 0, 139, 140, 141, 142, + 143, 144, 0, 0, 76, 158, 159, 160, 161, 80, + 0, 0, 125, 145, 146, 147, 0, 126, 127, 128, + 0, 129, 130, 131, 132, 133, 134, 135, 136, 137, + -514, 0, 0, 0, 0, 138, 0, 148, 0, 0, + 139, 140, 141, 142, 143, 144, 0, 76, 158, 159, + 160, 205, 206, -270, -270, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 4, 0, 0, 0, 0, - 0, 76, 158, 159, 160, 161, 80, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - 0, 581, 11, 12, 13, 157, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 369, 370, 371, 76, 158, 566, 160, 161, 80, 81, - 126, 127, 128, 0, 129, 130, 131, 132, 133, 134, - 135, 136, 203, -494, 659, 0, 0, 0, 368, 0, - 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, -250, -250, 0, 3, - 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, + 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, + 0, 0, 0, 0, 0, 0, 0, 0, 156, 126, + 127, 128, 157, 129, 130, 131, 132, 133, 134, 135, + 136, 203, -514, 580, 0, 0, 0, 368, 0, 0, + 0, 0, 139, 140, 141, 142, 143, 144, 0, 76, + 329, 330, 160, 0, 0, -270, -270, 0, 3, 145, + 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - 0, 156, 11, 12, 13, 157, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 369, 370, 371, 76, 158, 566, 160, 161, 80, 81, - 126, 127, 128, 0, 129, 130, 131, 132, 133, 134, - 135, 136, 203, -494, 670, 0, 0, 0, 368, 0, - 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, -250, -250, 0, 3, - 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 158, 159, 160, 161, 80, 0, + 0, 0, 0, 0, 0, 0, 150, 151, 152, 153, + 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, + 581, 11, 12, 13, 157, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 369, + 0, 370, 0, 0, 371, 76, 158, 566, 160, 161, + 80, 81, 126, 127, 128, 0, 129, 130, 131, 132, + 133, 134, 135, 136, 203, -514, 659, 0, 0, 0, + 368, 0, 0, 0, 0, 139, 140, 141, 142, 143, + 144, 0, 0, 0, 0, 0, 0, 0, -270, -270, + 0, 3, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - 0, 671, 11, 12, 13, 157, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 369, 370, 371, 76, 158, 566, 160, 161, 80, 81, - 126, 127, 128, 0, 129, 130, 131, 132, 133, 134, - 135, 136, 203, -494, 669, 0, 0, 0, 368, 0, - 0, 0, 0, 139, 140, 141, 142, 143, 144, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, + 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 156, 11, 12, 13, 157, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 369, 0, 370, 0, 0, 371, 76, 158, + 566, 160, 161, 80, 81, 126, 127, 128, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 203, -514, 670, + 0, 0, 0, 368, 0, 0, 0, 0, 139, 140, + 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, + 0, -270, -270, 0, 3, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 145, 146, 147, 126, 127, 128, 0, 129, 130, 131, - 132, 133, 134, 135, 136, 203, -494, 673, 0, 0, - 0, 368, 0, 0, 148, 0, 139, 140, 141, 142, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, + 0, 0, 0, 0, 0, 0, 671, 11, 12, 13, + 157, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 0, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 369, 0, 370, 0, 0, + 371, 76, 158, 566, 160, 161, 80, 81, 126, 127, + 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 203, -514, 669, 0, 0, 0, 368, 0, 0, 0, + 0, 139, 140, 141, 142, 143, 144, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, + 147, 126, 127, 128, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 203, -514, 673, 0, 0, 0, 368, + 0, 0, 148, 0, 139, 140, 141, 142, 143, 144, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 145, 146, 147, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, 0, 156, + 0, 654, 0, 157, 0, 148, 139, 140, 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 145, 146, 147, 0, 150, 151, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - 0, 156, 0, 0, 0, 157, 0, 148, 0, 0, + 0, 0, 0, 145, 146, 147, 0, 0, 150, 151, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 674, 0, 0, 0, 157, 148, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 369, 0, + 370, 0, 0, 371, 76, 158, 159, 160, 161, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 369, 0, 370, 0, 0, 371, 76, 158, 159, + 160, 161, 80, 126, 127, 128, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 203, -514, 726, 0, 0, + 0, 368, 0, 0, 0, 0, 139, 140, 141, 142, + 143, 144, 0, 0, 0, 0, 0, 0, 0, 76, + 329, 330, 160, 145, 146, 147, 126, 127, 128, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 203, -514, + 779, 0, 0, 0, 368, 0, 0, 148, 0, 139, + 140, 141, 142, 143, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 146, 147, 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, - 0, 0, 0, 0, 674, 0, 0, 0, 157, 0, + 0, 0, 0, 0, 156, 0, 656, 0, 157, 0, + 148, 139, 140, 141, 142, 143, 144, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, + 147, 0, 0, 150, 151, 152, 153, 154, 155, 0, + 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, + 0, 157, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 369, 0, 370, 0, 0, 371, 76, + 158, 159, 160, 161, 80, 0, 0, 0, 0, 0, + 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 369, 370, 371, 76, 158, 159, 160, 161, 80, 0, - 0, 0, 126, 127, 128, 0, 129, 130, 131, 132, - 133, 134, 135, 136, 203, -494, 726, 0, 0, 0, - 368, 0, 0, 0, 0, 139, 140, 141, 142, 143, - 144, 0, 0, 369, 370, 371, 76, 158, 159, 160, - 161, 80, 145, 146, 147, 126, 127, 128, 0, 129, - 130, 131, 132, 133, 134, 135, 136, 203, -494, 779, - 0, 0, 0, 368, 0, 0, 148, 0, 139, 140, - 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 146, 147, 0, 150, - 151, 152, 153, 154, 155, 0, 0, 0, 0, 0, - 0, 0, 0, 156, 0, 0, 0, 157, 0, 148, + 0, 0, 0, 0, 0, 0, 369, 0, 370, 0, + 0, 371, 76, 158, 159, 160, 161, 80, 126, 127, + 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, + 203, -514, 780, 0, 0, 0, 368, 0, 0, 0, + 0, 139, 140, 141, 142, 143, 144, 0, 0, 0, + 0, 0, 0, 0, 76, 329, 330, 160, 145, 146, + 147, 126, 127, 128, 0, 129, 130, 131, 132, 133, + 134, 135, 136, 203, -514, 782, 0, 0, 0, 368, + 0, 0, 148, 0, 139, 140, 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 145, 146, 147, 0, 150, 151, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, 0, 781, + 0, 729, 0, 157, 0, 148, 730, 731, 732, 733, + 734, 735, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 145, 736, 737, 0, 0, 150, 151, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 156, 0, 0, 0, 157, 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 150, 151, 152, 153, 154, 155, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, - 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 369, 0, + 370, 0, 0, 371, 76, 158, 159, 160, 161, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 369, 370, 371, 76, 158, 159, 160, 161, - 80, 0, 0, 0, 126, 127, 128, 0, 129, 130, - 131, 132, 133, 134, 135, 136, 203, -494, 780, 0, - 0, 0, 368, 0, 0, 0, 0, 139, 140, 141, - 142, 143, 144, 0, 0, 369, 370, 371, 76, 158, - 159, 160, 161, 80, 145, 146, 147, 126, 127, 128, - 0, 129, 130, 131, 132, 133, 134, 135, 136, 203, - -494, 782, 0, 0, 0, 368, 0, 0, 148, 0, - 139, 140, 141, 142, 143, 144, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 145, 146, 147, - 0, 150, 151, 152, 153, 154, 155, 0, 0, 0, - 0, 0, 0, 0, 0, 781, 0, 0, 0, 157, - 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, - 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, - 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, + 0, 369, 0, 370, 0, 0, 371, 76, 158, 159, + 160, 161, 80, 126, 127, 128, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 203, -514, 901, 0, 0, + 0, 368, 0, 0, 0, 0, 139, 140, 141, 142, + 143, 144, 0, 0, 0, 0, 0, 0, 0, 76, + 739, 740, 741, 145, 146, 147, 126, 127, 128, 0, + 129, 130, 131, 132, 133, 134, 135, 136, 203, -514, + 0, 0, 0, 0, 368, 0, 0, 148, 0, 139, + 140, 141, 142, 143, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 146, 147, 0, + 150, 151, 152, 153, 154, 155, 0, 0, 0, 0, + 0, 0, 0, 0, 156, 0, 0, 0, 157, 0, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 369, 370, 371, 76, 158, 159, - 160, 161, 80, 0, 0, 0, 126, 127, 128, 0, - 129, 130, 131, 132, 133, 134, 135, 136, 203, -494, - 903, 0, 0, 0, 368, 0, 0, 0, 0, 139, - 140, 141, 142, 143, 144, 0, 0, 369, 370, 371, - 76, 158, 159, 160, 161, 80, 145, 146, 147, 126, - 127, 128, 0, 129, 130, 131, 132, 133, 134, 135, - 136, 203, -494, 0, 0, 0, 0, 368, 0, 0, - 148, 0, 139, 140, 141, 142, 143, 144, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, - 146, 147, 0, 150, 151, 152, 153, 154, 155, 0, + 0, 0, 0, 150, 151, 152, 153, 154, 155, 293, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, - 0, 157, 0, 148, 0, 0, 0, 0, 0, 0, + 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 369, 0, 370, 0, 0, 371, 76, + 158, 159, 160, 161, 80, 0, 0, 0, -379, -379, + -379, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 150, 151, 152, 153, - 154, 155, 293, 0, 0, 0, 0, 0, 0, 0, - 156, 0, 0, 0, 157, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 369, 370, 371, 76, - 158, 159, 160, 161, 80, 0, 0, 0, 0, 0, - 0, -359, -359, -359, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 369, 0, 370, 0, + 0, 371, 76, 158, 159, 160, 161, 80, 0, 11, + 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 293, 0, 0, + 0, 0, 0, 0, 0, 120, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 369, - 370, 371, 76, 158, 159, 160, 161, 80, 0, 0, - 0, 0, 11, 12, 13, 0, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 293, 0, 0, 0, 0, 120, 0, 0, 0, 81, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 797, 0, - 0, 0, 0, 328, 0, 0, 0, 0, 139, 140, - 141, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -628, 0, 0, 0, 0, 0, 0, 0, 0, 148, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -648, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, + 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 0, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, -136, 0, 0, 0, 0, + -136, 0, 0, 120, 0, 0, 0, 81, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 12, 13, 0, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 157, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 0, -116, - 0, 0, 0, 120, -116, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 0, 0, 76, 329, - 330, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 288, 0, 0, 0, 0, 0, 0, 0, + 120, 0, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, - 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -517, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 12, 13, 0, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, + 0, 0, 0, 0, 0, 0, 0, 120, 11, 12, + 13, 81, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 288, 0, 0, 0, - 0, 120, 0, 0, 0, 81, 0, 0, 0, 0, + 70, 71, 72, 73, 74, 75, -655, 0, 0, 0, + 0, 0, 0, 0, 120, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -657, -657, -657, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 13, 0, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 0, 0, 0, 0, 120, 11, - 12, 13, 81, 14, 15, 16, 17, 18, 19, 20, + 0, 0, 0, 0, 0, -270, 0, 0, 0, 0, + 0, 0, -657, -657, -657, 2, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, 0, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, 0, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 12, 13, -657, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -635, 0, 0, - 0, 0, 120, 0, 0, 0, 81, 0, 0, 0, - 328, 0, 0, 628, 0, 139, 140, 141, 142, 143, - 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, - 0, 0, -637, -637, -637, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, - -637, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -637, -637, -637, 0, -637, -637, -637, - -637, -637, -637, -637, -637, -637, -637, 157, -637, -637, - -637, -637, -637, -637, -637, -637, -637, -637, -637, -637, - -637, -637, -637, 0, -637, -637, -637, -637, -637, -637, - -637, -637, -637, -637, -637, -637, -637, -637, -637, -637, - -637, -637, -637, -637, -637, -637, -637, -637, -637, -637, - -637, -637, -637, -637, -637, -637, -637, -637, -637, -637, - -637, -250, 0, 0, 0, 0, 0, 0, 0, 0, - -637, 2, 0, 0, 0, 76, 329, 330, 160, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, - 0, 709, 0, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 13, 0, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 157, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 0, 0, 76, 77, 78, 0, - 79, 80, 81, 0, 0, 328, 947, 0, 0, 0, - 139, 140, 141, 142, 143, 144, 0, 0, 0, 0, - 0, 0, 0, 76, 329, 330, 160, 145, 146, 147, - 328, -232, 0, 0, 0, 139, 140, 141, 142, 143, - 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 148, 145, 146, 147, 139, 140, 141, 142, 143, - 144, 357, 0, 0, 0, 0, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 0, 148, 0, 0, 0, - 0, 654, 0, 145, 146, 147, 139, 140, 141, 142, - 143, 144, 157, 0, 0, 0, 148, 0, 0, 0, - 0, 0, 0, 145, 146, 147, 656, 148, 0, 0, - 0, 139, 140, 141, 142, 143, 144, 157, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 145, 146, - 147, 0, 0, 729, 0, 0, 0, 157, 730, 731, - 732, 733, 734, 735, 0, 0, 0, 0, 157, 0, - 0, 0, 148, 0, 0, 145, 736, 737, 0, 0, - 76, 329, 330, 160, 0, 0, 0, 0, 157, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, - 0, 0, 0, 0, 0, 76, 329, 330, 160, 0, - 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 329, 330, 160, 0, - 0, 0, 0, 0, 0, 0, 76, 329, 330, 160, - 157, 0, 0, 0, 0, 0, -176, -176, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 329, 330, 160, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 329, 330, 160, 0, 0, 0, 0, 0, + 69, 70, 71, 72, 73, 74, 75, -196, -196, 0, + 0, 0, 0, 76, 77, 78, 0, 79, 80, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 739, - 740, 741, 11, 12, 13, 0, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 3, 0, 0, 0, 0, 120, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -359, -359, -359, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1819,9 +1831,9 @@ static const short yytable[] = { 95, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 3, 0, 0, 0, 0, 120, 0, 0, 0, - 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 75, 3, 0, 0, 0, 0, 0, 0, 0, 120, + 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -379, -379, -379, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1832,333 +1844,364 @@ static const short yytable[] = { 95, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, -359, -359, -359, 0, 0, 120, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 75, 3, 0, 0, 0, 0, 0, 0, 0, + 120, 0, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 12, 13, 0, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 8, 9, 10, 0, 0, 120, 0, 0, 0, - 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 12, 13, 0, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, - 0, 0, 0, 120, 11, 12, 13, 81, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 12, 13, 0, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -379, -379, -379, 0, 0, 0, 0, + 0, 120, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 0, 0, 0, 0, 120, 0, 0, - 0, 81 + 74, 75, 8, 9, 10, 0, 0, 0, 0, 0, + 120, 0, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 11, 12, 13, 0, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, + 0, 0, 0, 0, 0, 0, 0, 120, 11, 12, + 13, 81, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 0, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 120, 0, 0, 0, 81 }; static const short yycheck[] = { 0, - 366, 0, 3, 106, 0, 469, 89, 501, 368, 2, - 11, 12, 626, 630, 126, 560, 418, 18, 19, 20, + 0, 469, 3, 366, 0, 106, 89, 303, 126, 2, + 11, 12, 626, 501, 417, 630, 418, 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, 452, 789, 9, 10, 48, 49, 50, + 41, 42, 43, 407, 408, 664, 368, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 303, 322, 419, 0, 407, 408, - 3, 26, 5, 664, 75, 777, 664, 0, 479, 34, - 3, 82, 24, 82, 7, 451, 82, 18, 797, 684, - 18, 800, 34, 24, 711, 455, 409, 410, 664, 100, - 24, 911, 417, 34, 803, 106, 415, 416, 809, 8, - 34, 917, 8, 24, 5, 116, 117, 118, 320, 664, - 113, 122, 0, 86, 87, 26, 558, 28, 719, 122, - 28, 719, 215, 499, 25, 204, 41, 138, 18, 26, - 209, 41, 211, 44, 145, 28, 44, 34, 192, 82, - 85, 56, 24, 719, 223, 27, 56, 86, 87, 82, - 34, 44, 34, 96, 97, 910, 99, 912, 26, 908, - 28, 21, 911, 569, 719, 21, 411, 412, 413, 414, - 21, 27, 8, 106, 25, 21, 44, 993, 584, 122, - 1000, 27, 1002, 788, 896, 904, 791, 1103, 1104, 122, - 901, 21, 611, 204, 82, 25, 24, 8, 702, 29, - 133, 612, 18, 1038, 1039, 21, 179, 180, 18, 9, - 10, 21, 921, 480, 179, 180, 181, 587, 183, 184, - 18, 18, 664, 21, 108, 109, 23, 179, 180, 138, - 204, 1147, 138, 18, 610, 209, 21, 211, 179, 180, - 179, 180, 24, 21, 366, 179, 180, 25, 24, 223, - 224, 1000, 664, 1002, 21, 21, 632, 506, 25, 25, - 0, 5, 1097, 3, 24, 1100, 26, 7, 8, 9, - 10, 49, 50, 182, 34, 286, 182, 719, 21, 24, - 291, 25, 25, 292, 190, 194, 1005, 196, 194, 21, - 196, 302, 303, 25, 305, 306, 302, 179, 180, 24, - 182, 664, 138, 5, 931, 5, 18, 719, 319, 1144, - 814, 935, 18, 319, 325, 664, 225, 328, 25, 225, - 374, 28, 877, 25, 24, 25, 26, 138, 382, 451, - 384, 86, 87, 21, 34, 428, 347, 25, 24, 664, - 26, 664, 82, 592, 347, 664, 182, 139, 140, 141, - 142, 143, 144, 24, 190, 21, 719, 368, 194, 25, - 196, 116, 117, 21, 6, 7, 106, 25, 447, 302, - 719, 182, 305, 306, 307, 130, 21, 499, 16, 190, - 25, 982, 122, 194, 982, 196, 319, 636, 18, 225, - 16, 21, 325, 133, 719, 607, 719, 21, 138, 453, - 719, 25, 16, 346, 204, 654, 982, 656, 24, 209, - 26, 211, 5, 21, 225, 16, 156, 25, 794, 664, - 67, 68, 69, 223, 224, 25, 26, 982, 28, 53, - 54, 39, 15, 875, 443, 179, 180, 181, 1123, 183, - 184, 22, 182, 454, 44, 1130, 457, 1132, 454, 22, - 190, 457, 192, 464, 194, 466, 196, 468, 469, 21, - 471, 873, 22, 25, 204, 476, 520, 18, 479, 209, - 21, 211, 23, 447, 719, 486, 479, 179, 180, 181, - 729, 183, 184, 223, 224, 225, 29, 498, 610, 39, - 501, 19, 503, 25, 26, 506, 28, 34, 35, 36, + 61, 62, 63, 64, 8, 0, 409, 410, 3, 8, + 5, 415, 416, 664, 75, 664, 777, 684, 452, 558, + 419, 82, 82, 322, 479, 789, 82, 0, 451, 5, + 8, 411, 412, 413, 414, 797, 711, 560, 800, 100, + 719, 809, 1114, 1115, 204, 106, 21, 803, 915, 209, + 25, 211, 86, 87, 320, 116, 117, 118, 909, 18, + 113, 122, 34, 223, 8, 24, 5, 18, 719, 122, + 719, 906, 215, 455, 909, 34, 499, 138, 53, 54, + 41, 21, 116, 117, 145, 25, 25, 82, 18, 1038, + 1039, 1134, 28, 1165, 21, 56, 130, 5, 25, 39, + 21, 96, 97, 28, 99, 1148, 27, 1150, 44, 82, + 24, 9, 10, 139, 140, 141, 142, 143, 144, 44, + 34, 788, 49, 50, 791, 664, 993, 122, 9, 10, + 41, 899, 24, 894, 138, 27, 108, 109, 24, 138, + 902, 664, 34, 204, 908, 56, 910, 24, 34, 1000, + 506, 1002, 25, 26, 702, 28, 18, 612, 21, 1108, + 138, 23, 1111, 919, 569, 1000, 0, 1002, 1087, 3, + 24, 44, 26, 7, 8, 9, 10, 611, 182, 584, + 719, 480, 19, 182, 85, 21, 190, 610, 366, 25, + 194, 190, 196, 24, 138, 194, 719, 196, 34, 35, + 36, 664, 664, 22, 182, 587, 182, 183, 184, 632, + 186, 187, 190, 1162, 26, 34, 194, 18, 196, 24, + 21, 225, 34, 182, 183, 286, 225, 1146, 1147, 18, + 291, 26, 292, 28, 18, 5, 592, 21, 182, 23, + 664, 302, 303, 1005, 305, 306, 302, 225, 82, 44, + 194, 24, 196, 26, 929, 25, 719, 719, 319, 933, + 664, 664, 1181, 319, 325, 664, 814, 328, 182, 183, + 24, 21, 106, 451, 182, 183, 184, 27, 186, 187, + 636, 225, 6, 7, 664, 428, 347, 447, 122, 18, + 182, 183, 21, 185, 347, 719, 182, 183, 654, 133, + 656, 980, 32, 33, 138, 21, 204, 368, 21, 25, + 21, 209, 25, 211, 25, 719, 719, 26, 5, 28, + 719, 499, 156, 204, 18, 223, 224, 21, 209, 980, + 211, 980, 24, 49, 50, 44, 875, 18, 25, 719, + 21, 607, 223, 224, 25, 182, 183, 184, 182, 186, + 187, 346, 18, 21, 877, 21, 190, 25, 192, 24, + 194, 26, 196, 182, 183, 184, 24, 186, 187, 34, + 204, 794, 21, 729, 18, 209, 25, 211, 404, 405, + 406, 49, 50, 443, 86, 87, 86, 87, 24, 223, + 224, 225, 0, 454, 24, 3, 457, 27, 454, 7, + 16, 457, 21, 464, 34, 466, 25, 468, 469, 872, + 471, 873, 182, 183, 184, 476, 186, 187, 479, 34, + 24, 24, 26, 26, 428, 486, 479, 5, 16, 428, + 34, 21, 610, 25, 26, 25, 28, 498, 862, 863, + 501, 980, 503, 49, 50, 506, 24, 25, 26, 21, + 428, 21, 44, 25, 632, 25, 34, 980, 16, 49, + 50, 864, 865, 42, 43, 460, 870, 871, 302, 16, + 85, 305, 306, 307, 82, 874, 25, 15, 504, 28, + 182, 183, 182, 183, 428, 319, 866, 867, 868, 869, + 21, 325, 53, 54, 25, 182, 183, 184, 106, 186, + 187, 20, 21, 24, 21, 26, 37, 38, 25, 569, + 21, 22, 29, 34, 122, 25, 26, 980, 980, 18, + 51, 52, 21, 24, 584, 133, 25, 22, 589, 1077, + 1058, 592, 37, 38, 21, 369, 370, 371, 25, 21, + 374, 702, 22, 25, 605, 606, 51, 52, 382, 447, + 384, 612, 182, 183, 21, 185, 980, 939, 25, 612, + 18, 21, 39, 21, 568, 25, 447, 182, 183, 568, + 631, 186, 187, 32, 33, 636, 980, 980, 182, 183, + 184, 980, 186, 187, 188, 49, 50, 21, 649, 650, + 568, 25, 21, 654, 428, 656, 25, 8, 9, 10, + 980, 53, 54, 21, 182, 183, 184, 25, 186, 187, + 67, 68, 69, 447, 37, 38, 794, 678, 21, 453, + 454, 22, 25, 457, 619, 686, 21, 688, 51, 52, + 25, 692, 693, 467, 21, 469, 697, 471, 25, 29, + 701, 702, 37, 38, 40, 479, 707, 21, 482, 702, + 828, 25, 486, 814, 707, 921, 51, 52, 24, 26, + 26, 182, 183, 184, 1020, 186, 187, 34, 729, 20, + 21, 21, 182, 183, 184, 25, 186, 187, 179, 180, + 55, 182, 183, 21, 185, 21, 520, 25, 92, 25, + 192, 8, 9, 10, 302, 529, 530, 305, 306, 307, + 1123, 34, 35, 36, 730, 731, 732, 733, 734, 735, + 18, 319, 119, 21, 121, 92, 18, 325, 24, 21, + 26, 987, 28, 784, 19, 132, 133, 138, 135, 21, + 137, 138, 21, 25, 568, 569, 25, 5, 44, 22, + 1006, 47, 48, 150, 21, 1011, 22, 581, 25, 1172, + 584, 585, 813, 814, 24, 816, 24, 25, 26, 21, + 21, 814, 1028, 25, 25, 21, 34, 18, 1034, 25, + 21, 182, 24, 22, 26, 34, 28, 1043, 612, 190, + 21, 92, 21, 194, 25, 196, 25, 18, 20, 21, + 21, 786, 44, 204, 789, 47, 48, 21, 209, 21, + 211, 25, 20, 25, 21, 19, 1072, 1073, 25, 1075, + 32, 33, 223, 224, 225, 182, 183, 184, 21, 186, + 187, 138, 25, 92, 21, 21, 660, 661, 25, 25, + 664, 24, 21, 859, 860, 861, 25, 671, 672, 27, + 674, 21, 985, 21, 905, 25, 454, 25, 18, 457, + 21, 912, 1118, 687, 25, 689, 34, 35, 36, 467, + 97, 469, 99, 471, 698, 182, 1009, 701, 702, 703, + 18, 479, 374, 190, 482, 21, 22, 194, 486, 196, + 382, 23, 384, 182, 183, 719, 21, 204, 205, 21, + 25, 18, 209, 25, 211, 32, 33, 32, 33, 24, + 22, 1167, 18, 34, 35, 36, 223, 224, 225, 18, + 25, 906, 25, 908, 909, 910, 1077, 943, 72, 73, + 74, 529, 530, 182, 183, 184, 24, 186, 187, 72, + 73, 74, 18, 994, 18, 18, 997, 18, 182, 183, + 184, 997, 186, 187, 182, 1123, 19, 781, 51, 52, + 53, 453, 1013, 9, 1015, 25, 11, 1013, 18, 1020, + 1013, 1139, 1023, 1024, 24, 24, 24, 11, 1028, 29, + 30, 31, 32, 33, 34, 21, 88, 19, 88, 27, + 814, 19, 19, 19, 185, 24, 46, 47, 48, 21, + 824, 25, 22, 21, 1172, 18, 21, 1058, 24, 1060, + 1061, 22, 185, 25, 612, 1000, 185, 1002, 11, 24, + 70, 24, 1072, 24, 23, 27, 1077, 428, 520, 25, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 632, 874, 44, 862, 863, 569, 21, 460, 40, 428, - 25, 454, 428, 18, 457, 21, 21, 32, 33, 25, - 584, 585, 55, 98, 467, 100, 469, 102, 471, 104, - 982, 864, 865, 92, 109, 5, 479, 872, 24, 482, - 26, 870, 871, 486, 119, 21, 121, 21, 92, 25, - 569, 25, 302, 49, 50, 305, 306, 307, 37, 38, - 982, 941, 21, 1077, 18, 584, 25, 21, 589, 319, - 19, 592, 51, 52, 1058, 325, 179, 180, 181, 702, - 183, 184, 428, 22, 605, 606, 529, 530, 163, 21, - 21, 612, 22, 25, 25, 24, 660, 661, 27, 612, - 32, 33, 404, 405, 406, 34, 24, 428, 672, 982, - 631, 866, 867, 868, 869, 636, 24, 22, 26, 369, - 370, 371, 18, 982, 374, 21, 34, 21, 649, 650, - 92, 25, 382, 654, 384, 656, 34, 447, 20, 703, - 21, 179, 180, 181, 25, 183, 184, 982, 24, 982, - 26, 18, 568, 982, 21, 25, 26, 678, 34, 24, - 21, 26, 794, 5, 25, 686, 619, 688, 19, 612, - 92, 692, 693, 34, 35, 36, 697, 34, 428, 27, - 701, 702, 24, 25, 26, 24, 707, 22, 97, 702, - 99, 814, 34, 18, 707, 18, 828, 447, 24, 34, - 18, 923, 504, 453, 454, 32, 33, 457, 729, 179, - 180, 181, 22, 183, 184, 23, 291, 467, 18, 469, - 295, 471, 568, 34, 35, 36, 1112, 982, 85, 479, - 18, 21, 482, 21, 25, 25, 486, 25, 313, 53, - 54, 316, 37, 38, 687, 25, 689, 568, 24, 324, - 179, 180, 327, 182, 18, 698, 51, 52, 701, 702, - 21, 1020, 21, 784, 25, 987, 25, 18, 1154, 18, - 520, 179, 180, 181, 21, 183, 184, 185, 25, 529, - 530, 179, 180, 181, 1006, 183, 184, 42, 43, 1011, - 49, 50, 813, 814, 21, 816, 21, 18, 25, 18, - 25, 814, 179, 179, 180, 181, 1028, 183, 184, 179, - 180, 181, 1034, 183, 184, 19, 21, 9, 568, 569, - 25, 1043, 179, 180, 49, 50, 183, 184, 21, 20, - 21, 581, 25, 786, 584, 585, 789, 179, 180, 181, - 18, 183, 184, 21, 179, 180, 181, 25, 183, 184, - 1072, 1073, 11, 1075, 21, 22, 119, 25, 121, 179, - 180, 181, 612, 183, 184, 72, 73, 74, 24, 132, - 133, 814, 135, 11, 137, 138, 21, 452, 24, 21, - 25, 824, 985, 25, 459, 1107, 907, 150, 21, 464, - 21, 466, 25, 914, 25, 21, 21, 21, 21, 474, - 25, 25, 25, 478, 37, 38, 1009, 49, 50, 21, - 660, 661, 21, 25, 664, 88, 25, 19, 51, 52, - 19, 671, 672, 19, 674, 32, 33, 1149, 730, 731, - 732, 733, 734, 735, 21, 49, 50, 687, 25, 689, - 24, 21, 26, 21, 28, 25, 21, 25, 698, 19, - 25, 701, 702, 703, 1077, 908, 88, 910, 911, 912, - 44, 21, 27, 47, 48, 25, 24, 21, 26, 719, - 28, 25, 24, 994, 53, 54, 997, 25, 23, 21, - 1112, 997, 72, 73, 74, 22, 44, 20, 21, 47, - 48, 21, 1013, 21, 1015, 25, 1128, 1013, 18, 1020, - 1013, 24, 1023, 1024, 34, 35, 36, 950, 951, 1028, - 21, 586, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 1154, 8, 9, 10, 20, 21, 21, 22, - 22, 781, 179, 180, 25, 11, 611, 1058, 182, 1060, - 1061, 182, 182, 24, 24, 24, 21, 1000, 25, 1002, - 25, 23, 20, 1072, 997, 630, 1077, 859, 860, 861, - 635, 27, 37, 38, 814, 19, 23, 20, 19, 21, - 1013, 5, 27, 1016, 824, 25, 51, 52, 24, 22, - 88, 88, 8, 9, 10, 8, 126, 88, 24, 1110, - 25, 666, 1113, 20, 27, 1116, 20, 1113, 18, 139, - 140, 141, 142, 143, 144, 18, 146, 147, 78, 79, - 80, 81, 82, 83, 84, 1058, 25, 25, 8, 9, - 10, 27, 21, 25, 25, 25, 24, 8, 9, 10, - 40, 25, 29, 55, 1077, 39, 25, 23, 176, 88, - 24, 18, 25, 945, 18, 25, 25, 25, 21, 176, - 1171, 18, 21, 138, 18, 1098, 1099, 1178, 88, 184, - 182, 21, 20, 22, 20, 18, 20, 742, 25, 88, - 1113, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 72, 73, 74, 25, 88, 20, 78, 79, 80, - 81, 82, 83, 84, 27, 88, 88, 182, 73, 27, - 950, 951, 1145, 1146, 0, 190, 88, 0, 325, 194, - 778, 196, 138, 136, 82, 138, 88, 88, 88, 204, - 205, 1010, 902, 1036, 209, 1089, 211, 802, 928, 896, - 1144, 1011, 982, 1109, 984, 843, 471, 987, 223, 224, - 225, 1113, 592, 72, 73, 74, 689, 997, 138, 78, - 79, 80, 81, 82, 83, 84, 182, 138, 814, 182, - 687, 1011, 113, 1013, 190, 701, 1016, 190, 194, 10, - 196, 194, 520, 196, 347, 428, 224, 1082, 204, 719, - 982, 204, -1, 209, -1, 211, -1, 1037, 1038, 1039, - -1, -1, 182, -1, -1, -1, 1046, 223, 224, 225, - 190, 182, 225, -1, 194, -1, 196, -1, 1058, 190, - 8, 9, 10, 194, 204, 196, -1, -1, -1, 209, - -1, 211, -1, 204, 899, 900, 366, 1077, 209, -1, - 211, -1, 907, 223, 224, 225, -1, -1, -1, -1, - -1, -1, 223, 224, 225, -1, -1, 1097, 1098, 1099, - 1100, -1, -1, 1103, 1104, -1, 931, -1, -1, 1109, - -1, -1, -1, 1113, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 20, 19, 72, 73, 74, 20, 447, 19, 78, 79, + 80, 81, 82, 83, 84, 23, 8, 9, 10, 21, + 5, 111, 25, 98, 24, 100, 27, 102, 22, 104, + 1121, 88, 25, 1124, 109, 24, 1127, 569, 1124, 88, + 387, 88, 20, 20, 119, 18, 121, 27, 18, 687, + 25, 689, 584, 585, 25, 126, 21, 25, 27, 25, + 698, 25, 24, 701, 702, 55, 29, 39, 139, 140, + 141, 142, 143, 144, 25, 146, 147, 88, 25, 40, + 24, 428, 25, 25, 948, 949, 25, 18, 163, 25, + 18, 21, 182, 183, 184, 185, 177, 18, 21, 18, + 447, 88, 88, 1194, 78, 79, 80, 81, 82, 83, + 84, 21, 177, 1204, 187, 22, 980, 20, 20, 23, + 25, 88, 18, 987, 25, 24, 20, 568, 660, 661, + 88, 88, 88, 997, 88, 20, 73, 27, 88, 18, + 672, 25, 88, 25, 27, 0, 138, 1011, 0, 1013, + 82, 325, 1016, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 1027, 778, 900, 1093, 1010, 1100, 894, + 926, 703, 1162, 1037, 1038, 1039, 814, 1036, 1011, 843, + 1120, 471, 1046, 592, 689, 1124, 824, 687, 814, 113, + 182, 347, 701, 10, 1058, 224, 1082, 520, 190, 8, + 9, 10, 194, 428, 196, 719, 980, -1, -1, -1, + -1, -1, 204, 1077, -1, -1, 291, 209, -1, 211, + 295, 568, -1, 1087, -1, -1, -1, -1, -1, 1093, + -1, 223, 224, 225, -1, -1, -1, -1, 313, -1, + -1, 316, -1, -1, 1108, 1109, 1110, 1111, -1, 324, + 1114, 1115, 327, -1, -1, -1, 1120, 18, 8, -1, + 1124, -1, -1, 24, -1, -1, -1, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, 8, 9, + 10, -1, 1146, 1147, -1, 46, 47, 48, -1, -1, + -1, -1, -1, -1, -1, 366, -1, -1, 1162, 1163, + 1164, 1165, -1, -1, -1, -1, -1, -1, -1, 70, + 948, 949, 72, 73, 74, -1, -1, 1181, 78, 79, + 80, 81, 82, 83, 84, -1, 8, 9, 10, 138, + -1, -1, -1, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, -1, + 111, -1, -1, -1, -1, -1, -1, -1, -1, 997, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1144, 1145, 1146, 1147, -1, -1, - -1, -1, 387, -1, -1, 328, -1, -1, -1, -1, - -1, 451, -1, 336, 337, 338, 339, -1, -1, -1, - 995, -1, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 357, 360, -1, -1, -1, -1, - 138, -1, -1, 428, -1, 368, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 499, - -1, -1, 447, 388, 504, -1, 389, -1, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, - -1, -1, -1, -1, 182, -1, -1, 1062, -1, -1, - -1, -1, 190, -1, -1, -1, 194, -1, 196, 424, - -1, -1, 428, -1, -1, 428, 204, -1, -1, -1, - -1, 209, 435, 211, -1, -1, -1, -1, 558, -1, - 560, 447, 562, 563, -1, 223, 224, 225, -1, -1, - -1, 8, 9, 10, -1, -1, -1, -1, 428, -1, - -1, -1, -1, -1, -1, -1, -1, 428, -1, -1, - -1, -1, 138, -1, -1, -1, -1, 447, -1, -1, - -1, -1, -1, -1, -1, -1, 447, -1, -1, -1, - 610, -1, -1, -1, -1, -1, -1, 1152, -1, -1, - -1, -1, -1, 568, -1, -1, -1, -1, -1, -1, - -1, -1, 632, -1, -1, -1, 182, -1, -1, -1, - -1, -1, -1, -1, 190, -1, -1, -1, 194, -1, - 196, -1, -1, -1, -1, -1, -1, -1, 204, -1, - -1, -1, -1, 209, 664, 211, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 559, 223, 224, 225, - -1, -1, 568, -1, -1, 568, -1, -1, -1, -1, - -1, -1, 18, -1, -1, -1, -1, -1, 24, -1, - -1, 138, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 568, 719, - 46, 47, 48, -1, -1, -1, -1, 568, -1, -1, - 730, 731, 732, 733, 734, 735, 736, 737, -1, -1, - -1, -1, -1, 626, 70, 182, -1, -1, -1, -1, - -1, -1, -1, 190, -1, -1, -1, 194, -1, 196, - -1, 646, -1, -1, -1, -1, -1, 204, -1, -1, - 428, 654, 209, 656, 211, -1, -1, -1, -1, 662, - -1, -1, 665, -1, -1, 111, 223, 224, 225, 447, - -1, 24, 25, -1, 794, -1, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, 691, -1, -1, -1, - -1, -1, -1, 46, 47, 48, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 828, -1, - -1, -1, -1, -1, -1, 718, -1, 70, -1, -1, - -1, -1, -1, -1, -1, -1, 729, -1, -1, -1, - -1, -1, -1, 179, 180, 181, 182, -1, -1, 859, - 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, - 870, 871, 872, 873, 874, 875, -1, 877, 111, -1, - -1, -1, 428, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 447, -1, -1, -1, -1, -1, 18, -1, -1, - 568, -1, 797, 24, -1, 800, -1, -1, 29, 30, + -1, -1, -1, 182, -1, 1013, -1, 452, 1016, -1, + 451, 190, -1, -1, 459, 194, 136, 196, 138, 464, + -1, 466, -1, -1, -1, 204, -1, -1, -1, 474, + 209, -1, 211, 478, -1, -1, -1, -1, 138, -1, + -1, -1, -1, -1, 223, 224, 225, -1, -1, -1, + 1058, 182, 183, 184, 185, -1, -1, -1, 499, 8, + 9, 10, 182, 504, -1, -1, 428, -1, -1, 1077, + 190, -1, -1, -1, 194, -1, 196, -1, -1, -1, + -1, -1, 182, -1, 204, 447, 138, -1, -1, -1, + 190, -1, -1, -1, 194, -1, 196, -1, -1, -1, + -1, 1109, 1110, -1, 204, 225, -1, -1, -1, 209, + -1, 211, -1, -1, -1, -1, 1124, 558, -1, 560, + -1, 562, 563, 223, 224, 225, -1, -1, -1, -1, + 182, -1, -1, -1, -1, 19, 20, -1, 190, -1, + 24, 586, 194, -1, 196, 29, 30, 31, 32, 33, + 34, -1, 204, -1, -1, 1163, 1164, 209, -1, 211, + 360, -1, 46, 47, 48, -1, 611, -1, -1, 610, + -1, 223, 224, 225, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 630, 70, -1, 388, 138, + 635, 632, -1, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, -1, -1, 568, -1, 328, -1, + -1, -1, -1, -1, -1, -1, 336, 337, 338, 339, + -1, 666, -1, 664, 424, -1, -1, 111, -1, -1, + -1, -1, -1, 182, -1, -1, -1, 357, -1, -1, + -1, 190, -1, -1, -1, 194, -1, 196, 368, 428, + -1, -1, -1, -1, -1, 204, -1, -1, -1, -1, + 209, -1, 211, -1, -1, -1, -1, -1, 447, 389, + -1, -1, -1, -1, 223, 224, 225, -1, 719, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 730, + 731, 732, 733, 734, 735, 736, 737, 742, 182, 183, + 184, 185, -1, 23, -1, -1, -1, 19, 428, -1, + -1, -1, 24, -1, -1, 435, -1, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, 428, -1, + -1, -1, -1, -1, 46, 47, 48, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 447, -1, -1, + -1, -1, -1, 794, -1, 19, -1, 802, 70, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, 428, -1, -1, -1, + -1, -1, 46, 47, 48, -1, -1, 828, -1, 568, + -1, -1, -1, -1, -1, 447, -1, -1, -1, 111, + -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 859, 860, + 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, + 871, 872, 873, 874, 875, 24, 877, -1, 27, 559, + 29, 30, 31, 32, 33, 34, 646, 111, 568, -1, + -1, -1, 897, 898, -1, -1, -1, 46, 47, 48, + 905, -1, -1, -1, -1, -1, -1, -1, 568, -1, + 182, 183, 184, 185, -1, -1, -1, -1, -1, 428, + -1, 70, -1, -1, 929, -1, -1, -1, -1, -1, + -1, 691, -1, -1, -1, -1, -1, -1, 447, -1, + -1, -1, 943, 24, 25, -1, 626, -1, 29, 30, + 31, 32, 33, 34, -1, -1, 568, -1, 182, 183, + 184, 185, 111, -1, -1, 46, 47, 48, -1, -1, + -1, -1, -1, -1, 654, -1, 656, -1, -1, 980, + -1, -1, 662, -1, -1, 665, -1, -1, -1, 70, + 995, -1, -1, 24, -1, -1, 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 46, 47, 48, -1, -1, - -1, -1, -1, -1, -1, 945, 179, 180, 181, 182, - -1, -1, -1, -1, -1, -1, -1, 842, 843, 70, - -1, 844, -1, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 858, -1, 19, 20, -1, -1, -1, - 24, -1, 982, -1, -1, 29, 30, 31, 32, 33, - 34, 428, -1, -1, -1, -1, -1, -1, -1, -1, - 111, -1, 46, 47, 48, -1, -1, -1, -1, -1, - 447, -1, -1, -1, -1, -1, -1, -1, -1, 904, - -1, -1, 568, -1, -1, -1, 70, -1, -1, -1, - -1, -1, 0, 1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 46, 47, 48, -1, 24, + 25, -1, -1, -1, 29, 30, 31, 32, 33, 34, + 111, -1, -1, 182, 183, 184, 185, 797, 718, 70, + 800, 46, 47, 48, -1, -1, -1, -1, -1, 729, + -1, -1, -1, -1, -1, -1, -1, 1062, -1, 568, + -1, -1, 24, 25, -1, 70, -1, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + 111, -1, 842, 843, 46, 47, 48, -1, 848, 849, + 850, 851, 852, 853, 854, 855, 856, 857, 858, -1, + -1, 182, 183, 184, 185, -1, 111, -1, 70, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1139, -1, + -1, -1, 902, -1, -1, -1, -1, -1, -1, 111, + -1, 182, 183, 184, 185, -1, -1, -1, -1, -1, + 0, 1, -1, -1, 844, 1170, -1, -1, -1, -1, + -1, 1172, -1, -1, -1, -1, -1, 182, 183, 184, + 185, -1, -1, -1, 24, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 182, 183, 184, 185, -1, -1, -1, 67, 68, 69, + -1, 71, -1, -1, -1, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, 1005, -1, -1, -1, 89, + 90, 91, -1, 933, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 108, 109, + 110, -1, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 978, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 0, 1, -1, -1, + -1, -1, 182, 183, 184, -1, 186, 187, 188, -1, + -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, + 24, 29, 30, 31, 32, 33, 34, -1, -1, -1, + 34, -1, -1, -1, -1, -1, -1, -1, 46, 47, + 48, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 70, 67, 68, 69, -1, 71, -1, -1, + -1, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 89, 90, 91, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 111, 108, 109, 110, -1, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, -1, -1, 182, 183, 184, 185, 182, 183, + 184, 1, 186, 187, 188, -1, 6, 7, 8, -1, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, 42, 43, -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 935, -1, -1, -1, 24, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 34, 111, 179, 180, - 181, 182, -1, -1, -1, -1, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, 68, 69, + 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 980, -1, 67, - 68, 69, -1, 71, -1, -1, -1, 75, 76, 77, - -1, -1, 1112, -1, -1, -1, -1, -1, -1, -1, - 1005, 89, 90, 91, -1, -1, -1, -1, 1128, -1, - -1, 568, -1, -1, -1, 179, 180, 181, 182, -1, - 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 1154, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 0, 1, - -1, 179, 180, 181, -1, 183, 184, 185, -1, -1, + -1, -1, -1, 93, 94, 95, 96, 97, 98, -1, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, -1, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, + -1, -1, 182, 183, 184, 185, 186, 187, 188, 1, + -1, -1, -1, -1, 6, 7, 8, -1, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, -1, -1, + -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + 42, 43, -1, -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 24, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, 68, 69, -1, 71, - -1, -1, -1, 75, 76, 77, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 108, 109, 110, -1, + -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, 179, 180, 181, - 1, 183, 184, 185, -1, 6, 7, 8, -1, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, 42, 43, -1, 45, 46, 47, 48, -1, -1, + 172, 173, 174, 175, -1, -1, -1, -1, -1, -1, + 182, 183, 184, 185, 186, 187, 188, 1, -1, -1, + -1, -1, 6, 7, 8, -1, -1, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + -1, -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 67, 68, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, - -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, 179, 180, - 181, 182, 183, 184, 185, 1, -1, -1, -1, -1, - 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, 42, 43, -1, -1, - 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 67, 68, 69, 70, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, - 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, - -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, 179, 180, 181, 182, 183, 184, 185, - 1, -1, -1, -1, -1, 6, 7, 8, -1, -1, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, 42, 43, -1, -1, 46, 47, 48, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 67, 68, 69, 70, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, - -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, 179, 180, - 181, 182, 183, 184, 185, 1, -1, -1, -1, -1, - 6, 7, 8, -1, -1, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 24, 25, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, -1, -1, -1, -1, -1, -1, 182, 183, + 184, 185, 186, 187, 188, 1, -1, -1, -1, -1, + 6, 7, 8, -1, -1, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, -1, -1, -1, 24, 25, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 1, -1, 46, 47, 48, 6, 7, 8, -1, 10, 11, 12, @@ -2174,318 +2217,289 @@ static const short yycheck[] = { 0, -1, -1, -1, -1, 107, -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 179, 180, 181, 182, 183, 184, -1, - -1, 1, -1, -1, -1, -1, 6, 7, 8, -1, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, -1, 179, 180, 181, 182, - 183, 184, 42, 43, 1, -1, 46, 47, 48, 6, - 7, 8, -1, -1, 11, 12, 13, 14, 15, 16, + -1, -1, -1, -1, -1, -1, 182, 183, 184, 185, + 186, 187, -1, -1, 1, -1, -1, -1, -1, 6, + 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, + -1, -1, 29, 30, 31, 32, 33, 34, -1, 182, + 183, 184, 185, 186, 187, 42, 43, 1, -1, 46, + 47, 48, 6, 7, 8, -1, -1, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, + 24, -1, -1, 70, -1, 29, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + -1, -1, 46, 47, 48, 92, 93, 94, 95, 96, + 97, 98, -1, -1, -1, -1, -1, -1, -1, -1, + 107, -1, -1, -1, 111, -1, 70, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, + 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, + -1, -1, -1, 107, -1, -1, -1, 111, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 182, 183, 184, 185, 186, + 187, -1, -1, 1, -1, -1, -1, -1, 6, 7, + 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, 182, 183, + 184, 185, 186, 187, 42, 43, 1, -1, 46, 47, + 48, 6, 7, 8, -1, -1, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, + -1, -1, 70, -1, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, 42, 43, -1, + -1, 46, 47, 48, -1, 93, 94, 95, 96, 97, + 98, -1, -1, -1, -1, -1, -1, -1, -1, 107, + -1, -1, -1, 111, -1, 70, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, + -1, -1, 107, -1, -1, -1, 111, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, -1, -1, 182, 183, 184, 185, 186, 187, + -1, -1, 1, 46, 47, 48, -1, 6, 7, 8, + -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, -1, -1, -1, -1, 24, -1, 70, -1, -1, + 29, 30, 31, 32, 33, 34, -1, 182, 183, 184, + 185, 186, 187, 42, 43, -1, -1, 46, 47, 48, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, + -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, + -1, -1, -1, -1, -1, -1, -1, -1, 107, 6, + 7, 8, 111, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, - 70, -1, 29, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, -1, -1, 42, 43, -1, -1, 46, - 47, 48, 92, 93, 94, 95, 96, 97, 98, -1, - -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, - -1, 111, -1, 70, -1, -1, -1, -1, -1, -1, + -1, -1, 29, 30, 31, 32, 33, 34, -1, 182, + 183, 184, 185, -1, -1, 42, 43, -1, 45, 46, + 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, + -1, -1, -1, 70, 71, -1, -1, -1, -1, -1, + -1, -1, -1, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, -1, - 107, -1, -1, -1, 111, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, - 180, 181, 182, 183, 184, -1, -1, 1, -1, -1, - -1, -1, 6, 7, 8, -1, 10, 11, 12, 13, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + -1, 178, -1, -1, 181, 182, 183, 184, 185, 186, + 187, 188, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, - 34, -1, 179, 180, 181, 182, 183, 184, 42, 43, - 1, -1, 46, 47, 48, 6, 7, 8, -1, -1, + 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, + -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, -1, 178, -1, -1, 181, 182, 183, + 184, 185, 186, 187, 188, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, -1, -1, 24, -1, -1, 70, -1, 29, 30, + -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, 42, 43, -1, -1, 46, 47, 48, -1, 93, - 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, - -1, -1, -1, 107, -1, -1, -1, 111, -1, 70, - -1, 19, -1, -1, -1, -1, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, 93, 94, 95, 96, 97, 98, 46, 47, - 48, -1, -1, -1, -1, -1, 107, -1, -1, -1, - 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 179, 180, 181, 182, 183, - 184, -1, -1, 1, -1, -1, -1, -1, 6, 7, - 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, -1, 111, -1, -1, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, 179, 180, - 181, 182, 183, 184, 42, 43, -1, -1, 46, 47, - 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 42, 43, -1, 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, -1, 178, -1, -1, + 181, 182, 183, 184, 185, 186, 187, 188, 6, 7, + 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, + 48, 6, 7, 8, -1, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, + -1, -1, 70, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 179, 180, 181, 182, 93, 94, 95, 96, 97, + -1, 46, 47, 48, -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, -1, 107, - 6, 7, 8, 111, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, 42, 43, -1, 45, - 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, + -1, 24, -1, 111, -1, 70, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 46, 47, 48, -1, -1, 93, 94, + 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, + -1, -1, 107, -1, -1, -1, 111, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, -1, -1, -1, -1, - -1, 179, 180, 181, 182, 183, 184, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, - 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, - -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, 42, 43, -1, 45, - 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 176, -1, + 178, -1, -1, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, - 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, - -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, 42, 43, -1, 45, - 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, + -1, 176, -1, 178, -1, -1, 181, 182, 183, 184, + 185, 186, 187, 6, 7, 8, -1, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, 182, + 183, 184, 185, 46, 47, 48, 6, 7, 8, -1, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, -1, 24, -1, -1, 70, -1, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 46, 47, 48, -1, + 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, + -1, -1, -1, -1, 107, -1, 24, -1, 111, -1, + 70, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, + 48, -1, -1, 93, 94, 95, 96, 97, 98, -1, + -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, + -1, 111, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, -1, -1, -1, -1, + -1, -1, -1, 176, -1, 178, -1, -1, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, - 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, - -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, 176, -1, 178, -1, + -1, 181, 182, 183, 184, 185, 186, 187, 6, 7, + 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, 182, 183, 184, 185, 46, 47, + 48, 6, 7, 8, -1, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, + -1, -1, 70, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 46, 47, 48, 6, 7, 8, -1, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, - -1, 24, -1, -1, 70, -1, 29, 30, 31, 32, + -1, 46, 47, 48, -1, 93, 94, 95, 96, 97, + 98, -1, -1, -1, -1, -1, -1, -1, -1, 107, + -1, 24, -1, 111, -1, 70, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 46, 47, 48, -1, 93, 94, 95, - 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, - -1, 107, -1, -1, -1, 111, -1, 70, -1, -1, + -1, -1, -1, 46, 47, 48, -1, -1, 93, 94, + 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, + -1, -1, 107, -1, -1, -1, 111, 70, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 176, -1, + 178, -1, -1, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 176, -1, 178, -1, -1, 181, 182, 183, 184, + 185, 186, 187, 6, 7, 8, -1, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, 182, + 183, 184, 185, 46, 47, 48, 6, 7, 8, -1, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + -1, -1, -1, -1, 24, -1, -1, 70, -1, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 46, 47, 48, -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, 111, -1, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 94, 95, 96, 97, 98, 18, + -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, + -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, + -1, -1, -1, 176, -1, 178, -1, -1, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, 67, 68, + 69, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - -1, -1, 6, 7, 8, -1, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, - 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, - 34, -1, -1, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 46, 47, 48, 6, 7, 8, -1, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - -1, -1, -1, 24, -1, -1, 70, -1, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 46, 47, 48, -1, 93, - 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, - -1, -1, -1, 107, -1, -1, -1, 111, -1, 70, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 176, -1, 178, -1, + -1, 181, 182, 183, 184, 185, 186, 187, -1, 108, + 109, 110, -1, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 18, -1, -1, + -1, -1, -1, -1, -1, 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, - -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, - 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 176, 177, 178, 179, 180, 181, 182, 183, - 184, -1, -1, -1, 6, 7, 8, -1, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, - 32, 33, 34, -1, -1, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 46, 47, 48, 6, 7, 8, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, -1, 24, -1, -1, 70, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 46, 47, 48, - -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, - -1, -1, -1, -1, -1, 107, -1, -1, -1, 111, - -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, 95, 96, 97, 98, - -1, -1, -1, -1, -1, -1, -1, -1, 107, -1, - -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, -1, -1, 6, 7, 8, -1, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, -1, -1, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 46, 47, 48, 6, - 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, - 70, -1, 29, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, - 47, 48, -1, 93, 94, 95, 96, 97, 98, -1, - -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, - -1, 111, -1, 70, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 108, 109, 110, + -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 19, -1, -1, -1, -1, + 24, -1, -1, 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, - 97, 98, 18, -1, -1, -1, -1, -1, -1, -1, - 107, -1, -1, -1, 111, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - -1, -1, -1, -1, -1, -1, 176, 177, 178, 179, - 180, 181, 182, 183, 184, -1, -1, -1, -1, -1, - -1, 67, 68, 69, -1, 71, -1, -1, -1, -1, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, -1, - -1, -1, 108, 109, 110, -1, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 18, -1, -1, -1, -1, 181, -1, -1, -1, 185, + -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, 19, -1, - -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 71, -1, 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 88, -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 111, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, 19, - -1, -1, -1, 181, 24, -1, -1, 185, -1, -1, + -1, -1, -1, -1, 108, 109, 110, -1, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 19, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 45, -1, -1, 179, 180, - 181, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 108, 109, - 110, -1, 112, 113, 114, 115, 116, 117, 118, 119, + 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 108, 109, 110, -1, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, -1, -1, -1, 184, 108, 109, + 110, 188, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 19, -1, -1, -1, - -1, 181, -1, -1, -1, 185, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 108, 109, 110, -1, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 108, - 109, 110, 185, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 22, -1, -1, - -1, -1, 181, -1, -1, -1, 185, -1, -1, -1, - 24, -1, -1, 27, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, 47, 48, -1, -1, -1, -1, -1, - -1, -1, 67, 68, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, - 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 108, 109, 110, -1, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 111, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, -1, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 24, -1, -1, -1, -1, -1, -1, -1, -1, - 185, 34, -1, -1, -1, 179, 180, 181, 182, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, - -1, 27, -1, 29, 30, 31, 32, 33, 34, -1, + 170, 171, 172, 173, 174, 175, 22, -1, -1, -1, + -1, -1, -1, -1, 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 46, 47, 48, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 108, 109, 110, -1, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 111, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, 179, 180, 181, -1, - 183, 184, 185, -1, -1, 24, 25, -1, -1, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, -1, 179, 180, 181, 182, 46, 47, 48, - 24, 25, -1, -1, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 24, 70, 46, 47, 48, 29, 30, 31, 32, 33, - 34, 24, -1, -1, -1, -1, 29, 30, 31, 32, - 33, 34, 46, 47, 48, -1, 70, -1, -1, -1, - -1, 24, -1, 46, 47, 48, 29, 30, 31, 32, - 33, 34, 111, -1, -1, -1, 70, -1, -1, -1, - -1, -1, -1, 46, 47, 48, 24, 70, -1, -1, - -1, 29, 30, 31, 32, 33, 34, 111, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, 46, 47, - 48, -1, -1, 24, -1, -1, -1, 111, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, 111, -1, - -1, -1, 70, -1, -1, 46, 47, 48, -1, -1, - 179, 180, 181, 182, -1, -1, -1, -1, 111, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, - -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, - -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, - 111, -1, -1, -1, -1, -1, 42, 43, -1, -1, - -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 179, 180, 181, 182, -1, -1, -1, -1, -1, + -1, 67, 68, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, - 181, 182, 108, 109, 110, -1, 112, 113, 114, 115, + -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, + -1, -1, 108, 109, 110, 34, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 45, -1, -1, -1, -1, 181, -1, -1, -1, 185, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, + 109, 110, 188, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 42, 43, -1, + -1, -1, -1, 182, 183, 184, -1, 186, 187, 188, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 67, 68, 69, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2496,9 +2510,9 @@ static const short yycheck[] = { 0, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 45, -1, -1, -1, -1, 181, -1, -1, -1, - 185, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, + 175, 45, -1, -1, -1, -1, -1, -1, -1, 184, + -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, 68, 69, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2509,35 +2523,48 @@ static const short yycheck[] = { 0, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 67, 68, 69, -1, -1, 181, -1, -1, - -1, 185, -1, -1, -1, -1, -1, -1, -1, -1, + 174, 175, 45, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 108, 109, 110, -1, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, -1, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 89, 90, 91, -1, -1, 181, -1, -1, -1, - 185, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 108, 109, 110, 185, 112, 113, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 108, 109, 110, -1, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 67, 68, 69, -1, -1, -1, -1, + -1, 184, -1, -1, -1, 188, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 108, 109, 110, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - -1, 185 + 174, 175, 89, 90, 91, -1, -1, -1, -1, -1, + 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, + -1, 108, 109, 110, -1, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, -1, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, -1, -1, -1, -1, -1, -1, 184, 108, 109, + 110, 188, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, -1, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, -1, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, + -1, -1, -1, -1, 184, -1, -1, -1, 188 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/gnu/share/bison.simple" @@ -3038,52 +3065,52 @@ yyreduce: switch (yyn) { case 5: -#line 249 "cgrammar.y" +#line 268 "cgrammar.y" { uentry_clearDecl (); ; break;} case 6: -#line 250 "cgrammar.y" +#line 269 "cgrammar.y" { uentry_clearDecl (); ; break;} case 7: -#line 251 "cgrammar.y" +#line 270 "cgrammar.y" { uentry_clearDecl (); ; break;} case 8: -#line 252 "cgrammar.y" +#line 271 "cgrammar.y" { uentry_clearDecl (); ; break;} case 9: -#line 253 "cgrammar.y" +#line 272 "cgrammar.y" { uentry_clearDecl (); ; break;} case 10: -#line 254 "cgrammar.y" +#line 273 "cgrammar.y" { uentry_checkDecl (); exprNode_free (yyvsp[0].expr); ; break;} case 11: -#line 255 "cgrammar.y" +#line 274 "cgrammar.y" { uentry_clearDecl (); ; break;} case 12: -#line 259 "cgrammar.y" +#line 278 "cgrammar.y" { checkConstant (yyvsp[-6].qtyp, yyvsp[-4].ntyp); ; break;} case 13: -#line 261 "cgrammar.y" +#line 280 "cgrammar.y" { checkValueConstant (yyvsp[-9].qtyp, yyvsp[-7].ntyp, yyvsp[-3].expr) ; ; break;} case 14: -#line 264 "cgrammar.y" +#line 283 "cgrammar.y" { context_enterFunctionDecl (); ; break;} case 15: -#line 265 "cgrammar.y" +#line 284 "cgrammar.y" { declareStaticFunction (yyvsp[-2].ntyp); context_quietExitFunction (); context_exitFunctionDecl (); ; break;} case 16: -#line 270 "cgrammar.y" +#line 289 "cgrammar.y" { qtype qint = qtype_create (ctype_int); yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, qint); @@ -3091,38 +3118,38 @@ case 16: ; break;} case 17: -#line 276 "cgrammar.y" +#line 295 "cgrammar.y" { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ; break;} case 19: -#line 281 "cgrammar.y" +#line 300 "cgrammar.y" { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ; break;} case 20: -#line 284 "cgrammar.y" +#line 303 "cgrammar.y" { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ; break;} case 21: -#line 286 "cgrammar.y" +#line 305 "cgrammar.y" { yyval.ntyp = idDecl_expectFunction (yyvsp[-2].ntyp); ; break;} case 22: -#line 288 "cgrammar.y" +#line 307 "cgrammar.y" { yyval.ntyp = idDecl_replaceCtype (yyvsp[-2].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-2].ntyp))); ; break;} case 23: -#line 290 "cgrammar.y" +#line 309 "cgrammar.y" { yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ctype_makeFixedArray (idDecl_getCtype (yyvsp[-5].ntyp), exprNode_getLongValue (yyvsp[-2].expr))); ; break;} case 24: -#line 294 "cgrammar.y" +#line 313 "cgrammar.y" { setCurrentParams (uentryList_missingParams); ; break;} case 25: -#line 297 "cgrammar.y" +#line 316 "cgrammar.y" { /* need to support globals and modifies here! */ ctype ct = ctype_makeFunction (idDecl_getCtype (yyvsp[-6].ntyp), uentryList_makeMissingParams ()); @@ -3132,31 +3159,33 @@ case 25: ; break;} case 26: -#line 305 "cgrammar.y" +#line 324 "cgrammar.y" { setCurrentParams (yyvsp[-1].entrylist); ; break;} case 27: -#line 308 "cgrammar.y" +#line 327 "cgrammar.y" { clearCurrentParams (); yyval.ntyp = idDecl_replaceCtype (yyvsp[-7].ntyp, ctype_makeFunction (idDecl_getCtype (yyvsp[-7].ntyp), yyvsp[-4].entrylist)); - context_popLoc (); + context_popLoc (); + + printf("Done nameDeclBase\n"); ; break;} case 28: -#line 314 "cgrammar.y" +#line 335 "cgrammar.y" { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ; break;} case 29: -#line 316 "cgrammar.y" +#line 337 "cgrammar.y" { yyval.ntyp = idDecl_expectFunction (yyvsp[-2].ntyp); ; break;} case 30: -#line 318 "cgrammar.y" +#line 339 "cgrammar.y" { yyval.ntyp = idDecl_replaceCtype (yyvsp[-2].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-2].ntyp))); ; break;} case 31: -#line 320 "cgrammar.y" +#line 341 "cgrammar.y" { int value; @@ -3174,12 +3203,12 @@ case 31: ; break;} case 32: -#line 336 "cgrammar.y" +#line 357 "cgrammar.y" { setCurrentParams (uentryList_missingParams); ; break;} case 33: -#line 339 "cgrammar.y" +#line 360 "cgrammar.y" { /* need to support globals and modifies here! */ ctype ct = ctype_makeFunction (idDecl_getCtype (yyvsp[-5].ntyp), uentryList_makeMissingParams ()); @@ -3189,233 +3218,305 @@ case 33: ; break;} case 34: -#line 347 "cgrammar.y" +#line 368 "cgrammar.y" { setCurrentParams (yyvsp[-1].entrylist); ; break;} case 35: -#line 350 "cgrammar.y" +#line 371 "cgrammar.y" { clearCurrentParams (); yyval.ntyp = idDecl_replaceCtype (yyvsp[-6].ntyp, ctype_makeFunction (idDecl_getCtype (yyvsp[-6].ntyp), yyvsp[-3].entrylist)); context_popLoc (); ; break;} case 36: -#line 357 "cgrammar.y" +#line 378 "cgrammar.y" { setCurrentParams (yyvsp[-1].entrylist); ; break;} case 37: -#line 358 "cgrammar.y" +#line 379 "cgrammar.y" { clearCurrentParams (); ; break;} case 38: -#line 359 "cgrammar.y" +#line 380 "cgrammar.y" { declareCIter (yyvsp[-8].cname, yyvsp[-6].entrylist); ; break;} case 39: -#line 362 "cgrammar.y" +#line 383 "cgrammar.y" { exprNode_checkMacroBody (yyvsp[-1].expr); ; break;} case 40: -#line 363 "cgrammar.y" +#line 384 "cgrammar.y" { exprNode_checkIterBody (yyvsp[-1].expr); ; break;} case 41: -#line 364 "cgrammar.y" +#line 385 "cgrammar.y" { exprNode_checkIterEnd (yyvsp[-1].expr); ; break;} case 42: -#line 365 "cgrammar.y" +#line 386 "cgrammar.y" { exprChecks_checkEmptyMacroBody (); ; break;} case 43: -#line 368 "cgrammar.y" +#line 389 "cgrammar.y" { declareFunction (yyvsp[0].ntyp); ; break;} case 44: -#line 371 "cgrammar.y" +#line 392 "cgrammar.y" { setProcessingGlobMods (); ; break;} case 45: -#line 372 "cgrammar.y" +#line 393 "cgrammar.y" { clearProcessingGlobMods (); ; break;} -case 48: -#line 382 "cgrammar.y" -{ printf("doingoptGlobBufConstraintsAux \n"); ; - break;} -case 51: -#line 389 "cgrammar.y" +case 46: +#line 399 "cgrammar.y" { setProcessingGlobMods (); ; break;} -case 52: -#line 390 "cgrammar.y" +case 47: +#line 400 "cgrammar.y" { clearProcessingGlobMods (); ; break;} -case 59: -#line 405 "cgrammar.y" -{ ; ; - break;} -case 60: -#line 406 "cgrammar.y" -{ ; ; +case 49: +#line 407 "cgrammar.y" +{ + TPRINTF ( ("doing optGlobBufConstraintsAux\n") ); +context_setProtectVars (); enterParamsTemp (); + sRef_setGlobalScopeSafe (); + +; + break;} +case 50: +#line 413 "cgrammar.y" +{ + setFunctionConstraints (yyvsp[-1].sr); + exitParamsTemp (); + sRef_clearGlobalScopeSafe (); + context_releaseVars (); + printf ("done optGlobBufConstraintsAux\n");; + break;} +case 52: +#line 422 "cgrammar.y" +{ yyval.sr = constraintList_add (yyvsp[0].sr, yyvsp[-1].sr); ; + break;} +case 53: +#line 423 "cgrammar.y" +{constraintList c; c = constraintList_new(); c = constraintList_add (c, yyvsp[0].sr); yyval.sr = c; + break;} +case 54: +#line 426 "cgrammar.y" +{ + yyval.sr = makeConstraintParse3 (yyvsp[-3].sr, yyvsp[-2].tok, yyvsp[-1].sr); + printf("Done BufConstraint1\n"); ; break;} case 61: -#line 409 "cgrammar.y" -{ globListAdd (yyvsp[0].sr, yyvsp[-1].tquallist); ; +#line 441 "cgrammar.y" +{yyval.sr = constraintExpr_parseMakeUnaryOp (yyvsp[-3].tok, yyvsp[-1].sr); TPRINTF( ("Got BufConstraintExpr UNary Op ") ); ; break;} case 62: -#line 412 "cgrammar.y" -{ yyval.sr = uentry_getSref (yyvsp[0].entry); ; +#line 442 "cgrammar.y" +{ + TPRINTF( ("Got BufConstraintExpr BINary Op ") ); + yyval.sr = constraintExpr_parseMakeBinaryOp (yyvsp[-3].sr, yyvsp[-2].tok, yyvsp[-1].sr); ; break;} case 63: -#line 413 "cgrammar.y" -{ yyval.sr = globListUnrecognized (yyvsp[0].cname); ; +#line 447 "cgrammar.y" +{ yyval.sr = constraintExpr_makeTermsRef ( + uentry_getSref (yyvsp[0].entry)); + checkModifiesId (yyvsp[0].entry); ; break;} case 64: -#line 416 "cgrammar.y" -{ yyval.typequal = qual_createUndef (); ; +#line 450 "cgrammar.y" +{ yyval.sr = constraintExpr_makeTermsRef(fixModifiesId (yyvsp[0].cname) ); ; break;} case 65: -#line 417 "cgrammar.y" +#line 451 "cgrammar.y" +{ char *t; int c; + t = cstring_toCharsSafe (exprNode_unparse(yyvsp[0].expr)); + c = atoi( t ); + yyval.sr = constraintExpr_makeIntLiteral (c); +; + break;} +case 69: +#line 472 "cgrammar.y" +{ setProcessingGlobMods (); ; + break;} +case 70: +#line 473 "cgrammar.y" +{ clearProcessingGlobMods (); ; + break;} +case 71: +#line 483 "cgrammar.y" +{ setProcessingGlobMods (); ; + break;} +case 72: +#line 484 "cgrammar.y" +{ clearProcessingGlobMods (); ; + break;} +case 79: +#line 499 "cgrammar.y" +{ ; ; + break;} +case 80: +#line 500 "cgrammar.y" +{ ; ; + break;} +case 81: +#line 503 "cgrammar.y" +{ globListAdd (yyvsp[0].sr, yyvsp[-1].tquallist); ; + break;} +case 82: +#line 506 "cgrammar.y" +{ yyval.sr = uentry_getSref (yyvsp[0].entry); ; + break;} +case 83: +#line 507 "cgrammar.y" +{ yyval.sr = globListUnrecognized (yyvsp[0].cname); ; + break;} +case 84: +#line 510 "cgrammar.y" +{ yyval.typequal = qual_createUndef (); ; + break;} +case 85: +#line 511 "cgrammar.y" { yyval.typequal = qual_createKilled (); ; break;} -case 66: -#line 418 "cgrammar.y" +case 86: +#line 512 "cgrammar.y" { yyval.typequal = qual_createOut (); ; break;} -case 67: -#line 419 "cgrammar.y" +case 87: +#line 513 "cgrammar.y" { yyval.typequal = qual_createIn (); ; break;} -case 68: -#line 420 "cgrammar.y" +case 88: +#line 514 "cgrammar.y" { yyval.typequal = qual_createPartial (); ; break;} -case 69: -#line 423 "cgrammar.y" +case 89: +#line 517 "cgrammar.y" { yyval.tquallist = qualList_undefined; ; break;} -case 70: -#line 424 "cgrammar.y" +case 90: +#line 518 "cgrammar.y" { yyval.tquallist = qualList_add (yyvsp[0].tquallist, yyvsp[-1].typequal); ; break;} -case 71: -#line 427 "cgrammar.y" +case 91: +#line 521 "cgrammar.y" { setProcessingGlobalsList (); ; break;} -case 72: -#line 429 "cgrammar.y" +case 92: +#line 523 "cgrammar.y" { unsetProcessingGlobals (); ; break;} -case 73: -#line 430 "cgrammar.y" +case 93: +#line 524 "cgrammar.y" { setProcessingGlobalsList (); ; break;} -case 74: -#line 432 "cgrammar.y" +case 94: +#line 526 "cgrammar.y" { unsetProcessingGlobals (); ; break;} -case 75: -#line 434 "cgrammar.y" +case 95: +#line 528 "cgrammar.y" { setFunctionNoGlobals (); setFunctionModifies (sRefSet_single (sRef_makeNothing ())); ; break;} -case 78: -#line 441 "cgrammar.y" +case 98: +#line 535 "cgrammar.y" { setProcessingGlobalsList (); ; break;} -case 79: -#line 443 "cgrammar.y" +case 99: +#line 537 "cgrammar.y" { unsetProcessingGlobals (); ; break;} -case 80: -#line 444 "cgrammar.y" +case 100: +#line 538 "cgrammar.y" { setProcessingGlobalsList (); ; break;} -case 81: -#line 446 "cgrammar.y" +case 101: +#line 540 "cgrammar.y" { unsetProcessingGlobals (); ; break;} -case 82: -#line 448 "cgrammar.y" +case 102: +#line 542 "cgrammar.y" { setFunctionNoGlobals (); setFunctionModifies (sRefSet_single (sRef_makeNothing ())); ; break;} -case 87: -#line 460 "cgrammar.y" +case 107: +#line 554 "cgrammar.y" { context_setProtectVars (); enterParamsTemp (); sRef_setGlobalScopeSafe (); ; break;} -case 88: -#line 465 "cgrammar.y" +case 108: +#line 559 "cgrammar.y" { setFunctionModifies (yyvsp[0].srset); exitParamsTemp (); sRef_clearGlobalScopeSafe (); context_releaseVars (); ; break;} -case 89: -#line 473 "cgrammar.y" +case 109: +#line 567 "cgrammar.y" { context_setProtectVars (); enterParamsTemp (); sRef_setGlobalScopeSafe (); ; break;} -case 90: -#line 478 "cgrammar.y" +case 110: +#line 572 "cgrammar.y" { setFunctionModifies (yyvsp[0].srset); exitParamsTemp (); sRef_clearGlobalScopeSafe (); context_releaseVars (); ; break;} -case 100: -#line 502 "cgrammar.y" +case 120: +#line 596 "cgrammar.y" { yyval.sck = SP_ISONLY; ; break;} -case 101: -#line 503 "cgrammar.y" +case 121: +#line 597 "cgrammar.y" { yyval.sck = SP_ISOBSERVER; ; break;} -case 102: -#line 504 "cgrammar.y" +case 122: +#line 598 "cgrammar.y" { yyval.sck = SP_ISEXPOSED; ; break;} -case 103: -#line 505 "cgrammar.y" +case 123: +#line 599 "cgrammar.y" { yyval.sck = SP_ISDEPENDENT; ; break;} -case 104: -#line 506 "cgrammar.y" +case 124: +#line 600 "cgrammar.y" { yyval.sck = SP_ISOWNED; ; break;} -case 105: -#line 507 "cgrammar.y" +case 125: +#line 601 "cgrammar.y" { yyval.sck = SP_ISSHARED; ; break;} -case 106: -#line 508 "cgrammar.y" +case 126: +#line 602 "cgrammar.y" { yyval.sck = SP_ISNULL; ; break;} -case 107: -#line 509 "cgrammar.y" +case 127: +#line 603 "cgrammar.y" { yyval.sck = SP_ISNOTNULL; ; break;} -case 108: -#line 513 "cgrammar.y" +case 128: +#line 607 "cgrammar.y" { context_setProtectVars (); enterParamsTemp (); sRef_setGlobalScopeSafe (); ; break;} -case 109: -#line 519 "cgrammar.y" +case 129: +#line 613 "cgrammar.y" { setFunctionSpecialClause (yyvsp[-6].tok, yyvsp[-3].srset, yyvsp[-1].tok); exitParamsTemp (); @@ -3423,16 +3524,16 @@ case 109: context_releaseVars (); ; break;} -case 110: -#line 526 "cgrammar.y" +case 130: +#line 620 "cgrammar.y" { context_setProtectVars (); enterParamsTemp (); sRef_setGlobalScopeSafe (); ; break;} -case 111: -#line 532 "cgrammar.y" +case 131: +#line 626 "cgrammar.y" { setFunctionStateSpecialClause (yyvsp[-7].tok, yyvsp[-5].sck, yyvsp[-3].srset, yyvsp[-1].tok); exitParamsTemp (); @@ -3440,43 +3541,43 @@ case 111: context_releaseVars (); ; break;} -case 112: -#line 541 "cgrammar.y" +case 132: +#line 635 "cgrammar.y" { qtype qint = qtype_create (ctype_int); yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, qint); qtype_free (qint); ; break;} -case 113: -#line 547 "cgrammar.y" +case 133: +#line 641 "cgrammar.y" { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ; break;} -case 114: -#line 550 "cgrammar.y" +case 134: +#line 644 "cgrammar.y" { checkDoneParams (); context_enterInnerContext (); ; break;} -case 115: -#line 552 "cgrammar.y" +case 135: +#line 646 "cgrammar.y" { exprNode_checkFunctionBody (yyvsp[0].expr); yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; break;} -case 116: -#line 557 "cgrammar.y" +case 136: +#line 651 "cgrammar.y" { doneParams (); context_enterInnerContext (); ; break;} -case 117: -#line 559 "cgrammar.y" +case 137: +#line 653 "cgrammar.y" { context_exitInner (yyvsp[0].expr); exprNode_checkFunctionBody (yyvsp[0].expr); yyval.expr = yyvsp[0].expr; /* old style */ ; break;} -case 118: -#line 567 "cgrammar.y" +case 138: +#line 661 "cgrammar.y" { context_setFunctionDefined (exprNode_loc (yyvsp[0].expr)); exprNode_checkFunction (context_getHeader (), yyvsp[0].expr); @@ -3485,112 +3586,112 @@ case 118: context_exitFunction (); ; break;} -case 119: -#line 576 "cgrammar.y" +case 139: +#line 670 "cgrammar.y" { yyval.srset = yyvsp[-2].srset; ; break;} -case 120: -#line 577 "cgrammar.y" +case 140: +#line 671 "cgrammar.y" { yyval.srset = sRefSet_new (); ; break;} -case 121: -#line 580 "cgrammar.y" +case 141: +#line 674 "cgrammar.y" { yyval.srset = yyvsp[-1].srset; ; break;} -case 122: -#line 581 "cgrammar.y" +case 142: +#line 675 "cgrammar.y" { yyval.srset = sRefSet_new (); ; break;} -case 123: -#line 584 "cgrammar.y" +case 143: +#line 678 "cgrammar.y" { yyval.sr = uentry_getSref (yyvsp[0].entry); checkModifiesId (yyvsp[0].entry); ; break;} -case 124: -#line 585 "cgrammar.y" +case 144: +#line 679 "cgrammar.y" { yyval.sr = fixModifiesId (yyvsp[0].cname); ; break;} -case 125: -#line 586 "cgrammar.y" +case 145: +#line 680 "cgrammar.y" { yyval.sr = modListArrayFetch (yyvsp[-2].sr, sRef_undefined); ; break;} -case 126: -#line 587 "cgrammar.y" +case 146: +#line 681 "cgrammar.y" { yyval.sr = modListArrayFetch (yyvsp[-3].sr, yyvsp[-1].sr); ; break;} -case 127: -#line 588 "cgrammar.y" +case 147: +#line 682 "cgrammar.y" { yyval.sr = modListPointer (yyvsp[0].sr); ; break;} -case 128: -#line 589 "cgrammar.y" +case 148: +#line 683 "cgrammar.y" { yyval.sr = yyvsp[-1].sr; ; break;} -case 129: -#line 590 "cgrammar.y" +case 149: +#line 684 "cgrammar.y" { yyval.sr = modListFieldAccess (yyvsp[-2].sr, yyvsp[0].cname); ; break;} -case 130: -#line 591 "cgrammar.y" +case 150: +#line 685 "cgrammar.y" { yyval.sr = modListArrowAccess (yyvsp[-2].sr, yyvsp[0].cname); ; break;} -case 131: -#line 595 "cgrammar.y" +case 151: +#line 689 "cgrammar.y" { yyval.sr = yyvsp[0].sr; ; break;} -case 132: -#line 596 "cgrammar.y" +case 152: +#line 690 "cgrammar.y" { yyval.sr = sRef_makeUnknown (); /* sRef_makeConstant ($1); ? */ ; break;} -case 133: -#line 600 "cgrammar.y" +case 153: +#line 694 "cgrammar.y" { yyval.srset = sRefSet_single (yyvsp[0].sr); ; break;} -case 134: -#line 601 "cgrammar.y" +case 154: +#line 695 "cgrammar.y" { yyval.srset = sRefSet_insert (yyvsp[-2].srset, yyvsp[0].sr); ; break;} -case 135: -#line 605 "cgrammar.y" +case 155: +#line 699 "cgrammar.y" { yyval.sr = checkSpecClausesId (yyvsp[0].entry); ; break;} -case 136: -#line 607 "cgrammar.y" +case 156: +#line 701 "cgrammar.y" { yyval.sr = fixSpecClausesId (yyvsp[0].cname); ; break;} -case 137: -#line 608 "cgrammar.y" +case 157: +#line 702 "cgrammar.y" { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-2].sr); ; break;} -case 138: -#line 609 "cgrammar.y" +case 158: +#line 703 "cgrammar.y" { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-3].sr); ; break;} -case 139: -#line 610 "cgrammar.y" +case 159: +#line 704 "cgrammar.y" { yyval.sr = sRef_constructPointer (yyvsp[0].sr); ; break;} -case 140: -#line 611 "cgrammar.y" +case 160: +#line 705 "cgrammar.y" { yyval.sr = yyvsp[-1].sr; ; break;} -case 141: -#line 612 "cgrammar.y" +case 161: +#line 706 "cgrammar.y" { cstring_markOwned (yyvsp[0].cname); yyval.sr = sRef_buildField (yyvsp[-2].sr, yyvsp[0].cname); ; break;} -case 142: -#line 614 "cgrammar.y" +case 162: +#line 708 "cgrammar.y" { cstring_markOwned (yyvsp[0].cname); yyval.sr = sRef_makeArrow (yyvsp[-2].sr, yyvsp[0].cname); ; break;} -case 143: -#line 619 "cgrammar.y" +case 163: +#line 713 "cgrammar.y" { if (sRef_isValid (yyvsp[0].sr)) { yyval.srset = sRefSet_single (yyvsp[0].sr); } else { yyval.srset = sRefSet_undefined; } ; break;} -case 144: -#line 623 "cgrammar.y" +case 164: +#line 717 "cgrammar.y" { if (sRef_isValid (yyvsp[0].sr)) { yyval.srset = sRefSet_insert (yyvsp[-2].srset, yyvsp[0].sr); @@ -3601,850 +3702,850 @@ case 144: } ; break;} -case 145: -#line 634 "cgrammar.y" +case 165: +#line 728 "cgrammar.y" { yyval.expr = exprNode_fromIdentifier (yyvsp[0].entry); ; break;} -case 146: -#line 635 "cgrammar.y" +case 166: +#line 729 "cgrammar.y" { yyval.expr = exprNode_fromUIO (yyvsp[0].cname); ; break;} -case 147: -#line 636 "cgrammar.y" +case 167: +#line 730 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 148: -#line 637 "cgrammar.y" +case 168: +#line 731 "cgrammar.y" { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 149: -#line 638 "cgrammar.y" +case 169: +#line 732 "cgrammar.y" { yyval.expr = exprNode_fromIdentifier (coerceId (yyvsp[0].cname)); ; break;} -case 150: -#line 639 "cgrammar.y" +case 170: +#line 733 "cgrammar.y" { yyval.expr = exprNode_makeError (); ; break;} -case 152: -#line 643 "cgrammar.y" +case 172: +#line 737 "cgrammar.y" { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; break;} -case 153: -#line 644 "cgrammar.y" +case 173: +#line 738 "cgrammar.y" { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; break;} -case 154: -#line 645 "cgrammar.y" +case 174: +#line 739 "cgrammar.y" { yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].alist); ; break;} -case 155: -#line 646 "cgrammar.y" +case 175: +#line 740 "cgrammar.y" { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; break;} -case 156: -#line 647 "cgrammar.y" +case 176: +#line 741 "cgrammar.y" { yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-1].cname); ; break;} -case 157: -#line 648 "cgrammar.y" +case 177: +#line 742 "cgrammar.y" { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-1].cname); ; break;} -case 158: -#line 649 "cgrammar.y" +case 178: +#line 743 "cgrammar.y" { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 159: -#line 650 "cgrammar.y" +case 179: +#line 744 "cgrammar.y" { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 160: -#line 653 "cgrammar.y" +case 180: +#line 747 "cgrammar.y" { yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ; break;} -case 161: -#line 654 "cgrammar.y" +case 181: +#line 748 "cgrammar.y" { yyval.alist = exprNodeList_push (yyvsp[-2].alist, yyvsp[0].expr); ; break;} -case 163: -#line 658 "cgrammar.y" +case 183: +#line 752 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 164: -#line 659 "cgrammar.y" +case 184: +#line 753 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 165: -#line 660 "cgrammar.y" +case 185: +#line 754 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 166: -#line 661 "cgrammar.y" +case 186: +#line 755 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 167: -#line 662 "cgrammar.y" +case 187: +#line 756 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 168: -#line 663 "cgrammar.y" +case 188: +#line 757 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 169: -#line 664 "cgrammar.y" +case 189: +#line 758 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 170: -#line 665 "cgrammar.y" +case 190: +#line 759 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 171: -#line 666 "cgrammar.y" +case 191: +#line 760 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 172: -#line 667 "cgrammar.y" +case 192: +#line 761 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 173: -#line 670 "cgrammar.y" +case 193: +#line 764 "cgrammar.y" { yyval.cstringlist = cstringList_add (yyvsp[-2].cstringlist, yyvsp[0].cname); ; break;} -case 174: -#line 671 "cgrammar.y" +case 194: +#line 765 "cgrammar.y" { yyval.cstringlist = cstringList_single (yyvsp[0].cname); ; break;} -case 175: -#line 675 "cgrammar.y" +case 195: +#line 769 "cgrammar.y" { yyval.expr = exprNode_offsetof (yyvsp[-5].qtyp, yyvsp[-2].cstringlist); ; break;} -case 176: -#line 678 "cgrammar.y" +case 196: +#line 772 "cgrammar.y" { context_setProtectVars (); ; break;} -case 177: -#line 679 "cgrammar.y" +case 197: +#line 773 "cgrammar.y" { context_sizeofReleaseVars (); yyval.expr = yyvsp[0].expr; ; break;} -case 178: -#line 682 "cgrammar.y" +case 198: +#line 776 "cgrammar.y" { yyval.expr = exprNode_sizeofType (yyvsp[-1].qtyp); ; break;} -case 179: -#line 683 "cgrammar.y" +case 199: +#line 777 "cgrammar.y" { yyval.expr = exprNode_sizeofExpr (yyvsp[0].expr); ; break;} -case 180: -#line 684 "cgrammar.y" +case 200: +#line 778 "cgrammar.y" { yyval.expr = exprNode_alignofType (yyvsp[-1].qtyp); ; break;} -case 181: -#line 685 "cgrammar.y" +case 201: +#line 779 "cgrammar.y" { yyval.expr = exprNode_alignofExpr (yyvsp[0].expr); ; break;} -case 183: -#line 690 "cgrammar.y" +case 203: +#line 784 "cgrammar.y" { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ; break;} -case 185: -#line 694 "cgrammar.y" +case 205: +#line 788 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 186: -#line 695 "cgrammar.y" +case 206: +#line 789 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 187: -#line 696 "cgrammar.y" +case 207: +#line 790 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 189: -#line 700 "cgrammar.y" +case 209: +#line 794 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 190: -#line 701 "cgrammar.y" +case 210: +#line 795 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 192: -#line 705 "cgrammar.y" +case 212: +#line 799 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 193: -#line 706 "cgrammar.y" +case 213: +#line 800 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 195: -#line 710 "cgrammar.y" +case 215: +#line 804 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 196: -#line 711 "cgrammar.y" +case 216: +#line 805 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 197: -#line 712 "cgrammar.y" +case 217: +#line 806 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 198: -#line 713 "cgrammar.y" +case 218: +#line 807 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 200: -#line 717 "cgrammar.y" +case 220: +#line 811 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 201: -#line 718 "cgrammar.y" +case 221: +#line 812 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 203: -#line 722 "cgrammar.y" +case 223: +#line 816 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 205: -#line 726 "cgrammar.y" +case 225: +#line 820 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 207: -#line 731 "cgrammar.y" +case 227: +#line 825 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 209: -#line 736 "cgrammar.y" +case 229: +#line 830 "cgrammar.y" { exprNode_produceGuards (yyvsp[-1].expr); context_enterAndClause (yyvsp[-1].expr); ; break;} -case 210: -#line 740 "cgrammar.y" +case 230: +#line 834 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); context_exitAndClause (yyval.expr, yyvsp[0].expr); ; break;} -case 212: -#line 748 "cgrammar.y" +case 232: +#line 842 "cgrammar.y" { exprNode_produceGuards (yyvsp[-1].expr); context_enterOrClause (yyvsp[-1].expr); ; break;} -case 213: -#line 753 "cgrammar.y" +case 233: +#line 847 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); context_exitOrClause (yyval.expr, yyvsp[0].expr); ; break;} -case 215: -#line 760 "cgrammar.y" +case 235: +#line 854 "cgrammar.y" { exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ; break;} -case 216: -#line 761 "cgrammar.y" +case 236: +#line 855 "cgrammar.y" { context_enterFalseClause (yyvsp[-4].expr); ; break;} -case 217: -#line 762 "cgrammar.y" +case 237: +#line 856 "cgrammar.y" { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); context_exitClause (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 219: -#line 766 "cgrammar.y" +case 239: +#line 860 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 220: -#line 767 "cgrammar.y" +case 240: +#line 861 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 221: -#line 768 "cgrammar.y" +case 241: +#line 862 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 222: -#line 769 "cgrammar.y" +case 242: +#line 863 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 223: -#line 770 "cgrammar.y" +case 243: +#line 864 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 224: -#line 771 "cgrammar.y" +case 244: +#line 865 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 225: -#line 772 "cgrammar.y" +case 245: +#line 866 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 226: -#line 773 "cgrammar.y" +case 246: +#line 867 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 227: -#line 774 "cgrammar.y" +case 247: +#line 868 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 228: -#line 775 "cgrammar.y" +case 248: +#line 869 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 229: -#line 776 "cgrammar.y" +case 249: +#line 870 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 231: -#line 780 "cgrammar.y" +case 251: +#line 874 "cgrammar.y" { yyval.expr = exprNode_comma (yyvsp[-2].expr, yyvsp[0].expr); ; break;} -case 232: -#line 783 "cgrammar.y" +case 252: +#line 877 "cgrammar.y" { yyval.expr = exprNode_undefined; ; break;} -case 235: -#line 792 "cgrammar.y" +case 255: +#line 886 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 236: -#line 793 "cgrammar.y" +case 256: +#line 887 "cgrammar.y" { doVaDcl (); yyval.expr = exprNode_makeError (); ; break;} -case 237: -#line 794 "cgrammar.y" +case 257: +#line 888 "cgrammar.y" { yyval.expr = exprNode_makeError (); ; break;} -case 238: -#line 797 "cgrammar.y" +case 258: +#line 891 "cgrammar.y" { yyval.expr = exprNode_makeError (); ; break;} -case 239: -#line 811 "cgrammar.y" +case 259: +#line 905 "cgrammar.y" { setProcessingVars (yyvsp[-3].qtyp); processNamedDecl (yyvsp[-1].ntyp); ; break;} -case 240: -#line 814 "cgrammar.y" +case 260: +#line 908 "cgrammar.y" { unsetProcessingVars (); yyval.expr = yyvsp[-2].expr; ; break;} -case 241: -#line 816 "cgrammar.y" +case 261: +#line 910 "cgrammar.y" { setProcessingVars (yyvsp[-4].qtyp); processNamedDecl (yyvsp[-2].ntyp); ; break;} -case 242: -#line 819 "cgrammar.y" +case 262: +#line 913 "cgrammar.y" { yyval.expr = exprNode_concat (yyvsp[-2].expr, exprNode_makeInitialization (yyvsp[-8].ntyp, yyvsp[-3].expr)); unsetProcessingVars (); ; break;} -case 243: -#line 823 "cgrammar.y" +case 263: +#line 917 "cgrammar.y" { processNamedDecl (yyvsp[-1].ntyp); yyval.expr = exprNode_makeError (); ; break;} -case 244: -#line 824 "cgrammar.y" +case 264: +#line 918 "cgrammar.y" { processNamedDecl (yyvsp[-2].ntyp); ; break;} -case 245: -#line 825 "cgrammar.y" +case 265: +#line 919 "cgrammar.y" { yyval.expr = exprNode_makeInitialization (yyvsp[-5].ntyp, yyvsp[0].expr); ; break;} -case 246: -#line 829 "cgrammar.y" +case 266: +#line 923 "cgrammar.y" { setProcessingTypedef (yyvsp[0].qtyp); ; break;} -case 247: -#line 830 "cgrammar.y" +case 267: +#line 924 "cgrammar.y" { unsetProcessingTypedef (); ; break;} -case 248: -#line 831 "cgrammar.y" +case 268: +#line 925 "cgrammar.y" { /* in the ANSI grammar, semantics unclear */ ; break;} -case 249: -#line 832 "cgrammar.y" +case 269: +#line 926 "cgrammar.y" { /* in the ANSI grammar, semantics unclear */ ; break;} -case 250: -#line 835 "cgrammar.y" +case 270: +#line 929 "cgrammar.y" { g_expectingTypeName = TRUE; ; break;} -case 251: -#line 838 "cgrammar.y" +case 271: +#line 932 "cgrammar.y" { g_expectingTypeName = TRUE; context_pushLoc (); ; break;} -case 252: -#line 841 "cgrammar.y" +case 272: +#line 935 "cgrammar.y" { ; ; break;} -case 253: -#line 844 "cgrammar.y" +case 273: +#line 938 "cgrammar.y" { ; ; break;} -case 254: -#line 845 "cgrammar.y" +case 274: +#line 939 "cgrammar.y" { ; ; break;} -case 255: -#line 848 "cgrammar.y" +case 275: +#line 942 "cgrammar.y" { yyval.expr = exprNode_makeError (); ; break;} -case 256: -#line 849 "cgrammar.y" +case 276: +#line 943 "cgrammar.y" { yyval.expr = exprNode_concat (yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 257: -#line 852 "cgrammar.y" +case 277: +#line 946 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 258: -#line 853 "cgrammar.y" +case 278: +#line 947 "cgrammar.y" { yyval.expr = exprNode_makeInitBlock (yyvsp[-2].tok, yyvsp[-1].alist); ; break;} -case 259: -#line 854 "cgrammar.y" +case 279: +#line 948 "cgrammar.y" { yyval.expr = exprNode_makeInitBlock (yyvsp[-3].tok, yyvsp[-2].alist); ; break;} -case 260: -#line 859 "cgrammar.y" +case 280: +#line 953 "cgrammar.y" { yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ; break;} -case 261: -#line 861 "cgrammar.y" +case 281: +#line 955 "cgrammar.y" { yyval.alist = exprNodeList_push (yyvsp[-2].alist, yyvsp[0].expr); ; break;} -case 262: -#line 869 "cgrammar.y" +case 282: +#line 963 "cgrammar.y" { setStorageClass (SCEXTERN); yyval.typequal = qual_createExtern (); ; break;} -case 263: -#line 870 "cgrammar.y" +case 283: +#line 964 "cgrammar.y" { yyval.typequal = qual_createInline (); ; break;} -case 264: -#line 871 "cgrammar.y" +case 284: +#line 965 "cgrammar.y" { setStorageClass (SCSTATIC); yyval.typequal = qual_createStatic (); ; break;} -case 265: -#line 872 "cgrammar.y" +case 285: +#line 966 "cgrammar.y" { yyval.typequal = qual_createAuto (); ; break;} -case 266: -#line 873 "cgrammar.y" +case 286: +#line 967 "cgrammar.y" { yyval.typequal = qual_createRegister (); ; break;} -case 267: -#line 876 "cgrammar.y" +case 287: +#line 970 "cgrammar.y" { yyval.typequal = qual_createConst (); ; break;} -case 268: -#line 877 "cgrammar.y" +case 288: +#line 971 "cgrammar.y" { yyval.typequal = qual_createVolatile (); ; break;} -case 269: -#line 878 "cgrammar.y" +case 289: +#line 972 "cgrammar.y" { yyval.typequal = qual_createOut (); ; break;} -case 270: -#line 879 "cgrammar.y" +case 290: +#line 973 "cgrammar.y" { yyval.typequal = qual_createIn (); ; break;} -case 271: -#line 880 "cgrammar.y" +case 291: +#line 974 "cgrammar.y" { yyval.typequal = qual_createPartial (); ; break;} -case 272: -#line 881 "cgrammar.y" +case 292: +#line 975 "cgrammar.y" { yyval.typequal = qual_createSpecial (); ; break;} -case 273: -#line 882 "cgrammar.y" +case 293: +#line 976 "cgrammar.y" { yyval.typequal = qual_createOwned (); ; break;} -case 274: -#line 883 "cgrammar.y" +case 294: +#line 977 "cgrammar.y" { yyval.typequal = qual_createDependent (); ; break;} -case 275: -#line 884 "cgrammar.y" +case 295: +#line 978 "cgrammar.y" { yyval.typequal = qual_createYield (); ; break;} -case 276: -#line 885 "cgrammar.y" +case 296: +#line 979 "cgrammar.y" { yyval.typequal = qual_createTemp (); ; break;} -case 277: -#line 886 "cgrammar.y" +case 297: +#line 980 "cgrammar.y" { yyval.typequal = qual_createOnly (); ; break;} -case 278: -#line 887 "cgrammar.y" +case 298: +#line 981 "cgrammar.y" { yyval.typequal = qual_createKeep (); ; break;} -case 279: -#line 888 "cgrammar.y" +case 299: +#line 982 "cgrammar.y" { yyval.typequal = qual_createKept (); ; break;} -case 280: -#line 889 "cgrammar.y" +case 300: +#line 983 "cgrammar.y" { yyval.typequal = qual_createShared (); ; break;} -case 281: -#line 890 "cgrammar.y" +case 301: +#line 984 "cgrammar.y" { yyval.typequal = qual_createUnique (); ; break;} -case 282: -#line 891 "cgrammar.y" +case 302: +#line 985 "cgrammar.y" { yyval.typequal = qual_createExits (); ; break;} -case 283: -#line 892 "cgrammar.y" +case 303: +#line 986 "cgrammar.y" { yyval.typequal = qual_createMayExit (); ; break;} -case 284: -#line 893 "cgrammar.y" +case 304: +#line 987 "cgrammar.y" { yyval.typequal = qual_createTrueExit (); ; break;} -case 285: -#line 894 "cgrammar.y" +case 305: +#line 988 "cgrammar.y" { yyval.typequal = qual_createFalseExit (); ; break;} -case 286: -#line 895 "cgrammar.y" +case 306: +#line 989 "cgrammar.y" { yyval.typequal = qual_createNeverExit (); ; break;} -case 287: -#line 896 "cgrammar.y" +case 307: +#line 990 "cgrammar.y" { yyval.typequal = qual_createNull (); ; break;} -case 288: -#line 897 "cgrammar.y" +case 308: +#line 991 "cgrammar.y" { yyval.typequal = qual_createRelNull (); ; break;} -case 289: -#line 898 "cgrammar.y" +case 309: +#line 992 "cgrammar.y" { yyval.typequal = qual_createReturned (); ; break;} -case 290: -#line 899 "cgrammar.y" +case 310: +#line 993 "cgrammar.y" { yyval.typequal = qual_createExposed (); ; break;} -case 291: -#line 900 "cgrammar.y" +case 311: +#line 994 "cgrammar.y" { yyval.typequal = qual_createObserver (); ; break;} -case 292: -#line 901 "cgrammar.y" +case 312: +#line 995 "cgrammar.y" { yyval.typequal = qual_createChecked (); ; break;} -case 293: -#line 902 "cgrammar.y" +case 313: +#line 996 "cgrammar.y" { yyval.typequal = qual_createCheckMod (); ; break;} -case 294: -#line 903 "cgrammar.y" +case 314: +#line 997 "cgrammar.y" { yyval.typequal = qual_createUnchecked (); ; break;} -case 295: -#line 904 "cgrammar.y" +case 315: +#line 998 "cgrammar.y" { yyval.typequal = qual_createCheckedStrict (); ; break;} -case 296: -#line 905 "cgrammar.y" +case 316: +#line 999 "cgrammar.y" { yyval.typequal = qual_createTrueNull (); ; break;} -case 297: -#line 906 "cgrammar.y" +case 317: +#line 1000 "cgrammar.y" { yyval.typequal = qual_createFalseNull (); ; break;} -case 298: -#line 907 "cgrammar.y" +case 318: +#line 1001 "cgrammar.y" { yyval.typequal = qual_createUnused (); ; break;} -case 299: -#line 908 "cgrammar.y" +case 319: +#line 1002 "cgrammar.y" { yyval.typequal = qual_createExternal (); ; break;} -case 300: -#line 909 "cgrammar.y" +case 320: +#line 1003 "cgrammar.y" { yyval.typequal = qual_createSef (); ; break;} -case 301: -#line 910 "cgrammar.y" +case 321: +#line 1004 "cgrammar.y" { yyval.typequal = qual_createAbstract (); ; break;} -case 302: -#line 911 "cgrammar.y" +case 322: +#line 1005 "cgrammar.y" { yyval.typequal = qual_createConcrete (); ; break;} -case 303: -#line 912 "cgrammar.y" +case 323: +#line 1006 "cgrammar.y" { yyval.typequal = qual_createMutable (); ; break;} -case 304: -#line 913 "cgrammar.y" +case 324: +#line 1007 "cgrammar.y" { yyval.typequal = qual_createImmutable (); ; break;} -case 305: -#line 914 "cgrammar.y" +case 325: +#line 1008 "cgrammar.y" { yyval.typequal = qual_createNotNull (); ; break;} -case 306: -#line 915 "cgrammar.y" +case 326: +#line 1009 "cgrammar.y" { yyval.typequal = qual_createRefCounted (); ; break;} -case 307: -#line 916 "cgrammar.y" +case 327: +#line 1010 "cgrammar.y" { yyval.typequal = qual_createRefs (); ; break;} -case 308: -#line 917 "cgrammar.y" +case 328: +#line 1011 "cgrammar.y" { yyval.typequal = qual_createKillRef (); ; break;} -case 309: -#line 918 "cgrammar.y" +case 329: +#line 1012 "cgrammar.y" { yyval.typequal = qual_createRelDef (); ; break;} -case 310: -#line 919 "cgrammar.y" +case 330: +#line 1013 "cgrammar.y" { yyval.typequal = qual_createNewRef (); ; break;} -case 311: -#line 920 "cgrammar.y" +case 331: +#line 1014 "cgrammar.y" { yyval.typequal = qual_createTempRef (); ; break;} -case 312: -#line 921 "cgrammar.y" +case 332: +#line 1015 "cgrammar.y" { yyval.typequal = qual_createNullTerminated (); ; break;} -case 313: -#line 927 "cgrammar.y" +case 333: +#line 1021 "cgrammar.y" { yyval.typequal = qual_createShort (); ; break;} -case 314: -#line 928 "cgrammar.y" +case 334: +#line 1022 "cgrammar.y" { yyval.typequal = qual_createLong (); ; break;} -case 315: -#line 929 "cgrammar.y" +case 335: +#line 1023 "cgrammar.y" { yyval.typequal = qual_createSigned (); ; break;} -case 316: -#line 930 "cgrammar.y" +case 336: +#line 1024 "cgrammar.y" { yyval.typequal = qual_createUnsigned (); ; break;} -case 323: -#line 939 "cgrammar.y" +case 343: +#line 1033 "cgrammar.y" { yyval.ctyp = ctype_unknown; ; break;} -case 324: -#line 940 "cgrammar.y" +case 344: +#line 1034 "cgrammar.y" { yyval.ctyp = ctype_anyintegral; ; break;} -case 325: -#line 941 "cgrammar.y" +case 345: +#line 1035 "cgrammar.y" { yyval.ctyp = ctype_unsignedintegral; ; break;} -case 326: -#line 942 "cgrammar.y" +case 346: +#line 1036 "cgrammar.y" { yyval.ctyp = ctype_signedintegral; ; break;} -case 330: -#line 946 "cgrammar.y" +case 350: +#line 1040 "cgrammar.y" { yyval.ctyp = ctype_fromQual (yyvsp[-1].typequal); ; break;} -case 331: -#line 950 "cgrammar.y" +case 351: +#line 1044 "cgrammar.y" { yyval.qtyp = qtype_resolve (yyvsp[-1].qtyp); ; break;} -case 332: -#line 953 "cgrammar.y" +case 352: +#line 1047 "cgrammar.y" { yyval.qtyp = yyvsp[0].qtyp; ; break;} -case 333: -#line 955 "cgrammar.y" +case 353: +#line 1049 "cgrammar.y" { yyval.qtyp = qtype_mergeAlt (yyvsp[-3].qtyp, yyvsp[-1].qtyp); ; break;} -case 335: -#line 960 "cgrammar.y" +case 355: +#line 1054 "cgrammar.y" { yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ; break;} -case 336: -#line 963 "cgrammar.y" +case 356: +#line 1057 "cgrammar.y" { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; break;} -case 337: -#line 964 "cgrammar.y" +case 357: +#line 1058 "cgrammar.y" { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; break;} -case 338: -#line 965 "cgrammar.y" +case 358: +#line 1059 "cgrammar.y" { yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ; break;} -case 339: -#line 968 "cgrammar.y" +case 359: +#line 1062 "cgrammar.y" { yyval.qtyp = qtype_unknown (); ; break;} -case 340: -#line 969 "cgrammar.y" +case 360: +#line 1063 "cgrammar.y" { yyval.qtyp = yyvsp[0].qtyp; ; break;} -case 341: -#line 972 "cgrammar.y" +case 361: +#line 1066 "cgrammar.y" { sRef_setGlobalScopeSafe (); ; break;} -case 342: -#line 974 "cgrammar.y" +case 362: +#line 1068 "cgrammar.y" { sRef_clearGlobalScopeSafe (); ; break;} -case 343: -#line 976 "cgrammar.y" +case 363: +#line 1070 "cgrammar.y" { yyval.ctyp = declareStruct (yyvsp[-8].cname, yyvsp[-3].flist); ; break;} -case 344: -#line 977 "cgrammar.y" +case 364: +#line 1071 "cgrammar.y" { sRef_setGlobalScopeSafe (); ; break;} -case 345: -#line 979 "cgrammar.y" +case 365: +#line 1073 "cgrammar.y" { sRef_clearGlobalScopeSafe (); ; break;} -case 346: -#line 981 "cgrammar.y" +case 366: +#line 1075 "cgrammar.y" { yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ; break;} -case 347: -#line 983 "cgrammar.y" +case 367: +#line 1077 "cgrammar.y" { yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ; break;} -case 348: -#line 985 "cgrammar.y" +case 368: +#line 1079 "cgrammar.y" { yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ; break;} -case 349: -#line 986 "cgrammar.y" +case 369: +#line 1080 "cgrammar.y" { sRef_setGlobalScopeSafe (); ; break;} -case 350: -#line 988 "cgrammar.y" +case 370: +#line 1082 "cgrammar.y" { sRef_clearGlobalScopeSafe (); ; break;} -case 351: -#line 990 "cgrammar.y" +case 371: +#line 1084 "cgrammar.y" { yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ; break;} -case 352: -#line 991 "cgrammar.y" +case 372: +#line 1085 "cgrammar.y" { sRef_setGlobalScopeSafe (); ; break;} -case 353: -#line 993 "cgrammar.y" +case 373: +#line 1087 "cgrammar.y" { sRef_clearGlobalScopeSafe (); ; break;} -case 354: -#line 995 "cgrammar.y" +case 374: +#line 1089 "cgrammar.y" { yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ; break;} -case 355: -#line 997 "cgrammar.y" +case 375: +#line 1091 "cgrammar.y" { yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ; break;} -case 356: -#line 999 "cgrammar.y" +case 376: +#line 1093 "cgrammar.y" { yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ; break;} -case 357: -#line 1000 "cgrammar.y" +case 377: +#line 1094 "cgrammar.y" { yyval.ctyp = handleStruct (yyvsp[-1].cname); ; break;} -case 358: -#line 1001 "cgrammar.y" +case 378: +#line 1095 "cgrammar.y" { yyval.ctyp = handleUnion (yyvsp[-1].cname); ; break;} -case 359: -#line 1004 "cgrammar.y" +case 379: +#line 1098 "cgrammar.y" { g_expectingTypeName = FALSE; ; break;} -case 361: -#line 1008 "cgrammar.y" +case 381: +#line 1102 "cgrammar.y" { yyval.flist = uentryList_undefined; /* bogus! */ ; break;} -case 362: -#line 1009 "cgrammar.y" +case 382: +#line 1103 "cgrammar.y" { yyval.flist = uentryList_mergeFields (yyvsp[-1].flist, yyvsp[0].flist); ; break;} -case 363: -#line 1013 "cgrammar.y" +case 383: +#line 1107 "cgrammar.y" { yyval.flist = fixUentryList (yyvsp[-2].ntyplist, yyvsp[-4].qtyp); ; break;} -case 364: -#line 1015 "cgrammar.y" +case 384: +#line 1109 "cgrammar.y" { yyval.flist = fixUnnamedDecl (yyvsp[-2].qtyp); ; break;} -case 365: -#line 1019 "cgrammar.y" +case 385: +#line 1113 "cgrammar.y" { yyval.ntyplist = idDeclList_singleton (yyvsp[-1].ntyp); ; break;} -case 366: -#line 1021 "cgrammar.y" +case 386: +#line 1115 "cgrammar.y" { yyval.ntyplist = idDeclList_add (yyvsp[-3].ntyplist, yyvsp[-1].ntyp); ; break;} -case 367: -#line 1024 "cgrammar.y" +case 387: +#line 1118 "cgrammar.y" { yyval.ntyp = yyvsp[0].ntyp; ; break;} -case 368: -#line 1025 "cgrammar.y" +case 388: +#line 1119 "cgrammar.y" { yyval.ntyp = idDecl_undefined; ; break;} -case 369: -#line 1026 "cgrammar.y" +case 389: +#line 1120 "cgrammar.y" { yyval.ntyp = yyvsp[-3].ntyp; ; break;} -case 370: -#line 1031 "cgrammar.y" +case 390: +#line 1125 "cgrammar.y" { yyval.ctyp = declareUnnamedEnum (yyvsp[-2].enumnamelist); ; break;} -case 371: -#line 1032 "cgrammar.y" +case 391: +#line 1126 "cgrammar.y" { context_pushLoc (); ; break;} -case 372: -#line 1033 "cgrammar.y" +case 392: +#line 1127 "cgrammar.y" { context_popLoc (); yyval.ctyp = declareEnum (yyvsp[-5].cname, yyvsp[-2].enumnamelist); ; break;} -case 373: -#line 1034 "cgrammar.y" +case 393: +#line 1128 "cgrammar.y" { yyval.ctyp = handleEnum (yyvsp[-1].cname); ; break;} -case 374: -#line 1038 "cgrammar.y" +case 394: +#line 1132 "cgrammar.y" { yyval.enumnamelist = enumNameList_single (yyvsp[0].cname); ; break;} -case 375: -#line 1040 "cgrammar.y" +case 395: +#line 1134 "cgrammar.y" { yyval.enumnamelist = enumNameList_push (yyvsp[-2].enumnamelist, yyvsp[0].cname); ; break;} -case 377: -#line 1045 "cgrammar.y" +case 397: +#line 1139 "cgrammar.y" { uentry ue = uentry_makeEnumConstant (yyvsp[0].cname, ctype_unknown); usymtab_supGlobalEntry (ue); yyval.cname = yyvsp[0].cname; ; break;} -case 378: -#line 1050 "cgrammar.y" +case 398: +#line 1144 "cgrammar.y" { uentry ue = uentry_makeEnumInitializedConstant (yyvsp[-3].cname, ctype_unknown, yyvsp[0].expr); usymtab_supGlobalEntry (ue); yyval.cname = yyvsp[-3].cname; ; break;} -case 380: -#line 1057 "cgrammar.y" +case 400: +#line 1151 "cgrammar.y" { yyval.ntyp = idDecl_create (cstring_undefined, qtype_create (yyvsp[0].ctyp)); ; break;} -case 381: -#line 1059 "cgrammar.y" +case 401: +#line 1153 "cgrammar.y" { qtype qt = qtype_unknown (); @@ -4452,92 +4553,92 @@ case 381: yyval.ntyp = idDecl_create (cstring_copy (LastIdentifier ()), qt); ; break;} -case 382: -#line 1066 "cgrammar.y" +case 402: +#line 1160 "cgrammar.y" { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ; break;} -case 384: -#line 1071 "cgrammar.y" +case 404: +#line 1165 "cgrammar.y" { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ; break;} -case 385: -#line 1074 "cgrammar.y" +case 405: +#line 1168 "cgrammar.y" { yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ; break;} -case 386: -#line 1075 "cgrammar.y" +case 406: +#line 1169 "cgrammar.y" { yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ; break;} -case 387: -#line 1078 "cgrammar.y" +case 407: +#line 1172 "cgrammar.y" { /* ignored for now */; ; break;} -case 388: -#line 1079 "cgrammar.y" +case 408: +#line 1173 "cgrammar.y" { ; ; break;} -case 389: -#line 1082 "cgrammar.y" +case 409: +#line 1176 "cgrammar.y" { ; ; break;} -case 390: -#line 1083 "cgrammar.y" +case 410: +#line 1177 "cgrammar.y" { ; ; break;} -case 391: -#line 1086 "cgrammar.y" +case 411: +#line 1180 "cgrammar.y" { yyval.count = 1; ; break;} -case 392: -#line 1087 "cgrammar.y" +case 412: +#line 1181 "cgrammar.y" { yyval.count = 1; ; break;} -case 393: -#line 1088 "cgrammar.y" +case 413: +#line 1182 "cgrammar.y" { yyval.count = 1 + yyvsp[0].count; ; break;} -case 394: -#line 1089 "cgrammar.y" +case 414: +#line 1183 "cgrammar.y" { yyval.count = 1 + yyvsp[0].count; ; break;} -case 396: -#line 1093 "cgrammar.y" +case 416: +#line 1187 "cgrammar.y" { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ; break;} -case 397: -#line 1096 "cgrammar.y" +case 417: +#line 1190 "cgrammar.y" { yyval.entrylist = uentryList_single (uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ; break;} -case 398: -#line 1097 "cgrammar.y" +case 418: +#line 1191 "cgrammar.y" { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ; break;} -case 399: -#line 1100 "cgrammar.y" +case 419: +#line 1194 "cgrammar.y" { yyval.entrylist = uentryList_single (uentry_makeElipsisMarker ()); ; break;} -case 401: -#line 1102 "cgrammar.y" +case 421: +#line 1196 "cgrammar.y" { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ; break;} -case 402: -#line 1105 "cgrammar.y" +case 422: +#line 1199 "cgrammar.y" { storeLoc (); ; break;} -case 403: -#line 1105 "cgrammar.y" +case 423: +#line 1199 "cgrammar.y" { yyval.entrylist = uentryList_single (yyvsp[0].oentry); ; break;} -case 404: -#line 1106 "cgrammar.y" +case 424: +#line 1200 "cgrammar.y" { storeLoc (); ; break;} -case 405: -#line 1107 "cgrammar.y" +case 425: +#line 1201 "cgrammar.y" { yyval.entrylist = uentryList_add (yyvsp[-3].entrylist, yyvsp[0].oentry); ; break;} -case 406: -#line 1111 "cgrammar.y" +case 426: +#line 1205 "cgrammar.y" { if (isFlipOldStyle ()) { @@ -4550,8 +4651,8 @@ case 406: yyval.oentry = makeCurrentParam (idDecl_fixParamBase (yyvsp[-1].ntyp, yyvsp[-2].qtyp)); ; break;} -case 407: -#line 1123 "cgrammar.y" +case 427: +#line 1217 "cgrammar.y" { idDecl tparam = idDecl_create (yyvsp[0].cname, qtype_unknown ()); @@ -4566,405 +4667,405 @@ case 407: idDecl_free (tparam); ; break;} -case 409: -#line 1139 "cgrammar.y" +case 429: +#line 1233 "cgrammar.y" { yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ; break;} -case 410: -#line 1142 "cgrammar.y" +case 430: +#line 1236 "cgrammar.y" { yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ; break;} -case 412: -#line 1144 "cgrammar.y" +case 432: +#line 1238 "cgrammar.y" { yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ; break;} -case 413: -#line 1147 "cgrammar.y" +case 433: +#line 1241 "cgrammar.y" { yyval.ctyp = ctype_unknown; ; break;} -case 415: -#line 1152 "cgrammar.y" +case 435: +#line 1246 "cgrammar.y" { yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; break;} -case 416: -#line 1153 "cgrammar.y" +case 436: +#line 1247 "cgrammar.y" { yyval.ctyp = ctype_makeArray (ctype_unknown); ; break;} -case 417: -#line 1155 "cgrammar.y" +case 437: +#line 1249 "cgrammar.y" { yyval.ctyp = ctype_makeFixedArray (ctype_unknown, exprNode_getLongValue (yyvsp[-1].expr)); ; break;} -case 418: -#line 1156 "cgrammar.y" +case 438: +#line 1250 "cgrammar.y" { yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ; break;} -case 419: -#line 1158 "cgrammar.y" +case 439: +#line 1252 "cgrammar.y" { yyval.ctyp = ctype_makeFixedArray (yyvsp[-3].ctyp, exprNode_getLongValue (yyvsp[-1].expr)); ; break;} -case 420: -#line 1160 "cgrammar.y" +case 440: +#line 1254 "cgrammar.y" { yyval.ctyp = ctype_makeFunction (ctype_unknown, uentryList_makeMissingParams ()); ; break;} -case 421: -#line 1162 "cgrammar.y" +case 441: +#line 1256 "cgrammar.y" { yyval.ctyp = ctype_makeParamsFunction (ctype_unknown, yyvsp[-1].entrylist); ; break;} -case 422: -#line 1164 "cgrammar.y" +case 442: +#line 1258 "cgrammar.y" { yyval.ctyp = ctype_makeFunction (yyvsp[-3].ctyp, uentryList_makeMissingParams ()); ; break;} -case 423: -#line 1166 "cgrammar.y" +case 443: +#line 1260 "cgrammar.y" { yyval.ctyp = ctype_makeParamsFunction (yyvsp[-4].ctyp, yyvsp[-1].entrylist); ; break;} -case 433: -#line 1181 "cgrammar.y" +case 453: +#line 1275 "cgrammar.y" {yyval.expr = yyvsp[0].expr; printf ("Doing stmt lclintassertion\n"); ; break;} -case 434: -#line 1185 "cgrammar.y" +case 454: +#line 1279 "cgrammar.y" { printf(" QSETBUFFERSIZE id CCONSTANT HEllo World\n"); uentry_setBufferSize(yyvsp[-2].entry, yyvsp[-1].expr); yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 435: -#line 1187 "cgrammar.y" +case 455: +#line 1281 "cgrammar.y" { printf(" QSETSTRINGLENGTH id CCONSTANT HEllo World\n"); uentry_setStringLength(yyvsp[-2].entry, yyvsp[-1].expr); yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 436: -#line 1189 "cgrammar.y" +case 456: +#line 1283 "cgrammar.y" {printf(" QTESTINRANGE\n"); uentry_testInRange(yyvsp[-2].entry, yyvsp[-1].expr); yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 437: -#line 1195 "cgrammar.y" +case 457: +#line 1289 "cgrammar.y" { yyval.expr = exprNode_labelMarker (yyvsp[0].cname); ; break;} -case 438: -#line 1200 "cgrammar.y" +case 458: +#line 1294 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 441: -#line 1208 "cgrammar.y" +case 461: +#line 1302 "cgrammar.y" { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 442: -#line 1212 "cgrammar.y" +case 462: +#line 1306 "cgrammar.y" { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 443: -#line 1214 "cgrammar.y" +case 463: +#line 1308 "cgrammar.y" { yyval.expr = exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr); ; break;} -case 444: -#line 1216 "cgrammar.y" +case 464: +#line 1310 "cgrammar.y" { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} -case 445: -#line 1218 "cgrammar.y" +case 465: +#line 1312 "cgrammar.y" { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 446: -#line 1222 "cgrammar.y" +case 466: +#line 1316 "cgrammar.y" { context_setProtectVars (); ; break;} -case 447: -#line 1222 "cgrammar.y" +case 467: +#line 1316 "cgrammar.y" { context_sizeofReleaseVars (); ; break;} -case 448: -#line 1224 "cgrammar.y" +case 468: +#line 1318 "cgrammar.y" { yyval.expr = exprNode_forPred (yyvsp[-7].expr, yyvsp[-5].expr, yyvsp[-2].expr); context_enterForClause (yyvsp[-5].expr); ; break;} -case 449: -#line 1229 "cgrammar.y" +case 469: +#line 1323 "cgrammar.y" { setProcessingIterVars (yyvsp[-2].entry); ; break;} -case 450: -#line 1231 "cgrammar.y" +case 470: +#line 1325 "cgrammar.y" { yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].alist); ; break;} -case 451: -#line 1232 "cgrammar.y" +case 471: +#line 1326 "cgrammar.y" { yyval.expr = exprNode_createId (yyvsp[0].entry); ; break;} -case 455: -#line 1238 "cgrammar.y" +case 475: +#line 1332 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 463: -#line 1246 "cgrammar.y" +case 483: +#line 1340 "cgrammar.y" { yyval.expr = yyvsp[-1].expr; ; break;} -case 464: -#line 1247 "cgrammar.y" +case 484: +#line 1341 "cgrammar.y" { yyval.expr = exprNode_makeError (); ; break;} -case 465: -#line 1251 "cgrammar.y" +case 485: +#line 1345 "cgrammar.y" { /* don't: context_exitTrueClause ($1, $2); */ yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 466: -#line 1256 "cgrammar.y" +case 486: +#line 1350 "cgrammar.y" { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 467: -#line 1259 "cgrammar.y" +case 487: +#line 1353 "cgrammar.y" { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 478: -#line 1274 "cgrammar.y" +case 498: +#line 1368 "cgrammar.y" { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 480: -#line 1276 "cgrammar.y" +case 500: +#line 1370 "cgrammar.y" { yyval.expr = exprNode_makeError (); ; break;} -case 481: -#line 1279 "cgrammar.y" +case 501: +#line 1373 "cgrammar.y" { yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; break;} -case 482: -#line 1280 "cgrammar.y" +case 502: +#line 1374 "cgrammar.y" { yyval.expr = exprNode_notReached (yyvsp[0].expr); ; break;} -case 483: -#line 1286 "cgrammar.y" +case 503: +#line 1380 "cgrammar.y" { context_enterCaseClause (yyvsp[0].expr); ; break;} -case 484: -#line 1287 "cgrammar.y" +case 504: +#line 1381 "cgrammar.y" { yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; break;} -case 485: -#line 1288 "cgrammar.y" +case 505: +#line 1382 "cgrammar.y" { context_enterCaseClause (yyvsp[0].expr); ; break;} -case 486: -#line 1289 "cgrammar.y" +case 506: +#line 1383 "cgrammar.y" { yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; break;} -case 487: -#line 1292 "cgrammar.y" +case 507: +#line 1386 "cgrammar.y" { context_enterCaseClause (exprNode_undefined); ; break;} -case 488: -#line 1293 "cgrammar.y" +case 508: +#line 1387 "cgrammar.y" { yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; break;} -case 489: -#line 1294 "cgrammar.y" +case 509: +#line 1388 "cgrammar.y" { context_enterCaseClause (exprNode_undefined); ; break;} -case 490: -#line 1295 "cgrammar.y" +case 510: +#line 1389 "cgrammar.y" { yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; break;} -case 491: -#line 1298 "cgrammar.y" +case 511: +#line 1392 "cgrammar.y" { yyval.expr = yyvsp[-1].expr; ; break;} -case 492: -#line 1300 "cgrammar.y" +case 512: +#line 1394 "cgrammar.y" { yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; break;} -case 493: -#line 1303 "cgrammar.y" +case 513: +#line 1397 "cgrammar.y" { yyval.expr = yyvsp[-1].expr; ; break;} -case 494: -#line 1306 "cgrammar.y" +case 514: +#line 1400 "cgrammar.y" { context_enterInnerContext (); ; break;} -case 495: -#line 1309 "cgrammar.y" +case 515: +#line 1403 "cgrammar.y" { context_exitInnerPlain (); ; break;} -case 496: -#line 1312 "cgrammar.y" +case 516: +#line 1406 "cgrammar.y" { context_enterStructInnerContext (); ; break;} -case 497: -#line 1315 "cgrammar.y" +case 517: +#line 1409 "cgrammar.y" { context_exitStructInnerContext (); ; break;} -case 498: -#line 1318 "cgrammar.y" +case 518: +#line 1412 "cgrammar.y" { context_exitInnerSafe (); ; break;} -case 499: -#line 1321 "cgrammar.y" +case 519: +#line 1415 "cgrammar.y" { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 500: -#line 1322 "cgrammar.y" +case 520: +#line 1416 "cgrammar.y" { yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; break;} -case 501: -#line 1323 "cgrammar.y" +case 521: +#line 1417 "cgrammar.y" { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 502: -#line 1325 "cgrammar.y" +case 522: +#line 1419 "cgrammar.y" { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} -case 503: -#line 1326 "cgrammar.y" +case 523: +#line 1420 "cgrammar.y" { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 504: -#line 1328 "cgrammar.y" +case 524: +#line 1422 "cgrammar.y" { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} -case 505: -#line 1330 "cgrammar.y" +case 525: +#line 1424 "cgrammar.y" { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; break;} -case 506: -#line 1332 "cgrammar.y" +case 526: +#line 1426 "cgrammar.y" { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), lltok_getLoc (yyvsp[-1].tok))); ; break;} -case 507: -#line 1339 "cgrammar.y" +case 527: +#line 1433 "cgrammar.y" { yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ; break;} -case 508: -#line 1343 "cgrammar.y" +case 528: +#line 1437 "cgrammar.y" { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 509: -#line 1345 "cgrammar.y" +case 529: +#line 1439 "cgrammar.y" { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 510: -#line 1347 "cgrammar.y" +case 530: +#line 1441 "cgrammar.y" { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 511: -#line 1349 "cgrammar.y" +case 531: +#line 1443 "cgrammar.y" { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; break;} -case 513: -#line 1353 "cgrammar.y" +case 533: +#line 1447 "cgrammar.y" { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 514: -#line 1356 "cgrammar.y" +case 534: +#line 1450 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 515: -#line 1357 "cgrammar.y" +case 535: +#line 1451 "cgrammar.y" { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 516: -#line 1360 "cgrammar.y" +case 536: +#line 1454 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 517: -#line 1361 "cgrammar.y" +case 537: +#line 1455 "cgrammar.y" { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 518: -#line 1364 "cgrammar.y" +case 538: +#line 1458 "cgrammar.y" { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 519: -#line 1365 "cgrammar.y" +case 539: +#line 1459 "cgrammar.y" { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 520: -#line 1368 "cgrammar.y" +case 540: +#line 1462 "cgrammar.y" { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 521: -#line 1369 "cgrammar.y" +case 541: +#line 1463 "cgrammar.y" { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 522: -#line 1370 "cgrammar.y" +case 542: +#line 1464 "cgrammar.y" { yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ; break;} -case 523: -#line 1374 "cgrammar.y" +case 543: +#line 1468 "cgrammar.y" { yyval.expr = yyvsp[-1].expr; exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ; break;} -case 524: -#line 1382 "cgrammar.y" +case 544: +#line 1476 "cgrammar.y" { context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr); yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 525: -#line 1386 "cgrammar.y" +case 545: +#line 1480 "cgrammar.y" { context_enterFalseClause (yyvsp[-2].expr); ; break;} -case 526: -#line 1387 "cgrammar.y" +case 546: +#line 1481 "cgrammar.y" { context_exitClause (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); yyval.expr = exprNode_ifelse (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 527: -#line 1391 "cgrammar.y" +case 547: +#line 1485 "cgrammar.y" { context_enterSwitch (yyvsp[0].expr); ; break;} -case 528: -#line 1392 "cgrammar.y" +case 548: +#line 1486 "cgrammar.y" { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 529: -#line 1396 "cgrammar.y" +case 549: +#line 1490 "cgrammar.y" { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ; break;} -case 530: -#line 1400 "cgrammar.y" +case 550: +#line 1494 "cgrammar.y" { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ; break;} -case 531: -#line 1403 "cgrammar.y" +case 551: +#line 1497 "cgrammar.y" { context_enterIterClause (); ; break;} -case 532: -#line 1404 "cgrammar.y" +case 552: +#line 1498 "cgrammar.y" { setProcessingIterVars (yyvsp[-3].entry); ; break;} -case 533: -#line 1407 "cgrammar.y" +case 553: +#line 1501 "cgrammar.y" { yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].alist, yyvsp[-2].expr, yyvsp[-1].entry); ; break;} -case 534: -#line 1413 "cgrammar.y" +case 554: +#line 1507 "cgrammar.y" { yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ; break;} -case 535: -#line 1414 "cgrammar.y" +case 555: +#line 1508 "cgrammar.y" { nextIterParam (); ; break;} -case 536: -#line 1415 "cgrammar.y" +case 556: +#line 1509 "cgrammar.y" { yyval.alist = exprNodeList_push (yyvsp[-3].alist, yyvsp[0].expr); ; break;} -case 537: -#line 1418 "cgrammar.y" +case 557: +#line 1512 "cgrammar.y" { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ; break;} -case 538: -#line 1419 "cgrammar.y" +case 558: +#line 1513 "cgrammar.y" { yyval.expr = exprNode_iterId (yyvsp[0].entry); ; break;} -case 539: -#line 1420 "cgrammar.y" +case 559: +#line 1514 "cgrammar.y" { uentry ue = coerceIterId (yyvsp[0].cname); if (uentry_isValid (ue)) @@ -4977,316 +5078,316 @@ case 539: } ; break;} -case 540: -#line 1431 "cgrammar.y" +case 560: +#line 1525 "cgrammar.y" { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ; break;} -case 542: -#line 1439 "cgrammar.y" +case 562: +#line 1533 "cgrammar.y" { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 544: -#line 1443 "cgrammar.y" +case 564: +#line 1537 "cgrammar.y" { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; break;} -case 545: -#line 1444 "cgrammar.y" +case 565: +#line 1538 "cgrammar.y" { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; break;} -case 546: -#line 1445 "cgrammar.y" +case 566: +#line 1539 "cgrammar.y" { yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].alist); ; break;} -case 547: -#line 1447 "cgrammar.y" +case 567: +#line 1541 "cgrammar.y" { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; break;} -case 548: -#line 1448 "cgrammar.y" +case 568: +#line 1542 "cgrammar.y" { yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-1].cname); ; break;} -case 549: -#line 1449 "cgrammar.y" +case 569: +#line 1543 "cgrammar.y" { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-1].cname); ; break;} -case 550: -#line 1450 "cgrammar.y" +case 570: +#line 1544 "cgrammar.y" { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 551: -#line 1451 "cgrammar.y" +case 571: +#line 1545 "cgrammar.y" { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 553: -#line 1455 "cgrammar.y" +case 573: +#line 1549 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 554: -#line 1456 "cgrammar.y" +case 574: +#line 1550 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 555: -#line 1457 "cgrammar.y" +case 575: +#line 1551 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 556: -#line 1458 "cgrammar.y" +case 576: +#line 1552 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 557: -#line 1459 "cgrammar.y" +case 577: +#line 1553 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 558: -#line 1460 "cgrammar.y" +case 578: +#line 1554 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 559: -#line 1461 "cgrammar.y" +case 579: +#line 1555 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 560: -#line 1462 "cgrammar.y" +case 580: +#line 1556 "cgrammar.y" { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 561: -#line 1463 "cgrammar.y" +case 581: +#line 1557 "cgrammar.y" { yyval.expr = yyvsp[0].expr; ; break;} -case 563: -#line 1467 "cgrammar.y" +case 583: +#line 1561 "cgrammar.y" { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ; break;} -case 565: -#line 1471 "cgrammar.y" +case 585: +#line 1565 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 566: -#line 1472 "cgrammar.y" +case 586: +#line 1566 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 567: -#line 1473 "cgrammar.y" +case 587: +#line 1567 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 569: -#line 1477 "cgrammar.y" +case 589: +#line 1571 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 570: -#line 1478 "cgrammar.y" +case 590: +#line 1572 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 572: -#line 1482 "cgrammar.y" +case 592: +#line 1576 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 573: -#line 1483 "cgrammar.y" +case 593: +#line 1577 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 575: -#line 1487 "cgrammar.y" +case 595: +#line 1581 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 576: -#line 1488 "cgrammar.y" +case 596: +#line 1582 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 577: -#line 1489 "cgrammar.y" +case 597: +#line 1583 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 578: -#line 1490 "cgrammar.y" +case 598: +#line 1584 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 580: -#line 1494 "cgrammar.y" +case 600: +#line 1588 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 581: -#line 1495 "cgrammar.y" +case 601: +#line 1589 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 583: -#line 1499 "cgrammar.y" +case 603: +#line 1593 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 585: -#line 1503 "cgrammar.y" +case 605: +#line 1597 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 587: -#line 1508 "cgrammar.y" +case 607: +#line 1602 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 589: -#line 1512 "cgrammar.y" +case 609: +#line 1606 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 591: -#line 1516 "cgrammar.y" +case 611: +#line 1610 "cgrammar.y" { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 593: -#line 1520 "cgrammar.y" +case 613: +#line 1614 "cgrammar.y" { context_enterTrueClause (yyvsp[-1].expr); ; break;} -case 594: -#line 1521 "cgrammar.y" +case 614: +#line 1615 "cgrammar.y" { context_enterFalseClause (yyvsp[-4].expr); ; break;} -case 595: -#line 1522 "cgrammar.y" +case 615: +#line 1616 "cgrammar.y" { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 597: -#line 1526 "cgrammar.y" +case 617: +#line 1620 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 598: -#line 1527 "cgrammar.y" +case 618: +#line 1621 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 599: -#line 1528 "cgrammar.y" +case 619: +#line 1622 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 600: -#line 1529 "cgrammar.y" +case 620: +#line 1623 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 601: -#line 1530 "cgrammar.y" +case 621: +#line 1624 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 602: -#line 1531 "cgrammar.y" +case 622: +#line 1625 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 603: -#line 1532 "cgrammar.y" +case 623: +#line 1626 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 604: -#line 1533 "cgrammar.y" +case 624: +#line 1627 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 605: -#line 1534 "cgrammar.y" +case 625: +#line 1628 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 606: -#line 1535 "cgrammar.y" +case 626: +#line 1629 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 607: -#line 1536 "cgrammar.y" +case 627: +#line 1630 "cgrammar.y" { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 608: -#line 1539 "cgrammar.y" +case 628: +#line 1633 "cgrammar.y" { yyval.entry = yyvsp[0].entry; ; break;} -case 609: -#line 1540 "cgrammar.y" +case 629: +#line 1634 "cgrammar.y" { yyval.entry = uentry_undefined; ; break;} -case 610: -#line 1543 "cgrammar.y" +case 630: +#line 1637 "cgrammar.y" { context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; break;} -case 611: -#line 1547 "cgrammar.y" +case 631: +#line 1641 "cgrammar.y" { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 612: -#line 1549 "cgrammar.y" +case 632: +#line 1643 "cgrammar.y" { yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} -case 613: -#line 1551 "cgrammar.y" +case 633: +#line 1645 "cgrammar.y" { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 614: -#line 1554 "cgrammar.y" +case 634: +#line 1648 "cgrammar.y" { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 615: -#line 1556 "cgrammar.y" +case 635: +#line 1650 "cgrammar.y" { yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} -case 616: -#line 1558 "cgrammar.y" +case 636: +#line 1652 "cgrammar.y" { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} -case 617: -#line 1559 "cgrammar.y" +case 637: +#line 1653 "cgrammar.y" { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 618: -#line 1562 "cgrammar.y" +case 638: +#line 1656 "cgrammar.y" { yyval.expr = exprNode_goto (yyvsp[-1].cname); ; break;} -case 619: -#line 1563 "cgrammar.y" +case 639: +#line 1657 "cgrammar.y" { yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; break;} -case 620: -#line 1565 "cgrammar.y" +case 640: +#line 1659 "cgrammar.y" { yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; break;} -case 621: -#line 1566 "cgrammar.y" +case 641: +#line 1660 "cgrammar.y" { yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; break;} -case 622: -#line 1567 "cgrammar.y" +case 642: +#line 1661 "cgrammar.y" { yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; break;} -case 623: -#line 1568 "cgrammar.y" +case 643: +#line 1662 "cgrammar.y" { yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; break;} -case 624: -#line 1569 "cgrammar.y" +case 644: +#line 1663 "cgrammar.y" { yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; break;} -case 625: -#line 1570 "cgrammar.y" +case 645: +#line 1664 "cgrammar.y" { yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; break;} -case 626: -#line 1571 "cgrammar.y" +case 646: +#line 1665 "cgrammar.y" { yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; break;} -case 627: -#line 1572 "cgrammar.y" +case 647: +#line 1666 "cgrammar.y" { yyval.expr = exprNode_return (yyvsp[-1].expr); ; break;} -case 629: -#line 1576 "cgrammar.y" +case 649: +#line 1670 "cgrammar.y" { ; ; break;} -case 632: -#line 1583 "cgrammar.y" +case 652: +#line 1677 "cgrammar.y" { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} -case 633: -#line 1584 "cgrammar.y" +case 653: +#line 1678 "cgrammar.y" { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} -case 634: -#line 1585 "cgrammar.y" +case 654: +#line 1679 "cgrammar.y" { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} -case 635: -#line 1586 "cgrammar.y" +case 655: +#line 1680 "cgrammar.y" { yyval.cname = yyvsp[0].cname; ; break;} -case 637: -#line 1590 "cgrammar.y" +case 657: +#line 1684 "cgrammar.y" { yyval.ctyp = ctype_unknown; ; break;} } @@ -5487,7 +5588,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 1592 "cgrammar.y" +#line 1686 "cgrammar.y" /*@-redecl@*/ diff --git a/src/cgrammar.tab.h b/src/cgrammar.tab.h index de5fcd3..de3bb79 100644 --- a/src/cgrammar.tab.h +++ b/src/cgrammar.tab.h @@ -195,15 +195,18 @@ typedef union #define QSIGNEDINTEGRALTYPE 429 #define QNULLTERMINATED 430 #define QSETBUFFERSIZE 431 -#define QSETSTRINGLENGTH 432 -#define QTESTINRANGE 433 -#define IDENTIFIER 434 -#define NEW_IDENTIFIER 435 -#define TYPE_NAME_OR_ID 436 -#define CCONSTANT 437 -#define ITER_NAME 438 -#define ITER_ENDNAME 439 -#define TYPE_NAME 440 +#define QBUFFERCONSTRAINT 432 +#define QSETSTRINGLENGTH 433 +#define QMAXSET 434 +#define QMAXREAD 435 +#define QTESTINRANGE 436 +#define IDENTIFIER 437 +#define NEW_IDENTIFIER 438 +#define TYPE_NAME_OR_ID 439 +#define CCONSTANT 440 +#define ITER_NAME 441 +#define ITER_ENDNAME 442 +#define TYPE_NAME 443 extern YYSTYPE yylval; diff --git a/src/cgrammar.y b/src/cgrammar.y index 6a9e120..ba88dae 100644 --- a/src/cgrammar.y +++ b/src/cgrammar.y @@ -161,13 +161,17 @@ void checkandsetBufState(idDecl id, exprNode is); %token QREFCOUNTED QREFS QNEWREF QTEMPREF QKILLREF QRELDEF %token CGCHAR CBOOL CINT CGFLOAT CDOUBLE CVOID %token QANYTYPE QINTEGRALTYPE QUNSIGNEDINTEGRALTYPE QSIGNEDINTEGRALTYPE -%token QNULLTERMINATED +%token QNULLTERMINATED %token QSETBUFFERSIZE +%token QBUFFERCONSTRAINT %token QSETSTRINGLENGTH - +%token QMAXSET +%token QMAXREAD %token QTESTINRANGE + + /* identifiers, literals */ %token IDENTIFIER %token NEW_IDENTIFIER TYPE_NAME_OR_ID @@ -202,6 +206,21 @@ void checkandsetBufState(idDecl id, exprNode is); %type structDeclList structDecl %type locModifies locPlainModifies modList specClauseList %type mExpr modListExpr specClauseListExpr + +/*drl*/ +%type BufConstraint +%type relationalOp +%type BufBinaryOp +%type bufferModifier + +%type BufConstraintExpr + +%type BufConstraintTerm + +%type BufConstraintList + +%type BufUnaryOp + %type enumeratorList %type fieldDesignator @@ -293,7 +312,7 @@ namedDeclBase | namedDeclBase PushType TLPAREN TRPAREN { setCurrentParams (uentryList_missingParams); } -optGlobMods optGlobBufConstraints + optGlobMods optGlobBufConstraints { /* need to support globals and modifies here! */ ctype ct = ctype_makeFunction (idDecl_getCtype ($1), uentryList_makeMissingParams ()); @@ -304,10 +323,12 @@ optGlobMods optGlobBufConstraints | namedDeclBase PushType TLPAREN genericParamList TRPAREN { setCurrentParams ($4); } -optGlobMods optGlobBufConstraints + optGlobMods optGlobBufConstraints { clearCurrentParams (); $$ = idDecl_replaceCtype ($1, ctype_makeFunction (idDecl_getCtype ($1), $4)); - context_popLoc (); + context_popLoc (); + + printf("Done nameDeclBase\n"); } plainNamedDeclBase @@ -371,20 +392,93 @@ optGlobMods : { setProcessingGlobMods (); } optGlobModsRest { clearProcessingGlobMods (); } -/*drl*/ + +/*drl*/ + optGlobBufConstraints - : optGlobBufConstraintsRest + : { setProcessingGlobMods (); } optGlobBufConstraintsRest + { clearProcessingGlobMods (); } + optGlobBufConstraintsRest : optGlobBufConstraintsAux optGlobBufConstraintsAux - : { printf("doing optGlobBufConstraintsAux\n"); } QSETBUFFERSIZE id CCONSTANT QENDMACRO +: { + TPRINTF ( ("doing optGlobBufConstraintsAux\n") ); +context_setProtectVars (); enterParamsTemp (); + sRef_setGlobalScopeSafe (); + +} QBUFFERCONSTRAINT BufConstraintList QENDMACRO +{ + setFunctionConstraints ($3); + exitParamsTemp (); + sRef_clearGlobalScopeSafe (); + context_releaseVars (); + printf ("done optGlobBufConstraintsAux\n");} | /*empty*/ - /* : QSETBUFFERSIZE +BufConstraintList +: BufConstraint BufConstraintList{ $$ = constraintList_add ($2, $1); } +| BufConstraint {constraintList c; c = constraintList_new(); c = constraintList_add (c, $1); $$ = c} + +BufConstraint +: BufConstraintExpr relationalOp BufConstraintExpr TSEMI { + $$ = makeConstraintParse3 ($1, $2, $3); + printf("Done BufConstraint1\n"); } + +bufferModifier + : QMAXSET + |QMAXREAD + +relationalOp + : GE_OP + | LE_OP + | EQ_OP + +BufConstraintExpr + : BufConstraintTerm + | BufUnaryOp TLPAREN BufConstraintExpr TRPAREN {$$ = constraintExpr_parseMakeUnaryOp ($1, $3); TPRINTF( ("Got BufConstraintExpr UNary Op ") ); } + | TLPAREN BufConstraintExpr BufBinaryOp BufConstraintExpr TRPAREN { + TPRINTF( ("Got BufConstraintExpr BINary Op ") ); + $$ = constraintExpr_parseMakeBinaryOp ($2, $3, $4); } + +BufConstraintTerm + : id { $$ = constraintExpr_makeTermsRef ( + uentry_getSref ($1)); + checkModifiesId ($1); } + | NEW_IDENTIFIER { $$ = constraintExpr_makeTermsRef(fixModifiesId ($1) ); } + | CCONSTANT { char *t; int c; + t = cstring_toCharsSafe (exprNode_unparse($1)); + c = atoi( t ); + $$ = constraintExpr_makeIntLiteral (c); +} + +/*BufConstraintExpr +: BufConstraintTerm +*/ + +BufUnaryOp +: bufferModifier +; + +BufBinaryOp + : TPLUS +| TMINUS +; + + +koptPlainGlobMods + : { setProcessingGlobMods (); } optPlainGlobModsRest + { clearProcessingGlobMods (); } + + +/*: id { $$ = unentry_getSref($1); checkModifiesId ($1); } +| NEW_INDENTIFIER { $$ = fixModifiesId ($1)} */ + /*end*/ + optPlainGlobMods : { setProcessingGlobMods (); } optPlainGlobModsRest { clearProcessingGlobMods (); } diff --git a/src/clabstract.c b/src/clabstract.c index 2773f5f..0e116e6 100644 --- a/src/clabstract.c +++ b/src/clabstract.c @@ -51,6 +51,12 @@ ** right values are available in the right place. */ +/*drl*/ +static constraintList fcnConstraints = NULL; + +static constraintList fcnPreConditions = NULL; + + static /*@only@*/ sRefSet fcnModifies = sRefSet_undefined; static /*@only@*/ /*@null@*/ specialClauses specClauses = specialClauses_undefined; static bool fcnNoGlobals = FALSE; @@ -177,6 +183,12 @@ static void reflectModGlobs (uentry ue) fcnModifies = sRefSet_undefined; } + if (fcnConstraints) + { + uentry_setPreconditions (ue, fcnConstraints); + fcnConstraints = constraintList_undefined; + } + if (uentry_isFunction (ue)) { uentry_setSpecialClauses (ue, specClauses); @@ -268,6 +280,17 @@ void setFunctionSpecialClause (lltok stok, sRefSet s, DPRINTF (("Added to specclauses: %s", specialClauses_unparse (specClauses))); } +constraintList getFunctionConstraints () +{ + return constraintList_copy (fcnConstraints); +} + +void setFunctionConstraints (constraintList c) +{ + #warning m leak + fcnConstraints = constraintList_copy (c); +} + void setFunctionModifies (sRefSet s) { sRefSet_free (fcnModifies); diff --git a/src/constraint.c b/src/constraint.c index 982b6a4..bcf358a 100644 --- a/src/constraint.c +++ b/src/constraint.c @@ -11,16 +11,117 @@ # include "exprChecks.h" # include "aliasChecks.h" # include "exprNodeSList.h" -# include "exprData.i" +//# include "exprData.i" /*@i33*/ /*@-fcnuse*/ /*@-assignexpose*/ -/*@notnull@*/ -/*@special@*/ constraint constraint_makeNew (void) - /*@post:isnull result->term, result->expr, result->constrType@*/ - /*@defines result->ar, result->post@*/; +constraint constraint_makeNew (void); + + +constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant) + +{ + char *t; + int c; + constraint ret; + ret = constraint_makeNew(); + llassert (x); + if (!x) + return ret; + + + ret->lexpr = constraintExpr_makeTermsRef (x); + #warning fix abstraction + + if (relOp.tok == GE_OP) + ret->ar = GTE; + else if (relOp.tok == LE_OP) + ret->ar = LTE; + else if (relOp.tok == EQ_OP) + ret->ar = EQ; + else + llfatalbug("Unsupported relational operator"); + + + t = cstring_toCharsSafe (exprNode_unparse(cconstant)); + c = atoi( t ); + ret->expr = constraintExpr_makeIntLiteral (c); + + ret->post = TRUE; + // ret->orig = ret; + DPRINTF(("GENERATED CONSTRAINT:")); + DPRINTF( (message ("%s", constraint_print(ret) ) ) ); + return ret; +} + +constraint makeConstraintParse2 (constraintExpr l, lltok relOp, exprNode cconstant) + +{ + char *t; + int c; + constraint ret; + ret = constraint_makeNew(); + llassert (l); + if (!l) + return ret; + + + ret->lexpr = constraintExpr_copy (l); + #warning fix abstraction + + if (relOp.tok == GE_OP) + ret->ar = GTE; + else if (relOp.tok == LE_OP) + ret->ar = LTE; + else if (relOp.tok == EQ_OP) + ret->ar = EQ; + else + llfatalbug("Unsupported relational operator"); + + + t = cstring_toCharsSafe (exprNode_unparse(cconstant)); + c = atoi( t ); + ret->expr = constraintExpr_makeIntLiteral (c); + + ret->post = TRUE; + // ret->orig = ret; + DPRINTF(("GENERATED CONSTRAINT:")); + DPRINTF( (message ("%s", constraint_print(ret) ) ) ); + return ret; +} + + +constraint makeConstraintParse3 (constraintExpr l, lltok relOp, constraintExpr r) +{ + constraint ret; + ret = constraint_makeNew(); + llassert (l); + if (!l) + return ret; + + + ret->lexpr = constraintExpr_copy (l); + #warning fix abstraction + + if (relOp.tok == GE_OP) + ret->ar = GTE; + else if (relOp.tok == LE_OP) + ret->ar = LTE; + else if (relOp.tok == EQ_OP) + ret->ar = EQ; + else + llfatalbug("Unsupported relational operator"); + + ret->expr = constraintExpr_copy (r); + + ret->post = TRUE; + // ret->orig = ret; + DPRINTF(("GENERATED CONSTRAINT:")); + DPRINTF( (message ("%s", constraint_print(ret) ) ) ); + return ret; +} constraint constraint_copy (constraint c) { @@ -59,10 +160,9 @@ bool constraint_resolve (/*@unused@*/ constraint c) return FALSE; } -/*@notnull@*/ -/*@special@*/ constraint constraint_makeNew (void) - /*@post:isnull result->term, result->expr, result->constrType@*/ - /*@defines result->ar, result->post@*/ + + +constraint constraint_makeNew (void) { constraint ret; ret = dmalloc(sizeof (*ret) ); @@ -251,12 +351,18 @@ cstring constraint_printDetailed (constraint c) if (!c->post) { + if (c->orig) + st = message ("Unresolved constraint:\nLclint is unable to resolve %s needed to satisy %s", constraint_print (c), constraint_print(c->orig) ); + else + st = message ("Unresolved constraint:\nLclint is unable to resolve %s", constraint_print (c)); - st = message ("Unresolved constraint:\nLclint is unable to resolve %s needed to satisy %s", constraint_print (c), constraint_print(c->orig) ); } else { - st = message ("Block Post condition:\nThis function block has the post condition %s\n based on %s", constraint_print (c), constraint_print(c->orig) ); + if (c->orig) + st = message ("Block Post condition:\nThis function block has the post condition %s\n based on %s", constraint_print (c), constraint_print(c->orig) ); + else + st = message ("Block Post condition:\nThis function block has the post condition %s", constraint_print (c)); } return st; } @@ -283,6 +389,18 @@ cstring constraint_print (constraint c) return st; } +constraint constraint_doSRefFixBaseParam (constraint precondition, + exprNodeList arglist) +{ + precondition->lexpr = constraintExpr_doSRefFixBaseParam (precondition->lexpr, + arglist); + precondition->expr = constraintExpr_doSRefFixBaseParam (precondition->expr, + arglist); + + return precondition; +} + + // bool constraint_hasTerm (constraint c, constraintTerm term) // { // DPRINTF((message ("Constraint %s", constraint_print (c) ) ) ); diff --git a/src/constraintGeneration.c b/src/constraintGeneration.c index 942abcc..1feaaf1 100644 --- a/src/constraintGeneration.c +++ b/src/constraintGeneration.c @@ -12,6 +12,7 @@ # include "exprChecks.h" # include "aliasChecks.h" # include "exprNodeSList.h" + # include "exprData.i" void /*@alt bool@*/ exprNode_generateConstraints (/*@temp@*/ exprNode e); @@ -64,7 +65,7 @@ bool exprNode_isUnhandled (exprNode e) case XPR_CASE: case XPR_INIT: case XPR_NODE: - TPRINTF((message ("Warning current constraint generation does not handle expression %s", exprNode_unparse(e)) ) ); + DPRINTF((message ("Warning current constraint generation does not handle expression %s", exprNode_unparse(e)) ) ); return TRUE; /*@notreached@*/ break; @@ -99,7 +100,7 @@ void /*@alt bool@*/ exprNode_generateConstraints (/*@temp@*/ exprNode e) if (exprNode_isUnhandled (e) ) { - TPRINTF( (message("Warning ignoring %s", exprNode_unparse (e) ) ) ); + DPRINTF( (message("Warning ignoring %s", exprNode_unparse (e) ) ) ); e->requiresConstraints = constraintList_new(); e->ensuresConstraints = constraintList_new(); e->trueEnsuresConstraints = constraintList_new(); @@ -110,7 +111,7 @@ void /*@alt bool@*/ exprNode_generateConstraints (/*@temp@*/ exprNode e) - TPRINTF((message ("exprNode_generateConstraints Analysising %s at %s", exprNode_unparse( e), + DPRINTF((message ("exprNode_generateConstraints Analysising %s at %s", exprNode_unparse( e), fileloc_unparse(exprNode_getfileloc(e) ) ) ) ); if (exprNode_isMultiStatement ( e) ) @@ -122,8 +123,8 @@ void /*@alt bool@*/ exprNode_generateConstraints (/*@temp@*/ exprNode e) // llassert(FALSE); return FALSE; } - printf ("%s", (message ("%s", constraintList_printDetailed (e->requiresConstraints) ) ) ); - printf ("%s", (message ("%s", constraintList_printDetailed (e->ensuresConstraints) ) ) ); + /* printf ("%s", (message ("%s", constraintList_printDetailed (e->requiresConstraints) ) ) ); + printf ("%s", (message ("%s", constraintList_printDetailed (e->ensuresConstraints) ) ) ); */ return FALSE; } @@ -174,8 +175,8 @@ bool exprNode_stmt (exprNode e) if (e->kind != XPR_STMT) { - TPRINTF (("Not Stmt") ); - TPRINTF ( (message ("%s ", exprNode_unparse (e)) ) ); + DPRINTF (("Not Stmt") ); + DPRINTF ( (message ("%s ", exprNode_unparse (e)) ) ); if (exprNode_isMultiStatement (e) ) { return exprNode_multiStatement (e ); @@ -183,8 +184,8 @@ bool exprNode_stmt (exprNode e) // llassert(FALSE); } - TPRINTF (("Stmt") ); - TPRINTF ( (message ("%s ", exprNode_unparse (e)) ) ); + DPRINTF (("Stmt") ); + DPRINTF ( (message ("%s ", exprNode_unparse (e)) ) ); snode = exprData_getUopNode (e->edata); @@ -201,10 +202,10 @@ bool exprNode_stmt (exprNode e) loc = exprNode_getNextSequencePoint(e); /* reduces to an expression */ notError = exprNode_exprTraverse (snode, FALSE, FALSE, loc); e->requiresConstraints = exprNode_traversRequiresConstraints(snode); - printf ("For: %s \n", exprNode_unparse (e) ); - printf ("%s\n", constraintList_print(e->requiresConstraints) ); + // printf ("For: %s \n", exprNode_unparse (e) ); + // printf ("%s\n", constraintList_print(e->requiresConstraints) ); e->ensuresConstraints = exprNode_traversEnsuresConstraints(snode); - printf ("Ensures that:\n %s\n", constraintList_print(e->ensuresConstraints) ); + // printf ("Ensures that:\n %s\n", constraintList_print(e->ensuresConstraints) ); // llassert(notError); return notError; @@ -229,8 +230,8 @@ bool exprNode_stmtList (exprNode e) return exprNode_stmt(e); } llassert (e->kind == XPR_STMTLIST); - TPRINTF(( "STMTLIST:") ); - TPRINTF ((cstring_toCharsSafe (exprNode_unparse(e)) ) ); + DPRINTF(( "STMTLIST:") ); + DPRINTF ((cstring_toCharsSafe (exprNode_unparse(e)) ) ); stmt1 = exprData_getPairA (e->edata); stmt2 = exprData_getPairB (e->edata); @@ -326,8 +327,8 @@ bool exprNode_multiStatement (exprNode e) exprNode_generateConstraints (exprData_getTripleInc (data)); break; case XPR_IF: - TPRINTF(( "IF:") ); - TPRINTF ((exprNode_unparse(e) ) ); + DPRINTF(( "IF:") ); + DPRINTF ((exprNode_unparse(e) ) ); // ret = message ("if (%s) %s", e1 = exprData_getPairA (data); e2 = exprData_getPairB (data); @@ -344,7 +345,7 @@ bool exprNode_multiStatement (exprNode e) break; case XPR_IFELSE: - TPRINTF(("Starting IFELSE")); + DPRINTF(("Starting IFELSE")); // ret = message ("if (%s) %s else %s", p = exprData_getTriplePred (data); trueBranch = exprData_getTripleTrue (data); @@ -381,7 +382,7 @@ bool exprNode_multiStatement (exprNode e) // find ensures for whole if/else statement e->ensuresConstraints = constraintList_logicalOr (t, f); - TPRINTF( ("Done IFELSE") ); + DPRINTF( ("Done IFELSE") ); break; case XPR_WHILE: e1 = exprData_getPairA (data); @@ -431,6 +432,85 @@ bool exprNode_multiStatement (exprNode e) return ret; } +bool lltok_isBoolean_Op (lltok tok) +{ + /*this should really be a switch statement but + I don't want to violate the abstraction + maybe this should go in lltok.c */ + + if (lltok_isEq_Op (tok) ) + { + return TRUE; + } + if (lltok_isAnd_Op (tok) ) + + { + + return TRUE; + } + if (lltok_isOr_Op (tok) ) + { + return TRUE; + } + + return FALSE; + +} + + +void exprNode_booleanTraverse (exprNode e, bool definatelv, bool definaterv, fileloc sequencePoint) +{ + constraint cons; + exprNode t1, t2; + exprData data; + lltok tok; + constraintList tempList; + data = e->edata; + + tok = exprData_getOpTok (data); + + + t1 = exprData_getOpA (data); + t2 = exprData_getOpB (data); + + if (lltok_isEq_Op (tok) ) + { + cons = constraint_makeEnsureEqual (t1, t2, sequencePoint); + e->trueEnsuresConstraints = constraintList_add(e->trueEnsuresConstraints, cons); + } + + if (lltok_isAnd_Op (tok) ) + + { + //true ensures + tempList = constraintList_copy (t1->trueEnsuresConstraints); + tempList = constraintList_addList (tempList, t2->trueEnsuresConstraints); + e->trueEnsuresConstraints = constraintList_addList(e->trueEnsuresConstraints, tempList); + + //false ensures: fens t1 or tens t1 and fens t2 + tempList = constraintList_copy (t1->trueEnsuresConstraints); + tempList = constraintList_addList (tempList, t2->falseEnsuresConstraints); + tempList = constraintList_logicalOr (tempList, t1->falseEnsuresConstraints); + e->falseEnsuresConstraints =constraintList_addList(e->falseEnsuresConstraints, tempList); + + } + + if (lltok_isOr_Op (tok) ) + { + //false ensures + tempList = constraintList_copy (t1->falseEnsuresConstraints); + tempList = constraintList_addList (tempList, t2->falseEnsuresConstraints); + e->falseEnsuresConstraints = constraintList_addList(e->falseEnsuresConstraints, tempList); + + //true ensures: tens t1 or fens t1 and tens t2 + tempList = constraintList_copy (t1->falseEnsuresConstraints); + tempList = constraintList_addList (tempList, t2->trueEnsuresConstraints); + tempList = constraintList_logicalOr (tempList, t1->trueEnsuresConstraints); + e->trueEnsuresConstraints =constraintList_addList(e->trueEnsuresConstraints, tempList); + + } + +} bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, fileloc sequencePoint) { @@ -446,7 +526,7 @@ bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, filel return FALSE; } - TPRINTF((message ("exprNode_exprTraverset Analysising %s %s at", exprNode_unparse( e), + DPRINTF((message ("exprNode_exprTraverset Analysising %s %s at", exprNode_unparse( e), fileloc_unparse(exprNode_getfileloc(e) ) ) ) ); e->requiresConstraints = constraintList_new(); @@ -534,7 +614,7 @@ bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, filel lltok_unparse (exprData_getOpTok (data)); exprNode_exprTraverse (t2, definatelv, TRUE, sequencePoint ); - // TPRINTF ( ("Doing ASSign")); + // DPRINTF ( ("Doing ASSign")); cons = constraint_makeEnsureEqual (t1, t2, sequencePoint); e->ensuresConstraints = constraintList_add(e->ensuresConstraints, cons); @@ -547,39 +627,9 @@ bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, filel exprNode_exprTraverse (t1, definatelv, definaterv, sequencePoint ); tok = exprData_getOpTok (data); exprNode_exprTraverse (t2, definatelv, definaterv, sequencePoint ); - if (lltok_isEq_Op (tok) ) - { - cons = constraint_makeEnsureEqual (t1, t2, sequencePoint); - e->trueEnsuresConstraints = constraintList_add(e->trueEnsuresConstraints, cons); - } - if (lltok_isAnd_Op (tok) ) - { - //true ensures - tempList = constraintList_copy (t1->trueEnsuresConstraints); - tempList = constraintList_addList (tempList, t2->trueEnsuresConstraints); - e->trueEnsuresConstraints = constraintList_addList(e->trueEnsuresConstraints, tempList); - - //false ensures: fens t1 or tens t1 and fens t2 - tempList = constraintList_copy (t1->trueEnsuresConstraints); - tempList = constraintList_addList (tempList, t2->falseEnsuresConstraints); - tempList = constraintList_logicalOr (tempList, t1->falseEnsuresConstraints); - e->falseEnsuresConstraints =constraintList_addList(e->falseEnsuresConstraints, tempList); - - } - if (lltok_isOr_Op (tok) ) - { - //false ensures - tempList = constraintList_copy (t1->falseEnsuresConstraints); - tempList = constraintList_addList (tempList, t2->falseEnsuresConstraints); - e->falseEnsuresConstraints = constraintList_addList(e->falseEnsuresConstraints, tempList); - - //true ensures: tens t1 or fens t1 and tens t2 - tempList = constraintList_copy (t1->falseEnsuresConstraints); - tempList = constraintList_addList (tempList, t2->trueEnsuresConstraints); - tempList = constraintList_logicalOr (tempList, t1->trueEnsuresConstraints); - e->trueEnsuresConstraints =constraintList_addList(e->trueEnsuresConstraints, tempList); - - } + + if (lltok_isBoolean_Op (tok) ) + exprNode_booleanTraverse (e, definatelv, definaterv, sequencePoint); // e->constraints = constraintList_exprNodemerge (exprData_getOpA (data), exprData_getOpB (data)); break; @@ -588,7 +638,7 @@ bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, filel break; - case XPR_SIZEOF: + case XPR_SIZEOF: exprNode_exprTraverse (exprData_getSingle (data), definatelv, definaterv, sequencePoint ); // e->constraints = constraintList_exprNodemerge (exprData_getSingle (e->edata), exprNode_undefined); break; @@ -596,6 +646,12 @@ bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, filel case XPR_CALL: exprNode_exprTraverse (exprData_getFcn (data), definatelv, definaterv, sequencePoint ); exprNodeList_unparse (exprData_getArgs (data) ); + DPRINTF ( (message ("Got call that %s ( %s) ", exprNode_unparse(exprData_getFcn(data) ), exprNodeList_unparse (exprData_getArgs (data) ) ) ) ); + + + + e->requiresConstraints = constraintList_addList (e->requiresConstraints, + checkCall (exprData_getFcn (data), exprData_getArgs (data) ) ); // e->constraints = constraintList_add (e->constraints, constraint_create (e,exprNode_undefined, GT, CALLSAFE ) ); break; diff --git a/src/constraintList.bak.c b/src/constraintList.bak.c deleted file mode 100644 index 0994a25..0000000 --- a/src/constraintList.bak.c +++ /dev/null @@ -1,852 +0,0 @@ -/* -** constraintList.c -*/ - -# include /* for isdigit */ -# include "lclintMacros.nf" -# include "basic.h" -# include "cgrammar.h" -# include "cgrammar_tokens.h" - -# include "exprChecks.h" -# include "aliasChecks.h" -# include "exprNodeSList.h" -# include "exprData.i" - - -/*@notnull@*/ constraintList constraintList_new () { -constraintList ret; - -ret = dmalloc ( sizeof (constraintList_) ); -llassert ( ret != NULL); -ret->numconstraints = 0; -return ret; -} -bool checkrestriction (int value, arithType at, exprNode expr2) -{ - switch (at) - { - case LT: return (value < multiVal_forceInt ( expr2->val) ); - case LTE: return (value <= multiVal_forceInt ( expr2->val) ); - case GT: return (value > multiVal_forceInt ( expr2->val) ); - case GTE: return (value >= multiVal_forceInt ( expr2->val) ); - case EQ: return (value == multiVal_forceInt ( expr2->val) ); - case NONNEGATIVE: return (value >= 0); - case POSITIVE: return (value > 0); - default: llassert (FALSE); - } -} -bool numericalResolve (constraint c) -{ - llassert (c.expr1); -switch (c.kind) - { - case BUFFSIZE: - if (c.expr1 && c.expr1->sref) - return checkrestriction (c.expr1->sref->bufinfo.size, c.restriction, c.expr2); - else - return FALSE; - case STRINGLEN: - if (c.expr1 && c.expr1->sref) - return checkrestriction (c.expr1->sref->bufinfo.len, c.restriction, c.expr2); - else - return FALSE; - case VALUE: return checkrestriction (multiVal_forceInt (c.expr1->val), c.restriction, c.expr2); - case CALLSAFE: printf("NOt IMplemented !!!"); - default: llassert(FALSE); - return FALSE; - } -} - -cstring parse_restriction (arithType at) -{ - switch (at) - { - case LT: return "<"; - case LTE: return "<="; - case GT: return ">"; - case GTE: return ">="; - case EQ: return "="; - case NONNEGATIVE: return " >= 0"; - case POSITIVE: return " > 0"; - default: return "unknown"; - } -} -cstring constraint_parseKind (constraintType kind) -{ - switch (kind) - { - case BUFFSIZE: return "BufferSize"; - case STRINGLEN: return "StringLength"; - case VALUE: return "value"; - case CALLSAFE: return "call safe"; - default: return "unknown"; - } -} - -void constraintList_debugPrint ( char * s ) -{ - DPRINTF((s) ); -} - -void constraint_print (constraint c) -{ - char temp [100]; - char temp2 [200]; - - snprintf (temp, sizeof(temp),"Location:%s \n Constraint: %s of %s %s %s\n", - fileloc_unparse(exprNode_getfileloc (c.expr1 ) ), - constraint_parseKind (c.kind), - exprNode_unparse(c.expr1), parse_restriction(c.restriction), exprNode_unparse(c.expr2) ); - - constraintList_debugPrint (temp); - -} -void constraintList_print (constraintList cl) -{ - - int i; - if (constraintList_isUndefined (cl) ) - { - constraintList_debugPrint("Constraint List undefined\n"); - return; - } - for (i = 0; i < cl->numconstraints; i++) - { - constraint_print (cl->constraints[i]); - } - -} - -bool constraint_resolve (constraint c) -{ - if (c.kind == CALLSAFE) - { - /* */ - constraintList_debugPrint("can't resolve\n"); - return FALSE; - } - else - { - return numericalResolve (c); - } -} -void constraintList_resolve (constraintList cl) -{ - int i; - if (constraintList_isUndefined (cl) ) - { - constraintList_debugPrint("Constraint List empty \n"); - return; - } - for (i = 0; i < cl->numconstraints; i++) - { - constraintList_debugPrint("Trying to resolve:\n"); - constraint_print (cl->constraints[i]); - if ( constraint_resolve (cl->constraints[i] ) ) - constraintList_debugPrint ("resolve sucessfully\n"); - else - constraintList_debugPrint ("not resolved sucessfully\n"); - - } -} -constraint constraint_create (exprNode e1, exprNode e2, arithType restriction, constraintType kind) -{ - constraint ret; - ret.expr1 = e1; - ret.expr2 = e2; - ret.restriction = restriction; - ret.kind = kind; - return ret; -} - -constraintList constraintList_get (exprNode e1 ) -{ - return e1->constraints; -} - -constraintList constraintList_exprNodemerge (exprNode e1, exprNode e2) -{ - constraintList ret; - if ( (e1 != NULL) && (e2 != NULL) ) - { - ret = constraintList_merge (e1->constraints, e2->constraints); - } - else if ( (e1 == NULL) && (e2 == NULL) ) - ret = constraintList_merge ( (constraintList)NULL, (constraintList)NULL ); - else if (e1 == NULL) - ret = constraintList_merge ( (constraintList)NULL, e2->constraints); - else - ret = constraintList_merge (e1->constraints, (constraintList)NULL ); - return ret; -} - - -constraintList constraintList_merge (constraintList cl1, constraintList cl2) -{ - constraintList ret; - int i; - ret = constraintList_undefined; - if (constraintList_isDefined (cl1) ) - { - for (i = 0; i < cl1->numconstraints; i++) - { - ret = constraintList_add (ret, cl1->constraints[i]); - } - } - if (constraintList_isDefined (cl2) ) - { - for (i = 0; i < cl2->numconstraints; i++) - { - ret = constraintList_add (ret, cl2->constraints[i]); - } - } - return ret; - - -} - -constraintList constraintList_add (constraintList constraints, constraint newconstr) -{ - constraintList ret; - - if ( constraintList_isUndefined(constraints) ) - { - ret = constraintList_new (); - } - else - { - ret = constraints; - } - llassert (constraintList_isDefined (ret) ); - llassert (ret->numconstraints < max_constraints); - ret->constraints[ret->numconstraints] = newconstr; - ret->numconstraints++; - return ret; -} - -cstring exprNode_generateConstraints (exprNode e) -{ - - cstring ret; - - ret = exprNode_findConstraints(e); - if (ret == NULL) - { - ret = exprNode_justUnparse (e); - } - llassert(ret != NULL); - - exprNode_constraintPropagateUp(e); -} - -/* handels multiple statements */ - - - -static cstring exprNode_findConstraints ( exprNode e) -{ - cstring ret; - exprData data; - - if (exprNode_isError (e)) - { - static /*@only@*/ cstring error = cstring_undefined; - - if (!cstring_isDefined (error)) - { - error = cstring_makeLiteral (""); - } - - return error; - } - - data = e->edata; - - switch (e->kind) - { - case XPR_CALL: - ret = message ("%s(%q)", - exprNode_generateConstraints (exprData_getFcn (data)), - exprNodeList_unparse (exprData_getArgs (data))); - constraintList_debugPrint(ret); - e->constraints = constraintList_add (e->constraints, constraint_create (e,exprNode_undefined, GT, CALLSAFE ) ); - break; - case XPR_FETCH: - ret = message ("%s[%s]", exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - - e->constraints = constraintList_add (e->constraints, constraint_create (exprData_getPairA (data),exprData_getPairB (data) , GT, BUFFSIZE ) ); - e->constraints = constraintList_add (e->constraints, constraint_create (exprData_getPairB (data), exprNode_undefined, NONNEGATIVE, VALUE) ); - /* crude test to see if this is an lvalue */ - if ( sRefSet_isEmpty(e->sets) ) - { - /* if its not an lvalue we assume it's an rvalue*/ - /* of course if its am lvalue we assume its not an rvalue - should put in a more accurate test sometime...*/ - - // printf("Making constraint that length %s > %s\n",exprNode_generateConstraints (exprData_getPairA (data)), - // exprNode_generateConstraints (exprData_getPairB (data))); - e->constraints = constraintList_add (e->constraints, constraint_create (exprData_getPairA (data),exprData_getPairB (data) , GT, STRINGLEN ) ); - } - break; - case XPR_PREOP: - ret = message ("%s%s", - lltok_unparse (exprData_getUopTok (data)), - exprNode_generateConstraints (exprData_getUopNode (data))); - /* store old constraints */ - e->constraints = constraintList_exprNodemerge (exprData_getUopNode (e->edata), exprNode_undefined); - /*handle * pointer access */ - if (lltok_isMult( exprData_getUopTok (data) ) ) - { - e->constraints = constraintList_add (e->constraints, constraint_create (exprData_getUopNode (data), exprNode_undefined, POSITIVE, BUFFSIZE ) ); - /* crude test to see if this is an lvalue */ - if ( sRefSet_isEmpty(e->sets) ) - { - /* if its not an lvalue we assume it's an rvalue*/ - /* of course if its am lvalue we assume its not an rvalue - should put in a more accurate test sometime...*/ - e->constraints = constraintList_add (e->constraints, constraint_create (exprData_getUopNode (data), exprNode_undefined, POSITIVE, STRINGLEN ) ); - } - } - break; - - case XPR_POSTOP: - ret = message ("%s%s", - exprNode_generateConstraints (exprData_getUopNode (data)), - lltok_unparse (exprData_getUopTok (data))); - e->constraints = constraintList_exprNodemerge (exprData_getUopNode (e->edata), exprNode_undefined); - if (lltok_isInc_Op (exprData_getUopTok (data) ) ) - { - DPRINTF(("++ -- will be implemented later")); - // e->constraints = constraintList_add( e->constraints, - // constraint_makeInc_Op (exprData_getUopNode (data) ) ); - } - break; - default: - DPRINTF(("no special constraint generation")); - ret = NULL; - } - - return ret; -} - -cstring exprNode_handleError( exprNode e) -{ - if (exprNode_isError (e)) - { - static /*@only@*/ cstring error = cstring_undefined; - - if (!cstring_isDefined (error)) - { - error = cstring_makeLiteral (""); - } - - return error; - } - -} - -cstring exprNode_multiStatement (exprNode e) -{ - - cstring ret; - exprData data; - - if (exprNode_handleError (e)) - { - return exprNode_handleError(e); - } - - data = e->edata; - - switch (e->kind) - { - - case XPR_FOR: - ret = message ("%s %s", - exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - break; - - case XPR_FORPRED: - ret = message ("for (%s; %s; %s)", - exprNode_generateConstraints (exprData_getTripleInit (data)), - exprNode_generateConstraints (exprData_getTripleTest (data)), - exprNode_generateConstraints (exprData_getTripleInc (data))); - break; - - } -} - -cstring exprNode_exprParse (exprNode e) -{ - - cstring ret; - exprData data; - - if (exprNode_handleError (e)) - { - return exprNode_handleError(e); - } - - data = e->edata; - - switch (e->kind) - { - case XPR_PARENS: - ret = message ("(%s)", exprNode_generateConstraints (exprData_getUopNode (e->edata))); - e->constraints = constraintList_exprNodemerge (exprData_getUopNode (e->edata), exprNode_undefined); - break; - case XPR_ASSIGN: - ret = message ("%s %s %s", - exprNode_generateConstraints (exprData_getOpA (data)), - lltok_unparse (exprData_getOpTok (data)), - exprNode_generateConstraints (exprData_getOpB (data))); - e->constraints = constraintList_exprNodemerge (exprData_getOpA (data), exprData_getOpB (data) ); - break; - case XPR_PARENS: - ret = message ("(%s)", exprNode_generateConstraints (exprData_getUopNode (e->edata))); - e->constraints = constraintList_exprNodemerge (exprData_getUopNode (e->edata), exprNode_undefined); - break; - case XPR_OP: - ret = message ("%s %s %s", - exprNode_generateConstraints (exprData_getOpA (data)), - lltok_unparse (exprData_getOpTok (data)), - exprNode_generateConstraints (exprData_getOpB (data))); - e->constraints = constraintList_exprNodemerge (exprData_getOpA (data), exprData_getOpB (data)); - break; - case XPR_SIZEOFT: - ret = message ("sizeof(%s)", ctype_unparse (qtype_getType (exprData_getType (data)))); - break; - - case XPR_SIZEOF: - ret = message ("sizeof(%s)", exprNode_generateConstraints (exprData_getSingle (data))); - e->constraints = constraintList_exprNodemerge (exprData_getSingle (e->edata), exprNode_undefined); - break; - - - } -} -cstring exprNode_justUnparse (exprNode e) -{ - - cstring ret; - exprData data; - - if (exprNode_isError (e)) - { - static /*@only@*/ cstring error = cstring_undefined; - - if (!cstring_isDefined (error)) - { - error = cstring_makeLiteral (""); - } - - return error; - } - - data = e->edata; - - switch (e->kind) - { - case XPR_CALL: - ret = message ("%s(%q)", - exprNode_generateConstraints (exprData_getFcn (data)), - exprNodeList_unparse (exprData_getArgs (data))); - constraintList_debugPrint(ret); - e->constraints = constraintList_add (e->constraints, constraint_create (e,exprNode_undefined, GT, CALLSAFE ) ); - break; - case XPR_INITBLOCK: - ret = message ("Not Handled"); - break; - case XPR_EMPTY: - ret = message ("Not Handled"); - break; - case XPR_LABEL: - ret = message ("%s:", exprData_getId (data)); - break; - case XPR_CONST: - case XPR_VAR: - ret = cstring_copy (exprData_getId (data)); - break; - case XPR_BODY: - ret = message ("Not handled"); - break; - - - case XPR_OFFSETOF: - break; - - - case XPR_ALIGNOFT: - break; - - case XPR_ALIGNOF: - break; - - case XPR_VAARG: - break; - case XPR_ITERCALL: - break; - case XPR_ITER: - break; - case XPR_CAST: - break; - - case XPR_GOTO: - ret = message ("goto %s", exprData_getLiteral (data)); - break; - - case XPR_CONTINUE: - ret = cstring_makeLiteral ("continue"); - break; - - case XPR_BREAK: - ret = cstring_makeLiteral ("break"); - break; - - case XPR_RETURN: - ret = message ("return %s", exprNode_generateConstraints (exprData_getSingle (data))); - break; - - case XPR_NULLRETURN: - ret = cstring_makeLiteral ("return"); - break; - - case XPR_COMMA: - ret = message ("%s, %s", - exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - break; - - case XPR_COND: - ret = message ("%s ? %s : %s", - exprNode_generateConstraints (exprData_getTriplePred (data)), - exprNode_generateConstraints (exprData_getTripleTrue (data)), - exprNode_generateConstraints (exprData_getTripleFalse (data))); - break; - case XPR_IF: - ret = message ("if (%s) %s", - exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - e->constraints = constraintList_exprNodemerge (exprData_getPairA (data),exprData_getPairB(data)); - break; - - case XPR_IFELSE: - ret = message ("if (%s) %s else %s", - exprNode_generateConstraints (exprData_getTriplePred (data)), - exprNode_generateConstraints (exprData_getTripleTrue (data)), - exprNode_generateConstraints (exprData_getTripleFalse (data))); - break; - case XPR_WHILE: - ret = message ("while (%s) %s", - exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - e->constraints = constraintList_exprNodemerge (exprData_getPairA (data), exprData_getPairB (data) ); - break; - - case XPR_WHILEPRED: - ret = cstring_copy (exprNode_generateConstraints (exprData_getSingle (data))); - break; - - case XPR_TOK: - ret = cstring_copy (lltok_unparse (exprData_getTok (data))); - break; - - case XPR_DOWHILE: - ret = message ("do { %s } while (%s)", - exprNode_generateConstraints (exprData_getPairB (data)), - exprNode_generateConstraints (exprData_getPairA (data))); - break; - - case XPR_BLOCK: - ret = message ("{ %s }", exprNode_generateConstraints (exprData_getSingle (data))); - e->constraints = (exprData_getSingle (data))->constraints; - break; - - case XPR_STMT: - ret = cstring_copy (exprNode_generateConstraints (exprData_getSingle (data))); - e->constraints = (exprData_getSingle (data))->constraints; - break; - - case XPR_STMTLIST: - ret = message ("%s; %s", - exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - e->constraints = constraintList_exprNodemerge (exprData_getPairA (data), exprData_getPairB (data) ); - break; - - case XPR_FTDEFAULT: - case XPR_DEFAULT: - ret = cstring_makeLiteral ("default:"); - break; - - case XPR_SWITCH: - ret = message ("switch (%s) %s", - exprNode_generateConstraints (exprData_getPairA (data)), - exprNode_generateConstraints (exprData_getPairB (data))); - break; - - case XPR_FTCASE: - case XPR_CASE: - ret = message ("case %s:", - exprNode_generateConstraints (exprData_getSingle (data))); - break; - - case XPR_INIT: - ret = message ("%s = %s", - idDecl_getName (exprData_getInitId (data)), - exprNode_generateConstraints (exprData_getInitNode (data))); - break; - - case XPR_FACCESS: - ret = message ("%s.%s", - exprNode_generateConstraints (exprData_getFieldNode (data)), - exprData_getFieldName (data)); - break; - - case XPR_ARROW: - ret = message ("%s->%s", - exprNode_generateConstraints (exprData_getFieldNode (data)), - exprData_getFieldName (data)); - break; - - case XPR_STRINGLITERAL: - ret = cstring_copy (exprData_getLiteral (data)); - break; - - case XPR_NUMLIT: - ret = cstring_copy (exprData_getLiteral (data)); - break; - - case XPR_NODE: - ret = cstring_makeLiteral (""); - break; - } - - return ret; -} - -void exprNode_constraintPropagateUp (exprNode e) -{ - - cstring ret; - exprData data; - - if (exprNode_isError (e)) - { - static /*@only@*/ cstring error = cstring_undefined; - - if (!cstring_isDefined (error)) - { - error = cstring_makeLiteral (""); - } - - return error; - } - - data = e->edata; - - switch (e->kind) - { - case XPR_PARENS: - e->constraints = constraintList_exprNodemerge (exprData_getUopNode (e->edata), exprNode_undefined); - break; - case XPR_ASSIGN: - e->constraints = constraintList_exprNodemerge (exprData_getOpA (data), exprData_getOpB (data) ); - break; - case XPR_CALL: - e->constraints = constraintList_add (e->constraints, constraint_create (e,exprNode_undefined, GT, CALLSAFE ) ); - break; - case XPR_INITBLOCK: - //ret = message ("{ %q }", exprNodeList_unparse (exprData_getArgs (data))); - // e->constraints = constraintList_exprNodemerge (exprData_getArgs (data), exprData_getOpB (data) ); - break; - - case XPR_OP: - ret = message ("%s %s %s", - exprNode_generateConstraints (exprData_getOpA (data)), - lltok_unparse (exprData_getOpTok (data)), - exprNode_generateConstraints (exprData_getOpB (data))); - e->constraints = constraintList_exprNodemerge (exprData_getOpA (data), exprData_getOpB (data)); - break; - - case XPR_ALIGNOF: - e->constraints = constraintList_exprNodemerge (exprData_getSingle (e->edata), exprNode_undefined); - break; - - case XPR_VAARG: - e->constraints = constraintList_exprNodemerge (exprData_getCastNode (data), exprNode_undefined); - break; - - case XPR_ITERCALL: - // ret = message ("%q(%q)", - // uentry_getName (exprData_getIterCallIter (data)), - // exprNodeList_unparse (exprData_getIterCallArgs (data))); - //// e->constraints = constraintList_exprNodemerge (exprData_getIterCallArgs (data), exprNode_undefined); - break; - case XPR_ITER: - TPRINTF(("XPR_ITER NOT IMPLEMENTED" )); - /* ret = message ("%q(%q) %s %q", */ -/* uentry_getName (exprData_getIterSname (data)), */ -/* exprNodeList_unparse (exprData_getIterAlist (data)), */ -/* exprNode_generateConstraints (exprData_getIterBody (data)), */ -/* uentry_getName (exprData_getIterEname (data))); */ - break; - case XPR_CAST: - e->constraints = constraintList_exprNodemerge (exprData_getCastNode (data), exprNode_undefined); - break; - - default: - TPRINTF(("NOT Currently IMplemented")); - } -} - - -/* case XPR_FOR: */ -/* ret = message ("%s %s", */ -/* exprNode_generateConstraints (exprData_getPairA (data)), */ -/* exprNode_generateConstraints (exprData_getPairB (data))); */ -/* break; */ - -/* case XPR_FORPRED: */ -/* ret = message ("for (%s; %s; %s)", */ -/* exprNode_generateConstraints (exprData_getTripleInit (data)), */ -/* exprNode_generateConstraints (exprData_getTripleTest (data)), */ -/* exprNode_generateConstraints (exprData_getTripleInc (data))); */ -/* break; */ - -/* case XPR_GOTO: */ -/* ret = message ("goto %s", exprData_getLiteral (data)); */ -/* break; */ - -/* case XPR_CONTINUE: */ -/* ret = cstring_makeLiteral ("continue"); */ -/* break; */ - -/* case XPR_BREAK: */ -/* ret = cstring_makeLiteral ("break"); */ -/* break; */ - -/* case XPR_RETURN: */ -/* ret = message ("return %s", exprNode_generateConstraints (exprData_getSingle (data))); */ -/* break; */ - -/* case XPR_NULLRETURN: */ -/* ret = cstring_makeLiteral ("return"); */ -/* break; */ - -/* case XPR_COMMA: */ -/* ret = message ("%s, %s", */ -/* exprNode_generateConstraints (exprData_getPairA (data)), */ -/* exprNode_generateConstraints (exprData_getPairB (data))); */ -/* break; */ - -/* case XPR_COND: */ -/* ret = message ("%s ? %s : %s", */ -/* exprNode_generateConstraints (exprData_getTriplePred (data)), */ -/* exprNode_generateConstraints (exprData_getTripleTrue (data)), */ -/* exprNode_generateConstraints (exprData_getTripleFalse (data))); */ -/* break; */ -/* case XPR_IF: */ -/* ret = message ("if (%s) %s", */ -/* exprNode_generateConstraints (exprData_getPairA (data)), */ -/* exprNode_generateConstraints (exprData_getPairB (data))); */ -/* e->constraints = constraintList_exprNodemerge (exprData_getPairA (data),exprData_getPairB(data)); */ -/* break; */ - -/* case XPR_IFELSE: */ -/* ret = message ("if (%s) %s else %s", */ -/* exprNode_generateConstraints (exprData_getTriplePred (data)), */ -/* exprNode_generateConstraints (exprData_getTripleTrue (data)), */ -/* exprNode_generateConstraints (exprData_getTripleFalse (data))); */ -/* break; */ -/* case XPR_WHILE: */ -/* ret = message ("while (%s) %s", */ -/* exprNode_generateConstraints (exprData_getPairA (data)), */ -/* exprNode_generateConstraints (exprData_getPairB (data))); */ -/* e->constraints = constraintList_exprNodemerge (exprData_getPairA (data), exprData_getPairB (data) ); */ -/* break; */ - -/* case XPR_WHILEPRED: */ -/* ret = cstring_copy (exprNode_generateConstraints (exprData_getSingle (data))); */ -/* break; */ - -/* case XPR_TOK: */ -/* ret = cstring_copy (lltok_unparse (exprData_getTok (data))); */ -/* break; */ - -/* case XPR_DOWHILE: */ -/* ret = message ("do { %s } while (%s)", */ -/* exprNode_generateConstraints (exprData_getPairB (data)), */ -/* exprNode_generateConstraints (exprData_getPairA (data))); */ -/* break; */ - -/* case XPR_BLOCK: */ -/* ret = message ("{ %s }", exprNode_generateConstraints (exprData_getSingle (data))); */ -/* e->constraints = (exprData_getSingle (data))->constraints; */ -/* break; */ - -/* case XPR_STMT: */ -/* ret = cstring_copy (exprNode_generateConstraints (exprData_getSingle (data))); */ -/* e->constraints = (exprData_getSingle (data))->constraints; */ -/* break; */ - -/* case XPR_STMTLIST: */ -/* ret = message ("%s; %s", */ -/* exprNode_generateConstraints (exprData_getPairA (data)), */ -/* exprNode_generateConstraints (exprData_getPairB (data))); */ -/* e->constraints = constraintList_exprNodemerge (exprData_getPairA (data), exprData_getPairB (data) ); */ -/* break; */ - -/* case XPR_FTDEFAULT: */ -/* case XPR_DEFAULT: */ -/* ret = cstring_makeLiteral ("default:"); */ -/* break; */ - -/* case XPR_SWITCH: */ -/* ret = message ("switch (%s) %s", */ -/* exprNode_generateConstraints (exprData_getPairA (data)), */ -/* exprNode_generateConstraints (exprData_getPairB (data))); */ -/* break; */ - -/* case XPR_FTCASE: */ -/* case XPR_CASE: */ -/* ret = message ("case %s:", */ -/* exprNode_generateConstraints (exprData_getSingle (data))); */ -/* break; */ - -/* case XPR_INIT: */ -/* ret = message ("%s = %s", */ -/* idDecl_getName (exprData_getInitId (data)), */ -/* exprNode_generateConstraints (exprData_getInitNode (data))); */ -/* break; */ - -/* case XPR_FACCESS: */ -/* ret = message ("%s.%s", */ -/* exprNode_generateConstraints (exprData_getFieldNode (data)), */ -/* exprData_getFieldName (data)); */ -/* break; */ - -/* case XPR_ARROW: */ -/* ret = message ("%s->%s", */ -/* exprNode_generateConstraints (exprData_getFieldNode (data)), */ -/* exprData_getFieldName (data)); */ -/* break; */ - -/* case XPR_STRINGLITERAL: */ -/* ret = cstring_copy (exprData_getLiteral (data)); */ -/* break; */ - -/* case XPR_NUMLIT: */ -/* ret = cstring_copy (exprData_getLiteral (data)); */ -/* break; */ - -/* case XPR_NODE: */ -/* ret = cstring_makeLiteral (""); */ -/* break; */ -/* } */ - -/* return ret; */ -/* } */ diff --git a/src/constraintList.c b/src/constraintList.c index 7fb9bcd..a7dc16d 100644 --- a/src/constraintList.c +++ b/src/constraintList.c @@ -83,6 +83,12 @@ constraintList_add (constraintList s, constraint el) constraintList constraintList_addList (constraintList s, constraintList new) { + llassert(s); + llassert(new); + + if (new == constraintList_undefined) + return s; + constraintList_elements(new, elem) s = constraintList_add (s, elem); end_constraintList_elements @@ -166,7 +172,7 @@ constraintList_logicalOr (constraintList l1, constraintList l2) { constraint temp; constraintList ret; - TPRINTF ( (message ("Logical of on %s and %s", + DPRINTF ( (message ("Logical of on %s and %s", constraintList_print(l1), constraintList_print(l2)) ) ); @@ -235,3 +241,22 @@ constraintList constraintList_preserveOrig (constraintList c) end_constraintList_elements; return c; } + + +constraintList constraintList_doSRefFixBaseParam (constraintList preconditions, + exprNodeList arglist) +{ + constraintList ret; + ret = constraintList_new(); + + constraintList_elements (preconditions, el) + { + ret = constraintList_add(ret, constraint_doSRefFixBaseParam (el, arglist) ); + } + end_constraintList_elements; + + return ret; +} + + + diff --git a/src/constraintListold.c b/src/constraintListold.c deleted file mode 100644 index adbbe37..0000000 --- a/src/constraintListold.c +++ /dev/null @@ -1,149 +0,0 @@ -/* -** constraintList.c -*/ - -# include /* for isdigit */ -# include "lclintMacros.nf" -# include "basic.h" -# include "cgrammar.h" -# include "cgrammar_tokens.h" - -# include "exprChecks.h" -# include "aliasChecks.h" -# include "exprNodeSList.h" -# include "exprData.i" - -/*@i33*/ -/*@-fcnuse*/ - -/*@notnull@*/ constraintList constraintList_new () { -constraintList ret; - -ret = dmalloc ( sizeof (*ret) ); -llassert ( ret != NULL); - -ret->numconstraints = 0; -/*@i22@*/ret->constraints = dmalloc (INITIALCONSTRAINTLISTSIZE * sizeof (constraint) ); -ret->size = INITIALCONSTRAINTLISTSIZE; -return ret; -} - -void exprNode_printfileloc (exprNode e) -{ - DPRINTF ((" %q ", fileloc_unparse (exprNode_getfileloc (e) ) ) ); -} - -void constraintList_debugPrint ( char * s ) -{ - DPRINTF((s) ); -} - -void constraintList_print (constraintList cl) -{ - - int i; - if (constraintList_isUndefined (cl) ) - { - constraintList_debugPrint("Constraint List undefined\n"); - return; - } - for (i = 0; i < cl->numconstraints; i++) - { - constraint_print (cl->constraints[i]); - } - -} - -void constraintList_resolve (constraintList cl) -{ - int i; - if (constraintList_isUndefined (cl) ) - { - constraintList_debugPrint("Constraint List empty \n"); - return; - } - for (i = 0; i < cl->numconstraints; i++) - { - constraintList_debugPrint("Trying to resolve:\n"); - constraint_print (cl->constraints[i]); - if ( constraint_resolve (cl->constraints[i] ) ) - constraintList_debugPrint ("resolve sucessfully\n"); - else - constraintList_debugPrint ("not resolved sucessfully\n"); - - } -} -constraintList constraintList_get (exprNode e1 ) -{ - return e1->constraints; -} - -constraintList constraintList_exprNodemerge (exprNode e1, exprNode e2) -{ - constraintList ret; - if ( (e1 != NULL) && (e2 != NULL) ) - { - ret = constraintList_merge (e1->constraints, e2->constraints); - } - else if ( (e1 == NULL) && (e2 == NULL) ) - ret = constraintList_merge ( (constraintList)NULL, (constraintList)NULL ); - else if (e1 == NULL) - ret = constraintList_merge ( (constraintList)NULL, e2->constraints); - else - ret = constraintList_merge (e1->constraints, (constraintList)NULL ); - return ret; -} - - -constraintList constraintList_merge (constraintList cl1, constraintList cl2) -{ - constraintList ret; - int i; - ret = constraintList_undefined; - if (constraintList_isDefined (cl1) ) - { - for (i = 0; i < cl1->numconstraints; i++) - { - ret = constraintList_add (ret, cl1->constraints[i]); - } - } - if (constraintList_isDefined (cl2) ) - { - for (i = 0; i < cl2->numconstraints; i++) - { - ret = constraintList_add (ret, cl2->constraints[i]); - } - } - return ret; - - -} - -constraintList constraintList_add (constraintList constraints, constraint newconstr) -{ - constraintList ret; - - if ( constraintList_isUndefined(constraints) ) - { - ret = constraintList_new (); - } - else - { - ret = constraints; - } - - llassert (constraintList_isDefined (ret) ); - - - ret->constraints[ret->numconstraints] = newconstr; - - ret->numconstraints++; - if (ret->numconstraints == ret->size) - { - ret->constraints = realloc (ret->constraints, sizeof (constraint) * (ret->size*2) ); - ret->size *= 2; - } - return ret; - -} -/*@=fcnuse*/ diff --git a/src/constraintResolve.c b/src/constraintResolve.c index 3749dad..f8c1f44 100644 --- a/src/constraintResolve.c +++ b/src/constraintResolve.c @@ -12,7 +12,7 @@ # include "exprChecks.h" # include "aliasChecks.h" # include "exprNodeSList.h" -# include "exprData.i" +//# include "exprData.i" #include "constraintExpr.h" @@ -53,13 +53,36 @@ constraintList constraintList_mergeEnsures (constraintList list1, constraintList //return ret; } +constraintList checkCall (exprNode fcn, exprNodeList arglist) +{ + constraintList preconditions; + uentry temp; + DPRINTF ( (message ("Got call that %s ( %s) ", exprNode_unparse(fcn), exprNodeList_unparse (arglist ) ) ) ); + + temp = exprNode_getUentry (fcn); + + preconditions = uentry_getFcnPreconditions (temp); + + if (preconditions) + { + preconditions = constraintList_copy(preconditions); + preconditions = constraintList_doSRefFixBaseParam (preconditions, arglist); + } + else + { + preconditions = constraintList_new(); + } + + return preconditions; +} + void mergeResolve (exprNode parent, exprNode child1, exprNode child2) { constraintList temp; - TPRINTF( (message ("magically merging constraint into parent:%s for", exprNode_unparse (parent) ))); + DPRINTF( (message ("magically merging constraint into parent:%s for", exprNode_unparse (parent) ))); - TPRINTF( (message (" children: %s and %s", exprNode_unparse (child1), exprNode_unparse(child2) ) ) ); + DPRINTF( (message (" children: %s and %s", exprNode_unparse (child1), exprNode_unparse(child2) ) ) ); if (exprNode_isError (child1) || exprNode_isError(child2) ) { @@ -67,7 +90,7 @@ void mergeResolve (exprNode parent, exprNode child1, exprNode child2) { parent->requiresConstraints = constraintList_copy (child2->requiresConstraints); parent->ensuresConstraints = constraintList_copy (child2->ensuresConstraints); - TPRINTF((message ("Copied child constraints: pre: %s and post: %s", + DPRINTF((message ("Copied child constraints: pre: %s and post: %s", constraintList_print( child2->requiresConstraints), constraintList_print (child2->ensuresConstraints) ) @@ -85,7 +108,7 @@ void mergeResolve (exprNode parent, exprNode child1, exprNode child2) llassert(!exprNode_isError (child1) && ! exprNode_isError(child2) ); - TPRINTF( (message ("Child constraints are %s %s and %s %s", + DPRINTF( (message ("Child constraints are %s %s and %s %s", constraintList_print (child1->requiresConstraints), constraintList_print (child1->ensuresConstraints), constraintList_print (child2->requiresConstraints), @@ -103,7 +126,7 @@ void mergeResolve (exprNode parent, exprNode child1, exprNode child2) parent->ensuresConstraints = constraintList_mergeEnsures(child1->ensuresConstraints, child2->ensuresConstraints); - TPRINTF( (message ("Parent constraints are %s and %s ", + DPRINTF( (message ("Parent constraints are %s and %s ", constraintList_print (parent->requiresConstraints), constraintList_print (parent->ensuresConstraints) ) ) ); @@ -120,14 +143,14 @@ constraintList constraintList_subsumeEnsures (constraintList list1, constraintLi constraintList_elements (list1, el) { - TPRINTF ((message ("Examining %s", constraint_print (el) ) ) ); + DPRINTF ((message ("Examining %s", constraint_print (el) ) ) ); if (!resolve (el, list2) ) { ret = constraintList_add (ret, el); } else { - TPRINTF ( (message ("Subsuming %s", constraint_print (el) ) ) ); + DPRINTF ( (message ("Subsuming %s", constraint_print (el) ) ) ); } } end_constraintList_elements; @@ -173,7 +196,7 @@ constraintList reflectChangesEnsures (constraintList pre2, constraintList post1) } else { - TPRINTF ( (message ("Resolved away %s ", constraint_print(el) ) ) ); + DPRINTF ( (message ("Resolved away %s ", constraint_print(el) ) ) ); } } end_constraintList_elements; @@ -189,7 +212,7 @@ bool constraint_conflict (constraint c1, constraint c2) if (c1->ar == EQ) if (c1->ar == c2->ar) { - TPRINTF ( (message ("%s conflicts with %s ", constraint_print (c1), constraint_print(c2) ) ) ); + DPRINTF ( (message ("%s conflicts with %s ", constraint_print (c1), constraint_print(c2) ) ) ); return TRUE; } } @@ -255,7 +278,7 @@ bool resolve (constraint c, constraintList p) { if ( satifies (c, el) ) { - TPRINTF ( (message ("\n%s Satifies %s\n ", constraint_print(el), constraint_print(c) ) ) ); + DPRINTF ( (message ("\n%s Satifies %s\n ", constraint_print(el), constraint_print(c) ) ) ); return TRUE; } } diff --git a/src/constraintTerm.c b/src/constraintTerm.c index 1b14d8d..36bdd08 100644 --- a/src/constraintTerm.c +++ b/src/constraintTerm.c @@ -11,7 +11,8 @@ # include "exprChecks.h" # include "aliasChecks.h" # include "exprNodeSList.h" -# include "exprData.i" + +//# include "exprData.i" /*@-czechfcns@*/ @@ -57,6 +58,16 @@ constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e) return ret; } +constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s) +{ + constraintTerm ret = new_constraintTermExpr(); + ret->loc = fileloc_undefined; + ret->value.sref = s; + ret->kind = SREF; + ret = constraintTerm_simplify(ret); + return ret; +} + constraintTerm constraintTerm_copy (constraintTerm term) { constraintTerm ret; @@ -74,6 +85,59 @@ constraintTerm constraintTerm_setFileloc (constraintTerm term, fileloc loc) return term; } + +cstring constraintTerm_getName (constraintTerm term) +{ + cstring s; + s = cstring_undefined; + + llassert (term != NULL); + + switch (term->kind) + { + case EXPRNODE: + /*@i334*/ //wtf + s = message ("%s", exprNode_unparse (term->value.expr) ); + break; + case INTLITERAL: + s = message (" %d ", term->value.intlit); + break; + + case SREF: + s = message ("%s", sRef_unparse (term->value.sref) ); + + break; + } + + return s; +} + + +constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist) +{ + llassert (term != NULL); + + switch (term->kind) + { + case EXPRNODE: + /*@i334*/ //wtf + // s = message ("%s @ %s ", exprNode_unparse (term->value.expr), + // fileloc_unparse (term->loc) ); + break; + case INTLITERAL: + // s = message (" %d ", term->value.intlit); + break; + + case SREF: + term->value.sref = sRef_fixBaseParam (term->value.sref, arglist); + // s = message ("%s ", sRef_unparse (term->value.sref) ); + + break; + } + return term; + +} + cstring constraintTerm_print (constraintTerm term) { cstring s; @@ -93,8 +157,8 @@ cstring constraintTerm_print (constraintTerm term) break; case SREF: - s = cstring_makeLiteral("Not Implemented\n"); - llassert(FALSE); + s = message ("%s ", sRef_unparseDebug (term->value.sref) ); + break; } @@ -157,22 +221,70 @@ bool constraintTerm_same (constraintTerm term1, constraintTerm term2) } +sRef constraintTerm_getsRef (constraintTerm t) +{ + llassert (t); + if (t->kind == EXPRNODE) + { + return t->value.expr->sref; + } + + if (t->kind == SREF) + { + return t->value.sref; + } + + return sRef_undefined; +} + +bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) +{ + cstring s1, s2; + + llassert (term1 !=NULL && term2 !=NULL); + + DPRINTF ( (message + ("Comparing srefs for %s and %s ", constraintTerm_print(term1), constraintTerm_print(term2) + ) + ) + ); + + s1 = constraintTerm_getName (term1); + s2 = constraintTerm_getName (term2); + + if (cstring_equal (s1, s2) ) + { + DPRINTF ((message (" %s and %s are same", s1, s2 ) ) ); + return TRUE; + } + else + { + DPRINTF ((message (" %s and %s are not same", s1, s2 ) ) ); + return FALSE; + } +} + bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) { + sRef s1, s2; + llassert (term1 !=NULL && term2 !=NULL); - if ( (term1->kind != term2->kind) || (term1->kind != EXPRNODE) ) + s1 = constraintTerm_getsRef (term1); + s2 = constraintTerm_getsRef (term2); + + if ( ! (s1 && s2) ) { return FALSE; } - + DPRINTF ( (message ("Comparing srefs for %s and %s ", constraintTerm_print(term1), constraintTerm_print(term2) ) ) ); - if (sRef_same (term1->value.expr->sref, term2->value.expr->sref) ) + if (sRef_sameName (s1, s2) ) { DPRINTF ((message (" %s and %s are same", constraintTerm_print(term1), constraintTerm_print(term2) ) )); return TRUE; diff --git a/src/cscanner.l b/src/cscanner.l index 1cb34c9..3b85169 100644 --- a/src/cscanner.l +++ b/src/cscanner.l @@ -302,6 +302,8 @@ static void setTokLengthT (size_t len) "undef" { return (processSpec (QUNDEF)); } "killed" { return (processSpec (QKILLED)); } "nullterminated" { return (processSpec (QNULLTERMINATED));} +"MaxSet" { return (processSpec (QMAXSET));} +"MaxRead" { return (processSpec (QMAXREAD));} {Letter}({Letter}|{Digit})* { int tok; context_saveLocation (); @@ -563,6 +565,7 @@ struct skeyword s_parsetable[] = { { "pre", QPRECLAUSE } , { "post", QPOSTCLAUSE } , {"setBufferSize", QSETBUFFERSIZE}, + {"bufferConstraint", QBUFFERCONSTRAINT}, {"setStringLength", QSETSTRINGLENGTH}, {"testinRange", QTESTINRANGE}, { NULL, BADTOK } @@ -609,7 +612,10 @@ struct skeyword s_keytable[] = { { "relnull", QRELNULL } , { "nullterminated", QNULLTERMINATED }, { "setBufferSize", QSETBUFFERSIZE }, + { "bufferConstraint", QBUFFERCONSTRAINT }, { "testInRange", QTESTINRANGE}, + { "MaxSet", QMAXSET}, + { "MaxRead", QMAXREAD}, { "reldef", QRELDEF } , { "observer", QOBSERVER } , { "exits", QEXITS } , diff --git a/src/exprChecks.c b/src/exprChecks.c index 2986403..7ed778c 100644 --- a/src/exprChecks.c +++ b/src/exprChecks.c @@ -890,18 +890,51 @@ void exprNode_checkFunctionBody (exprNode body) } } } - + void exprNode_checkFunction (/*@unused@*/ uentry ue, /*@only@*/ exprNode body) { + constraintList c, t; /* drl added 8-8-2000 */ + exprNode_generateConstraints (body); + + c = uentry_getFcnPreconditions (ue); DPRINTF(("function constraints\n")); - // constraintList_print (body->constraints); - DPRINTF (("----\n")); - // constraintList_resolve (body->constraints); - exprNode_free (body); - - } + DPRINTF (("\n\n\n\n\n\n\n")); + + context_enterInnerContext (); + + if (c) + { + llassert (c); + DPRINTF ( (message ("Function preconditions are %s \n\n\n\n\n", constraintList_printDetailed (c) ) ) ); + + t = reflectChanges (body->requiresConstraints, constraintList_copy (c) ); + body->requiresConstraints = constraintList_copy (t); + + DPRINTF ( (message ("The body has the required cosntraints: %s", constraintList_printDetailed (t) ) ) ); + t = constraintList_mergeEnsures (c, body->ensuresConstraints); + + body->ensuresConstraints = constraintList_copy (t); + + DPRINTF ( (message ("The body has the ensures constraints: %s", constraintList_printDetailed (t) ) ) ); + } + + if (c) + { + TPRINTF((message ("The Function %s has the preconditions %s", uentry_unparse(ue), constraintList_printDetailed(c) ) ) ); + } + else + { + TPRINTF((message ("The Function %s has no preconditions", uentry_unparse(ue) ) ) ); + } + + printf ("The required constraints are:\n%s", constraintList_printDetailed(body->requiresConstraints) ); + printf ("The ensures constraints are:\n%s", constraintList_printDetailed(body->ensuresConstraints) ); + + context_exitInnerPlain(); + /* exprNode_free (body); */ +} void exprChecks_checkEmptyMacroBody (void) { diff --git a/src/lex.yy.c b/src/lex.yy.c index 4b07a7c..94430c0 100644 --- a/src/lex.yy.c +++ b/src/lex.yy.c @@ -282,67 +282,68 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 178 -#define YY_END_OF_BUFFER 179 -static yyconst short int yy_accept[519] = +#define YY_NUM_RULES 180 +#define YY_END_OF_BUFFER 181 +static yyconst short int yy_accept[529] = { 0, - 0, 0, 179, 177, 157, 158, 145, 177, 3, 80, - 151, 144, 177, 139, 140, 149, 148, 136, 147, 143, - 150, 95, 95, 137, 133, 152, 138, 153, 156, 177, - 141, 176, 142, 154, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 134, 155, 135, 146, 132, - 0, 42, 0, 2, 80, 118, 174, 175, 127, 119, - 0, 0, 116, 124, 114, 125, 115, 126, 0, 108, - 1, 117, 111, 88, 0, 97, 96, 0, 95, 123, - 129, 131, 130, 122, 0, 0, 0, 120, 80, 80, - - 80, 80, 80, 80, 80, 80, 9, 80, 80, 80, - 80, 80, 80, 80, 13, 44, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 121, 128, 0, 0, 2, 102, - 4, 0, 106, 107, 108, 0, 109, 110, 90, 89, - 0, 105, 98, 99, 99, 81, 113, 112, 164, 165, - 162, 167, 172, 163, 173, 168, 171, 166, 169, 170, - 0, 0, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 11, - - 80, 80, 27, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 43, 80, 80, 80, 80, 80, 80, - 74, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 0, 42, 0, 0, 108, 0, 106, 107, - 0, 111, 91, 92, 92, 103, 104, 101, 100, 82, - 84, 161, 0, 0, 80, 80, 39, 80, 6, 29, - 80, 80, 80, 80, 80, 80, 10, 25, 80, 80, - 80, 80, 12, 80, 80, 80, 51, 80, 31, 80, - 80, 52, 80, 80, 68, 80, 80, 80, 80, 80, - - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 26, 80, 80, 80, 0, 108, 94, 93, 83, 85, - 85, 0, 160, 80, 80, 5, 80, 36, 80, 80, - 80, 80, 80, 80, 80, 30, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 69, 80, 80, 80, - 80, 80, 80, 80, 32, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 77, 24, 80, 80, 80, - 80, 80, 18, 76, 87, 86, 159, 80, 80, 80, - 80, 80, 80, 80, 28, 80, 38, 80, 21, 80, - - 54, 78, 80, 60, 80, 80, 80, 80, 80, 80, - 80, 58, 80, 14, 75, 34, 15, 80, 41, 22, - 17, 80, 80, 80, 80, 80, 72, 19, 20, 80, - 37, 47, 64, 80, 80, 8, 80, 59, 80, 80, - 80, 62, 53, 80, 80, 80, 45, 80, 80, 57, - 80, 46, 61, 80, 23, 80, 80, 80, 80, 65, - 7, 80, 73, 80, 80, 80, 70, 16, 80, 40, - 80, 55, 80, 33, 35, 80, 71, 56, 80, 80, - 80, 80, 67, 80, 80, 80, 80, 63, 80, 80, - 80, 80, 80, 80, 80, 80, 48, 80, 80, 80, - - 66, 80, 80, 80, 79, 80, 80, 80, 80, 80, - 80, 80, 80, 50, 80, 80, 49, 0 + 0, 0, 181, 179, 159, 160, 147, 179, 3, 82, + 153, 146, 179, 141, 142, 151, 150, 138, 149, 145, + 152, 97, 97, 139, 135, 154, 140, 155, 158, 179, + 82, 143, 178, 144, 156, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 136, 157, 137, 148, + 134, 0, 42, 0, 2, 82, 120, 176, 177, 129, + 121, 0, 0, 118, 126, 116, 127, 117, 128, 0, + 110, 1, 119, 113, 90, 0, 99, 98, 0, 97, + 125, 131, 133, 132, 124, 0, 0, 0, 82, 122, + + 82, 82, 82, 82, 82, 82, 82, 82, 9, 82, + 82, 82, 82, 82, 82, 82, 13, 44, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 123, 130, 0, 0, + 2, 104, 4, 0, 108, 109, 110, 0, 111, 112, + 92, 91, 0, 107, 100, 101, 101, 83, 115, 114, + 166, 167, 164, 169, 174, 165, 175, 170, 173, 168, + 171, 172, 0, 0, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 11, 82, 82, 27, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 43, 82, 82, 82, + 82, 82, 82, 74, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 0, 42, 0, 0, 110, + 0, 108, 109, 0, 113, 93, 94, 94, 105, 106, + 103, 102, 84, 86, 163, 0, 0, 82, 82, 82, + 82, 39, 82, 6, 29, 82, 82, 82, 82, 82, + 82, 10, 25, 82, 82, 82, 82, 12, 82, 82, + 82, 51, 82, 31, 82, 82, 52, 82, 82, 68, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 26, 82, 82, 82, 0, + 110, 96, 95, 85, 87, 87, 0, 162, 82, 82, + 82, 82, 5, 82, 36, 82, 82, 82, 82, 82, + 82, 82, 30, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 69, 82, 82, 82, 82, 82, 82, + 82, 32, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 77, 24, 82, 82, 82, 82, 82, 18, + 76, 89, 88, 161, 82, 80, 82, 82, 82, 82, + + 82, 82, 82, 28, 82, 38, 82, 21, 82, 54, + 78, 82, 60, 82, 82, 82, 82, 82, 82, 82, + 58, 82, 14, 75, 34, 15, 82, 41, 22, 17, + 82, 82, 82, 82, 82, 72, 19, 20, 82, 81, + 37, 47, 64, 82, 82, 8, 82, 59, 82, 82, + 82, 62, 53, 82, 82, 82, 45, 82, 82, 57, + 82, 46, 61, 82, 23, 82, 82, 82, 82, 65, + 7, 82, 73, 82, 82, 82, 70, 16, 82, 40, + 82, 55, 82, 33, 35, 82, 71, 56, 82, 82, + 82, 82, 67, 82, 82, 82, 82, 63, 82, 82, + + 82, 82, 82, 82, 82, 82, 48, 82, 82, 82, + 66, 82, 82, 82, 79, 82, 82, 82, 82, 82, + 82, 82, 82, 50, 82, 82, 49, 0 } ; static yyconst int yy_ec[256] = @@ -389,217 +390,220 @@ static yyconst int yy_meta[79] = 2, 2, 2, 2, 1, 1, 1, 1 } ; -static yyconst short int yy_base[526] = +static yyconst short int yy_base[536] = { 0, - 0, 0, 669, 670, 670, 670, 643, 73, 0, 0, - 55, 71, 620, 670, 670, 641, 67, 670, 68, 66, - 74, 80, 85, 670, 670, 65, 640, 82, 670, 91, - 670, 670, 670, 639, 613, 28, 596, 67, 40, 65, - 72, 597, 88, 55, 596, 79, 101, 608, 603, 103, - 90, 594, 51, 598, 596, 670, 113, 670, 670, 670, - 133, 163, 651, 0, 0, 670, 670, 670, 670, 670, - 100, 139, 670, 670, 670, 670, 670, 670, 635, 155, - 670, 670, 162, 172, 164, 160, 142, 0, 204, 627, - 670, 670, 670, 626, 245, 613, 613, 670, 595, 574, - - 578, 590, 577, 122, 580, 141, 573, 574, 571, 144, - 578, 574, 571, 568, 0, 99, 572, 579, 572, 569, - 560, 562, 568, 561, 571, 565, 557, 561, 557, 174, - 566, 135, 158, 566, 154, 561, 557, 549, 552, 184, - 566, 167, 556, 559, 670, 670, 242, 153, 0, 670, - 670, 235, 670, 670, 251, 243, 670, 670, 233, 230, - 241, 272, 165, 670, 234, 261, 670, 670, 670, 572, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 573, 574, 546, 541, 544, 556, 551, 539, 551, 200, - 552, 547, 549, 545, 537, 534, 542, 529, 544, 0, - - 530, 534, 537, 522, 525, 528, 531, 521, 523, 524, - 529, 516, 509, 0, 526, 512, 526, 519, 246, 508, - 0, 510, 509, 511, 518, 519, 503, 501, 501, 503, - 512, 511, 507, 509, 499, 503, 494, 203, 506, 508, - 497, 496, 271, 308, 553, 278, 296, 304, 670, 670, - 306, 314, 254, 670, 277, 670, 670, 670, 670, 295, - 279, 670, 527, 515, 490, 479, 0, 491, 0, 0, - 490, 481, 489, 478, 483, 484, 0, 0, 477, 477, - 487, 473, 0, 477, 482, 477, 0, 287, 0, 482, - 467, 467, 468, 478, 0, 478, 472, 466, 462, 473, - - 458, 460, 470, 456, 468, 458, 462, 461, 466, 465, - 451, 453, 461, 459, 457, 449, 454, 455, 443, 455, - 0, 439, 451, 451, 323, 325, 670, 670, 294, 670, - 305, 476, 670, 436, 437, 0, 293, 0, 438, 439, - 445, 443, 442, 433, 432, 0, 439, 427, 431, 437, - 435, 433, 427, 432, 416, 417, 0, 433, 414, 414, - 425, 419, 416, 424, 0, 423, 420, 424, 421, 405, - 414, 416, 401, 414, 415, 0, 0, 404, 412, 408, - 403, 404, 0, 0, 670, 670, 670, 394, 406, 406, - 395, 389, 389, 401, 0, 401, 403, 384, 0, 401, - - 0, 0, 395, 0, 389, 383, 393, 383, 385, 382, - 389, 0, 382, 0, 0, 383, 0, 380, 0, 0, - 0, 384, 378, 382, 377, 381, 0, 0, 0, 374, - 0, 0, 367, 379, 377, 0, 368, 0, 369, 368, - 367, 0, 0, 365, 360, 369, 0, 356, 357, 0, - 359, 0, 0, 360, 0, 365, 365, 363, 349, 0, - 0, 348, 0, 345, 334, 338, 0, 0, 339, 0, - 325, 0, 331, 325, 0, 317, 0, 0, 309, 317, - 325, 323, 0, 314, 317, 309, 322, 0, 315, 303, - 316, 313, 299, 299, 307, 292, 0, 304, 303, 294, - - 0, 295, 278, 254, 0, 236, 250, 176, 186, 174, - 151, 158, 128, 0, 48, 28, 0, 670, 386, 390, + 0, 0, 678, 679, 679, 679, 652, 73, 0, 0, + 55, 71, 629, 679, 679, 650, 67, 679, 68, 66, + 74, 80, 85, 679, 679, 65, 649, 82, 679, 91, + 622, 679, 679, 679, 647, 621, 28, 604, 67, 40, + 65, 72, 605, 88, 55, 604, 79, 101, 616, 611, + 103, 90, 602, 51, 606, 604, 679, 113, 679, 679, + 679, 133, 163, 659, 0, 0, 679, 679, 679, 679, + 679, 100, 139, 679, 679, 679, 679, 679, 679, 643, + 155, 679, 679, 162, 172, 164, 160, 142, 0, 204, + 635, 679, 679, 679, 634, 245, 621, 621, 584, 679, + + 602, 581, 585, 597, 584, 122, 587, 141, 580, 581, + 578, 144, 585, 581, 578, 575, 0, 99, 579, 586, + 579, 576, 567, 569, 575, 568, 578, 572, 564, 568, + 564, 174, 573, 135, 158, 573, 154, 568, 564, 556, + 559, 184, 573, 167, 563, 566, 679, 679, 242, 153, + 0, 679, 679, 235, 679, 679, 251, 243, 679, 679, + 233, 230, 241, 272, 165, 679, 234, 261, 679, 679, + 679, 579, 679, 679, 679, 679, 679, 679, 679, 679, + 679, 679, 580, 581, 228, 553, 548, 551, 563, 558, + 546, 558, 231, 559, 554, 556, 552, 544, 541, 549, + + 536, 551, 0, 537, 541, 544, 529, 532, 535, 538, + 528, 530, 531, 536, 523, 516, 0, 533, 519, 533, + 526, 246, 515, 0, 517, 516, 518, 525, 526, 510, + 508, 508, 510, 519, 518, 514, 516, 506, 510, 501, + 203, 513, 515, 504, 503, 271, 308, 560, 295, 299, + 306, 679, 679, 304, 316, 262, 679, 277, 679, 679, + 679, 679, 298, 281, 679, 534, 522, 505, 504, 495, + 484, 0, 496, 0, 0, 495, 486, 494, 483, 488, + 489, 0, 0, 482, 482, 492, 478, 0, 482, 487, + 482, 0, 284, 0, 487, 472, 472, 473, 483, 0, + + 483, 477, 471, 467, 478, 463, 465, 475, 461, 473, + 463, 467, 466, 471, 470, 456, 458, 466, 464, 462, + 454, 459, 460, 448, 460, 0, 444, 456, 456, 323, + 325, 679, 679, 287, 679, 305, 481, 679, 457, 439, + 439, 440, 0, 292, 0, 441, 442, 448, 446, 445, + 436, 435, 0, 442, 430, 434, 440, 438, 436, 430, + 435, 419, 420, 0, 436, 417, 417, 428, 422, 419, + 427, 0, 426, 423, 427, 424, 408, 417, 419, 404, + 417, 418, 0, 0, 407, 415, 411, 406, 407, 0, + 0, 679, 679, 679, 411, 0, 396, 408, 408, 397, + + 391, 391, 403, 0, 403, 405, 386, 0, 403, 0, + 0, 397, 0, 391, 385, 395, 385, 387, 384, 391, + 0, 384, 0, 0, 385, 0, 382, 0, 0, 0, + 386, 380, 384, 379, 383, 0, 0, 0, 376, 0, + 0, 0, 369, 381, 379, 0, 370, 0, 371, 370, + 369, 0, 0, 367, 362, 371, 0, 358, 359, 0, + 361, 0, 0, 362, 0, 367, 367, 365, 351, 0, + 0, 350, 0, 356, 348, 347, 0, 0, 347, 0, + 329, 0, 340, 334, 0, 319, 0, 0, 311, 320, + 328, 325, 0, 316, 319, 311, 324, 0, 317, 305, + + 318, 315, 301, 302, 310, 296, 0, 308, 311, 300, + 0, 299, 290, 282, 0, 233, 245, 176, 186, 174, + 151, 158, 128, 0, 48, 28, 0, 679, 386, 390, 394, 399, 403, 405, 410 } ; -static yyconst short int yy_def[526] = +static yyconst short int yy_def[536] = { 0, - 518, 1, 518, 518, 518, 518, 518, 519, 520, 521, - 518, 518, 522, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 518, 518, 518, 518, 518, - 519, 518, 519, 523, 521, 518, 518, 518, 518, 518, - 522, 522, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 524, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 521, 521, - - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 518, 518, 518, 525, 523, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 524, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 525, 518, 525, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 518, 518, 518, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 0, 518, 518, - 518, 518, 518, 518, 518 + 528, 1, 528, 528, 528, 528, 528, 529, 530, 531, + 528, 528, 532, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 531, 528, 528, 528, 528, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 528, 528, 528, 528, + 528, 529, 528, 529, 533, 531, 528, 528, 528, 528, + 528, 532, 532, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 534, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 531, 528, + + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 528, 528, 528, 535, + 533, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 534, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 535, 528, 535, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 528, 528, 528, 531, 531, 531, 531, 531, 531, + + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 0, 528, 528, + 528, 528, 528, 528, 528 } ; -static yyconst short int yy_nxt[749] = +static yyconst short int yy_nxt[758] = { 0, 4, 5, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 10, 43, 44, - 45, 10, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 10, 55, 10, 56, 57, 58, 59, 62, 66, - 69, 74, 517, 79, 76, 80, 80, 81, 90, 91, - 100, 75, 77, 78, 106, 70, 101, 83, 82, 84, - - 84, 141, 83, 107, 89, 89, 93, 94, 95, 118, - 150, 85, 516, 119, 142, 86, 85, 103, 96, 63, - 86, 87, 111, 88, 104, 108, 87, 109, 97, 67, - 105, 68, 112, 121, 85, 113, 110, 145, 62, 85, - 86, 518, 122, 115, 137, 86, 72, 123, 87, 71, - 116, 88, 124, 87, 117, 138, 125, 131, 244, 202, - 132, 133, 139, 126, 147, 147, 203, 134, 148, 127, - 135, 128, 188, 136, 80, 80, 189, 165, 161, 63, - 161, 155, 155, 162, 162, 222, 152, 153, 146, 83, - 154, 84, 84, 156, 157, 163, 191, 158, 223, 245, - - 515, 164, 165, 85, 227, 192, 258, 159, 196, 152, - 153, 197, 514, 160, 224, 154, 156, 157, 513, 228, - 163, 83, 158, 89, 89, 239, 85, 240, 164, 217, - 218, 225, 159, 258, 219, 85, 233, 234, 512, 86, - 160, 220, 235, 147, 147, 87, 511, 148, 510, 246, - 236, 246, 237, 319, 247, 247, 320, 251, 85, 251, - 162, 162, 252, 252, 86, 255, 272, 273, 253, 259, - 155, 155, 87, 169, 254, 170, 244, 171, 172, 173, - 174, 175, 248, 249, 176, 177, 250, 178, 179, 180, - 255, 162, 162, 253, 259, 327, 260, 247, 247, 300, - - 509, 254, 261, 508, 256, 248, 249, 257, 301, 147, - 147, 250, 328, 148, 331, 247, 247, 245, 325, 507, - 325, 260, 327, 326, 326, 252, 252, 256, 153, 261, - 329, 154, 257, 252, 252, 385, 330, 328, 506, 331, - 386, 350, 326, 326, 326, 326, 157, 390, 505, 158, - 504, 153, 351, 503, 391, 329, 154, 249, 502, 501, - 250, 500, 385, 330, 499, 386, 498, 497, 496, 157, - 495, 494, 493, 492, 158, 491, 490, 489, 488, 487, - 249, 486, 485, 484, 483, 250, 61, 61, 61, 61, - 61, 64, 482, 481, 64, 65, 480, 65, 65, 71, - - 71, 479, 71, 71, 149, 478, 149, 149, 166, 166, - 243, 243, 243, 243, 243, 477, 476, 475, 474, 473, - 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, - 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, - 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, - 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, - 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, - 422, 421, 420, 419, 418, 417, 416, 415, 414, 413, - 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, - 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, - - 392, 389, 388, 387, 384, 383, 382, 381, 380, 379, - 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, - 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, - 358, 357, 356, 355, 354, 353, 352, 349, 348, 347, - 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, - 336, 335, 334, 333, 332, 518, 324, 323, 322, 321, - 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, - 308, 307, 306, 305, 304, 303, 302, 299, 298, 297, - 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, - 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, - - 276, 275, 274, 271, 270, 269, 268, 267, 266, 265, - 264, 263, 262, 242, 241, 238, 232, 231, 230, 229, - 226, 221, 216, 215, 214, 213, 212, 211, 210, 209, - 208, 207, 206, 205, 204, 201, 200, 199, 198, 195, - 194, 193, 190, 187, 186, 185, 184, 183, 182, 181, - 168, 167, 151, 518, 144, 143, 140, 130, 129, 120, - 114, 102, 99, 98, 92, 73, 72, 60, 518, 3, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518 + 10, 10, 10, 10, 10, 10, 31, 10, 10, 10, + 10, 10, 10, 10, 10, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 10, 44, 45, + 46, 10, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 10, 56, 10, 57, 58, 59, 60, 63, 67, + 70, 75, 527, 80, 77, 81, 81, 82, 91, 92, + 102, 76, 78, 79, 108, 71, 103, 84, 83, 85, + + 85, 143, 84, 109, 90, 90, 94, 95, 96, 120, + 152, 86, 526, 121, 144, 87, 86, 105, 97, 64, + 87, 88, 113, 89, 106, 110, 88, 111, 98, 68, + 107, 69, 114, 123, 86, 115, 112, 147, 63, 86, + 87, 528, 124, 117, 139, 87, 73, 125, 88, 72, + 118, 89, 126, 88, 119, 140, 127, 133, 247, 205, + 134, 135, 141, 128, 149, 149, 206, 136, 150, 129, + 137, 130, 191, 138, 81, 81, 192, 167, 163, 64, + 163, 157, 157, 164, 164, 225, 154, 155, 148, 84, + 156, 85, 85, 158, 159, 165, 194, 160, 226, 248, + + 525, 166, 167, 86, 230, 195, 261, 161, 199, 154, + 155, 200, 524, 162, 227, 156, 158, 159, 523, 231, + 165, 84, 160, 90, 90, 242, 86, 243, 166, 220, + 221, 228, 161, 261, 222, 86, 236, 237, 522, 87, + 162, 223, 238, 149, 149, 88, 521, 150, 520, 249, + 239, 249, 240, 324, 250, 250, 325, 254, 86, 254, + 164, 164, 255, 255, 87, 258, 268, 269, 256, 262, + 157, 157, 88, 171, 257, 172, 247, 173, 174, 175, + 176, 177, 251, 252, 178, 179, 253, 180, 181, 182, + 258, 164, 164, 256, 262, 519, 263, 277, 278, 305, + + 518, 257, 264, 332, 259, 251, 252, 260, 306, 149, + 149, 253, 333, 150, 250, 250, 336, 248, 250, 250, + 330, 263, 330, 255, 255, 331, 331, 259, 392, 264, + 332, 155, 260, 334, 156, 255, 255, 333, 357, 335, + 393, 336, 331, 331, 331, 331, 399, 517, 159, 358, + 516, 160, 515, 400, 155, 392, 514, 252, 334, 156, + 253, 513, 512, 511, 510, 393, 335, 509, 508, 507, + 506, 159, 505, 504, 503, 502, 160, 501, 500, 499, + 252, 498, 497, 496, 495, 253, 62, 62, 62, 62, + 62, 65, 494, 493, 65, 66, 492, 66, 66, 72, + + 72, 491, 72, 72, 151, 490, 151, 151, 168, 168, + 246, 246, 246, 246, 246, 489, 488, 487, 486, 485, + 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, + 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, + 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, + 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, + 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, + 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, + 424, 423, 422, 421, 420, 419, 418, 417, 416, 415, + 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, + + 404, 403, 402, 401, 398, 397, 396, 395, 394, 391, + 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, + 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, + 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, + 360, 359, 356, 355, 354, 353, 352, 351, 350, 349, + 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, + 338, 337, 528, 329, 328, 327, 326, 323, 322, 321, + 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, + 310, 309, 308, 307, 304, 303, 302, 301, 300, 299, + 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, + + 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, + 276, 275, 274, 273, 272, 271, 270, 267, 266, 265, + 245, 244, 241, 235, 234, 233, 232, 229, 224, 219, + 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, + 208, 207, 204, 203, 202, 201, 198, 197, 196, 193, + 190, 189, 188, 187, 186, 185, 184, 183, 170, 169, + 153, 528, 146, 145, 142, 132, 131, 122, 116, 104, + 101, 100, 99, 93, 74, 73, 61, 528, 3, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528 } ; -static yyconst short int yy_chk[749] = +static yyconst short int yy_chk[758] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -609,80 +613,81 @@ static yyconst short int yy_chk[749] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 11, - 12, 17, 516, 20, 19, 20, 20, 21, 26, 26, - 36, 17, 19, 19, 39, 12, 36, 22, 21, 22, - - 22, 53, 23, 39, 23, 23, 28, 28, 30, 44, - 71, 22, 515, 44, 53, 22, 23, 38, 30, 8, - 23, 22, 41, 22, 38, 40, 23, 40, 30, 11, - 38, 11, 41, 46, 22, 41, 40, 57, 61, 23, - 22, 72, 46, 43, 51, 23, 71, 46, 22, 72, - 43, 22, 47, 23, 43, 51, 47, 50, 148, 116, - 50, 50, 51, 47, 62, 62, 116, 50, 62, 47, - 50, 47, 104, 50, 80, 80, 104, 87, 85, 61, - 85, 83, 83, 85, 85, 132, 80, 80, 57, 84, - 80, 84, 84, 83, 83, 86, 106, 83, 132, 148, - - 513, 86, 87, 84, 135, 106, 163, 84, 110, 80, - 80, 110, 512, 84, 133, 80, 83, 83, 511, 135, - 86, 89, 83, 89, 89, 142, 84, 142, 86, 130, - 130, 133, 84, 163, 130, 89, 140, 140, 510, 89, - 84, 130, 140, 147, 147, 89, 509, 147, 508, 152, - 140, 152, 140, 238, 152, 152, 238, 156, 89, 156, - 161, 161, 156, 156, 89, 160, 190, 190, 159, 165, - 155, 155, 89, 95, 159, 95, 243, 95, 95, 95, - 95, 95, 155, 155, 95, 95, 155, 95, 95, 95, - 160, 162, 162, 159, 165, 253, 166, 246, 246, 219, - - 507, 159, 166, 506, 162, 155, 155, 162, 219, 244, - 244, 155, 255, 244, 261, 247, 247, 243, 248, 504, - 248, 166, 253, 248, 248, 251, 251, 162, 247, 166, - 260, 247, 162, 252, 252, 329, 260, 255, 503, 261, - 331, 288, 325, 325, 326, 326, 252, 337, 502, 252, - 500, 247, 288, 499, 337, 260, 247, 326, 498, 496, - 326, 495, 329, 260, 494, 331, 493, 492, 491, 252, - 490, 489, 487, 486, 252, 485, 484, 482, 481, 480, - 326, 479, 476, 474, 473, 326, 519, 519, 519, 519, - 519, 520, 471, 469, 520, 521, 466, 521, 521, 522, - - 522, 465, 522, 522, 523, 464, 523, 523, 524, 524, - 525, 525, 525, 525, 525, 462, 459, 458, 457, 456, - 454, 451, 449, 448, 446, 445, 444, 441, 440, 439, - 437, 435, 434, 433, 430, 426, 425, 424, 423, 422, - 418, 416, 413, 411, 410, 409, 408, 407, 406, 405, - 403, 400, 398, 397, 396, 394, 393, 392, 391, 390, - 389, 388, 382, 381, 380, 379, 378, 375, 374, 373, - 372, 371, 370, 369, 368, 367, 366, 364, 363, 362, - 361, 360, 359, 358, 356, 355, 354, 353, 352, 351, - 350, 349, 348, 347, 345, 344, 343, 342, 341, 340, - - 339, 335, 334, 332, 324, 323, 322, 320, 319, 318, + 12, 17, 526, 20, 19, 20, 20, 21, 26, 26, + 37, 17, 19, 19, 40, 12, 37, 22, 21, 22, + + 22, 54, 23, 40, 23, 23, 28, 28, 30, 45, + 72, 22, 525, 45, 54, 22, 23, 39, 30, 8, + 23, 22, 42, 22, 39, 41, 23, 41, 30, 11, + 39, 11, 42, 47, 22, 42, 41, 58, 62, 23, + 22, 73, 47, 44, 52, 23, 72, 47, 22, 73, + 44, 22, 48, 23, 44, 52, 48, 51, 150, 118, + 51, 51, 52, 48, 63, 63, 118, 51, 63, 48, + 51, 48, 106, 51, 81, 81, 106, 88, 86, 62, + 86, 84, 84, 86, 86, 134, 81, 81, 58, 85, + 81, 85, 85, 84, 84, 87, 108, 84, 134, 150, + + 523, 87, 88, 85, 137, 108, 165, 85, 112, 81, + 81, 112, 522, 85, 135, 81, 84, 84, 521, 137, + 87, 90, 84, 90, 90, 144, 85, 144, 87, 132, + 132, 135, 85, 165, 132, 90, 142, 142, 520, 90, + 85, 132, 142, 149, 149, 90, 519, 149, 518, 154, + 142, 154, 142, 241, 154, 154, 241, 158, 90, 158, + 163, 163, 158, 158, 90, 162, 185, 185, 161, 167, + 157, 157, 90, 96, 161, 96, 246, 96, 96, 96, + 96, 96, 157, 157, 96, 96, 157, 96, 96, 96, + 162, 164, 164, 161, 167, 517, 168, 193, 193, 222, + + 516, 161, 168, 256, 164, 157, 157, 164, 222, 247, + 247, 157, 258, 247, 249, 249, 264, 246, 250, 250, + 251, 168, 251, 254, 254, 251, 251, 164, 334, 168, + 256, 250, 164, 263, 250, 255, 255, 258, 293, 263, + 336, 264, 330, 330, 331, 331, 344, 514, 255, 293, + 513, 255, 512, 344, 250, 334, 510, 331, 263, 250, + 331, 509, 508, 506, 505, 336, 263, 504, 503, 502, + 501, 255, 500, 499, 497, 496, 255, 495, 494, 492, + 331, 491, 490, 489, 486, 331, 529, 529, 529, 529, + 529, 530, 484, 483, 530, 531, 481, 531, 531, 532, + + 532, 479, 532, 532, 533, 476, 533, 533, 534, 534, + 535, 535, 535, 535, 535, 475, 474, 472, 469, 468, + 467, 466, 464, 461, 459, 458, 456, 455, 454, 451, + 450, 449, 447, 445, 444, 443, 439, 435, 434, 433, + 432, 431, 427, 425, 422, 420, 419, 418, 417, 416, + 415, 414, 412, 409, 407, 406, 405, 403, 402, 401, + 400, 399, 398, 397, 395, 389, 388, 387, 386, 385, + 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, + 371, 370, 369, 368, 367, 366, 365, 363, 362, 361, + 360, 359, 358, 357, 356, 355, 354, 352, 351, 350, + + 349, 348, 347, 346, 342, 341, 340, 339, 337, 329, + 328, 327, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, - 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, - 297, 296, 294, 293, 292, 291, 290, 286, 285, 284, - 282, 281, 280, 279, 276, 275, 274, 273, 272, 271, - 268, 266, 265, 264, 263, 245, 242, 241, 240, 239, + 307, 306, 305, 304, 303, 302, 301, 299, 298, 297, + 296, 295, 291, 290, 289, 287, 286, 285, 284, 281, + 280, 279, 278, 277, 276, 273, 271, 270, 269, 268, + 267, 266, 248, 245, 244, 243, 242, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, - 227, 226, 225, 224, 223, 222, 220, 218, 217, 216, - 215, 213, 212, 211, 210, 209, 208, 207, 206, 205, - 204, 203, 202, 201, 199, 198, 197, 196, 195, 194, - - 193, 192, 191, 189, 188, 187, 186, 185, 184, 183, - 182, 181, 170, 144, 143, 141, 139, 138, 137, 136, - 134, 131, 129, 128, 127, 126, 125, 124, 123, 122, - 121, 120, 119, 118, 117, 114, 113, 112, 111, 109, - 108, 107, 105, 103, 102, 101, 100, 99, 97, 96, - 94, 90, 79, 63, 55, 54, 52, 49, 48, 45, - 42, 37, 35, 34, 27, 16, 13, 7, 3, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518 + 227, 226, 225, 223, 221, 220, 219, 218, 216, 215, + 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, + + 204, 202, 201, 200, 199, 198, 197, 196, 195, 194, + 192, 191, 190, 189, 188, 187, 186, 184, 183, 172, + 146, 145, 143, 141, 140, 139, 138, 136, 133, 131, + 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, + 120, 119, 116, 115, 114, 113, 111, 110, 109, 107, + 105, 104, 103, 102, 101, 99, 98, 97, 95, 91, + 80, 64, 56, 55, 53, 50, 49, 46, 43, 38, + 36, 35, 31, 27, 16, 13, 7, 3, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528 } ; static yy_state_type yy_last_accepting_state; @@ -868,7 +873,7 @@ static void setTokLengthT (size_t len) } # include "flex.head" -#line 872 "lex.yy.c" +#line 877 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1022,7 +1027,7 @@ YY_DECL #line 185 "cscanner.l" -#line 1026 "lex.yy.c" +#line 1031 "lex.yy.c" if ( yy_init ) { @@ -1073,13 +1078,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 519 ) + if ( yy_current_state >= 529 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 670 ); + while ( yy_base[yy_current_state] != 679 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1532,7 +1537,17 @@ YY_RULE_SETUP YY_BREAK case 80: YY_RULE_SETUP +#line 305 "cscanner.l" +{ return (processSpec (QMAXSET));} + YY_BREAK +case 81: +YY_RULE_SETUP #line 306 "cscanner.l" +{ return (processSpec (QMAXREAD));} + YY_BREAK +case 82: +YY_RULE_SETUP +#line 308 "cscanner.l" { int tok; context_saveLocation (); setTokLength (longUnsigned_toInt (mstring_length (yytext))); @@ -1543,426 +1558,426 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 83: YY_RULE_SETUP -#line 315 "cscanner.l" +#line 317 "cscanner.l" { setTokLengthT (mstring_length (yytext)); RETURN_INT (ctype_int, processHex ()); /* evs 2000-05-17 was ctype_uint */ } YY_BREAK -case 82: -YY_RULE_SETUP -#line 318 "cscanner.l" -{ setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_lint, processHex ()); } - YY_BREAK -case 83: +case 84: YY_RULE_SETUP #line 320 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_llint, processHex ()); } + RETURN_INT (ctype_lint, processHex ()); } YY_BREAK -case 84: +case 85: YY_RULE_SETUP #line 322 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_uint, processHex ()); } + RETURN_INT (ctype_llint, processHex ()); } YY_BREAK -case 85: +case 86: YY_RULE_SETUP #line 324 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_ulint, processHex ()); } + RETURN_INT (ctype_uint, processHex ()); } YY_BREAK -case 86: +case 87: YY_RULE_SETUP #line 326 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_ullint, processHex ()); } + RETURN_INT (ctype_ulint, processHex ()); } YY_BREAK -case 87: +case 88: YY_RULE_SETUP #line 328 "cscanner.l" { setTokLengthT (mstring_length (yytext)); RETURN_INT (ctype_ullint, processHex ()); } YY_BREAK -case 88: +case 89: YY_RULE_SETUP #line 330 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_int, processOctal ()); } + RETURN_INT (ctype_ullint, processHex ()); } YY_BREAK -case 89: +case 90: YY_RULE_SETUP #line 332 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_uint, processOctal ()); } + RETURN_INT (ctype_int, processOctal ()); } YY_BREAK -case 90: +case 91: YY_RULE_SETUP #line 334 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_lint, processOctal ()); } + RETURN_INT (ctype_uint, processOctal ()); } YY_BREAK -case 91: +case 92: YY_RULE_SETUP #line 336 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_llint, processOctal ()); } + RETURN_INT (ctype_lint, processOctal ()); } YY_BREAK -case 92: +case 93: YY_RULE_SETUP #line 338 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_ulint, processOctal ()); } + RETURN_INT (ctype_llint, processOctal ()); } YY_BREAK -case 93: +case 94: YY_RULE_SETUP #line 340 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_ullint, processOctal ()); } + RETURN_INT (ctype_ulint, processOctal ()); } YY_BREAK -case 94: +case 95: YY_RULE_SETUP #line 342 "cscanner.l" { setTokLengthT (mstring_length (yytext)); RETURN_INT (ctype_ullint, processOctal ()); } YY_BREAK -case 95: +case 96: YY_RULE_SETUP #line 344 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_int, processDec ()); } + RETURN_INT (ctype_ullint, processOctal ()); } YY_BREAK -case 96: +case 97: YY_RULE_SETUP #line 346 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_uint, processDec ()); } + RETURN_INT (ctype_int, processDec ()); } YY_BREAK -case 97: +case 98: YY_RULE_SETUP #line 348 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_lint, processDec ()); } + RETURN_INT (ctype_uint, processDec ()); } YY_BREAK -case 98: +case 99: YY_RULE_SETUP #line 350 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_llint, processDec ()); } + RETURN_INT (ctype_lint, processDec ()); } YY_BREAK -case 99: +case 100: YY_RULE_SETUP #line 352 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_ulint, processDec ()); } + RETURN_INT (ctype_llint, processDec ()); } YY_BREAK -case 100: +case 101: YY_RULE_SETUP #line 354 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_INT (ctype_ullint, processDec ()); } + RETURN_INT (ctype_ulint, processDec ()); } YY_BREAK -case 101: +case 102: YY_RULE_SETUP #line 356 "cscanner.l" { setTokLengthT (mstring_length (yytext)); RETURN_INT (ctype_ullint, processDec ()); } YY_BREAK -case 102: -YY_RULE_SETUP -#line 358 "cscanner.l" -{ setTokLengthT (mstring_length (yytext)); - RETURN_CHAR (processChar ()); } - YY_BREAK case 103: YY_RULE_SETUP -#line 360 "cscanner.l" +#line 358 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_float, processFloat ()); } + RETURN_INT (ctype_ullint, processDec ()); } YY_BREAK case 104: YY_RULE_SETUP -#line 362 "cscanner.l" +#line 360 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_ldouble, processFloat ()); } + RETURN_CHAR (processChar ()); } YY_BREAK case 105: YY_RULE_SETUP -#line 364 "cscanner.l" +#line 362 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_double, processFloat ()); } + RETURN_FLOAT (ctype_float, processFloat ()); } YY_BREAK case 106: YY_RULE_SETUP -#line 367 "cscanner.l" +#line 364 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_float, processFloat ()); } + RETURN_FLOAT (ctype_ldouble, processFloat ()); } YY_BREAK case 107: YY_RULE_SETUP -#line 369 "cscanner.l" +#line 366 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_ldouble, processFloat ()); } + RETURN_FLOAT (ctype_double, processFloat ()); } YY_BREAK case 108: YY_RULE_SETUP -#line 371 "cscanner.l" +#line 369 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_double, processFloat ()); } + RETURN_FLOAT (ctype_float, processFloat ()); } YY_BREAK case 109: YY_RULE_SETUP -#line 374 "cscanner.l" +#line 371 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_float, processFloat ()); } + RETURN_FLOAT (ctype_ldouble, processFloat ()); } YY_BREAK case 110: YY_RULE_SETUP -#line 376 "cscanner.l" +#line 373 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_ldouble, processFloat ()); } + RETURN_FLOAT (ctype_double, processFloat ()); } YY_BREAK case 111: YY_RULE_SETUP -#line 378 "cscanner.l" +#line 376 "cscanner.l" { setTokLengthT (mstring_length (yytext)); - RETURN_FLOAT (ctype_double, processFloat ()); } + RETURN_FLOAT (ctype_float, processFloat ()); } YY_BREAK case 112: YY_RULE_SETUP -#line 381 "cscanner.l" -{ setTokLength (3); RETURN_TOK (RIGHT_ASSIGN); } +#line 378 "cscanner.l" +{ setTokLengthT (mstring_length (yytext)); + RETURN_FLOAT (ctype_ldouble, processFloat ()); } YY_BREAK case 113: YY_RULE_SETUP -#line 382 "cscanner.l" -{ setTokLength (3); RETURN_TOK (LEFT_ASSIGN); } +#line 380 "cscanner.l" +{ setTokLengthT (mstring_length (yytext)); + RETURN_FLOAT (ctype_double, processFloat ()); } YY_BREAK case 114: YY_RULE_SETUP #line 383 "cscanner.l" -{ setTokLength (2); RETURN_TOK (ADD_ASSIGN); } +{ setTokLength (3); RETURN_TOK (RIGHT_ASSIGN); } YY_BREAK case 115: YY_RULE_SETUP #line 384 "cscanner.l" -{ setTokLength (2); RETURN_TOK (SUB_ASSIGN); } +{ setTokLength (3); RETURN_TOK (LEFT_ASSIGN); } YY_BREAK case 116: YY_RULE_SETUP #line 385 "cscanner.l" -{ setTokLength (2); RETURN_TOK (MUL_ASSIGN); } +{ setTokLength (2); RETURN_TOK (ADD_ASSIGN); } YY_BREAK case 117: YY_RULE_SETUP #line 386 "cscanner.l" -{ setTokLength (2); RETURN_TOK (DIV_ASSIGN); } +{ setTokLength (2); RETURN_TOK (SUB_ASSIGN); } YY_BREAK case 118: YY_RULE_SETUP #line 387 "cscanner.l" -{ setTokLength (2); RETURN_TOK (MOD_ASSIGN); } +{ setTokLength (2); RETURN_TOK (MUL_ASSIGN); } YY_BREAK case 119: YY_RULE_SETUP #line 388 "cscanner.l" -{ setTokLength (2); RETURN_TOK (AND_ASSIGN); } +{ setTokLength (2); RETURN_TOK (DIV_ASSIGN); } YY_BREAK case 120: YY_RULE_SETUP #line 389 "cscanner.l" -{ setTokLength (2); RETURN_TOK (XOR_ASSIGN); } +{ setTokLength (2); RETURN_TOK (MOD_ASSIGN); } YY_BREAK case 121: YY_RULE_SETUP #line 390 "cscanner.l" -{ setTokLength (2); RETURN_TOK (OR_ASSIGN); } +{ setTokLength (2); RETURN_TOK (AND_ASSIGN); } YY_BREAK case 122: YY_RULE_SETUP #line 391 "cscanner.l" -{ setTokLength (2); RETURN_TOK (RIGHT_OP); } +{ setTokLength (2); RETURN_TOK (XOR_ASSIGN); } YY_BREAK case 123: YY_RULE_SETUP #line 392 "cscanner.l" -{ setTokLength (2); RETURN_TOK (LEFT_OP); } +{ setTokLength (2); RETURN_TOK (OR_ASSIGN); } YY_BREAK case 124: YY_RULE_SETUP #line 393 "cscanner.l" -{ setTokLength (2); RETURN_TOK (INC_OP); } +{ setTokLength (2); RETURN_TOK (RIGHT_OP); } YY_BREAK case 125: YY_RULE_SETUP #line 394 "cscanner.l" -{ setTokLength (2); RETURN_TOK (DEC_OP); } +{ setTokLength (2); RETURN_TOK (LEFT_OP); } YY_BREAK case 126: YY_RULE_SETUP #line 395 "cscanner.l" -{ setTokLength (2); RETURN_TOK (ARROW_OP); } +{ setTokLength (2); RETURN_TOK (INC_OP); } YY_BREAK case 127: YY_RULE_SETUP #line 396 "cscanner.l" -{ setTokLength (2); RETURN_TOK (AND_OP); } +{ setTokLength (2); RETURN_TOK (DEC_OP); } YY_BREAK case 128: YY_RULE_SETUP #line 397 "cscanner.l" -{ setTokLength (2); RETURN_TOK (OR_OP); } +{ setTokLength (2); RETURN_TOK (ARROW_OP); } YY_BREAK case 129: YY_RULE_SETUP #line 398 "cscanner.l" -{ setTokLength (2); RETURN_TOK (LE_OP); } +{ setTokLength (2); RETURN_TOK (AND_OP); } YY_BREAK case 130: YY_RULE_SETUP #line 399 "cscanner.l" -{ setTokLength (2); RETURN_TOK (GE_OP); } +{ setTokLength (2); RETURN_TOK (OR_OP); } YY_BREAK case 131: YY_RULE_SETUP #line 400 "cscanner.l" -{ setTokLength (2); RETURN_TOK (EQ_OP); } +{ setTokLength (2); RETURN_TOK (LE_OP); } YY_BREAK case 132: YY_RULE_SETUP #line 401 "cscanner.l" -{ setTokLength (2); RETURN_TOK (NE_OP); } +{ setTokLength (2); RETURN_TOK (GE_OP); } YY_BREAK case 133: YY_RULE_SETUP #line 402 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TSEMI); } +{ setTokLength (2); RETURN_TOK (EQ_OP); } YY_BREAK case 134: YY_RULE_SETUP #line 403 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TLBRACE); } +{ setTokLength (2); RETURN_TOK (NE_OP); } YY_BREAK case 135: YY_RULE_SETUP #line 404 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TRBRACE); } +{ setTokLength (1); RETURN_TOK (TSEMI); } YY_BREAK case 136: YY_RULE_SETUP #line 405 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TCOMMA); } +{ setTokLength (1); RETURN_TOK (TLBRACE); } YY_BREAK case 137: YY_RULE_SETUP #line 406 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TCOLON); } +{ setTokLength (1); RETURN_TOK (TRBRACE); } YY_BREAK case 138: YY_RULE_SETUP #line 407 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TASSIGN); } +{ setTokLength (1); RETURN_TOK (TCOMMA); } YY_BREAK case 139: YY_RULE_SETUP #line 408 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TLPAREN); } +{ setTokLength (1); RETURN_TOK (TCOLON); } YY_BREAK case 140: YY_RULE_SETUP #line 409 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TRPAREN); } +{ setTokLength (1); RETURN_TOK (TASSIGN); } YY_BREAK case 141: YY_RULE_SETUP #line 410 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TLSQBR); } +{ setTokLength (1); RETURN_TOK (TLPAREN); } YY_BREAK case 142: YY_RULE_SETUP #line 411 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TRSQBR); } +{ setTokLength (1); RETURN_TOK (TRPAREN); } YY_BREAK case 143: YY_RULE_SETUP #line 412 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TDOT); } +{ setTokLength (1); RETURN_TOK (TLSQBR); } YY_BREAK case 144: YY_RULE_SETUP #line 413 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TAMPERSAND); } +{ setTokLength (1); RETURN_TOK (TRSQBR); } YY_BREAK case 145: YY_RULE_SETUP #line 414 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TEXCL); } +{ setTokLength (1); RETURN_TOK (TDOT); } YY_BREAK case 146: YY_RULE_SETUP -#line 417 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TTILDE); } +#line 415 "cscanner.l" +{ setTokLength (1); RETURN_TOK (TAMPERSAND); } YY_BREAK case 147: YY_RULE_SETUP -#line 418 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TMINUS); } +#line 416 "cscanner.l" +{ setTokLength (1); RETURN_TOK (TEXCL); } YY_BREAK case 148: YY_RULE_SETUP #line 419 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TPLUS); } +{ setTokLength (1); RETURN_TOK (TTILDE); } YY_BREAK case 149: YY_RULE_SETUP #line 420 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TMULT); } +{ setTokLength (1); RETURN_TOK (TMINUS); } YY_BREAK case 150: YY_RULE_SETUP #line 421 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TDIV); } +{ setTokLength (1); RETURN_TOK (TPLUS); } YY_BREAK case 151: YY_RULE_SETUP #line 422 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TPERCENT); } +{ setTokLength (1); RETURN_TOK (TMULT); } YY_BREAK case 152: YY_RULE_SETUP #line 423 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TLT); } +{ setTokLength (1); RETURN_TOK (TDIV); } YY_BREAK case 153: YY_RULE_SETUP #line 424 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TGT); } +{ setTokLength (1); RETURN_TOK (TPERCENT); } YY_BREAK case 154: YY_RULE_SETUP #line 425 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TCIRC); } +{ setTokLength (1); RETURN_TOK (TLT); } YY_BREAK case 155: YY_RULE_SETUP #line 426 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TBAR); } +{ setTokLength (1); RETURN_TOK (TGT); } YY_BREAK case 156: YY_RULE_SETUP #line 427 "cscanner.l" -{ setTokLength (1); RETURN_TOK (TQUEST); } +{ setTokLength (1); RETURN_TOK (TCIRC); } YY_BREAK case 157: YY_RULE_SETUP +#line 428 "cscanner.l" +{ setTokLength (1); RETURN_TOK (TBAR); } + YY_BREAK +case 158: +YY_RULE_SETUP #line 429 "cscanner.l" +{ setTokLength (1); RETURN_TOK (TQUEST); } + YY_BREAK +case 159: +YY_RULE_SETUP +#line 431 "cscanner.l" { incColumn (); } YY_BREAK -case 158: +case 160: YY_RULE_SETUP -#line 430 "cscanner.l" +#line 432 "cscanner.l" { context_incLineno (); if (continueLine) { @@ -1980,9 +1995,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 161: YY_RULE_SETUP -#line 446 "cscanner.l" +#line 448 "cscanner.l" { setTokLength (6); if (processMacro ()) { @@ -2001,9 +2016,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 162: YY_RULE_SETUP -#line 463 "cscanner.l" +#line 465 "cscanner.l" { if (context_inHeader () || context_inFunction ()) { handleMacro (); @@ -2041,79 +2056,79 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 163: YY_RULE_SETUP -#line 499 "cscanner.l" +#line 501 "cscanner.l" { setTokLength (4); lldiagmsg (ctype_unparseTable ()); } YY_BREAK -case 162: +case 164: YY_RULE_SETUP -#line 500 "cscanner.l" +#line 502 "cscanner.l" { setTokLength (3); lldiagmsg (message ("%q: *** marker ***", fileloc_unparse (g_currentloc))); } YY_BREAK -case 163: -YY_RULE_SETUP -#line 503 "cscanner.l" -{ setTokLength (3); usymtab_printLocal (); } - YY_BREAK -case 164: -YY_RULE_SETUP -#line 504 "cscanner.l" -{ setTokLength (3); lldiagmsg (usymtab_unparseAliases ()); } - YY_BREAK case 165: YY_RULE_SETUP #line 505 "cscanner.l" -{ setTokLength (3); lldiagmsg (context_unparse ()); } +{ setTokLength (3); usymtab_printLocal (); } YY_BREAK case 166: YY_RULE_SETUP #line 506 "cscanner.l" -{ setTokLength (3); lldiagmsg (context_unparseClauses ()); } +{ setTokLength (3); lldiagmsg (usymtab_unparseAliases ()); } YY_BREAK case 167: YY_RULE_SETUP #line 507 "cscanner.l" -{ setTokLength (3); usymtab_printGuards (); } +{ setTokLength (3); lldiagmsg (context_unparse ()); } YY_BREAK case 168: YY_RULE_SETUP #line 508 "cscanner.l" -{ setTokLength (3); usymtab_printOut (); } +{ setTokLength (3); lldiagmsg (context_unparseClauses ()); } YY_BREAK case 169: YY_RULE_SETUP #line 509 "cscanner.l" -{ setTokLength (3); usymtab_printAll (); } +{ setTokLength (3); usymtab_printGuards (); } YY_BREAK case 170: YY_RULE_SETUP #line 510 "cscanner.l" -{ setTokLength (3); usymtab_printComplete (); } +{ setTokLength (3); usymtab_printOut (); } YY_BREAK case 171: YY_RULE_SETUP #line 511 "cscanner.l" -{ setTokLength (3); usymtab_printTypes (); } +{ setTokLength (3); usymtab_printAll (); } YY_BREAK case 172: YY_RULE_SETUP #line 512 "cscanner.l" -{ setTokLength (3); lldiagmsg (usymtab_unparseStack ()); } +{ setTokLength (3); usymtab_printComplete (); } YY_BREAK case 173: YY_RULE_SETUP #line 513 "cscanner.l" +{ setTokLength (3); usymtab_printTypes (); } + YY_BREAK +case 174: +YY_RULE_SETUP +#line 514 "cscanner.l" +{ setTokLength (3); lldiagmsg (usymtab_unparseStack ()); } + YY_BREAK +case 175: +YY_RULE_SETUP +#line 515 "cscanner.l" { setTokLength (3); lldiagmsg (message ("Can modify: %q", sRefSet_unparse (context_modList ()))); } YY_BREAK -case 174: +case 176: YY_RULE_SETUP -#line 517 "cscanner.l" +#line 519 "cscanner.l" { /* BEFORE_COMMENT_MARKER */ int tok; incColumn (); incColumn (); @@ -2124,22 +2139,22 @@ YY_RULE_SETUP } } YY_BREAK -case 175: +case 177: YY_RULE_SETUP -#line 526 "cscanner.l" +#line 528 "cscanner.l" { /* AFTER_COMMENT_MARKER */ setTokLength (2); inSpecPart = FALSE; RETURN_TOK (QENDMACRO); } YY_BREAK -case 176: +case 178: YY_RULE_SETUP -#line 530 "cscanner.l" +#line 532 "cscanner.l" { incColumn (); continueLine = TRUE; } YY_BREAK -case 177: +case 179: YY_RULE_SETUP -#line 531 "cscanner.l" +#line 533 "cscanner.l" { incColumn (); voptgenerror (FLG_SYNTAX, @@ -2148,12 +2163,12 @@ YY_RULE_SETUP g_currentloc); } YY_BREAK -case 178: +case 180: YY_RULE_SETUP -#line 538 "cscanner.l" +#line 540 "cscanner.l" ECHO; YY_BREAK -#line 2157 "lex.yy.c" +#line 2172 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2445,7 +2460,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 519 ) + if ( yy_current_state >= 529 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2480,11 +2495,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 519 ) + if ( yy_current_state >= 529 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 518); + yy_is_jam = (yy_current_state == 528); return yy_is_jam ? 0 : yy_current_state; } @@ -3039,7 +3054,7 @@ int main() return 0; } #endif -#line 538 "cscanner.l" +#line 540 "cscanner.l" struct skeyword @@ -3068,6 +3083,7 @@ struct skeyword s_parsetable[] = { { "pre", QPRECLAUSE } , { "post", QPOSTCLAUSE } , {"setBufferSize", QSETBUFFERSIZE}, + {"bufferConstraint", QBUFFERCONSTRAINT}, {"setStringLength", QSETSTRINGLENGTH}, {"testinRange", QTESTINRANGE}, { NULL, BADTOK } @@ -3114,7 +3130,10 @@ struct skeyword s_keytable[] = { { "relnull", QRELNULL } , { "nullterminated", QNULLTERMINATED }, { "setBufferSize", QSETBUFFERSIZE }, + { "bufferConstraint", QBUFFERCONSTRAINT }, { "testInRange", QTESTINRANGE}, + { "MaxSet", QMAXSET}, + { "MaxRead", QMAXREAD}, { "reldef", QRELDEF } , { "observer", QOBSERVER } , { "exits", QEXITS } , diff --git a/src/sRef.c b/src/sRef.c index cb6f31c..8a5bc80 100644 --- a/src/sRef.c +++ b/src/sRef.c @@ -2818,7 +2818,7 @@ sRef_unparseNoArgs (sRef s) case SK_UNKNOWN: return cstring_makeLiteral ("?"); case SK_PARAM: - /* llcontbug (message ("sRef_unparseNoArgs: bad case: %q", sRef_unparseDebug (s))); */ + llcontbug (message ("sRef_unparseNoArgs: bad case: %q", sRef_unparseDebug (s))); return (sRef_unparseDebug (s)); } BADEXIT; diff --git a/src/uentry.c b/src/uentry.c index 481d13a..d8c6a78 100644 --- a/src/uentry.c +++ b/src/uentry.c @@ -288,7 +288,8 @@ void printAnnots () } printf ("\n"); - printf ("Total Annotations: %d (%d decls, %d sharable, %d indirect)\n", alltotals, totdecls, totshdecls, totidecls); } + printf ("Total Annotations: %d (%d decls, %d sharable, %d indirect)\n", alltotals, totdecls, totshdecls, totidecls); +} extern void uentry_tallyAnnots (uentry u, ancontext kind) { @@ -557,6 +558,37 @@ static /*@observer@*/ cstring uentry_reDefDecl (uentry old, uentry unew) /*@*/ } } + +/*drl7x*/ +constraintList uentry_getFcnPreconditions (uentry ue) +{ + if (uentry_isValid (ue)) + { + { + if (uentry_isVariable (ue) && ctype_isFunction (uentry_getType (ue))) + { + uentry_makeVarFunction (ue); + } + + llassert (uentry_isFunction (ue)); + //llassert ((ue->info->fcn->preconditions)); + + if (!uentry_isFunction (ue)) + { + return constraintList_undefined; + } + + return ue->info->fcn->preconditions; + } + + } + + return constraintList_undefined; + +} + + + static /*@only@*/ fileloc setLocation (void) { fileloc fl = context_getSaveLocation (); @@ -1215,6 +1247,40 @@ uentry_setModifies (uentry ue, /*@owned@*/ sRefSet sr) } } +void +uentry_setPreconditions (uentry ue, /*@owned@*/ constraintList preconditions) +{ + if (sRef_modInFunction ()) + { + llparseerror + (message ("Precondition list not in function context. " + "A precondition list can only appear following the parameter list " + "in a function declaration or header.")); + + /*@-mustfree@*/ return; /*@=mustfree@*/ + } + + if (uentry_isValid (ue)) + { + { + if (uentry_isVariable (ue) && ctype_isFunction (uentry_getType (ue))) + { + uentry_makeVarFunction (ue); + } + + llassertfatal (uentry_isFunction (ue)); + // llassert (sRefSet_isUndefined (ue->info->fcn->mods)); + + ue->info->fcn->preconditions = preconditions; + } + + } + else + { + // + } +} + /* ** requires: new and old are functions */ @@ -2824,6 +2890,10 @@ void uentry_makeVarFunction (uentry ue) ue->info->fcn->specclauses = NULL; ue->info->fcn->defparams = uentryList_undefined; + /*drl*/ + ue->info->fcn->preconditions = constraintList_undefined; + /*end */ + if (ctype_isFunction (ue->utype)) { ue->sref = sRef_makeType (ctype_returnValue (ue->utype)); -- 2.45.2