/* #line 1 "./ragel/thttp_parser_header.rl" */ /* * Copyright (C) 2009-2010 Mamadou Diop. * * Contact: Mamadou Diop * * This file is part of Open Source Doubango Framework. * * DOUBANGO is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * DOUBANGO is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with DOUBANGO. * */ /**@file thttp_parser_header.c * @brief HTTP headers parser. * * @author Mamadou Diop * * @date Created: Sat Nov 8 16:54:58 2009 mdiop */ #include "tinyhttp/parsers/thttp_parser_header.h" //#include "tinyhttp/headers/thttp_header_Allow.h" //#include "tinyhttp/headers/thttp_header_Allow_Events.h" #include "tinyhttp/headers/thttp_header_Authorization.h" //#include "tinyhttp/headers/thttp_header_Call_ID.h" //#include "tinyhttp/headers/thttp_header_Contact.h" //#include "tinyhttp/headers/thttp_header_CSeq.h" #include "tinyhttp/headers/thttp_header_Dummy.h" #include "tinyhttp/headers/thttp_header_ETag.h" //#include "tinyhttp/headers/thttp_header_Expires.h" //#include "tinyhttp/headers/thttp_header_From.h" //#include "tinyhttp/headers/thttp_header_Max_Forwards.h" //#include "tinyhttp/headers/thttp_header_Min_Expires.h" //#include "tinyhttp/headers/thttp_header_Path.h" //#include "tinyhttp/headers/thttp_header_P_Access_Network_Info.h" //#include "tinyhttp/headers/thttp_header_P_Preferred_Identity.h" //#include "tinyhttp/headers/thttp_header_Privacy.h" //#include "tinyhttp/headers/thttp_header_Proxy_Authenticate.h" //#include "tinyhttp/headers/thttp_header_Proxy_Authorization.h" //#include "tinyhttp/headers/thttp_header_Record_Route.h" //#include "tinyhttp/headers/thttp_header_Require.h" //#include "tinyhttp/headers/thttp_header_Route.h" //#include "tinyhttp/headers/thttp_header_Service_Route.h" //#include "tinyhttp/headers/thttp_header_Supported.h" #include "tinyhttp/headers/thttp_header_Transfer_Encoding.h" //#include "tinyhttp/headers/thttp_header_User_Agent.h" //#include "tinyhttp/headers/thttp_header_Via.h" #include "tinyhttp/headers/thttp_header_WWW_Authenticate.h" #include "tsk_debug.h" #undef ADD_HEADERS #undef ADD_HEADER #define ADD_HEADERS(headers)\ if(headers)\ {\ tsk_list_item_t *item;\ tsk_list_foreach(item, headers)\ {\ thttp_header_t *hdr = tsk_object_ref(item->data);\ tsk_list_push_back_data(message->headers, ((void**) &hdr));\ }\ \ TSK_OBJECT_SAFE_FREE(headers);\ } #define ADD_HEADER(header)\ if(header)\ {\ tsk_list_push_back_data(message->headers, ((void**) &header));\ } /*********************************** * Ragel state machine. */ /* #line 475 "./ragel/thttp_parser_header.rl" */ int thttp_header_parse(tsk_ragel_state_t *state, thttp_message_t *message) { int cs = 0; const char *p = state->tag_start; const char *pe = state->tag_end; const char *eof = pe; /* #line 101 "./src/parsers/thttp_parser_header.c" */ static const char _thttp_machine_parser_headers_actions[] = { 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 14, 1, 15, 1, 16, 1, 17, 1, 18, 1, 19, 1, 20, 1, 21, 1, 22, 1, 23, 1, 24, 1, 25, 1, 26, 1, 27, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1, 35, 1, 36, 1, 37, 1, 38, 1, 39, 1, 40, 1, 41 }; static const short _thttp_machine_parser_headers_key_offsets[] = { 0, 0, 44, 61, 64, 67, 68, 69, 70, 72, 95, 114, 133, 152, 171, 188, 191, 194, 195, 196, 197, 199, 222, 241, 260, 279, 298, 317, 336, 353, 356, 359, 360, 361, 362, 364, 383, 402, 421, 440, 459, 478, 497, 514, 517, 520, 521, 522, 523, 525, 544, 563, 582, 601, 620, 639, 658, 675, 678, 681, 682, 683, 684, 686, 705, 724, 743, 760, 763, 766, 767, 768, 769, 771, 790, 809, 828, 847, 866, 885, 904, 923, 942, 961, 980, 997, 1000, 1003, 1004, 1005, 1006, 1008, 1029, 1048, 1067, 1086, 1103, 1122, 1141, 1160, 1179, 1198, 1217, 1236, 1253, 1256, 1259, 1260, 1261, 1262, 1264, 1283, 1304, 1323, 1342, 1361, 1380, 1399, 1418, 1435, 1438, 1441, 1442, 1443, 1444, 1446, 1465, 1484, 1503, 1520, 1547, 1566, 1585, 1604, 1623, 1642, 1661, 1680, 1697, 1700, 1703, 1704, 1705, 1706, 1708, 1731, 1750, 1769, 1788, 1807, 1826, 1845, 1862, 1865, 1868, 1869, 1870, 1871, 1873, 1892, 1911, 1930, 1949, 1966, 1969, 1972, 1973, 1974, 1975, 1977, 1996, 2015, 2034, 2053, 2072, 2091, 2108, 2111, 2114, 2115, 2116, 2117, 2119, 2138, 2156, 2173, 2176, 2179, 2180, 2181, 2182, 2184, 2203, 2222, 2241, 2260, 2277, 2280, 2283, 2284, 2285, 2286, 2288, 2307, 2326, 2345, 2362, 2365, 2368, 2369, 2370, 2371, 2373, 2392, 2411, 2430, 2447, 2450, 2453, 2454, 2455, 2456, 2458, 2479, 2498, 2517, 2534, 2537, 2540, 2541, 2542, 2543, 2545, 2564, 2585, 2604, 2623, 2640, 2643, 2646, 2647, 2648, 2649, 2651, 2670, 2689, 2708, 2725, 2728, 2731, 2732, 2733, 2734, 2736, 2755, 2774, 2793, 2810, 2813, 2816, 2817, 2818, 2819, 2821, 2840, 2859, 2878, 2895, 2898, 2901, 2902, 2903, 2904, 2906, 2925, 2942, 2967, 2988, 3007, 3026, 3045, 3062, 3065, 3068, 3069, 3070, 3071, 3073, 3092, 3111, 3130, 3149, 3168, 3187, 3204, 3223, 3242, 3261, 3280, 3299, 3316, 3319, 3322, 3323, 3324, 3325, 3327, 3346, 3365, 3384, 3401, 3420, 3439, 3458, 3477, 3496, 3513, 3516, 3519, 3520, 3521, 3522, 3524, 3543, 3562, 3581, 3600, 3617, 3620, 3623, 3624, 3625, 3626, 3628, 3647, 3666, 3685, 3704, 3723, 3742, 3761, 3780, 3799, 3816, 3835, 3854, 3873, 3892, 3911, 3928, 3931, 3934, 3935, 3936, 3937, 3939, 3958, 3977, 3996, 4013, 4032, 4051, 4070, 4089, 4108, 4127, 4146, 4165, 4182, 4185, 4188, 4189, 4190, 4191, 4193, 4212, 4231, 4248, 4267, 4286, 4305, 4324, 4343, 4362, 4381, 4400, 4417, 4420, 4423, 4424, 4425, 4426, 4428, 4447, 4468, 4487, 4506, 4525, 4542, 4545, 4548, 4549, 4550, 4551, 4553, 4572, 4591, 4608, 4627, 4646, 4665, 4684, 4705, 4724, 4743, 4762, 4781, 4800, 4819, 4838, 4855, 4858, 4861, 4862, 4863, 4864, 4866, 4885, 4904, 4923, 4942, 4961, 4980, 4999, 5018, 5035, 5038, 5041, 5042, 5043, 5044, 5046, 5067, 5086, 5105, 5124, 5141, 5144, 5147, 5148, 5149, 5150, 5152, 5171, 5190, 5209, 5228, 5247, 5264, 5267, 5270, 5271, 5272, 5273, 5275, 5296, 5313, 5316, 5319, 5320, 5321, 5322, 5324, 5343, 5364, 5383, 5402, 5421, 5438, 5441, 5444, 5445, 5446, 5447, 5449, 5468, 5487, 5506, 5525, 5542, 5561, 5580, 5599, 5618, 5637, 5656, 5675, 5694, 5711, 5714, 5717, 5718, 5719, 5720, 5722, 5743, 5762, 5781, 5800, 5819, 5838, 5855, 5858, 5861, 5862, 5863, 5864, 5866, 5885, 5904, 5921, 5940, 5959, 5978, 5997, 6016, 6033, 6036, 6039, 6040, 6041, 6042, 6044, 6063, 6082, 6099, 6102, 6105, 6106, 6107, 6108, 6110, 6131, 6150, 6169, 6188, 6207, 6226, 6243, 6246, 6249, 6250, 6251, 6252, 6254, 6273, 6290, 6309, 6328, 6347, 6366, 6385, 6404, 6423, 6442, 6461, 6480, 6499, 6518, 6535, 6538, 6541, 6542, 6543, 6544, 6546, 6567, 6588 }; static const char _thttp_machine_parser_headers_trans_keys[] = { 33, 37, 39, 65, 67, 68, 69, 70, 72, 73, 76, 77, 80, 82, 84, 85, 86, 87, 97, 99, 100, 101, 102, 104, 105, 108, 109, 112, 114, 116, 117, 118, 119, 126, 42, 43, 45, 46, 48, 57, 66, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 67, 76, 85, 99, 108, 117, 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, 69, 101, 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, 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, 58, 9, 13, 32, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 67, 69, 76, 99, 101, 108, 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, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 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, 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, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 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, 68, 100, 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, 71, 103, 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, 13, 10, 10, 9, 32, 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, 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, 85, 117, 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, 71, 103, 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, 13, 10, 10, 9, 32, 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, 79, 111, 126, 42, 43, 45, 46, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 79, 111, 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, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 90, 122, 126, 42, 43, 45, 46, 48, 57, 65, 89, 95, 121, 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, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 65, 79, 97, 111, 126, 42, 43, 45, 46, 48, 57, 66, 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, 72, 104, 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, 45, 46, 58, 126, 42, 43, 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, 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, 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, 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, 13, 10, 10, 9, 32, 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, 13, 10, 10, 9, 32, 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, 69, 76, 77, 82, 84, 101, 108, 109, 114, 116, 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, 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, 68, 100, 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, 71, 103, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 65, 69, 79, 97, 101, 111, 126, 42, 43, 45, 46, 48, 57, 66, 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, 85, 117, 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, 71, 103, 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, 13, 10, 10, 9, 32, 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, 13, 10, 10, 9, 32, 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, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 68, 100, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 53, 58, 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, 13, 10, 10, 9, 32, 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, 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, 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, 13, 10, 10, 9, 32, 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, 80, 112, 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, 13, 10, 10, 9, 32, 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, 84, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 84, 88, 116, 120, 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, 71, 103, 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, 13, 10, 10, 9, 32, 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, 69, 73, 101, 105, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 69, 101, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 77, 109, 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, 13, 10, 10, 9, 32, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 70, 102, 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, 77, 78, 82, 85, 109, 110, 114, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 65, 79, 97, 111, 126, 42, 43, 45, 46, 48, 57, 66, 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, 67, 99, 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, 13, 10, 10, 9, 32, 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, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 70, 102, 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, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 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, 45, 46, 58, 126, 42, 43, 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, 78, 110, 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, 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, 13, 10, 10, 9, 32, 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, 69, 101, 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, 77, 109, 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, 84, 116, 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, 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, 13, 10, 10, 9, 32, 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, 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, 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, 13, 10, 10, 9, 32, 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, 77, 109, 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, 68, 100, 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, 70, 102, 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, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 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, 45, 46, 58, 126, 42, 43, 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, 78, 110, 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, 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, 13, 10, 10, 9, 32, 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, 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, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 77, 109, 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, 68, 100, 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, 70, 102, 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, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 88, 120, 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, 70, 102, 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, 82, 114, 126, 42, 43, 45, 46, 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, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 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, 68, 100, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 79, 97, 111, 126, 42, 43, 45, 46, 48, 57, 66, 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, 77, 109, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 88, 120, 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, 45, 46, 58, 126, 42, 43, 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, 85, 117, 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, 69, 79, 101, 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, 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, 67, 99, 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, 84, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 90, 122, 126, 42, 43, 45, 46, 48, 57, 65, 89, 95, 121, 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, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 65, 69, 97, 101, 126, 42, 43, 45, 46, 48, 57, 66, 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, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 70, 102, 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, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 69, 82, 101, 114, 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, 13, 10, 10, 9, 32, 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, 73, 78, 105, 110, 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, 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, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 13, 10, 10, 9, 32, 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, 70, 102, 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, 45, 46, 58, 126, 42, 43, 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, 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, 68, 100, 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, 71, 103, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 80, 83, 112, 115, 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, 13, 10, 10, 9, 32, 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, 45, 46, 58, 126, 42, 43, 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, 71, 103, 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, 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, 13, 10, 10, 9, 32, 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, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 65, 87, 97, 119, 126, 42, 43, 45, 46, 48, 57, 66, 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, 78, 110, 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, 71, 103, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 87, 119, 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, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 85, 117, 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, 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, 58, 73, 105, 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, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 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, 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, 13, 10, 10, 9, 32, 9, 32, 33, 37, 39, 58, 65, 79, 97, 111, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 88, 116, 120, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 0 }; static const char _thttp_machine_parser_headers_single_lengths[] = { 0, 34, 7, 3, 3, 1, 1, 1, 2, 13, 9, 9, 9, 9, 9, 3, 3, 1, 1, 1, 2, 13, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 11, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 17, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 13, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 8, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 11, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 15, 11, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 11, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 11, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 7, 3, 3, 1, 1, 1, 2, 9, 11, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 1, 1, 2, 11, 11, 0 }; static const char _thttp_machine_parser_headers_range_lengths[] = { 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 4, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 4, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 4, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 0 }; static const short _thttp_machine_parser_headers_index_offsets[] = { 0, 0, 40, 53, 57, 61, 63, 65, 67, 70, 89, 104, 119, 134, 149, 163, 167, 171, 173, 175, 177, 180, 199, 214, 229, 244, 259, 274, 289, 302, 306, 310, 312, 314, 316, 319, 334, 349, 364, 379, 394, 409, 424, 437, 441, 445, 447, 449, 451, 454, 469, 484, 499, 514, 529, 544, 559, 572, 576, 580, 582, 584, 586, 589, 604, 619, 634, 647, 651, 655, 657, 659, 661, 664, 679, 694, 709, 724, 739, 754, 769, 784, 799, 814, 829, 842, 846, 850, 852, 854, 856, 859, 876, 891, 906, 921, 935, 950, 965, 980, 995, 1010, 1025, 1040, 1053, 1057, 1061, 1063, 1065, 1067, 1070, 1085, 1102, 1117, 1132, 1147, 1162, 1177, 1192, 1205, 1209, 1213, 1215, 1217, 1219, 1222, 1237, 1252, 1267, 1281, 1304, 1319, 1334, 1349, 1364, 1379, 1394, 1409, 1422, 1426, 1430, 1432, 1434, 1436, 1439, 1458, 1473, 1488, 1503, 1518, 1533, 1548, 1561, 1565, 1569, 1571, 1573, 1575, 1578, 1593, 1608, 1623, 1638, 1651, 1655, 1659, 1661, 1663, 1665, 1668, 1683, 1698, 1713, 1728, 1743, 1758, 1771, 1775, 1779, 1781, 1783, 1785, 1788, 1803, 1817, 1830, 1834, 1838, 1840, 1842, 1844, 1847, 1862, 1877, 1892, 1907, 1920, 1924, 1928, 1930, 1932, 1934, 1937, 1952, 1967, 1982, 1995, 1999, 2003, 2005, 2007, 2009, 2012, 2027, 2042, 2057, 2070, 2074, 2078, 2080, 2082, 2084, 2087, 2104, 2119, 2134, 2147, 2151, 2155, 2157, 2159, 2161, 2164, 2179, 2196, 2211, 2226, 2239, 2243, 2247, 2249, 2251, 2253, 2256, 2271, 2286, 2301, 2314, 2318, 2322, 2324, 2326, 2328, 2331, 2346, 2361, 2376, 2389, 2393, 2397, 2399, 2401, 2403, 2406, 2421, 2436, 2451, 2464, 2468, 2472, 2474, 2476, 2478, 2481, 2496, 2510, 2531, 2548, 2563, 2578, 2593, 2606, 2610, 2614, 2616, 2618, 2620, 2623, 2638, 2653, 2668, 2683, 2698, 2713, 2727, 2742, 2757, 2772, 2787, 2802, 2815, 2819, 2823, 2825, 2827, 2829, 2832, 2847, 2862, 2877, 2891, 2906, 2921, 2936, 2951, 2966, 2979, 2983, 2987, 2989, 2991, 2993, 2996, 3011, 3026, 3041, 3056, 3069, 3073, 3077, 3079, 3081, 3083, 3086, 3101, 3116, 3131, 3146, 3161, 3176, 3191, 3206, 3221, 3235, 3250, 3265, 3280, 3295, 3310, 3323, 3327, 3331, 3333, 3335, 3337, 3340, 3355, 3370, 3385, 3399, 3414, 3429, 3444, 3459, 3474, 3489, 3504, 3519, 3532, 3536, 3540, 3542, 3544, 3546, 3549, 3564, 3579, 3593, 3608, 3623, 3638, 3653, 3668, 3683, 3698, 3713, 3726, 3730, 3734, 3736, 3738, 3740, 3743, 3758, 3775, 3790, 3805, 3820, 3833, 3837, 3841, 3843, 3845, 3847, 3850, 3865, 3880, 3894, 3909, 3924, 3939, 3954, 3971, 3986, 4001, 4016, 4031, 4046, 4061, 4076, 4089, 4093, 4097, 4099, 4101, 4103, 4106, 4121, 4136, 4151, 4166, 4181, 4196, 4211, 4226, 4239, 4243, 4247, 4249, 4251, 4253, 4256, 4273, 4288, 4303, 4318, 4331, 4335, 4339, 4341, 4343, 4345, 4348, 4363, 4378, 4393, 4408, 4423, 4436, 4440, 4444, 4446, 4448, 4450, 4453, 4470, 4483, 4487, 4491, 4493, 4495, 4497, 4500, 4515, 4532, 4547, 4562, 4577, 4590, 4594, 4598, 4600, 4602, 4604, 4607, 4622, 4637, 4652, 4667, 4681, 4696, 4711, 4726, 4741, 4756, 4771, 4786, 4801, 4814, 4818, 4822, 4824, 4826, 4828, 4831, 4848, 4863, 4878, 4893, 4908, 4923, 4936, 4940, 4944, 4946, 4948, 4950, 4953, 4968, 4983, 4997, 5012, 5027, 5042, 5057, 5072, 5085, 5089, 5093, 5095, 5097, 5099, 5102, 5117, 5132, 5145, 5149, 5153, 5155, 5157, 5159, 5162, 5179, 5194, 5209, 5224, 5239, 5254, 5267, 5271, 5275, 5277, 5279, 5281, 5284, 5299, 5313, 5328, 5343, 5358, 5373, 5388, 5403, 5418, 5433, 5448, 5463, 5478, 5493, 5506, 5510, 5514, 5516, 5518, 5520, 5523, 5540, 5557 }; static const short _thttp_machine_parser_headers_indicies[] = { 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2, 17, 4, 18, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 1, 19, 19, 20, 1, 20, 22, 20, 21, 23, 21, 24, 1, 25, 1, 21, 21, 1, 19, 19, 0, 0, 0, 20, 26, 27, 28, 26, 27, 28, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 29, 29, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 30, 30, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 31, 31, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 32, 32, 0, 0, 0, 0, 0, 0, 1, 33, 33, 0, 0, 0, 34, 0, 35, 0, 0, 0, 0, 0, 1, 33, 33, 35, 1, 35, 37, 35, 36, 38, 36, 39, 1, 40, 1, 36, 36, 1, 19, 19, 0, 0, 0, 20, 41, 42, 43, 41, 42, 43, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 44, 44, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 45, 45, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 46, 46, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 47, 47, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 48, 48, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 49, 49, 0, 0, 0, 0, 0, 0, 1, 50, 50, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 1, 50, 50, 51, 1, 51, 53, 51, 52, 54, 52, 55, 1, 56, 1, 52, 52, 1, 19, 19, 0, 0, 0, 20, 57, 57, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 58, 58, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 59, 59, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 60, 60, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 61, 61, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 62, 62, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 63, 63, 0, 0, 0, 0, 0, 0, 1, 64, 64, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 1, 64, 64, 65, 1, 65, 67, 65, 66, 68, 66, 69, 1, 70, 1, 66, 66, 1, 19, 19, 0, 0, 0, 20, 71, 71, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 72, 72, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 73, 73, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 74, 74, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 75, 75, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 76, 76, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 77, 77, 0, 0, 0, 0, 0, 0, 1, 78, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 1, 78, 78, 79, 1, 79, 81, 79, 80, 82, 80, 83, 1, 84, 1, 80, 80, 1, 19, 19, 0, 0, 0, 20, 85, 85, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 86, 86, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 87, 87, 0, 0, 0, 0, 0, 0, 1, 88, 88, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 1, 88, 88, 89, 1, 89, 91, 89, 90, 92, 90, 93, 1, 94, 1, 90, 90, 1, 19, 19, 0, 0, 0, 20, 95, 95, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 96, 96, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 97, 97, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 98, 98, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 99, 99, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 100, 100, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 101, 101, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 102, 102, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 103, 103, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 104, 104, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 105, 105, 0, 0, 0, 0, 0, 0, 1, 106, 106, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 1, 106, 106, 107, 1, 107, 109, 107, 108, 110, 108, 111, 1, 112, 1, 108, 108, 1, 19, 19, 0, 0, 0, 20, 113, 114, 113, 114, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 115, 115, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 116, 116, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 117, 117, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 118, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 119, 119, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 120, 120, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 121, 121, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 122, 122, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 123, 123, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 124, 124, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 125, 125, 0, 0, 0, 0, 0, 0, 1, 126, 126, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 1, 126, 126, 127, 1, 127, 129, 127, 128, 130, 128, 131, 1, 132, 1, 128, 128, 1, 19, 19, 0, 0, 0, 20, 133, 133, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 134, 135, 134, 135, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 136, 136, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 137, 137, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 138, 138, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 139, 139, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 140, 140, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 141, 141, 0, 0, 0, 0, 0, 0, 1, 142, 142, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 1, 142, 142, 143, 1, 143, 145, 143, 144, 146, 144, 147, 1, 148, 1, 144, 144, 1, 19, 19, 0, 0, 0, 20, 149, 149, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 150, 150, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 151, 151, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 152, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 153, 154, 155, 156, 157, 153, 154, 155, 156, 157, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 158, 158, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 159, 159, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 160, 160, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 161, 161, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 162, 162, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 163, 163, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 164, 164, 0, 0, 0, 0, 0, 0, 1, 165, 165, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 1, 165, 165, 166, 1, 166, 168, 166, 167, 169, 167, 170, 1, 171, 1, 167, 167, 1, 19, 19, 0, 0, 0, 20, 172, 173, 174, 172, 173, 174, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 175, 175, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 176, 176, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 177, 177, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 178, 178, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 179, 179, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 180, 180, 0, 0, 0, 0, 0, 0, 1, 181, 181, 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, 1, 181, 181, 182, 1, 182, 184, 182, 183, 185, 183, 186, 1, 187, 1, 183, 183, 1, 19, 19, 0, 0, 0, 20, 188, 188, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 189, 189, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 190, 190, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 191, 191, 0, 0, 0, 0, 0, 0, 1, 192, 192, 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, 1, 192, 192, 193, 1, 193, 195, 193, 194, 196, 194, 197, 1, 198, 1, 194, 194, 1, 19, 19, 0, 0, 0, 20, 199, 199, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 200, 200, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 201, 201, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 202, 202, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 203, 203, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 204, 204, 0, 0, 0, 0, 0, 0, 1, 205, 205, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 1, 205, 205, 206, 1, 206, 208, 206, 207, 209, 207, 210, 1, 211, 1, 207, 207, 1, 19, 19, 0, 0, 0, 20, 212, 212, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 213, 20, 0, 0, 0, 0, 0, 0, 1, 214, 214, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 1, 214, 214, 215, 1, 215, 217, 215, 216, 218, 216, 219, 1, 220, 1, 216, 216, 1, 19, 19, 0, 0, 0, 20, 221, 221, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 222, 222, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 223, 223, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 224, 224, 0, 0, 0, 0, 0, 0, 1, 225, 225, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 1, 225, 225, 226, 1, 226, 228, 226, 227, 229, 227, 230, 1, 231, 1, 227, 227, 1, 19, 19, 0, 0, 0, 20, 232, 232, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 233, 233, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 234, 234, 0, 0, 0, 0, 0, 0, 1, 235, 235, 0, 0, 0, 236, 0, 0, 0, 0, 0, 0, 1, 235, 235, 236, 1, 236, 238, 236, 237, 239, 237, 240, 1, 241, 1, 237, 237, 1, 19, 19, 0, 0, 0, 20, 242, 242, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 243, 243, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 244, 244, 0, 0, 0, 0, 0, 0, 1, 245, 245, 0, 0, 0, 246, 0, 0, 0, 0, 0, 0, 1, 245, 245, 246, 1, 246, 248, 246, 247, 249, 247, 250, 1, 251, 1, 247, 247, 1, 19, 19, 0, 0, 0, 20, 252, 253, 252, 253, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 254, 254, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 255, 255, 0, 0, 0, 0, 0, 0, 1, 256, 256, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 1, 256, 256, 257, 1, 257, 259, 257, 258, 260, 258, 261, 1, 262, 1, 258, 258, 1, 19, 19, 0, 0, 0, 20, 263, 263, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 264, 265, 264, 265, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 266, 266, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 267, 267, 0, 0, 0, 0, 0, 0, 1, 268, 268, 0, 0, 0, 269, 0, 0, 0, 0, 0, 0, 1, 268, 268, 269, 1, 269, 271, 269, 270, 272, 270, 273, 1, 274, 1, 270, 270, 1, 19, 19, 0, 0, 0, 20, 275, 275, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 276, 276, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 277, 277, 0, 0, 0, 0, 0, 0, 1, 278, 278, 0, 0, 0, 279, 0, 0, 0, 0, 0, 0, 1, 278, 278, 279, 1, 279, 281, 279, 280, 282, 280, 283, 1, 284, 1, 280, 280, 1, 19, 19, 0, 0, 0, 20, 285, 285, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 286, 286, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 287, 287, 0, 0, 0, 0, 0, 0, 1, 288, 288, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 1, 288, 288, 289, 1, 289, 291, 289, 290, 292, 290, 293, 1, 294, 1, 290, 290, 1, 19, 19, 0, 0, 0, 20, 295, 295, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 296, 296, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 297, 297, 0, 0, 0, 0, 0, 0, 1, 298, 298, 0, 0, 0, 299, 0, 0, 0, 0, 0, 0, 1, 298, 298, 299, 1, 299, 301, 299, 300, 302, 300, 303, 1, 304, 1, 300, 300, 1, 19, 19, 0, 0, 0, 20, 305, 305, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 306, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 307, 308, 309, 310, 307, 308, 309, 310, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 311, 312, 311, 312, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 313, 313, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 314, 314, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 315, 315, 0, 0, 0, 0, 0, 0, 1, 316, 316, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 1, 316, 316, 317, 1, 317, 319, 317, 318, 320, 318, 321, 1, 322, 1, 318, 318, 1, 19, 19, 0, 0, 0, 20, 323, 323, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 324, 324, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 325, 325, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 326, 326, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 327, 327, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 328, 328, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 329, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 330, 330, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 331, 331, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 332, 332, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 333, 333, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 334, 334, 0, 0, 0, 0, 0, 0, 1, 335, 335, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 1, 335, 335, 336, 1, 336, 338, 336, 337, 339, 337, 340, 1, 341, 1, 337, 337, 1, 19, 19, 0, 0, 0, 20, 342, 342, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 343, 343, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 344, 344, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 345, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 346, 346, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 347, 347, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 348, 348, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 349, 349, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 350, 350, 0, 0, 0, 0, 0, 0, 1, 351, 351, 0, 0, 0, 352, 0, 0, 0, 0, 0, 0, 1, 351, 351, 352, 1, 352, 354, 352, 353, 355, 353, 356, 1, 357, 1, 353, 353, 1, 19, 19, 0, 0, 0, 20, 358, 358, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 359, 359, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 360, 360, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 361, 361, 0, 0, 0, 0, 0, 0, 1, 362, 362, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 1, 362, 362, 363, 1, 363, 365, 363, 364, 366, 364, 367, 1, 368, 1, 364, 364, 1, 19, 19, 0, 0, 0, 20, 369, 369, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 370, 370, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 371, 371, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 372, 372, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 373, 373, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 374, 374, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 375, 375, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 376, 376, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 377, 377, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 378, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 379, 379, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 380, 380, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 381, 381, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 382, 382, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 383, 383, 0, 0, 0, 0, 0, 0, 1, 384, 384, 0, 0, 0, 385, 0, 0, 0, 0, 0, 0, 1, 384, 384, 385, 1, 385, 387, 385, 386, 388, 386, 389, 1, 390, 1, 386, 386, 1, 19, 19, 0, 0, 0, 20, 391, 391, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 392, 392, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 393, 393, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 394, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 395, 395, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 396, 396, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 397, 397, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 398, 398, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 399, 399, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 400, 400, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 401, 401, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 402, 402, 0, 0, 0, 0, 0, 0, 1, 403, 403, 0, 0, 0, 404, 0, 0, 0, 0, 0, 0, 1, 403, 403, 404, 1, 404, 406, 404, 405, 407, 405, 408, 1, 409, 1, 405, 405, 1, 19, 19, 0, 0, 0, 20, 410, 410, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 411, 411, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 412, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 413, 413, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 414, 414, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 415, 415, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 416, 416, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 417, 417, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 418, 418, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 419, 419, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 420, 420, 0, 0, 0, 0, 0, 0, 1, 421, 421, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 1, 421, 421, 422, 1, 422, 424, 422, 423, 425, 423, 426, 1, 427, 1, 423, 423, 1, 19, 19, 0, 0, 0, 20, 428, 428, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 429, 430, 429, 430, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 431, 431, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 432, 432, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 433, 433, 0, 0, 0, 0, 0, 0, 1, 434, 434, 0, 0, 0, 435, 0, 0, 0, 0, 0, 0, 1, 434, 434, 435, 1, 435, 437, 435, 436, 438, 436, 439, 1, 440, 1, 436, 436, 1, 19, 19, 0, 0, 0, 20, 441, 441, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 442, 442, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 443, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 444, 444, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 445, 445, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 446, 446, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 447, 447, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 448, 449, 448, 449, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 450, 450, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 451, 451, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 452, 452, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 453, 453, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 454, 454, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 455, 455, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 456, 456, 0, 0, 0, 0, 0, 0, 1, 457, 457, 0, 0, 0, 458, 0, 0, 0, 0, 0, 0, 1, 457, 457, 458, 1, 458, 460, 458, 459, 461, 459, 462, 1, 463, 1, 459, 459, 1, 19, 19, 0, 0, 0, 20, 464, 464, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 465, 465, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 466, 466, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 467, 467, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 468, 468, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 469, 469, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 470, 470, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 471, 471, 0, 0, 0, 0, 0, 0, 1, 472, 472, 0, 0, 0, 473, 0, 0, 0, 0, 0, 0, 1, 472, 472, 473, 1, 473, 475, 473, 474, 476, 474, 477, 1, 478, 1, 474, 474, 1, 19, 19, 0, 0, 0, 20, 479, 480, 479, 480, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 481, 481, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 482, 482, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 483, 483, 0, 0, 0, 0, 0, 0, 1, 484, 484, 0, 0, 0, 485, 0, 0, 0, 0, 0, 0, 1, 484, 484, 485, 1, 485, 487, 485, 486, 488, 486, 489, 1, 490, 1, 486, 486, 1, 19, 19, 0, 0, 0, 20, 491, 491, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 492, 492, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 493, 493, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 494, 494, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 495, 495, 0, 0, 0, 0, 0, 0, 1, 496, 496, 0, 0, 0, 497, 0, 0, 0, 0, 0, 0, 1, 496, 496, 497, 1, 497, 499, 497, 498, 500, 498, 501, 1, 502, 1, 498, 498, 1, 19, 19, 0, 0, 0, 20, 503, 504, 503, 504, 0, 0, 0, 0, 0, 0, 1, 505, 505, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 1, 505, 505, 506, 1, 506, 508, 506, 507, 509, 507, 510, 1, 511, 1, 507, 507, 1, 19, 19, 0, 0, 0, 20, 512, 512, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 513, 514, 513, 514, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 515, 515, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 516, 516, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 517, 517, 0, 0, 0, 0, 0, 0, 1, 518, 518, 0, 0, 0, 519, 0, 0, 0, 0, 0, 0, 1, 518, 518, 519, 1, 519, 521, 519, 520, 522, 520, 523, 1, 524, 1, 520, 520, 1, 19, 19, 0, 0, 0, 20, 525, 525, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 526, 526, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 527, 527, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 528, 528, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 529, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 530, 530, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 531, 531, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 532, 532, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 533, 533, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 534, 534, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 535, 535, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 536, 536, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 537, 537, 0, 0, 0, 0, 0, 0, 1, 538, 538, 0, 0, 0, 539, 0, 0, 0, 0, 0, 0, 1, 538, 538, 539, 1, 539, 541, 539, 540, 542, 540, 543, 1, 544, 1, 540, 540, 1, 19, 19, 0, 0, 0, 20, 545, 546, 545, 546, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 547, 547, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 548, 548, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 549, 549, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 550, 550, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 551, 551, 0, 0, 0, 0, 0, 0, 1, 552, 552, 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, 1, 552, 552, 553, 1, 553, 555, 553, 554, 556, 554, 557, 1, 558, 1, 554, 554, 1, 19, 19, 0, 0, 0, 20, 559, 559, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 560, 560, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 561, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 562, 562, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 563, 563, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 564, 564, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 565, 565, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 566, 566, 0, 0, 0, 0, 0, 0, 1, 567, 567, 0, 0, 0, 568, 0, 0, 0, 0, 0, 0, 1, 567, 567, 568, 1, 568, 570, 568, 569, 571, 569, 572, 1, 573, 1, 569, 569, 1, 19, 19, 0, 0, 0, 20, 574, 574, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 575, 575, 0, 0, 0, 0, 0, 0, 1, 576, 576, 0, 0, 0, 577, 0, 0, 0, 0, 0, 0, 1, 576, 576, 577, 1, 577, 579, 577, 578, 580, 578, 581, 1, 582, 1, 578, 578, 1, 19, 19, 0, 0, 0, 20, 583, 584, 583, 584, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 585, 585, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 586, 586, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 587, 587, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 588, 588, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 589, 589, 0, 0, 0, 0, 0, 0, 1, 590, 590, 0, 0, 0, 591, 0, 0, 0, 0, 0, 0, 1, 590, 590, 591, 1, 591, 593, 591, 592, 594, 592, 595, 1, 596, 1, 592, 592, 1, 19, 19, 0, 0, 0, 20, 597, 597, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 598, 0, 20, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 599, 599, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 600, 600, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 601, 601, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 602, 602, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 603, 603, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 604, 604, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 605, 605, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 606, 606, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 607, 607, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 608, 608, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 609, 609, 0, 0, 0, 0, 0, 0, 1, 19, 19, 0, 0, 0, 20, 610, 610, 0, 0, 0, 0, 0, 0, 1, 611, 611, 0, 0, 0, 612, 0, 0, 0, 0, 0, 0, 1, 611, 611, 612, 1, 612, 614, 612, 613, 615, 613, 616, 1, 617, 1, 613, 613, 1, 235, 235, 0, 0, 0, 236, 113, 114, 113, 114, 0, 0, 0, 0, 0, 0, 1, 165, 165, 0, 0, 0, 166, 252, 253, 252, 253, 0, 0, 0, 0, 0, 0, 1, 1, 0 }; static const short _thttp_machine_parser_headers_trans_targs[] = { 2, 0, 9, 91, 212, 222, 253, 263, 273, 355, 374, 392, 441, 464, 504, 532, 541, 575, 576, 3, 4, 5, 7, 6, 577, 8, 10, 63, 73, 11, 12, 13, 14, 15, 21, 16, 17, 19, 18, 577, 20, 22, 35, 49, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 32, 577, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 46, 577, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 60, 577, 62, 64, 65, 66, 67, 68, 69, 71, 70, 577, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 88, 577, 90, 92, 110, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 107, 577, 109, 111, 112, 125, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 122, 577, 124, 126, 127, 128, 129, 130, 144, 182, 191, 202, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 142, 141, 577, 143, 145, 158, 169, 146, 147, 148, 149, 150, 151, 152, 153, 154, 156, 155, 577, 157, 159, 160, 161, 162, 163, 164, 165, 167, 166, 577, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 180, 179, 577, 181, 183, 184, 185, 186, 187, 189, 188, 577, 190, 192, 193, 194, 195, 196, 197, 198, 200, 199, 577, 201, 203, 204, 205, 206, 207, 208, 210, 209, 577, 211, 213, 214, 215, 216, 217, 218, 220, 219, 577, 221, 223, 232, 224, 225, 226, 227, 228, 230, 229, 577, 231, 233, 234, 243, 235, 236, 237, 238, 239, 241, 240, 577, 242, 244, 245, 246, 247, 248, 249, 251, 250, 577, 252, 254, 255, 256, 257, 258, 259, 261, 260, 577, 262, 264, 265, 266, 267, 268, 269, 271, 270, 577, 272, 274, 275, 276, 306, 322, 333, 277, 287, 278, 279, 280, 281, 282, 283, 285, 284, 577, 286, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 304, 303, 577, 305, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 320, 319, 577, 321, 323, 324, 325, 326, 327, 328, 329, 331, 330, 577, 332, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 353, 352, 577, 354, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 372, 371, 577, 373, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 390, 389, 577, 391, 393, 394, 404, 395, 396, 397, 398, 399, 400, 402, 401, 577, 403, 405, 406, 407, 408, 409, 410, 411, 412, 426, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 424, 423, 577, 425, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 439, 438, 577, 440, 442, 452, 443, 444, 445, 446, 447, 448, 450, 449, 577, 451, 453, 454, 455, 456, 457, 458, 459, 460, 462, 461, 577, 463, 465, 472, 466, 467, 468, 470, 469, 577, 471, 473, 474, 484, 475, 476, 477, 478, 479, 480, 482, 481, 577, 483, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 502, 501, 577, 503, 505, 517, 506, 507, 508, 509, 510, 511, 512, 513, 515, 514, 577, 516, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 530, 529, 577, 531, 533, 534, 535, 536, 537, 539, 538, 577, 540, 542, 554, 543, 544, 545, 546, 547, 548, 549, 550, 552, 551, 577, 553, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 573, 572, 577, 574 }; static const char _thttp_machine_parser_headers_trans_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0 }; static const int thttp_machine_parser_headers_start = 1; static const int thttp_machine_parser_headers_first_final = 577; static const int thttp_machine_parser_headers_error = 0; static const int thttp_machine_parser_headers_en_main = 1; /* #line 485 "./ragel/thttp_parser_header.rl" */ /* #line 2116 "./src/parsers/thttp_parser_header.c" */ { cs = thttp_machine_parser_headers_start; } /* #line 486 "./ragel/thttp_parser_header.rl" */ /* #line 2123 "./src/parsers/thttp_parser_header.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 = _thttp_machine_parser_headers_trans_keys + _thttp_machine_parser_headers_key_offsets[cs]; _trans = _thttp_machine_parser_headers_index_offsets[cs]; _klen = _thttp_machine_parser_headers_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 += (_mid - _keys); goto _match; } } _keys += _klen; _trans += _klen; } _klen = _thttp_machine_parser_headers_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 += ((_mid - _keys)>>1); goto _match; } } _trans += _klen; } _match: _trans = _thttp_machine_parser_headers_indicies[_trans]; cs = _thttp_machine_parser_headers_trans_targs[_trans]; if ( _thttp_machine_parser_headers_trans_actions[_trans] == 0 ) goto _again; _acts = _thttp_machine_parser_headers_actions + _thttp_machine_parser_headers_trans_actions[_trans]; _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { case 0: /* #line 92 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Accept NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 1: /* #line 101 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Accept_Charset NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 2: /* #line 110 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Accept_Encoding NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 3: /* #line 119 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Accept_Language NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 4: /* #line 128 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Allow NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 5: /* #line 137 "./ragel/thttp_parser_header.rl" */ { thttp_header_Authorization_t *header = thttp_header_Authorization_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); } break; case 6: /* #line 144 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Cache_Control NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 7: /* #line 153 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Connection NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 8: /* #line 162 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Content_Encoding NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 9: /* #line 171 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Content_Language NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 10: /* #line 180 "./ragel/thttp_parser_header.rl" */ { if(!message->Content_Length){ message->Content_Length = thttp_header_Content_Length_parse(state->tag_start, (state->tag_end-state->tag_start)); } else{ thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("The message already have 'Content-Length' header."); } } break; case 11: /* #line 193 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Content_Location NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 12: /* #line 202 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Content_MD5 NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 13: /* #line 211 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Content_Range NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 14: /* #line 220 "./ragel/thttp_parser_header.rl" */ { if(!message->Content_Type){ message->Content_Type = thttp_header_Content_Type_parse(state->tag_start, (state->tag_end-state->tag_start)); } else{ thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("The message already have 'Content-Type' header."); } } break; case 15: /* #line 233 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Date NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 16: /* #line 242 "./ragel/thttp_parser_header.rl" */ { thttp_header_ETag_t *header = thttp_header_ETag_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Expires NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 17: /* #line 251 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Expect NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 18: /* #line 260 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Expires NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 19: /* #line 269 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_From NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 20: /* #line 278 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Host NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 21: /* #line 287 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_If_Match NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 22: /* #line 296 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_If_Modified_Since NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 23: /* #line 305 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_If_None_Match NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 24: /* #line 314 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_If_Range NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 25: /* #line 323 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_If_Unmodified_Since NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 26: /* #line 332 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Last_Modified NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 27: /* #line 341 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Max_Forwards NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 28: /* #line 350 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Pragma NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 29: /* #line 359 "./ragel/thttp_parser_header.rl" */ { thttp_header_Proxy_Authenticate_t *header = thttp_header_Proxy_Authenticate_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); } break; case 30: /* #line 366 "./ragel/thttp_parser_header.rl" */ { thttp_header_Proxy_Authorization_t *header = thttp_header_Proxy_Authorization_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); } break; case 31: /* #line 373 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Range NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 32: /* #line 382 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Referer NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 33: /* #line 391 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_TE NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 34: /* #line 400 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Trailer NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 35: /* #line 409 "./ragel/thttp_parser_header.rl" */ { thttp_header_Transfer_Encoding_t *header = thttp_header_Transfer_Encoding_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Trailer NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 36: /* #line 418 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Upgrade NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 37: /* #line 427 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_User_Agent NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 38: /* #line 436 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Via NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 39: /* #line 445 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_Warning NOT IMPLEMENTED. Will be added as Dummy header."); } break; case 40: /* #line 454 "./ragel/thttp_parser_header.rl" */ { thttp_header_WWW_Authenticate_t *header = thttp_header_WWW_Authenticate_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); } break; case 41: /* #line 461 "./ragel/thttp_parser_header.rl" */ { thttp_header_Dummy_t *header = thttp_header_Dummy_parse(state->tag_start, (state->tag_end-state->tag_start)); ADD_HEADER(header); //TSK_DEBUG_WARN("parse_header_extension_header NOT IMPLEMENTED. Will be added as Dummy header."); } break; /* #line 2575 "./src/parsers/thttp_parser_header.c" */ } } _again: if ( cs == 0 ) goto _out; if ( ++p != pe ) goto _resume; _test_eof: {} _out: {} } /* #line 487 "./ragel/thttp_parser_header.rl" */ return ( cs >= /* #line 2591 "./src/parsers/thttp_parser_header.c" */ 577 /* #line 488 "./ragel/thttp_parser_header.rl" */ ) ? 0 : -1; }