#line 1 "ws_http_parser.rl" #include "ws_http_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ #line 138 "ws_http_parser.rl" /** Data **/ #line 25 "ws_http_parser.c" static const char _ws_http_request_parser_actions[] = { 0, 1, 0, 1, 2, 1, 3, 1, 4, 1, 5, 1, 12, 1, 13, 1, 14, 1, 15, 1, 17, 1, 18, 1, 21, 1, 26, 1, 27, 2, 3, 0, 2, 3, 4, 2, 5, 1, 2, 9, 10, 2, 12, 11, 2, 13, 14, 2, 14, 11, 2, 16, 11, 2, 18, 4, 2, 19, 4, 2, 20, 4, 2, 21, 4, 2, 22, 4, 2, 23, 4, 2, 24, 4, 2, 25, 4, 2, 26, 4, 3, 6, 9, 10, 3, 7, 9, 10, 3, 8, 9, 10, 3, 13, 14, 11, 3, 15, 16, 11 }; static const short _ws_http_request_parser_key_offsets[] = { 0, 0, 17, 32, 33, 41, 43, 45, 47, 49, 50, 52, 55, 57, 60, 61, 86, 87, 104, 107, 113, 119, 120, 147, 166, 185, 206, 225, 244, 263, 282, 301, 320, 337, 340, 357, 358, 360, 376, 392, 396, 397, 399, 402, 419, 420, 422, 438, 439, 466, 485, 504, 523, 540, 543, 556, 557, 559, 571, 580, 588, 597, 603, 614, 622, 630, 636, 639, 642, 644, 645, 648, 651, 654, 657, 663, 669, 675, 678, 687, 696, 705, 714, 723, 734, 745, 756, 770, 783, 792, 801, 813, 824, 833, 842, 854, 865, 874, 883, 895, 906, 913, 920, 927, 934, 935, 942, 949, 956, 963, 964, 971, 978, 985, 992, 993, 1000, 1007, 1014, 1021, 1022, 1029, 1036, 1043, 1050, 1051, 1058, 1065, 1072, 1079, 1080, 1090, 1098, 1103, 1104, 1109, 1110, 1115, 1116, 1118, 1121, 1124, 1130, 1133, 1136, 1139, 1145, 1148, 1151, 1154, 1160, 1163, 1170, 1177, 1178, 1185, 1192, 1199, 1206, 1214, 1222, 1230, 1241, 1251, 1259, 1267, 1274, 1281, 1291, 1300, 1308, 1316, 1318, 1324, 1333, 1342, 1351, 1363, 1374, 1383, 1392, 1400, 1410, 1419, 1427, 1435, 1437, 1446, 1455, 1464, 1473, 1485, 1496, 1505, 1514, 1522, 1532, 1541, 1549, 1557, 1559, 1568, 1577, 1586, 1595, 1607, 1618, 1627, 1636, 1644, 1654, 1663, 1671, 1679, 1681, 1690, 1699, 1708, 1717, 1729, 1740, 1749, 1758, 1766, 1776, 1785, 1793, 1801, 1803, 1812, 1821, 1830, 1839, 1851, 1862, 1871, 1880, 1888, 1889, 1899, 1908, 1916, 1924, 1926, 1935, 1944, 1953, 1962, 1974, 1985, 1994, 2003, 2011, 2030, 2049, 2068, 2087, 2106, 2123, 2126, 2131, 2132, 2134, 2138, 2141, 2160, 2179, 2196, 2215, 2234, 2253, 2272, 2291, 2310, 2329, 2348, 2367, 2384, 2409, 2428, 2447, 2464, 2467, 2472, 2473, 2475, 2479, 2482, 2485, 2488, 2491, 2494, 2497, 2500, 2503, 2506, 2509, 2512, 2515, 2518, 2521, 2524, 2527, 2530, 2533, 2536, 2539, 2542, 2545, 2548, 2551, 2554, 2557, 2560, 2563, 2566, 2569, 2572, 2575, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, 2611, 2614, 2617, 2620, 2623, 2626, 2627, 2646, 2665, 2684, 2703, 2722, 2741, 2760, 2777, 2780, 2797, 2798, 2800, 2816, 2832, 2836, 2837, 2839, 2842, 2859, 2860, 2862, 2878, 2879, 2906, 2925, 2944, 2963, 2982, 3001, 3020, 3037, 3040, 3057, 3058, 3060, 3076, 3091, 3110, 3129, 3148, 3167, 3186, 3205, 3222, 3225, 3230, 3231, 3233, 3237, 3240, 3243, 3244, 3263, 3282, 3301, 3318, 3337, 3356, 3375, 3394, 3413, 3432, 3449, 3452, 3457, 3458, 3460, 3464, 3467, 3470, 3473, 3476, 3479, 3482, 3485, 3488, 3489, 3490, 3517, 3523, 3524, 3525, 3531, 3537, 3543, 3549, 3555, 3561, 3567, 3573, 3579, 3585, 3601, 3617, 3632, 3648, 3664, 3680, 3696, 3712, 3728, 3743, 3759, 3775, 3791, 3806 }; static const char _ws_http_request_parser_trans_keys[] = { 33, 37, 39, 71, 79, 80, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 47, 32, 35, 37, 59, 63, 127, 0, 31, 72, 104, 84, 116, 84, 116, 80, 112, 47, 48, 57, 46, 48, 57, 48, 57, 13, 48, 57, 10, 13, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 127, 0, 31, 13, 127, 0, 8, 10, 31, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 84, 110, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 10, 9, 32, 9, 32, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 13, 58, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 13, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 53, 48, 52, 54, 57, 13, 53, 48, 52, 54, 57, 13, 51, 48, 50, 52, 57, 13, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 58, 95, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 13, 58, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 126, 10, 9, 32, 9, 32, 33, 126, 13, 33, 126, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 87, 119, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 66, 98, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 75, 107, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 75, 79, 80, 86, 107, 111, 112, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 89, 121, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 126, 10, 9, 32, 9, 32, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 80, 112, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 68, 100, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 13, 48, 57, 13, 48, 57, 13, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 72, 104, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 127, 0, 31, 13, 46, 32, 35, 37, 127, 0, 31, 32, 35, 37, 127, 0, 31, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 35, 37, 127, 0, 31, 32, 35, 37, 127, 0, 31, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 80, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 78, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 0 }; static const char _ws_http_request_parser_single_lengths[] = { 0, 7, 5, 1, 6, 2, 2, 2, 2, 1, 0, 1, 0, 1, 1, 15, 1, 7, 3, 4, 2, 1, 17, 9, 9, 11, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 17, 9, 9, 9, 7, 3, 7, 1, 2, 6, 3, 2, 3, 0, 5, 2, 2, 2, 1, 1, 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 5, 5, 5, 6, 5, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 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, 4, 2, 3, 1, 3, 1, 3, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 9, 9, 7, 3, 3, 1, 2, 2, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 17, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 5, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 4, 1, 1, 4, 4, 0, 0, 0, 0, 4, 4, 0, 0, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 5, 0 }; static const char _ws_http_request_parser_range_lengths[] = { 0, 5, 5, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 5, 0, 5, 0, 1, 2, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 0, 1, 0, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 1, 0, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 5, 1, 0, 0, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 }; static const short _ws_http_request_parser_index_offsets[] = { 0, 0, 13, 24, 26, 34, 37, 40, 43, 46, 48, 50, 53, 55, 58, 60, 81, 83, 96, 100, 106, 111, 113, 136, 151, 166, 183, 198, 213, 228, 243, 258, 273, 286, 290, 303, 305, 308, 320, 333, 338, 340, 343, 347, 360, 362, 365, 377, 379, 402, 417, 432, 447, 460, 464, 475, 477, 480, 490, 497, 503, 510, 514, 523, 529, 535, 540, 543, 546, 548, 550, 553, 556, 559, 562, 567, 572, 577, 580, 587, 594, 601, 608, 615, 624, 633, 642, 653, 663, 670, 677, 686, 694, 701, 708, 717, 725, 732, 739, 748, 756, 761, 766, 771, 776, 778, 783, 788, 793, 798, 800, 805, 810, 815, 820, 822, 827, 832, 837, 842, 844, 849, 854, 859, 864, 866, 871, 876, 881, 886, 888, 896, 902, 907, 909, 914, 916, 921, 923, 926, 929, 932, 937, 940, 943, 946, 951, 954, 957, 960, 965, 968, 973, 978, 980, 985, 990, 995, 1000, 1006, 1012, 1018, 1026, 1033, 1039, 1045, 1050, 1055, 1063, 1070, 1076, 1082, 1085, 1089, 1096, 1103, 1110, 1119, 1127, 1134, 1141, 1147, 1155, 1162, 1168, 1174, 1177, 1184, 1191, 1198, 1205, 1214, 1222, 1229, 1236, 1242, 1250, 1257, 1263, 1269, 1272, 1279, 1286, 1293, 1300, 1309, 1317, 1324, 1331, 1337, 1345, 1352, 1358, 1364, 1367, 1374, 1381, 1388, 1395, 1404, 1412, 1419, 1426, 1432, 1440, 1447, 1453, 1459, 1462, 1469, 1476, 1483, 1490, 1499, 1507, 1514, 1521, 1527, 1529, 1537, 1544, 1550, 1556, 1559, 1566, 1573, 1580, 1587, 1596, 1604, 1611, 1618, 1624, 1639, 1654, 1669, 1684, 1699, 1712, 1716, 1721, 1723, 1726, 1730, 1733, 1748, 1763, 1777, 1792, 1807, 1822, 1837, 1852, 1867, 1882, 1897, 1912, 1926, 1947, 1962, 1977, 1990, 1994, 1999, 2001, 2004, 2008, 2011, 2014, 2017, 2020, 2023, 2026, 2029, 2032, 2035, 2038, 2041, 2044, 2047, 2050, 2053, 2056, 2059, 2062, 2065, 2068, 2071, 2074, 2077, 2080, 2083, 2086, 2089, 2092, 2095, 2098, 2101, 2104, 2107, 2110, 2113, 2116, 2119, 2122, 2125, 2128, 2131, 2134, 2137, 2140, 2143, 2146, 2149, 2152, 2155, 2157, 2172, 2187, 2202, 2217, 2232, 2247, 2262, 2275, 2279, 2292, 2294, 2297, 2309, 2322, 2327, 2329, 2332, 2336, 2349, 2351, 2354, 2366, 2368, 2391, 2406, 2421, 2436, 2451, 2466, 2481, 2494, 2498, 2511, 2513, 2516, 2528, 2539, 2554, 2569, 2584, 2599, 2614, 2629, 2642, 2646, 2651, 2653, 2656, 2660, 2663, 2666, 2668, 2683, 2698, 2713, 2727, 2742, 2757, 2772, 2787, 2802, 2817, 2830, 2834, 2839, 2841, 2844, 2848, 2851, 2854, 2857, 2860, 2863, 2866, 2869, 2872, 2874, 2876, 2899, 2905, 2907, 2909, 2915, 2921, 2925, 2929, 2933, 2937, 2943, 2949, 2953, 2957, 2969, 2981, 2992, 3004, 3016, 3028, 3040, 3052, 3064, 3075, 3087, 3099, 3111, 3122 }; static const short _ws_http_request_parser_indicies[] = { 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 1, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 7, 1, 9, 10, 11, 1, 12, 1, 1, 8, 13, 13, 1, 14, 14, 1, 15, 15, 1, 16, 16, 1, 17, 1, 18, 1, 19, 20, 1, 21, 1, 22, 23, 1, 24, 1, 25, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 32, 1, 33, 33, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 1, 36, 36, 37, 1, 39, 40, 39, 1, 1, 38, 42, 1, 1, 1, 41, 43, 1, 41, 25, 41, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 33, 33, 34, 34, 34, 35, 44, 44, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 45, 45, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 46, 47, 46, 47, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 48, 48, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 49, 49, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 50, 50, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 51, 51, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 52, 52, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 53, 53, 34, 34, 34, 34, 34, 34, 1, 54, 54, 34, 34, 34, 55, 34, 34, 34, 34, 34, 34, 1, 56, 56, 57, 1, 57, 58, 57, 59, 59, 59, 59, 59, 59, 59, 59, 59, 1, 60, 1, 61, 61, 1, 61, 61, 59, 59, 59, 59, 59, 59, 59, 59, 59, 1, 62, 63, 62, 64, 64, 64, 65, 64, 64, 64, 64, 64, 1, 66, 67, 66, 68, 1, 69, 1, 70, 70, 1, 70, 70, 68, 1, 68, 71, 68, 72, 72, 72, 72, 72, 72, 72, 72, 72, 1, 73, 1, 74, 74, 1, 74, 74, 72, 72, 72, 72, 72, 72, 72, 72, 72, 1, 75, 1, 70, 25, 70, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 33, 33, 34, 34, 34, 35, 76, 76, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 77, 77, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 78, 78, 34, 34, 34, 34, 34, 34, 1, 79, 79, 34, 34, 34, 80, 34, 34, 34, 34, 34, 34, 1, 81, 81, 82, 1, 82, 83, 82, 84, 85, 86, 89, 87, 88, 88, 1, 90, 1, 91, 91, 1, 91, 91, 84, 85, 86, 89, 87, 88, 88, 1, 92, 93, 92, 94, 94, 94, 1, 92, 92, 94, 94, 94, 1, 92, 95, 92, 94, 94, 94, 1, 94, 96, 96, 1, 97, 98, 99, 100, 98, 96, 96, 96, 1, 98, 98, 96, 96, 96, 1, 97, 100, 94, 96, 96, 1, 101, 103, 102, 104, 1, 105, 106, 1, 107, 108, 1, 109, 1, 110, 1, 110, 109, 1, 110, 108, 1, 110, 111, 1, 110, 106, 1, 110, 112, 111, 106, 1, 110, 113, 106, 108, 1, 110, 114, 108, 109, 1, 110, 109, 1, 115, 116, 117, 118, 96, 96, 1, 92, 119, 92, 94, 94, 94, 1, 120, 121, 122, 123, 96, 96, 1, 92, 124, 92, 94, 94, 94, 1, 125, 126, 127, 128, 96, 96, 1, 97, 92, 95, 100, 92, 94, 94, 94, 1, 97, 92, 95, 100, 92, 128, 94, 94, 1, 97, 92, 95, 100, 92, 125, 94, 94, 1, 97, 92, 95, 129, 100, 92, 128, 125, 94, 94, 1, 97, 92, 95, 100, 92, 125, 94, 94, 94, 1, 92, 124, 92, 123, 94, 94, 1, 92, 124, 92, 120, 94, 94, 1, 92, 124, 130, 92, 123, 120, 94, 94, 1, 92, 124, 92, 120, 94, 94, 94, 1, 92, 119, 92, 118, 94, 94, 1, 92, 119, 92, 115, 94, 94, 1, 92, 119, 131, 92, 118, 115, 94, 94, 1, 92, 119, 92, 115, 94, 94, 94, 1, 92, 93, 92, 132, 94, 94, 1, 92, 93, 92, 133, 94, 94, 1, 92, 93, 134, 92, 132, 133, 94, 94, 1, 92, 93, 92, 133, 94, 94, 94, 1, 136, 135, 135, 135, 1, 138, 137, 137, 137, 1, 138, 139, 139, 139, 1, 138, 140, 140, 140, 1, 138, 1, 142, 141, 141, 141, 1, 144, 143, 143, 143, 1, 144, 145, 145, 145, 1, 144, 146, 146, 146, 1, 144, 1, 148, 147, 147, 147, 1, 150, 149, 149, 149, 1, 150, 151, 151, 151, 1, 150, 152, 152, 152, 1, 150, 1, 154, 153, 153, 153, 1, 156, 155, 155, 155, 1, 156, 157, 157, 157, 1, 156, 158, 158, 158, 1, 156, 1, 160, 159, 159, 159, 1, 162, 161, 161, 161, 1, 162, 163, 163, 163, 1, 162, 164, 164, 164, 1, 162, 1, 166, 165, 165, 165, 1, 168, 167, 167, 167, 1, 168, 169, 169, 169, 1, 168, 170, 170, 170, 1, 168, 1, 171, 172, 173, 175, 174, 176, 176, 1, 177, 179, 178, 178, 178, 1, 180, 181, 182, 183, 1, 184, 1, 185, 186, 187, 188, 1, 189, 1, 190, 191, 192, 193, 1, 194, 1, 97, 100, 1, 194, 193, 1, 194, 190, 1, 195, 194, 193, 190, 1, 194, 190, 1, 189, 188, 1, 189, 185, 1, 189, 196, 188, 185, 1, 189, 185, 1, 184, 183, 1, 184, 180, 1, 184, 197, 183, 180, 1, 184, 180, 1, 179, 198, 198, 198, 1, 179, 199, 199, 199, 1, 179, 1, 190, 200, 200, 200, 1, 194, 201, 201, 201, 1, 194, 202, 202, 202, 1, 194, 190, 190, 190, 1, 177, 179, 203, 178, 178, 1, 177, 179, 204, 198, 198, 1, 177, 179, 199, 199, 199, 1, 177, 205, 179, 203, 206, 178, 178, 1, 177, 179, 204, 198, 198, 198, 1, 177, 179, 198, 198, 198, 1, 177, 179, 206, 178, 178, 1, 194, 200, 200, 200, 1, 179, 178, 178, 178, 1, 207, 208, 209, 194, 210, 211, 211, 1, 177, 213, 194, 212, 212, 212, 1, 213, 194, 214, 214, 214, 1, 213, 194, 215, 215, 215, 1, 213, 194, 1, 200, 200, 200, 1, 177, 213, 194, 216, 212, 212, 1, 177, 213, 194, 217, 214, 214, 1, 177, 213, 194, 215, 215, 215, 1, 177, 218, 213, 194, 216, 219, 212, 212, 1, 177, 213, 194, 217, 214, 214, 214, 1, 177, 213, 194, 214, 214, 214, 1, 177, 213, 194, 219, 212, 212, 1, 213, 194, 212, 212, 212, 1, 220, 221, 222, 194, 223, 224, 224, 1, 177, 226, 194, 225, 225, 225, 1, 226, 194, 227, 227, 227, 1, 226, 194, 228, 228, 228, 1, 226, 194, 1, 207, 208, 209, 210, 211, 211, 1, 177, 226, 194, 229, 225, 225, 1, 177, 226, 194, 230, 227, 227, 1, 177, 226, 194, 228, 228, 228, 1, 177, 231, 226, 194, 229, 232, 225, 225, 1, 177, 226, 194, 230, 227, 227, 227, 1, 177, 226, 194, 227, 227, 227, 1, 177, 226, 194, 232, 225, 225, 1, 226, 194, 225, 225, 225, 1, 233, 234, 235, 194, 236, 237, 237, 1, 177, 239, 194, 238, 238, 238, 1, 239, 194, 240, 240, 240, 1, 239, 194, 241, 241, 241, 1, 239, 194, 1, 220, 221, 222, 223, 224, 224, 1, 177, 239, 194, 242, 238, 238, 1, 177, 239, 194, 243, 240, 240, 1, 177, 239, 194, 241, 241, 241, 1, 177, 244, 239, 194, 242, 245, 238, 238, 1, 177, 239, 194, 243, 240, 240, 240, 1, 177, 239, 194, 240, 240, 240, 1, 177, 239, 194, 245, 238, 238, 1, 239, 194, 238, 238, 238, 1, 246, 247, 248, 194, 249, 250, 250, 1, 177, 252, 194, 251, 251, 251, 1, 252, 194, 253, 253, 253, 1, 252, 194, 254, 254, 254, 1, 252, 194, 1, 233, 234, 235, 236, 237, 237, 1, 177, 252, 194, 255, 251, 251, 1, 177, 252, 194, 256, 253, 253, 1, 177, 252, 194, 254, 254, 254, 1, 177, 257, 252, 194, 255, 258, 251, 251, 1, 177, 252, 194, 256, 253, 253, 253, 1, 177, 252, 194, 253, 253, 253, 1, 177, 252, 194, 258, 251, 251, 1, 252, 194, 251, 251, 251, 1, 259, 260, 261, 194, 262, 263, 263, 1, 177, 265, 194, 264, 264, 264, 1, 265, 194, 266, 266, 266, 1, 265, 194, 267, 267, 267, 1, 265, 194, 1, 246, 247, 248, 249, 250, 250, 1, 177, 265, 194, 268, 264, 264, 1, 177, 265, 194, 269, 266, 266, 1, 177, 265, 194, 267, 267, 267, 1, 177, 270, 265, 194, 268, 271, 264, 264, 1, 177, 265, 194, 269, 266, 266, 266, 1, 177, 265, 194, 266, 266, 266, 1, 177, 265, 194, 271, 264, 264, 1, 265, 194, 264, 264, 264, 1, 272, 1, 273, 274, 275, 194, 276, 277, 277, 1, 177, 279, 194, 278, 278, 278, 1, 279, 194, 280, 280, 280, 1, 279, 194, 281, 281, 281, 1, 279, 194, 1, 259, 260, 261, 262, 263, 263, 1, 177, 279, 194, 282, 278, 278, 1, 177, 279, 194, 283, 280, 280, 1, 177, 279, 194, 281, 281, 281, 1, 177, 284, 279, 194, 282, 285, 278, 278, 1, 177, 279, 194, 283, 280, 280, 280, 1, 177, 279, 194, 280, 280, 280, 1, 177, 279, 194, 285, 278, 278, 1, 279, 194, 278, 278, 278, 1, 33, 33, 34, 34, 34, 35, 286, 286, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 287, 287, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 288, 288, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 289, 289, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 290, 290, 34, 34, 34, 34, 34, 34, 1, 291, 291, 34, 34, 34, 292, 34, 34, 34, 34, 34, 34, 1, 293, 293, 294, 1, 294, 295, 294, 296, 1, 297, 1, 298, 298, 1, 298, 298, 296, 1, 299, 300, 1, 33, 33, 34, 34, 34, 35, 301, 301, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 302, 302, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 303, 34, 35, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 304, 304, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 305, 305, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 306, 306, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 307, 307, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 308, 308, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 309, 309, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 310, 310, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 311, 311, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 312, 312, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 313, 34, 35, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 314, 315, 316, 317, 314, 315, 316, 317, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 318, 318, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 319, 319, 34, 34, 34, 34, 34, 34, 1, 320, 320, 34, 34, 34, 321, 34, 34, 34, 34, 34, 34, 1, 322, 322, 323, 1, 323, 324, 323, 325, 1, 326, 1, 327, 327, 1, 327, 327, 325, 1, 328, 329, 1, 328, 330, 1, 328, 331, 1, 328, 332, 1, 328, 333, 1, 328, 334, 1, 328, 335, 1, 328, 336, 1, 328, 337, 1, 328, 338, 1, 328, 339, 1, 328, 340, 1, 328, 341, 1, 328, 342, 1, 328, 343, 1, 328, 344, 1, 328, 345, 1, 328, 346, 1, 328, 347, 1, 328, 348, 1, 328, 349, 1, 328, 350, 1, 328, 351, 1, 328, 352, 1, 328, 353, 1, 328, 354, 1, 328, 355, 1, 328, 356, 1, 328, 357, 1, 328, 358, 1, 328, 359, 1, 328, 360, 1, 328, 361, 1, 328, 362, 1, 328, 363, 1, 328, 364, 1, 328, 365, 1, 328, 366, 1, 328, 367, 1, 328, 368, 1, 328, 369, 1, 328, 370, 1, 328, 371, 1, 328, 372, 1, 328, 373, 1, 328, 374, 1, 328, 375, 1, 328, 376, 1, 328, 377, 1, 328, 1, 33, 33, 34, 34, 34, 35, 378, 378, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 379, 379, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 380, 380, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 381, 381, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 382, 382, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 383, 383, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 384, 384, 34, 34, 34, 34, 34, 34, 1, 385, 385, 34, 34, 34, 386, 34, 34, 34, 34, 34, 34, 1, 387, 387, 388, 1, 388, 389, 388, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 391, 1, 392, 392, 1, 392, 392, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 393, 394, 393, 395, 395, 395, 396, 395, 395, 395, 395, 395, 1, 397, 398, 397, 399, 1, 400, 1, 401, 401, 1, 401, 401, 399, 1, 399, 402, 399, 403, 403, 403, 403, 403, 403, 403, 403, 403, 1, 404, 1, 405, 405, 1, 405, 405, 403, 403, 403, 403, 403, 403, 403, 403, 403, 1, 406, 1, 401, 25, 401, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 33, 33, 34, 34, 34, 35, 407, 407, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 408, 408, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 409, 409, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 410, 410, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 411, 411, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 412, 412, 34, 34, 34, 34, 34, 34, 1, 413, 413, 34, 34, 34, 414, 34, 34, 34, 34, 34, 34, 1, 415, 415, 416, 1, 416, 417, 416, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 419, 1, 420, 420, 1, 420, 420, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 421, 422, 422, 422, 422, 422, 422, 422, 422, 422, 1, 33, 33, 34, 34, 34, 35, 423, 423, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 424, 424, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 425, 425, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 426, 426, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 427, 427, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 428, 428, 34, 34, 34, 34, 34, 34, 1, 429, 429, 34, 34, 34, 430, 34, 34, 34, 34, 34, 34, 1, 431, 431, 432, 1, 432, 433, 432, 434, 1, 435, 1, 436, 436, 1, 436, 436, 434, 1, 437, 438, 1, 437, 439, 1, 437, 1, 33, 33, 34, 34, 34, 35, 440, 440, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 441, 441, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 442, 442, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 443, 34, 35, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 444, 444, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 445, 445, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 446, 446, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 447, 447, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 448, 448, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 449, 449, 34, 34, 34, 34, 34, 34, 1, 450, 450, 34, 34, 34, 451, 34, 34, 34, 34, 34, 34, 1, 452, 452, 453, 1, 453, 454, 453, 455, 1, 456, 1, 457, 457, 1, 457, 457, 455, 1, 458, 459, 1, 458, 460, 1, 458, 461, 1, 458, 462, 1, 458, 463, 1, 458, 464, 1, 458, 465, 1, 458, 466, 1, 458, 1, 467, 1, 468, 25, 468, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 469, 470, 469, 1, 1, 38, 22, 1, 19, 1, 472, 1, 473, 1, 1, 471, 475, 1, 476, 1, 1, 474, 477, 477, 477, 1, 474, 474, 474, 1, 478, 478, 478, 1, 8, 8, 8, 1, 480, 481, 482, 1, 1, 479, 484, 485, 486, 1, 1, 483, 487, 487, 487, 1, 483, 483, 483, 1, 5, 6, 6, 6, 488, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 489, 6, 6, 6, 6, 6, 6, 1, 490, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 491, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 492, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 493, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 494, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 495, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 496, 6, 6, 6, 6, 6, 6, 1, 497, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 498, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 499, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 500, 6, 6, 6, 6, 6, 6, 1, 501, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 0 }; static const short _ws_http_request_parser_trans_targs[] = { 2, 0, 428, 431, 438, 3, 2, 4, 4, 5, 418, 422, 424, 6, 7, 8, 9, 10, 11, 12, 417, 13, 14, 416, 15, 16, 17, 23, 49, 252, 264, 360, 442, 18, 17, 19, 18, 19, 20, 19, 413, 20, 21, 22, 24, 25, 26, 388, 27, 28, 29, 30, 31, 32, 33, 34, 33, 34, 35, 38, 36, 37, 39, 47, 38, 43, 39, 40, 43, 41, 42, 44, 38, 45, 46, 48, 50, 51, 52, 53, 54, 53, 54, 55, 58, 96, 98, 97, 62, 100, 56, 57, 59, 78, 60, 61, 62, 14, 63, 64, 65, 66, 72, 74, 73, 67, 71, 68, 70, 69, 14, 73, 75, 76, 77, 79, 92, 94, 93, 80, 81, 88, 90, 89, 82, 83, 84, 86, 85, 87, 91, 95, 97, 58, 99, 101, 237, 102, 105, 103, 104, 106, 223, 107, 110, 108, 109, 111, 209, 112, 115, 113, 114, 116, 195, 117, 120, 118, 119, 121, 181, 122, 125, 123, 124, 126, 167, 127, 130, 128, 129, 131, 158, 161, 164, 165, 166, 132, 151, 154, 133, 147, 149, 148, 134, 135, 143, 145, 144, 136, 137, 139, 141, 140, 138, 142, 146, 150, 152, 153, 155, 156, 157, 159, 160, 162, 163, 168, 173, 176, 179, 180, 169, 172, 170, 171, 174, 175, 177, 178, 182, 187, 190, 193, 194, 183, 186, 184, 185, 188, 189, 191, 192, 196, 201, 204, 207, 208, 197, 200, 198, 199, 202, 203, 205, 206, 210, 215, 218, 221, 222, 211, 214, 212, 213, 216, 217, 219, 220, 224, 229, 232, 235, 236, 225, 228, 226, 227, 230, 231, 233, 234, 238, 239, 244, 247, 250, 251, 240, 243, 241, 242, 245, 246, 248, 249, 253, 254, 255, 256, 257, 258, 259, 258, 259, 260, 263, 261, 262, 14, 263, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 252, 336, 373, 279, 280, 281, 282, 281, 282, 283, 286, 284, 285, 14, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 344, 345, 346, 349, 347, 348, 350, 358, 349, 354, 350, 351, 354, 352, 353, 355, 349, 356, 357, 359, 361, 362, 363, 364, 365, 366, 367, 368, 367, 368, 369, 372, 370, 371, 14, 372, 374, 375, 376, 377, 378, 379, 380, 381, 380, 381, 382, 385, 383, 384, 14, 386, 387, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 399, 400, 401, 404, 402, 403, 14, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 415, 21, 419, 5, 420, 419, 5, 420, 421, 423, 425, 5, 418, 426, 425, 5, 418, 426, 427, 429, 430, 3, 432, 433, 434, 435, 436, 437, 3, 439, 440, 441, 3 }; static const char _ws_http_request_parser_trans_actions[] = { 1, 0, 1, 1, 1, 38, 0, 1, 0, 41, 11, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 9, 35, 35, 35, 35, 35, 35, 27, 3, 0, 3, 0, 0, 5, 5, 32, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 23, 62, 0, 23, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 29, 29, 29, 29, 29, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 21, 1, 1, 1, 1, 0, 0, 0, 0, 0, 56, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 74, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 25, 77, 0, 25, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 32, 17, 96, 17, 0, 50, 0, 0, 0, 13, 92, 44, 13, 0, 47, 15, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 84 }; static const int ws_http_request_parser_start = 1; static const int ws_http_request_parser_first_final = 442; static const int ws_http_request_parser_error = 0; static const int ws_http_request_parser_en_main = 1; #line 142 "ws_http_parser.rl" int ws_http_request_parser_init(ws_http_request_parser *parser) { int cs = 0; #line 1296 "ws_http_parser.c" { cs = ws_http_request_parser_start; } #line 147 "ws_http_parser.rl" parser->cs = cs; parser->nread = 0; parser->error_start = NULL; parser->error_len = 0; parser->error_pos = 0; parser->mark = 0; parser->hdr_field_start = 0; parser->hdr_field_len = 0; parser->hdr_value_start = 0; parser->hdr_value_len = 0; parser->query_start = 0; parser->fragment_start = 0; parser->method = 0; parser->uri_scheme = 0; parser->data = NULL; return(1); } /** exec **/ size_t ws_http_request_parser_execute(ws_http_request_parser *parser, const char *buffer, size_t len, size_t off) { const char *p, *pe; int cs = parser->cs; assert(off <= len && "offset past end of buffer"); p = buffer+off; pe = buffer+len; assert(*pe == '\0' && "pointer does not end on NULL"); assert(pe - p == len - off && "pointers aren't same distance"); #line 1340 "ws_http_parser.c" { int _klen; unsigned int _trans; const char *_acts; unsigned int _nacts; const char *_keys; if ( p == pe ) goto _test_eof; if ( cs == 0 ) goto _out; _resume: _keys = _ws_http_request_parser_trans_keys + _ws_http_request_parser_key_offsets[cs]; _trans = _ws_http_request_parser_index_offsets[cs]; _klen = _ws_http_request_parser_single_lengths[cs]; if ( _klen > 0 ) { const char *_lower = _keys; const char *_mid; const char *_upper = _keys + _klen - 1; while (1) { if ( _upper < _lower ) break; _mid = _lower + ((_upper-_lower) >> 1); if ( (*p) < *_mid ) _upper = _mid - 1; else if ( (*p) > *_mid ) _lower = _mid + 1; else { _trans += (unsigned int)(_mid - _keys); goto _match; } } _keys += _klen; _trans += _klen; } _klen = _ws_http_request_parser_range_lengths[cs]; if ( _klen > 0 ) { const char *_lower = _keys; const char *_mid; const char *_upper = _keys + (_klen<<1) - 2; while (1) { if ( _upper < _lower ) break; _mid = _lower + (((_upper-_lower) >> 1) & ~1); if ( (*p) < _mid[0] ) _upper = _mid - 2; else if ( (*p) > _mid[1] ) _lower = _mid + 2; else { _trans += (unsigned int)((_mid - _keys)>>1); goto _match; } } _trans += _klen; } _match: _trans = _ws_http_request_parser_indicies[_trans]; cs = _ws_http_request_parser_trans_targs[_trans]; if ( _ws_http_request_parser_trans_actions[_trans] == 0 ) goto _again; _acts = _ws_http_request_parser_actions + _ws_http_request_parser_trans_actions[_trans]; _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { case 0: #line 20 "ws_http_parser.rl" { MARK(mark, p); } break; case 1: #line 22 "ws_http_parser.rl" { MARK(hdr_field_start, p); } break; case 2: #line 26 "ws_http_parser.rl" { parser->hdr_field_len = LEN(hdr_field_start, p); } break; case 3: #line 30 "ws_http_parser.rl" { MARK(hdr_value_start, p); } break; case 4: #line 32 "ws_http_parser.rl" { parser->hdr_value_len = LEN(hdr_value_start, p); } break; case 5: #line 36 "ws_http_parser.rl" { if (parser->hdr_value_start) { parser->header(parser->data, PTR_TO(hdr_field_start), parser->hdr_field_len, PTR_TO(hdr_value_start), parser->hdr_value_len); } } break; case 6: #line 42 "ws_http_parser.rl" { parser->method = method_GET; } break; case 7: #line 43 "ws_http_parser.rl" { parser->method = method_POST; } break; case 8: #line 44 "ws_http_parser.rl" { parser->method = method_OPTIONS; } break; case 9: #line 45 "ws_http_parser.rl" { if (!parser->method) { parser->method = method_unknown; } } break; case 10: #line 51 "ws_http_parser.rl" { parser->request.method(parser->data, PTR_TO(mark), LEN(mark, p), parser->method); } break; case 11: #line 55 "ws_http_parser.rl" { parser->request.request_uri(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 12: #line 59 "ws_http_parser.rl" { parser->request.request_path(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 13: #line 63 "ws_http_parser.rl" { MARK(query_start, p); } break; case 14: #line 67 "ws_http_parser.rl" { parser->request.query(parser->data, PTR_TO(query_start), LEN(query_start, p)); } break; case 15: #line 71 "ws_http_parser.rl" { MARK(fragment_start, p); } break; case 16: #line 75 "ws_http_parser.rl" { parser->request.fragment(parser->data, PTR_TO(fragment_start), LEN(fragment_start, p)); } break; case 17: #line 95 "ws_http_parser.rl" { parser->request.http_version(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 18: #line 99 "ws_http_parser.rl" { parser->request.host(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 19: #line 103 "ws_http_parser.rl" { parser->request.port(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 20: #line 107 "ws_http_parser.rl" { parser->request.content_length(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 21: #line 111 "ws_http_parser.rl" { parser->request.hdr_connection_value(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 22: #line 115 "ws_http_parser.rl" { parser->request.hdr_upgrade(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 23: #line 119 "ws_http_parser.rl" { parser->request.hdr_origin(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 24: #line 123 "ws_http_parser.rl" { parser->request.hdr_sec_websocket_version(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 25: #line 127 "ws_http_parser.rl" { parser->request.hdr_sec_websocket_key(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 26: #line 131 "ws_http_parser.rl" { parser->request.hdr_sec_websocket_protocol_value(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 27: #line 135 "ws_http_parser.rl" { {p++; goto _out; } } break; #line 1574 "ws_http_parser.c" } } _again: if ( cs == 0 ) goto _out; if ( ++p != pe ) goto _resume; _test_eof: {} _out: {} } #line 185 "ws_http_parser.rl" parser->cs = cs; parser->nread += p - (buffer + off); assert(p <= pe && "buffer overflow after parsing execute"); assert(parser->nread <= len && "nread longer than length"); assert(parser->mark < len && "mark is after buffer end"); assert(parser->hdr_field_start < len && "field starts after buffer end"); assert(parser->hdr_field_len <= len && "field has length longer than whole buffer"); assert(parser->hdr_value_start < len && "value starts after buffer end"); assert(parser->hdr_value_len <= len && "value has length longer than whole buffer"); if (ws_http_request_parser_has_error(parser)) { parser->error_start = (char *)buffer; parser->error_len = pe - buffer; parser->error_pos = p - buffer; /* DOC: * buffer is the start of the parsed data. * p is last position of the parsing. * pe is first position after data ends. */ } return(parser->nread); } int ws_http_request_parser_finish(ws_http_request_parser *parser) { int cs = parser->cs; parser->cs = cs; if (ws_http_request_parser_has_error(parser)) return -1; else if (ws_http_request_parser_is_finished(parser)) return 1; else return 0; } int ws_http_request_parser_has_error(ws_http_request_parser *parser) { return parser->cs == ws_http_request_parser_error; } int ws_http_request_parser_is_finished(ws_http_request_parser *parser) { return parser->cs == ws_http_request_parser_first_final; }