summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/examples/kea4/all-keys.json6
-rw-r--r--src/bin/dhcp4/dhcp4_lexer.cc1409
-rw-r--r--src/bin/dhcp4/dhcp4_lexer.ll4
-rw-r--r--src/bin/dhcp4/dhcp4_parser.cc8
-rw-r--r--src/bin/dhcp4/dhcp4_parser.h4
-rw-r--r--src/bin/dhcp4/dhcp4_parser.yy6
-rw-r--r--src/bin/dhcp4/json_config_parser.cc2
-rw-r--r--src/bin/dhcp4/tests/get_config_unittest.cc330
-rw-r--r--src/lib/dhcpsrv/alloc_engine.cc3
-rw-r--r--src/lib/dhcpsrv/cfg_globals.cc2
-rw-r--r--src/lib/dhcpsrv/cfg_globals.h2
-rw-r--r--src/lib/dhcpsrv/client_class_def.cc12
-rw-r--r--src/lib/dhcpsrv/client_class_def.h30
-rw-r--r--src/lib/dhcpsrv/network.cc4
-rw-r--r--src/lib/dhcpsrv/network.h2
-rw-r--r--src/lib/dhcpsrv/parsers/base_network_parser.cc8
-rw-r--r--src/lib/dhcpsrv/parsers/base_network_parser.h2
-rw-r--r--src/lib/dhcpsrv/parsers/client_class_def_parser.cc14
-rw-r--r--src/lib/dhcpsrv/parsers/dhcp_parsers.cc6
-rw-r--r--src/lib/dhcpsrv/parsers/shared_network_parser.cc2
-rw-r--r--src/lib/dhcpsrv/parsers/simple_parser4.cc10
-rw-r--r--src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc101
-rw-r--r--src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc2
-rw-r--r--src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc2
-rw-r--r--src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc35
-rw-r--r--src/lib/dhcpsrv/tests/client_class_def_unittest.cc1
-rw-r--r--src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc8
-rw-r--r--src/lib/dhcpsrv/tests/network_unittest.cc4
-rw-r--r--src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc2
29 files changed, 1097 insertions, 924 deletions
diff --git a/doc/examples/kea4/all-keys.json b/doc/examples/kea4/all-keys.json
index ec19ee74fc..075b54d301 100644
--- a/doc/examples/kea4/all-keys.json
+++ b/doc/examples/kea4/all-keys.json
@@ -783,7 +783,7 @@
// If greater than zero, it is the lifetime of leases temporarily allocated
// on DISCOVER. When zero (the default) leases are not allocated on DISCOVER.
- "offer-lft" : 60,
+ "offer-lifetime" : 60,
// List of shared network specific DHCP options.
"option-data": [],
@@ -922,7 +922,7 @@
// If greater than zero, it is the lifetime of leases temporarily allocated
// on DISCOVER. When zero (the default) leases are not allocated on DISCOVER.
- "offer-lft" : 60,
+ "offer-lifetime" : 60,
// Turn on storage of extended information (e.g. relay agent
// information) with each lease for this subnet.
@@ -1230,7 +1230,7 @@
// If greater than zero, it is the lifetime of leases temporarily allocated
// on DISCOVER. When zero (the default) leases are not allocated on DISCOVER.
- "offer-lft" : 60,
+ "offer-lifetime" : 60,
// Look at advanced example for the use of user-contexts.
"user-context": { }
diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc
index 19a8325e13..47a225a4eb 100644
--- a/src/bin/dhcp4/dhcp4_lexer.cc
+++ b/src/bin/dhcp4/dhcp4_lexer.cc
@@ -700,7 +700,7 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[2199] =
+static const flex_int16_t yy_accept[2204] =
{ 0,
217, 217, 0, 0, 0, 0, 0, 0, 0, 0,
225, 223, 10, 11, 223, 1, 217, 214, 217, 217,
@@ -835,7 +835,7 @@ static const flex_int16_t yy_accept[2199] =
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 204, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 168, 0, 0, 0, 166, 0, 0, 0,
@@ -849,101 +849,102 @@ static const flex_int16_t yy_accept[2199] =
0, 0, 0, 0, 0, 128, 0, 23, 0, 139,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 172, 0, 87, 0, 0, 0,
- 82, 0, 0, 0, 0, 0, 0, 142, 0, 38,
- 0, 161, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
- 0, 0, 0, 0, 0, 107, 108, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,
- 0, 0, 0, 0, 0, 59, 0, 0, 0, 0,
-
+ 0, 82, 0, 0, 0, 0, 0, 0, 142, 0,
+ 38, 0, 161, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
+ 0, 0, 0, 0, 0, 0, 107, 108, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 136,
+ 86, 0, 0, 0, 0, 0, 59, 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, 194, 0, 83,
- 98, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 0, 0, 0, 0,
- 169, 0, 0, 167, 0, 0, 158, 157, 0, 0,
- 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 182, 0, 0, 0, 0, 0, 122, 0,
-
+ 136, 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, 151, 0, 0, 0,
- 160, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 140, 0, 15, 0, 0, 44,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 171,
- 0, 0, 0, 0, 0, 0, 0, 0, 46, 64,
- 0, 0, 135, 0, 0, 0, 126, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 194, 0,
+ 0, 83, 98, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 167, 0, 0, 158, 157,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
+
+ 122, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 151, 0,
+ 0, 0, 160, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 140, 0, 15, 0,
+ 0, 44, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 171, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 46, 64, 0, 0, 135, 0, 0, 0, 126,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 56, 0, 90, 0, 0, 188, 0, 0, 193,
- 0, 110, 0, 0, 0, 200, 0, 0, 0, 0,
+ 0, 0, 0, 0, 56, 0, 90, 0, 0, 188,
+ 0, 0, 193, 0, 110, 0, 0, 0, 200, 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, 14, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 124, 0, 0,
- 0, 47, 0, 0, 196, 0, 0, 120, 31, 0,
- 0, 0, 156, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 191, 0, 164, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
- 0, 0, 0, 28, 0, 0, 170, 0, 0, 0,
- 55, 0, 0, 0, 0, 0, 112, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 124, 0, 0, 0, 47, 0, 0, 196, 0,
+ 0, 120, 31, 0, 0, 0, 156, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 191,
+
+ 0, 164, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 0, 0, 28, 0, 0,
+ 170, 0, 0, 0, 55, 0, 0, 0, 204, 0,
+ 0, 112, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 60, 0, 0, 109, 0, 0, 0,
- 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
+ 0, 109, 0, 0, 0, 45, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 141, 0, 0, 0, 30, 0, 0, 0, 0, 192,
- 0, 0, 0, 0, 0, 152, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 141, 0, 0, 0, 30,
+ 0, 0, 0, 0, 192, 0, 0, 0, 0, 0,
+
+ 152, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
+ 195, 0, 81, 0, 51, 0, 0, 0, 0, 189,
+ 187, 0, 32, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 17, 0, 0, 0, 0, 0,
+ 0, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 149, 0, 0, 0, 125, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 95, 0, 0, 0,
+ 0, 0, 52, 0, 0, 0, 0, 48, 154, 0,
+ 0, 0, 0, 0, 0, 0, 0, 71, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 21, 0, 0, 195, 0, 81, 0, 51,
- 0, 0, 0, 0, 189, 187, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
- 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 149, 0, 0, 0,
- 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 95, 0, 0, 0, 0, 0, 52, 0, 0,
- 0, 0, 48, 154, 0, 0, 0, 0, 0, 0,
- 0, 0, 71, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 177, 0, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 155, 0,
- 165, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 177, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 155, 0, 165, 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, 159, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 148, 0,
- 62, 61, 20, 0, 173, 0, 0, 0, 0, 0,
+ 159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 62, 61, 20, 0, 173,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 106, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 147, 0, 0,
-
- 0, 0, 0, 54, 0, 67, 0, 49, 175, 0,
- 101, 0, 0, 0, 0, 0, 0, 0, 0, 80,
- 0, 0, 0, 0, 0, 0, 0, 77, 0, 0,
- 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,
- 0, 0, 0, 0, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 203, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 0, 76, 0, 0, 0, 0,
- 153, 0, 0, 0, 0, 0, 198, 201, 174, 0,
-
- 121, 102, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 145, 0, 0, 0, 0, 0, 0, 150, 0, 74,
- 0, 65, 0, 0, 0, 0, 0, 0, 0, 103,
- 0, 0, 0, 0, 0, 0, 0, 144, 0, 0,
- 178, 202, 199, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 73, 0,
- 0, 0, 0, 27, 25, 0, 0, 0, 78, 0,
- 0, 105, 0, 70, 0, 0, 0, 0, 0, 0,
- 0, 0, 69, 0, 146, 26, 197, 0
+ 0, 0, 147, 0, 0, 0, 0, 0, 54, 0,
+ 67, 0, 49, 175, 0, 101, 0, 0, 0, 0,
+ 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
+ 0, 0, 77, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 53, 0, 0, 0, 0, 0, 0, 75,
+ 0, 0, 0, 0, 0, 0, 0, 0, 203, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 33, 0, 0,
+ 76, 0, 0, 0, 0, 153, 0, 0, 0, 0,
+
+ 0, 198, 201, 174, 0, 121, 102, 0, 0, 0,
+ 0, 0, 0, 0, 0, 72, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 145, 0, 0, 0, 0,
+ 0, 0, 150, 0, 74, 0, 65, 0, 0, 0,
+ 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
+ 0, 0, 144, 0, 0, 178, 202, 199, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 73, 0, 0, 0, 0, 27, 25,
+ 0, 0, 0, 78, 0, 0, 105, 0, 70, 0,
+ 0, 0, 0, 0, 0, 0, 0, 69, 0, 146,
+
+ 26, 197, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -990,282 +991,283 @@ static const YY_CHAR yy_meta[74] =
1, 1, 1
} ;
-static const flex_int16_t yy_base[2207] =
+static const flex_int16_t yy_base[2212] =
{ 0,
0, 72, 21, 31, 43, 51, 54, 60, 91, 99,
- 2589, 2590, 34, 2585, 145, 0, 207, 2590, 214, 221,
- 13, 228, 2590, 2565, 118, 25, 2, 6, 2590, 2590,
- 73, 11, 17, 2590, 2590, 2590, 104, 2573, 2526, 0,
- 2563, 108, 2580, 24, 262, 2590, 2522, 67, 2528, 84,
- 75, 88, 224, 91, 89, 290, 220, 2520, 206, 285,
- 236, 204, 197, 60, 291, 2529, 247, 308, 315, 214,
- 286, 2512, 212, 320, 344, 318, 2531, 335, 0, 385,
- 401, 415, 422, 427, 2590, 0, 2590, 441, 446, 236,
- 314, 238, 326, 353, 309, 2590, 2528, 2569, 2590, 263,
-
- 2590, 440, 2556, 308, 2525, 364, 10, 329, 359, 384,
- 391, 241, 2566, 0, 501, 408, 2508, 2505, 2509, 418,
- 2505, 80, 2513, 422, 2499, 2500, 2505, 78, 2515, 2498,
- 2507, 2497, 2506, 341, 343, 340, 2499, 2497, 410, 2545,
- 2549, 2495, 2488, 2541, 2481, 174, 2502, 2502, 2496, 340,
- 2489, 2487, 2488, 2480, 2485, 2479, 429, 2490, 412, 2475,
- 2474, 2488, 425, 2474, 422, 447, 2468, 497, 436, 471,
- 2489, 2486, 2487, 432, 2485, 2520, 2519, 450, 446, 2466,
- 471, 2467, 478, 2459, 2476, 2468, 2470, 0, 477, 483,
- 473, 496, 489, 515, 2466, 2590, 2511, 530, 2460, 499,
-
- 523, 530, 2514, 535, 2513, 532, 2512, 2590, 2590, 578,
- 441, 543, 2471, 2463, 2450, 2461, 2465, 2466, 2446, 2457,
- 2461, 2458, 2457, 475, 516, 2495, 2459, 2440, 2437, 2445,
- 2440, 2454, 2450, 2441, 2437, 2449, 2449, 2437, 2439, 2442,
- 2422, 2426, 2439, 2441, 2438, 2430, 2420, 2438, 2590, 2423,
- 2432, 523, 2470, 2416, 2425, 2467, 2414, 2424, 2427, 510,
- 2423, 2462, 2407, 2409, 2420, 2458, 557, 2403, 562, 2416,
- 2396, 2411, 561, 2401, 2407, 527, 2398, 2396, 2396, 2402,
- 2393, 2392, 2399, 2389, 2448, 2404, 2403, 2397, 530, 2404,
- 2399, 2391, 2381, 2396, 2395, 2390, 2394, 2375, 2391, 2377,
-
- 2383, 2390, 2372, 536, 2377, 2374, 2373, 603, 2372, 2367,
- 2381, 571, 2380, 2423, 2382, 560, 2373, 2361, 561, 2590,
- 2590, 583, 2590, 2590, 2359, 566, 461, 2407, 586, 2417,
- 580, 2590, 2416, 2590, 2410, 630, 2590, 2372, 590, 2349,
- 2358, 2406, 2366, 2349, 2366, 2402, 2362, 2345, 2351, 2403,
- 2358, 2361, 2352, 2355, 2341, 2352, 2396, 2390, 2348, 2345,
- 621, 2351, 2391, 2326, 2384, 2337, 2332, 2326, 2328, 2331,
- 2378, 2335, 2324, 2340, 2374, 2320, 628, 2334, 2319, 2318,
- 2331, 2329, 2327, 2327, 2326, 2321, 2328, 2323, 2319, 599,
- 2317, 2320, 2315, 2301, 2313, 2309, 2359, 589, 602, 2353,
-
- 2590, 2300, 2316, 2350, 2300, 2299, 2298, 2291, 2293, 2305,
- 2296, 2303, 2284, 2301, 2296, 610, 2343, 2296, 2293, 2296,
- 2590, 2295, 559, 2285, 2297, 600, 2272, 2273, 2294, 2285,
- 2275, 2326, 2271, 2285, 614, 2271, 2283, 2282, 2281, 2276,
- 2318, 2278, 2277, 2276, 2275, 2258, 2266, 2316, 2275, 2255,
- 2313, 2590, 2255, 2254, 661, 2267, 2265, 2590, 2590, 2265,
- 2254, 2246, 605, 2305, 2304, 2590, 2303, 2590, 639, 687,
- 2262, 606, 2301, 2243, 2254, 2293, 2246, 2248, 2250, 2237,
- 2245, 2233, 2590, 2238, 2231, 2243, 2246, 2233, 2232, 2590,
- 631, 2234, 2231, 626, 2229, 2231, 2590, 2276, 2238, 2235,
-
- 2220, 2234, 2232, 2232, 2226, 678, 2233, 2221, 2214, 2265,
- 2590, 2212, 2228, 2262, 2223, 2221, 2219, 2220, 2204, 2213,
- 2255, 2206, 2205, 2200, 2199, 2250, 2194, 636, 2213, 2187,
- 2194, 2199, 2209, 2243, 2247, 2590, 2192, 2188, 710, 2186,
- 2238, 2194, 2193, 2187, 2194, 2178, 2178, 2188, 2176, 2190,
- 2190, 2178, 2174, 2172, 2590, 2229, 2590, 2171, 2182, 2221,
- 2166, 2165, 2170, 2179, 2173, 2167, 2176, 2218, 2212, 2174,
- 2158, 2153, 2173, 2148, 2154, 589, 2168, 2161, 2165, 2148,
- 2206, 2147, 2147, 2198, 2143, 2144, 2143, 2141, 2158, 2590,
- 2154, 2191, 2590, 2142, 2140, 2590, 2151, 2187, 2186, 2146,
-
- 2130, 2147, 2187, 2590, 2590, 2590, 649, 664, 2127, 711,
- 2590, 2137, 2136, 660, 2143, 2123, 2133, 2175, 2120, 2173,
- 2118, 2128, 2170, 2115, 2122, 2115, 2127, 2109, 2109, 2124,
- 2123, 659, 2122, 2121, 2121, 2103, 2108, 2149, 2116, 2113,
- 2107, 2152, 2096, 2111, 2111, 2109, 2109, 2590, 2094, 2091,
- 2149, 2104, 2096, 2102, 2093, 2101, 2086, 2137, 2101, 2083,
- 2095, 2087, 530, 2078, 2077, 2071, 2076, 2091, 2088, 2089,
- 2068, 2078, 2084, 2127, 2082, 2074, 2065, 2590, 2066, 2068,
- 2063, 2076, 2068, 2067, 2072, 2111, 2110, 2061, 16, 2070,
- 2107, 2052, 2105, 2052, 2055, 2048, 2590, 2062, 2041, 2045,
-
- 2059, 2054, 2050, 2095, 2047, 2054, 2092, 2590, 2037, 2051,
- 2050, 2053, 2034, 2086, 2085, 2032, 2083, 2043, 2027, 2076,
- 20, 2590, 188, 224, 239, 702, 324, 363, 377, 457,
- 606, 572, 599, 585, 625, 649, 642, 2590, 674, 667,
- 2590, 691, 702, 670, 667, 667, 682, 694, 688, 677,
+ 2594, 2595, 34, 2590, 145, 0, 207, 2595, 214, 221,
+ 13, 228, 2595, 2570, 118, 25, 2, 6, 2595, 2595,
+ 73, 11, 17, 2595, 2595, 2595, 104, 2578, 2531, 0,
+ 2568, 108, 2585, 24, 262, 2595, 2527, 67, 2533, 84,
+ 75, 88, 224, 91, 89, 290, 220, 2525, 206, 285,
+ 236, 204, 197, 60, 291, 2534, 247, 308, 315, 214,
+ 286, 2517, 212, 320, 344, 318, 2536, 335, 0, 385,
+ 401, 415, 422, 427, 2595, 0, 2595, 441, 446, 236,
+ 314, 238, 326, 353, 309, 2595, 2533, 2574, 2595, 263,
+
+ 2595, 440, 2561, 308, 2530, 364, 10, 329, 359, 384,
+ 391, 241, 2571, 0, 501, 408, 2513, 2510, 2514, 418,
+ 2510, 80, 2518, 422, 2504, 2505, 2510, 78, 2520, 2503,
+ 2512, 2502, 2511, 341, 343, 340, 2504, 2502, 410, 2550,
+ 2554, 2500, 2493, 2546, 2486, 174, 2507, 2507, 2501, 340,
+ 2494, 2492, 2493, 2485, 2490, 2484, 429, 2495, 412, 2480,
+ 2479, 2493, 425, 2479, 422, 447, 2473, 497, 436, 471,
+ 2494, 2491, 2492, 432, 2490, 2525, 2524, 450, 446, 2471,
+ 471, 2472, 478, 2464, 2481, 2473, 2475, 0, 477, 483,
+ 473, 496, 489, 515, 2471, 2595, 2516, 530, 2465, 499,
+
+ 523, 530, 2519, 535, 2518, 532, 2517, 2595, 2595, 578,
+ 441, 543, 2476, 2468, 2455, 2466, 2470, 2471, 2451, 2462,
+ 2466, 2463, 2462, 475, 516, 2500, 2464, 2445, 2442, 2450,
+ 2445, 2459, 2455, 2446, 2442, 2454, 2454, 2442, 2444, 2447,
+ 2427, 2431, 2444, 2446, 2443, 2435, 2425, 2443, 2595, 2428,
+ 2437, 523, 2475, 2421, 2430, 2472, 2419, 2429, 2432, 510,
+ 2428, 2467, 2412, 2414, 2425, 2463, 557, 2408, 562, 2421,
+ 2401, 2416, 561, 2406, 2412, 527, 2403, 2401, 2401, 2407,
+ 2398, 2397, 2404, 2394, 2453, 2409, 2408, 2402, 530, 2409,
+ 2404, 2396, 2386, 2401, 2400, 2395, 2399, 2380, 2396, 2382,
+
+ 2388, 2395, 2377, 536, 2382, 2379, 2378, 603, 2377, 2372,
+ 2386, 571, 2385, 2428, 2387, 560, 2378, 2366, 561, 2595,
+ 2595, 583, 2595, 2595, 2364, 566, 461, 2412, 586, 2422,
+ 580, 2595, 2421, 2595, 2415, 630, 2595, 2377, 590, 2354,
+ 2363, 2411, 2371, 2354, 2371, 2407, 2367, 2350, 2356, 2408,
+ 2363, 2366, 2357, 2360, 2346, 2357, 2401, 2395, 2353, 2350,
+ 621, 2356, 2396, 2331, 2389, 2342, 2337, 2331, 2333, 2336,
+ 2383, 2340, 2329, 2345, 2379, 2325, 628, 2339, 2324, 2323,
+ 2336, 2334, 2332, 2332, 2331, 2326, 2333, 2328, 2324, 599,
+ 2322, 2325, 2320, 2306, 2318, 2314, 2364, 589, 602, 2358,
+
+ 2595, 2305, 2321, 2355, 2305, 2304, 2303, 2296, 2298, 2310,
+ 2301, 2308, 2289, 2306, 2301, 610, 2348, 2301, 2298, 2301,
+ 2595, 2300, 559, 2290, 2302, 600, 2277, 2278, 2299, 2290,
+ 2280, 2331, 2276, 2290, 614, 2276, 2288, 2287, 2286, 2281,
+ 2323, 2283, 2282, 2281, 2280, 2263, 2271, 2321, 2280, 2260,
+ 2318, 2595, 2260, 2259, 661, 2272, 2270, 2595, 2595, 2270,
+ 2259, 2251, 605, 2310, 2309, 2595, 2308, 2595, 639, 687,
+ 2267, 606, 2306, 2248, 2259, 2298, 2251, 2253, 2255, 2242,
+ 2250, 2238, 2595, 2243, 2236, 2248, 2251, 2238, 2237, 2595,
+ 631, 2239, 2236, 626, 2234, 2236, 2595, 2281, 2243, 2240,
+
+ 2225, 2239, 2237, 2237, 2231, 678, 2238, 2226, 2219, 2270,
+ 2595, 2217, 2233, 2267, 2228, 2226, 2224, 2225, 2209, 2218,
+ 2260, 2211, 2210, 2205, 2204, 2255, 2199, 636, 2218, 2192,
+ 2199, 2204, 2214, 2248, 2252, 2595, 2197, 2193, 710, 2191,
+ 2243, 2199, 2198, 2192, 2199, 2183, 2183, 2193, 2181, 2195,
+ 2195, 2183, 2179, 2177, 2595, 2234, 2595, 2176, 2187, 2226,
+ 2171, 2170, 2175, 2184, 2178, 2172, 2181, 2223, 2217, 2179,
+ 2163, 2158, 2178, 2153, 2159, 589, 2173, 2166, 2170, 2153,
+ 2211, 2152, 2152, 2203, 2148, 2149, 2148, 2146, 2163, 2595,
+ 2159, 2196, 2595, 2147, 2145, 2595, 2156, 2192, 2191, 2151,
+
+ 2135, 2152, 2192, 2595, 2595, 2595, 649, 664, 2132, 711,
+ 2595, 2142, 2141, 660, 2148, 2128, 2138, 2180, 2125, 2178,
+ 2123, 2133, 2175, 2120, 2127, 2120, 2132, 2114, 2114, 2129,
+ 2128, 659, 2127, 2126, 2126, 2108, 2113, 2154, 2121, 2118,
+ 2112, 2157, 2101, 2116, 2116, 2114, 2114, 2595, 2099, 2096,
+ 2154, 2109, 2101, 2107, 2098, 2106, 2091, 2142, 2106, 2088,
+ 2100, 2092, 530, 2083, 2082, 2076, 2081, 2096, 2093, 2094,
+ 2073, 2083, 2089, 2132, 2087, 2079, 2070, 2595, 2071, 2073,
+ 2068, 2081, 2073, 2072, 2077, 2116, 2115, 2066, 16, 2075,
+ 2112, 2057, 2110, 2057, 2060, 2053, 2595, 2067, 2046, 2050,
+
+ 2064, 2059, 2055, 2100, 2052, 2059, 2097, 2595, 2042, 2056,
+ 2055, 2058, 2039, 2091, 2090, 2037, 2088, 2048, 2032, 2081,
+ 20, 2595, 188, 224, 239, 702, 324, 363, 377, 457,
+ 606, 572, 599, 585, 625, 649, 642, 2595, 674, 667,
+ 2595, 691, 702, 670, 667, 667, 682, 694, 688, 677,
673, 687, 688, 735, 699, 742, 702, 706, 739, 740,
700, 700, 710, 715, 701, 704, 715, 715, 699, 756,
709, 719, 722, 760, 723, 716, 720, 717, 719, 766,
- 767, 731, 775, 732, 734, 2590, 737, 732, 723, 738,
+ 767, 731, 775, 732, 734, 2595, 737, 732, 723, 738,
743, 740, 728, 744, 743, 731, 745, 743, 751, 787,
- 749, 794, 795, 745, 737, 747, 794, 752, 802, 2590,
- 803, 756, 758, 754, 748, 764, 752, 765, 811, 807,
- 770, 759, 772, 2590, 762, 773, 762, 775, 765, 778,
+ 749, 794, 795, 745, 737, 747, 794, 752, 802, 2595,
+ 803, 756, 758, 754, 748, 764, 752, 762, 811, 807,
+ 770, 759, 772, 2595, 762, 773, 762, 775, 765, 778,
822, 823, 766, 777, 762, 785, 776, 765, 771, 826,
790, 774, 786, 830, 831, 778, 833, 797, 792, 797,
- 795, 839, 781, 793, 796, 800, 792, 789, 2590, 853,
+ 795, 839, 781, 793, 796, 800, 792, 789, 2595, 853,
812, 813, 801, 815, 805, 808, 819, 804, 811, 817,
818, 810, 824, 864, 840, 814, 828, 833, 830, 812,
- 819, 833, 878, 835, 832, 833, 831, 840, 2590, 836,
+ 819, 833, 878, 835, 832, 833, 831, 840, 2595, 836,
831, 846, 843, 829, 831, 850, 847, 835, 842, 843,
852, 856, 892, 855, 845, 843, 842, 853, 849, 905,
- 852, 863, 848, 849, 855, 871, 867, 862, 909, 2590,
+ 852, 863, 848, 849, 855, 871, 867, 862, 909, 2595,
873, 873, 866, 877, 875, 920, 862, 864, 883, 880,
- 868, 866, 928, 885, 871, 877, 875, 2590, 2590, 885,
- 890, 895, 883, 893, 895, 2590, 2590, 896, 883, 901,
- 888, 890, 883, 886, 2590, 889, 907, 894, 944, 895,
- 947, 893, 897, 915, 956, 2590, 2590, 901, 905, 904,
+ 868, 866, 928, 885, 871, 877, 875, 2595, 2595, 885,
+ 890, 895, 883, 893, 895, 2595, 2595, 896, 883, 901,
+ 888, 890, 883, 900, 2595, 889, 907, 894, 944, 895,
+ 947, 893, 897, 915, 956, 2595, 2595, 901, 905, 904,
901, 917, 962, 915, 905, 906, 902, 915, 926, 927,
922, 923, 925, 918, 920, 916, 922, 922, 924, 939,
- 922, 981, 938, 943, 920, 943, 929, 928, 2590, 935,
+ 922, 981, 938, 943, 920, 943, 929, 928, 2595, 935,
936, 985, 986, 938, 951, 989, 947, 937, 952, 946,
954, 941, 973, 981, 1003, 951, 946, 1001, 1002, 964,
- 1004, 2590, 1010, 953, 969, 973, 1014, 964, 963, 958,
+ 1004, 2595, 1010, 953, 969, 973, 1014, 964, 963, 958,
959, 971, 966, 962, 965, 966, 976, 986, 1022, 970,
- 988, 980, 975, 1033, 990, 991, 982, 2590, 996, 985,
+ 988, 980, 975, 1033, 990, 991, 982, 2595, 996, 985,
988, 996, 998, 983, 995, 1000, 997, 995, 1042, 1008,
- 992, 993, 2590, 1009, 1012, 995, 1006, 1055, 998, 1017,
- 2590, 1016, 1019, 1005, 1000, 1018, 1058, 1016, 1012, 1009,
- 1062, 1063, 1025, 1011, 1029, 1029, 1029, 1074, 1031, 1017,
- 1032, 1024, 1031, 1021, 1039, 1038, 1025, 1042, 2590, 1034,
+ 992, 993, 2595, 1009, 1012, 995, 1006, 1055, 998, 1017,
+ 2595, 1016, 1019, 1005, 1000, 1018, 1058, 1016, 1012, 1009,
+ 1062, 1063, 1025, 1011, 1029, 1029, 1029, 1030, 1031, 1017,
+ 1032, 1024, 1031, 1021, 1039, 1038, 1025, 1042, 2595, 1034,
- 1040, 1043, 1088, 1035, 2590, 1038, 1043, 1088, 1039, 1051,
+ 1040, 1043, 1088, 1035, 2595, 1038, 1043, 1088, 1039, 1051,
1045, 1046, 1044, 1046, 1056, 1101, 1045, 1046, 1046, 1105,
- 1049, 1061, 1054, 2590, 1050, 1058, 1056, 1107, 1050, 1071,
+ 1049, 1061, 1054, 2595, 1050, 1058, 1056, 1107, 1050, 1071,
1057, 1058, 1059, 1060, 1066, 1074, 1065, 1070, 1080, 1081,
- 1082, 1087, 1128, 1100, 1105, 2590, 1087, 1084, 1080, 1094,
- 1077, 1077, 2590, 1078, 1138, 1081, 2590, 1092, 1082, 1102,
+ 1082, 1087, 1128, 1100, 1105, 2595, 1087, 1084, 1080, 1094,
+ 1077, 1077, 2595, 1078, 1138, 1081, 2595, 1092, 1082, 1102,
1101, 1092, 1103, 1146, 1107, 1100, 1104, 1108, 1091, 1108,
- 1099, 1154, 1101, 2590, 1151, 1100, 1103, 1121, 1103, 1104,
+ 1099, 1154, 1101, 2595, 1151, 1100, 1103, 1121, 1103, 1104,
1104, 1125, 1122, 1110, 1128, 1116, 1130, 1116, 1124, 1133,
- 1113, 1128, 1135, 1177, 1173, 2590, 1179, 1180, 1122, 1132,
+ 1113, 1128, 1135, 1177, 1173, 2595, 1179, 1180, 1122, 1132,
1142, 1126, 1146, 1134, 1130, 1137, 1146, 1134, 1141, 1142,
- 1154, 1195, 1142, 1197, 1141, 2590, 1143, 1160, 1201, 1151,
- 1150, 1156, 1154, 1152, 1147, 1208, 1159, 1210, 1206, 1212,
- 2590, 1153, 1170, 1163, 1154, 1173, 1161, 1171, 1172, 1168,
- 1181, 1181, 2590, 1166, 1162, 1168, 2590, 1169, 1229, 1188,
- 1169, 1188, 1189, 1191, 1230, 1183, 1237, 1238, 1191, 1196,
- 1190, 1188, 1199, 1198, 1182, 1187, 1193, 1206, 2590, 1228,
- 1219, 1251, 1191, 1213, 1208, 1208, 1212, 1257, 2590, 1200,
- 1200, 1203, 1220, 1215, 1219, 1214, 2590, 1206, 1223, 1203,
- 1224, 1214, 1265, 1218, 2590, 1232, 1232, 1270, 1217, 1226,
-
- 1274, 1232, 1237, 1223, 1283, 1226, 1227, 1241, 1239, 1231,
- 1237, 1233, 1251, 1252, 1253, 2590, 1243, 2590, 1253, 2590,
- 1238, 1249, 1240, 1259, 1252, 1250, 1243, 1255, 1299, 1263,
- 1252, 1259, 1260, 1266, 2590, 1259, 2590, 1311, 1252, 1313,
- 2590, 1314, 1256, 1262, 1269, 1313, 1275, 2590, 1276, 2590,
- 1263, 2590, 1263, 1266, 1280, 1285, 1268, 1327, 1284, 1285,
- 1325, 1277, 1282, 1333, 1329, 1282, 1336, 2590, 1287, 1284,
- 1339, 1340, 1297, 1298, 1300, 2590, 2590, 1292, 1287, 1341,
- 1290, 1306, 1349, 1291, 1303, 1292, 1309, 1324, 1355, 2590,
- 1312, 1305, 1314, 1305, 1316, 2590, 1361, 1298, 1309, 1324,
-
- 1360, 1312, 1323, 1324, 1325, 1322, 1366, 1329, 1319, 1329,
- 1335, 1322, 1318, 1378, 1374, 1332, 1376, 1384, 1341, 2590,
- 1327, 1343, 1334, 1337, 1346, 1347, 1344, 1334, 1337, 1337,
- 1348, 1343, 1398, 1345, 1400, 1343, 1348, 1403, 1399, 1341,
- 1356, 1349, 1352, 1365, 1366, 1364, 1413, 2590, 1366, 2590,
- 2590, 1372, 1364, 1374, 1359, 1415, 1362, 1362, 1423, 1424,
- 1368, 1378, 1427, 2590, 1375, 1376, 1378, 1431, 1372, 1375,
- 2590, 1393, 1394, 2590, 1394, 1382, 2590, 2590, 1395, 1378,
- 1398, 1399, 1385, 1387, 1446, 1396, 2590, 1448, 1397, 1391,
- 1451, 1431, 2590, 1453, 1410, 1455, 1406, 1453, 2590, 1401,
-
- 1460, 1410, 1404, 1401, 1404, 1406, 1423, 1462, 1415, 1427,
- 1430, 1418, 1421, 1414, 1421, 1412, 2590, 1420, 1435, 1420,
- 2590, 1422, 1476, 1424, 1478, 1440, 1440, 1443, 1443, 1440,
- 1484, 1446, 1438, 1439, 2590, 1440, 2590, 1450, 1442, 2590,
- 1448, 1453, 1454, 1451, 1495, 1443, 1458, 1459, 1451, 2590,
- 1448, 1449, 1449, 1455, 1454, 1452, 1506, 1467, 2590, 2590,
- 1508, 1455, 2590, 1456, 1457, 1463, 2590, 1472, 1466, 1521,
- 1468, 1461, 1473, 1468, 1478, 1489, 1482, 1488, 1478, 1533,
- 1486, 2590, 1495, 2590, 1492, 1537, 2590, 1490, 1513, 2590,
- 1540, 2590, 1498, 1483, 1543, 2590, 1544, 1501, 1506, 1488,
-
- 1548, 1544, 1508, 1505, 1501, 1494, 1549, 1507, 1508, 1498,
- 1503, 1515, 1560, 1515, 1563, 1513, 1560, 1525, 1525, 1521,
- 1565, 1513, 1518, 1516, 1575, 1526, 1532, 1520, 1579, 1575,
- 1538, 1582, 1543, 1532, 1526, 1586, 1528, 1529, 1543, 1546,
- 1546, 1592, 1534, 1551, 1547, 1545, 1552, 1536, 1594, 1595,
- 1596, 1559, 1552, 1551, 1551, 1546, 1564, 2590, 1555, 1561,
- 1566, 1553, 1554, 1553, 1555, 1610, 1556, 2590, 1552, 1570,
- 1619, 2590, 1577, 1590, 2590, 1622, 1575, 2590, 2590, 1566,
- 1577, 1626, 2590, 1572, 1577, 1575, 1625, 1583, 1588, 1577,
- 1593, 1582, 1580, 1594, 1581, 2590, 1583, 2590, 1601, 1587,
-
- 1596, 1639, 1582, 1587, 1647, 1595, 1606, 1607, 2590, 1652,
- 1648, 1606, 1650, 2590, 1601, 1657, 2590, 1600, 1615, 1603,
- 2590, 1613, 1614, 1663, 1621, 1625, 2590, 1661, 1627, 1603,
- 1621, 1622, 1631, 1613, 1620, 1632, 1631, 1622, 1672, 1624,
- 1620, 1680, 1622, 1623, 1683, 1679, 1685, 1635, 1687, 1640,
- 1630, 1646, 1639, 2590, 1692, 1693, 2590, 1642, 1695, 1637,
- 2590, 1640, 1650, 1694, 1642, 1657, 1644, 1659, 1645, 1652,
- 1652, 1707, 1664, 1665, 1652, 1654, 1668, 1654, 1714, 1667,
- 2590, 1711, 1662, 1659, 2590, 1661, 1674, 1661, 1682, 2590,
- 1679, 1724, 1677, 1674, 1675, 2590, 1728, 1687, 1670, 1672,
-
- 1688, 1681, 1671, 1687, 1688, 1697, 1687, 1739, 1699, 1683,
- 1692, 1738, 2590, 1696, 1745, 2590, 1694, 2590, 1688, 2590,
- 1695, 1749, 1750, 1747, 2590, 2590, 1709, 2590, 1749, 1711,
- 1712, 1697, 1698, 1706, 1760, 1708, 1757, 1758, 1713, 2590,
- 1708, 1726, 1708, 1714, 1727, 1722, 2590, 1719, 1724, 1722,
- 1774, 1731, 1776, 1724, 1721, 1721, 2590, 1736, 1737, 1738,
- 2590, 1739, 1729, 1741, 1786, 1739, 1788, 1730, 1738, 1739,
- 1752, 2590, 1753, 1734, 1735, 1742, 1744, 2590, 1758, 1755,
- 1795, 1756, 2590, 2590, 1760, 1745, 1745, 1760, 1753, 1752,
- 1763, 1750, 2590, 1766, 1754, 1757, 1813, 1753, 1772, 1811,
-
- 1775, 1768, 1767, 1776, 1778, 1782, 2590, 1772, 2590, 1776,
- 1767, 1826, 1769, 1828, 1829, 1830, 1788, 1832, 2590, 1774,
- 2590, 1829, 1791, 1792, 1779, 1787, 1798, 1785, 1796, 1782,
- 1780, 1788, 1787, 1792, 1784, 1849, 1802, 1803, 1793, 1810,
- 1809, 1850, 1794, 1813, 1814, 2590, 1819, 1812, 1851, 1818,
- 1805, 1820, 1865, 1822, 1825, 1824, 1813, 1822, 2590, 1871,
- 2590, 2590, 2590, 1832, 2590, 1873, 1815, 1875, 1876, 1819,
- 1878, 1826, 1875, 1876, 1838, 1878, 1824, 1828, 1846, 1887,
- 1846, 2590, 1837, 1827, 1886, 1852, 1845, 1841, 1895, 1838,
- 1840, 1839, 1846, 1889, 1843, 1902, 1846, 2590, 1851, 1861,
-
- 1864, 1847, 1855, 2590, 1850, 2590, 1862, 2590, 2590, 1867,
- 2590, 1868, 1868, 1859, 1915, 1859, 1869, 1854, 1867, 2590,
- 1869, 1877, 1922, 1863, 1865, 1862, 1886, 2590, 1873, 1880,
- 1881, 1884, 1931, 1874, 2590, 1928, 1875, 1883, 1877, 1893,
- 1892, 1895, 1888, 1883, 1883, 1895, 1890, 2590, 1901, 1889,
- 1942, 1893, 1905, 1950, 2590, 1896, 1908, 1953, 1902, 1904,
- 1902, 1903, 1958, 2590, 1911, 1898, 1913, 1918, 1915, 1964,
- 1965, 1966, 1923, 1968, 1969, 1913, 1917, 1913, 1929, 1912,
- 1924, 1918, 2590, 1934, 1978, 2590, 1935, 1920, 1938, 1929,
- 2590, 1930, 1944, 1940, 1933, 1933, 2590, 2590, 2590, 1988,
-
- 2590, 2590, 1931, 1939, 1934, 1987, 1953, 1950, 1995, 1956,
- 2590, 1997, 1939, 1999, 1942, 1955, 1954, 1955, 1945, 1952,
- 2590, 1947, 2007, 1960, 1969, 1962, 2006, 2590, 1953, 2590,
- 1965, 2590, 2009, 2015, 1957, 1973, 2018, 2019, 2020, 2590,
- 1977, 1971, 1964, 1984, 1981, 1973, 1977, 2590, 2024, 1973,
- 2590, 2590, 2590, 1973, 1981, 2028, 1988, 1981, 2036, 1984,
- 1984, 1980, 1982, 2041, 2042, 1984, 2000, 1985, 2590, 2046,
- 1993, 2000, 2049, 2590, 2590, 2002, 2051, 1999, 2590, 2003,
- 2002, 2590, 2003, 2590, 1997, 1997, 2014, 2015, 2060, 2006,
- 2062, 2063, 2590, 2064, 2590, 2590, 2590, 2590, 2070, 2073,
-
- 2076, 2077, 2079, 2082, 2085, 2088
+ 1154, 1195, 1142, 1197, 1141, 1140, 1144, 1161, 1202, 1152,
+ 1151, 1157, 1155, 1153, 1148, 1209, 1160, 1211, 1207, 1213,
+ 2595, 1154, 1171, 1164, 1155, 1174, 1162, 1172, 1173, 1169,
+ 1182, 1183, 2595, 1167, 1163, 1169, 2595, 1170, 1230, 1189,
+ 1170, 1189, 1190, 1192, 1231, 1184, 1238, 1239, 1192, 1197,
+ 1191, 1189, 1200, 1199, 1183, 1188, 1194, 1207, 2595, 1229,
+ 1220, 1252, 1192, 1214, 1209, 1209, 1213, 1258, 2595, 1201,
+ 1201, 1204, 1221, 1216, 1220, 1215, 2595, 1207, 1224, 1204,
+ 1225, 1215, 1266, 1219, 2595, 1233, 1233, 1271, 1218, 1227,
+
+ 1275, 1233, 1238, 1224, 1284, 1227, 1228, 1242, 1240, 1232,
+ 1238, 1234, 1252, 1253, 1254, 2595, 1244, 2595, 1254, 2595,
+ 1239, 1250, 1241, 1260, 1253, 1251, 1244, 1256, 1300, 1264,
+ 1253, 1260, 1261, 1267, 2595, 1260, 2595, 1312, 1265, 1254,
+ 1315, 2595, 1316, 1258, 1264, 1271, 1315, 1277, 2595, 1278,
+ 2595, 1265, 2595, 1265, 1268, 1282, 1287, 1270, 1329, 1286,
+ 1287, 1327, 1279, 1284, 1335, 1331, 1284, 1338, 2595, 1289,
+ 1286, 1341, 1342, 1299, 1300, 1302, 2595, 2595, 1294, 1289,
+ 1343, 1292, 1308, 1351, 1293, 1305, 1294, 1311, 1326, 1357,
+ 2595, 1314, 1307, 1316, 1307, 1318, 2595, 1363, 1300, 1311,
+
+ 1326, 1362, 1314, 1325, 1326, 1327, 1324, 1368, 1331, 1321,
+ 1331, 1337, 1324, 1320, 1380, 1376, 1334, 1378, 1386, 1343,
+ 2595, 1329, 1345, 1336, 1339, 1348, 1349, 1346, 1336, 1339,
+ 1339, 1350, 1345, 1400, 1347, 1402, 1345, 1350, 1405, 1401,
+ 1343, 1358, 1351, 1354, 1367, 1368, 1366, 1415, 2595, 1364,
+ 1370, 2595, 2595, 1375, 1367, 1377, 1362, 1418, 1365, 1365,
+ 1426, 1427, 1371, 1381, 1430, 2595, 1378, 1379, 1381, 1434,
+ 1375, 1378, 2595, 1396, 1397, 2595, 1397, 1385, 2595, 2595,
+ 1398, 1381, 1401, 1402, 1388, 1390, 1449, 1399, 2595, 1451,
+ 1400, 1394, 1454, 1434, 2595, 1456, 1413, 1458, 1409, 1456,
+
+ 2595, 1404, 1463, 1413, 1407, 1404, 1407, 1409, 1426, 1465,
+ 1418, 1430, 1433, 1421, 1424, 1417, 1424, 1415, 2595, 1423,
+ 1438, 1423, 2595, 1425, 1479, 1427, 1481, 1443, 1443, 1446,
+ 1446, 1443, 1487, 1449, 1441, 1442, 2595, 1443, 2595, 1453,
+ 1445, 2595, 1451, 1456, 1457, 1454, 1498, 1446, 1461, 1462,
+ 1454, 2595, 1464, 1452, 1453, 1453, 1459, 1458, 1456, 1510,
+ 1471, 2595, 2595, 1512, 1459, 2595, 1460, 1461, 1467, 2595,
+ 1476, 1470, 1525, 1472, 1465, 1477, 1472, 1482, 1493, 1486,
+ 1492, 1482, 1537, 1490, 2595, 1499, 2595, 1496, 1541, 2595,
+ 1494, 1517, 2595, 1544, 2595, 1502, 1487, 1547, 2595, 1548,
+
+ 1505, 1510, 1492, 1552, 1548, 1512, 1509, 1505, 1498, 1553,
+ 1511, 1512, 1502, 1507, 1519, 1564, 1519, 1567, 1517, 1564,
+ 1529, 1529, 1525, 1569, 1517, 1522, 1520, 1579, 1530, 1536,
+ 1524, 1583, 1579, 1542, 1586, 1547, 1536, 1530, 1590, 1532,
+ 1533, 1547, 1594, 1551, 1551, 1597, 1539, 1556, 1552, 1550,
+ 1557, 1541, 1599, 1600, 1601, 1564, 1557, 1556, 1556, 1551,
+ 1569, 2595, 1560, 1566, 1571, 1558, 1559, 1558, 1560, 1615,
+ 1561, 2595, 1557, 1575, 1624, 2595, 1582, 1595, 2595, 1627,
+ 1580, 2595, 2595, 1571, 1582, 1631, 2595, 1577, 1582, 1580,
+ 1630, 1588, 1594, 1582, 1598, 1587, 1585, 1599, 1586, 2595,
+
+ 1588, 2595, 1606, 1592, 1601, 1644, 1587, 1592, 1652, 1600,
+ 1611, 1612, 2595, 1657, 1653, 1611, 1655, 2595, 1606, 1662,
+ 2595, 1605, 1620, 1608, 2595, 1618, 1619, 1668, 2595, 1626,
+ 1630, 2595, 1666, 1632, 1608, 1626, 1627, 1636, 1618, 1625,
+ 1637, 1636, 1627, 1677, 1629, 1625, 1685, 1627, 1628, 1688,
+ 1684, 1690, 1640, 1692, 1645, 1635, 1651, 1644, 2595, 1697,
+ 1698, 2595, 1647, 1700, 1642, 2595, 1645, 1655, 1699, 1647,
+ 1662, 1649, 1664, 1650, 1657, 1657, 1712, 1669, 1670, 1657,
+ 1659, 1673, 1659, 1719, 1672, 2595, 1716, 1667, 1664, 2595,
+ 1666, 1679, 1666, 1687, 2595, 1684, 1729, 1682, 1679, 1680,
+
+ 2595, 1733, 1692, 1675, 1677, 1693, 1686, 1676, 1692, 1693,
+ 1702, 1692, 1744, 1704, 1688, 1697, 1743, 2595, 1701, 1750,
+ 2595, 1699, 2595, 1693, 2595, 1700, 1754, 1755, 1752, 2595,
+ 2595, 1714, 2595, 1754, 1716, 1717, 1702, 1703, 1711, 1765,
+ 1713, 1762, 1763, 1718, 2595, 1713, 1731, 1713, 1719, 1732,
+ 1727, 2595, 1724, 1729, 1727, 1779, 1736, 1781, 1729, 1726,
+ 1726, 2595, 1741, 1742, 1743, 2595, 1744, 1734, 1746, 1791,
+ 1744, 1793, 1735, 1743, 1744, 1757, 2595, 1758, 1739, 1740,
+ 1747, 1749, 2595, 1763, 1760, 1800, 1761, 2595, 2595, 1765,
+ 1750, 1750, 1765, 1758, 1757, 1768, 1755, 2595, 1771, 1759,
+
+ 1762, 1818, 1758, 1777, 1816, 1780, 1773, 1772, 1781, 1783,
+ 1787, 2595, 1777, 2595, 1781, 1772, 1831, 1774, 1833, 1834,
+ 1835, 1793, 1837, 2595, 1779, 2595, 1834, 1796, 1797, 1784,
+ 1792, 1803, 1790, 1801, 1787, 1785, 1793, 1792, 1797, 1789,
+ 1854, 1807, 1808, 1798, 1815, 1814, 1855, 1799, 1818, 1819,
+ 2595, 1824, 1817, 1856, 1823, 1810, 1825, 1870, 1827, 1830,
+ 1829, 1818, 1827, 2595, 1876, 2595, 2595, 2595, 1837, 2595,
+ 1878, 1820, 1880, 1881, 1824, 1883, 1831, 1880, 1881, 1843,
+ 1883, 1829, 1833, 1851, 1892, 1851, 2595, 1842, 1832, 1891,
+ 1857, 1850, 1846, 1900, 1843, 1845, 1844, 1851, 1894, 1848,
+
+ 1907, 1851, 2595, 1856, 1866, 1869, 1852, 1860, 2595, 1855,
+ 2595, 1867, 2595, 2595, 1872, 2595, 1873, 1873, 1864, 1920,
+ 1864, 1874, 1859, 1872, 2595, 1874, 1882, 1927, 1868, 1870,
+ 1867, 1891, 2595, 1878, 1885, 1886, 1889, 1936, 1879, 2595,
+ 1933, 1880, 1888, 1882, 1898, 1897, 1900, 1893, 1888, 1888,
+ 1900, 1895, 2595, 1906, 1894, 1947, 1898, 1910, 1955, 2595,
+ 1901, 1913, 1958, 1907, 1909, 1907, 1908, 1963, 2595, 1916,
+ 1903, 1918, 1923, 1920, 1969, 1970, 1971, 1928, 1973, 1974,
+ 1918, 1922, 1918, 1934, 1917, 1929, 1923, 2595, 1939, 1983,
+ 2595, 1940, 1925, 1943, 1934, 2595, 1935, 1949, 1945, 1938,
+
+ 1938, 2595, 2595, 2595, 1993, 2595, 2595, 1936, 1944, 1939,
+ 1992, 1958, 1955, 2000, 1961, 2595, 2002, 1944, 2004, 1947,
+ 1960, 1959, 1960, 1950, 1957, 2595, 1952, 2012, 1965, 1974,
+ 1967, 2011, 2595, 1958, 2595, 1970, 2595, 2014, 2020, 1962,
+ 1978, 2023, 2024, 2025, 2595, 1982, 1976, 1969, 1989, 1986,
+ 1978, 1982, 2595, 2029, 1978, 2595, 2595, 2595, 1978, 1986,
+ 2033, 1993, 1986, 2041, 1989, 1989, 1985, 1987, 2046, 2047,
+ 1989, 2005, 1990, 2595, 2051, 1998, 2005, 2054, 2595, 2595,
+ 2007, 2056, 2004, 2595, 2008, 2007, 2595, 2008, 2595, 2002,
+ 2002, 2019, 2020, 2065, 2011, 2067, 2068, 2595, 2069, 2595,
+
+ 2595, 2595, 2595, 2075, 2078, 2081, 2082, 2084, 2087, 2090,
+ 2093
} ;
-static const flex_int16_t yy_def[2207] =
+static const flex_int16_t yy_def[2212] =
{ 0,
- 2199, 2199, 2200, 2200, 2199, 2199, 2199, 2199, 2199, 2199,
- 2198, 2198, 2198, 2198, 2198, 2201, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2202,
- 2198, 2198, 2198, 2203, 15, 2198, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2204, 45, 45, 45, 45,
+ 2204, 2204, 2205, 2205, 2204, 2204, 2204, 2204, 2204, 2204,
+ 2203, 2203, 2203, 2203, 2203, 2206, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2207,
+ 2203, 2203, 2203, 2208, 15, 2203, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2209, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2201, 2198,
- 2198, 2198, 2198, 2198, 2198, 2205, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2202, 2198, 2203,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2206, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2210, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2207, 2203, 2208,
- 2198, 2198, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 2206, 45, 2204, 45, 45, 45, 45, 45,
+ 2203, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 2211, 45, 2209, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2205, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2210, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 2206, 2198, 2198, 115,
+ 45, 45, 45, 45, 45, 45, 2211, 2203, 2203, 115,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
@@ -1273,9 +1275,9 @@ static const flex_int16_t yy_def[2207] =
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 45, 45, 45, 45, 45,
- 45, 2198, 45, 2198, 45, 115, 2198, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 2203, 45, 115, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
@@ -1283,210 +1285,211 @@ static const flex_int16_t yy_def[2207] =
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 2198, 45, 45, 45, 45, 45, 2198, 2198, 2198,
- 45, 45, 45, 45, 45, 2198, 45, 2198, 45, 115,
+ 45, 2203, 45, 45, 45, 45, 45, 2203, 2203, 2203,
+ 45, 45, 45, 45, 45, 2203, 45, 2203, 45, 115,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 45, 45, 2203,
+ 45, 45, 45, 45, 45, 45, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 2198, 45, 2198, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 2198, 45, 45, 2198, 45, 45, 45, 2198,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 2203,
+ 45, 45, 2203, 45, 45, 2203, 45, 45, 45, 2203,
- 45, 45, 45, 2198, 2198, 2198, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 2203, 2203, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 2203, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 2198, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 2203,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 2198, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 2203,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 2198, 45,
- 45, 45, 45, 45, 45, 2198, 2198, 45, 45, 45,
- 45, 45, 45, 45, 2198, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 2198, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 2203, 45,
+ 45, 45, 45, 45, 45, 2203, 2203, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 2198, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
- 45, 45, 45, 45, 2198, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 2198, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 45, 2198, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 2198, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 45, 2198, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
- 45, 45, 45, 45, 2198, 45, 45, 45, 45, 45,
-
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 2198, 45, 2198,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 2198, 45, 2198, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 2198, 45, 2198,
- 45, 2198, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 45, 45, 45, 45, 45, 2198, 2198, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 45, 45, 45, 45, 45, 2203, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
+ 45, 45, 45, 45, 45, 2203, 45, 2203, 45, 2203,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 2203, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 2203, 45, 2203, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 45, 45, 45, 45, 45, 2203, 2203, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 2198,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 2198, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 2198, 45, 45, 2198, 2198, 45, 45,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
- 45, 45, 2198, 45, 45, 45, 45, 45, 2198, 45,
+ 2203, 45, 45, 45, 45, 45, 2203, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 2198, 45, 2198, 45, 45, 2198,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 2198,
- 45, 45, 2198, 45, 45, 45, 2198, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 2198, 45, 2198, 45, 45, 2198, 45, 45, 2198,
- 45, 2198, 45, 45, 45, 2198, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 2203, 2203, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 2203, 45, 45, 2203, 2203,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
+
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 2203, 45, 2203, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 2203, 45, 45, 2203, 45, 45, 45, 2203,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 2203, 45, 45, 2203,
+ 45, 45, 2203, 45, 2203, 45, 45, 45, 2203, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 45, 2198, 45, 45, 2198, 45, 45, 2198, 2198, 45,
- 45, 45, 2198, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 2198, 45, 45,
-
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
- 45, 45, 45, 2198, 45, 45, 2198, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 2203, 45, 45, 2203, 45,
+ 45, 2203, 2203, 45, 45, 45, 2203, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 2203,
+
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 2203, 45, 45,
+ 2203, 45, 45, 45, 2203, 45, 45, 45, 2203, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 2198, 45, 45, 2198, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
+ 45, 2203, 45, 45, 45, 2203, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 2198, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 2203,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
+
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
+ 2203, 45, 2203, 45, 2203, 45, 45, 45, 45, 2203,
+ 2203, 45, 2203, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 45, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 2203, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 2203, 2203, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 2198, 45, 2198, 45, 2198,
- 45, 45, 45, 45, 2198, 2198, 45, 2198, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 2198, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 2198, 45, 45, 45, 45, 45, 2198, 45, 45,
- 45, 45, 2198, 2198, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 45, 45, 45, 45, 45,
-
- 45, 45, 45, 45, 45, 45, 2198, 45, 2198, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 2203, 45, 2203, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 2198, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
- 2198, 2198, 2198, 45, 2198, 45, 45, 45, 45, 45,
+ 2203, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 45, 2203, 2203, 2203, 45, 2203,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 2203, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+
+ 45, 45, 2203, 45, 45, 45, 45, 45, 2203, 45,
+ 2203, 45, 2203, 2203, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 45, 45, 2203,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 2198, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
-
- 45, 45, 45, 2198, 45, 2198, 45, 2198, 2198, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 45, 45, 45, 45, 2198, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 45, 45, 45, 45, 2198, 45, 45, 45, 45, 45,
- 45, 45, 45, 2198, 45, 45, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 45, 45, 45, 45, 2203,
+ 45, 45, 45, 45, 45, 45, 45, 45, 2203, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 45, 2198, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 2198, 2198, 2198, 45,
-
- 2198, 2198, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 2198, 45, 45, 45, 45, 45, 45, 2198, 45, 2198,
- 45, 2198, 45, 45, 45, 45, 45, 45, 45, 2198,
- 45, 45, 45, 45, 45, 45, 45, 2198, 45, 45,
- 2198, 2198, 2198, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 2198, 45,
- 45, 45, 45, 2198, 2198, 45, 45, 45, 2198, 45,
- 45, 2198, 45, 2198, 45, 45, 45, 45, 45, 45,
- 45, 45, 2198, 45, 2198, 2198, 2198, 0, 2198, 2198,
-
- 2198, 2198, 2198, 2198, 2198, 2198
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 45,
+ 2203, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
+
+ 45, 2203, 2203, 2203, 45, 2203, 2203, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 2203, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 2203, 45, 2203, 45, 45, 45,
+ 45, 45, 45, 45, 2203, 45, 45, 45, 45, 45,
+ 45, 45, 2203, 45, 45, 2203, 2203, 2203, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 2203, 45, 45, 45, 45, 2203, 2203,
+ 45, 45, 45, 2203, 45, 45, 2203, 45, 2203, 45,
+ 45, 45, 45, 45, 45, 45, 45, 2203, 45, 2203,
+
+ 2203, 2203, 0, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203
} ;
-static const flex_int16_t yy_nxt[2664] =
+static const flex_int16_t yy_nxt[2669] =
{ 0,
- 2198, 13, 14, 13, 2198, 15, 16, 2198, 17, 18,
+ 2203, 13, 14, 13, 2203, 15, 16, 2203, 17, 18,
19, 20, 21, 22, 22, 22, 22, 22, 23, 24,
85, 824, 37, 14, 37, 86, 25, 26, 38, 101,
855, 27, 37, 14, 37, 42, 28, 42, 38, 91,
@@ -1625,49 +1628,49 @@ static const flex_int16_t yy_nxt[2664] =
1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
- 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1388, 1411, 1412,
- 1413, 1414, 1415, 1389, 1416, 1417, 1418, 1419, 1420, 1421,
+ 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1389, 1412,
+ 1413, 1414, 1415, 1416, 1390, 1417, 1418, 1419, 1420, 1421,
1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441,
1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451,
1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461,
- 1462, 1463, 1464, 1465, 1466, 1467, 1469, 1470, 1471, 1472,
+ 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1471, 1472,
1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482,
1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492,
- 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1501, 1502, 1503,
+ 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1503,
1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513,
- 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1492, 1468, 1521,
- 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531,
+ 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1494,
+ 1470, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531,
1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541,
- 1500, 1542, 1543, 1545, 1546, 1547, 1548, 1549, 1550, 1551,
- 1544, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
- 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1569, 1570, 1573,
- 1571, 1568, 1572, 1574, 1575, 1576, 1577, 1578, 1579, 1580,
- 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1589, 1590, 1591,
- 1592, 1588, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600,
+ 1542, 1543, 1502, 1544, 1545, 1547, 1548, 1549, 1550, 1551,
+ 1552, 1553, 1546, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
+ 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570,
+ 1572, 1573, 1576, 1574, 1571, 1575, 1577, 1578, 1579, 1580,
+ 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590,
+ 1592, 1593, 1594, 1595, 1591, 1596, 1597, 1598, 1599, 1600,
1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610,
- 1589, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
+ 1611, 1612, 1613, 1592, 1614, 1615, 1616, 1617, 1618, 1619,
1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629,
1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639,
1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649,
- 1650, 1651, 1652, 1653, 1657, 1654, 1658, 1659, 1655, 1660,
- 1661, 1656, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669,
+ 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1661, 1658,
+ 1662, 1663, 1659, 1664, 1665, 1660, 1666, 1667, 1668, 1669,
1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679,
- 1680, 1681, 1682, 1683, 1684, 1685, 1687, 1688, 1689, 1690,
- 1691, 1692, 1693, 1694, 1695, 1696, 1686, 1697, 1698, 1699,
- 1700, 1674, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708,
- 1709, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719,
+ 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689,
+ 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
+ 1690, 1701, 1702, 1703, 1704, 1678, 1705, 1706, 1707, 1708,
+ 1709, 1710, 1711, 1712, 1713, 1715, 1716, 1717, 1718, 1719,
1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729,
1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739,
1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
- 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1710, 1768,
- 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
- 1779, 1780, 1781, 1782, 1756, 1783, 1784, 1785, 1786, 1787,
+ 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769,
+ 1770, 1771, 1714, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
+ 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1761,
1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797,
1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807,
1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817,
@@ -1678,8 +1681,8 @@ static const flex_int16_t yy_nxt[2664] =
1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857,
1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867,
1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877,
- 1878, 1879, 1881, 1882, 1883, 1884, 1880, 1885, 1886, 1887,
- 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897,
+ 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1886, 1887, 1888,
+ 1889, 1885, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897,
1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907,
1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917,
1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927,
@@ -1689,7 +1692,7 @@ static const flex_int16_t yy_nxt[2664] =
1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957,
1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967,
1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977,
- 1979, 1980, 1978, 1981, 1982, 1983, 1984, 1985, 1986, 1987,
+ 1978, 1979, 1980, 1981, 1982, 1984, 1985, 1983, 1986, 1987,
1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
@@ -1709,79 +1712,79 @@ static const flex_int16_t yy_nxt[2664] =
2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137,
2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147,
2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157,
- 2159, 2158, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167,
+ 2158, 2159, 2160, 2161, 2162, 2164, 2163, 2165, 2166, 2167,
2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177,
2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187,
2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197,
- 12, 12, 12, 36, 36, 36, 79, 98, 79, 100,
- 100, 100, 113, 113, 113, 188, 854, 188, 207, 207,
- 207, 853, 852, 851, 850, 849, 848, 847, 846, 845,
-
- 844, 843, 842, 841, 840, 839, 838, 837, 836, 835,
- 834, 833, 832, 831, 830, 829, 828, 827, 826, 823,
- 822, 821, 820, 819, 818, 817, 816, 815, 814, 813,
- 812, 811, 810, 809, 808, 807, 806, 805, 804, 803,
- 802, 801, 800, 797, 796, 795, 794, 793, 792, 791,
- 790, 789, 788, 787, 786, 785, 784, 783, 782, 781,
- 780, 779, 778, 777, 776, 775, 774, 773, 772, 771,
- 770, 769, 766, 765, 764, 763, 762, 761, 760, 759,
- 758, 757, 756, 755, 754, 753, 752, 751, 750, 747,
- 746, 744, 741, 740, 739, 738, 737, 736, 735, 734,
-
- 733, 732, 731, 730, 729, 728, 727, 726, 725, 724,
- 723, 722, 721, 720, 719, 718, 715, 714, 713, 712,
- 711, 710, 709, 708, 707, 706, 705, 704, 703, 702,
- 701, 700, 699, 698, 697, 696, 695, 694, 693, 692,
- 691, 690, 689, 688, 687, 686, 685, 684, 683, 682,
- 680, 679, 678, 677, 676, 675, 674, 673, 672, 669,
- 668, 667, 666, 665, 664, 663, 662, 661, 660, 659,
- 658, 657, 656, 655, 654, 653, 652, 651, 650, 647,
- 646, 645, 644, 643, 642, 641, 640, 639, 638, 634,
- 633, 626, 625, 624, 623, 622, 621, 620, 619, 618,
-
- 617, 616, 615, 614, 613, 612, 611, 609, 606, 605,
- 604, 602, 601, 600, 599, 598, 595, 594, 593, 592,
- 591, 590, 589, 588, 587, 586, 585, 584, 583, 582,
- 581, 580, 579, 578, 575, 574, 573, 572, 571, 570,
- 569, 568, 565, 564, 561, 560, 559, 558, 557, 554,
- 553, 552, 551, 550, 549, 548, 547, 546, 545, 544,
- 543, 542, 541, 540, 536, 535, 534, 533, 532, 531,
- 530, 526, 525, 524, 523, 522, 521, 520, 519, 518,
- 517, 516, 515, 510, 509, 508, 507, 506, 505, 504,
- 503, 502, 501, 500, 499, 498, 497, 496, 493, 492,
-
- 491, 490, 489, 488, 487, 486, 485, 484, 483, 482,
- 481, 480, 479, 478, 477, 476, 475, 474, 473, 471,
- 469, 468, 466, 464, 460, 457, 456, 453, 452, 451,
- 449, 448, 447, 445, 444, 443, 440, 439, 438, 437,
- 436, 435, 434, 433, 432, 431, 430, 429, 428, 427,
- 424, 423, 422, 421, 420, 419, 418, 417, 416, 415,
- 414, 413, 410, 409, 405, 404, 403, 400, 398, 397,
- 396, 395, 394, 393, 389, 388, 387, 386, 385, 384,
- 383, 380, 379, 378, 377, 376, 375, 374, 373, 372,
- 371, 370, 369, 368, 367, 366, 365, 364, 363, 362,
-
- 361, 360, 359, 358, 357, 356, 350, 349, 348, 347,
- 346, 345, 344, 343, 342, 341, 340, 208, 334, 332,
- 328, 326, 325, 318, 317, 316, 315, 313, 311, 307,
- 306, 305, 302, 301, 300, 285, 279, 274, 273, 272,
- 269, 266, 265, 264, 263, 262, 261, 258, 257, 256,
- 253, 252, 251, 250, 249, 248, 244, 243, 235, 234,
- 233, 232, 231, 228, 227, 226, 222, 219, 215, 214,
- 213, 208, 199, 197, 196, 195, 186, 166, 145, 119,
- 105, 103, 43, 99, 97, 96, 87, 43, 2198, 11,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
-
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198
+ 2198, 2199, 2200, 2201, 2202, 12, 12, 12, 36, 36,
+ 36, 79, 98, 79, 100, 100, 100, 113, 113, 113,
+ 188, 854, 188, 207, 207, 207, 853, 852, 851, 850,
+
+ 849, 848, 847, 846, 845, 844, 843, 842, 841, 840,
+ 839, 838, 837, 836, 835, 834, 833, 832, 831, 830,
+ 829, 828, 827, 826, 823, 822, 821, 820, 819, 818,
+ 817, 816, 815, 814, 813, 812, 811, 810, 809, 808,
+ 807, 806, 805, 804, 803, 802, 801, 800, 797, 796,
+ 795, 794, 793, 792, 791, 790, 789, 788, 787, 786,
+ 785, 784, 783, 782, 781, 780, 779, 778, 777, 776,
+ 775, 774, 773, 772, 771, 770, 769, 766, 765, 764,
+ 763, 762, 761, 760, 759, 758, 757, 756, 755, 754,
+ 753, 752, 751, 750, 747, 746, 744, 741, 740, 739,
+
+ 738, 737, 736, 735, 734, 733, 732, 731, 730, 729,
+ 728, 727, 726, 725, 724, 723, 722, 721, 720, 719,
+ 718, 715, 714, 713, 712, 711, 710, 709, 708, 707,
+ 706, 705, 704, 703, 702, 701, 700, 699, 698, 697,
+ 696, 695, 694, 693, 692, 691, 690, 689, 688, 687,
+ 686, 685, 684, 683, 682, 680, 679, 678, 677, 676,
+ 675, 674, 673, 672, 669, 668, 667, 666, 665, 664,
+ 663, 662, 661, 660, 659, 658, 657, 656, 655, 654,
+ 653, 652, 651, 650, 647, 646, 645, 644, 643, 642,
+ 641, 640, 639, 638, 634, 633, 626, 625, 624, 623,
+
+ 622, 621, 620, 619, 618, 617, 616, 615, 614, 613,
+ 612, 611, 609, 606, 605, 604, 602, 601, 600, 599,
+ 598, 595, 594, 593, 592, 591, 590, 589, 588, 587,
+ 586, 585, 584, 583, 582, 581, 580, 579, 578, 575,
+ 574, 573, 572, 571, 570, 569, 568, 565, 564, 561,
+ 560, 559, 558, 557, 554, 553, 552, 551, 550, 549,
+ 548, 547, 546, 545, 544, 543, 542, 541, 540, 536,
+ 535, 534, 533, 532, 531, 530, 526, 525, 524, 523,
+ 522, 521, 520, 519, 518, 517, 516, 515, 510, 509,
+ 508, 507, 506, 505, 504, 503, 502, 501, 500, 499,
+
+ 498, 497, 496, 493, 492, 491, 490, 489, 488, 487,
+ 486, 485, 484, 483, 482, 481, 480, 479, 478, 477,
+ 476, 475, 474, 473, 471, 469, 468, 466, 464, 460,
+ 457, 456, 453, 452, 451, 449, 448, 447, 445, 444,
+ 443, 440, 439, 438, 437, 436, 435, 434, 433, 432,
+ 431, 430, 429, 428, 427, 424, 423, 422, 421, 420,
+ 419, 418, 417, 416, 415, 414, 413, 410, 409, 405,
+ 404, 403, 400, 398, 397, 396, 395, 394, 393, 389,
+ 388, 387, 386, 385, 384, 383, 380, 379, 378, 377,
+ 376, 375, 374, 373, 372, 371, 370, 369, 368, 367,
+
+ 366, 365, 364, 363, 362, 361, 360, 359, 358, 357,
+ 356, 350, 349, 348, 347, 346, 345, 344, 343, 342,
+ 341, 340, 208, 334, 332, 328, 326, 325, 318, 317,
+ 316, 315, 313, 311, 307, 306, 305, 302, 301, 300,
+ 285, 279, 274, 273, 272, 269, 266, 265, 264, 263,
+ 262, 261, 258, 257, 256, 253, 252, 251, 250, 249,
+ 248, 244, 243, 235, 234, 233, 232, 231, 228, 227,
+ 226, 222, 219, 215, 214, 213, 208, 199, 197, 196,
+ 195, 186, 166, 145, 119, 105, 103, 43, 99, 97,
+ 96, 87, 43, 2203, 11, 2203, 2203, 2203, 2203, 2203,
+
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203
} ;
-static const flex_int16_t yy_chk[2664] =
+static const flex_int16_t yy_chk[2669] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1915,167 +1918,167 @@ static const flex_int16_t yy_chk[2664] =
1192, 1193, 1194, 1195, 1197, 1198, 1199, 1200, 1201, 1197,
1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
- 1212, 1213, 1214, 1215, 1217, 1218, 1219, 1220, 1221, 1222,
- 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1232, 1233,
- 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1198,
- 1244, 1245, 1246, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
- 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
- 1265, 1266, 1267, 1268, 1270, 1271, 1272, 1273, 1274, 1275,
- 1276, 1277, 1278, 1280, 1281, 1282, 1283, 1284, 1285, 1286,
- 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1270, 1296, 1297,
- 1298, 1299, 1300, 1271, 1301, 1302, 1303, 1304, 1305, 1306,
- 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1317,
-
- 1319, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
- 1330, 1331, 1332, 1333, 1334, 1336, 1338, 1339, 1340, 1342,
- 1343, 1344, 1345, 1346, 1347, 1349, 1351, 1353, 1354, 1355,
- 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
- 1366, 1367, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1378,
- 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388,
- 1389, 1391, 1392, 1393, 1394, 1395, 1397, 1398, 1399, 1400,
- 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410,
- 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1388, 1361, 1418,
- 1419, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429,
-
- 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439,
- 1397, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1449,
- 1441, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460,
- 1461, 1462, 1463, 1465, 1466, 1467, 1468, 1469, 1470, 1473,
- 1472, 1468, 1472, 1475, 1476, 1479, 1480, 1481, 1482, 1483,
- 1484, 1485, 1486, 1488, 1489, 1490, 1491, 1492, 1494, 1495,
- 1496, 1491, 1497, 1498, 1500, 1501, 1502, 1503, 1504, 1505,
- 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
- 1492, 1516, 1518, 1519, 1520, 1522, 1523, 1524, 1525, 1526,
- 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1536, 1538,
-
- 1539, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549,
- 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1561, 1562,
- 1564, 1565, 1566, 1568, 1569, 1568, 1570, 1571, 1568, 1572,
- 1573, 1568, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581,
- 1583, 1585, 1586, 1588, 1589, 1591, 1593, 1594, 1595, 1597,
- 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607,
- 1608, 1609, 1610, 1611, 1612, 1613, 1603, 1614, 1615, 1616,
- 1617, 1589, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1624,
- 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634,
- 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644,
-
- 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654,
- 1655, 1656, 1657, 1659, 1660, 1661, 1662, 1663, 1664, 1665,
- 1666, 1667, 1669, 1670, 1671, 1673, 1674, 1676, 1677, 1680,
- 1681, 1682, 1684, 1685, 1686, 1687, 1688, 1689, 1625, 1690,
- 1691, 1692, 1693, 1694, 1695, 1697, 1699, 1700, 1701, 1702,
- 1703, 1704, 1705, 1706, 1674, 1707, 1708, 1710, 1711, 1712,
- 1713, 1715, 1716, 1718, 1719, 1720, 1722, 1723, 1724, 1725,
- 1726, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736,
+ 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
+ 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1232,
+ 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1198,
+ 1242, 1244, 1245, 1246, 1248, 1249, 1250, 1251, 1252, 1253,
+ 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
+ 1264, 1265, 1266, 1267, 1268, 1270, 1271, 1272, 1273, 1274,
+ 1275, 1276, 1277, 1278, 1280, 1281, 1282, 1283, 1284, 1285,
+ 1286, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1270, 1296,
+ 1297, 1298, 1299, 1300, 1271, 1301, 1302, 1303, 1304, 1305,
+ 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
+
+ 1317, 1319, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
+ 1329, 1330, 1331, 1332, 1333, 1334, 1336, 1338, 1339, 1340,
+ 1341, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1352, 1354,
+ 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364,
+ 1365, 1366, 1367, 1368, 1370, 1371, 1372, 1373, 1374, 1375,
+ 1376, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387,
+ 1388, 1389, 1390, 1392, 1393, 1394, 1395, 1396, 1398, 1399,
+ 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409,
+ 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1389,
+ 1362, 1419, 1420, 1422, 1423, 1424, 1425, 1426, 1427, 1428,
+
+ 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438,
+ 1439, 1440, 1398, 1441, 1442, 1443, 1444, 1445, 1446, 1447,
+ 1448, 1450, 1442, 1451, 1454, 1455, 1456, 1457, 1458, 1459,
+ 1460, 1461, 1462, 1463, 1464, 1465, 1467, 1468, 1469, 1470,
+ 1471, 1472, 1475, 1474, 1470, 1474, 1477, 1478, 1481, 1482,
+ 1483, 1484, 1485, 1486, 1487, 1488, 1490, 1491, 1492, 1493,
+ 1494, 1496, 1497, 1498, 1493, 1499, 1500, 1502, 1503, 1504,
+ 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514,
+ 1515, 1516, 1517, 1494, 1518, 1520, 1521, 1522, 1524, 1525,
+ 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535,
+
+ 1536, 1538, 1540, 1541, 1543, 1544, 1545, 1546, 1547, 1548,
+ 1549, 1550, 1551, 1553, 1554, 1555, 1556, 1557, 1558, 1559,
+ 1560, 1561, 1564, 1565, 1567, 1568, 1569, 1571, 1572, 1571,
+ 1573, 1574, 1571, 1575, 1576, 1571, 1577, 1578, 1579, 1580,
+ 1581, 1582, 1583, 1584, 1586, 1588, 1589, 1591, 1592, 1594,
+ 1596, 1597, 1598, 1600, 1601, 1602, 1603, 1604, 1605, 1606,
+ 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616,
+ 1606, 1617, 1618, 1619, 1620, 1592, 1621, 1622, 1623, 1624,
+ 1625, 1626, 1627, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
+ 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643,
+
+ 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653,
+ 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1663, 1664,
+ 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1673, 1674, 1675,
+ 1677, 1678, 1680, 1681, 1684, 1685, 1686, 1688, 1689, 1690,
+ 1691, 1692, 1628, 1693, 1694, 1695, 1696, 1697, 1698, 1699,
+ 1701, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1678,
+ 1711, 1712, 1714, 1715, 1716, 1717, 1719, 1720, 1722, 1723,
+ 1724, 1726, 1727, 1728, 1730, 1731, 1733, 1734, 1735, 1736,
1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746,
- 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1755, 1756, 1758,
+ 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756,
- 1759, 1760, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769,
+ 1757, 1758, 1760, 1761, 1763, 1764, 1765, 1767, 1768, 1769,
1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779,
- 1780, 1782, 1783, 1784, 1786, 1787, 1788, 1789, 1791, 1792,
- 1793, 1794, 1795, 1797, 1798, 1799, 1800, 1801, 1802, 1803,
- 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1814,
- 1815, 1817, 1819, 1821, 1822, 1823, 1817, 1824, 1827, 1829,
- 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
- 1841, 1842, 1843, 1844, 1845, 1846, 1848, 1849, 1850, 1851,
- 1852, 1853, 1854, 1855, 1856, 1858, 1859, 1860, 1862, 1863,
- 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1873, 1874,
-
- 1875, 1876, 1877, 1879, 1880, 1881, 1882, 1885, 1886, 1887,
- 1888, 1889, 1890, 1891, 1892, 1894, 1895, 1896, 1897, 1898,
- 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1908, 1910,
- 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1920, 1922,
- 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932,
- 1933, 1934, 1932, 1935, 1936, 1937, 1938, 1939, 1940, 1941,
- 1942, 1943, 1944, 1945, 1947, 1948, 1949, 1950, 1951, 1952,
- 1953, 1954, 1955, 1956, 1957, 1958, 1960, 1964, 1966, 1967,
- 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977,
- 1978, 1979, 1980, 1981, 1983, 1984, 1985, 1986, 1987, 1988,
-
- 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999,
- 2000, 2001, 2002, 2003, 2005, 2007, 2010, 2012, 2013, 2014,
- 2015, 2016, 2017, 2018, 2019, 2021, 2022, 2023, 2024, 2025,
- 2026, 2027, 2029, 2030, 2031, 2032, 2033, 2034, 2036, 2037,
- 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047,
- 2049, 2050, 2051, 2052, 2053, 2054, 2056, 2057, 2058, 2059,
- 2060, 2061, 2062, 2063, 2065, 2066, 2067, 2068, 2069, 2070,
+ 1780, 1781, 1782, 1783, 1784, 1785, 1787, 1788, 1789, 1791,
+ 1792, 1793, 1794, 1796, 1797, 1798, 1799, 1800, 1802, 1803,
+ 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813,
+ 1814, 1815, 1816, 1817, 1819, 1820, 1822, 1824, 1826, 1827,
+ 1828, 1822, 1829, 1832, 1834, 1835, 1836, 1837, 1838, 1839,
+ 1840, 1841, 1842, 1843, 1844, 1846, 1847, 1848, 1849, 1850,
+ 1851, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861,
+ 1863, 1864, 1865, 1867, 1868, 1869, 1870, 1871, 1872, 1873,
+
+ 1874, 1875, 1876, 1878, 1879, 1880, 1881, 1882, 1884, 1885,
+ 1886, 1887, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897,
+ 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908,
+ 1909, 1910, 1911, 1913, 1915, 1916, 1917, 1918, 1919, 1920,
+ 1921, 1922, 1923, 1925, 1927, 1928, 1929, 1930, 1931, 1932,
+ 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1937, 1940, 1941,
+ 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1952,
+ 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962,
+ 1963, 1965, 1969, 1971, 1972, 1973, 1974, 1975, 1976, 1977,
+ 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1988,
+
+ 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2010,
+ 2012, 2015, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
+ 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2034, 2035, 2036,
+ 2037, 2038, 2039, 2041, 2042, 2043, 2044, 2045, 2046, 2047,
+ 2048, 2049, 2050, 2051, 2052, 2054, 2055, 2056, 2057, 2058,
+ 2059, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2070,
2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080,
- 2081, 2082, 2084, 2085, 2087, 2088, 2089, 2090, 2092, 2093,
- 2094, 2095, 2096, 2100, 2103, 2104, 2105, 2106, 2107, 2108,
-
- 2109, 2110, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119,
- 2120, 2122, 2123, 2124, 2125, 2126, 2127, 2129, 2131, 2133,
- 2134, 2135, 2136, 2137, 2138, 2139, 2141, 2142, 2143, 2144,
- 2145, 2144, 2146, 2147, 2149, 2150, 2154, 2155, 2156, 2157,
- 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167,
- 2168, 2170, 2171, 2172, 2173, 2176, 2177, 2178, 2180, 2181,
- 2183, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2194,
- 2199, 2199, 2199, 2200, 2200, 2200, 2201, 2202, 2201, 2203,
- 2203, 2203, 2204, 2204, 2204, 2205, 720, 2205, 2206, 2206,
- 2206, 719, 718, 717, 716, 715, 714, 713, 712, 711,
-
- 710, 709, 707, 706, 705, 704, 703, 702, 701, 700,
- 699, 698, 696, 695, 694, 693, 692, 691, 690, 688,
- 687, 686, 685, 684, 683, 682, 681, 680, 679, 677,
- 676, 675, 674, 673, 672, 671, 670, 669, 668, 667,
- 666, 665, 664, 662, 661, 660, 659, 658, 657, 656,
- 655, 654, 653, 652, 651, 650, 649, 647, 646, 645,
- 644, 643, 642, 641, 640, 639, 638, 637, 636, 635,
- 634, 633, 631, 630, 629, 628, 627, 626, 625, 624,
- 623, 622, 621, 620, 619, 618, 617, 616, 615, 613,
- 612, 609, 603, 602, 601, 600, 599, 598, 597, 595,
-
- 594, 592, 591, 589, 588, 587, 586, 585, 584, 583,
- 582, 581, 580, 579, 578, 577, 575, 574, 573, 572,
- 571, 570, 569, 568, 567, 566, 565, 564, 563, 562,
- 561, 560, 559, 558, 556, 554, 553, 552, 551, 550,
- 549, 548, 547, 546, 545, 544, 543, 542, 541, 540,
- 538, 537, 535, 534, 533, 532, 531, 530, 529, 527,
- 526, 525, 524, 523, 522, 521, 520, 519, 518, 517,
- 516, 515, 514, 513, 512, 510, 509, 508, 507, 505,
- 504, 503, 502, 501, 500, 499, 498, 496, 495, 493,
- 492, 489, 488, 487, 486, 485, 484, 482, 481, 480,
-
- 479, 478, 477, 476, 475, 474, 473, 471, 467, 465,
- 464, 462, 461, 460, 457, 456, 454, 453, 451, 450,
- 449, 448, 447, 446, 445, 444, 443, 442, 441, 440,
- 439, 438, 437, 436, 434, 433, 432, 431, 430, 429,
- 428, 427, 425, 424, 422, 420, 419, 418, 417, 415,
- 414, 413, 412, 411, 410, 409, 408, 407, 406, 405,
- 404, 403, 402, 400, 397, 396, 395, 394, 393, 392,
- 391, 389, 388, 387, 386, 385, 384, 383, 382, 381,
- 380, 379, 378, 376, 375, 374, 373, 372, 371, 370,
- 369, 368, 367, 366, 365, 364, 363, 362, 360, 359,
-
- 358, 357, 356, 355, 354, 353, 352, 351, 350, 349,
- 348, 347, 346, 345, 344, 343, 342, 341, 340, 338,
- 335, 333, 330, 328, 325, 318, 317, 315, 314, 313,
- 311, 310, 309, 307, 306, 305, 303, 302, 301, 300,
- 299, 298, 297, 296, 295, 294, 293, 292, 291, 290,
- 288, 287, 286, 285, 284, 283, 282, 281, 280, 279,
- 278, 277, 275, 274, 272, 271, 270, 268, 266, 265,
- 264, 263, 262, 261, 259, 258, 257, 256, 255, 254,
- 253, 251, 250, 248, 247, 246, 245, 244, 243, 242,
- 241, 240, 239, 238, 237, 236, 235, 234, 233, 232,
-
- 231, 230, 229, 228, 227, 226, 223, 222, 221, 220,
- 219, 218, 217, 216, 215, 214, 213, 207, 205, 203,
- 199, 197, 195, 187, 186, 185, 184, 182, 180, 177,
- 176, 175, 173, 172, 171, 167, 164, 162, 161, 160,
- 158, 156, 155, 154, 153, 152, 151, 149, 148, 147,
- 145, 144, 143, 142, 141, 140, 138, 137, 133, 132,
- 131, 130, 129, 127, 126, 125, 123, 121, 119, 118,
- 117, 113, 105, 103, 98, 97, 77, 72, 66, 58,
- 49, 47, 43, 41, 39, 38, 24, 14, 11, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
-
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198,
- 2198, 2198, 2198
+ 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2089, 2090, 2092,
+ 2093, 2094, 2095, 2097, 2098, 2099, 2100, 2101, 2105, 2108,
+
+ 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2117, 2118, 2119,
+ 2120, 2121, 2122, 2123, 2124, 2125, 2127, 2128, 2129, 2130,
+ 2131, 2132, 2134, 2136, 2138, 2139, 2140, 2141, 2142, 2143,
+ 2144, 2146, 2147, 2148, 2149, 2150, 2149, 2151, 2152, 2154,
+ 2155, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167,
+ 2168, 2169, 2170, 2171, 2172, 2173, 2175, 2176, 2177, 2178,
+ 2181, 2182, 2183, 2185, 2186, 2188, 2190, 2191, 2192, 2193,
+ 2194, 2195, 2196, 2197, 2199, 2204, 2204, 2204, 2205, 2205,
+ 2205, 2206, 2207, 2206, 2208, 2208, 2208, 2209, 2209, 2209,
+ 2210, 720, 2210, 2211, 2211, 2211, 719, 718, 717, 716,
+
+ 715, 714, 713, 712, 711, 710, 709, 707, 706, 705,
+ 704, 703, 702, 701, 700, 699, 698, 696, 695, 694,
+ 693, 692, 691, 690, 688, 687, 686, 685, 684, 683,
+ 682, 681, 680, 679, 677, 676, 675, 674, 673, 672,
+ 671, 670, 669, 668, 667, 666, 665, 664, 662, 661,
+ 660, 659, 658, 657, 656, 655, 654, 653, 652, 651,
+ 650, 649, 647, 646, 645, 644, 643, 642, 641, 640,
+ 639, 638, 637, 636, 635, 634, 633, 631, 630, 629,
+ 628, 627, 626, 625, 624, 623, 622, 621, 620, 619,
+ 618, 617, 616, 615, 613, 612, 609, 603, 602, 601,
+
+ 600, 599, 598, 597, 595, 594, 592, 591, 589, 588,
+ 587, 586, 585, 584, 583, 582, 581, 580, 579, 578,
+ 577, 575, 574, 573, 572, 571, 570, 569, 568, 567,
+ 566, 565, 564, 563, 562, 561, 560, 559, 558, 556,
+ 554, 553, 552, 551, 550, 549, 548, 547, 546, 545,
+ 544, 543, 542, 541, 540, 538, 537, 535, 534, 533,
+ 532, 531, 530, 529, 527, 526, 525, 524, 523, 522,
+ 521, 520, 519, 518, 517, 516, 515, 514, 513, 512,
+ 510, 509, 508, 507, 505, 504, 503, 502, 501, 500,
+ 499, 498, 496, 495, 493, 492, 489, 488, 487, 486,
+
+ 485, 484, 482, 481, 480, 479, 478, 477, 476, 475,
+ 474, 473, 471, 467, 465, 464, 462, 461, 460, 457,
+ 456, 454, 453, 451, 450, 449, 448, 447, 446, 445,
+ 444, 443, 442, 441, 440, 439, 438, 437, 436, 434,
+ 433, 432, 431, 430, 429, 428, 427, 425, 424, 422,
+ 420, 419, 418, 417, 415, 414, 413, 412, 411, 410,
+ 409, 408, 407, 406, 405, 404, 403, 402, 400, 397,
+ 396, 395, 394, 393, 392, 391, 389, 388, 387, 386,
+ 385, 384, 383, 382, 381, 380, 379, 378, 376, 375,
+ 374, 373, 372, 371, 370, 369, 368, 367, 366, 365,
+
+ 364, 363, 362, 360, 359, 358, 357, 356, 355, 354,
+ 353, 352, 351, 350, 349, 348, 347, 346, 345, 344,
+ 343, 342, 341, 340, 338, 335, 333, 330, 328, 325,
+ 318, 317, 315, 314, 313, 311, 310, 309, 307, 306,
+ 305, 303, 302, 301, 300, 299, 298, 297, 296, 295,
+ 294, 293, 292, 291, 290, 288, 287, 286, 285, 284,
+ 283, 282, 281, 280, 279, 278, 277, 275, 274, 272,
+ 271, 270, 268, 266, 265, 264, 263, 262, 261, 259,
+ 258, 257, 256, 255, 254, 253, 251, 250, 248, 247,
+ 246, 245, 244, 243, 242, 241, 240, 239, 238, 237,
+
+ 236, 235, 234, 233, 232, 231, 230, 229, 228, 227,
+ 226, 223, 222, 221, 220, 219, 218, 217, 216, 215,
+ 214, 213, 207, 205, 203, 199, 197, 195, 187, 186,
+ 185, 184, 182, 180, 177, 176, 175, 173, 172, 171,
+ 167, 164, 162, 161, 160, 158, 156, 155, 154, 153,
+ 152, 151, 149, 148, 147, 145, 144, 143, 142, 141,
+ 140, 138, 137, 133, 132, 131, 130, 129, 127, 126,
+ 125, 123, 121, 119, 118, 117, 113, 105, 103, 98,
+ 97, 77, 72, 66, 58, 49, 47, 43, 41, 39,
+ 38, 24, 14, 11, 2203, 2203, 2203, 2203, 2203, 2203,
+
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203,
+ 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203
} ;
static yy_state_type yy_last_accepting_state;
@@ -2164,7 +2167,7 @@ using namespace isc::dhcp;
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 2168 "dhcp4_lexer.cc"
+#line 2171 "dhcp4_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
@@ -2190,8 +2193,8 @@ using namespace isc::dhcp;
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 2194 "dhcp4_lexer.cc"
-#line 2195 "dhcp4_lexer.cc"
+#line 2197 "dhcp4_lexer.cc"
+#line 2198 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
@@ -2519,7 +2522,7 @@ YY_DECL
}
-#line 2523 "dhcp4_lexer.cc"
+#line 2526 "dhcp4_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -2548,13 +2551,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 2199 )
+ if ( yy_current_state >= 2204 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 2198 );
+ while ( yy_current_state != 2203 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -5174,7 +5177,7 @@ YY_RULE_SETUP
case isc::dhcp::Parser4Context::SHARED_NETWORK:
return isc::dhcp::Dhcp4Parser::make_OFFER_LFT(driver.loc_);
default:
- return isc::dhcp::Dhcp4Parser::make_STRING("offer-lft", driver.loc_);
+ return isc::dhcp::Dhcp4Parser::make_STRING("offer-lifetime", driver.loc_);
}
}
YY_BREAK
@@ -5516,7 +5519,7 @@ YY_RULE_SETUP
#line 2375 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 5520 "dhcp4_lexer.cc"
+#line 5523 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
@@ -5835,7 +5838,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 2199 )
+ if ( yy_current_state >= 2204 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5868,11 +5871,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 2199 )
+ if ( yy_current_state >= 2204 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 2198);
+ yy_is_jam = (yy_current_state == 2203);
return yy_is_jam ? 0 : yy_current_state;
}
diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll
index 22d36a5cf4..94941790de 100644
--- a/src/bin/dhcp4/dhcp4_lexer.ll
+++ b/src/bin/dhcp4/dhcp4_lexer.ll
@@ -2093,14 +2093,14 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu]
}
}
-\"offer-lft\" {
+\"offer-lifetime\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
case isc::dhcp::Parser4Context::SUBNET4:
case isc::dhcp::Parser4Context::SHARED_NETWORK:
return isc::dhcp::Dhcp4Parser::make_OFFER_LFT(driver.loc_);
default:
- return isc::dhcp::Dhcp4Parser::make_STRING("offer-lft", driver.loc_);
+ return isc::dhcp::Dhcp4Parser::make_STRING("offer-lifetime", driver.loc_);
}
}
diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc
index afcfcd548e..82c49e0464 100644
--- a/src/bin/dhcp4/dhcp4_parser.cc
+++ b/src/bin/dhcp4/dhcp4_parser.cc
@@ -1553,12 +1553,12 @@ namespace isc { namespace dhcp {
#line 1554 "dhcp4_parser.cc"
break;
- case 181: // offer_lft: "offer-lft" ":" "integer"
+ case 181: // offer_lft: "offer-lifetime" ":" "integer"
#line 797 "dhcp4_parser.yy"
{
- ctx.unique("offer-lft", ctx.loc2pos(yystack_[2].location));
+ ctx.unique("offer-lifetime", ctx.loc2pos(yystack_[2].location));
ElementPtr offer_lft(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("offer-lft", offer_lft);
+ ctx.stack_.back()->set("offer-lifetime", offer_lft);
}
#line 1564 "dhcp4_parser.cc"
break;
@@ -6017,7 +6017,7 @@ namespace isc { namespace dhcp {
"\"service-sockets-max-retries\"", "\"sanity-checks\"",
"\"lease-checks\"", "\"extended-info-checks\"", "\"echo-client-id\"",
"\"match-client-id\"", "\"authoritative\"", "\"next-server\"",
- "\"server-hostname\"", "\"boot-file-name\"", "\"offer-lft\"",
+ "\"server-hostname\"", "\"boot-file-name\"", "\"offer-lifetime\"",
"\"lease-database\"", "\"hosts-database\"", "\"hosts-databases\"",
"\"type\"", "\"memfile\"", "\"mysql\"", "\"postgresql\"", "\"user\"",
"\"password\"", "\"host\"", "\"port\"", "\"persist\"",
diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h
index 8d0a3714a0..34864c7492 100644
--- a/src/bin/dhcp4/dhcp4_parser.h
+++ b/src/bin/dhcp4/dhcp4_parser.h
@@ -519,7 +519,7 @@ namespace isc { namespace dhcp {
TOKEN_NEXT_SERVER = 287, // "next-server"
TOKEN_SERVER_HOSTNAME = 288, // "server-hostname"
TOKEN_BOOT_FILE_NAME = 289, // "boot-file-name"
- TOKEN_OFFER_LFT = 290, // "offer-lft"
+ TOKEN_OFFER_LFT = 290, // "offer-lifetime"
TOKEN_LEASE_DATABASE = 291, // "lease-database"
TOKEN_HOSTS_DATABASE = 292, // "hosts-database"
TOKEN_HOSTS_DATABASES = 293, // "hosts-databases"
@@ -753,7 +753,7 @@ namespace isc { namespace dhcp {
S_NEXT_SERVER = 32, // "next-server"
S_SERVER_HOSTNAME = 33, // "server-hostname"
S_BOOT_FILE_NAME = 34, // "boot-file-name"
- S_OFFER_LFT = 35, // "offer-lft"
+ S_OFFER_LFT = 35, // "offer-lifetime"
S_LEASE_DATABASE = 36, // "lease-database"
S_HOSTS_DATABASE = 37, // "hosts-database"
S_HOSTS_DATABASES = 38, // "hosts-databases"
diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy
index 6f1e4ad8ba..d8d737d756 100644
--- a/src/bin/dhcp4/dhcp4_parser.yy
+++ b/src/bin/dhcp4/dhcp4_parser.yy
@@ -78,7 +78,7 @@ using namespace std;
NEXT_SERVER "next-server"
SERVER_HOSTNAME "server-hostname"
BOOT_FILE_NAME "boot-file-name"
- OFFER_LFT "offer-lft"
+ OFFER_LFT "offer-lifetime"
LEASE_DATABASE "lease-database"
HOSTS_DATABASE "hosts-database"
@@ -795,9 +795,9 @@ reservations_lookup_first: RESERVATIONS_LOOKUP_FIRST COLON BOOLEAN {
};
offer_lft: OFFER_LFT COLON INTEGER {
- ctx.unique("offer-lft", ctx.loc2pos(@1));
+ ctx.unique("offer-lifetime", ctx.loc2pos(@1));
ElementPtr offer_lft(new IntElement($3, ctx.loc2pos(@3)));
- ctx.stack_.back()->set("offer-lft", offer_lft);
+ ctx.stack_.back()->set("offer-lifetime", offer_lft);
};
interfaces_config: INTERFACES_CONFIG {
diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc
index 0a39996356..fd0378ced0 100644
--- a/src/bin/dhcp4/json_config_parser.cc
+++ b/src/bin/dhcp4/json_config_parser.cc
@@ -684,7 +684,7 @@ processDhcp4Config(isc::data::ConstElementPtr config_set) {
(config_pair.first == "reservations-lookup-first") ||
(config_pair.first == "parked-packet-limit") ||
(config_pair.first == "allocator") ||
- (config_pair.first == "offer-lft") ) {
+ (config_pair.first == "offer-lifetime") ) {
CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first,
config_pair.second);
continue;
diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc
index ee5f486f51..5edeb5381f 100644
--- a/src/bin/dhcp4/tests/get_config_unittest.cc
+++ b/src/bin/dhcp4/tests/get_config_unittest.cc
@@ -2438,7 +2438,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -2523,7 +2523,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -2552,7 +2552,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -2636,7 +2636,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -2665,7 +2665,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -2751,7 +2751,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -2781,7 +2781,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 5000,\n"
" \"min-valid-lifetime\": 3000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -2866,7 +2866,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -2896,7 +2896,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -2925,7 +2925,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -2954,7 +2954,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 3,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -2983,7 +2983,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 4,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3068,7 +3068,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -3098,7 +3098,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3127,7 +3127,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 34,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3156,7 +3156,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 100,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3185,7 +3185,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1024,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3270,7 +3270,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"1.2.3.4\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -3300,7 +3300,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3385,7 +3385,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -3417,7 +3417,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
" \"next-server\": \"1.2.3.4\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3503,7 +3503,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"192.0.0.1\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -3535,7 +3535,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
" \"next-server\": \"1.2.3.4\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3621,7 +3621,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -3651,7 +3651,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3736,7 +3736,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -3766,7 +3766,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -3969,7 +3969,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4000,7 +4000,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"match-client-id\": true,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4030,7 +4030,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"match-client-id\": false,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4115,7 +4115,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4146,7 +4146,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"match-client-id\": false,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4175,7 +4175,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4260,7 +4260,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4291,7 +4291,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4321,7 +4321,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4406,7 +4406,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4437,7 +4437,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4466,7 +4466,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4553,7 +4553,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4583,7 +4583,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 5,\n"
" \"min-valid-lifetime\": 3,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4668,7 +4668,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4698,7 +4698,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4731,7 +4731,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4820,7 +4820,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -4850,7 +4850,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -4935,7 +4935,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5028,7 +5028,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5121,7 +5121,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5223,7 +5223,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5316,7 +5316,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5409,7 +5409,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5502,7 +5502,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -5595,7 +5595,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -5644,7 +5644,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -5729,7 +5729,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -5759,7 +5759,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -5863,7 +5863,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -5922,7 +5922,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -6007,7 +6007,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6130,7 +6130,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6216,7 +6216,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 3000,\n"
" \"min-valid-lifetime\": 3000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -6301,7 +6301,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6341,7 +6341,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6445,7 +6445,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -6475,7 +6475,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6514,7 +6514,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6609,7 +6609,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -6639,7 +6639,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -6743,7 +6743,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -6773,7 +6773,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -6882,7 +6882,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -6931,7 +6931,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -7016,7 +7016,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -7139,7 +7139,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -7216,7 +7216,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 3000,\n"
" \"min-valid-lifetime\": 3000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -7301,7 +7301,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -7348,7 +7348,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -7433,7 +7433,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -7483,7 +7483,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -7568,7 +7568,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -7653,7 +7653,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -7738,7 +7738,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -7768,7 +7768,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -7853,7 +7853,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -7883,7 +7883,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -7968,7 +7968,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -7998,7 +7998,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8083,7 +8083,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -8113,7 +8113,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4,\n"
" \"min-valid-lifetime\": 4,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8198,7 +8198,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -8228,7 +8228,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4,\n"
" \"min-valid-lifetime\": 4,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8313,7 +8313,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -8344,7 +8344,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8374,7 +8374,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8404,7 +8404,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 3,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8433,7 +8433,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 4,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8518,7 +8518,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -8548,7 +8548,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8648,7 +8648,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -8678,7 +8678,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 123,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8707,7 +8707,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 234,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8795,7 +8795,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 542,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -8930,7 +8930,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [\n"
" {\n"
@@ -8970,7 +8970,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 234,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9076,7 +9076,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9106,7 +9106,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9138,7 +9138,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9170,7 +9170,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 3,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9201,7 +9201,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 4,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9232,7 +9232,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 5,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9261,7 +9261,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 6,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9293,7 +9293,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 7,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9381,7 +9381,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9411,7 +9411,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9443,7 +9443,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9528,7 +9528,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9611,7 +9611,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9694,7 +9694,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9777,7 +9777,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9860,7 +9860,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -9890,7 +9890,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -9975,7 +9975,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10005,7 +10005,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10090,7 +10090,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10120,7 +10120,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10205,7 +10205,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10235,7 +10235,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10320,7 +10320,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10350,7 +10350,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10461,7 +10461,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10491,7 +10491,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10597,7 +10597,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10625,7 +10625,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 7200,\n"
" \"min-valid-lifetime\": 7200,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10731,7 +10731,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10759,7 +10759,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 7200,\n"
" \"min-valid-lifetime\": 7200,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10842,7 +10842,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10872,7 +10872,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -10957,7 +10957,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -10987,7 +10987,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11073,7 +11073,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -11103,7 +11103,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11193,7 +11193,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -11223,7 +11223,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11327,7 +11327,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -11459,7 +11459,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [\n"
" {\n"
" \"always-send\": false,\n"
@@ -11506,7 +11506,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"max-valid-lifetime\": 7200,\n"
" \"min-valid-lifetime\": 7200,\n"
" \"name\": \"foo\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"relay\": {\n"
" \"ip-addresses\": [ ]\n"
@@ -11522,7 +11522,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 100,\n"
" \"max-valid-lifetime\": 7200,\n"
" \"min-valid-lifetime\": 7200,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11652,7 +11652,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -11741,7 +11741,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 123,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11770,7 +11770,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 542,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11855,7 +11855,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -11876,7 +11876,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
" \"name\": \"foo\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"relay\": {\n"
" \"ip-addresses\": [ ]\n"
@@ -11892,7 +11892,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 100,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11919,7 +11919,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 200,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -11956,7 +11956,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 300,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -12039,7 +12039,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -12069,7 +12069,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -12098,7 +12098,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -12183,7 +12183,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -12213,7 +12213,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 1,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -12242,7 +12242,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"id\": 2,\n"
" \"max-valid-lifetime\": 4000,\n"
" \"min-valid-lifetime\": 4000,\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"pools\": [\n"
" {\n"
@@ -12327,7 +12327,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -12412,7 +12412,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 0\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
@@ -12495,7 +12495,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"thread-pool-size\": 48\n"
" },\n"
" \"next-server\": \"0.0.0.0\",\n"
-" \"offer-lft\": 0,\n"
+" \"offer-lifetime\": 0,\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
" \"parked-packet-limit\": 256,\n"
diff --git a/src/lib/dhcpsrv/alloc_engine.cc b/src/lib/dhcpsrv/alloc_engine.cc
index 8d01430f25..6948742790 100644
--- a/src/lib/dhcpsrv/alloc_engine.cc
+++ b/src/lib/dhcpsrv/alloc_engine.cc
@@ -3869,8 +3869,6 @@ AllocEngine::getOfferLft(const ClientContext4& ctx) {
util::Optional<uint32_t> offer_lft;
-#if 0
- /// @todo TKM need this when we add offer-lst to client class.
// If specified in one of our classes use it.
// We use the first one we find.
const ClientClasses classes = ctx.query_->getClasses();
@@ -3889,7 +3887,6 @@ AllocEngine::getOfferLft(const ClientContext4& ctx) {
}
}
}
-#endif
// If no classes specified it, get it from the subnet.
if (offer_lft.unspecified()) {
diff --git a/src/lib/dhcpsrv/cfg_globals.cc b/src/lib/dhcpsrv/cfg_globals.cc
index 823bfe663a..e267d5856a 100644
--- a/src/lib/dhcpsrv/cfg_globals.cc
+++ b/src/lib/dhcpsrv/cfg_globals.cc
@@ -59,7 +59,7 @@ CfgGlobals::nameToIndex = {
{ "next-server", NEXT_SERVER },
{ "server-hostname", SERVER_HOSTNAME },
{ "boot-file-name", BOOT_FILE_NAME },
- { "offer-lft", OFFER_LFT },
+ { "offer-lifetime", OFFER_LIFETIME },
// DHCPv6 specific parameters.
{ "data-directory", DATA_DIRECTORY },
diff --git a/src/lib/dhcpsrv/cfg_globals.h b/src/lib/dhcpsrv/cfg_globals.h
index 20062c87cf..c3c39a5e4b 100644
--- a/src/lib/dhcpsrv/cfg_globals.h
+++ b/src/lib/dhcpsrv/cfg_globals.h
@@ -82,7 +82,7 @@ public:
NEXT_SERVER,
SERVER_HOSTNAME,
BOOT_FILE_NAME,
- OFFER_LFT,
+ OFFER_LIFETIME,
// DHCPv6 specific parameters.
DATA_DIRECTORY,
diff --git a/src/lib/dhcpsrv/client_class_def.cc b/src/lib/dhcpsrv/client_class_def.cc
index bc43ba98c3..25bf9a99b8 100644
--- a/src/lib/dhcpsrv/client_class_def.cc
+++ b/src/lib/dhcpsrv/client_class_def.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2015-2022 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2023 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -259,6 +259,12 @@ ClientClassDef::toElement() const {
result->set("server-hostname", Element::create(sname_));
// Set boot-file-name
result->set("boot-file-name", Element::create(filename_));
+
+ // Set offer-lifetime
+ if (!offer_lft_.unspecified()) {
+ result->set("offer-lifetime",
+ Element::create(static_cast<long long>(offer_lft_.get())));
+ }
} else {
// V6 only
// Set preferred-lifetime
@@ -346,7 +352,8 @@ ClientClassDictionary::addClass(const std::string& name,
const std::string& filename,
const util::Triplet<uint32_t>& valid,
const util::Triplet<uint32_t>& preferred,
- bool is_template) {
+ bool is_template,
+ const util::Optional<uint32_t>& offer_lft) {
ClientClassDefPtr cclass;
if (is_template) {
cclass.reset(new TemplateClientClassDef(name, match_expr, cfg_option));
@@ -363,6 +370,7 @@ ClientClassDictionary::addClass(const std::string& name,
cclass->setFilename(filename);
cclass->setValid(valid);
cclass->setPreferred(preferred);
+ cclass->setOfferLft(offer_lft);
addClass(cclass);
}
diff --git a/src/lib/dhcpsrv/client_class_def.h b/src/lib/dhcpsrv/client_class_def.h
index 4e8e981314..80655974de 100644
--- a/src/lib/dhcpsrv/client_class_def.h
+++ b/src/lib/dhcpsrv/client_class_def.h
@@ -1,4 +1,4 @@
-// Copyright (C) 2015-2022 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2023 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -12,9 +12,10 @@
#include <cc/user_context.h>
#include <dhcpsrv/cfg_option.h>
#include <dhcpsrv/cfg_option_def.h>
-#include <util/triplet.h>
#include <eval/token.h>
#include <exceptions/exceptions.h>
+#include <util/triplet.h>
+#include <util/optional.h>
#include <string>
#include <unordered_map>
@@ -221,6 +222,21 @@ public:
preferred_ = preferred;
}
+ /// @brief Sets offer lifetime for the class.
+ ///
+ /// Will be used for the offer lifetime (may be empty if not defined)
+ void setOfferLft(const util::Optional<uint32_t>& offer_lft) {
+ offer_lft_ = offer_lft;
+ }
+
+ /// @brief Returns offer lifetime for the class.
+ ///
+ /// @param inheritance inheritance mode to be used.
+ /// @return offer lifetime value
+ util::Optional<uint32_t> getOfferLft() const {
+ return (offer_lft_);
+ }
+
/// @brief Test method which checks if the packet belongs to the class
///
/// If the packet belongs to the class, the class is added to the packet.
@@ -289,6 +305,9 @@ private:
/// @brief a Triplet (min/default/max) holding allowed preferred lifetime values
util::Triplet<uint32_t> preferred_;
+
+ /// @brief offer lifetime for this class (V4 only).
+ util::Optional<uint32_t> offer_lft_;
};
class TemplateClientClassDef : public ClientClassDef {
@@ -377,9 +396,10 @@ public:
asiolink::IOAddress next_server = asiolink::IOAddress("0.0.0.0"),
const std::string& sname = std::string(),
const std::string& filename = std::string(),
- const util::Triplet<uint32_t>&valid = util::Triplet<uint32_t>(),
- const util::Triplet<uint32_t>&preferred = util::Triplet<uint32_t>(),
- bool is_template = false);
+ const util::Triplet<uint32_t>& valid = util::Triplet<uint32_t>(),
+ const util::Triplet<uint32_t>& preferred = util::Triplet<uint32_t>(),
+ bool is_template = false,
+ const util::Optional<uint32_t>& offer_lft = util::Optional<uint32_t>());
/// @brief Adds a new class to the list
///
diff --git a/src/lib/dhcpsrv/network.cc b/src/lib/dhcpsrv/network.cc
index ccb002f502..f56e8dfa6e 100644
--- a/src/lib/dhcpsrv/network.cc
+++ b/src/lib/dhcpsrv/network.cc
@@ -320,9 +320,9 @@ Network4::toElement() const {
map->set("boot-file-name",Element::create(filename_.get()));
}
- // Set offer-lft
+ // Set offer-lifetime
if (!offer_lft_.unspecified()) {
- map->set("offer-lft",Element::create(offer_lft_.get()));
+ map->set("offer-lifetime",Element::create(offer_lft_.get()));
}
return (map);
diff --git a/src/lib/dhcpsrv/network.h b/src/lib/dhcpsrv/network.h
index 8f2acff806..e6b81bfc25 100644
--- a/src/lib/dhcpsrv/network.h
+++ b/src/lib/dhcpsrv/network.h
@@ -1325,7 +1325,7 @@ public:
getOfferLft(const Inheritance& inheritance = Inheritance::ALL) const {
return (getProperty<Network4>(&Network4::getOfferLft, offer_lft_,
inheritance,
- CfgGlobals::OFFER_LFT));
+ CfgGlobals::OFFER_LIFETIME));
}
/// @brief Unparses network object.
diff --git a/src/lib/dhcpsrv/parsers/base_network_parser.cc b/src/lib/dhcpsrv/parsers/base_network_parser.cc
index 0358b30fb9..69b79eb24c 100644
--- a/src/lib/dhcpsrv/parsers/base_network_parser.cc
+++ b/src/lib/dhcpsrv/parsers/base_network_parser.cc
@@ -301,12 +301,12 @@ BaseNetworkParser::parsePdAllocatorParams(const data::ConstElementPtr& network_d
void
BaseNetworkParser::parseOfferLft(const data::ConstElementPtr& network_data,
Network4Ptr& network) {
- if (network_data->contains("offer-lft")) {
- auto value = getInteger(network_data, "offer-lft");
+ if (network_data->contains("offer-lifetime")) {
+ auto value = getInteger(network_data, "offer-lifetime");
if (value < 0) {
- isc_throw(DhcpConfigError, "the value of offer-lft '"
+ isc_throw(DhcpConfigError, "the value of offer-lifetime '"
<< value << "' must be a positive number ("
- << getPosition("offer-lft", network_data) << ")");
+ << getPosition("offer-lifetime", network_data) << ")");
}
network->setOfferLft(value);
diff --git a/src/lib/dhcpsrv/parsers/base_network_parser.h b/src/lib/dhcpsrv/parsers/base_network_parser.h
index 36b44c0ba6..b2359f83bd 100644
--- a/src/lib/dhcpsrv/parsers/base_network_parser.h
+++ b/src/lib/dhcpsrv/parsers/base_network_parser.h
@@ -131,7 +131,7 @@ protected:
void parsePdAllocatorParams(const data::ConstElementPtr& network_data,
Network6Ptr& network);
- /// @brief Parses offer-lft parameter (v4 only)
+ /// @brief Parses offer-lifetime parameter (v4 only)
///
/// @param network_data Data element holding shared network
/// configuration to be parsed.
diff --git a/src/lib/dhcpsrv/parsers/client_class_def_parser.cc b/src/lib/dhcpsrv/parsers/client_class_def_parser.cc
index 162977f2f4..f1a1a1fc61 100644
--- a/src/lib/dhcpsrv/parsers/client_class_def_parser.cc
+++ b/src/lib/dhcpsrv/parsers/client_class_def_parser.cc
@@ -229,6 +229,18 @@ ClientClassDefParser::parse(ClientClassDictionaryPtr& class_dictionary,
}
}
+ Optional<uint32_t> offer_lft;
+ if (class_def_cfg->contains("offer-lifetime")) {
+ auto value = getInteger(class_def_cfg, "offer-lifetime");
+ if (value < 0) {
+ isc_throw(DhcpConfigError, "the value of offer-lifetime '"
+ << value << "' must be a positive number ("
+ << getPosition("offer-lifetime", class_def_cfg) << ")");
+ }
+
+ offer_lft = value;
+ }
+
// Parse valid lifetime triplet.
Triplet<uint32_t> valid_lft = parseIntTriplet(class_def_cfg, "valid-lifetime");
@@ -266,7 +278,7 @@ ClientClassDefParser::parse(ClientClassDictionaryPtr& class_dictionary,
class_dictionary->addClass(name, match_expr, test, required,
depend_on_known, options, defs,
user_context, next_server, sname, filename,
- valid_lft, preferred_lft, is_template);
+ valid_lft, preferred_lft, is_template, offer_lft);
} catch (const std::exception& ex) {
std::ostringstream s;
s << "Can't add class: " << ex.what();
diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc
index a4867e7470..6053d722c3 100644
--- a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc
+++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc
@@ -961,12 +961,12 @@ Subnet4ConfigParser::initSubnet(data::ConstElementPtr params,
parseCacheParams(params, network);
// Set the offer_lft value for the subnet.
- if (params->contains("offer-lft")) {
- uint32_t offer_lft = getInteger(params, "offer-lft");
+ if (params->contains("offer-lifetime")) {
+ uint32_t offer_lft = getInteger(params, "offer-lifetime");
subnet4->setOfferLft(offer_lft);
}
- // Parse offer-lft parameter.
+ // Parse offer-lifetime parameter.
Network4Ptr network4 = boost::dynamic_pointer_cast<Network4>(subnet4);
parseOfferLft(params, network4);
diff --git a/src/lib/dhcpsrv/parsers/shared_network_parser.cc b/src/lib/dhcpsrv/parsers/shared_network_parser.cc
index 6a10391480..0e8dcb42b8 100644
--- a/src/lib/dhcpsrv/parsers/shared_network_parser.cc
+++ b/src/lib/dhcpsrv/parsers/shared_network_parser.cc
@@ -201,7 +201,7 @@ SharedNetwork4Parser::parse(const data::ConstElementPtr& shared_network_data) {
// Parse allocator params.
parseAllocatorParams(shared_network_data, network);
- // Parse offer-lft parameter.
+ // Parse offer-lifetime parameter.
Network4Ptr network4 = boost::dynamic_pointer_cast<Network4>(shared_network);
parseOfferLft(shared_network_data, network4);
diff --git a/src/lib/dhcpsrv/parsers/simple_parser4.cc b/src/lib/dhcpsrv/parsers/simple_parser4.cc
index ea8f13b066..b3c44f103c 100644
--- a/src/lib/dhcpsrv/parsers/simple_parser4.cc
+++ b/src/lib/dhcpsrv/parsers/simple_parser4.cc
@@ -100,7 +100,7 @@ const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = {
{ "compatibility", Element::map },
{ "parked-packet-limit", Element::integer },
{ "allocator", Element::string },
- { "offer-lft", Element::integer },
+ { "offer-lifetime", Element::integer },
};
/// @brief This table defines default global values for DHCPv4
@@ -143,7 +143,7 @@ const SimpleDefaults SimpleParser4::GLOBAL4_DEFAULTS = {
{ "ddns-use-conflict-resolution", Element::boolean, "true" },
{ "parked-packet-limit", Element::integer, "256" },
{ "allocator", Element::string, "iterative" },
- { "offer-lft", Element::integer, "0" },
+ { "offer-lifetime", Element::integer, "0" },
};
/// @brief This table defines all option definition parameters.
@@ -257,7 +257,7 @@ const SimpleKeywords SimpleParser4::SUBNET4_PARAMETERS = {
{ "ddns-update-on-renew", Element::boolean },
{ "ddns-use-conflict-resolution", Element::boolean },
{ "allocator", Element::string },
- { "offer-lft", Element::integer }
+ { "offer-lifetime", Element::integer }
};
/// @brief This table defines default values for each IPv4 subnet.
@@ -312,7 +312,7 @@ const ParamsList SimpleParser4::INHERIT_TO_SUBNET4 = {
"cache-threshold",
"cache-max-age",
"allocator",
- "offer-lft",
+ "offer-lifetime",
};
/// @brief This table defines all pool parameters.
@@ -377,7 +377,7 @@ const SimpleKeywords SimpleParser4::SHARED_NETWORK4_PARAMETERS = {
{ "ddns-update-on-renew", Element::boolean },
{ "ddns-use-conflict-resolution", Element::boolean },
{ "allocator", Element::string },
- { "offer-lft", Element::integer }
+ { "offer-lifetime", Element::integer }
};
/// @brief This table defines default values for each IPv4 shared network.
diff --git a/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc
index a09e6873a6..d2e650d913 100644
--- a/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc
+++ b/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc
@@ -5670,7 +5670,7 @@ TEST_F(AllocEngine4Test, discoverOfferLft) {
pool_ = Pool4Ptr(new Pool4(addr, addr)); // just a single address
subnet_->addPool(pool_);
- // Set subnet's offer-lft to a non-zero, positive value.
+ // Set subnet's offer-lifetime to a non-zero, positive value.
uint32_t offer_lft = (subnet_->getValid() / 3);
subnet_->setOfferLft(offer_lft);
ASSERT_EQ(offer_lft, subnet_->getOfferLft().get());
@@ -5730,7 +5730,7 @@ TEST_F(AllocEngine4Test, discoverOfferLftReuseExpiredLease4) {
pool_ = Pool4Ptr(new Pool4(addr, addr)); // just a single address
subnet_->addPool(pool_);
- // Set subnet's offer-lft to a non-zero, positive value.
+ // Set subnet's offer-lifetime to a non-zero, positive value.
uint32_t offer_lft = (subnet_->getValid() / 3);
subnet_->setOfferLft(offer_lft);
ASSERT_EQ(offer_lft, subnet_->getOfferLft().get());
@@ -5780,6 +5780,103 @@ TEST_F(AllocEngine4Test, discoverOfferLftReuseExpiredLease4) {
EXPECT_FALSE(from_mgr->fqdn_rev_);
}
+// Verifies that AllocEngine::getOfferLft(ctx4) returns the appropriate
+// lifetime value based on the context content.
+TEST_F(AllocEngine4Test, getOfferft4) {
+ AllocEngine engine(0);
+
+ // Let's make three classes, two with offer-lifetime and one without,
+ // and add them to the dictionary.
+ ClientClassDictionaryPtr dictionary = CfgMgr::instance().getStagingCfg()->getClientClassDictionary();
+
+ ClientClassDefPtr class_def(new ClientClassDef("offer_lft_one", ExpressionPtr()));
+ Optional<uint32_t> offer_lft_one(100);
+ class_def->setOfferLft(offer_lft_one);
+ dictionary->addClass(class_def);
+
+ class_def.reset(new ClientClassDef("offer_lft_two", ExpressionPtr()));
+ Optional<uint32_t>offer_lft_two(200);
+ class_def->setOfferLft(offer_lft_two);
+ dictionary->addClass(class_def);
+
+ class_def.reset(new ClientClassDef("offer_lft_zero", ExpressionPtr()));
+ Optional<uint32_t>offer_lft_zero(0);
+ class_def->setOfferLft(offer_lft_zero);
+ dictionary->addClass(class_def);
+
+ class_def.reset(new ClientClassDef("offer_lft_unspec", ExpressionPtr()));
+ dictionary->addClass(class_def);
+
+ // Commit our class changes.
+ CfgMgr::instance().commit();
+
+ // Update the subnet's triplet to something more useful.
+ subnet_->setOfferLft(Optional<uint32_t>(300));
+
+ // Describes a test scenario.
+ struct Scenario {
+ std::string desc_; // descriptive text for logging
+ std::vector<std::string> classes_; // class list of assigned classes
+ uint32_t exp_valid_lft_; // expected lease lifetime
+ };
+
+ // Scenarios to test.
+ std::vector<Scenario> scenarios = {
+ {
+ "BOOTP",
+ { "BOOTP" },
+ Lease::INFINITY_LFT
+ },
+ {
+ "no classes",
+ {},
+ subnet_->getOfferLft()
+ },
+ {
+ "class unspecified",
+ { "offer_lft_unspec" },
+ subnet_->getOfferLft()
+ },
+ {
+ "from last class",
+ { "offer_lft_unspec", "offer_lft_one" },
+ offer_lft_one.get()
+ },
+ {
+ "from first class",
+ { "offer_lft_two", "offer_lft_one" },
+ offer_lft_two.get()
+ },
+ {
+ // Useing class value of zero should override non-zero set at
+ // subnet level, lease should have actual valid lft
+ "zero from class",
+ { "offer_lft_zero" },
+ subnet_->getValid()
+ }
+ };
+
+ // Iterate over the scenarios and verify the correct outcome.
+ for (auto scenario : scenarios) {
+ SCOPED_TRACE(scenario.desc_); {
+ // Create a context;
+ AllocEngine::ClientContext4 ctx(subnet_, ClientIdPtr(), hwaddr_,
+ IOAddress("0.0.0.0"), false, false,
+ "", true);
+ ctx.query_.reset(new Pkt4(DHCPDISCOVER, 1234));
+
+ // Add client classes (if any)
+ for (auto class_name : scenario.classes_) {
+ ctx.query_->addClass(class_name);
+ }
+
+ Lease4Ptr lease = engine.allocateLease4(ctx);
+ ASSERT_TRUE(lease);
+ EXPECT_EQ(lease->valid_lft_, scenario.exp_valid_lft_);
+ }
+ }
+}
+
} // namespace test
} // namespace dhcp
} // namespace isc
diff --git a/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc b/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc
index e9d517afbf..971cb8c931 100644
--- a/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc
+++ b/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc
@@ -272,7 +272,7 @@ TEST(CfgSharedNetworks4Test, unparse) {
" \"hostname-char-replacement\": \"x\",\n"
" \"hostname-char-set\": \"[^A-Z]\",\n"
" \"cache-threshold\": .20,\n"
- " \"offer-lft\": 77\n"
+ " \"offer-lifetime\": 77\n"
" }\n"
"]\n";
diff --git a/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc b/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc
index 757638ff05..9def305474 100644
--- a/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc
+++ b/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc
@@ -1133,7 +1133,7 @@ TEST(CfgSubnets4Test, unparseSubnet) {
" \"pools\": [ ],\n"
" \"store-extended-info\": true,\n"
" \"cache-max-age\": 80,\n"
- " \"offer-lft\": 99\n"
+ " \"offer-lifetime\": 99\n"
"},{\n"
" \"id\": 125,\n"
" \"subnet\": \"192.0.2.128/26\",\n"
diff --git a/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc b/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
index a97b1c8847..d0f3f989c0 100644
--- a/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
+++ b/src/lib/dhcpsrv/tests/client_class_def_parser_unittest.cc
@@ -1334,6 +1334,7 @@ TEST_F(ClientClassDefParserTest, noFixedFields4) {
EXPECT_EQ(IOAddress("0.0.0.0"), cclass->getNextServer());
EXPECT_EQ(0, cclass->getSname().size());
EXPECT_EQ(0, cclass->getFilename().size());
+ EXPECT_TRUE(cclass->getOfferLft().unspecified());
// Nor option definitions
CfgOptionDefPtr cfg = cclass->getCfgOptionDef();
@@ -1497,6 +1498,7 @@ TEST_F(ClientClassDefParserTest, nextServer) {
EXPECT_EQ(IOAddress("192.0.2.254"), cclass->getNextServer());
EXPECT_EQ(0, cclass->getSname().size());
EXPECT_EQ(0, cclass->getFilename().size());
+ EXPECT_TRUE(cclass->getOfferLft().unspecified());
}
// Test verifies that the parser rejects bogus next-server value.
@@ -2053,4 +2055,37 @@ TEST_F(ClientClassDefParserTest, invalidUserContext) {
DhcpConfigError, "User context has to be a map (<string>:3:21)");
}
+// Test verifies that it is possible to define offer-lifetime field and it
+// is actually set in the class properly.
+TEST_F(ClientClassDefParserTest, offerLft) {
+ std::string cfg_text =
+ "{ \n"
+ " \"name\": \"MICROSOFT\", \n"
+ " \"offer-lifetime\": 99\n"
+ "} \n";
+
+ ClientClassDefPtr cclass;
+ ASSERT_NO_THROW(cclass = parseClientClassDef(cfg_text, AF_INET));
+
+ // We should find our class.
+ ASSERT_TRUE(cclass);
+
+ auto offer_lft = cclass->getOfferLft();
+ ASSERT_FALSE(offer_lft.unspecified());
+ EXPECT_EQ(99, offer_lft);
+}
+
+// Test verifies that the parser rejects bogus server-hostname value.
+TEST_F(ClientClassDefParserTest, offerLftInvalid) {
+ std::string cfg_text =
+ "{ \n"
+ " \"name\": \"MICROSOFT\", \n"
+ " \"offer-lifetime\": -24\n"
+ "} \n";
+
+ EXPECT_THROW_MSG(parseClientClassDef(cfg_text, AF_INET), DhcpConfigError,
+ "the value of offer-lifetime '-24' must be a positive number"
+ " (<string>:3:23)");
+}
+
} // end of anonymous namespace
diff --git a/src/lib/dhcpsrv/tests/client_class_def_unittest.cc b/src/lib/dhcpsrv/tests/client_class_def_unittest.cc
index e89696927b..61edaf5994 100644
--- a/src/lib/dhcpsrv/tests/client_class_def_unittest.cc
+++ b/src/lib/dhcpsrv/tests/client_class_def_unittest.cc
@@ -630,6 +630,7 @@ TEST(ClientClassDef, fixedFieldsDefaults) {
ASSERT_EQ(IOAddress("0.0.0.0"), cclass->getNextServer());
EXPECT_EQ(empty, cclass->getSname());
EXPECT_EQ(empty, cclass->getFilename());
+ EXPECT_TRUE(cclass->getOfferLft().unspecified());
}
// Tests basic operations of fixed fields
diff --git a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
index 897199f09f..9b6eb3c467 100644
--- a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
+++ b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
@@ -3426,14 +3426,14 @@ TEST_F(ParseConfigTest, selfEncapsulationTest) {
cfg.runCfgOptionsTest(family_, config);
}
-// This test verifies parsing offer-lft for Subnet4.
+// This test verifies parsing offer-lifetime for Subnet4.
TEST_F(ParseConfigTest, subnet4OfferLft) {
std::string config =
"{"
" \"subnet4\": [ {"
" \"subnet\": \"192.0.2.0/24\","
" \"id\": 123,"
- " \"offer-lft\": 888"
+ " \"offer-lifetime\": 888"
" } ]"
"}";
@@ -3447,14 +3447,14 @@ TEST_F(ParseConfigTest, subnet4OfferLft) {
EXPECT_EQ(888, subnet->getOfferLft().get());
}
-// This test verifies parsing invalid offer-lft for Subnet4.
+// This test verifies parsing invalid offer-lifetime for Subnet4.
TEST_F(ParseConfigTest, subnet4InvalidOfferLft) {
std::string config =
"{"
" \"subnet4\": [ {"
" \"subnet\": \"192.0.2.0/24\","
" \"id\": 123,"
- " \"offer-lft\": -77"
+ " \"offer-lifetime\": -77"
" } ]"
"}";
diff --git a/src/lib/dhcpsrv/tests/network_unittest.cc b/src/lib/dhcpsrv/tests/network_unittest.cc
index 85ad150bfb..921ac8ba39 100644
--- a/src/lib/dhcpsrv/tests/network_unittest.cc
+++ b/src/lib/dhcpsrv/tests/network_unittest.cc
@@ -181,7 +181,7 @@ TEST_F(NetworkTest, inheritanceSupport4) {
globals_->set("ddns-update-on-renew", Element::create(true));
globals_->set("ddns-use-conflict-resolution", Element::create(true));
globals_->set("allocator", Element::create("random"));
- globals_->set("offer-lft", Element::create(45));
+ globals_->set("offer-lifetime", Element::create(45));
// For each parameter for which inheritance is supported run
// the test that checks if the values are inherited properly.
@@ -361,7 +361,7 @@ TEST_F(NetworkTest, inheritanceSupport4) {
"iterative", "random");
}
{
- SCOPED_TRACE("offer-lft");
+ SCOPED_TRACE("offer-lifetime");
testNetworkInheritance<TestNetwork4>(&Network4::getOfferLft,
&Network4::setOfferLft,
10, 45);
diff --git a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc
index 24312fff0b..1f5287cb4f 100644
--- a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc
+++ b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc
@@ -153,7 +153,7 @@ public:
" \"store-extended-info\": true,"
" \"cache-threshold\": 0.123,"
" \"cache-max-age\": 123,"
- " \"offer-lft\": 777,"
+ " \"offer-lifetime\": 777,"
" \"ddns-update-on-renew\": true,"
" \"option-data\": ["
" {"