00001 #line 1 "moment_parser.rl" 00002 #include <stdio.h> 00003 #include <stdlib.h> 00004 #include <string.h> 00005 #include "time_utils.h" 00006 #include "moment_parser.h" 00007 00008 static GQuark this_quark() 00009 { 00010 return g_quark_from_static_string("moment_parser"); 00011 } 00012 00013 #define this_domain (this_quark()) 00014 00015 enum { 00016 code_parse_error = 1, 00017 code_incomplete_input 00018 }; 00019 00020 #define SET_SEEN_DATETIME_FROM_TIME_T(tt_expr) \ 00021 { \ 00022 time_t tt = (tt_expr); \ 00023 gmtime_r(&tt, &seen); \ 00024 } 00025 00026 #line 97 "moment_parser.rl" 00027 00028 00029 00030 #line 31 "moment_parser.c" 00031 static const char _fsm_actions[] = { 00032 0, 1, 0, 1, 1, 1, 2, 1, 00033 3, 1, 4, 1, 5, 1, 6, 1, 00034 7, 1, 8, 1, 9, 1, 10, 1, 00035 11, 1, 12, 1, 13, 1, 14, 1, 00036 15, 1, 16, 1, 17, 1, 18, 1, 00037 19, 1, 20, 1, 21, 1, 22, 1, 00038 23, 1, 24, 1, 25, 1, 26, 1, 00039 28, 1, 29, 1, 30, 2, 0, 27, 00040 2, 1, 27, 2, 2, 27, 2, 3, 00041 27, 2, 4, 27, 2, 5, 27, 2, 00042 6, 27, 2, 19, 21, 2, 19, 22, 00043 2, 19, 23, 2, 19, 28, 2, 19, 00044 29, 2, 19, 30, 2, 20, 31, 2, 00045 21, 31, 2, 22, 31, 2, 23, 19, 00046 2, 24, 31, 2, 25, 31, 2, 26, 00047 31, 2, 30, 31, 2, 32, 31, 3, 00048 0, 27, 31, 3, 1, 27, 31, 3, 00049 2, 27, 31, 3, 3, 27, 31, 3, 00050 4, 27, 31, 3, 5, 27, 31, 3, 00051 6, 27, 31, 3, 19, 21, 31, 3, 00052 19, 22, 31, 3, 19, 30, 31, 3, 00053 20, 33, 31, 3, 20, 34, 31, 3, 00054 21, 33, 31, 3, 21, 34, 31, 3, 00055 22, 33, 31, 3, 22, 34, 31, 3, 00056 23, 19, 20, 4, 19, 21, 33, 31, 00057 4, 19, 21, 34, 31, 4, 19, 22, 00058 33, 31, 4, 19, 22, 34, 31, 4, 00059 23, 19, 20, 31, 5, 23, 19, 20, 00060 33, 31, 5, 23, 19, 20, 34, 31 00061 00062 }; 00063 00064 static const short _fsm_key_offsets[] = { 00065 0, 0, 13, 25, 36, 41, 49, 53, 00066 58, 59, 60, 63, 76, 87, 92, 100, 00067 108, 115, 120, 127, 134, 139, 145, 151, 00068 155, 157, 160, 167, 175, 176, 181, 184, 00069 187, 188, 190, 191, 193, 194, 195, 196, 00070 198, 199, 200, 201, 202, 203, 205, 206, 00071 207, 208, 209, 210, 211, 212, 214, 215, 00072 216, 217, 218, 219, 221, 222, 224, 225, 00073 226, 227, 228, 230, 232, 233, 235, 236, 00074 237, 239, 241, 242, 243, 244, 245, 246, 00075 248, 249, 250, 251, 252, 253, 254, 255, 00076 257, 258, 259, 260, 261, 262, 263, 265, 00077 266, 267, 268, 269, 270, 271, 277, 281, 00078 282, 283, 284, 285, 286, 287, 290, 294, 00079 295, 296, 297, 300, 304, 305, 306, 307, 00080 308, 311, 315, 316, 317, 318, 322, 328, 00081 331, 332, 333, 336, 342, 349, 355, 359, 00082 360, 363, 372, 383, 389, 395, 399, 402, 00083 403, 405, 406, 408, 409, 410, 411, 413, 00084 414, 415, 416, 417, 418, 420, 421, 422, 00085 423, 424, 425, 426, 427, 429, 430, 431, 00086 432, 433, 434, 436, 437, 439, 440, 441, 00087 442, 443, 445, 447, 448, 450, 451, 452, 00088 454, 456, 457, 458, 459, 460, 461, 463, 00089 464, 465, 466, 467, 468, 469, 470, 472, 00090 473, 474, 475, 476, 477, 478, 480, 481, 00091 482, 483, 484, 485, 486, 489, 492, 495, 00092 496, 497, 498, 501, 505, 506, 507, 508, 00093 509, 512, 516, 517, 518, 519, 520, 521, 00094 522, 523, 527, 528, 529, 530, 533, 541, 00095 542, 543, 548, 549, 550, 554, 555, 556, 00096 561, 562, 563, 567, 569, 570, 575, 576, 00097 577, 578, 579, 583, 584, 589, 590, 591, 00098 595, 597, 598, 603, 604, 605, 606, 607, 00099 611, 612, 617, 618, 619, 620, 624, 625, 00100 626, 631, 632, 633, 634, 635, 636, 640, 00101 642, 643, 646, 650, 652, 653, 654, 658, 00102 659, 660, 661, 662, 663, 667, 671, 677, 00103 683, 687, 692, 697, 700, 701, 702, 705, 00104 709, 710, 711, 712, 713, 716, 720, 721, 00105 722, 723, 724, 725, 726, 727, 730, 731, 00106 732, 733, 734, 737, 747, 748, 749, 753, 00107 757, 758, 761, 768, 776, 783, 788, 795, 00108 802, 807, 813, 819, 823, 824, 825, 828, 00109 829, 830, 834, 835, 836, 839, 841, 842, 00110 846, 847, 848, 849, 850, 853, 854, 858, 00111 859, 860, 863, 865, 866, 870, 871, 872, 00112 873, 874, 877, 878, 882, 883, 884, 885, 00113 888, 889, 890, 894, 895, 896, 897, 898, 00114 899, 902, 903, 904, 907, 911, 912, 915, 00115 922, 930, 937, 942, 949, 956, 961, 967, 00116 973, 977, 978, 979, 980, 983, 991, 992, 00117 993, 997, 998, 999, 1002, 1003, 1004, 1008, 00118 1009, 1010, 1013, 1015, 1016, 1020, 1021, 1022, 00119 1023, 1024, 1027, 1028, 1032, 1033, 1034, 1037, 00120 1039, 1040, 1044, 1045, 1046, 1047, 1048, 1051, 00121 1052, 1056, 1057, 1058, 1059, 1062, 1063, 1064, 00122 1068, 1069, 1070, 1071, 1072, 1073, 1076, 1077, 00123 1080, 1089, 1092, 1095, 1097, 1098, 1101, 1105, 00124 1107, 1108, 1109, 1112, 1113, 1114, 1115, 1116, 00125 1117, 1120, 1127, 1131, 1136, 1143, 1150, 1155, 00126 1161, 1167, 1171, 1172, 1175, 1182, 1187, 1190, 00127 1193, 1194, 1196, 1197, 1199, 1200, 1201, 1202, 00128 1204, 1205, 1206, 1207, 1208, 1209, 1211, 1212, 00129 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1221, 00130 1222, 1223, 1224, 1225, 1227, 1228, 1230, 1231, 00131 1232, 1233, 1234, 1236, 1238, 1239, 1241, 1242, 00132 1243, 1245, 1247, 1248, 1249, 1250, 1251, 1252, 00133 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 00134 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 00135 1272, 1273, 1274, 1275, 1276, 1277, 1283, 1287, 00136 1288, 1289, 1290, 1291, 1292, 1293, 1296, 1300, 00137 1301, 1302, 1303, 1306, 1310, 1311, 1312, 1313, 00138 1314, 1317, 1321, 1322, 1323, 1324, 1328, 1334, 00139 1337, 1338, 1339, 1342, 1348, 1355, 1361, 1365, 00140 1366, 1369, 1378, 1389, 1395, 1401, 1405, 1408, 00141 1409, 1411, 1412, 1414, 1415, 1416, 1417, 1419, 00142 1420, 1421, 1422, 1423, 1424, 1426, 1427, 1428, 00143 1429, 1430, 1431, 1432, 1433, 1435, 1436, 1437, 00144 1438, 1439, 1440, 1442, 1443, 1445, 1446, 1447, 00145 1448, 1449, 1451, 1453, 1454, 1456, 1457, 1458, 00146 1460, 1462, 1463, 1464, 1465, 1466, 1467, 1469, 00147 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1478, 00148 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1487, 00149 1488, 1489, 1490, 1491, 1492, 1495, 1498, 1501, 00150 1502, 1503, 1504, 1507, 1511, 1512, 1513, 1514, 00151 1515, 1518, 1522, 1523, 1524, 1525, 1526, 1527, 00152 1528, 1529, 1533, 1534, 1535, 1536, 1539, 1547, 00153 1548, 1549, 1554, 1555, 1556, 1560, 1561, 1562, 00154 1567, 1568, 1569, 1573, 1575, 1576, 1581, 1582, 00155 1583, 1584, 1585, 1589, 1590, 1595, 1596, 1597, 00156 1601, 1603, 1604, 1609, 1610, 1611, 1612, 1613, 00157 1617, 1618, 1623, 1624, 1625, 1626, 1630, 1631, 00158 1632, 1637, 1638, 1639, 1640, 1641, 1642, 1646, 00159 1648, 1649, 1652, 1656, 1658, 1659, 1660, 1664, 00160 1665, 1666, 1667, 1668, 1669, 1673, 1677, 1683, 00161 1689, 1693, 1698, 1703, 1706, 1707, 1708, 1711, 00162 1715, 1716, 1717, 1718, 1719, 1722, 1726, 1727, 00163 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 00164 1738, 1739, 1740, 1743, 1753, 1754, 1755, 1759, 00165 1763, 1764, 1767, 1774, 1781, 1786, 1793, 1800, 00166 1805, 1811, 1817, 1821, 1822, 1823, 1826, 1827, 00167 1828, 1832, 1833, 1834, 1837, 1839, 1840, 1844, 00168 1845, 1846, 1847, 1848, 1851, 1852, 1856, 1857, 00169 1858, 1861, 1863, 1864, 1868, 1869, 1870, 1871, 00170 1872, 1875, 1876, 1880, 1881, 1882, 1883, 1886, 00171 1887, 1888, 1892, 1893, 1894, 1895, 1896, 1897, 00172 1900, 1901, 1902, 1905, 1909, 1910, 1913, 1920, 00173 1927, 1932, 1939, 1946, 1951, 1957, 1963, 1967, 00174 1968, 1969, 1970, 1973, 1981, 1982, 1983, 1987, 00175 1988, 1989, 1992, 1993, 1994, 1998, 1999, 2000, 00176 2003, 2005, 2006, 2010, 2011, 2012, 2013, 2014, 00177 2017, 2018, 2022, 2023, 2024, 2027, 2029, 2030, 00178 2034, 2035, 2036, 2037, 2038, 2041, 2042, 2046, 00179 2047, 2048, 2049, 2052, 2053, 2054, 2058, 2059, 00180 2060, 2061, 2062, 2063, 2066, 2067, 2070, 2079, 00181 2082, 2085, 2087, 2088, 2091, 2095, 2097, 2098, 00182 2099, 2102, 2103, 2104, 2105, 2106, 2107, 2110, 00183 2111, 2113, 2114, 2115, 2119 00184 }; 00185 00186 static const char _fsm_trans_keys[] = { 00187 32, 40, 45, 97, 100, 101, 110, 111, 00188 116, 9, 13, 48, 57, 32, 45, 97, 00189 100, 101, 110, 111, 116, 9, 13, 48, 00190 57, 45, 65, 68, 70, 74, 77, 78, 00191 79, 83, 48, 57, 32, 9, 13, 48, 00192 57, 32, 41, 58, 97, 9, 13, 48, 00193 57, 0, 32, 9, 13, 0, 32, 97, 00194 9, 13, 110, 100, 32, 9, 13, 32, 00195 40, 45, 97, 100, 101, 110, 111, 116, 00196 9, 13, 48, 57, 45, 65, 68, 70, 00197 74, 77, 78, 79, 83, 48, 57, 32, 00198 9, 13, 48, 57, 0, 32, 58, 97, 00199 9, 13, 48, 57, 0, 32, 58, 97, 00200 9, 13, 48, 57, 0, 32, 58, 9, 00201 13, 48, 57, 0, 32, 58, 9, 13, 00202 0, 32, 58, 9, 13, 48, 57, 0, 00203 32, 58, 9, 13, 48, 57, 0, 32, 00204 58, 9, 13, 0, 32, 9, 13, 48, 00205 57, 0, 32, 9, 13, 48, 57, 0, 00206 32, 9, 13, 110, 116, 32, 9, 13, 00207 0, 32, 58, 9, 13, 48, 57, 0, 00208 32, 58, 97, 9, 13, 48, 57, 116, 00209 32, 9, 13, 48, 57, 32, 9, 13, 00210 45, 48, 57, 45, 112, 117, 114, 45, 00211 105, 108, 45, 103, 45, 117, 115, 116, 00212 45, 101, 99, 45, 101, 109, 98, 101, 00213 114, 45, 101, 98, 45, 114, 117, 97, 00214 114, 121, 45, 97, 117, 110, 45, 117, 00215 97, 114, 121, 45, 108, 110, 45, 121, 00216 45, 45, 101, 45, 97, 114, 121, 45, 00217 99, 104, 45, 45, 111, 118, 45, 101, 00218 109, 98, 101, 114, 45, 99, 116, 45, 00219 111, 98, 101, 114, 45, 101, 112, 45, 00220 116, 101, 109, 98, 101, 114, 45, 32, 00221 45, 9, 13, 48, 57, 32, 109, 9, 00222 13, 105, 110, 117, 116, 101, 115, 32, 00223 9, 13, 32, 112, 9, 13, 97, 115, 00224 116, 32, 9, 13, 32, 101, 9, 13, 00225 118, 101, 114, 121, 32, 9, 13, 32, 00226 104, 9, 13, 111, 117, 114, 0, 32, 00227 9, 13, 32, 45, 9, 13, 48, 57, 00228 45, 48, 57, 45, 116, 32, 9, 13, 00229 32, 58, 9, 13, 48, 57, 32, 58, 00230 111, 9, 13, 48, 57, 32, 58, 9, 00231 13, 48, 57, 32, 111, 9, 13, 110, 00232 32, 9, 13, 32, 45, 100, 110, 116, 00233 9, 13, 48, 57, 45, 65, 68, 70, 00234 74, 77, 78, 79, 83, 48, 57, 0, 00235 32, 9, 13, 48, 57, 0, 32, 9, 00236 13, 48, 57, 0, 32, 9, 13, 45, 00237 48, 57, 45, 112, 117, 114, 45, 105, 00238 108, 45, 103, 45, 117, 115, 116, 45, 00239 101, 99, 45, 101, 109, 98, 101, 114, 00240 45, 101, 98, 45, 114, 117, 97, 114, 00241 121, 45, 97, 117, 110, 45, 117, 97, 00242 114, 121, 45, 108, 110, 45, 121, 45, 00243 45, 101, 45, 97, 114, 121, 45, 99, 00244 104, 45, 45, 111, 118, 45, 101, 109, 00245 98, 101, 114, 45, 99, 116, 45, 111, 00246 98, 101, 114, 45, 101, 112, 45, 116, 00247 101, 109, 98, 101, 114, 45, 45, 48, 00248 57, 45, 48, 57, 45, 48, 57, 45, 00249 97, 121, 32, 9, 13, 32, 97, 9, 00250 13, 102, 116, 101, 114, 32, 9, 13, 00251 32, 116, 9, 13, 111, 109, 111, 114, 00252 114, 111, 119, 0, 32, 9, 13, 101, 00253 120, 116, 32, 9, 13, 32, 70, 77, 00254 83, 84, 87, 9, 13, 114, 105, 0, 00255 32, 100, 9, 13, 97, 121, 0, 32, 00256 9, 13, 111, 110, 0, 32, 100, 9, 00257 13, 97, 121, 0, 32, 9, 13, 97, 00258 117, 116, 0, 32, 117, 9, 13, 114, 00259 100, 97, 121, 0, 32, 9, 13, 110, 00260 0, 32, 100, 9, 13, 97, 121, 0, 00261 32, 9, 13, 104, 117, 117, 0, 32, 00262 114, 9, 13, 115, 100, 97, 121, 0, 00263 32, 9, 13, 101, 0, 32, 115, 9, 00264 13, 100, 97, 121, 0, 32, 9, 13, 00265 101, 100, 0, 32, 110, 9, 13, 101, 00266 115, 100, 97, 121, 0, 32, 9, 13, 00267 104, 111, 101, 32, 9, 13, 32, 100, 00268 9, 13, 100, 109, 97, 121, 0, 32, 00269 9, 13, 111, 114, 114, 111, 119, 0, 00270 32, 9, 13, 32, 58, 9, 13, 32, 00271 58, 9, 13, 48, 57, 32, 58, 9, 00272 13, 48, 57, 32, 58, 9, 13, 32, 00273 9, 13, 48, 57, 32, 9, 13, 48, 00274 57, 32, 9, 13, 97, 121, 32, 9, 00275 13, 32, 97, 9, 13, 102, 116, 101, 00276 114, 32, 9, 13, 32, 116, 9, 13, 00277 111, 109, 111, 114, 114, 111, 119, 32, 00278 9, 13, 118, 101, 114, 121, 32, 9, 00279 13, 32, 70, 77, 83, 84, 87, 100, 00280 104, 9, 13, 114, 105, 32, 100, 9, 00281 13, 32, 97, 9, 13, 116, 32, 9, 00282 13, 0, 32, 58, 9, 13, 48, 57, 00283 0, 32, 58, 97, 9, 13, 48, 57, 00284 0, 32, 58, 9, 13, 48, 57, 0, 00285 32, 58, 9, 13, 0, 32, 58, 9, 00286 13, 48, 57, 0, 32, 58, 9, 13, 00287 48, 57, 0, 32, 58, 9, 13, 0, 00288 32, 9, 13, 48, 57, 0, 32, 9, 00289 13, 48, 57, 0, 32, 9, 13, 97, 00290 121, 32, 9, 13, 111, 110, 32, 100, 00291 9, 13, 97, 121, 32, 9, 13, 97, 00292 117, 116, 32, 117, 9, 13, 114, 100, 00293 97, 121, 32, 9, 13, 110, 32, 100, 00294 9, 13, 97, 121, 32, 9, 13, 104, 00295 117, 117, 32, 114, 9, 13, 115, 100, 00296 97, 121, 32, 9, 13, 101, 32, 115, 00297 9, 13, 100, 97, 121, 32, 9, 13, 00298 101, 100, 32, 110, 9, 13, 101, 115, 00299 100, 97, 121, 32, 9, 13, 97, 121, 00300 32, 9, 13, 32, 97, 9, 13, 116, 00301 32, 9, 13, 0, 32, 58, 9, 13, 00302 48, 57, 0, 32, 58, 97, 9, 13, 00303 48, 57, 0, 32, 58, 9, 13, 48, 00304 57, 0, 32, 58, 9, 13, 0, 32, 00305 58, 9, 13, 48, 57, 0, 32, 58, 00306 9, 13, 48, 57, 0, 32, 58, 9, 00307 13, 0, 32, 9, 13, 48, 57, 0, 00308 32, 9, 13, 48, 57, 0, 32, 9, 00309 13, 101, 120, 116, 32, 9, 13, 32, 00310 70, 77, 83, 84, 87, 9, 13, 114, 00311 105, 32, 100, 9, 13, 97, 121, 32, 00312 9, 13, 111, 110, 32, 100, 9, 13, 00313 97, 121, 32, 9, 13, 97, 117, 116, 00314 32, 117, 9, 13, 114, 100, 97, 121, 00315 32, 9, 13, 110, 32, 100, 9, 13, 00316 97, 121, 32, 9, 13, 104, 117, 117, 00317 32, 114, 9, 13, 115, 100, 97, 121, 00318 32, 9, 13, 101, 32, 115, 9, 13, 00319 100, 97, 121, 32, 9, 13, 101, 100, 00320 32, 110, 9, 13, 101, 115, 100, 97, 00321 121, 32, 9, 13, 110, 32, 9, 13, 00322 32, 45, 100, 110, 116, 9, 13, 48, 00323 57, 45, 48, 57, 45, 48, 57, 104, 00324 111, 101, 32, 9, 13, 32, 100, 9, 00325 13, 100, 109, 97, 121, 32, 9, 13, 00326 111, 114, 114, 111, 119, 32, 9, 13, 00327 32, 41, 58, 9, 13, 48, 57, 32, 00328 41, 9, 13, 32, 41, 58, 9, 13, 00329 32, 41, 58, 9, 13, 48, 57, 32, 00330 41, 58, 9, 13, 48, 57, 32, 41, 00331 58, 9, 13, 32, 41, 9, 13, 48, 00332 57, 32, 41, 9, 13, 48, 57, 32, 00333 41, 9, 13, 116, 32, 9, 13, 32, 00334 41, 58, 9, 13, 48, 57, 32, 9, 00335 13, 48, 57, 32, 9, 13, 45, 48, 00336 57, 45, 112, 117, 114, 45, 105, 108, 00337 45, 103, 45, 117, 115, 116, 45, 101, 00338 99, 45, 101, 109, 98, 101, 114, 45, 00339 101, 98, 45, 114, 117, 97, 114, 121, 00340 45, 97, 117, 110, 45, 117, 97, 114, 00341 121, 45, 108, 110, 45, 121, 45, 45, 00342 101, 45, 97, 114, 121, 45, 99, 104, 00343 45, 45, 111, 118, 45, 101, 109, 98, 00344 101, 114, 45, 99, 116, 45, 111, 98, 00345 101, 114, 45, 101, 112, 45, 116, 101, 00346 109, 98, 101, 114, 45, 32, 45, 9, 00347 13, 48, 57, 32, 109, 9, 13, 105, 00348 110, 117, 116, 101, 115, 32, 9, 13, 00349 32, 112, 9, 13, 97, 115, 116, 32, 00350 9, 13, 32, 101, 9, 13, 118, 101, 00351 114, 121, 32, 9, 13, 32, 104, 9, 00352 13, 111, 117, 114, 32, 41, 9, 13, 00353 32, 45, 9, 13, 48, 57, 45, 48, 00354 57, 45, 116, 32, 9, 13, 32, 58, 00355 9, 13, 48, 57, 32, 58, 111, 9, 00356 13, 48, 57, 32, 58, 9, 13, 48, 00357 57, 32, 111, 9, 13, 110, 32, 9, 00358 13, 32, 45, 100, 110, 116, 9, 13, 00359 48, 57, 45, 65, 68, 70, 74, 77, 00360 78, 79, 83, 48, 57, 32, 41, 9, 00361 13, 48, 57, 32, 41, 9, 13, 48, 00362 57, 32, 41, 9, 13, 45, 48, 57, 00363 45, 112, 117, 114, 45, 105, 108, 45, 00364 103, 45, 117, 115, 116, 45, 101, 99, 00365 45, 101, 109, 98, 101, 114, 45, 101, 00366 98, 45, 114, 117, 97, 114, 121, 45, 00367 97, 117, 110, 45, 117, 97, 114, 121, 00368 45, 108, 110, 45, 121, 45, 45, 101, 00369 45, 97, 114, 121, 45, 99, 104, 45, 00370 45, 111, 118, 45, 101, 109, 98, 101, 00371 114, 45, 99, 116, 45, 111, 98, 101, 00372 114, 45, 101, 112, 45, 116, 101, 109, 00373 98, 101, 114, 45, 45, 48, 57, 45, 00374 48, 57, 45, 48, 57, 45, 97, 121, 00375 32, 9, 13, 32, 97, 9, 13, 102, 00376 116, 101, 114, 32, 9, 13, 32, 116, 00377 9, 13, 111, 109, 111, 114, 114, 111, 00378 119, 32, 41, 9, 13, 101, 120, 116, 00379 32, 9, 13, 32, 70, 77, 83, 84, 00380 87, 9, 13, 114, 105, 32, 41, 100, 00381 9, 13, 97, 121, 32, 41, 9, 13, 00382 111, 110, 32, 41, 100, 9, 13, 97, 00383 121, 32, 41, 9, 13, 97, 117, 116, 00384 32, 41, 117, 9, 13, 114, 100, 97, 00385 121, 32, 41, 9, 13, 110, 32, 41, 00386 100, 9, 13, 97, 121, 32, 41, 9, 00387 13, 104, 117, 117, 32, 41, 114, 9, 00388 13, 115, 100, 97, 121, 32, 41, 9, 00389 13, 101, 32, 41, 115, 9, 13, 100, 00390 97, 121, 32, 41, 9, 13, 101, 100, 00391 32, 41, 110, 9, 13, 101, 115, 100, 00392 97, 121, 32, 41, 9, 13, 104, 111, 00393 101, 32, 9, 13, 32, 100, 9, 13, 00394 100, 109, 97, 121, 32, 41, 9, 13, 00395 111, 114, 114, 111, 119, 32, 41, 9, 00396 13, 32, 58, 9, 13, 32, 58, 9, 00397 13, 48, 57, 32, 58, 9, 13, 48, 00398 57, 32, 58, 9, 13, 32, 9, 13, 00399 48, 57, 32, 9, 13, 48, 57, 32, 00400 9, 13, 97, 121, 32, 9, 13, 32, 00401 97, 9, 13, 102, 116, 101, 114, 32, 00402 9, 13, 32, 116, 9, 13, 111, 109, 00403 111, 114, 114, 111, 119, 32, 9, 13, 00404 118, 101, 114, 121, 32, 9, 13, 32, 00405 70, 77, 83, 84, 87, 100, 104, 9, 00406 13, 114, 105, 32, 100, 9, 13, 32, 00407 97, 9, 13, 116, 32, 9, 13, 32, 00408 41, 58, 9, 13, 48, 57, 32, 41, 00409 58, 9, 13, 48, 57, 32, 41, 58, 00410 9, 13, 32, 41, 58, 9, 13, 48, 00411 57, 32, 41, 58, 9, 13, 48, 57, 00412 32, 41, 58, 9, 13, 32, 41, 9, 00413 13, 48, 57, 32, 41, 9, 13, 48, 00414 57, 32, 41, 9, 13, 97, 121, 32, 00415 9, 13, 111, 110, 32, 100, 9, 13, 00416 97, 121, 32, 9, 13, 97, 117, 116, 00417 32, 117, 9, 13, 114, 100, 97, 121, 00418 32, 9, 13, 110, 32, 100, 9, 13, 00419 97, 121, 32, 9, 13, 104, 117, 117, 00420 32, 114, 9, 13, 115, 100, 97, 121, 00421 32, 9, 13, 101, 32, 115, 9, 13, 00422 100, 97, 121, 32, 9, 13, 101, 100, 00423 32, 110, 9, 13, 101, 115, 100, 97, 00424 121, 32, 9, 13, 97, 121, 32, 9, 00425 13, 32, 97, 9, 13, 116, 32, 9, 00426 13, 32, 41, 58, 9, 13, 48, 57, 00427 32, 41, 58, 9, 13, 48, 57, 32, 00428 41, 58, 9, 13, 32, 41, 58, 9, 00429 13, 48, 57, 32, 41, 58, 9, 13, 00430 48, 57, 32, 41, 58, 9, 13, 32, 00431 41, 9, 13, 48, 57, 32, 41, 9, 00432 13, 48, 57, 32, 41, 9, 13, 101, 00433 120, 116, 32, 9, 13, 32, 70, 77, 00434 83, 84, 87, 9, 13, 114, 105, 32, 00435 100, 9, 13, 97, 121, 32, 9, 13, 00436 111, 110, 32, 100, 9, 13, 97, 121, 00437 32, 9, 13, 97, 117, 116, 32, 117, 00438 9, 13, 114, 100, 97, 121, 32, 9, 00439 13, 110, 32, 100, 9, 13, 97, 121, 00440 32, 9, 13, 104, 117, 117, 32, 114, 00441 9, 13, 115, 100, 97, 121, 32, 9, 00442 13, 101, 32, 115, 9, 13, 100, 97, 00443 121, 32, 9, 13, 101, 100, 32, 110, 00444 9, 13, 101, 115, 100, 97, 121, 32, 00445 9, 13, 110, 32, 9, 13, 32, 45, 00446 100, 110, 116, 9, 13, 48, 57, 45, 00447 48, 57, 45, 48, 57, 104, 111, 101, 00448 32, 9, 13, 32, 100, 9, 13, 100, 00449 109, 97, 121, 32, 9, 13, 111, 114, 00450 114, 111, 119, 32, 9, 13, 101, 118, 00451 120, 101, 114, 0, 32, 9, 13, 0 00452 }; 00453 00454 static const char _fsm_single_lengths[] = { 00455 0, 9, 8, 9, 1, 4, 2, 3, 00456 1, 1, 1, 9, 9, 1, 4, 4, 00457 3, 3, 3, 3, 3, 2, 2, 2, 00458 2, 1, 3, 4, 1, 1, 1, 1, 00459 1, 2, 1, 2, 1, 1, 1, 2, 00460 1, 1, 1, 1, 1, 2, 1, 1, 00461 1, 1, 1, 1, 1, 2, 1, 1, 00462 1, 1, 1, 2, 1, 2, 1, 1, 00463 1, 1, 2, 2, 1, 2, 1, 1, 00464 2, 2, 1, 1, 1, 1, 1, 2, 00465 1, 1, 1, 1, 1, 1, 1, 2, 00466 1, 1, 1, 1, 1, 1, 2, 1, 00467 1, 1, 1, 1, 1, 2, 2, 1, 00468 1, 1, 1, 1, 1, 1, 2, 1, 00469 1, 1, 1, 2, 1, 1, 1, 1, 00470 1, 2, 1, 1, 1, 2, 2, 1, 00471 1, 1, 1, 2, 3, 2, 2, 1, 00472 1, 5, 9, 2, 2, 2, 1, 1, 00473 2, 1, 2, 1, 1, 1, 2, 1, 00474 1, 1, 1, 1, 2, 1, 1, 1, 00475 1, 1, 1, 1, 2, 1, 1, 1, 00476 1, 1, 2, 1, 2, 1, 1, 1, 00477 1, 2, 2, 1, 2, 1, 1, 2, 00478 2, 1, 1, 1, 1, 1, 2, 1, 00479 1, 1, 1, 1, 1, 1, 2, 1, 00480 1, 1, 1, 1, 1, 2, 1, 1, 00481 1, 1, 1, 1, 1, 1, 1, 1, 00482 1, 1, 1, 2, 1, 1, 1, 1, 00483 1, 2, 1, 1, 1, 1, 1, 1, 00484 1, 2, 1, 1, 1, 1, 6, 1, 00485 1, 3, 1, 1, 2, 1, 1, 3, 00486 1, 1, 2, 2, 1, 3, 1, 1, 00487 1, 1, 2, 1, 3, 1, 1, 2, 00488 2, 1, 3, 1, 1, 1, 1, 2, 00489 1, 3, 1, 1, 1, 2, 1, 1, 00490 3, 1, 1, 1, 1, 1, 2, 2, 00491 1, 1, 2, 2, 1, 1, 2, 1, 00492 1, 1, 1, 1, 2, 2, 2, 2, 00493 2, 1, 1, 1, 1, 1, 1, 2, 00494 1, 1, 1, 1, 1, 2, 1, 1, 00495 1, 1, 1, 1, 1, 1, 1, 1, 00496 1, 1, 1, 8, 1, 1, 2, 2, 00497 1, 1, 3, 4, 3, 3, 3, 3, 00498 3, 2, 2, 2, 1, 1, 1, 1, 00499 1, 2, 1, 1, 1, 2, 1, 2, 00500 1, 1, 1, 1, 1, 1, 2, 1, 00501 1, 1, 2, 1, 2, 1, 1, 1, 00502 1, 1, 1, 2, 1, 1, 1, 1, 00503 1, 1, 2, 1, 1, 1, 1, 1, 00504 1, 1, 1, 1, 2, 1, 1, 3, 00505 4, 3, 3, 3, 3, 3, 2, 2, 00506 2, 1, 1, 1, 1, 6, 1, 1, 00507 2, 1, 1, 1, 1, 1, 2, 1, 00508 1, 1, 2, 1, 2, 1, 1, 1, 00509 1, 1, 1, 2, 1, 1, 1, 2, 00510 1, 2, 1, 1, 1, 1, 1, 1, 00511 2, 1, 1, 1, 1, 1, 1, 2, 00512 1, 1, 1, 1, 1, 1, 1, 1, 00513 5, 1, 1, 2, 1, 1, 2, 2, 00514 1, 1, 1, 1, 1, 1, 1, 1, 00515 1, 3, 2, 3, 3, 3, 3, 2, 00516 2, 2, 1, 1, 3, 1, 1, 1, 00517 1, 2, 1, 2, 1, 1, 1, 2, 00518 1, 1, 1, 1, 1, 2, 1, 1, 00519 1, 1, 1, 1, 1, 2, 1, 1, 00520 1, 1, 1, 2, 1, 2, 1, 1, 00521 1, 1, 2, 2, 1, 2, 1, 1, 00522 2, 2, 1, 1, 1, 1, 1, 2, 00523 1, 1, 1, 1, 1, 1, 1, 2, 00524 1, 1, 1, 1, 1, 1, 2, 1, 00525 1, 1, 1, 1, 1, 2, 2, 1, 00526 1, 1, 1, 1, 1, 1, 2, 1, 00527 1, 1, 1, 2, 1, 1, 1, 1, 00528 1, 2, 1, 1, 1, 2, 2, 1, 00529 1, 1, 1, 2, 3, 2, 2, 1, 00530 1, 5, 9, 2, 2, 2, 1, 1, 00531 2, 1, 2, 1, 1, 1, 2, 1, 00532 1, 1, 1, 1, 2, 1, 1, 1, 00533 1, 1, 1, 1, 2, 1, 1, 1, 00534 1, 1, 2, 1, 2, 1, 1, 1, 00535 1, 2, 2, 1, 2, 1, 1, 2, 00536 2, 1, 1, 1, 1, 1, 2, 1, 00537 1, 1, 1, 1, 1, 1, 2, 1, 00538 1, 1, 1, 1, 1, 2, 1, 1, 00539 1, 1, 1, 1, 1, 1, 1, 1, 00540 1, 1, 1, 2, 1, 1, 1, 1, 00541 1, 2, 1, 1, 1, 1, 1, 1, 00542 1, 2, 1, 1, 1, 1, 6, 1, 00543 1, 3, 1, 1, 2, 1, 1, 3, 00544 1, 1, 2, 2, 1, 3, 1, 1, 00545 1, 1, 2, 1, 3, 1, 1, 2, 00546 2, 1, 3, 1, 1, 1, 1, 2, 00547 1, 3, 1, 1, 1, 2, 1, 1, 00548 3, 1, 1, 1, 1, 1, 2, 2, 00549 1, 1, 2, 2, 1, 1, 2, 1, 00550 1, 1, 1, 1, 2, 2, 2, 2, 00551 2, 1, 1, 1, 1, 1, 1, 2, 00552 1, 1, 1, 1, 1, 2, 1, 1, 00553 1, 1, 1, 1, 1, 1, 1, 1, 00554 1, 1, 1, 8, 1, 1, 2, 2, 00555 1, 1, 3, 3, 3, 3, 3, 3, 00556 2, 2, 2, 1, 1, 1, 1, 1, 00557 2, 1, 1, 1, 2, 1, 2, 1, 00558 1, 1, 1, 1, 1, 2, 1, 1, 00559 1, 2, 1, 2, 1, 1, 1, 1, 00560 1, 1, 2, 1, 1, 1, 1, 1, 00561 1, 2, 1, 1, 1, 1, 1, 1, 00562 1, 1, 1, 2, 1, 1, 3, 3, 00563 3, 3, 3, 3, 2, 2, 2, 1, 00564 1, 1, 1, 6, 1, 1, 2, 1, 00565 1, 1, 1, 1, 2, 1, 1, 1, 00566 2, 1, 2, 1, 1, 1, 1, 1, 00567 1, 2, 1, 1, 1, 2, 1, 2, 00568 1, 1, 1, 1, 1, 1, 2, 1, 00569 1, 1, 1, 1, 1, 2, 1, 1, 00570 1, 1, 1, 1, 1, 1, 5, 1, 00571 1, 2, 1, 1, 2, 2, 1, 1, 00572 1, 1, 1, 1, 1, 1, 1, 1, 00573 2, 1, 1, 2, 0 00574 }; 00575 00576 static const char _fsm_range_lengths[] = { 00577 0, 2, 2, 1, 2, 2, 1, 1, 00578 0, 0, 1, 2, 1, 2, 2, 2, 00579 2, 1, 2, 2, 1, 2, 2, 1, 00580 0, 1, 2, 2, 0, 2, 1, 1, 00581 0, 0, 0, 0, 0, 0, 0, 0, 00582 0, 0, 0, 0, 0, 0, 0, 0, 00583 0, 0, 0, 0, 0, 0, 0, 0, 00584 0, 0, 0, 0, 0, 0, 0, 0, 00585 0, 0, 0, 0, 0, 0, 0, 0, 00586 0, 0, 0, 0, 0, 0, 0, 0, 00587 0, 0, 0, 0, 0, 0, 0, 0, 00588 0, 0, 0, 0, 0, 0, 0, 0, 00589 0, 0, 0, 0, 0, 2, 1, 0, 00590 0, 0, 0, 0, 0, 1, 1, 0, 00591 0, 0, 1, 1, 0, 0, 0, 0, 00592 1, 1, 0, 0, 0, 1, 2, 1, 00593 0, 0, 1, 2, 2, 2, 1, 0, 00594 1, 2, 1, 2, 2, 1, 1, 0, 00595 0, 0, 0, 0, 0, 0, 0, 0, 00596 0, 0, 0, 0, 0, 0, 0, 0, 00597 0, 0, 0, 0, 0, 0, 0, 0, 00598 0, 0, 0, 0, 0, 0, 0, 0, 00599 0, 0, 0, 0, 0, 0, 0, 0, 00600 0, 0, 0, 0, 0, 0, 0, 0, 00601 0, 0, 0, 0, 0, 0, 0, 0, 00602 0, 0, 0, 0, 0, 0, 0, 0, 00603 0, 0, 0, 0, 1, 1, 1, 0, 00604 0, 0, 1, 1, 0, 0, 0, 0, 00605 1, 1, 0, 0, 0, 0, 0, 0, 00606 0, 1, 0, 0, 0, 1, 1, 0, 00607 0, 1, 0, 0, 1, 0, 0, 1, 00608 0, 0, 1, 0, 0, 1, 0, 0, 00609 0, 0, 1, 0, 1, 0, 0, 1, 00610 0, 0, 1, 0, 0, 0, 0, 1, 00611 0, 1, 0, 0, 0, 1, 0, 0, 00612 1, 0, 0, 0, 0, 0, 1, 0, 00613 0, 1, 1, 0, 0, 0, 1, 0, 00614 0, 0, 0, 0, 1, 1, 2, 2, 00615 1, 2, 2, 1, 0, 0, 1, 1, 00616 0, 0, 0, 0, 1, 1, 0, 0, 00617 0, 0, 0, 0, 0, 1, 0, 0, 00618 0, 0, 1, 1, 0, 0, 1, 1, 00619 0, 1, 2, 2, 2, 1, 2, 2, 00620 1, 2, 2, 1, 0, 0, 1, 0, 00621 0, 1, 0, 0, 1, 0, 0, 1, 00622 0, 0, 0, 0, 1, 0, 1, 0, 00623 0, 1, 0, 0, 1, 0, 0, 0, 00624 0, 1, 0, 1, 0, 0, 0, 1, 00625 0, 0, 1, 0, 0, 0, 0, 0, 00626 1, 0, 0, 1, 1, 0, 1, 2, 00627 2, 2, 1, 2, 2, 1, 2, 2, 00628 1, 0, 0, 0, 1, 1, 0, 0, 00629 1, 0, 0, 1, 0, 0, 1, 0, 00630 0, 1, 0, 0, 1, 0, 0, 0, 00631 0, 1, 0, 1, 0, 0, 1, 0, 00632 0, 1, 0, 0, 0, 0, 1, 0, 00633 1, 0, 0, 0, 1, 0, 0, 1, 00634 0, 0, 0, 0, 0, 1, 0, 1, 00635 2, 1, 1, 0, 0, 1, 1, 0, 00636 0, 0, 1, 0, 0, 0, 0, 0, 00637 1, 2, 1, 1, 2, 2, 1, 2, 00638 2, 1, 0, 1, 2, 2, 1, 1, 00639 0, 0, 0, 0, 0, 0, 0, 0, 00640 0, 0, 0, 0, 0, 0, 0, 0, 00641 0, 0, 0, 0, 0, 0, 0, 0, 00642 0, 0, 0, 0, 0, 0, 0, 0, 00643 0, 0, 0, 0, 0, 0, 0, 0, 00644 0, 0, 0, 0, 0, 0, 0, 0, 00645 0, 0, 0, 0, 0, 0, 0, 0, 00646 0, 0, 0, 0, 0, 0, 0, 0, 00647 0, 0, 0, 0, 0, 2, 1, 0, 00648 0, 0, 0, 0, 0, 1, 1, 0, 00649 0, 0, 1, 1, 0, 0, 0, 0, 00650 1, 1, 0, 0, 0, 1, 2, 1, 00651 0, 0, 1, 2, 2, 2, 1, 0, 00652 1, 2, 1, 2, 2, 1, 1, 0, 00653 0, 0, 0, 0, 0, 0, 0, 0, 00654 0, 0, 0, 0, 0, 0, 0, 0, 00655 0, 0, 0, 0, 0, 0, 0, 0, 00656 0, 0, 0, 0, 0, 0, 0, 0, 00657 0, 0, 0, 0, 0, 0, 0, 0, 00658 0, 0, 0, 0, 0, 0, 0, 0, 00659 0, 0, 0, 0, 0, 0, 0, 0, 00660 0, 0, 0, 0, 0, 0, 0, 0, 00661 0, 0, 0, 0, 1, 1, 1, 0, 00662 0, 0, 1, 1, 0, 0, 0, 0, 00663 1, 1, 0, 0, 0, 0, 0, 0, 00664 0, 1, 0, 0, 0, 1, 1, 0, 00665 0, 1, 0, 0, 1, 0, 0, 1, 00666 0, 0, 1, 0, 0, 1, 0, 0, 00667 0, 0, 1, 0, 1, 0, 0, 1, 00668 0, 0, 1, 0, 0, 0, 0, 1, 00669 0, 1, 0, 0, 0, 1, 0, 0, 00670 1, 0, 0, 0, 0, 0, 1, 0, 00671 0, 1, 1, 0, 0, 0, 1, 0, 00672 0, 0, 0, 0, 1, 1, 2, 2, 00673 1, 2, 2, 1, 0, 0, 1, 1, 00674 0, 0, 0, 0, 1, 1, 0, 0, 00675 0, 0, 0, 0, 0, 1, 0, 0, 00676 0, 0, 1, 1, 0, 0, 1, 1, 00677 0, 1, 2, 2, 1, 2, 2, 1, 00678 2, 2, 1, 0, 0, 1, 0, 0, 00679 1, 0, 0, 1, 0, 0, 1, 0, 00680 0, 0, 0, 1, 0, 1, 0, 0, 00681 1, 0, 0, 1, 0, 0, 0, 0, 00682 1, 0, 1, 0, 0, 0, 1, 0, 00683 0, 1, 0, 0, 0, 0, 0, 1, 00684 0, 0, 1, 1, 0, 1, 2, 2, 00685 1, 2, 2, 1, 2, 2, 1, 0, 00686 0, 0, 1, 1, 0, 0, 1, 0, 00687 0, 1, 0, 0, 1, 0, 0, 1, 00688 0, 0, 1, 0, 0, 0, 0, 1, 00689 0, 1, 0, 0, 1, 0, 0, 1, 00690 0, 0, 0, 0, 1, 0, 1, 0, 00691 0, 0, 1, 0, 0, 1, 0, 0, 00692 0, 0, 0, 1, 0, 1, 2, 1, 00693 1, 0, 0, 1, 1, 0, 0, 0, 00694 1, 0, 0, 0, 0, 0, 1, 0, 00695 0, 0, 0, 1, 0 00696 }; 00697 00698 static const short _fsm_index_offsets[] = { 00699 0, 0, 12, 23, 34, 38, 45, 49, 00700 54, 56, 58, 61, 73, 84, 88, 95, 00701 102, 108, 113, 119, 125, 130, 135, 140, 00702 144, 147, 150, 156, 163, 165, 169, 172, 00703 175, 177, 180, 182, 185, 187, 189, 191, 00704 194, 196, 198, 200, 202, 204, 207, 209, 00705 211, 213, 215, 217, 219, 221, 224, 226, 00706 228, 230, 232, 234, 237, 239, 242, 244, 00707 246, 248, 250, 253, 256, 258, 261, 263, 00708 265, 268, 271, 273, 275, 277, 279, 281, 00709 284, 286, 288, 290, 292, 294, 296, 298, 00710 301, 303, 305, 307, 309, 311, 313, 316, 00711 318, 320, 322, 324, 326, 328, 333, 337, 00712 339, 341, 343, 345, 347, 349, 352, 356, 00713 358, 360, 362, 365, 369, 371, 373, 375, 00714 377, 380, 384, 386, 388, 390, 394, 399, 00715 402, 404, 406, 409, 414, 420, 425, 429, 00716 431, 434, 442, 453, 458, 463, 467, 470, 00717 472, 475, 477, 480, 482, 484, 486, 489, 00718 491, 493, 495, 497, 499, 502, 504, 506, 00719 508, 510, 512, 514, 516, 519, 521, 523, 00720 525, 527, 529, 532, 534, 537, 539, 541, 00721 543, 545, 548, 551, 553, 556, 558, 560, 00722 563, 566, 568, 570, 572, 574, 576, 579, 00723 581, 583, 585, 587, 589, 591, 593, 596, 00724 598, 600, 602, 604, 606, 608, 611, 613, 00725 615, 617, 619, 621, 623, 626, 629, 632, 00726 634, 636, 638, 641, 645, 647, 649, 651, 00727 653, 656, 660, 662, 664, 666, 668, 670, 00728 672, 674, 678, 680, 682, 684, 687, 695, 00729 697, 699, 704, 706, 708, 712, 714, 716, 00730 721, 723, 725, 729, 732, 734, 739, 741, 00731 743, 745, 747, 751, 753, 758, 760, 762, 00732 766, 769, 771, 776, 778, 780, 782, 784, 00733 788, 790, 795, 797, 799, 801, 805, 807, 00734 809, 814, 816, 818, 820, 822, 824, 828, 00735 831, 833, 836, 840, 843, 845, 847, 851, 00736 853, 855, 857, 859, 861, 865, 869, 874, 00737 879, 883, 887, 891, 894, 896, 898, 901, 00738 905, 907, 909, 911, 913, 916, 920, 922, 00739 924, 926, 928, 930, 932, 934, 937, 939, 00740 941, 943, 945, 948, 958, 960, 962, 966, 00741 970, 972, 975, 981, 988, 994, 999, 1005, 00742 1011, 1016, 1021, 1026, 1030, 1032, 1034, 1037, 00743 1039, 1041, 1045, 1047, 1049, 1052, 1055, 1057, 00744 1061, 1063, 1065, 1067, 1069, 1072, 1074, 1078, 00745 1080, 1082, 1085, 1088, 1090, 1094, 1096, 1098, 00746 1100, 1102, 1105, 1107, 1111, 1113, 1115, 1117, 00747 1120, 1122, 1124, 1128, 1130, 1132, 1134, 1136, 00748 1138, 1141, 1143, 1145, 1148, 1152, 1154, 1157, 00749 1163, 1170, 1176, 1181, 1187, 1193, 1198, 1203, 00750 1208, 1212, 1214, 1216, 1218, 1221, 1229, 1231, 00751 1233, 1237, 1239, 1241, 1244, 1246, 1248, 1252, 00752 1254, 1256, 1259, 1262, 1264, 1268, 1270, 1272, 00753 1274, 1276, 1279, 1281, 1285, 1287, 1289, 1292, 00754 1295, 1297, 1301, 1303, 1305, 1307, 1309, 1312, 00755 1314, 1318, 1320, 1322, 1324, 1327, 1329, 1331, 00756 1335, 1337, 1339, 1341, 1343, 1345, 1348, 1350, 00757 1353, 1361, 1364, 1367, 1370, 1372, 1375, 1379, 00758 1382, 1384, 1386, 1389, 1391, 1393, 1395, 1397, 00759 1399, 1402, 1408, 1412, 1417, 1423, 1429, 1434, 00760 1439, 1444, 1448, 1450, 1453, 1459, 1463, 1466, 00761 1469, 1471, 1474, 1476, 1479, 1481, 1483, 1485, 00762 1488, 1490, 1492, 1494, 1496, 1498, 1501, 1503, 00763 1505, 1507, 1509, 1511, 1513, 1515, 1518, 1520, 00764 1522, 1524, 1526, 1528, 1531, 1533, 1536, 1538, 00765 1540, 1542, 1544, 1547, 1550, 1552, 1555, 1557, 00766 1559, 1562, 1565, 1567, 1569, 1571, 1573, 1575, 00767 1578, 1580, 1582, 1584, 1586, 1588, 1590, 1592, 00768 1595, 1597, 1599, 1601, 1603, 1605, 1607, 1610, 00769 1612, 1614, 1616, 1618, 1620, 1622, 1627, 1631, 00770 1633, 1635, 1637, 1639, 1641, 1643, 1646, 1650, 00771 1652, 1654, 1656, 1659, 1663, 1665, 1667, 1669, 00772 1671, 1674, 1678, 1680, 1682, 1684, 1688, 1693, 00773 1696, 1698, 1700, 1703, 1708, 1714, 1719, 1723, 00774 1725, 1728, 1736, 1747, 1752, 1757, 1761, 1764, 00775 1766, 1769, 1771, 1774, 1776, 1778, 1780, 1783, 00776 1785, 1787, 1789, 1791, 1793, 1796, 1798, 1800, 00777 1802, 1804, 1806, 1808, 1810, 1813, 1815, 1817, 00778 1819, 1821, 1823, 1826, 1828, 1831, 1833, 1835, 00779 1837, 1839, 1842, 1845, 1847, 1850, 1852, 1854, 00780 1857, 1860, 1862, 1864, 1866, 1868, 1870, 1873, 00781 1875, 1877, 1879, 1881, 1883, 1885, 1887, 1890, 00782 1892, 1894, 1896, 1898, 1900, 1902, 1905, 1907, 00783 1909, 1911, 1913, 1915, 1917, 1920, 1923, 1926, 00784 1928, 1930, 1932, 1935, 1939, 1941, 1943, 1945, 00785 1947, 1950, 1954, 1956, 1958, 1960, 1962, 1964, 00786 1966, 1968, 1972, 1974, 1976, 1978, 1981, 1989, 00787 1991, 1993, 1998, 2000, 2002, 2006, 2008, 2010, 00788 2015, 2017, 2019, 2023, 2026, 2028, 2033, 2035, 00789 2037, 2039, 2041, 2045, 2047, 2052, 2054, 2056, 00790 2060, 2063, 2065, 2070, 2072, 2074, 2076, 2078, 00791 2082, 2084, 2089, 2091, 2093, 2095, 2099, 2101, 00792 2103, 2108, 2110, 2112, 2114, 2116, 2118, 2122, 00793 2125, 2127, 2130, 2134, 2137, 2139, 2141, 2145, 00794 2147, 2149, 2151, 2153, 2155, 2159, 2163, 2168, 00795 2173, 2177, 2181, 2185, 2188, 2190, 2192, 2195, 00796 2199, 2201, 2203, 2205, 2207, 2210, 2214, 2216, 00797 2218, 2220, 2222, 2224, 2226, 2228, 2231, 2233, 00798 2235, 2237, 2239, 2242, 2252, 2254, 2256, 2260, 00799 2264, 2266, 2269, 2275, 2281, 2286, 2292, 2298, 00800 2303, 2308, 2313, 2317, 2319, 2321, 2324, 2326, 00801 2328, 2332, 2334, 2336, 2339, 2342, 2344, 2348, 00802 2350, 2352, 2354, 2356, 2359, 2361, 2365, 2367, 00803 2369, 2372, 2375, 2377, 2381, 2383, 2385, 2387, 00804 2389, 2392, 2394, 2398, 2400, 2402, 2404, 2407, 00805 2409, 2411, 2415, 2417, 2419, 2421, 2423, 2425, 00806 2428, 2430, 2432, 2435, 2439, 2441, 2444, 2450, 00807 2456, 2461, 2467, 2473, 2478, 2483, 2488, 2492, 00808 2494, 2496, 2498, 2501, 2509, 2511, 2513, 2517, 00809 2519, 2521, 2524, 2526, 2528, 2532, 2534, 2536, 00810 2539, 2542, 2544, 2548, 2550, 2552, 2554, 2556, 00811 2559, 2561, 2565, 2567, 2569, 2572, 2575, 2577, 00812 2581, 2583, 2585, 2587, 2589, 2592, 2594, 2598, 00813 2600, 2602, 2604, 2607, 2609, 2611, 2615, 2617, 00814 2619, 2621, 2623, 2625, 2628, 2630, 2633, 2641, 00815 2644, 2647, 2650, 2652, 2655, 2659, 2662, 2664, 00816 2666, 2669, 2671, 2673, 2675, 2677, 2679, 2682, 00817 2684, 2687, 2689, 2691, 2695 00818 }; 00819 00820 static const short _fsm_trans_targs_wi[] = { 00821 1, 2, 12, 129, 308, 326, 943, 462, 00822 467, 1, 101, 0, 2, 3, 593, 772, 00823 790, 871, 924, 929, 2, 565, 0, 4, 00824 497, 507, 515, 523, 535, 541, 549, 556, 00825 495, 0, 5, 5, 493, 0, 5, 6, 00826 484, 490, 5, 481, 0, 948, 7, 7, 00827 0, 948, 7, 8, 7, 0, 9, 0, 00828 10, 0, 11, 11, 0, 11, 2, 12, 00829 129, 308, 326, 409, 462, 467, 11, 101, 00830 0, 13, 33, 43, 51, 59, 71, 77, 00831 85, 92, 31, 0, 14, 14, 29, 0, 00832 948, 15, 18, 28, 15, 16, 0, 948, 00833 15, 18, 24, 15, 16, 0, 948, 7, 00834 18, 7, 17, 0, 948, 7, 18, 7, 00835 0, 948, 7, 21, 7, 19, 0, 948, 00836 7, 21, 7, 20, 0, 948, 7, 21, 00837 7, 0, 948, 7, 7, 22, 0, 948, 00838 7, 7, 23, 0, 948, 7, 7, 0, 00839 9, 25, 0, 26, 26, 0, 948, 27, 00840 18, 27, 16, 0, 948, 27, 18, 8, 00841 27, 16, 0, 25, 0, 14, 14, 30, 00842 0, 14, 14, 0, 13, 32, 0, 13, 00843 0, 34, 38, 0, 35, 0, 13, 36, 00844 0, 37, 0, 13, 0, 39, 0, 13, 00845 40, 0, 41, 0, 42, 0, 13, 0, 00846 44, 0, 45, 0, 13, 46, 0, 47, 00847 0, 48, 0, 49, 0, 50, 0, 13, 00848 0, 52, 0, 53, 0, 13, 54, 0, 00849 55, 0, 56, 0, 57, 0, 58, 0, 00850 13, 0, 60, 66, 0, 61, 0, 13, 00851 62, 0, 63, 0, 64, 0, 65, 0, 00852 13, 0, 67, 69, 0, 13, 68, 0, 00853 13, 0, 13, 70, 0, 13, 0, 72, 00854 0, 73, 76, 0, 13, 74, 0, 75, 00855 0, 13, 0, 13, 0, 78, 0, 79, 00856 0, 13, 80, 0, 81, 0, 82, 0, 00857 83, 0, 84, 0, 13, 0, 86, 0, 00858 87, 0, 13, 88, 0, 89, 0, 90, 00859 0, 91, 0, 13, 0, 93, 0, 94, 00860 0, 13, 95, 0, 96, 0, 97, 0, 00861 98, 0, 99, 0, 100, 0, 13, 0, 00862 102, 12, 102, 126, 0, 102, 103, 102, 00863 0, 104, 0, 105, 0, 106, 0, 107, 00864 0, 108, 0, 109, 0, 110, 110, 0, 00865 110, 111, 110, 0, 112, 0, 113, 0, 00866 114, 0, 115, 115, 0, 115, 116, 115, 00867 0, 117, 0, 118, 0, 119, 0, 120, 00868 0, 121, 121, 0, 121, 122, 121, 0, 00869 123, 0, 124, 0, 125, 0, 948, 7, 00870 7, 0, 102, 12, 102, 127, 0, 12, 00871 128, 0, 12, 0, 130, 0, 131, 131, 00872 0, 132, 302, 132, 133, 0, 132, 302, 00873 135, 132, 133, 0, 134, 302, 134, 301, 00874 0, 134, 135, 134, 0, 136, 0, 137, 00875 137, 0, 137, 138, 216, 234, 287, 137, 00876 212, 0, 139, 144, 154, 162, 170, 182, 00877 188, 196, 203, 142, 0, 948, 7, 7, 00878 140, 0, 948, 7, 7, 141, 0, 948, 00879 7, 7, 0, 139, 143, 0, 139, 0, 00880 145, 149, 0, 146, 0, 139, 147, 0, 00881 148, 0, 139, 0, 150, 0, 139, 151, 00882 0, 152, 0, 153, 0, 139, 0, 155, 00883 0, 156, 0, 139, 157, 0, 158, 0, 00884 159, 0, 160, 0, 161, 0, 139, 0, 00885 163, 0, 164, 0, 139, 165, 0, 166, 00886 0, 167, 0, 168, 0, 169, 0, 139, 00887 0, 171, 177, 0, 172, 0, 139, 173, 00888 0, 174, 0, 175, 0, 176, 0, 139, 00889 0, 178, 180, 0, 139, 179, 0, 139, 00890 0, 139, 181, 0, 139, 0, 183, 0, 00891 184, 187, 0, 139, 185, 0, 186, 0, 00892 139, 0, 139, 0, 189, 0, 190, 0, 00893 139, 191, 0, 192, 0, 193, 0, 194, 00894 0, 195, 0, 139, 0, 197, 0, 198, 00895 0, 139, 199, 0, 200, 0, 201, 0, 00896 202, 0, 139, 0, 204, 0, 205, 0, 00897 139, 206, 0, 207, 0, 208, 0, 209, 00898 0, 210, 0, 211, 0, 139, 0, 138, 00899 213, 0, 138, 214, 0, 138, 215, 0, 00900 138, 0, 217, 0, 218, 0, 219, 219, 00901 0, 219, 220, 219, 0, 221, 0, 222, 00902 0, 223, 0, 224, 0, 225, 225, 0, 00903 225, 226, 225, 0, 227, 0, 228, 0, 00904 229, 0, 230, 0, 231, 0, 232, 0, 00905 233, 0, 948, 7, 7, 0, 235, 0, 00906 236, 0, 237, 0, 238, 238, 0, 238, 00907 239, 245, 251, 264, 278, 238, 0, 240, 00908 0, 241, 0, 948, 7, 242, 7, 0, 00909 243, 0, 244, 0, 948, 7, 7, 0, 00910 246, 0, 247, 0, 948, 7, 248, 7, 00911 0, 249, 0, 250, 0, 948, 7, 7, 00912 0, 252, 259, 0, 253, 0, 948, 7, 00913 254, 7, 0, 255, 0, 256, 0, 257, 00914 0, 258, 0, 948, 7, 7, 0, 260, 00915 0, 948, 7, 261, 7, 0, 262, 0, 00916 263, 0, 948, 7, 7, 0, 265, 272, 00917 0, 266, 0, 948, 7, 267, 7, 0, 00918 268, 0, 269, 0, 270, 0, 271, 0, 00919 948, 7, 7, 0, 273, 0, 948, 7, 00920 274, 7, 0, 275, 0, 276, 0, 277, 00921 0, 948, 7, 7, 0, 279, 0, 280, 00922 0, 948, 7, 281, 7, 0, 282, 0, 00923 283, 0, 284, 0, 285, 0, 286, 0, 00924 948, 7, 7, 0, 288, 291, 0, 289, 00925 0, 290, 290, 0, 290, 216, 290, 0, 00926 292, 295, 0, 293, 0, 294, 0, 948, 00927 7, 7, 0, 296, 0, 297, 0, 298, 00928 0, 299, 0, 300, 0, 948, 7, 7, 00929 0, 134, 302, 134, 0, 134, 305, 134, 00930 303, 0, 134, 305, 134, 304, 0, 134, 00931 305, 134, 0, 134, 134, 306, 0, 134, 00932 134, 307, 0, 134, 134, 0, 309, 0, 00933 310, 0, 311, 311, 0, 311, 312, 311, 00934 0, 313, 0, 314, 0, 315, 0, 316, 00935 0, 317, 317, 0, 317, 318, 317, 0, 00936 319, 0, 320, 0, 321, 0, 322, 0, 00937 323, 0, 324, 0, 325, 0, 14, 14, 00938 0, 327, 0, 328, 0, 329, 0, 330, 00939 0, 331, 331, 0, 331, 332, 351, 357, 00940 370, 384, 393, 122, 331, 0, 333, 0, 00941 334, 0, 335, 348, 335, 0, 335, 336, 00942 335, 0, 337, 0, 338, 338, 0, 948, 00943 339, 342, 339, 340, 0, 948, 339, 342, 00944 8, 339, 340, 0, 948, 7, 342, 7, 00945 341, 0, 948, 7, 342, 7, 0, 948, 00946 7, 345, 7, 343, 0, 948, 7, 345, 00947 7, 344, 0, 948, 7, 345, 7, 0, 00948 948, 7, 7, 346, 0, 948, 7, 7, 00949 347, 0, 948, 7, 7, 0, 349, 0, 00950 350, 0, 335, 335, 0, 352, 0, 353, 00951 0, 335, 354, 335, 0, 355, 0, 356, 00952 0, 335, 335, 0, 358, 365, 0, 359, 00953 0, 335, 360, 335, 0, 361, 0, 362, 00954 0, 363, 0, 364, 0, 335, 335, 0, 00955 366, 0, 335, 367, 335, 0, 368, 0, 00956 369, 0, 335, 335, 0, 371, 378, 0, 00957 372, 0, 335, 373, 335, 0, 374, 0, 00958 375, 0, 376, 0, 377, 0, 335, 335, 00959 0, 379, 0, 335, 380, 335, 0, 381, 00960 0, 382, 0, 383, 0, 335, 335, 0, 00961 385, 0, 386, 0, 335, 387, 335, 0, 00962 388, 0, 389, 0, 390, 0, 391, 0, 00963 392, 0, 335, 335, 0, 394, 0, 395, 00964 0, 396, 396, 0, 396, 397, 396, 0, 00965 398, 0, 399, 399, 0, 948, 400, 403, 00966 400, 401, 0, 948, 400, 403, 8, 400, 00967 401, 0, 948, 7, 403, 7, 402, 0, 00968 948, 7, 403, 7, 0, 948, 7, 406, 00969 7, 404, 0, 948, 7, 406, 7, 405, 00970 0, 948, 7, 406, 7, 0, 948, 7, 00971 7, 407, 0, 948, 7, 7, 408, 0, 00972 948, 7, 7, 0, 410, 0, 411, 0, 00973 412, 0, 413, 413, 0, 413, 414, 420, 00974 426, 439, 453, 413, 0, 415, 0, 416, 00975 0, 14, 417, 14, 0, 418, 0, 419, 00976 0, 14, 14, 0, 421, 0, 422, 0, 00977 14, 423, 14, 0, 424, 0, 425, 0, 00978 14, 14, 0, 427, 434, 0, 428, 0, 00979 14, 429, 14, 0, 430, 0, 431, 0, 00980 432, 0, 433, 0, 14, 14, 0, 435, 00981 0, 14, 436, 14, 0, 437, 0, 438, 00982 0, 14, 14, 0, 440, 447, 0, 441, 00983 0, 14, 442, 14, 0, 443, 0, 444, 00984 0, 445, 0, 446, 0, 14, 14, 0, 00985 448, 0, 14, 449, 14, 0, 450, 0, 00986 451, 0, 452, 0, 14, 14, 0, 454, 00987 0, 455, 0, 14, 456, 14, 0, 457, 00988 0, 458, 0, 459, 0, 460, 0, 461, 00989 0, 14, 14, 0, 463, 0, 464, 464, 00990 0, 464, 12, 308, 409, 467, 464, 465, 00991 0, 12, 466, 0, 12, 127, 0, 468, 00992 471, 0, 469, 0, 470, 470, 0, 470, 00993 308, 470, 0, 472, 475, 0, 473, 0, 00994 474, 0, 14, 14, 0, 476, 0, 477, 00995 0, 478, 0, 479, 0, 480, 0, 14, 00996 14, 0, 482, 6, 484, 482, 483, 0, 00997 482, 6, 482, 0, 482, 6, 484, 482, 00998 0, 482, 6, 487, 482, 485, 0, 482, 00999 6, 487, 482, 486, 0, 482, 6, 487, 01000 482, 0, 482, 6, 482, 488, 0, 482, 01001 6, 482, 489, 0, 482, 6, 482, 0, 01002 491, 0, 492, 492, 0, 492, 6, 484, 01003 492, 481, 0, 5, 5, 494, 0, 5, 01004 5, 0, 4, 496, 0, 4, 0, 498, 01005 502, 0, 499, 0, 4, 500, 0, 501, 01006 0, 4, 0, 503, 0, 4, 504, 0, 01007 505, 0, 506, 0, 4, 0, 508, 0, 01008 509, 0, 4, 510, 0, 511, 0, 512, 01009 0, 513, 0, 514, 0, 4, 0, 516, 01010 0, 517, 0, 4, 518, 0, 519, 0, 01011 520, 0, 521, 0, 522, 0, 4, 0, 01012 524, 530, 0, 525, 0, 4, 526, 0, 01013 527, 0, 528, 0, 529, 0, 4, 0, 01014 531, 533, 0, 4, 532, 0, 4, 0, 01015 4, 534, 0, 4, 0, 536, 0, 537, 01016 540, 0, 4, 538, 0, 539, 0, 4, 01017 0, 4, 0, 542, 0, 543, 0, 4, 01018 544, 0, 545, 0, 546, 0, 547, 0, 01019 548, 0, 4, 0, 550, 0, 551, 0, 01020 4, 552, 0, 553, 0, 554, 0, 555, 01021 0, 4, 0, 557, 0, 558, 0, 4, 01022 559, 0, 560, 0, 561, 0, 562, 0, 01023 563, 0, 564, 0, 4, 0, 566, 3, 01024 566, 590, 0, 566, 567, 566, 0, 568, 01025 0, 569, 0, 570, 0, 571, 0, 572, 01026 0, 573, 0, 574, 574, 0, 574, 575, 01027 574, 0, 576, 0, 577, 0, 578, 0, 01028 579, 579, 0, 579, 580, 579, 0, 581, 01029 0, 582, 0, 583, 0, 584, 0, 585, 01030 585, 0, 585, 586, 585, 0, 587, 0, 01031 588, 0, 589, 0, 482, 6, 482, 0, 01032 566, 3, 566, 591, 0, 3, 592, 0, 01033 3, 0, 594, 0, 595, 595, 0, 596, 01034 766, 596, 597, 0, 596, 766, 599, 596, 01035 597, 0, 598, 766, 598, 765, 0, 598, 01036 599, 598, 0, 600, 0, 601, 601, 0, 01037 601, 602, 680, 698, 751, 601, 676, 0, 01038 603, 608, 618, 626, 634, 646, 652, 660, 01039 667, 606, 0, 482, 6, 482, 604, 0, 01040 482, 6, 482, 605, 0, 482, 6, 482, 01041 0, 603, 607, 0, 603, 0, 609, 613, 01042 0, 610, 0, 603, 611, 0, 612, 0, 01043 603, 0, 614, 0, 603, 615, 0, 616, 01044 0, 617, 0, 603, 0, 619, 0, 620, 01045 0, 603, 621, 0, 622, 0, 623, 0, 01046 624, 0, 625, 0, 603, 0, 627, 0, 01047 628, 0, 603, 629, 0, 630, 0, 631, 01048 0, 632, 0, 633, 0, 603, 0, 635, 01049 641, 0, 636, 0, 603, 637, 0, 638, 01050 0, 639, 0, 640, 0, 603, 0, 642, 01051 644, 0, 603, 643, 0, 603, 0, 603, 01052 645, 0, 603, 0, 647, 0, 648, 651, 01053 0, 603, 649, 0, 650, 0, 603, 0, 01054 603, 0, 653, 0, 654, 0, 603, 655, 01055 0, 656, 0, 657, 0, 658, 0, 659, 01056 0, 603, 0, 661, 0, 662, 0, 603, 01057 663, 0, 664, 0, 665, 0, 666, 0, 01058 603, 0, 668, 0, 669, 0, 603, 670, 01059 0, 671, 0, 672, 0, 673, 0, 674, 01060 0, 675, 0, 603, 0, 602, 677, 0, 01061 602, 678, 0, 602, 679, 0, 602, 0, 01062 681, 0, 682, 0, 683, 683, 0, 683, 01063 684, 683, 0, 685, 0, 686, 0, 687, 01064 0, 688, 0, 689, 689, 0, 689, 690, 01065 689, 0, 691, 0, 692, 0, 693, 0, 01066 694, 0, 695, 0, 696, 0, 697, 0, 01067 482, 6, 482, 0, 699, 0, 700, 0, 01068 701, 0, 702, 702, 0, 702, 703, 709, 01069 715, 728, 742, 702, 0, 704, 0, 705, 01070 0, 482, 6, 706, 482, 0, 707, 0, 01071 708, 0, 482, 6, 482, 0, 710, 0, 01072 711, 0, 482, 6, 712, 482, 0, 713, 01073 0, 714, 0, 482, 6, 482, 0, 716, 01074 723, 0, 717, 0, 482, 6, 718, 482, 01075 0, 719, 0, 720, 0, 721, 0, 722, 01076 0, 482, 6, 482, 0, 724, 0, 482, 01077 6, 725, 482, 0, 726, 0, 727, 0, 01078 482, 6, 482, 0, 729, 736, 0, 730, 01079 0, 482, 6, 731, 482, 0, 732, 0, 01080 733, 0, 734, 0, 735, 0, 482, 6, 01081 482, 0, 737, 0, 482, 6, 738, 482, 01082 0, 739, 0, 740, 0, 741, 0, 482, 01083 6, 482, 0, 743, 0, 744, 0, 482, 01084 6, 745, 482, 0, 746, 0, 747, 0, 01085 748, 0, 749, 0, 750, 0, 482, 6, 01086 482, 0, 752, 755, 0, 753, 0, 754, 01087 754, 0, 754, 680, 754, 0, 756, 759, 01088 0, 757, 0, 758, 0, 482, 6, 482, 01089 0, 760, 0, 761, 0, 762, 0, 763, 01090 0, 764, 0, 482, 6, 482, 0, 598, 01091 766, 598, 0, 598, 769, 598, 767, 0, 01092 598, 769, 598, 768, 0, 598, 769, 598, 01093 0, 598, 598, 770, 0, 598, 598, 771, 01094 0, 598, 598, 0, 773, 0, 774, 0, 01095 775, 775, 0, 775, 776, 775, 0, 777, 01096 0, 778, 0, 779, 0, 780, 0, 781, 01097 781, 0, 781, 782, 781, 0, 783, 0, 01098 784, 0, 785, 0, 786, 0, 787, 0, 01099 788, 0, 789, 0, 5, 5, 0, 791, 01100 0, 792, 0, 793, 0, 794, 0, 795, 01101 795, 0, 795, 796, 814, 820, 833, 847, 01102 856, 586, 795, 0, 797, 0, 798, 0, 01103 799, 811, 799, 0, 799, 800, 799, 0, 01104 801, 0, 802, 802, 0, 802, 6, 805, 01105 802, 803, 0, 482, 6, 805, 482, 804, 01106 0, 482, 6, 805, 482, 0, 482, 6, 01107 808, 482, 806, 0, 482, 6, 808, 482, 01108 807, 0, 482, 6, 808, 482, 0, 482, 01109 6, 482, 809, 0, 482, 6, 482, 810, 01110 0, 482, 6, 482, 0, 812, 0, 813, 01111 0, 799, 799, 0, 815, 0, 816, 0, 01112 799, 817, 799, 0, 818, 0, 819, 0, 01113 799, 799, 0, 821, 828, 0, 822, 0, 01114 799, 823, 799, 0, 824, 0, 825, 0, 01115 826, 0, 827, 0, 799, 799, 0, 829, 01116 0, 799, 830, 799, 0, 831, 0, 832, 01117 0, 799, 799, 0, 834, 841, 0, 835, 01118 0, 799, 836, 799, 0, 837, 0, 838, 01119 0, 839, 0, 840, 0, 799, 799, 0, 01120 842, 0, 799, 843, 799, 0, 844, 0, 01121 845, 0, 846, 0, 799, 799, 0, 848, 01122 0, 849, 0, 799, 850, 799, 0, 851, 01123 0, 852, 0, 853, 0, 854, 0, 855, 01124 0, 799, 799, 0, 857, 0, 858, 0, 01125 859, 859, 0, 859, 860, 859, 0, 861, 01126 0, 862, 862, 0, 862, 6, 865, 862, 01127 863, 0, 482, 6, 865, 482, 864, 0, 01128 482, 6, 865, 482, 0, 482, 6, 868, 01129 482, 866, 0, 482, 6, 868, 482, 867, 01130 0, 482, 6, 868, 482, 0, 482, 6, 01131 482, 869, 0, 482, 6, 482, 870, 0, 01132 482, 6, 482, 0, 872, 0, 873, 0, 01133 874, 0, 875, 875, 0, 875, 876, 882, 01134 888, 901, 915, 875, 0, 877, 0, 878, 01135 0, 5, 879, 5, 0, 880, 0, 881, 01136 0, 5, 5, 0, 883, 0, 884, 0, 01137 5, 885, 5, 0, 886, 0, 887, 0, 01138 5, 5, 0, 889, 896, 0, 890, 0, 01139 5, 891, 5, 0, 892, 0, 893, 0, 01140 894, 0, 895, 0, 5, 5, 0, 897, 01141 0, 5, 898, 5, 0, 899, 0, 900, 01142 0, 5, 5, 0, 902, 909, 0, 903, 01143 0, 5, 904, 5, 0, 905, 0, 906, 01144 0, 907, 0, 908, 0, 5, 5, 0, 01145 910, 0, 5, 911, 5, 0, 912, 0, 01146 913, 0, 914, 0, 5, 5, 0, 916, 01147 0, 917, 0, 5, 918, 5, 0, 919, 01148 0, 920, 0, 921, 0, 922, 0, 923, 01149 0, 5, 5, 0, 925, 0, 926, 926, 01150 0, 926, 3, 772, 871, 929, 926, 927, 01151 0, 3, 928, 0, 3, 591, 0, 930, 01152 933, 0, 931, 0, 932, 932, 0, 932, 01153 772, 932, 0, 934, 937, 0, 935, 0, 01154 936, 0, 5, 5, 0, 938, 0, 939, 01155 0, 940, 0, 941, 0, 942, 0, 5, 01156 5, 0, 944, 0, 945, 411, 0, 946, 01157 0, 947, 0, 948, 947, 947, 0, 0, 01158 0 01159 }; 01160 01161 static const unsigned char _fsm_trans_actions_wi[] = { 01162 0, 0, 91, 0, 0, 47, 0, 0, 01163 0, 0, 88, 0, 0, 91, 0, 0, 01164 47, 0, 0, 0, 0, 88, 0, 94, 01165 0, 0, 0, 0, 0, 0, 0, 0, 01166 39, 0, 97, 97, 39, 0, 215, 215, 01167 191, 0, 215, 109, 0, 0, 0, 0, 01168 0, 0, 0, 0, 0, 0, 0, 0, 01169 0, 0, 0, 0, 0, 0, 0, 91, 01170 0, 0, 47, 0, 0, 0, 0, 88, 01171 0, 94, 0, 0, 0, 0, 0, 0, 01172 0, 0, 39, 0, 97, 97, 39, 0, 01173 215, 215, 191, 0, 215, 109, 0, 215, 01174 215, 191, 0, 215, 109, 0, 100, 100, 01175 41, 100, 0, 0, 100, 100, 41, 100, 01176 0, 155, 155, 82, 155, 39, 0, 103, 01177 103, 43, 103, 0, 0, 103, 103, 43, 01178 103, 0, 159, 159, 159, 39, 0, 106, 01179 106, 106, 0, 0, 106, 106, 106, 0, 01180 0, 0, 0, 0, 0, 0, 215, 215, 01181 191, 215, 109, 0, 215, 215, 191, 0, 01182 215, 109, 0, 0, 0, 59, 59, 0, 01183 0, 59, 59, 0, 57, 0, 0, 57, 01184 0, 0, 0, 0, 0, 0, 21, 0, 01185 0, 0, 0, 21, 0, 0, 0, 29, 01186 0, 0, 0, 0, 0, 0, 29, 0, 01187 0, 0, 0, 0, 37, 0, 0, 0, 01188 0, 0, 0, 0, 0, 0, 0, 37, 01189 0, 0, 0, 0, 0, 17, 0, 0, 01190 0, 0, 0, 0, 0, 0, 0, 0, 01191 17, 0, 0, 0, 0, 0, 0, 15, 01192 0, 0, 0, 0, 0, 0, 0, 0, 01193 15, 0, 0, 0, 0, 27, 0, 0, 01194 27, 0, 25, 0, 0, 25, 0, 0, 01195 0, 0, 0, 0, 19, 0, 0, 0, 01196 0, 19, 0, 23, 0, 0, 0, 0, 01197 0, 35, 0, 0, 0, 0, 0, 0, 01198 0, 0, 0, 0, 35, 0, 0, 0, 01199 0, 0, 33, 0, 0, 0, 0, 0, 01200 0, 0, 0, 33, 0, 0, 0, 0, 01201 0, 31, 0, 0, 0, 0, 0, 0, 01202 0, 0, 0, 0, 0, 0, 31, 0, 01203 43, 55, 43, 0, 0, 0, 0, 0, 01204 0, 0, 0, 0, 0, 0, 0, 0, 01205 0, 0, 0, 0, 0, 0, 0, 0, 01206 0, 0, 0, 0, 0, 0, 0, 0, 01207 0, 0, 0, 0, 0, 0, 0, 0, 01208 0, 0, 0, 0, 0, 0, 0, 0, 01209 0, 0, 0, 0, 0, 0, 0, 0, 01210 0, 0, 0, 0, 0, 0, 124, 124, 01211 124, 0, 43, 55, 43, 0, 0, 55, 01212 0, 0, 55, 0, 0, 0, 0, 0, 01213 0, 191, 191, 191, 109, 0, 191, 191, 01214 0, 191, 109, 0, 41, 41, 41, 0, 01215 0, 0, 0, 0, 0, 0, 0, 0, 01216 0, 0, 0, 91, 0, 0, 0, 0, 01217 39, 0, 94, 0, 0, 0, 0, 0, 01218 0, 0, 0, 39, 0, 163, 163, 163, 01219 39, 0, 121, 121, 121, 0, 0, 121, 01220 121, 121, 0, 57, 0, 0, 57, 0, 01221 0, 0, 0, 0, 0, 21, 0, 0, 01222 0, 0, 21, 0, 0, 0, 29, 0, 01223 0, 0, 0, 0, 0, 29, 0, 0, 01224 0, 0, 0, 37, 0, 0, 0, 0, 01225 0, 0, 0, 0, 0, 0, 37, 0, 01226 0, 0, 0, 0, 17, 0, 0, 0, 01227 0, 0, 0, 0, 0, 0, 0, 17, 01228 0, 0, 0, 0, 0, 0, 15, 0, 01229 0, 0, 0, 0, 0, 0, 0, 15, 01230 0, 0, 0, 0, 27, 0, 0, 27, 01231 0, 25, 0, 0, 25, 0, 0, 0, 01232 0, 0, 0, 19, 0, 0, 0, 0, 01233 19, 0, 23, 0, 0, 0, 0, 0, 01234 35, 0, 0, 0, 0, 0, 0, 0, 01235 0, 0, 0, 35, 0, 0, 0, 0, 01236 0, 33, 0, 0, 0, 0, 0, 0, 01237 0, 0, 33, 0, 0, 0, 0, 0, 01238 31, 0, 0, 0, 0, 0, 0, 0, 01239 0, 0, 0, 0, 0, 31, 0, 55, 01240 0, 0, 55, 0, 0, 55, 0, 0, 01241 55, 0, 0, 0, 0, 0, 0, 0, 01242 0, 0, 0, 0, 0, 0, 0, 0, 01243 0, 0, 0, 0, 0, 0, 0, 0, 01244 0, 0, 0, 0, 0, 0, 0, 0, 01245 0, 0, 0, 0, 0, 0, 0, 0, 01246 0, 0, 118, 118, 118, 0, 0, 0, 01247 0, 0, 0, 0, 0, 0, 0, 0, 01248 0, 0, 0, 0, 0, 0, 0, 0, 01249 0, 0, 0, 143, 143, 0, 143, 0, 01250 0, 0, 0, 0, 143, 143, 143, 0, 01251 0, 0, 0, 0, 127, 127, 0, 127, 01252 0, 0, 0, 0, 0, 127, 127, 127, 01253 0, 0, 0, 0, 0, 0, 147, 147, 01254 0, 147, 0, 0, 0, 0, 0, 0, 01255 0, 0, 0, 147, 147, 147, 0, 0, 01256 0, 151, 151, 0, 151, 0, 0, 0, 01257 0, 0, 151, 151, 151, 0, 0, 0, 01258 0, 0, 0, 139, 139, 0, 139, 0, 01259 0, 0, 0, 0, 0, 0, 0, 0, 01260 139, 139, 139, 0, 0, 0, 131, 131, 01261 0, 131, 0, 0, 0, 0, 0, 0, 01262 0, 131, 131, 131, 0, 0, 0, 0, 01263 0, 135, 135, 0, 135, 0, 0, 0, 01264 0, 0, 0, 0, 0, 0, 0, 0, 01265 135, 135, 135, 0, 0, 0, 0, 0, 01266 0, 0, 0, 0, 0, 0, 0, 0, 01267 0, 0, 0, 0, 0, 0, 0, 112, 01268 112, 112, 0, 0, 0, 0, 0, 0, 01269 0, 0, 0, 0, 0, 115, 115, 115, 01270 0, 41, 41, 41, 0, 82, 82, 82, 01271 39, 0, 43, 43, 43, 0, 0, 43, 01272 43, 43, 0, 85, 85, 39, 0, 45, 01273 45, 0, 0, 45, 45, 0, 0, 0, 01274 0, 0, 0, 0, 0, 0, 0, 0, 01275 0, 0, 0, 0, 0, 0, 0, 0, 01276 0, 0, 0, 0, 0, 0, 0, 0, 01277 0, 0, 0, 0, 0, 0, 0, 0, 01278 0, 0, 0, 0, 0, 0, 53, 53, 01279 0, 0, 0, 0, 0, 0, 0, 0, 01280 0, 0, 0, 0, 0, 0, 0, 0, 01281 0, 0, 0, 0, 0, 0, 0, 0, 01282 0, 0, 9, 0, 9, 0, 0, 0, 01283 0, 0, 0, 0, 0, 0, 0, 226, 01284 226, 191, 226, 109, 0, 226, 226, 191, 01285 0, 226, 109, 0, 171, 171, 41, 171, 01286 0, 0, 171, 171, 41, 171, 0, 200, 01287 200, 82, 200, 39, 0, 179, 179, 43, 01288 179, 0, 0, 179, 179, 43, 179, 0, 01289 210, 210, 210, 39, 0, 187, 187, 187, 01290 0, 0, 187, 187, 187, 0, 0, 0, 01291 0, 0, 9, 9, 0, 0, 0, 0, 01292 0, 1, 0, 1, 0, 0, 0, 0, 01293 0, 1, 1, 0, 0, 0, 0, 0, 01294 0, 11, 0, 11, 0, 0, 0, 0, 01295 0, 0, 0, 0, 0, 11, 11, 0, 01296 0, 0, 13, 0, 13, 0, 0, 0, 01297 0, 0, 13, 13, 0, 0, 0, 0, 01298 0, 0, 7, 0, 7, 0, 0, 0, 01299 0, 0, 0, 0, 0, 0, 7, 7, 01300 0, 0, 0, 3, 0, 3, 0, 0, 01301 0, 0, 0, 0, 0, 3, 3, 0, 01302 0, 0, 0, 0, 5, 0, 5, 0, 01303 0, 0, 0, 0, 0, 0, 0, 0, 01304 0, 0, 5, 5, 0, 0, 0, 0, 01305 0, 0, 0, 0, 0, 0, 0, 0, 01306 0, 0, 0, 0, 0, 220, 220, 191, 01307 220, 109, 0, 220, 220, 191, 0, 220, 01308 109, 0, 167, 167, 41, 167, 0, 0, 01309 167, 167, 41, 167, 0, 195, 195, 82, 01310 195, 39, 0, 175, 175, 43, 175, 0, 01311 0, 175, 175, 43, 175, 0, 205, 205, 01312 205, 39, 0, 183, 183, 183, 0, 0, 01313 183, 183, 183, 0, 0, 0, 0, 0, 01314 0, 0, 0, 0, 0, 0, 0, 0, 01315 0, 0, 0, 0, 0, 0, 0, 0, 01316 0, 73, 0, 73, 0, 0, 0, 0, 01317 0, 73, 73, 0, 0, 0, 0, 0, 01318 61, 0, 61, 0, 0, 0, 0, 0, 01319 61, 61, 0, 0, 0, 0, 0, 0, 01320 76, 0, 76, 0, 0, 0, 0, 0, 01321 0, 0, 0, 0, 76, 76, 0, 0, 01322 0, 79, 0, 79, 0, 0, 0, 0, 01323 0, 79, 79, 0, 0, 0, 0, 0, 01324 0, 70, 0, 70, 0, 0, 0, 0, 01325 0, 0, 0, 0, 0, 70, 70, 0, 01326 0, 0, 64, 0, 64, 0, 0, 0, 01327 0, 0, 0, 0, 64, 64, 0, 0, 01328 0, 0, 0, 67, 0, 67, 0, 0, 01329 0, 0, 0, 0, 0, 0, 0, 0, 01330 0, 67, 67, 0, 0, 0, 0, 0, 01331 0, 0, 91, 0, 0, 0, 0, 39, 01332 0, 55, 0, 0, 55, 0, 0, 0, 01333 0, 0, 0, 0, 0, 0, 0, 0, 01334 0, 0, 0, 0, 0, 0, 0, 0, 01335 0, 0, 49, 49, 0, 0, 0, 0, 01336 0, 0, 0, 0, 0, 0, 0, 51, 01337 51, 0, 100, 100, 41, 100, 0, 0, 01338 0, 0, 0, 0, 100, 100, 41, 100, 01339 0, 155, 155, 82, 155, 39, 0, 103, 01340 103, 43, 103, 0, 0, 103, 103, 43, 01341 103, 0, 159, 159, 159, 39, 0, 106, 01342 106, 106, 0, 0, 106, 106, 106, 0, 01343 0, 0, 0, 0, 0, 215, 215, 191, 01344 215, 109, 0, 59, 59, 0, 0, 59, 01345 59, 0, 57, 0, 0, 57, 0, 0, 01346 0, 0, 0, 0, 21, 0, 0, 0, 01347 0, 21, 0, 0, 0, 29, 0, 0, 01348 0, 0, 0, 0, 29, 0, 0, 0, 01349 0, 0, 37, 0, 0, 0, 0, 0, 01350 0, 0, 0, 0, 0, 37, 0, 0, 01351 0, 0, 0, 17, 0, 0, 0, 0, 01352 0, 0, 0, 0, 0, 0, 17, 0, 01353 0, 0, 0, 0, 0, 15, 0, 0, 01354 0, 0, 0, 0, 0, 0, 15, 0, 01355 0, 0, 0, 27, 0, 0, 27, 0, 01356 25, 0, 0, 25, 0, 0, 0, 0, 01357 0, 0, 19, 0, 0, 0, 0, 19, 01358 0, 23, 0, 0, 0, 0, 0, 35, 01359 0, 0, 0, 0, 0, 0, 0, 0, 01360 0, 0, 35, 0, 0, 0, 0, 0, 01361 33, 0, 0, 0, 0, 0, 0, 0, 01362 0, 33, 0, 0, 0, 0, 0, 31, 01363 0, 0, 0, 0, 0, 0, 0, 0, 01364 0, 0, 0, 0, 31, 0, 43, 55, 01365 43, 0, 0, 0, 0, 0, 0, 0, 01366 0, 0, 0, 0, 0, 0, 0, 0, 01367 0, 0, 0, 0, 0, 0, 0, 0, 01368 0, 0, 0, 0, 0, 0, 0, 0, 01369 0, 0, 0, 0, 0, 0, 0, 0, 01370 0, 0, 0, 0, 0, 0, 0, 0, 01371 0, 0, 0, 0, 0, 0, 0, 0, 01372 0, 0, 0, 0, 124, 124, 124, 0, 01373 43, 55, 43, 0, 0, 55, 0, 0, 01374 55, 0, 0, 0, 0, 0, 0, 191, 01375 191, 191, 109, 0, 191, 191, 0, 191, 01376 109, 0, 41, 41, 41, 0, 0, 0, 01377 0, 0, 0, 0, 0, 0, 0, 0, 01378 0, 91, 0, 0, 0, 0, 39, 0, 01379 94, 0, 0, 0, 0, 0, 0, 0, 01380 0, 39, 0, 163, 163, 163, 39, 0, 01381 121, 121, 121, 0, 0, 121, 121, 121, 01382 0, 57, 0, 0, 57, 0, 0, 0, 01383 0, 0, 0, 21, 0, 0, 0, 0, 01384 21, 0, 0, 0, 29, 0, 0, 0, 01385 0, 0, 0, 29, 0, 0, 0, 0, 01386 0, 37, 0, 0, 0, 0, 0, 0, 01387 0, 0, 0, 0, 37, 0, 0, 0, 01388 0, 0, 17, 0, 0, 0, 0, 0, 01389 0, 0, 0, 0, 0, 17, 0, 0, 01390 0, 0, 0, 0, 15, 0, 0, 0, 01391 0, 0, 0, 0, 0, 15, 0, 0, 01392 0, 0, 27, 0, 0, 27, 0, 25, 01393 0, 0, 25, 0, 0, 0, 0, 0, 01394 0, 19, 0, 0, 0, 0, 19, 0, 01395 23, 0, 0, 0, 0, 0, 35, 0, 01396 0, 0, 0, 0, 0, 0, 0, 0, 01397 0, 35, 0, 0, 0, 0, 0, 33, 01398 0, 0, 0, 0, 0, 0, 0, 0, 01399 33, 0, 0, 0, 0, 0, 31, 0, 01400 0, 0, 0, 0, 0, 0, 0, 0, 01401 0, 0, 0, 31, 0, 55, 0, 0, 01402 55, 0, 0, 55, 0, 0, 55, 0, 01403 0, 0, 0, 0, 0, 0, 0, 0, 01404 0, 0, 0, 0, 0, 0, 0, 0, 01405 0, 0, 0, 0, 0, 0, 0, 0, 01406 0, 0, 0, 0, 0, 0, 0, 0, 01407 0, 0, 0, 0, 0, 0, 0, 0, 01408 118, 118, 118, 0, 0, 0, 0, 0, 01409 0, 0, 0, 0, 0, 0, 0, 0, 01410 0, 0, 0, 0, 0, 0, 0, 0, 01411 0, 143, 143, 0, 143, 0, 0, 0, 01412 0, 0, 143, 143, 143, 0, 0, 0, 01413 0, 0, 127, 127, 0, 127, 0, 0, 01414 0, 0, 0, 127, 127, 127, 0, 0, 01415 0, 0, 0, 0, 147, 147, 0, 147, 01416 0, 0, 0, 0, 0, 0, 0, 0, 01417 0, 147, 147, 147, 0, 0, 0, 151, 01418 151, 0, 151, 0, 0, 0, 0, 0, 01419 151, 151, 151, 0, 0, 0, 0, 0, 01420 0, 139, 139, 0, 139, 0, 0, 0, 01421 0, 0, 0, 0, 0, 0, 139, 139, 01422 139, 0, 0, 0, 131, 131, 0, 131, 01423 0, 0, 0, 0, 0, 0, 0, 131, 01424 131, 131, 0, 0, 0, 0, 0, 135, 01425 135, 0, 135, 0, 0, 0, 0, 0, 01426 0, 0, 0, 0, 0, 0, 135, 135, 01427 135, 0, 0, 0, 0, 0, 0, 0, 01428 0, 0, 0, 0, 0, 0, 0, 0, 01429 0, 0, 0, 0, 0, 112, 112, 112, 01430 0, 0, 0, 0, 0, 0, 0, 0, 01431 0, 0, 0, 115, 115, 115, 0, 41, 01432 41, 41, 0, 82, 82, 82, 39, 0, 01433 43, 43, 43, 0, 0, 43, 43, 43, 01434 0, 85, 85, 39, 0, 45, 45, 0, 01435 0, 45, 45, 0, 0, 0, 0, 0, 01436 0, 0, 0, 0, 0, 0, 0, 0, 01437 0, 0, 0, 0, 0, 0, 0, 0, 01438 0, 0, 0, 0, 0, 0, 0, 0, 01439 0, 0, 0, 0, 0, 0, 0, 0, 01440 0, 0, 0, 0, 53, 53, 0, 0, 01441 0, 0, 0, 0, 0, 0, 0, 0, 01442 0, 0, 0, 0, 0, 0, 0, 0, 01443 0, 0, 0, 0, 0, 0, 0, 0, 01444 9, 0, 9, 0, 0, 0, 0, 0, 01445 0, 0, 0, 0, 0, 226, 226, 191, 01446 226, 109, 0, 171, 171, 41, 171, 0, 01447 0, 171, 171, 41, 171, 0, 200, 200, 01448 82, 200, 39, 0, 179, 179, 43, 179, 01449 0, 0, 179, 179, 43, 179, 0, 210, 01450 210, 210, 39, 0, 187, 187, 187, 0, 01451 0, 187, 187, 187, 0, 0, 0, 0, 01452 0, 9, 9, 0, 0, 0, 0, 0, 01453 1, 0, 1, 0, 0, 0, 0, 0, 01454 1, 1, 0, 0, 0, 0, 0, 0, 01455 11, 0, 11, 0, 0, 0, 0, 0, 01456 0, 0, 0, 0, 11, 11, 0, 0, 01457 0, 13, 0, 13, 0, 0, 0, 0, 01458 0, 13, 13, 0, 0, 0, 0, 0, 01459 0, 7, 0, 7, 0, 0, 0, 0, 01460 0, 0, 0, 0, 0, 7, 7, 0, 01461 0, 0, 3, 0, 3, 0, 0, 0, 01462 0, 0, 0, 0, 3, 3, 0, 0, 01463 0, 0, 0, 5, 0, 5, 0, 0, 01464 0, 0, 0, 0, 0, 0, 0, 0, 01465 0, 5, 5, 0, 0, 0, 0, 0, 01466 0, 0, 0, 0, 0, 0, 0, 0, 01467 0, 0, 0, 0, 220, 220, 191, 220, 01468 109, 0, 167, 167, 41, 167, 0, 0, 01469 167, 167, 41, 167, 0, 195, 195, 82, 01470 195, 39, 0, 175, 175, 43, 175, 0, 01471 0, 175, 175, 43, 175, 0, 205, 205, 01472 205, 39, 0, 183, 183, 183, 0, 0, 01473 183, 183, 183, 0, 0, 0, 0, 0, 01474 0, 0, 0, 0, 0, 0, 0, 0, 01475 0, 0, 0, 0, 0, 0, 0, 0, 01476 0, 73, 0, 73, 0, 0, 0, 0, 01477 0, 73, 73, 0, 0, 0, 0, 0, 01478 61, 0, 61, 0, 0, 0, 0, 0, 01479 61, 61, 0, 0, 0, 0, 0, 0, 01480 76, 0, 76, 0, 0, 0, 0, 0, 01481 0, 0, 0, 0, 76, 76, 0, 0, 01482 0, 79, 0, 79, 0, 0, 0, 0, 01483 0, 79, 79, 0, 0, 0, 0, 0, 01484 0, 70, 0, 70, 0, 0, 0, 0, 01485 0, 0, 0, 0, 0, 70, 70, 0, 01486 0, 0, 64, 0, 64, 0, 0, 0, 01487 0, 0, 0, 0, 64, 64, 0, 0, 01488 0, 0, 0, 67, 0, 67, 0, 0, 01489 0, 0, 0, 0, 0, 0, 0, 0, 01490 0, 67, 67, 0, 0, 0, 0, 0, 01491 0, 0, 91, 0, 0, 0, 0, 39, 01492 0, 55, 0, 0, 55, 0, 0, 0, 01493 0, 0, 0, 0, 0, 0, 0, 0, 01494 0, 0, 0, 0, 0, 0, 0, 0, 01495 0, 0, 49, 49, 0, 0, 0, 0, 01496 0, 0, 0, 0, 0, 0, 0, 51, 01497 51, 0, 0, 0, 0, 0, 0, 0, 01498 0, 0, 0, 0, 0, 0, 0, 0, 01499 0 01500 }; 01501 01502 static const int fsm_start = 1; 01503 static const int fsm_first_final = 948; 01504 static const int fsm_error = 0; 01505 01506 static const int fsm_en_main = 1; 01507 01508 #line 100 "moment_parser.rl" 01509 01510 // Resolves the next moment defined by expression "s" that is "now" or 01511 // greater; relative expressions are interpreted relative to "ctx". 01512 // s:: Must be a zero terminated string. 01513 // result:: 0 time is used to indicate never. This makes sense since 01514 // it is the most likely moment to already be in the past. 01515 gboolean parse_moment(const char* s, time_t ctx, time_t now, 01516 time_t* result, GError** error) 01517 { 01518 int cs = 0; 01519 const char* p = s; 01520 const char* pe = s + strlen(s) + 1; 01521 01522 struct tm ctx_tm; 01523 gmtime_r(&ctx, &ctx_tm); 01524 01525 struct tm now_tm; 01526 gmtime_r(&now, &now_tm); 01527 01528 // The moment closest after "now" found so far, or 0. 01529 time_t future = 0; 01530 01531 const char* mark; 01532 struct tm seen; 01533 int seenWday; 01534 01535 01536 #line 1537 "moment_parser.c" 01537 { 01538 cs = fsm_start; 01539 } 01540 #line 127 "moment_parser.rl" 01541 01542 #line 1543 "moment_parser.c" 01543 { 01544 int _klen; 01545 unsigned int _trans; 01546 const char *_acts; 01547 unsigned int _nacts; 01548 const char *_keys; 01549 01550 if ( p == pe ) 01551 goto _test_eof; 01552 if ( cs == 0 ) 01553 goto _out; 01554 _resume: 01555 _keys = _fsm_trans_keys + _fsm_key_offsets[cs]; 01556 _trans = _fsm_index_offsets[cs]; 01557 01558 _klen = _fsm_single_lengths[cs]; 01559 if ( _klen > 0 ) { 01560 const char *_lower = _keys; 01561 const char *_mid; 01562 const char *_upper = _keys + _klen - 1; 01563 while (1) { 01564 if ( _upper < _lower ) 01565 break; 01566 01567 _mid = _lower + ((_upper-_lower) >> 1); 01568 if ( (*p) < *_mid ) 01569 _upper = _mid - 1; 01570 else if ( (*p) > *_mid ) 01571 _lower = _mid + 1; 01572 else { 01573 _trans += (_mid - _keys); 01574 goto _match; 01575 } 01576 } 01577 _keys += _klen; 01578 _trans += _klen; 01579 } 01580 01581 _klen = _fsm_range_lengths[cs]; 01582 if ( _klen > 0 ) { 01583 const char *_lower = _keys; 01584 const char *_mid; 01585 const char *_upper = _keys + (_klen<<1) - 2; 01586 while (1) { 01587 if ( _upper < _lower ) 01588 break; 01589 01590 _mid = _lower + (((_upper-_lower) >> 1) & ~1); 01591 if ( (*p) < _mid[0] ) 01592 _upper = _mid - 2; 01593 else if ( (*p) > _mid[1] ) 01594 _lower = _mid + 2; 01595 else { 01596 _trans += ((_mid - _keys)>>1); 01597 goto _match; 01598 } 01599 } 01600 _trans += _klen; 01601 } 01602 01603 _match: 01604 cs = _fsm_trans_targs_wi[_trans]; 01605 01606 if ( _fsm_trans_actions_wi[_trans] == 0 ) 01607 goto _again; 01608 01609 _acts = _fsm_actions + _fsm_trans_actions_wi[_trans]; 01610 _nacts = (unsigned int) *_acts++; 01611 while ( _nacts-- > 0 ) 01612 { 01613 switch ( *_acts++ ) 01614 { 01615 case 0: 01616 #line 5 "moment_parser.rl" 01617 { seenWday = 1; } 01618 break; 01619 case 1: 01620 #line 6 "moment_parser.rl" 01621 { seenWday = 2; } 01622 break; 01623 case 2: 01624 #line 7 "moment_parser.rl" 01625 { seenWday = 3; } 01626 break; 01627 case 3: 01628 #line 8 "moment_parser.rl" 01629 { seenWday = 4; } 01630 break; 01631 case 4: 01632 #line 9 "moment_parser.rl" 01633 { seenWday = 5; } 01634 break; 01635 case 5: 01636 #line 10 "moment_parser.rl" 01637 { seenWday = 6; } 01638 break; 01639 case 6: 01640 #line 11 "moment_parser.rl" 01641 { seenWday = 0; } 01642 break; 01643 case 7: 01644 #line 15 "moment_parser.rl" 01645 { seenMonth = 0; } 01646 break; 01647 case 8: 01648 #line 16 "moment_parser.rl" 01649 { seenMonth = 1; } 01650 break; 01651 case 9: 01652 #line 17 "moment_parser.rl" 01653 { seenMonth = 2; } 01654 break; 01655 case 10: 01656 #line 18 "moment_parser.rl" 01657 { seenMonth = 3; } 01658 break; 01659 case 11: 01660 #line 19 "moment_parser.rl" 01661 { seenMonth = 4; } 01662 break; 01663 case 12: 01664 #line 20 "moment_parser.rl" 01665 { seenMonth = 5; } 01666 break; 01667 case 13: 01668 #line 21 "moment_parser.rl" 01669 { seenMonth = 6; } 01670 break; 01671 case 14: 01672 #line 22 "moment_parser.rl" 01673 { seenMonth = 7; } 01674 break; 01675 case 15: 01676 #line 23 "moment_parser.rl" 01677 { seenMonth = 8; } 01678 break; 01679 case 16: 01680 #line 24 "moment_parser.rl" 01681 { seenMonth = 9; } 01682 break; 01683 case 17: 01684 #line 25 "moment_parser.rl" 01685 { seenMonth = 10; } 01686 break; 01687 case 18: 01688 #line 26 "moment_parser.rl" 01689 { seenMonth = 11; } 01690 break; 01691 case 19: 01692 #line 30 "moment_parser.rl" 01693 { mark = p; } 01694 break; 01695 case 20: 01696 #line 32 "moment_parser.rl" 01697 { seenHour = ATOI_RANGE(mark,0,23); } 01698 break; 01699 case 21: 01700 #line 33 "moment_parser.rl" 01701 { seenMin = ATOI_RANGE(mark,0,59); } 01702 break; 01703 case 22: 01704 #line 34 "moment_parser.rl" 01705 { seenSec = ATOI_RANGE(mark,0,59); } 01706 break; 01707 case 23: 01708 #line 36 "moment_parser.rl" 01709 { seenMin = seenSec = 0; } 01710 break; 01711 case 24: 01712 #line 45 "moment_parser.rl" 01713 { 01714 seenYear = ctx_tm.tm_year; 01715 seenMonth = ctx_tm.tm_mon; 01716 seenDay = ctx_tm.tm_mday; 01717 } 01718 break; 01719 case 25: 01720 #line 51 "moment_parser.rl" 01721 { 01722 SET_SEEN_DATE_PLUS_DAYS(ctx, 1); 01723 } 01724 break; 01725 case 26: 01726 #line 55 "moment_parser.rl" 01727 { 01728 SET_SEEN_DATE_PLUS_DAYS(ctx, 2); 01729 } 01730 break; 01731 case 27: 01732 #line 59 "moment_parser.rl" 01733 { 01734 // want next seenWday, but not today 01735 int plusDays = num_days_till_next_wday(ctx_tm.tm_wday, seenWday); 01736 SET_SEEN_DATE_PLUS_DAYS(ctx, plusDays); 01737 } 01738 break; 01739 case 28: 01740 #line 71 "moment_parser.rl" 01741 { seenYear = ATOI_RANGE(mark,1900,9999) - 1900; } 01742 break; 01743 case 29: 01744 #line 72 "moment_parser.rl" 01745 { seenMonth = ATOI_RANGE(mark,1,12) - 1; } 01746 break; 01747 case 30: 01748 #line 73 "moment_parser.rl" 01749 { seenDay = ATOI_RANGE(mark,1,31); } 01750 break; 01751 case 31: 01752 #line 33 "moment_parser.rl" 01753 { 01754 time_t seen_tt = SEEN_TIME_T; 01755 if (seen_tt >= now && (!future || (seen_tt < future))) 01756 future = seen_tt; 01757 } 01758 break; 01759 case 32: 01760 #line 39 "moment_parser.rl" 01761 { 01762 // Now "ctx" does not matter. Just compute next exact hour relative to "now". 01763 // Compute based on now_tm.tm_min and now_tm.tm_sec. 01764 time_t nowHourStart = now - now_tm.tm_sec - 60 * now_tm.tm_min; 01765 time_t nowHourMin = nowHourStart + seenMin * 60; 01766 if (now > nowHourMin) 01767 nowHourMin += (60 * 60); 01768 SET_SEEN_DATETIME_FROM_TIME_T(nowHourMin); 01769 } 01770 break; 01771 case 33: 01772 #line 49 "moment_parser.rl" 01773 { 01774 DEF_NOW_DAY_WITH_SEEN_TIME(wtm); 01775 time_t wtt = timegm(&wtm); 01776 if (wtt < now) 01777 wtt += 24 * 60 * 60; 01778 SET_SEEN_DATETIME_FROM_TIME_T(wtt); 01779 } 01780 break; 01781 case 34: 01782 #line 57 "moment_parser.rl" 01783 { 01784 // Want next seenWday relative to "now"; it may be the "now" day, 01785 // but only if the "now" time is no more than (seenHour, seenMin, 01786 // seenSec). 01787 DEF_NOW_DAY_WITH_SEEN_TIME(wtm); 01788 time_t wtt = timegm(&wtm); 01789 if (now_tm.tm_wday != seenWday || wtt < now) { 01790 int plusDays = num_days_till_next_wday(now_tm.tm_wday, seenWday); 01791 wtt += plusDays * 24 * 60 * 60; 01792 } 01793 SET_SEEN_DATETIME_FROM_TIME_T(wtt); 01794 } 01795 break; 01796 #line 1797 "moment_parser.c" 01797 } 01798 } 01799 01800 _again: 01801 if ( cs == 0 ) 01802 goto _out; 01803 if ( ++p != pe ) 01804 goto _resume; 01805 _test_eof: {} 01806 _out: {} 01807 } 01808 #line 128 "moment_parser.rl" 01809 01810 if (cs == fsm_error) { 01811 if (error) 01812 *error = g_error_new(this_domain, code_parse_error, "parse error in moment expression '%s'", s); 01813 return FALSE; 01814 } else if (cs == fsm_first_final) { 01815 *result = future; 01816 return TRUE; 01817 } else { 01818 if (error) 01819 *error = g_error_new(this_domain, code_incomplete_input, "incomplete moment expression '%s'", s); 01820 return FALSE; 01821 } 01822 }
ContextLogger2—ContextLogger2 Logger Daemon Internals—Generated on Mon May 2 13:49:55 2011 by Doxygen 1.6.1