Implement un-numbered, numbered, named and action groups (extension syntax)
authorNick Downing <downing.nick@gmail.com>
Sun, 23 Sep 2018 03:57:05 +0000 (13:57 +1000)
committerNick Downing <downing.nick@gmail.com>
Mon, 24 Sep 2018 22:09:34 +0000 (08:09 +1000)
doc/flex.1
src/parse.c
src/parse.y
src/scan.c
src/scan.l

index 953a1f0..569a62b 100644 (file)
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.44.1.
-.TH FLEX "1" "July 2018" "The Flex Project" "Programming"
+.TH FLEX "1" "September 2018" "The Flex Project" "Programming"
 .SH NAME
 flex \- the fast lexical analyser generator
 .SH SYNOPSIS
index f04daac..a991604 100644 (file)
@@ -551,16 +551,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   161
+#define YYLAST   182
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  69
+#define YYNTOKENS  70
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  27
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  97
+#define YYNRULES  100
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  140
+#define YYNSTATES  149
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -578,12 +578,12 @@ static const yytype_uint8 yytranslate[] =
       49,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,    63,     2,    57,     2,     2,     2,
-      64,    65,    55,    60,    56,    68,    62,    59,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      64,    65,    55,    60,    56,    69,    62,    59,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    66,     2,
       53,    48,    54,    61,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    66,     2,    67,    52,     2,     2,     2,     2,     2,
+       2,    67,     2,    68,    52,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,    50,    58,    51,     2,     2,     2,     2,
@@ -617,10 +617,11 @@ static const yytype_uint16 yyrline[] =
      373,   378,   381,   387,   407,   420,   422,   424,   428,   455,
      511,   514,   559,   578,   586,   591,   618,   628,   631,   662,
      679,   704,   713,   721,   729,   760,   777,   799,   841,   859,
-     869,   872,   880,   898,   904,   908,   913,   915,   924,   989,
-    1012,  1022,  1031,  1035,  1039,  1043,  1047,  1051,  1055,  1069,
-    1073,  1077,  1081,  1085,  1100,  1104,  1108,  1112,  1116,  1120,
-    1124,  1128,  1132,  1136,  1140,  1148,  1158,  1179
+     869,   872,   878,   881,   887,   893,   911,   917,   921,   926,
+     928,   937,  1002,  1025,  1035,  1044,  1048,  1052,  1056,  1060,
+    1064,  1068,  1082,  1086,  1090,  1094,  1098,  1113,  1117,  1121,
+    1125,  1129,  1133,  1137,  1141,  1145,  1149,  1153,  1161,  1171,
+    1192
 };
 #endif
 
@@ -641,7 +642,7 @@ static const char *const yytname[] =
   "BEGIN_REPEAT_POSIX", "END_REPEAT_POSIX", "BEGIN_REPEAT_FLEX",
   "END_REPEAT_FLEX", "'='", "'\\n'", "'{'", "'}'", "'^'", "'<'", "'>'",
   "'*'", "','", "'$'", "'|'", "'/'", "'+'", "'?'", "'.'", "'\"'", "'('",
-  "')'", "'['", "']'", "'-'", "$accept", "goal", "initlex", "sect1",
+  "')'", "':'", "'['", "']'", "'-'", "$accept", "goal", "initlex", "sect1",
   "sect1end", "startconddecl", "namelist1", "options", "optionlist",
   "option", "sect2", "initforrule", "flexrule", "scon_stk_ptr", "scon",
   "namelist2", "sconname", "rule", "re", "re2", "series", "singleton",
@@ -660,14 +661,14 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,    61,    10,
      123,   125,    94,    60,    62,    42,    44,    36,   124,    47,
-      43,    63,    46,    34,    40,    41,    91,    93,    45
+      43,    63,    46,    34,    40,    41,    58,    91,    93,    45
 };
 # endif
 
-#define YYPACT_NINF -52
+#define YYPACT_NINF -64
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-52)))
+  (!!((Yystate) == (-64)))
 
 #define YYTABLE_NINF -27
 
@@ -678,20 +679,21 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     -52,    17,   103,   -52,   -52,   113,   -52,   -52,   -52,   -52,
-     -52,    48,   -52,   114,     6,   -52,   -52,    42,     7,    12,
-      58,    77,    88,    89,   -52,    43,   -52,    73,   -52,   130,
-     131,   132,   133,   134,   135,    90,    91,   -52,    -1,   -52,
-     -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,    40,   -52,
-      44,   -52,   -52,   -52,   -52,    39,   -52,   -52,    39,    93,
-      97,   -52,   -12,    39,    49,    61,   -31,   -52,   -52,   139,
-     -52,   -52,     1,   -51,   -52,     0,   -52,   -52,    39,   -52,
-      75,   144,    61,   145,   -52,   -52,   -52,    84,    84,   -52,
-     -52,   -52,   -52,    50,    83,   -52,   -52,   -52,   -52,   -52,
-     -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
-     -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
-     -52,    49,   -52,   -40,    10,   -52,   -52,   -52,   149,   -52,
-       9,   -52,    -3,   -52,   108,   -52,   107,   -52,   -52,   -52
+     -64,    56,   117,   -64,   -64,     5,   -64,   -64,   -64,   -64,
+     -64,    41,   -64,   126,     4,   -64,   -64,    59,    53,    83,
+      85,    87,    96,    98,   -64,    92,   -64,    95,   -64,   140,
+     141,   142,   143,   147,   148,   104,    97,   -64,    -1,   -64,
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -41,   -64,
+      49,   -64,   -64,   -64,   -64,   100,   -64,   -64,    44,   107,
+     111,   -64,   -13,   100,    90,    66,    54,   -64,   -64,   153,
+     -64,   -64,     2,   100,   100,   100,    55,   -64,     0,   -64,
+     -64,   100,   -64,    57,   161,    66,   162,   -64,   -64,   -64,
+     101,   101,   -64,   -64,   -64,    67,    71,    72,   -64,    51,
+     102,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,    90,   -64,   -39,
+      48,   -64,   -64,   -64,   -64,   -64,   -64,   166,   -64,    10,
+     -64,     3,   -64,   125,   -64,   127,   -64,   -64,   -64
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -704,23 +706,24 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,    15,    31,     2,    26,    11,     0,
        0,     0,     0,     0,     0,     0,     0,    25,     0,    17,
       19,    20,    21,    18,    22,    33,    37,    38,     0,    36,
-      34,    30,    62,    59,    29,     0,    57,    97,     0,    71,
-       0,    28,    42,     0,    44,    47,    58,    65,    32,     0,
-      24,    27,     0,     0,    71,     0,    23,    41,     0,    45,
-      39,     0,    46,     0,    51,    52,    53,     0,     0,    35,
-      96,    60,    61,     0,    69,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    83,    82,    84,    85,    86,
-      87,    88,    89,    94,    90,    91,    92,    95,    93,    66,
-      70,    43,    40,     0,     0,    63,    64,    67,     0,    50,
-       0,    56,     0,    68,     0,    49,     0,    55,    48,    54
+      34,    30,    65,    59,    29,     0,    57,   100,     0,    74,
+       0,    28,    42,     0,    44,    47,    58,    68,    32,     0,
+      24,    27,     0,     0,     0,     0,     0,    74,     0,    23,
+      41,     0,    45,    39,     0,    46,     0,    51,    52,    53,
+       0,     0,    35,    99,    60,     0,     0,     0,    61,     0,
+      72,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    86,    85,    87,    88,    89,    90,    91,    92,    97,
+      93,    94,    95,    98,    96,    69,    73,    43,    40,     0,
+       0,    66,    67,    63,    64,    62,    70,     0,    50,     0,
+      56,     0,    71,     0,    49,     0,    55,    48,    54
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-     -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
-     118,   129,   -52,   -52,   -52,   -52,    92,   102,   -48,   -52,
-      80,   -21,   -52,    47,    85,   -52,   -52
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
+     135,   146,   -64,   -64,   -64,   -64,   106,   121,   -15,   -64,
+      99,   -63,   -64,    26,   105,   -64,   -64
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -728,7 +731,7 @@ static const yytype_int8 yydefgoto[] =
 {
       -1,     1,     2,     5,    10,    11,    17,    12,    13,    24,
       14,    26,    60,    36,    27,    48,    49,    61,    62,    63,
-      64,    65,    66,    67,    75,   120,    72
+      64,    65,    66,    67,    78,   126,    72
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -736,79 +739,85 @@ static const yytype_int8 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      51,   136,    52,    94,    90,   129,   -26,    78,    53,    54,
-      73,    87,    88,   134,    92,    80,   130,     3,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,    52,    82,   137,    77,    78,    79,    53,    15,
-      28,    55,    52,    94,   135,    29,    16,   131,    53,    25,
-      30,    56,    57,    58,    91,    59,   132,   119,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,    46,    81,    68,    70,    69,    25,    35,    47,
-      82,    56,    57,    58,     4,    59,    31,    83,    -6,    -6,
-      -6,    56,    57,    58,    -6,    59,    84,   127,     6,     7,
-       8,    85,    86,    37,     9,    32,    18,    19,    20,    21,
-      22,    23,   122,    78,   125,   126,    33,    34,    39,    40,
-      41,    42,    43,    44,    45,    74,    76,    47,   123,   124,
-      59,   128,   133,   138,   139,    50,    38,    71,   121,    93,
-       0,    89
+      51,    85,    52,   100,   -26,    93,   138,   145,    53,    54,
+       6,     7,     8,    68,   143,    69,     9,   139,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,    15,    76,    80,    81,    82,    52,    83,    16,
+     146,    55,    73,    53,   100,   144,     3,    25,    95,    96,
+      97,    56,    57,    58,    85,    94,    59,    28,   125,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,    52,    74,   140,    90,    91,    46,    53,
+      70,    29,    25,    52,   141,    47,    56,    57,    58,    53,
+      75,    59,    86,    81,   128,    81,   131,   132,     4,   136,
+      98,    87,    -6,    -6,    -6,    81,    88,    89,    -6,    81,
+      81,    30,   133,    31,    84,    32,   134,   135,    18,    19,
+      20,    21,    22,    23,    33,    37,    34,    35,    39,    40,
+      41,    42,    56,    57,    58,    43,    44,    59,    45,    77,
+      79,    47,    56,    57,    58,   129,   130,    59,    59,   142,
+     147,   137,    50,    38,   148,    92,    71,     0,     0,     0,
+     127,     0,    99
 };
 
 static const yytype_int8 yycheck[] =
 {
-       1,     4,     3,     3,     3,    45,     0,    58,     9,    10,
-      58,    42,    43,     4,    65,    63,    56,     0,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,     3,    64,    47,    57,    58,    59,     9,     1,
-       8,    52,     3,     3,    45,    48,     8,    47,     9,    53,
-      48,    62,    63,    64,    63,    66,    56,    67,    18,    19,
+       1,    64,     3,     3,     0,     3,    45,     4,     9,    10,
+       5,     6,     7,    54,     4,    56,    11,    56,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,     1,    44,    54,    51,    56,    53,    55,     8,
-     121,    62,    63,    64,     1,    66,    48,    46,     5,     6,
-       7,    62,    63,    64,    11,    66,    55,    67,     5,     6,
-       7,    60,    61,    50,    11,    48,    12,    13,    14,    15,
-      16,    17,    57,    58,    87,    88,    48,    48,     8,     8,
-       8,     8,     8,     8,    54,    52,    49,     8,     4,     4,
-      66,    68,     3,    45,    47,    37,    27,    55,    78,    74,
-      -1,    69
+      40,    41,     1,    58,    57,    58,    59,     3,    63,     8,
+      47,    52,     8,     9,     3,    45,     0,    53,    73,    74,
+      75,    62,    63,    64,   127,    63,    67,     8,    68,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,     3,    50,    47,    42,    43,     1,     9,
+      51,    48,    53,     3,    56,     8,    62,    63,    64,     9,
+      66,    67,    46,    58,    57,    58,    90,    91,     1,    68,
+      65,    55,     5,     6,     7,    58,    60,    61,    11,    58,
+      58,    48,    65,    48,    44,    48,    65,    65,    12,    13,
+      14,    15,    16,    17,    48,    50,    48,    55,     8,     8,
+       8,     8,    62,    63,    64,     8,     8,    67,    54,    52,
+      49,     8,    62,    63,    64,     4,     4,    67,    67,     3,
+      45,    69,    37,    27,    47,    69,    55,    -1,    -1,    -1,
+      81,    -1,    77
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    70,    71,     0,     1,    72,     5,     6,     7,    11,
-      73,    74,    76,    77,    79,     1,     8,    75,    12,    13,
-      14,    15,    16,    17,    78,    53,    80,    83,     8,    48,
-      48,    48,    48,    48,    48,    55,    82,    50,    80,     8,
-       8,     8,     8,     8,     8,    54,     1,     8,    84,    85,
-      79,     1,     3,     9,    10,    52,    62,    63,    64,    66,
-      81,    86,    87,    88,    89,    90,    91,    92,    54,    56,
-      51,    86,    95,    87,    52,    93,    49,    57,    58,    59,
-      87,    44,    90,    46,    55,    60,    61,    42,    43,    85,
-       3,    63,    65,    93,     3,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    67,
-      94,    89,    57,     4,     4,    92,    92,    67,    68,    45,
-      56,    47,    56,     3,     4,    45,     4,    47,    45,    47
+       0,    71,    72,     0,     1,    73,     5,     6,     7,    11,
+      74,    75,    77,    78,    80,     1,     8,    76,    12,    13,
+      14,    15,    16,    17,    79,    53,    81,    84,     8,    48,
+      48,    48,    48,    48,    48,    55,    83,    50,    81,     8,
+       8,     8,     8,     8,     8,    54,     1,     8,    85,    86,
+      80,     1,     3,     9,    10,    52,    62,    63,    64,    67,
+      82,    87,    88,    89,    90,    91,    92,    93,    54,    56,
+      51,    87,    96,     8,    50,    66,    88,    52,    94,    49,
+      57,    58,    59,    88,    44,    91,    46,    55,    60,    61,
+      42,    43,    86,     3,    63,    88,    88,    88,    65,    94,
+       3,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    68,    95,    90,    57,     4,
+       4,    93,    93,    65,    65,    65,    68,    69,    45,    56,
+      47,    56,     3,     4,    45,     4,    47,    45,    47
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    69,    70,    71,    72,    72,    72,    72,    73,    74,
-      74,    75,    75,    75,    76,    77,    77,    78,    78,    78,
-      78,    78,    78,    79,    79,    79,    80,    81,    81,    81,
-      81,    82,    83,    83,    83,    84,    84,    84,    85,    86,
-      86,    86,    86,    87,    87,    88,    89,    89,    89,    89,
-      89,    90,    90,    90,    90,    90,    90,    90,    90,    90,
-      90,    90,    90,    91,    91,    91,    92,    92,    93,    93,
-      93,    93,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    95,    95
+       0,    70,    71,    72,    73,    73,    73,    73,    74,    75,
+      75,    76,    76,    76,    77,    78,    78,    79,    79,    79,
+      79,    79,    79,    80,    80,    80,    81,    82,    82,    82,
+      82,    83,    84,    84,    84,    85,    85,    85,    86,    87,
+      87,    87,    87,    88,    88,    89,    90,    90,    90,    90,
+      90,    91,    91,    91,    91,    91,    91,    91,    91,    91,
+      91,    91,    91,    91,    91,    91,    92,    92,    92,    93,
+      93,    94,    94,    94,    94,    95,    95,    95,    95,    95,
+      95,    95,    95,    95,    95,    95,    95,    95,    95,    95,
+      95,    95,    95,    95,    95,    95,    95,    95,    95,    96,
+      96
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -820,10 +829,11 @@ static const yytype_uint8 yyr2[] =
        1,     0,     4,     3,     0,     3,     1,     1,     1,     2,
        3,     2,     1,     3,     1,     2,     2,     1,     6,     5,
        4,     2,     2,     2,     6,     5,     4,     1,     1,     1,
-       3,     3,     1,     3,     3,     1,     3,     4,     4,     2,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     3,     4,     4,     4,     1,     3,     3,     1,     3,
+       4,     4,     2,     2,     0,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     0
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       0
 };
 
 
@@ -1538,7 +1548,7 @@ yyreduce:
 
                        add_action( ";\n\tYY_BREAK]]\n" );
                        }
-#line 1531 "parse.c" /* yacc.c:1646  */
+#line 1541 "parse.c" /* yacc.c:1646  */
     break;
 
   case 3:
@@ -1548,7 +1558,7 @@ yyreduce:
                        /* Create default DFA start condition. */
                        scinstal( "INITIAL", false );
                        }
-#line 1541 "parse.c" /* yacc.c:1646  */
+#line 1551 "parse.c" /* yacc.c:1646  */
     break;
 
   case 4:
@@ -1558,7 +1568,7 @@ yyreduce:
  sprintf(piece_temp, "<AST_Section1_StartConditions exclusive=\"%s\">", xcluflg ? "true" : "false");
  insert_before(1, piece_temp);
  }
-#line 1551 "parse.c" /* yacc.c:1646  */
+#line 1561 "parse.c" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -1567,13 +1577,13 @@ yyreduce:
  insert_after(1, "</AST_Section1_Options>");
  insert_before(1, "<AST_Section1_Options>");
  }
-#line 1560 "parse.c" /* yacc.c:1646  */
+#line 1570 "parse.c" /* yacc.c:1646  */
     break;
 
   case 7:
 #line 187 "parse.y" /* yacc.c:1646  */
     { synerr( _("unknown error processing section 1") ); }
-#line 1566 "parse.c" /* yacc.c:1646  */
+#line 1576 "parse.c" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -1583,37 +1593,37 @@ yyreduce:
                        scon_stk = allocate_integer_array( lastsc + 1 );
                        scon_stk_ptr = 0;
                        }
-#line 1576 "parse.c" /* yacc.c:1646  */
+#line 1586 "parse.c" /* yacc.c:1646  */
     break;
 
   case 9:
 #line 199 "parse.y" /* yacc.c:1646  */
     { xcluflg = false; }
-#line 1582 "parse.c" /* yacc.c:1646  */
+#line 1592 "parse.c" /* yacc.c:1646  */
     break;
 
   case 10:
 #line 202 "parse.y" /* yacc.c:1646  */
     { xcluflg = true; }
-#line 1588 "parse.c" /* yacc.c:1646  */
+#line 1598 "parse.c" /* yacc.c:1646  */
     break;
 
   case 11:
 #line 206 "parse.y" /* yacc.c:1646  */
     { scinstal( nmstr, xcluflg ); }
-#line 1594 "parse.c" /* yacc.c:1646  */
+#line 1604 "parse.c" /* yacc.c:1646  */
     break;
 
   case 12:
 #line 209 "parse.y" /* yacc.c:1646  */
     { scinstal( nmstr, xcluflg ); }
-#line 1600 "parse.c" /* yacc.c:1646  */
+#line 1610 "parse.c" /* yacc.c:1646  */
     break;
 
   case 13:
 #line 212 "parse.y" /* yacc.c:1646  */
     { synerr( _("bad start condition list") ); }
-#line 1606 "parse.c" /* yacc.c:1646  */
+#line 1616 "parse.c" /* yacc.c:1646  */
     break;
 
   case 17:
@@ -1624,7 +1634,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Options_OutFile>");
  insert_before(0,"<AST_Section1_Options_OutFile>");
                        }
-#line 1617 "parse.c" /* yacc.c:1646  */
+#line 1627 "parse.c" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -1633,7 +1643,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Options_ExtraType>");
  insert_before(0, "<AST_Section1_Options_ExtraType>");
  }
-#line 1626 "parse.c" /* yacc.c:1646  */
+#line 1636 "parse.c" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -1644,7 +1654,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Options_Prefix>");
  insert_before(0, "<AST_Section1_Options_Prefix>");
  }
-#line 1637 "parse.c" /* yacc.c:1646  */
+#line 1647 "parse.c" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -1653,7 +1663,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Options_YYClass>");
  insert_before(0, "<AST_Section1_Options_YYClass>");
  }
-#line 1646 "parse.c" /* yacc.c:1646  */
+#line 1656 "parse.c" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -1662,7 +1672,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Options_HeaderFile>");
  insert_before(0, "<AST_Section1_Options_HeaderFile>");
  }
-#line 1655 "parse.c" /* yacc.c:1646  */
+#line 1665 "parse.c" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -1671,7 +1681,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Options_TablesFile>");
  insert_before(0, "<AST_Section1_Options_TablesFile>");
  }
-#line 1664 "parse.c" /* yacc.c:1646  */
+#line 1674 "parse.c" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -1680,7 +1690,7 @@ yyreduce:
  insert_after(4, "</AST_Section2_Rule>");
  insert_before(1, "<AST_Section2_Rule>");
  }
-#line 1673 "parse.c" /* yacc.c:1646  */
+#line 1683 "parse.c" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -1689,7 +1699,7 @@ yyreduce:
  insert_after(4, "</AST_Section2_CompoundRule>");
  insert_before(1, "<AST_Section2_CompoundRule>");
  }
-#line 1682 "parse.c" /* yacc.c:1646  */
+#line 1692 "parse.c" /* yacc.c:1646  */
     break;
 
   case 26:
@@ -1704,7 +1714,7 @@ yyreduce:
 
                        new_rule();
                        }
-#line 1697 "parse.c" /* yacc.c:1646  */
+#line 1707 "parse.c" /* yacc.c:1646  */
     break;
 
   case 27:
@@ -1745,7 +1755,7 @@ yyreduce:
  insert_after(1, "</AST_Section2_Rule_FLexRule>");
  insert_before(0, "<AST_Section2_Rule_FLexRule bol=\"true\">");
                        }
-#line 1738 "parse.c" /* yacc.c:1646  */
+#line 1748 "parse.c" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -1774,7 +1784,7 @@ yyreduce:
  insert_after(0, "</AST_Section2_Rule_FLexRule>");
  insert_before(0, "<AST_Section2_Rule_FLexRule bol=\"false\">");
                        }
-#line 1767 "parse.c" /* yacc.c:1646  */
+#line 1777 "parse.c" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -1802,19 +1812,19 @@ yyreduce:
  insert_after(0, "</AST_Section2_Rule_EOFRule>");
  insert_before(0, "<AST_Section2_Rule_EOFRule>");
                        }
-#line 1795 "parse.c" /* yacc.c:1646  */
+#line 1805 "parse.c" /* yacc.c:1646  */
     break;
 
   case 30:
 #line 374 "parse.y" /* yacc.c:1646  */
     { synerr( _("unrecognized rule") ); }
-#line 1801 "parse.c" /* yacc.c:1646  */
+#line 1811 "parse.c" /* yacc.c:1646  */
     break;
 
   case 31:
 #line 378 "parse.y" /* yacc.c:1646  */
     { (yyval) = scon_stk_ptr; }
-#line 1807 "parse.c" /* yacc.c:1646  */
+#line 1817 "parse.c" /* yacc.c:1646  */
     break;
 
   case 32:
@@ -1823,7 +1833,7 @@ yyreduce:
  insert_after(3, "</AST_Section2_StartConditions>");
  insert_before(0, "<AST_Section2_StartConditions>");
  }
-#line 1816 "parse.c" /* yacc.c:1646  */
+#line 1826 "parse.c" /* yacc.c:1646  */
     break;
 
   case 33:
@@ -1845,7 +1855,7 @@ yyreduce:
  insert_after(2, "</AST_Section2_StartConditions>");
  insert_before(0, "<AST_Section2_StartConditions wildcard=\"true\">");
                        }
-#line 1838 "parse.c" /* yacc.c:1646  */
+#line 1848 "parse.c" /* yacc.c:1646  */
     break;
 
   case 34:
@@ -1861,13 +1871,13 @@ yyreduce:
  piece[piece2 - 1] = temp;
  insert_before(0, "<AST_Section2_StartConditions />");
  }
-#line 1854 "parse.c" /* yacc.c:1646  */
+#line 1864 "parse.c" /* yacc.c:1646  */
     break;
 
   case 37:
 #line 425 "parse.y" /* yacc.c:1646  */
     { synerr( _("bad start condition list") ); }
-#line 1860 "parse.c" /* yacc.c:1646  */
+#line 1870 "parse.c" /* yacc.c:1646  */
     break;
 
   case 38:
@@ -1892,7 +1902,7 @@ yyreduce:
                                        scon_stk[++scon_stk_ptr] = scnum;
                                }
                        }
-#line 1885 "parse.c" /* yacc.c:1646  */
+#line 1895 "parse.c" /* yacc.c:1646  */
     break;
 
   case 39:
@@ -1951,13 +1961,13 @@ yyreduce:
 
                        (yyval) = link_machines( (yyvsp[-1]), (yyvsp[0]) );
                        }
-#line 1944 "parse.c" /* yacc.c:1646  */
+#line 1954 "parse.c" /* yacc.c:1646  */
     break;
 
   case 40:
 #line 512 "parse.y" /* yacc.c:1646  */
     { synerr( _("trailing context used twice") ); }
-#line 1950 "parse.c" /* yacc.c:1646  */
+#line 1960 "parse.c" /* yacc.c:1646  */
     break;
 
   case 41:
@@ -2005,7 +2015,7 @@ yyreduce:
  insert_after(1, "</RegexCharacterLiteral>");
  insert_before(1, "<RegexCharacterLiteral character_set=\"10 11\">");
                        }
-#line 1998 "parse.c" /* yacc.c:1646  */
+#line 2008 "parse.c" /* yacc.c:1646  */
     break;
 
   case 42:
@@ -2025,7 +2035,7 @@ yyreduce:
                                }
  insert_after(0, "<RegexEmpty />");
                        }
-#line 2018 "parse.c" /* yacc.c:1646  */
+#line 2028 "parse.c" /* yacc.c:1646  */
     break;
 
   case 43:
@@ -2036,13 +2046,13 @@ yyreduce:
  insert_after(2, "</RegexOr>");
  insert_before(0, "<RegexOr>");
                        }
-#line 2029 "parse.c" /* yacc.c:1646  */
+#line 2039 "parse.c" /* yacc.c:1646  */
     break;
 
   case 44:
 #line 587 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2035 "parse.c" /* yacc.c:1646  */
+#line 2045 "parse.c" /* yacc.c:1646  */
     break;
 
   case 45:
@@ -2071,7 +2081,7 @@ yyreduce:
                        current_state_type = STATE_TRAILING_CONTEXT;
                        (yyval) = (yyvsp[-1]);
                        }
-#line 2064 "parse.c" /* yacc.c:1646  */
+#line 2074 "parse.c" /* yacc.c:1646  */
     break;
 
   case 46:
@@ -2084,13 +2094,13 @@ yyreduce:
  insert_after(1, "</RegexSequence>");
  insert_before(0, "<RegexSequence>");
                        }
-#line 2077 "parse.c" /* yacc.c:1646  */
+#line 2087 "parse.c" /* yacc.c:1646  */
     break;
 
   case 47:
 #line 629 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2083 "parse.c" /* yacc.c:1646  */
+#line 2093 "parse.c" /* yacc.c:1646  */
     break;
 
   case 48:
@@ -2124,7 +2134,7 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-3]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2117 "parse.c" /* yacc.c:1646  */
+#line 2127 "parse.c" /* yacc.c:1646  */
     break;
 
   case 49:
@@ -2144,7 +2154,7 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\">", (yyvsp[-2]));
  insert_before(0, piece_temp);
                        }
-#line 2137 "parse.c" /* yacc.c:1646  */
+#line 2147 "parse.c" /* yacc.c:1646  */
     break;
 
   case 50:
@@ -2170,7 +2180,7 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-1]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2163 "parse.c" /* yacc.c:1646  */
+#line 2173 "parse.c" /* yacc.c:1646  */
     break;
 
   case 51:
@@ -2182,7 +2192,7 @@ yyreduce:
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\">");
                        }
-#line 2175 "parse.c" /* yacc.c:1646  */
+#line 2185 "parse.c" /* yacc.c:1646  */
     break;
 
   case 52:
@@ -2193,7 +2203,7 @@ yyreduce:
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"1\">");
                        }
-#line 2186 "parse.c" /* yacc.c:1646  */
+#line 2196 "parse.c" /* yacc.c:1646  */
     break;
 
   case 53:
@@ -2204,7 +2214,7 @@ yyreduce:
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\" count1=\"1\">");
                        }
-#line 2197 "parse.c" /* yacc.c:1646  */
+#line 2207 "parse.c" /* yacc.c:1646  */
     break;
 
   case 54:
@@ -2238,7 +2248,7 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-3]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2231 "parse.c" /* yacc.c:1646  */
+#line 2241 "parse.c" /* yacc.c:1646  */
     break;
 
   case 55:
@@ -2258,7 +2268,7 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\">", (yyvsp[-2]));
  insert_before(0, piece_temp);
                        }
-#line 2251 "parse.c" /* yacc.c:1646  */
+#line 2261 "parse.c" /* yacc.c:1646  */
     break;
 
   case 56:
@@ -2283,7 +2293,7 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-1]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2276 "parse.c" /* yacc.c:1646  */
+#line 2286 "parse.c" /* yacc.c:1646  */
     break;
 
   case 57:
@@ -2328,7 +2338,7 @@ yyreduce:
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 10 11 256\">");
  }
                        }
-#line 2321 "parse.c" /* yacc.c:1646  */
+#line 2331 "parse.c" /* yacc.c:1646  */
     break;
 
   case 58:
@@ -2349,7 +2359,7 @@ yyreduce:
 
                        (yyval) = mkstate( -(yyvsp[0]) );
                        }
-#line 2342 "parse.c" /* yacc.c:1646  */
+#line 2352 "parse.c" /* yacc.c:1646  */
     break;
 
   case 59:
@@ -2362,28 +2372,50 @@ yyreduce:
 
                        (yyval) = mkstate( -(yyvsp[0]) );
                        }
-#line 2355 "parse.c" /* yacc.c:1646  */
+#line 2365 "parse.c" /* yacc.c:1646  */
     break;
 
   case 60:
 #line 870 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2361 "parse.c" /* yacc.c:1646  */
+#line 2371 "parse.c" /* yacc.c:1646  */
     break;
 
   case 61:
 #line 873 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); /*}*/
-#if 0 /* for now do things in the traditional lex way without subexpressions */
  insert_after(2, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
-#endif
  }
-#line 2372 "parse.c" /* yacc.c:1646  */
+#line 2380 "parse.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 881 "parse.y" /* yacc.c:1646  */
+#line 879 "parse.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[-1]); }
+#line 2386 "parse.c" /* yacc.c:1646  */
+    break;
+
+  case 63:
+#line 882 "parse.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[-1]); /*}*/
+ insert_after(3, "</RegexGroupName>");
+ insert_before(0, "<RegexGroupName>");
+}
+#line 2395 "parse.c" /* yacc.c:1646  */
+    break;
+
+  case 64:
+#line 888 "parse.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[-1]); /*}*/
+ insert_after(3, "</RegexGroupAction>");
+ insert_before(0, "<RegexGroupAction>");
+}
+#line 2404 "parse.c" /* yacc.c:1646  */
+    break;
+
+  case 65:
+#line 894 "parse.y" /* yacc.c:1646  */
     {
                        ++rulelen;
 
@@ -2399,48 +2431,48 @@ yyreduce:
  sprintf(piece_temp, "<RegexCharacterLiteral character_set=\"%d %d\">", (yyvsp[0]), (yyvsp[0]) + 1);
  insert_before(0, piece_temp);
                        }
-#line 2392 "parse.c" /* yacc.c:1646  */
+#line 2424 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 898 "parse.y" /* yacc.c:1646  */
+  case 66:
+#line 911 "parse.y" /* yacc.c:1646  */
     { (yyval) = ccl_set_diff  ((yyvsp[-2]), (yyvsp[0])); /*}*/
  insert_after(2, "</RegexCharacterAnd>");
  insert_after(2, "</RegexCharacterNot>");
  insert_before(2, "<RegexCharacterNot>");
  insert_before(0, "<RegexCharacterAnd>");
  }
-#line 2403 "parse.c" /* yacc.c:1646  */
+#line 2435 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 904 "parse.y" /* yacc.c:1646  */
+  case 67:
+#line 917 "parse.y" /* yacc.c:1646  */
     { (yyval) = ccl_set_union ((yyvsp[-2]), (yyvsp[0])); /*}*/
  insert_after(2, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
  }
-#line 2412 "parse.c" /* yacc.c:1646  */
+#line 2444 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 913 "parse.y" /* yacc.c:1646  */
+  case 69:
+#line 926 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2418 "parse.c" /* yacc.c:1646  */
+#line 2450 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 916 "parse.y" /* yacc.c:1646  */
+  case 70:
+#line 929 "parse.y" /* yacc.c:1646  */
     {
                        cclnegate( (yyvsp[-1]) );
                        (yyval) = (yyvsp[-1]);
  insert_after(2, "</RegexCharacterNot>");
  insert_before(1, "<RegexCharacterNot>");
                        }
-#line 2429 "parse.c" /* yacc.c:1646  */
+#line 2461 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 925 "parse.y" /* yacc.c:1646  */
+  case 71:
+#line 938 "parse.y" /* yacc.c:1646  */
     {
 
                        if (sf_case_ins())
@@ -2504,11 +2536,11 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2497 "parse.c" /* yacc.c:1646  */
+#line 2529 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 990 "parse.y" /* yacc.c:1646  */
+  case 72:
+#line 1003 "parse.y" /* yacc.c:1646  */
     {
                        ccladd( (yyvsp[-1]), (yyvsp[0]) );
                        cclsorted = cclsorted && ((yyvsp[0]) > lastchar);
@@ -2530,11 +2562,11 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2523 "parse.c" /* yacc.c:1646  */
+#line 2555 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 1013 "parse.y" /* yacc.c:1646  */
+  case 73:
+#line 1026 "parse.y" /* yacc.c:1646  */
     {
                        /* Too hard to properly maintain cclsorted. */
                        cclsorted = false;
@@ -2542,76 +2574,76 @@ yyreduce:
  insert_after(1, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2535 "parse.c" /* yacc.c:1646  */
+#line 2567 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 1022 "parse.y" /* yacc.c:1646  */
+  case 74:
+#line 1035 "parse.y" /* yacc.c:1646  */
     {
                        cclsorted = true;
                        lastchar = 0;
                        currccl = (yyval) = cclinit();
  insert_before(0, "<RegexCharacterLiteral character_set=\"\" />");
                        }
-#line 2546 "parse.c" /* yacc.c:1646  */
+#line 2578 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 1031 "parse.y" /* yacc.c:1646  */
+  case 75:
+#line 1044 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isalnum); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"48 58 65 91 97 123\">");
  }
-#line 2555 "parse.c" /* yacc.c:1646  */
+#line 2587 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 1035 "parse.y" /* yacc.c:1646  */
+  case 76:
+#line 1048 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isalpha); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"65 91 97 123\">");
  }
-#line 2564 "parse.c" /* yacc.c:1646  */
+#line 2596 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 1039 "parse.y" /* yacc.c:1646  */
+  case 77:
+#line 1052 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(IS_BLANK); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"9 10 32 33\">");
  }
-#line 2573 "parse.c" /* yacc.c:1646  */
+#line 2605 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 1043 "parse.y" /* yacc.c:1646  */
+  case 78:
+#line 1056 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(iscntrl); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 32\">");
  }
-#line 2582 "parse.c" /* yacc.c:1646  */
+#line 2614 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 76:
-#line 1047 "parse.y" /* yacc.c:1646  */
+  case 79:
+#line 1060 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"48 58\">");
  }
-#line 2591 "parse.c" /* yacc.c:1646  */
+#line 2623 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 77:
-#line 1051 "parse.y" /* yacc.c:1646  */
+  case 80:
+#line 1064 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isgraph); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"33 127\">");
  }
-#line 2600 "parse.c" /* yacc.c:1646  */
+#line 2632 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 78:
-#line 1055 "parse.y" /* yacc.c:1646  */
+  case 81:
+#line 1068 "parse.y" /* yacc.c:1646  */
     { 
                           CCL_EXPR(islower);
                           if (sf_case_ins())
@@ -2626,47 +2658,47 @@ yyreduce:
  insert_before(0, "<RegexCharacterLiteral character_set=\"97 123\">");
  }
                         }
-#line 2619 "parse.c" /* yacc.c:1646  */
+#line 2651 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 79:
-#line 1069 "parse.y" /* yacc.c:1646  */
+  case 82:
+#line 1082 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isprint); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"32 127\">");
  }
-#line 2628 "parse.c" /* yacc.c:1646  */
+#line 2660 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 80:
-#line 1073 "parse.y" /* yacc.c:1646  */
+  case 83:
+#line 1086 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(ispunct); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"33 48 58 65 91 97 123 127\">");
  }
-#line 2637 "parse.c" /* yacc.c:1646  */
+#line 2669 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 1077 "parse.y" /* yacc.c:1646  */
+  case 84:
+#line 1090 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isspace); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"9 14 32 33\">");
  }
-#line 2646 "parse.c" /* yacc.c:1646  */
+#line 2678 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 1081 "parse.y" /* yacc.c:1646  */
+  case 85:
+#line 1094 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isxdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"48 58 65 71 97 103\">");
  }
-#line 2655 "parse.c" /* yacc.c:1646  */
+#line 2687 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 83:
-#line 1085 "parse.y" /* yacc.c:1646  */
+  case 86:
+#line 1098 "parse.y" /* yacc.c:1646  */
     {
                     CCL_EXPR(isupper);
                     if (sf_case_ins())
@@ -2681,101 +2713,101 @@ yyreduce:
  insert_before(0, "<RegexCharacterLiteral character_set=\"65 91\">");
  }
                                }
-#line 2674 "parse.c" /* yacc.c:1646  */
+#line 2706 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 84:
-#line 1100 "parse.y" /* yacc.c:1646  */
+  case 87:
+#line 1113 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isalnum); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 48 58 65 91 97 123 256\">");
  }
-#line 2683 "parse.c" /* yacc.c:1646  */
+#line 2715 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 85:
-#line 1104 "parse.y" /* yacc.c:1646  */
+  case 88:
+#line 1117 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isalpha); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 65 91 97 123 256\">");
  }
-#line 2692 "parse.c" /* yacc.c:1646  */
+#line 2724 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 86:
-#line 1108 "parse.y" /* yacc.c:1646  */
+  case 89:
+#line 1121 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(IS_BLANK); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 9 10 32 33 256\">");
  }
-#line 2701 "parse.c" /* yacc.c:1646  */
+#line 2733 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 87:
-#line 1112 "parse.y" /* yacc.c:1646  */
+  case 90:
+#line 1125 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(iscntrl); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"32 256\">");
  }
-#line 2710 "parse.c" /* yacc.c:1646  */
+#line 2742 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 88:
-#line 1116 "parse.y" /* yacc.c:1646  */
+  case 91:
+#line 1129 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 48 58 256\">");
  }
-#line 2719 "parse.c" /* yacc.c:1646  */
+#line 2751 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 89:
-#line 1120 "parse.y" /* yacc.c:1646  */
+  case 92:
+#line 1133 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isgraph); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 33 127 256\">");
  }
-#line 2728 "parse.c" /* yacc.c:1646  */
+#line 2760 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 90:
-#line 1124 "parse.y" /* yacc.c:1646  */
+  case 93:
+#line 1137 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isprint); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 32 127 256\">");
  }
-#line 2737 "parse.c" /* yacc.c:1646  */
+#line 2769 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 91:
-#line 1128 "parse.y" /* yacc.c:1646  */
+  case 94:
+#line 1141 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(ispunct); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 33 48 58 65 91 97 123 127 256\">");
  }
-#line 2746 "parse.c" /* yacc.c:1646  */
+#line 2778 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 92:
-#line 1132 "parse.y" /* yacc.c:1646  */
+  case 95:
+#line 1145 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isspace); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 9 14 32 33 256\">");
  }
-#line 2755 "parse.c" /* yacc.c:1646  */
+#line 2787 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 93:
-#line 1136 "parse.y" /* yacc.c:1646  */
+  case 96:
+#line 1149 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isxdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 48 58 65 71 97 103 256\">");
  }
-#line 2764 "parse.c" /* yacc.c:1646  */
+#line 2796 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-#line 1140 "parse.y" /* yacc.c:1646  */
+  case 97:
+#line 1153 "parse.y" /* yacc.c:1646  */
     { 
                                if ( sf_case_ins() )
                                        lwarn(_("[:^lower:] is ambiguous in case insensitive scanner"));
@@ -2784,11 +2816,11 @@ yyreduce:
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 97 123 256\">");
                                }
-#line 2777 "parse.c" /* yacc.c:1646  */
+#line 2809 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 95:
-#line 1148 "parse.y" /* yacc.c:1646  */
+  case 98:
+#line 1161 "parse.y" /* yacc.c:1646  */
     {
                                if ( sf_case_ins() )
                                        lwarn(_("[:^upper:] ambiguous in case insensitive scanner"));
@@ -2797,11 +2829,11 @@ yyreduce:
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 65 91 256\">");
                                }
-#line 2790 "parse.c" /* yacc.c:1646  */
+#line 2822 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-#line 1159 "parse.y" /* yacc.c:1646  */
+  case 99:
+#line 1172 "parse.y" /* yacc.c:1646  */
     {
                        if ( (yyvsp[0]) == nlch )
                                rule_has_nl[num_rules] = true;
@@ -2820,19 +2852,19 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexSequence>");
                        }
-#line 2813 "parse.c" /* yacc.c:1646  */
+#line 2845 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-#line 1179 "parse.y" /* yacc.c:1646  */
+  case 100:
+#line 1192 "parse.y" /* yacc.c:1646  */
     { (yyval) = mkstate( SYM_EPSILON ); /*}*/
  insert_before(0, "<RegexEmpty />");
  }
-#line 2821 "parse.c" /* yacc.c:1646  */
+#line 2853 "parse.c" /* yacc.c:1646  */
     break;
 
 
-#line 2825 "parse.c" /* yacc.c:1646  */
+#line 2857 "parse.c" /* yacc.c:1646  */
       default: break;
     }
  int i;
@@ -3077,7 +3109,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1185 "parse.y" /* yacc.c:1906  */
+#line 1198 "parse.y" /* yacc.c:1906  */
 
 
 
index 9563286..aa85ec6 100644 (file)
@@ -871,11 +871,24 @@ singleton :  singleton '*'
 
                |  '(' re ')'
                        { $$ = $2; /*}*/
-#if 0 /* for now do things in the traditional lex way without subexpressions */
  insert_after(2, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
-#endif
  }
+               /* Nick extra rules for unnumbered groups */
+               | '(' ':' re ')'
+                       { $$ = $3; }
+               /* Nick extra rules for named groups */
+               | '(' NAME re ')'
+                       { $$ = $3; /*}*/
+ insert_after(3, "</RegexGroupName>");
+ insert_before(0, "<RegexGroupName>");
+}
+               /* Nick extra rules for action groups */
+               | '(' '{' re ')'
+                       { $$ = $3; /*}*/
+ insert_after(3, "</RegexGroupAction>");
+ insert_before(0, "<RegexGroupAction>");
+}
 
                |  CHAR
                        {
index d947d7a..b7ef69b 100644 (file)
@@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 253
-#define YY_END_OF_BUFFER 254
+#define YY_NUM_RULES 269
+#define YY_END_OF_BUFFER 270
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -387,131 +387,135 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1114] =
+static yyconst flex_int16_t yy_accept[1153] =
     {   0,
-        0,    0,    0,    0,    0,    0,  246,  246,   40,   40,
+        0,    0,    0,    0,    0,    0,  249,  249,   40,   40,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   21,   21,
-      239,  239,    0,    0,    0,    0,    0,    0,    0,    0,
+      242,  242,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   21,   21,
-      250,  250,  239,  239,  254,  252,    9,   20,  252,   18,
-        1,   19,  252,  252,  252,  252,   17,  163,  148,  149,
-      163,  141,  163,  160,  161,  162,  162,  163,  163,  163,
-      162,  147,  137,  163,  163,  139,  140,  135,  136,  135,
-      134,  133,  134,  246,  247,  247,   40,   42,   40,   41,
-
-       40,   40,   41,   41,   41,   50,   49,   51,  252,  169,
-      169,  164,  169,  165,  166,  168,  170,  218,  219,  218,
-      216,  215,  217,  171,  173,  171,  172,  171,  185,  185,
-      185,  185,  187,  189,  187,  187,  187,  187,  188,  228,
-      233,  228,  232,  231,  234,  229,  229,  229,  234,  234,
-      226,  227,  252,  130,  252,   21,   23,   21,   22,   22,
-       22,  235,  241,  235,  236,  242,  242,  242,  224,  224,
-      225,  224,  224,  224,  224,  224,  224,  224,  129,   53,
-       52,  129,  129,  129,  129,   54,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      253,  253,  242,  242,    0,    0,  264,  264,  264,  264,
+      270,  268,    9,   20,  268,   18,    1,   19,  268,  268,
+      268,  268,   17,  163,  148,  149,  163,  141,  163,  160,
+      161,  162,  162,  163,  163,  163,  162,  147,  137,  163,
+      163,  139,  140,  135,  136,  135,  134,  133,  134,  249,
+
+      250,  250,   40,   42,   40,   41,   40,   40,   41,   41,
+       41,   50,   49,   51,  268,  169,  169,  164,  169,  165,
+      166,  168,  170,  221,  222,  221,  219,  218,  220,  171,
+      173,  171,  172,  171,  188,  188,  188,  188,  190,  192,
+      190,  190,  190,  190,  191,  231,  236,  231,  235,  234,
+      237,  232,  232,  232,  237,  237,  229,  230,  268,  130,
+      268,   21,   23,   21,   22,   22,   22,  238,  244,  238,
+      239,  245,  245,  245,  227,  227,  228,  227,  227,  227,
+      227,  227,  227,  227,  129,   53,   52,  129,  129,  129,
+      129,   54,  129,  129,  129,  129,  129,  129,  129,  129,
 
-      129,  129,  129,  129,  129,  129,  129,   36,   33,   36,
-       34,   48,   45,  252,   48,   48,   44,   43,  175,  174,
-      176,  177,  178,  179,  180,  181,  182,   31,   32,   31,
-       30,   28,   29,   28,   27,   22,  250,  251,  251,  237,
-      237,  238,    9,   20,    0,   18,    1,   19,    0,    0,
-        0,   16,   10,    0,    0,    0,    0,    4,   16,    5,
-        0,    2,   17,  148,  149,    0,    0,    0,  143,    0,
-      159,  157,    0,  153,  153,    0,  243,  243,  243,    0,
-        0,  142,    0,  147,  137,    0,    0,    0,  139,  140,
-      152,  138,    0,  136,  134,  133,  131,  132,  246,  244,
-
-      245,   40,   42,   40,   40,   37,   38,    0,   50,   49,
-       51,    0,  164,    0,  164,  167,  168,  219,  215,  173,
-        0,  183,  184,  189,  186,  228,  233,    0,    0,  221,
-      229,  229,  229,    0,  130,    0,   21,   23,   24,  235,
-      241,  240,  239,  240,    0,    0,  225,  220,    0,    0,
-       53,   52,    0,  128,    0,    0,  129,  129,  129,  129,
       129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,   55,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,    0,   35,
-       34,   48,   45,   46,   47,   31,   32,   29,   26,   25,
-
-      250,  248,  249,  237,    0,   16,   10,    0,   14,    0,
-        0,    0,    0,    0,    4,   16,    5,    0,    6,    0,
-      144,    0,  145,    0,  158,    0,  153,  153,    0,  153,
-      153,  153,  243,  243,  155,  154,    0,  156,  138,  146,
-        0,  152,    0,  131,  132,   40,   40,    0,   39,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  230,  229,  229,    0,    0,  220,    0,    0,
-        0,    0,  129,  129,  129,  129,  129,  129,   65,  129,
-      129,  129,   70,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,   36,   33,   36,   34,   48,   45,  268,
+       48,   48,   44,   43,  268,  178,  177,  268,  179,  180,
+      181,  176,  182,  183,  184,  185,   31,   32,   31,   30,
+       28,   29,   28,   27,   22,  253,  254,  254,  240,  240,
+      241,  267,  266,  267,  258,  257,  267,  255,  256,  262,
+      262,  263,  267,  260,  260,  261,    9,   20,    0,   18,
+        1,   19,    0,    0,    0,   16,   10,    0,    0,    0,
+        0,    4,   16,    5,    0,    2,   17,  148,  149,    0,
+        0,    0,  143,    0,  159,  157,    0,  153,  153,    0,
+
+      246,  246,  246,    0,    0,  142,    0,  147,  137,    0,
+        0,    0,  139,  140,  152,  138,    0,  136,  134,  133,
+      131,  132,  249,  247,  248,   40,   42,   40,   40,   37,
+       38,    0,   50,   49,   51,    0,  164,    0,  164,  167,
+      168,  222,  218,  173,    0,  186,  187,  192,  189,  231,
+      236,    0,    0,  224,  232,  232,  232,    0,  130,    0,
+       21,   23,   24,  238,  244,  243,  242,  243,    0,    0,
+      228,  223,    0,    0,   53,   52,    0,  128,    0,    0,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
       129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
 
+       55,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,    0,   35,   34,   48,   45,   46,   47,    0,
+        0,   31,   32,   29,   26,   25,  253,  251,  252,  240,
+      266,  259,  262,  265,  264,  265,  260,    0,   16,   10,
+        0,   14,    0,    0,    0,    0,    0,    4,   16,    5,
+        0,    6,    0,  144,    0,  145,    0,  158,    0,  153,
+      153,    0,  153,  153,  153,  246,  246,  155,  154,    0,
+      156,  138,  146,    0,  152,    0,  131,  132,   40,   40,
+        0,   39,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  233,  232,  232,    0,    0,
+
+      223,    0,    0,    0,    0,  129,  129,  129,  129,  129,
+      129,   65,  129,  129,  129,   70,  129,  129,  129,  129,
       129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,    0,    0,
-        0,    0,   14,    0,    0,    0,    0,    0,    0,    4,
-        8,    5,    0,  153,  153,  153,  153,  153,  153,  153,
-      243,  156,    0,    0,   40,   40,    0,    0,    0,    0,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,    0,  174,    0,    0,  175,    0,    0,    0,    0,
+        0,   14,    0,    0,    0,    0,    0,    0,    4,    8,
+        5,    0,  153,  153,  153,  153,  153,  153,  153,  246,
+      156,    0,    0,   40,   40,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  229,  229,
-        0,    0,   56,   57,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,   71,   72,  129,  129,  129,  129,
-       77,   78,  129,  129,  129,  129,  129,  129,  129,   83,
-
-      129,  129,  129,  129,  129,  129,  129,  129,  129,   92,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,    0,
-        0,    0,    0,   15,    0,    0,    0,    0,    0,    8,
-        8,    8,    0,  153,  153,  153,  153,  153,  153,  153,
-        0,    0,   40,   40,  214,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,  232,  232,    0,
+        0,   56,   57,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,   71,   72,  129,  129,  129,  129,   77,
+       78,  129,  129,  129,  129,  129,  129,  129,   83,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,   92,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,    0,    0,
+        0,    0,   15,    0,    0,    0,    0,    0,    8,    8,
+        8,    0,  153,  153,  153,  153,  153,  153,  153,    0,
+        0,   40,   40,  217,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  229,  229,
-        0,    0,   58,  129,   60,  129,   62,  129,  129,  129,
-      129,   68,  129,  129,  129,   73,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,   86,  129,  129,
-
-      129,  129,   90,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,    0,    0,    0,    0,    3,    0,    0,
-        0,    8,    7,    8,    0,  153,  153,  153,    0,    0,
-       40,   40,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,  232,  232,    0,
+        0,   58,  129,   60,  129,   62,  129,  129,  129,  129,
+       68,  129,  129,  129,   73,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,   86,  129,  129,  129,
+      129,   90,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,    0,    0,    0,    0,    3,    0,    0,    0,
+        8,    7,    8,    0,  153,  153,  153,    0,    0,   40,
+       40,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  222,  223,  222,  223,
-      129,   61,  129,  129,  129,  129,  129,  129,  129,  125,
-      129,  129,  129,  129,  129,  129,  129,  129,  123,  129,
-       85,  129,   88,  129,   89,  129,  129,  129,  104,    0,
-      129,   94,  129,    0,   95,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  225,  226,  225,  226,  129,
 
-       12,    0,   13,    0,  151,    0,  150,    0,    0,    0,
+       61,  129,  129,  129,  129,  129,  129,  129,  125,  129,
+      129,  129,  129,  129,  129,  129,  129,  123,  129,   85,
+      129,   88,  129,   89,  129,  129,  129,  104,    0,  129,
+       94,  129,    0,   95,    0,    0,    0,    0,    0,   12,
+        0,   13,    0,  151,    0,  150,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      129,  129,  129,  129,  129,   66,  129,   69,  129,  129,
+      129,  129,  129,  129,  122,  129,   82,  129,  129,   87,
+      129,   91,  102,  124,    0,    0,    0,    0,    0,    0,
+
+      129,  129,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  150,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  129,  129,  129,  129,  129,   66,  129,   69,  129,
-      129,  129,  129,  129,  129,  122,  129,   82,  129,  129,
-       87,  129,   91,  102,  124,    0,    0,    0,    0,    0,
-        0,  129,  129,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  150,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  129,  129,  129,
+      129,  129,   67,  129,  129,  129,  129,   79,  129,  129,
+      129,  129,  129,  129,    0,    0,  113,    0,    0,    0,
+        0,    0,    0,   93,  129,    0,    0,  114,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   11,    0,  193,
+      194,  195,  196,  197,  198,  199,  200,  201,  202,  203,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  129,  129,
-
-      129,  129,  129,   67,  129,  129,  129,  129,   79,  129,
-      129,  129,  129,  129,  129,    0,    0,  113,    0,    0,
-        0,    0,    0,    0,   93,  129,    0,    0,  114,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   11,    0,
-      190,  191,  192,  193,  194,  195,  196,  197,  198,  199,
-      200,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,   84,  129,  129,    0,
-        0,    0,    0,    0,    0,  115,    0,  103,    0,    0,
-        0,    0,    0,  116,    0,    0,    0,    0,    0,  201,
-
-      202,  203,  204,  205,  206,  207,  208,  209,  210,  211,
-      212,    0,  129,  129,  129,  129,  129,  121,  129,  129,
-       75,  129,  129,  129,  129,  129,    0,    0,  109,    0,
-      119,  117,  110,    0,    0,    0,  120,  118,    0,    0,
-        0,    0,    0,    0,  213,  129,  129,  129,  129,  129,
-      125,   74,  129,   81,  129,  126,  129,  105,  107,    0,
-      106,  108,    0,    0,    0,    0,    0,    0,    0,  129,
-       63,  129,  129,  129,  129,   76,  129,  111,  112,   97,
-        0,    0,    0,    0,   98,  129,  129,  129,  129,  129,
-      127,   96,    0,  100,    0,  129,  129,  129,   66,  129,
-
-       99,  101,  129,   64,  129,  129,  129,   67,  129,  129,
-       80,   59,    0
+
+        0,    0,    0,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,   84,  129,  129,    0,    0,
+        0,    0,    0,    0,  115,    0,  103,    0,    0,    0,
+        0,    0,  116,    0,    0,    0,    0,    0,  204,  205,
+      206,  207,  208,  209,  210,  211,  212,  213,  214,  215,
+        0,  129,  129,  129,  129,  129,  121,  129,  129,   75,
+      129,  129,  129,  129,  129,    0,    0,  109,    0,  119,
+      117,  110,    0,    0,    0,  120,  118,    0,    0,    0,
+        0,    0,    0,  216,  129,  129,  129,  129,  129,  125,
+       74,  129,   81,  129,  126,  129,  105,  107,    0,  106,
+
+      108,    0,    0,    0,    0,    0,    0,    0,  129,   63,
+      129,  129,  129,  129,   76,  129,  111,  112,   97,    0,
+        0,    0,    0,   98,  129,  129,  129,  129,  129,  127,
+       96,    0,  100,    0,  129,  129,  129,   66,  129,   99,
+      101,  129,   64,  129,  129,  129,   67,  129,  129,   80,
+       59,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -550,802 +554,873 @@ static yyconst flex_int32_t yy_meta[85] =
     {   0,
         1,    1,    2,    1,    3,    4,    1,    1,    5,    6,
         1,    7,    8,    9,    1,   10,    1,   11,   12,   12,
-       12,   12,   13,    1,    1,    1,    1,   14,   14,   14,
-       14,   14,   14,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   16,   17,   18,    1,   19,   14,   14,   14,
-       14,   14,   14,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   20,    1,   21
+       12,   12,   13,    1,    1,   14,    1,   15,   15,   15,
+       15,   15,   15,   16,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       16,   16,   17,   18,   19,    1,   20,   15,   15,   15,
+       15,   15,   15,   16,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       16,   21,    1,   22
     } ;
 
-static yyconst flex_int16_t yy_base[1221] =
+static yyconst flex_int16_t yy_base[1278] =
     {   0,
         0,   84,  167,  250,  171,  184,  135,  142,  220,  231,
-      196,  200,  334,    0, 3627, 3625,  211,  416,  203,  212,
+      196,  200,  334,    0, 3801, 3800,  211,  416,  203,  212,
       189,  225,  266,  417,  500,    0,  207,  208,  234,  421,
       424,  436,  583,  588,  669,    0,  294,  304,  584,  751,
-      579,  580,  417,  576,  287,  306,  241,  441,  595,  608,
-      169,  238,  440,  754, 3680, 4511,  325, 4511, 3676,    0,
-      446, 4511, 3673,  430,  827, 3661,    0, 4511,  758, 4511,
-     3650, 4511,  453, 3621, 4511, 4511, 3619, 3584,  129,  746,
-      445,  766, 4511, 3604,  198, 3582, 4511, 4511, 4511, 3600,
-        0, 3599,  214,    0, 3506, 3483,    0, 4511, 3532, 4511,
-
-      420,  119, 3481, 3478, 3446,    0, 3526, 4511, 3520, 4511,
-      482, 3520, 3518, 4511, 3455,    0, 4511, 4511, 4511, 3504,
-     4511,  598, 4511, 4511, 4511, 3499, 4511,  754, 4511, 3477,
-      759,  180, 4511, 4511, 3467,    0, 3442,  762, 4511,    0,
-     4511, 3459, 4511, 3406, 3434,    0,  562,  167, 3393, 3370,
-     4511, 4511,  326, 4511,  420,    0, 4511, 3418, 3402, 3366,
-     3342,    0, 4511, 3368, 4511, 3317,  444, 3314, 4511,  471,
-     4511, 3354, 3271, 3337,  572,  189, 3295, 3285, 4511, 3332,
-     4511, 3307, 3303,  585,  594, 4511,  746,  734,  744,  754,
-      763,  770,    0,  755,  748,  763,  818,  789,  240,  822,
-
-      762,  381,  802,  791,  813,  824,  577, 4511, 4511, 3302,
-      871,    0, 4511, 3302, 3250, 3231, 4511, 4511, 4511, 4511,
-     4511, 4511, 4511, 4511, 4511, 4511, 4511,    0, 4511, 3279,
-     4511, 4511, 4511, 3276, 3260, 3259,    0, 3221, 3214,    0,
-     3264, 4511,  835, 4511, 3262,    0,  903, 4511, 3257,  842,
-      817,    0,    0,  910,  914,  918,  922,    0,  814,    0,
-      457, 4511,    0,  943, 4511, 3241, 3141,  483, 4511, 3217,
-     3212, 4511,  826,  556,  903,  930, 4511,  757,    0, 3134,
-     3131, 4511, 3129,  964, 4511, 3190, 3110, 3174, 3161, 4511,
-        0, 4511,  896, 4511,    0, 3172,    0,    0,    0, 4511,
-
-     4511,    0, 4511,  910,  913, 4511, 4511,  602,    0, 3169,
-     4511,  957, 3164, 3161, 3127, 4511,    0, 4511,  976, 4511,
-     1020, 4511, 4511, 4511, 4511,    0, 4511, 3116,    0, 4511,
-        0,  926,  930,  644, 4511,  662,    0, 4511, 4511,    0,
-     4511, 4511, 3071, 3121,  794, 3037, 4511,    0,  934,  932,
-     3117, 4511, 3091, 4511,  938,  939,    0,  940,  738,  956,
-      802, 3059,  876,  978,  933,  933,  939,  948,  964, 1030,
-      938,  958,  976,  968,    0,  996, 4511,  999, 1057, 1068,
-      981, 1079, 1077, 1080, 1074, 1068, 1070, 1120, 3062, 4511,
-     1014,    0, 4511, 4511, 4511,    0, 4511, 4511, 4511, 4511,
-
-        0, 4511, 4511,    0, 1078,    0,    0, 1153, 4511, 3063,
-     1166, 1077, 1076, 1091,    0, 1089,    0, 1018, 4511, 1022,
-     4511, 1025, 4511, 1035, 4511, 1091, 1067, 1138, 1162, 1242,
-     1177, 1308, 1105,    0, 4511, 4511, 2954, 1198, 4511, 4511,
-     1144,    0, 1137,    0,    0, 1161, 1156, 1123, 4511, 1202,
-     1308, 1309, 1310, 1319, 3013, 1312, 1311, 1327, 1320, 1321,
-     1323, 1382, 4511, 1172, 1166, 2589, 2537,    0, 1178, 1169,
-     1169, 1298, 1315, 1324, 1330, 1321, 1330, 1323,    0, 1341,
-     1332, 1348,    0, 1346, 1350, 1348, 1361, 1350, 1367, 2573,
-     1370, 1366, 1380, 1382, 1382, 1385, 1378, 1387, 1391, 1400,
-
-     1393, 1403, 1406, 1414, 1400, 1401, 1404, 1429, 1419, 1424,
-     1428, 1425, 1436, 1435, 1430, 1441, 1442, 1432, 1432, 1450,
-     1209, 1508, 4511, 1215, 1512, 1219, 1461, 1455, 1451,    0,
-     1143,    0, 1461, 1534, 1600, 1636,  204, 2525, 1606, 1681,
-     4511, 4511, 1453, 1463, 1591, 1442, 2524, 1599, 1604, 1600,
-     1607, 1605, 1611, 1608, 1650, 1620, 1606, 1614, 1613, 1654,
-     1663, 1652, 1661, 1666, 1682, 1664, 1693, 1694, 1655, 1674,
-     1662, 1675, 4511, 4511, 1683, 1676, 1677, 1683, 1697, 1692,
-     1731, 1711, 1702, 1718,    0,    0, 1719, 1706, 1716, 1735,
-        0,    0, 2553, 1722, 1732, 2540, 1725, 1722, 1733,    0,
-
-     1727, 1747, 1740, 1739, 1735, 1752, 1739, 1740, 1746,    0,
-     1750, 1763, 1760, 1750, 1752, 1759, 1777, 1762, 1778, 1769,
-     1783, 1778, 2514, 4511, 1224, 1230, 1772, 1783, 1780,    0,
-     1507, 1234, 2364,  732, 2273, 1809, 1845, 1430, 1076, 1585,
-     1797, 2286, 1785, 1807, 4511, 1811, 1814, 1829, 1835, 1821,
-     1808, 1822, 1845, 1859, 1860, 1862, 1868, 1869, 1870, 1825,
-     1888, 1890, 1876, 1891, 1874, 1902, 1894, 1898, 1795, 1891,
-     1882, 1899,    0, 1887,    0, 1892,    0, 2260, 1900, 1891,
-     1909,    0, 1904, 2253, 1902,    0, 1916, 1907, 1918, 2227,
-     1912, 1909, 1924, 2201, 1908, 1918, 1922,    0, 1934, 1925,
-
-     1931, 1947,    0, 1936, 1942, 1941, 1953, 2103, 1957, 1958,
-     1952, 2085, 1950, 1951, 1950, 1969, 1956, 2133, 1515, 1961,
-     1971, 2002, 4511, 2117, 2038, 1981, 1592, 1842, 2025, 1983,
-        0,    0, 1972, 1990, 1999, 1987, 1994, 2008, 2005, 2007,
-     2015, 2023, 2016, 2021, 2017, 2024, 2022, 2026, 2030, 2029,
-     2037, 2035, 2045, 2051, 2054, 2061,    0,    0, 4511, 4511,
-     1922,    0, 2049, 2039, 2050, 2053, 2051, 2051, 2054, 1831,
-     2073, 2064, 2077, 2073, 2081, 2082, 2072, 2085,    0, 2091,
-        0, 2074,    0, 1824,    0, 2091, 2094, 2082,    0, 2116,
-     2088,    0, 2092, 2133,    0, 1728, 2097, 2095, 1714, 1678,
-
-     4511, 2135, 4511, 2096, 4511, 1726, 4511, 1703, 1612, 1601,
-     1514, 1500, 1477, 1377, 1373, 1333, 1274, 1203, 2133, 2128,
-     2148, 2151, 2144, 2150, 2156, 2158, 2161, 2163, 2184, 2167,
-     2164, 2157, 2151, 2159, 2158, 2173,    0, 2165,    0, 2166,
-     2182, 2173, 2179, 2178, 2186,    0, 2185,    0, 2187, 2193,
-        0, 2202,    0,    0,    0, 2204, 2187, 2201, 2224, 2200,
-     2222, 2213, 2219, 2230, 2199, 2227, 2239, 2222, 2225, 1162,
-     1158, 2228, 2278, 4511, 1112, 1109, 1081, 1063, 1057,  984,
-      976,  969,  923,  913,  910,  931,  895,  891,  887,  881,
-      874,  856,  848,  843,  840,  804,  788, 2259, 2248, 2258,
-
-     2265, 2264, 2241,    0, 2254, 2265, 2268, 2279,    0, 2262,
-     2268, 2271, 2266, 2278, 2283, 2289, 2273, 4511, 2280, 2281,
-     2281, 2300, 2283, 2281,    0, 2303, 2307, 2292, 4511, 2302,
-     2304, 2319, 2303, 2307, 2309, 2328, 2309, 2357, 4511, 2362,
-     4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511,
-     4511,  746,  725,  597,  577,  441,  426,  420,  267,  253,
-      247,  230,  183,  181, 2317, 2338, 2342, 2330, 2336, 2343,
-     2339, 2331, 2334, 2350, 2341, 2345,    0, 2350, 2346, 2344,
-     2349, 2361, 2364, 2367, 2359, 4511, 2357,    0, 2358, 2362,
-     2379, 2383, 2375, 4511, 2388, 2375, 2382, 2377, 2389, 4511,
-
-     4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511,
-     4511,  122, 2399, 2398, 2382, 2391, 2391,    0, 2407, 2408,
-        0, 2397, 2398, 2420, 2417, 2414, 2418, 2426, 4511, 2414,
-     4511, 4511, 4511, 2422, 2429, 2419, 4511, 4511, 2417, 2437,
-     2435, 2425, 2428, 2428, 4511, 2431, 2445, 2445, 2447, 2452,
-        0,    0, 2461,    0, 2444,    0, 2459, 4511, 4511, 2452,
-     4511, 4511, 2454, 2465, 2452, 2467, 2471, 2470, 2476, 2481,
-        0, 2468, 2465, 2465, 2485,    0, 2465, 4511, 4511, 4511,
-     2489, 2491, 2479, 2488, 4511, 2501, 2491, 2498, 2503, 2490,
-        0, 4511, 2497, 4511, 2510, 2500, 2502, 2500,    0, 2514,
-
-     4511, 4511, 2516,    0, 2523, 2508, 2509,    0, 2528, 2531,
-        0,    0, 4511, 2593, 2614, 2635, 2656, 2677, 2698, 2719,
-     2740, 2761, 2782, 2803, 2824, 2845, 2866, 2887, 2908, 2929,
-     2950, 2971, 2992, 3013, 3025, 3044, 3055, 3074, 3095, 3108,
-     3127, 3148, 3169, 3190, 3202, 3221, 3242, 3263, 3280, 3292,
-     3311, 3332, 3353, 3374, 3395, 3408, 2553, 3423, 3444, 3463,
-     3484, 3505, 3517, 3536, 3557, 2569, 3057, 3578, 3590, 3609,
-     3630, 3651, 2558, 3663, 3684, 3705, 3726, 3747, 3768, 3789,
-     3810, 3831, 3843, 3862, 3879, 3891, 3910, 3931, 3952, 3973,
-     3994, 4007, 4022, 4043, 4062, 4083, 4104, 4125, 4146, 4167,
-
-     4179, 4189, 4208, 4229, 4250, 2561, 4262, 4283, 4304, 4325,
-     4346, 4367, 3028, 4379, 4398, 4419, 4432, 4447, 4468, 4489
+      745,  748,  417,  576,  287,  306,  241,  441,  591,  595,
+      169,  238,  440,  600,  757,  777,  783,  795,  606,  800,
+     3854, 5052,  325, 5052, 3846,    0,  446, 5052, 3845,  430,
+      853, 3834,    0, 5052,  810, 5052, 3833, 5052,  453, 3805,
+     5052, 5052, 3792, 3780,  129,  746,  445,  862, 5052, 3800,
+      198, 3766, 5052, 5052, 5052, 3785,    0, 3781,  214,    0,
+
+     3729, 3726,    0, 5052, 3767, 5052,  420,  119, 3713, 3706,
+     3675,    0, 3725, 5052, 3719, 5052,  482, 3717, 3714, 5052,
+     3647,    0, 5052, 5052, 5052, 3699, 5052,  598, 5052, 5052,
+     5052, 3677, 5052,  789, 5052, 3653,  812,  180, 5052, 5052,
+     3672,    0, 3651,  823, 5052,    0, 5052, 3670, 5052, 3596,
+     3610,    0,  563,  167, 3569, 3566, 5052, 5052,  326, 5052,
+      420,    0, 5052, 3605, 3588, 3548, 3544,    0, 5052, 3587,
+     5052, 3531,  444, 3504, 5052,  471, 5052, 3555, 3473, 3541,
+      570,  189, 3500, 3496, 5052, 3531, 5052, 3526, 3520,  586,
+      748, 5052,  777,  824,  830,  785,  827,  861,    0,  813,
+
+      831,  874,  884,  888,  240,  899,  852,  381,  889,  881,
+      891,  904,  571, 5052, 5052, 3519,  935,    0, 5052, 3521,
+     3467, 3460, 5052, 5052,    0, 5052, 5052,    0, 5052, 5052,
+     5052, 5052, 5052, 5052, 5052, 5052,    0, 5052, 3510, 5052,
+     5052, 5052, 3508, 3488, 3471,    0, 3414, 3409,    0, 3460,
+     5052, 5052, 5052, 3459, 5052, 5052, 3446, 5052, 5052,    0,
+     3455, 5052,  604,    0, 3453, 5052,  771, 5052, 3432,    0,
+      874, 5052, 3431,  895,  901,    0,    0,  963,  967,  972,
+      976,    0,  934,    0,  457, 5052,    0,  998, 5052, 3426,
+     3345,  483, 5052, 3412, 3405, 5052,  948,  560,  967,  985,
+
+     5052,  610,    0, 3323, 3321, 5052, 3284, 1014, 5052, 3362,
+     3282, 3350, 3310, 5052,    0, 5052,  967, 5052,    0, 3310,
+        0,    0,    0, 5052, 5052,    0, 5052,  972,  971, 5052,
+     5052,  621,    0, 3307, 5052,  946, 3305, 3298, 3275, 5052,
+        0, 5052, 1005, 5052, 1070, 5052, 5052, 5052, 5052,    0,
+     5052, 3265,    0, 5052,    0,  975,  973,  644, 5052,  660,
+        0, 5052, 5052,    0, 5052, 5052, 3215, 2735,  776, 2651,
+     5052,    0,  977,  982, 2730, 5052, 2724, 5052,  992,  994,
+        0,  997,  747, 1004,  956, 2710,  994, 1020, 1000, 1008,
+     1010, 1018, 1031, 1019, 1010, 1052, 1058, 1020,    0, 1076,
+
+     5052, 1080, 1107, 1117, 1123, 1129, 1136, 1129, 1129, 1115,
+     1124, 1175, 2715, 5052, 1052,    0, 5052, 5052, 5052, 2708,
+     2686,    0, 5052, 5052, 5052, 5052,    0, 5052, 5052,    0,
+     5052, 5052,    0, 5052, 2607, 2613,    0, 1129,    0,    0,
+     1208, 5052, 2547, 1221, 1130, 1130, 1135,    0, 1139,    0,
+      754, 5052,  863, 5052, 1083, 5052, 1171, 5052, 1144,  905,
+     1194, 1217, 1297, 1199, 1363, 1058,    0, 5052, 5052, 2349,
+     1253, 5052, 5052, 1199,    0, 1192,    0,    0, 1214, 1209,
+     1175, 5052, 1257, 1363, 1364, 1365, 1374, 2328, 1367, 1366,
+     1382, 1375, 1376, 1378, 1437, 5052, 1227, 1221, 2292, 2219,
+
+        0, 1233, 1224, 1146, 1224, 1370, 1379, 1385, 1376, 1385,
+     1378,    0, 1396, 1352, 1403,    0, 1390, 1399, 1403, 1416,
+     1404, 1422, 2203, 1425, 1421, 1435, 1437, 1437, 1440, 1433,
+     1442, 1446, 1455, 1448, 1458, 1461, 1469, 1455, 1407, 1454,
+     1478, 1472, 1476, 1479, 1477, 1491, 1489, 1484, 1495, 1496,
+     1485, 1493, 5052, 2197, 2095, 5052, 2108, 2046, 1500, 1264,
+     1558, 5052, 1270, 1562, 1275, 1514, 1508, 1505,    0,  788,
+        0, 1537, 1600, 1666, 1702, 1765, 2066, 1672, 1831, 5052,
+     5052, 1531, 1654, 1658, 1653, 1976, 1666, 1671, 1667, 1672,
+     1680, 1678, 1674, 1670, 1842, 1673, 1679, 1832, 1833, 1834,
+
+     1831, 1835, 1843, 1850, 1845, 1853, 1681, 1839, 1829, 1847,
+     1834, 5052, 5052, 1840, 1831, 1832, 1839, 1869, 1865, 1898,
+     1876, 1869, 1891,    0,    0, 1888, 1875, 1878, 1895,    0,
+        0, 1992, 1883, 1893, 1928, 1886, 1884, 1894,    0, 1892,
+     1911, 1904, 1902, 1897, 1915, 1906, 1907, 1906,    0, 1917,
+     1930, 1931, 1918, 1925, 1924, 1942, 1928, 1948, 1937, 1950,
+     1939, 1936, 5052, 1279, 1283, 1932, 1945, 1942,    0,  791,
+     1289, 1906,  204, 1865, 1971, 2007, 1532, 1480, 1496, 1959,
+     1860, 1954, 1970, 5052, 1972, 1980, 1982, 1974, 1976, 1998,
+     1984, 2010, 2020, 2024, 2029, 2021, 2033, 2034, 2011, 2041,
+
+     2049, 2036, 2037, 2055, 2060, 2056, 2059, 2043, 2031, 2047,
+     2065,    0, 2055,    0, 2055,    0, 1866, 2066, 2060, 2077,
+        0, 2071, 1862, 2068,    0, 2086, 2074, 2085, 1804, 2081,
+     2077, 2092, 1752, 2080, 2088, 2087,    0, 2099, 2091, 2097,
+     2105,    0, 2099, 2106, 2106, 2117, 1702, 2121, 2123, 2117,
+     1698, 2114, 2115, 2115, 2131, 2121, 1742, 1549, 2127, 2137,
+     1586, 5052, 1710, 1679, 1539, 1542, 1544, 1674, 1629,    0,
+        0, 2152, 2148, 2157, 2154, 2150, 2147, 2168, 2161, 2173,
+     2177, 2179, 2178, 2180, 2181, 2188, 2182, 2194, 2192, 2208,
+     2195, 2211, 2215, 2220, 2187,    0,    0, 5052, 5052, 1583,
+
+        0, 2219, 2191, 2201, 2208, 2204, 2207, 2208, 1574, 2231,
+     2224, 2237, 2232, 2237, 2240, 2229, 2246,    0, 2252,    0,
+     2238,    0, 1559,    0, 2249, 2256, 2243,    0, 2273, 2246,
+        0, 2253, 2294,    0, 1514, 2258, 2260, 1490, 1744, 5052,
+     1745, 5052, 2245, 5052, 1512, 5052, 1506, 1432, 1428, 1388,
+     1329, 1267, 1264, 1260, 1256, 1251, 1247, 2277, 2273, 2304,
+     2306, 2298, 2305, 2315, 2323, 2317, 2318, 2325, 2324, 2335,
+     2318, 2314, 2319, 2324, 2331,    0, 2329,    0, 2324, 2340,
+     2330, 2335, 2336, 2338,    0, 2340,    0, 2343, 2345,    0,
+     2363,    0,    0,    0, 2357, 2341, 2349, 2378, 2347, 2368,
+
+     2365, 2376, 2390, 2374, 2382, 2393, 2380, 2385, 1150, 1142,
+     2388, 1748, 5052, 1135, 1129, 1124, 1118, 1113, 1107, 1104,
+     1036, 1027, 1013,  999, 1027, 1012,  940,  920,  916,  878,
+      833,  811,  806,  801,  795,  779, 2420, 2394, 2400, 2408,
+     2407, 2399,    0, 2403, 2413, 2414, 2423,    0, 2408, 2416,
+     2421, 2417, 2434, 2440, 2444, 2428, 5052, 2436, 2437, 2440,
+     2455, 2438, 2435,    0, 2457, 2460, 2445, 5052, 2449, 2452,
+     2467, 2450, 2451, 2453, 2472, 2458, 1749, 5052, 1753, 5052,
+     5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052,
+      724,  715,  612,  566,  441,  426,  420,  267,  253,  247,
+
+      230,  183,  181, 2459, 2478, 2482, 2470, 2480, 2490, 2484,
+     2480, 2483, 2500, 2491, 2490,    0, 2498, 2497, 2495, 2499,
+     2504, 2513, 2518, 2510, 5052, 2504,    0, 2506, 2510, 2524,
+     2527, 2521, 5052, 2533, 2517, 2518, 2522, 2546, 5052, 5052,
+     5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052,
+      122, 2544, 2543, 2534, 2536, 2538,    0, 2556, 2557,    0,
+     2547, 2547, 2568, 2565, 2564, 2567, 2574, 5052, 2562, 5052,
+     5052, 5052, 2571, 2580, 2568, 5052, 5052, 2565, 2585, 2582,
+     2570, 2575, 2575, 5052, 2579, 2593, 2592, 2593, 2598,    0,
+        0, 2608,    0, 2593,    0, 2604, 5052, 5052, 2600, 5052,
+
+     5052, 2602, 2615, 2603, 2615, 2620, 2618, 2624, 2629,    0,
+     2618, 2615, 2614, 2635,    0, 2616, 5052, 5052, 5052, 2638,
+     2639, 2627, 2634, 5052, 2646, 2639, 2645, 2651, 2638,    0,
+     5052, 2643, 5052, 2655, 2646, 2648, 2647,    0, 2662, 5052,
+     5052, 2663,    0, 2671, 2658, 2659,    0, 2672, 2677,    0,
+        0, 5052, 2739, 2761, 2783, 2805, 2827, 2849, 2871, 2893,
+     2915, 2937, 2959, 2981, 3003, 3025, 3047, 3069, 3091, 3113,
+     3135, 3157, 3179, 3201, 3223, 3245, 3258, 3278, 3290, 3310,
+     3332, 3346, 3366, 3388, 3410, 3432, 3445, 3465, 3487, 3509,
+     3527, 3540, 3560, 3582, 3604, 3626, 3648, 3662, 2292, 3678,
+
+     3700, 2700, 2711, 3720, 3742, 3764, 3786, 3808, 3830, 3843,
+     3863, 3885, 3256, 3288, 3907, 3920, 3940, 3962, 3984,  619,
+     3997, 4019, 4041, 4063, 4085, 4107, 4129, 4151, 4173, 4186,
+     4206, 4224, 4237, 4257, 4279, 4301, 4323, 4345, 4359, 4375,
+     4397, 4412, 4423, 4443, 4465, 4487, 4509, 4531, 4553, 4575,
+     4597, 4610, 4621, 4641, 4663, 4685,  893, 4698, 4720, 4742,
+     4764, 4786, 4808, 3344, 4821, 4841, 4863, 4877, 4888, 4899,
+     4919, 4941, 4954, 4974, 4987, 5007, 5029
     } ;
 
-static yyconst flex_int16_t yy_def[1221] =
+static yyconst flex_int16_t yy_def[1278] =
     {   0,
-     1113, 1113, 1114, 1114, 1115, 1116, 1117, 1117, 1118, 1118,
-     1119, 1119, 1113,   13, 1120, 1120, 1121, 1121, 1122, 1122,
-     1123, 1123, 1124, 1124, 1113,   25, 1125, 1125, 1126, 1126,
-     1127, 1127, 1128, 1128, 1113,   35, 1129, 1129, 1130, 1130,
-     1120, 1120, 1120, 1120, 1131, 1131, 1132, 1132, 1126, 1126,
-     1133, 1133, 1134, 1134, 1113, 1113, 1113, 1113, 1113, 1135,
-     1113, 1113, 1113, 1113, 1136, 1113, 1137, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1138, 1139,
-     1140, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1141, 1113, 1141, 1142, 1113, 1113, 1143, 1113, 1143, 1113,
-
-     1143, 1143, 1113, 1113, 1113, 1144, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1145, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1139, 1113, 1113,
-     1139, 1146, 1113, 1113, 1113, 1147, 1113, 1139, 1113, 1148,
-     1113, 1148, 1113, 1149, 1113, 1150, 1150, 1150, 1113, 1113,
-     1113, 1113, 1151, 1113, 1151, 1152, 1113, 1152, 1113, 1113,
-     1113, 1153, 1113, 1153, 1113, 1113, 1154, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1155, 1113, 1113, 1113, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1156, 1156,
-
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1113, 1113, 1158,
-     1113, 1159, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1160, 1113, 1160,
-     1113, 1113, 1113, 1113, 1113, 1113, 1161, 1113, 1113, 1162,
-     1162, 1113, 1113, 1113, 1113, 1163, 1113, 1113, 1113, 1113,
-     1113, 1164, 1165, 1113, 1113, 1113, 1113, 1166, 1164, 1167,
-     1168, 1113, 1169, 1113, 1113, 1113, 1113, 1170, 1113, 1113,
-     1113, 1113, 1113, 1171, 1171, 1172, 1113, 1113, 1173, 1113,
-     1113, 1113, 1174, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1175, 1113, 1113, 1113, 1176, 1113, 1177, 1178, 1179, 1113,
-
-     1113, 1180, 1113, 1180, 1180, 1113, 1113, 1181, 1182, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1183, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1184, 1113, 1113, 1185, 1113,
-     1186, 1186, 1186, 1187, 1113, 1187, 1188, 1113, 1113, 1189,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1190, 1113, 1113,
-     1113, 1113, 1191, 1113, 1113, 1113, 1192, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1113, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1113,
-     1113, 1194, 1113, 1113, 1113, 1195, 1113, 1113, 1113, 1113,
-
-     1196, 1113, 1113, 1197, 1113, 1198, 1199, 1200, 1113, 1113,
-     1113, 1113, 1113, 1113, 1201, 1198, 1202, 1203, 1113, 1203,
-     1113, 1204, 1113, 1204, 1113, 1113, 1205, 1205, 1205, 1113,
-     1205, 1205, 1113, 1206, 1113, 1113, 1207, 1113, 1113, 1113,
-     1113, 1208, 1113, 1209, 1210, 1211, 1211, 1212, 1113, 1212,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1113, 1214, 1214, 1113, 1215, 1216, 1113, 1113,
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113,
-     1200, 1200, 1113, 1200, 1200, 1113, 1113, 1113, 1113, 1201,
-     1218, 1202, 1113, 1113, 1205,  432,  430,  430, 1205,  432,
-     1113, 1113, 1113, 1113, 1211, 1211, 1113, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214,
-     1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113,
-     1113, 1113, 1113, 1113, 1200, 1200, 1113, 1113, 1113, 1218,
-     1218, 1218, 1113,  534,  534, 1205,  432, 1205, 1205, 1205,
-     1113, 1113, 1211, 1211, 1113, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214,
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113, 1219, 1113,
-     1113, 1218, 1113, 1218, 1113, 1205, 1205, 1205, 1113, 1113,
-     1211, 1211, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214, 1113, 1113,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113,
-     1217, 1217, 1217, 1113, 1217, 1113, 1113, 1113, 1113, 1219,
-
-     1113, 1219, 1113, 1113, 1113, 1113, 1113, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113,
-     1113, 1217, 1217, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1220, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1217, 1217, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1220, 1113, 1220,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1213, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1217, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217,
-     1217, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217,
-
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217,    0, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113
+     1152, 1152, 1153, 1153, 1154, 1155, 1156, 1156, 1157, 1157,
+     1158, 1158, 1152,   13, 1159, 1159, 1160, 1160, 1161, 1161,
+     1162, 1162, 1163, 1163, 1152,   25, 1164, 1164, 1165, 1165,
+     1166, 1166, 1167, 1167, 1152,   35, 1168, 1168, 1169, 1169,
+     1159, 1159, 1159, 1159, 1170, 1170, 1171, 1171, 1165, 1165,
+     1172, 1172, 1173, 1173, 1174, 1174, 1175, 1175, 1176, 1176,
+     1152, 1152, 1152, 1152, 1152, 1177, 1152, 1152, 1152, 1152,
+     1178, 1152, 1179, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1180, 1181, 1182, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1183, 1152, 1183, 1184,
+
+     1152, 1152, 1185, 1152, 1185, 1152, 1185, 1185, 1152, 1152,
+     1152, 1186, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1187, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1181, 1152, 1152, 1181, 1188, 1152, 1152,
+     1152, 1189, 1152, 1181, 1152, 1190, 1152, 1190, 1152, 1191,
+     1152, 1192, 1192, 1192, 1152, 1152, 1152, 1152, 1193, 1152,
+     1193, 1194, 1152, 1194, 1152, 1152, 1152, 1195, 1152, 1195,
+     1152, 1152, 1196, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1197, 1152,
+     1152, 1152, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+
+     1198, 1198, 1198, 1199, 1198, 1198, 1198, 1198, 1198, 1198,
+     1198, 1198, 1198, 1152, 1152, 1200, 1152, 1201, 1152, 1152,
+     1152, 1152, 1152, 1152, 1202, 1152, 1152, 1203, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1204, 1152, 1204, 1152,
+     1152, 1152, 1152, 1152, 1152, 1205, 1152, 1152, 1206, 1206,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1207,
+     1207, 1152, 1208, 1209, 1209, 1152, 1152, 1152, 1152, 1210,
+     1152, 1152, 1152, 1152, 1152, 1211, 1212, 1152, 1152, 1152,
+     1152, 1213, 1211, 1214, 1215, 1152, 1216, 1152, 1152, 1152,
+     1152, 1217, 1152, 1152, 1152, 1152, 1152, 1218, 1218, 1219,
+
+     1152, 1152, 1220, 1152, 1152, 1152, 1221, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1222, 1152, 1152, 1152, 1223, 1152,
+     1224, 1225, 1226, 1152, 1152, 1227, 1152, 1227, 1227, 1152,
+     1152, 1228, 1229, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1230, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1231,
+     1152, 1152, 1232, 1152, 1233, 1233, 1233, 1234, 1152, 1234,
+     1235, 1152, 1152, 1236, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1237, 1152, 1152, 1152, 1152, 1238, 1152, 1152, 1152,
+     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
+     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
+
+     1152, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
+     1239, 1239, 1240, 1152, 1152, 1241, 1152, 1152, 1152, 1242,
+     1243, 1244, 1152, 1152, 1152, 1152, 1245, 1152, 1152, 1246,
+     1152, 1152, 1247, 1152, 1152, 1152, 1248, 1152, 1249, 1250,
+     1251, 1152, 1152, 1152, 1152, 1152, 1152, 1252, 1249, 1253,
+     1254, 1152, 1254, 1152, 1255, 1152, 1255, 1152, 1152, 1256,
+     1256, 1256, 1152, 1256, 1256, 1152, 1257, 1152, 1152, 1258,
+     1152, 1152, 1152, 1152, 1259, 1152, 1260, 1261, 1262, 1262,
+     1263, 1152, 1263, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1152, 1265, 1265, 1152, 1266,
+
+     1267, 1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1152, 1152, 1269, 1270, 1152, 1152, 1271, 1152, 1272,
+     1272, 1152, 1272, 1272, 1152, 1152, 1152, 1152, 1273, 1274,
+     1275, 1152, 1152, 1256,  465, 1152,  576, 1256,  465, 1152,
+     1152, 1152, 1152, 1262, 1262, 1152, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1152,
+     1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152,
+     1152, 1152, 1152, 1272, 1272, 1152, 1152, 1152, 1274, 1274,
+     1274, 1152,  573,  573, 1256,  465, 1256, 1256, 1256, 1152,
+     1152, 1262, 1262, 1152, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1152,
+     1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1152, 1152, 1152, 1152, 1152, 1276, 1152, 1152,
+     1274, 1152, 1274, 1152, 1256, 1256, 1256, 1152, 1152, 1262,
+     1262, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1265, 1265, 1152, 1152, 1268,
+
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1152, 1268,
+     1268, 1268, 1152, 1268, 1152, 1152, 1152, 1152, 1276, 1152,
+     1276, 1152, 1152, 1152, 1152, 1152, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1268, 1268, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1277, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1268, 1268, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1277, 1152, 1277, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1264, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1268, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1268,
+     1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1152,
+     1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268,    0, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152
     } ;
 
-static yyconst flex_int16_t yy_nxt[4596] =
+static yyconst flex_int16_t yy_nxt[5137] =
     {   0,
-       56,   57,   58,   56,   59,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   56,   56,   56,   56,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   56,   56,   56,   56,   61,   62,   56,   63,   56,
-       64,   56,   65,   56,   56,   56,   56,   56,   56,   56,
-
-       56,   66,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   56,   56,   56,   56,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   56,   56,   56,   69,   70,
-      305,   71,   72,   89,   73,   90, 1045,   74,   75,   76,
-       76,  275,  276,   76,   77,   92,   89,   95,   90,   96,
-       78,   56,   93,   76,   95,  323,   96,  107,  108,  305,
-
-      109,  107,  108, 1012,  109,  125,  291,  126,  127,  154,
-      154,  155,  155,  119,  125,  120,  126,  127,  333,   79,
-       80,  238,   98,  239,   99,  121,  638,   56,  100,  122,
-      122,  122,  122,   98,  323,   99,  157, 1011,  158,  105,
-      350,  130,  131,  233,  132,  234,  159,  333,   81,   76,
-       76,   82,   83,  235,   84,   72,  128,   73,   85,  427,
-       74,   75,   76,   76,  101,  128,   76,   77,  134,  350,
-      135,  102,  103,   86,  104,  101,   76,  130,  131,  292,
-      132,  136,  102,  103, 1010,  104,  160,  378,  161,  229,
-      238,  230,  239,  101,  123,  297,  209,  298,  231,  210,
-
-      102, 1009,   79,   80,  101,   87,  209, 1008,  229,  210,
-      230,  102,  211,  211,  211,  211,  378,  231,  137,  138,
-      139, 1007,  211,  211,  211,  211,  243,  244,  335,  245,
-      336,   81,   76,   76,  110,  111,  112,  110,  113,  110,
-      110,  110,  110,  110,  110,  110,  114,  110,  114,  110,
-      110,  110,  110,  110,  110,  110,  110,  110,  110,  115,
-      110,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  110,  110,  110,  110,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  110,  110,  110,  119,  134,
-      120,  135,  335,  157,  336,  158,  163,  383,  164,  165,
-      121,  250,  136,  159,  122,  122,  122,  122,  163,  224,
-      164,  165,  163,  233,  241,  234,  343,  247,  248,  242,
-      249,  304,  225,  235,  269,  269,  383,  270,  280,  419,
-      281,  420,  226,  282,  282,  282,  282,  227,  251,  137,
-      138,  139,  345,  160, 1006,  161,  166,  167,  168,  346,
-     1005,  304,  225,  312,  313,  423,  314,  424,  166,  167,
-      168,  226,  166,  167,  168, 1004,  227,  344,  251,  123,
-
-      140,  140,  141,  140,  142,  143,  140,  140,  140,  144,
-      140,  140,  140,  140,  140,  140,  140,  145,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  146,  146,  146,
-      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
-      146,  146,  146,  146,  147,  146,  146,  146,  146,  146,
-      146,  148,  149,  140,  150,  140,  146,  146,  146,  146,
-      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
-      146,  146,  146,  147,  146,  146,  146,  146,  146,  146,
-      148,  151,  140,  152,  170,  171,  213,  172,  214,  170,
-      171,  173,  172,  332,  219,  219,  173,  157,  224,  158,
-
-      174,  220,  220,  349,  449,  174,  450,  236,  428,  429,
-      157,  225,  158,  355,  221,  221,  319,  319,  319,  319,
-      236,  226,  356,  332,  222,  222,  227,  175,  388,  223,
-      223, 1003,  175,  349,  176,  177,  215,  178,  216,  176,
-      177,  225,  178,  355,  221,  221,  335,  160,  336,  161,
-      226, 1002,  356,  222,  222,  227,  175,  388,  223,  223,
-      160,  175,  161,  176,  335,  217,  336,  218,  176,  179,
-      180,  181,  179,  182,  183,  179,  179,  179,  179,  179,
-      179,  179,  179,  179,  179,  179,  179,  179,  184,  185,
-      179,  179,  179,  186,  179,  179,  187,  188,  189,  190,
-
-      191,  192,  193,  194,  195,  193,  193,  196,  197,  198,
-      199,  200,  193,  201,  202,  203,  204,  205,  206,  193,
-      207,  179,  179,  179,  179,  179,  187,  188,  189,  190,
-      191,  192,  193,  194,  195,  193,  193,  196,  197,  198,
-      199,  200,  201,  202,  203,  204,  205,  206,  193,  207,
-      179,  179,  179,  213,  726,  214,  163,  362,  241,  264,
-      265,  360,  266,  242,  278,  278,  267,  284,  285,  361,
-      286,  363,  278,  278,  287,  433,  433,  278,  278, 1001,
-      278,  278,  475,  288,  358,  364,  369,  427,  370,  289,
-      359,  360,  365,  382,  371,  345,  279,  367,  372,  361,
-
-     1000,  363,  346,  215,  279,  216,  166,  167,  168,  279,
-      963,  475,  279,  366,  358,  364,  369,  368,  370,  359,
-      376,  290,  365,  382,  371,  279,  962,  367,  372,  384,
-      377,  385,  217,  279,  218,  253,  243,  244,  279,  245,
-      268,  279,  366,  250,  386,  373,  368,  478,  268,  374,
-      376,  387,  405,  379,  254,  416,  255,  426,  255,  384,
-      377,  385,  961,  380,  255,  960,  381,  255,  256,  257,
-      959,  255,  258,  259,  386,  373,  478,  260,  958,  374,
-      251,  387,  405,  379,  254,  416,  255,  426,  255,  391,
-      391,  391,  391,  380,  255,  381,  957,  255,  256,  257,
-
-      255,  258,  259,  956,  247,  248,  260,  249,  261,  955,
-      251,  408,  409,  954,  410,  408,  409,  953,  410,  408,
-      409,  480,  410,  408,  409,  430,  410,  443,  411,  411,
-      411,  411,  411,  411,  411,  411,  411,  411,  411,  411,
-      411,  411,  411,  411,  264,  265,  446,  266,  431,  431,
-      480,  267,  447,  952,  412,  428,  429,  443,  312,  313,
-      413,  314,  464,  414,  951,  284,  285,  950,  286,  465,
-      469,  470,  287,  471,  472,  473,  446,  949,  483,  484,
-      432,  288,  447,  412,  485,  476,  486,  289,  490,  474,
-      413,  487,  464,  414,  319,  319,  319,  319,  491,  465,
-
-      469,  470,  477,  471,  472,  473,  481,  483,  484,  432,
-      482,  492,  499,  485,  493,  476,  486,  490,  474,  290,
-      419,  487,  420,  948,  419,  268,  420,  423,  491,  424,
-      947,  477,  391,  391,  391,  391,  481,  423,  946,  424,
-      482,  492,  499,  493,  494,  495,  268,  451,  452,  453,
-      454,  455,  455,  456,  455,  455,  455,  455,  457,  455,
-      455,  455,  458,  455,  455,  459,  455,  460,  455,  455,
-      461,  455,  488,  494,  495,  462,  489,  451,  452,  453,
-      454,  455,  455,  456,  455,  455,  455,  455,  457,  455,
-      455,  455,  458,  455,  459,  455,  460,  455,  455,  461,
-
-      455,  496,  488,  497,  503,  489,  500,  504,  505,  506,
-      501,  945,  508,  498,  509,  502,  507,  944,  520,  428,
-      429,  527,  528,  277,  277,  449,  529,  450,  428,  429,
-      496,  531,  533,  497,  503,  943,  500,  504,  505,  506,
-      501,  508,  498,  509,  631,  502,  507,  510,  520,  511,
-      527,  528,  512,  513,  522,  523,  529,  524,  514,  515,
-      534,  531,  533,  942,  516,  517,  941,  526,  409,  518,
-      410,  525,  525,  525,  525,  543,  519,  510,  544,  511,
-      535,  535,  512,  513,  411,  411,  411,  411,  514,  515,
-      428,  429,  545,  516,  517,  539,  539,  546,  518,  542,
-
-      542,  542,  542,  569,  449,  543,  450,  570,  544,  571,
-      572,  624,  536,  625,  936,  573,  427,  523,  935,  625,
-      526,  409,  545,  410,  632,  885,  624,  546,  625,  428,
-      429,  626,  523,  569,  524,  722,  723,  570,  724,  571,
-      572,  536,  427,  427,  573,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  428,  429,  884,  538,  427,  537,
-
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  427,  427,  427,  540,  540,  540,  540,
-      547,  547,  547,  547,  547,  540,  540,  540,  540,  540,
-      540,  547,  547,  547,  574,  547,  548,  549,  575,  547,
-      550,  576,  553,  558,  551,  883,  552,  577,  578,  579,
-      428,  429,  556,  557,  580,  540,  540,  540,  540,  540,
-      540,  554,  581,  574,  555,  583,  548,  549,  575,  582,
-      550,  576,  553,  558,  551,  552,  586,  577,  578,  579,
-      584,  587,  556,  557,  580,  882,  585,  588,  589,  881,
-
-      554,  591,  581,  555, 1113,  583,  592,  593,  582,  559,
-      560,  561,  562,  594,  595,  563,  586,  596,  597,  584,
-      564,  587,  598,  599,  565,  585,  588,  566,  589,  567,
-      600,  591,  568,  601,  602,  603,  592,  593,  606,  559,
-      560,  561,  562,  594,  595,  563,  607,  596,  597,  604,
-      564,  608,  598,  599,  565,  605,  566,  609,  567,  610,
-      600,  568,  611,  601,  602,  603,  612,  614,  606,  613,
-      615,  616,  617,  618,  620,  607,  619,  621,  622,  604,
-      608,  623,  428,  429,  274,  605,  644,  609,  627,  610,
-      628,  629,  611,  633,  641,  642,  612,  614,  613,  880,
-
-      615,  616,  617,  618,  620,  619,  621,  622,  631,  522,
-      523,  623,  524,  626,  523,  644,  524,  801,  627,  802,
-      628,  629,  879,  633,  641,  642,  525,  525,  525,  525,
-      525,  525,  525,  525,  427,  427,  878,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  428,  429,  632,  635,
-      427,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-
-      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  427,  427,  427,  636,  636,
-      643,  547,  547,  877,  639,  639,  547,  547,  547,  547,
-      547,  648,  651,  547,  876,  547,  547,  428,  429,  646,
-      650,  647,  547,  653,  428,  429,  649,  655,  656,  657,
-      643,  658,  428,  429,  637,  637,  637,  637,  428,  429,
-      652,  648,  651,  637,  637,  637,  637,  637,  637,  646,
-      650,  647,  547,  653,  547,  649,  547,  655,  656,  657,
-      801,  658,  802,  547,  669,  547,  547,  661,  547,  652,
-      654,  671,  659,  637,  637,  637,  637,  637,  637,  640,
-
-      640,  640,  640,  660,  547,  662,  666,  663,  640,  640,
-      640,  640,  640,  640,  669,  547,  547,  661,  670,  672,
-      654,  671,  659,  673,  668,  875,  664,  674,  675,  665,
-      676,  677,  678,  660,  662,  667,  666,  663,  640,  640,
-      640,  640,  640,  640,  682,  684,  679,  670,  672,  683,
-      685,  874,  686,  673,  668,  664,  674,  675,  665,  676,
-      687,  677,  678,  680,  688,  667,  690,  691,  695,  681,
-      872,  693,  694,  696,  682,  684,  697,  698,  683,  699,
-      685,  686,  700,  701,  869,  702,  703,  704,  705,  687,
-      706,  707,  709,  680,  688,  690,  708,  691,  695,  681,
-
-      693,  694,  696,  710,  711,  713,  697,  698,  712,  699,
-      714,  700,  716,  701,  702,  703,  715,  704,  705,  717,
-      706,  707,  709,  719,  720,  708,  721,  727,  727,  729,
-      547,  731,  710,  547,  711,  713,  547,  712,  732,  852,
-      714,  757,  716,  547,  547,  715,  841,  547,  734,  717,
-      738,  547,  719,  739,  720,  721,  737,  547,  733,  729,
-      731,  428,  429,  728,  728,  728,  728,  547,  732,  735,
-      757,  748,  728,  728,  728,  728,  728,  728,  734,  736,
-      738,  547,  547,  739,  547,  740,  737,  733,  741,  742,
-      547,  547,  547,  743,  428,  429,  547,  747,  547,  735,
-
-      748,  744,  728,  728,  728,  728,  728,  728,  736,  745,
-      547,  746,  547,  547,  753,  740,  547,  750,  741,  742,
-      547,  749,  758,  743,  547,  751,  752,  747,  759,  754,
-      760,  744,  761,  756,  762,  764,  755,  832,  766,  745,
-      767,  746,  768,  771,  753,  765,  770,  750,  772,  773,
-      775,  749,  758,  776,  751,  777,  752,  759,  779,  754,
-      760,  761,  780,  756,  762,  764,  755,  766,  781,  782,
-      767,  783,  768,  771,  765,  770,  784,  785,  772,  773,
-      775,  786,  776,  787,  789,  777,  788,  779,  791,  792,
-      793,  780,  795,  796,  547,  797,  798,  781,  799,  782,
-
-      783,  803,  804,  722,  723,  784,  724,  785,  807,  547,
-      786,  808,  547,  787,  789,  788,  547,  809,  791,  792,
-      793,  547,  795,  796,  797,  811,  798,  547,  799,  547,
-      547,  803,  804,  428,  429,  427,  810,  547,  547,  547,
-      812,  808,  813,  547,  547,  547,  547,  809,  547,  814,
-      806,  547,  547,  815,  817,  811,  819,  547,  821,  547,
-      818,  816,  822,  805,  820,  824,  810,  547,  826,  812,
-      823,  825,  813,  547,  828,  827,  547,  833,  814,  835,
-      829,  836,  815,  547,  817,  830,  819,  834,  821,  818,
-      816,  837,  822,  820,  831,  824,  838,  839,  826,  823,
-
-      840,  825,  842,  843,  828,  827,  844,  833,  845,  835,
-      829,  836,  846,  847,  849,  830,  848,  834,  850,  723,
-      851,  837,  853,  854,  831,  838,  839,  855,  862,  840,
-      863,  870,  842,  843,  718,  871,  844,  801,  845,  802,
-      873,  794,  846,  847,  849,  848,  856,  857,  850,  851,
-      547,  858,  853,  854,  859,  547,  855,  860,  862,  790,
-      863,  870,  861,  864,  865,  871,  547,  887,  866,  873,
-      547,  867,  547,  547,  868,  888,  856,  857,  547,  886,
-      547,  858,  890,  547,  859,  547,  547,  860,  889,  547,
-      892,  861,  899,  864,  865,  900,  891,  887,  866,  898,
-
-      901,  867,  893,  902,  868,  888,  547,  894,  886,  895,
-      904,  897,  890,  903,  906,  896,  778,  905,  889,  907,
-      892,  908,  899,  909,  900,  891,  910,  911,  912,  898,
-      901,  893,  902,  913,  914,  916,  894,  917,  895,  904,
-      897,  918,  774,  903,  906,  896,  905,  923,  907,  928,
-      915,  908,  909,  924,  925,  919,  910,  911,  912,  920,
-      926,  927,  921,  913,  914,  916,  917,  929,  769,  933,
-      934,  918,  922,  937,  930,  763,  923,  931,  928,  915,
-      939,  547,  940,  924,  925,  919,  969,  932,  965,  920,
-      926,  927,  921,  966,  967,  968,  970,  929,  933,  934,
-
-      971,  922,  937,  972,  930,  964,  973,  931,  974,  975,
-      976,  730,  977,  978,  979,  969,  932,  980,  965,  981,
-      982,  983,  984,  966,  967,  968,  970,  985,  427,  986,
-      971,  987,  988,  972,  964,  989,  973,  974,  990,  975,
-      976,  977,  991,  978,  979,  992,  993,  980,  981,  994,
-      982,  983,  984,  995,  996,  999,  997,  985,  986,  939,
-      987,  940,  988, 1013,  939,  989,  940,  990, 1014, 1015,
-     1016, 1017,  991,  998, 1018,  992,  993, 1019,  994, 1020,
-     1021, 1022,  995,  996,  999, 1023,  997, 1024, 1025,  725,
-     1026, 1027, 1013, 1028, 1029, 1030, 1031, 1032, 1014, 1015,
-
-     1016, 1017,  998, 1033, 1018, 1034, 1035, 1019, 1020, 1021,
-     1036, 1022, 1037, 1038, 1023, 1039, 1044, 1024, 1025, 1026,
-     1027, 1040, 1028, 1043, 1029, 1030, 1031, 1032, 1048, 1041,
-     1046, 1047, 1033, 1042, 1034, 1035, 1049, 1050, 1051, 1052,
-     1036, 1053, 1037, 1038, 1054, 1039, 1044, 1055, 1056, 1057,
-     1040, 1058, 1043, 1059, 1060, 1061, 1062, 1048, 1041, 1063,
-     1046, 1047, 1042, 1064, 1065, 1049, 1050, 1066, 1051, 1052,
-     1053, 1067, 1068, 1054, 1069, 1070, 1071, 1055, 1056, 1057,
-     1072, 1058, 1073, 1059, 1060, 1061, 1062, 1074, 1075, 1063,
-     1076, 1077, 1064, 1078, 1065, 1079, 1080, 1066, 1081, 1082,
-
-     1067, 1068, 1083, 1069, 1070, 1084, 1071, 1085, 1086, 1087,
-     1072, 1088, 1073, 1089, 1090,  718, 1091, 1074, 1075, 1076,
-     1092, 1077, 1093, 1078, 1094, 1079, 1080, 1081, 1095, 1082,
-     1096, 1097, 1083, 1098, 1099, 1084, 1100, 1085, 1086, 1087,
-     1088, 1101, 1089, 1102, 1090, 1091, 1103, 1104, 1105, 1106,
-     1092, 1107, 1093, 1094, 1108,  692, 1109, 1110, 1095, 1111,
-     1096, 1097, 1112, 1098, 1099, 1100,  375,  375,  689,  434,
-     1101,  434,  541, 1102,  541, 1103, 1104, 1105,  645, 1106,
-      427, 1107,  415,  415, 1108, 1109, 1110,  415,  590, 1111,
-      344,  343, 1112,   68,   68,   68,   68,   68,   68,   68,
-
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   94,   94,   94,   94,
+       62,   63,   64,   62,   65,   62,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   66,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   66,   62,   62,   62,   62,   66,   66,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   62,   62,   62,   62,   67,   68,   62,   69,   62,
+       70,   62,   71,   62,   62,   62,   62,   62,   62,   62,
+
+       62,   72,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   73,   62,   62,   62,   62,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   62,   62,   62,   75,   76,
+      329,   77,   78,   95,   79,   96, 1084,   80,   81,   82,
+       82,  299,  300,   82,   83,   98,   95,  101,   96,  102,
+       84,   62,   99,   82,  101,  347,  102,  113,  114,  329,
+
+      115,  113,  114, 1051,  115,  131,  315,  132,  133,  160,
+      160,  161,  161,  125,  131,  126,  132,  133,  357,   85,
+       86,  247,  104,  248,  105,  127,  765,   62,  106,  128,
+      128,  128,  128,  104,  347,  105,  163, 1050,  164,  111,
+      374,  136,  137,  242,  138,  243,  165,  357,   87,   82,
+       82,   88,   89,  244,   90,   78,  134,   79,   91,  460,
+       80,   81,   82,   82,  107,  134,   82,   83,  140,  374,
+      141,  108,  109,   92,  110,  107,   82,  136,  137,  316,
+      138,  142,  108,  109, 1049,  110,  166,  402,  167,  238,
+      247,  239,  248,  107,  129,  321,  215,  322,  240,  216,
+
+      108, 1048,   85,   86,  107,   93,  215, 1047,  238,  216,
+      239,  108,  217,  217,  217,  217,  402,  240,  143,  144,
+      145, 1046,  217,  217,  217,  217,  267,  268,  359,  269,
+      360,   87,   82,   82,  116,  117,  118,  116,  119,  116,
+      116,  116,  116,  116,  116,  116,  120,  116,  120,  116,
+      116,  116,  116,  116,  116,  116,  116,  116,  116,  121,
+      116,  122,  122,  122,  122,  122,  122,  122,  122,  122,
+      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
+      122,  122,  122,  122,  122,  122,  116,  116,  116,  116,
+      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
+
+      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
+      122,  122,  122,  122,  122,  116,  116,  116,  125,  140,
+      126,  141,  359,  163,  360,  164,  169,  407,  170,  171,
+      127,  274,  142,  165,  128,  128,  128,  128,  169,  233,
+      170,  171,  169,  242,  250,  243,  367,  271,  272,  251,
+      273,  328,  234,  244,  293,  293,  407,  294,  304,  452,
+      305,  453,  235,  306,  306,  306,  306,  236,  275,  143,
+      144,  145,  369,  166, 1045,  167,  172,  173,  174,  370,
+     1044,  328,  234,  336,  337,  456,  338,  457,  172,  173,
+      174,  235,  172,  173,  174, 1043,  236,  368,  275,  129,
+
+      146,  146,  147,  146,  148,  149,  146,  146,  146,  150,
+      146,  146,  146,  146,  146,  146,  146,  151,  146,  146,
+      146,  146,  146,  146,  146,  146,  146,  152,  152,  152,
+      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
+      152,  152,  152,  152,  153,  152,  152,  152,  152,  152,
+      152,  154,  155,  146,  156,  146,  152,  152,  152,  152,
+      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
+      152,  152,  152,  153,  152,  152,  152,  152,  152,  152,
+      154,  157,  146,  158,  176,  177,  219,  178,  220,  176,
+      177,  179,  178,  163,  356,  164,  179,  163,  233,  164,
+
+      180,  373,  169,  245,  250,  180,  435,  245,  253,  251,
+      265,  234,  461,  462,  379,  266,  343,  343,  343,  343,
+     1042,  235,  412,  482,  356,  483,  236,  181,  466,  466,
+      467,  373,  181,  467,  182,  183,  221,  184,  222,  182,
+      183,  234,  184,  166,  379,  167,  359,  166,  360,  167,
+      235,  412,  172,  173,  174,  236,  181,  436,  252,  263,
+      252,  181,  359,  182,  360,  223, 1041,  224,  182,  185,
+      186,  187,  185,  188,  189,  185,  185,  185,  185,  185,
+      185,  185,  185,  185,  185,  185,  185,  185,  190,  191,
+      185,  185,  185,  192,  185,  185,  193,  194,  195,  196,
+
+      197,  198,  199,  200,  201,  199,  199,  202,  203,  204,
+      205,  206,  199,  207,  208,  209,  210,  211,  212,  199,
+      213,  185,  185,  185,  185,  185,  193,  194,  195,  196,
+      197,  198,  199,  200,  201,  199,  199,  202,  203,  204,
+      205,  206,  207,  208,  209,  210,  211,  212,  199,  213,
+      185,  185,  185,  219,  225,  220,  452,  225,  453,  253,
+      226,  254,  255,  226,  302,  302,  256,  227,  228, 1040,
+      227,  228,  267,  268,  257,  269,  380,  369, 1039,  253,
+      229,  254,  255,  229,  370,  253,  256,  261,  262,  670,
+      230,  508,  670,  230,  257,  231,  303,  253,  231,  261,
+
+      262, 1002,  253,  221,  265,  222,  380,  302,  302,  266,
+      229,  288,  289,  229,  290,  382,  388, 1001,  291,  230,
+      508,  383,  230, 1000,  231,  303,  232,  231,  999,  232,
+      302,  302,  223,  998,  224,  252,  263,  252,  258,  303,
+      259,  302,  302,  386,  393,  382,  388,  252,  263,  252,
+      383,  384,  252,  263,  252,  997,  389,  387,  258,  385,
+      259,  277,  303,  308,  309,  452,  310,  453,  303,  671,
+      311,  394,  671,  303,  393,  271,  272,  390,  273,  312,
+      278,  384,  279,  406,  279,  313,  389,  387,  391,  385,
+      279,  303,  292,  279,  280,  281,  274,  279,  282,  283,
+
+      996,  394,  303,  284,  580,  395,  390,  580,  392,  396,
+      278,  397,  279,  406,  279,  398,  408,  314,  391,  400,
+      279,  409,  410,  279,  280,  281,  279,  282,  283,  401,
+      403,  411,  284,  275,  285,  395,  438,  392,  995,  396,
+      404,  397,  994,  405,  292,  398,  408,  336,  337,  400,
+      338,  409,  410,  415,  415,  415,  415,  461,  462,  401,
+      403,  411,  993,  275,  441,  442,  438,  443,  441,  442,
+      404,  443,  405,  441,  442,  449,  443,  441,  442,  459,
+      443,  444,  444,  444,  444,  444,  444,  444,  444,  463,
+      444,  444,  444,  444,  444,  444,  444,  444,  476,  288,
+
+      289,  511,  290,  464,  464,  449,  291,  445,  479,  459,
+      480,  497,  498,  502,  446,  308,  309,  447,  310,  461,
+      462,  503,  311,  343,  343,  343,  343,  504,  476,  505,
+      511,  312,  506,  509,  992,  465,  445,  313,  479,  513,
+      480,  497,  498,  502,  446,  516,  507,  447,  514,  991,
+      510,  503,  515,  990,  517,  518,  519,  504,  520,  505,
+      523,  521,  506,  509,  465,  522,  526,  989,  513,  314,
+      415,  415,  415,  415,  516,  507,  301,  301,  514,  510,
+      292,  988,  515,  517,  518,  456,  519,  457,  520,  523,
+      987,  521,  524,  525,  522,  526,  292,  484,  485,  486,
+
+      487,  488,  488,  489,  488,  488,  488,  488,  490,  488,
+      488,  488,  491,  488,  488,  492,  488,  493,  488,  488,
+      494,  488,  524,  525,  527,  495,  528,  484,  485,  486,
+      487,  488,  488,  489,  488,  488,  488,  488,  490,  488,
+      488,  488,  491,  488,  492,  488,  493,  488,  488,  494,
+      488,  529,  530,  527,  532,  528,  533,  538,  986,  541,
+      534,  985,  531,  536,  539,  535,  537,  984,  542,  559,
+      568,  540,  983,  456,  566,  457,  567,  482,  982,  483,
+      529,  570,  530,  981,  532,  572,  533,  538,  541,  980,
+      534,  531,  612,  536,  539,  535,  537,  542,  975,  559,
+
+      568,  540,  543,  566,  544,  567,  974,  545,  546,  561,
+      562,  570,  563,  547,  548,  572,  573,  578,  578,  549,
+      550,  612,  565,  442,  551,  443,  564,  564,  564,  564,
+      582,  552,  543,  583,  544,  574,  574,  545,  546,  444,
+      444,  444,  444,  547,  548,  584,  461,  462,  549,  550,
+      585,  461,  462,  551,  581,  581,  581,  581,  608,  482,
+      582,  483,  609,  583,  610,  611,  663,  575,  664,  924,
+      613,  460,  562,  923,  664,  584,  565,  442,  922,  443,
+      585,  663,  921,  664,  665,  562,  920,  563,  608,  919,
+      761,  762,  609,  763,  610,  611,  575,  460,  460,  613,
+
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  461,
+      462,  918,  577,  460,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  460,  460,
+      460,  579,  579,  579,  579,  586,  586,  586,  586,  586,
+      579,  579,  579,  579,  579,  579,  586,  586,  586,  621,
+
+      586,  587,  588,  614,  586,  589,  615,  592,  597,  590,
+      917,  591,  616,  617,  618,  461,  462,  595,  596,  619,
+      579,  579,  579,  579,  579,  579,  593,  620,  621,  594,
+      622,  587,  588,  614,  623,  589,  615,  592,  597,  590,
+      591,  625,  616,  617,  618,  624,  626,  595,  596,  619,
+      916,  627,  646,  628,  915,  593,  630,  620,  594, 1152,
+      622,  631,  632,  623,  598,  599,  600,  601,  633,  634,
+      602,  625,  635,  636,  624,  603,  626,  637,  638,  604,
+      627,  646,  605,  628,  606,  639,  630,  607,  640,  641,
+      642,  631,  632,  645,  598,  599,  600,  601,  633,  634,
+
+      602,  647,  635,  636,  643,  603,  648,  637,  638,  604,
+      644,  605,  649,  606,  650,  639,  607,  651,  640,  641,
+      642,  652,  653,  645,  654,  655,  656,  657,  914,  658,
+      647,  662,  461,  462,  643,  659,  648,  913,  660,  661,
+      644,  666,  649,  667,  650,  668,  911,  651,  461,  462,
+      652,  840,  653,  841,  654,  655,  656,  657,  658,  561,
+      562,  662,  563,  665,  562,  659,  563,  660,  661,  672,
+      908,  666,  680,  667,  891,  668,  564,  564,  564,  564,
+      564,  564,  564,  564,  461,  462,  298,  761,  762,  880,
+      763,  461,  462,  460,  461,  462,  461,  462,  871,  672,
+
+      460,  460,  680,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  673,  673,  673,
+      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
+      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
+      673,  673,  461,  462,  846,  674,  460,  673,  673,  673,
+      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
+      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
+      673,  460,  460,  460,  675,  675,  681,  682,  586,  586,
+      678,  678,  586,  586,  586,  586,  586,  683,  687,  845,
+
+      586,  586,  586,  586,  844,  689,  685,  690,  686,  692,
+      693,  707,  762,  688,  696,  695,  681,  682,  461,  462,
+      676,  676,  676,  676,  461,  462,  683,  691,  687,  676,
+      676,  676,  676,  676,  676,  689,  685,  690,  686,  692,
+      693,  707,  688,  757,  696,  695,  840,  840,  841,  841,
+      978,  978,  979,  979,  833,  978,  691,  979,  829,  676,
+      676,  676,  676,  676,  676,  460,  460,  817,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  677,  460,  460,
+      460,  460,  576,  576,  576,  576,  576,  576,  576,  576,
+
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  461,  462,  813,
+      460,  460,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  460,  460,  460,  679,
+      679,  679,  679,  586,  586,  586,  586,  586,  679,  679,
+      679,  679,  679,  679,  586,  586,  700,  586,  708,  694,
+      697,  698,  586,  709,  699,  586,  710,  808,  711,  701,
+      712,  802,  713,  714,  702,  769,  715,  705,  679,  679,
+      679,  679,  679,  679,  703,  706,  700,  704,  708,  694,
+
+      697,  698,  709,  716,  699,  717,  710,  711,  701,  721,
+      712,  713,  714,  718,  702,  715,  722,  705,  723,  724,
+      460,  725,  726,  703,  727,  706,  704,  729,  730,  734,
+      719,  764,  732,  716,  733,  717,  720,  757,  735,  721,
+      736,  737,  738,  731,  739,  722,  740,  743,  723,  724,
+      725,  726,  741,  742,  727,  744,  729,  745,  730,  734,
+      719,  732,  746,  733,  747,  748,  720,  735,  749,  750,
+      736,  737,  738,  739,  751,  752,  740,  743,  753,  755,
+      756,  741,  742,  758,  754,  744,  759,  745,  760,  766,
+      766,  768,  746,  747,  586,  748,  586,  749,  586,  750,
+
+      770,  771,  586,  751,  586,  752,  586,  728,  753,  755,
+      756,  776,  758,  754,  773,  778,  759,  760,  775,  772,
+      586,  768,  774,  461,  462,  767,  767,  767,  767,  770,
+      684,  771,  586,  586,  767,  767,  767,  767,  767,  767,
+      777,  776,  586,  586,  773,  778,  586,  775,  772,  780,
+      779,  586,  774,  781,  783,  586,  586,  787,  586,  586,
+      782,  786,  797,  586,  767,  767,  767,  767,  767,  767,
+      777,  586,  791,  784,  788,  785,  789,  586,  586,  780,
+      779,  586,  586,  781,  783,  790,  787,  793,  460,  796,
+      782,  786,  797,  798,  795,  792,  799,  801,  794,  436,
+
+      800,  803,  791,  784,  788,  785,  789,  805,  806,  807,
+      435,  804,  809,  810,  790,  811,  812,  793,  796,  814,
+      556,  815,  798,  816,  795,  792,  799,  801,  794,  800,
+      818,  803,  819,  820,  821,  824,  805,  822,  806,  807,
+      804,  809,  823,  810,  825,  811,  812,  826,  828,  814,
+      815,  827,  830,  816,  831,  832,  834,  835,  837,  818,
+      836,  819,  820,  838,  821,  824,  822,  842,  843,  586,
+      586,  823,  586,  825,  586,  848,  586,  826,  828,  586,
+      827,  852,  830,  586,  831,  832,  834,  835,  837,  836,
+      586,  847,  850,  838,  849,  586,  851,  842,  843,  586,
+
+      586,  586,  586,  586,  586,  848,  553,  854,  856,  586,
+      586,  852,  853,  858,  586,  860,  586,  586,  629,  855,
+      870,  847,  850,  857,  849,  851,  862,  859,  861,  863,
+      586,  874,  875,  586,  864,  866,  854,  586,  856,  865,
+      867,  853,  586,  858,  868,  860,  876,  872,  855,  877,
+      870,  869,  857,  878,  879,  862,  859,  873,  861,  863,
+      881,  874,  875,  882,  864,  866,  883,  884,  885,  865,
+      867,  886,  368,  887,  868,  888,  876,  872,  877,  889,
+      892,  869,  878,  879,  890,  893,  901,  873,  894,  912,
+      881,  902,  909,  882,  367,  586,  883,  884,  885,  586,
+
+      910,  886,  887,  895,  896,  888,  399,  399,  897,  889,
+      892,  898,  926,  890,  899,  893,  901,  894,  912,  900,
+      586,  902,  909,  925,  903,  904,  586,  586,  586,  905,
+      910,  927,  906,  895,  896,  907,  929,  586,  897,  586,
+      586,  898,  926,  928,  899,  586,  586,  586,  900,  931,
+      586,  930,  925,  938,  903,  904,  935,  586,  939,  905,
+      940,  927,  906,  933,  934,  907,  929,  932,  936,  941,
+      937,  942,  945,  928,  943,  944,  946,  947,  949,  931,
+      930,  948,  950,  938,  951,  952,  935,  939,  955,  957,
+      940,  956,  933,  934,  962,  953,  932,  936,  941,  963,
+
+      937,  942,  945,  943,  944,  946,  964,  947,  949,  958,
+      948,  954,  950,  959,  951,  952,  960,  965,  955,  957,
+      956,  966,  968,  962,  967,  953,  961,  972,  969,  963,
+      973,  970,  471,  976, 1004, 1005,  964, 1006, 1007,  958,
+      954,  971,  586,  959, 1008, 1009,  960,  965, 1010, 1011,
+     1012,  966,  968,  967, 1013,  961,  972, 1014,  969,  973,
+     1015,  970,  976, 1016, 1004, 1005, 1003, 1006, 1007, 1017,
+      971, 1018, 1019, 1008, 1020, 1009, 1021, 1022, 1010, 1011,
+     1012, 1023, 1024, 1013, 1025, 1026, 1027, 1014, 1028, 1030,
+     1015, 1029, 1016, 1031, 1032, 1003, 1033, 1034, 1035, 1017,
+
+     1036, 1018, 1019, 1020, 1038, 1052, 1021, 1022, 1053, 1054,
+     1055, 1023, 1024, 1025, 1026, 1056, 1027, 1037, 1028, 1030,
+     1029, 1057, 1058, 1031, 1032, 1033, 1034, 1035, 1059, 1060,
+     1036, 1061, 1063, 1038, 1052, 1062, 1064, 1068, 1053, 1054,
+     1055, 1065, 1066, 1067, 1069, 1056, 1037, 1070, 1071,  442,
+     1072, 1057, 1058, 1073, 1074, 1075, 1076, 1059, 1060, 1077,
+     1078, 1061, 1063, 1079, 1062, 1080, 1064, 1068, 1082, 1081,
+     1065, 1066, 1067, 1083, 1069, 1085, 1086, 1070, 1071, 1072,
+     1087, 1088, 1073, 1074, 1089, 1075, 1076, 1090, 1091, 1077,
+     1078, 1092, 1079, 1093, 1080, 1094, 1095, 1082, 1081, 1096,
+
+     1097, 1098, 1099, 1083, 1100, 1085, 1086, 1101, 1102, 1087,
+     1088, 1103, 1104, 1089, 1105,  558, 1106, 1090, 1091, 1107,
+     1092, 1108, 1093, 1109, 1110, 1094, 1095, 1111, 1112, 1096,
+     1097, 1098, 1099, 1113, 1100, 1114, 1116, 1101, 1102, 1115,
+     1103, 1117, 1104, 1118, 1105, 1106, 1119, 1121, 1107, 1120,
+     1108, 1122, 1109, 1123, 1110, 1124, 1125, 1111, 1112, 1126,
+      557, 1127, 1128, 1113, 1129, 1114, 1116, 1130, 1115, 1131,
+     1132, 1117, 1133, 1118, 1134, 1135, 1119, 1121, 1120, 1136,
+     1137, 1122, 1138, 1123, 1139, 1124, 1125, 1140, 1141, 1126,
+     1127, 1128, 1142, 1143, 1129, 1144, 1130, 1145, 1146, 1131,
+
+     1132, 1133, 1147, 1150, 1134, 1135, 1148, 1149, 1151, 1136,
+     1137,  556, 1138, 1139,  420,  420, 1140,  553, 1141,  420,
+      414, 1142, 1143,  512, 1144,  421,  421, 1145, 1146,  378,
+      421,  375, 1147, 1150,  372, 1148, 1149,  500, 1151,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   94,   94,   94,   94,   94,   94,   94,   94,   94,
        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,   97,   97,   97,
+       94,   94,   94,   97,   97,   97,   97,   97,   97,   97,
        97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,  106,  106,
-
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
 
-      129,  129,  129,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  153,  153,  153,  153,  153,  153,
-      153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
-      153,  153,  153,  153,  153,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-
-      169,  169,  169,  169,  169,  169,  169,  169,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
-      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
-      228,  232,  232,  232,  232,  232,  232,  232,  232,  232,
-      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
-      232,  232,  237,  237,  237,  237,  237,  237,  237,  237,
+       97,   97,   97,   97,   97,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  103,  103,  103,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,   62,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,  124,  124,  124,  124,  124,  124,  124,
 
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+
+      159,  159,  159,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  168,  168,  168,  168,  168,
+      168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
+      168,  168,  168,  168,  168,  168,  168,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  218,  218,  218,  218,  218,  218,  218,  218,  218,
+
+      218,  218,  218,  218,  218,  218,  218,  218,  218,  218,
+      218,  218,  218,  237,  237,  237,  237,  237,  237,  237,
       237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
-      237,  237,  237,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  246,  547,  246,  438,  246,  246,
-      455,  455,  455,  246,  252,  252,  252,  252,  252,  252,
+      237,  237,  237,  237,  237,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  246,  246,  246,
+      246,  246,  246,  246,  246,  246,  246,  246,  246,  246,
+      246,  246,  246,  246,  246,  246,  246,  246,  246,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+
+      249,  252,  252,  252,  252,  252,  252,  252,  252,  252,
       252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  263,  409,  263,  390,  263,  263,
-      417,  417,  479,  263,  274,  417,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  277,  354,  277,  277,  277,
-
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  283,  283,  351,  283,
-      348,  283,  283,  467,  466,  463,  283,  295,  315,  295,
-      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
-      295,  295,  295,  295,  295,  295,  295,  295,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  313,  299,  315,  299,  299,  299,  302,
-      310,  302,  302,  296,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  441,  302,  440,  302,  302,  302,
-      309,  439,  285,  309,  309,  309,  309,  309,  309,  309,
-
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  317,  438,  317,  436,  317,  317,  435,  425,  269,
-      317,  322,  421,  322,  322,  322,  322,  322,  322,  322,
-      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
-      322,  322,  325,  265,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  248,
-      325,  325,  325,  326,  244,  326,  341,  326,  403,  326,
-      326,  326,  326,  402,  326,  326,  400,  399,  398,  326,
-      328,  397,  328,  328,  328,  395,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  331,  394,  331,  393,  331,  331,  390,  354,  352,
-      331,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  337,  351,  337,  337,  337,  337,  337,  307,
-      337,  337,  337,  337,  337,  337,  337,  306,  337,  330,
-      337,  337,  337,  340,  348,  340,  347,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  307,  306,
-      341,  340,  340,  340,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  353,  307,  353,  353,  353,
-
-      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
-      353,  353,  353,  353,  353,  353,  357,  357,  306,  339,
-      338,  357,  357,  389,  307,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  392,  306,  330,  392,  392,  392,
-      392,  392,  392,  392,  392,  392,  392,  392,  392,  329,
-      392,  327,  392,  396,  321,  396,  396,  396,  396,  324,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  401,  401,  401,  401,  401,  401,
-      401,  401,  401,  401,  401,  401,  401,  401,  401,  321,
-
-      401,  320,  401,  401,  401,  404,  318,  404,  404,  404,
-      316,  404,  404,  404,  404,  404,  404,  404,  404,  404,
-      313,  315,  311,  404,  404,  404,  246,  310,  246,  308,
-      246,  246,  307,  306,  303,  246,  406,  301,  406,  406,
-      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
-      406,  406,  406,  406,  406,  406,  406,  407,  300,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  263,
-
-      296,  263,  294,  263,  263,  293,  285,  273,  263,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      427,  272,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  271,  427,  427,
-      427,  274,  265,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  437,  262,  437,  248,  437,  437,  244, 1113,
-      117,  437,  117,  437,  442, 1113,  442,  442,  442,  442,
-      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
-
-      442,  442,  442,  442,  442,  295, 1113,  295,  295,  295,
-      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
-      295,  295,  295,  295,  295,  295,  444, 1113,  444,  444,
-      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
-      444,  444,  444,  444,  444,  444,  444,  445, 1113,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299, 1113,  299, 1113,  299,  299,  299,  302,
-     1113,  302,  302, 1113,  302,  302,  302,  302,  302,  302,
-
-      302,  302,  302,  302, 1113,  302, 1113,  302,  302,  302,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  309, 1113, 1113,  309,  309,  309,  309,  309,  309,
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  309,  317, 1113,  317, 1113,  317,  317, 1113, 1113,
-     1113,  317,  326, 1113,  326, 1113,  326, 1113,  326,  326,
-      326,  326, 1113,  326,  326, 1113, 1113, 1113,  326,  328,
-     1113,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      331, 1113,  331, 1113,  331,  331, 1113, 1113, 1113,  331,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  337, 1113,  337,  337,  337,  337,  337, 1113,  337,
-      337,  337,  337,  337,  337,  337, 1113,  337, 1113,  337,
-      337,  337,  340, 1113,  340, 1113,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340, 1113, 1113, 1113,
-      340,  340,  340,  468, 1113,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  353, 1113,  353,  353,  353,  353,
-
-      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
-      353,  353,  353,  353,  353,  357,  357, 1113, 1113, 1113,
-      357,  357,  389, 1113,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  392, 1113, 1113,  392,  392,  392,  392,
-      392,  392,  392,  392,  392,  392,  392,  392, 1113,  392,
-     1113,  392,  396, 1113,  396,  396,  396,  396, 1113,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  401,  401,  401,  401,  401,  401,  401,
-      401,  401,  401,  401,  401,  401,  401,  401, 1113,  401,
-
-     1113,  401,  401,  401,  404, 1113,  404,  404,  404, 1113,
-      404,  404,  404,  404,  404,  404,  404,  404,  404, 1113,
-     1113, 1113,  404,  404,  404,  406, 1113,  406,  406,  406,
-      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
-      406,  406,  406,  406,  406,  406,  407, 1113,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  521,  521,  521,
-      521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
-      521,  521,  521,  521,  521,  521,  521,  521,  530, 1113,
-      530, 1113,  530,  530, 1113, 1113, 1113,  530,  532, 1113,
-
-      532, 1113,  532,  532, 1113, 1113, 1113,  532,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  422,
+      252,  252,  252,  260,  260,  260,  260,  260,  260,  260,
+      260,  260,  260,  260,  260,  260,  260,  260,  260,  260,
+      260,  260,  260,  260,  260,  264,  264,  264,  264,  264,
+      264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
+      264,  264,  264,  264,  264,  264,  264,  270,  499,  270,
+      448,  448,  270,  270,  496,  448,  339,  270,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  276,  287,
+
+      337,  287,  450,  450,  287,  287,  339,  450,  334,  287,
+      298,  320,  298,  298,  298,  298,  298,  298,  298,  298,
+      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+      298,  298,  301,  474,  301,  301,  301,  301,  301,  301,
+      301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
+      301,  301,  301,  301,  307,  307,  488,  307,  488,  488,
+      307,  307,  473,  472,  309,  307,  319,  471,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+
+      323,  323,  323,  323,  469,  323,  468,  323,  323,  323,
+      326,  458,  326,  326,  293,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  454,  326,  289,  326,
+      326,  326,  333,  272,  268,  333,  333,  333,  333,  333,
+      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
+      333,  333,  333,  333,  341,  431,  341,  431,  432,  341,
+      341,  431,  365,  429,  341,  346,  428,  346,  346,  346,
+      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
+      346,  346,  346,  346,  346,  346,  346,  349,  426,  349,
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
+
+      349,  349,  349,  349,  349,  425,  349,  349,  349,  350,
+      424,  350,  423,  350,  419,  350,  350,  350,  350,  418,
+      350,  350,  350,  417,  414,  378,  350,  352,  376,  352,
+      352,  352,  375,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  355,
+      331,  355,  330,  354,  355,  355,  372,  371,  331,  355,
+      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
+      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
+      358,  358,  361,  330,  361,  361,  361,  361,  361,  365,
+      361,  361,  361,  361,  361,  361,  361,  361,  331,  361,
+
+      330,  361,  361,  361,  364,  363,  364,  362,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      331,  330,  354,  364,  364,  364,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  377,  353,
+      377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
+      377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
+      381,  381,  351,  345,  348,  345,  381,  381,  413,  344,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+
+      416,  342,  340,  416,  416,  416,  416,  416,  416,  416,
+      416,  416,  416,  416,  416,  416,  337,  416,  339,  416,
+      422,  335,  422,  422,  422,  422,  334,  422,  422,  422,
       422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
+      422,  422,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  332,  427,
+      331,  427,  427,  427,  430,  330,  430,  430,  430,  327,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+      325,  324,  320,  430,  430,  430,  433,  318,  433,  317,
+      433,  433,  433,  433,  433,  433,  433,  433,  433,  433,
+
+      433,  433,  309,  297,  296,  433,  433,  433,  434,  434,
+      434,  434,  434,  434,  434,  434,  434,  434,  434,  434,
+      434,  434,  434,  434,  434,  434,  434,  434,  434,  434,
+      437,  295,  437,  437,  437,  289,  437,  437,  437,  437,
+      437,  437,  437,  437,  437,  437,  286,  272,  268,  437,
+      437,  437,  270, 1152,  270,  123,  123,  270,  270, 1152,
+     1152, 1152,  270,  439, 1152,  439,  439,  439,  439,  439,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
+      439,  439,  439,  439,  439,  440, 1152,  440,  440,  440,
+      440,  440,  440,  440,  440,  440,  440,  440,  440,  440,
+
+      440,  440,  440,  440,  440,  440,  440,  451,  451,  451,
+      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
+      451,  451,  451,  451,  451,  451,  451,  451,  451,  287,
+     1152,  287, 1152, 1152,  287,  287, 1152, 1152, 1152,  287,
+      455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
+      455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
+      455,  455,  460, 1152,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+     1152,  460,  460,  460,  298, 1152,  298,  298,  298,  298,
+      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+
+      298,  298,  298,  298,  298,  298,  470, 1152,  470, 1152,
+     1152,  470,  470, 1152, 1152, 1152,  470, 1152,  470,  475,
+     1152,  475,  475,  475,  475,  475,  475,  475,  475,  475,
+      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
+      475,  319, 1152,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  477, 1152,  477,  477,  477,  477,  477,
+      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
+      477,  477,  477,  477,  477,  478, 1152,  478,  478,  478,
+      478,  478,  478,  478,  478,  478,  478,  478,  478,  478,
+
+      478,  478,  478,  478,  478,  478,  478,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323, 1152,  323, 1152,  323,  323,  323,  326,
+     1152,  326,  326, 1152,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326, 1152,  326, 1152,  326,  326,
+      326,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  333, 1152, 1152,  333,  333,  333,  333,
+      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
+      333,  333,  333,  333,  333,  341, 1152,  341, 1152, 1152,
+
+      341,  341, 1152, 1152, 1152,  341,  350, 1152,  350, 1152,
+      350, 1152,  350,  350,  350,  350, 1152,  350,  350,  350,
+     1152, 1152, 1152,  350,  352, 1152,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  352,  352,  352,  352,  355, 1152,  355, 1152,
+     1152,  355,  355, 1152, 1152, 1152,  355,  358,  358,  358,
+      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
+      358,  358,  358,  358,  358,  358,  358,  358,  358,  361,
+     1152,  361,  361,  361,  361,  361, 1152,  361,  361,  361,
+      361,  361,  361,  361,  361, 1152,  361, 1152,  361,  361,
+
+      361,  364, 1152,  364, 1152,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364, 1152, 1152, 1152,
+      364,  364,  364,  501, 1152,  501,  501,  501,  501,  501,
+      501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
+      501,  501,  501,  501,  501,  377, 1152,  377,  377,  377,
+      377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
+      377,  377,  377,  377,  377,  377,  377,  381,  381, 1152,
+     1152, 1152, 1152,  381,  381,  413, 1152,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  416, 1152, 1152,
+
+      416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
+      416,  416,  416, 1152,  416, 1152,  416,  554, 1152, 1152,
+     1152,  554, 1152,  554, 1152, 1152,  554,  554, 1152, 1152,
+     1152,  554,  555, 1152,  555, 1152,  555,  555,  555, 1152,
+     1152, 1152,  555,  422, 1152,  422,  422,  422,  422, 1152,
       422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      427, 1113,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427, 1113,  427,  427,
-      427,  437, 1113,  437, 1113,  437,  437, 1113, 1113, 1113,
-      437, 1113,  437,  442, 1113,  442,  442,  442,  442,  442,
-      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
-
-      442,  442,  442,  442,  444, 1113,  444,  444,  444,  444,
-      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
-      444,  444,  444,  444,  444,  445, 1113,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  302, 1113,  302,  302,
-     1113,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302, 1113,  302, 1113,  302,  302,  302,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  331, 1113,
-      331, 1113,  331,  331, 1113, 1113, 1113,  331,  342, 1113,
-
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  468,
-     1113,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      357,  357, 1113, 1113, 1113,  357,  357,  630, 1113,  630,
-      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
-      630,  630,  630,  630,  630,  630,  630,  630,  800,  800,
-      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
-      800,  800,  800,  800,  800,  800,  800,  800,  800,  938,
-      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
-
-      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
-       55, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113
-
+      422,  422,  422,  422,  422,  427,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427, 1152,  427, 1152,  427,  427,  427,  430, 1152,  430,
+      430,  430, 1152,  430,  430,  430,  430,  430,  430,  430,
+
+      430,  430,  430, 1152, 1152, 1152,  430,  430,  430,  433,
+     1152,  433, 1152,  433,  433,  433,  433,  433,  433,  433,
+      433,  433,  433,  433,  433, 1152, 1152, 1152,  433,  433,
+      433,  437, 1152,  437,  437,  437, 1152,  437,  437,  437,
+      437,  437,  437,  437,  437,  437,  437, 1152, 1152, 1152,
+      437,  437,  437,  439, 1152,  439,  439,  439,  439,  439,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
+      439,  439,  439,  439,  439,  440, 1152,  440,  440,  440,
+      440,  440,  440,  440,  440,  440,  440,  440,  440,  440,
+      440,  440,  440,  440,  440,  440,  440,  560,  560,  560,
+
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  569,
+     1152,  569, 1152, 1152,  569,  569, 1152, 1152, 1152,  569,
+      571, 1152,  571, 1152, 1152,  571,  571, 1152, 1152, 1152,
+      571,  451,  451,  451,  451,  451,  451,  451,  451,  451,
+      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
+      451,  451,  451,  455,  455,  455,  455,  455,  455,  455,
+      455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
+      455,  455,  455,  455,  455,  460, 1152,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+
+      460,  460,  460, 1152,  460,  460,  460,  470, 1152,  470,
+     1152, 1152,  470,  470, 1152, 1152, 1152,  470, 1152,  470,
+      475, 1152,  475,  475,  475,  475,  475,  475,  475,  475,
+      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
+      475,  475,  477, 1152,  477,  477,  477,  477,  477,  477,
+      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
+      477,  477,  477,  477,  478, 1152,  478,  478,  478,  478,
+      478,  478,  478,  478,  478,  478,  478,  478,  478,  478,
+      478,  478,  478,  478,  478,  478,  326, 1152,  326,  326,
+     1152,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+
+      326,  326, 1152,  326, 1152,  326,  326,  326,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      355, 1152,  355, 1152, 1152,  355,  355, 1152, 1152, 1152,
+      355,  366, 1152,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  501, 1152,  501,  501,  501,  501,  501,
+      501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
+      501,  501,  501,  501,  501,  381,  381, 1152, 1152, 1152,
+     1152,  381,  381,  554, 1152, 1152, 1152,  554, 1152,  554,
+
+     1152, 1152,  554,  554, 1152, 1152, 1152,  554,  555, 1152,
+      555, 1152,  555,  555,  555, 1152, 1152, 1152,  555,  434,
+     1152,  434,  434,  434,  434,  434,  434,  434,  434,  434,
+      434,  434,  434,  434,  434,  434,  434,  434,  434,  434,
+      434,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+      560,  560,  560,  569, 1152,  569, 1152, 1152,  569,  569,
+     1152, 1152, 1152,  569,  669, 1152,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  571, 1152,  571, 1152,
+
+     1152,  571,  571, 1152, 1152, 1152,  571,  839,  839,  839,
+      839,  839,  839,  839,  839,  839,  839,  839,  839,  839,
+      839,  839,  839,  839,  839,  839,  839,  839,  839,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
+      977,   61, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152
     } ;
 
-static yyconst flex_int16_t yy_chk[4596] =
+static yyconst flex_int16_t yy_chk[5137] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1365,25 +1440,25 @@ static yyconst flex_int16_t yy_chk[4596] =
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    3,    3,
-      102,    3,    3,    5,    3,    5, 1012,    3,    3,    3,
-        3,   79,   79,    3,    3,    6,    6,    7,    6,    7,
-        3,   21,    6,    3,    8,  132,    8,   11,   11,  102,
-
-       11,   12,   12,  964,   12,   19,   85,   19,   19,   27,
-       28,   27,   28,   17,   20,   17,   20,   20,  148,    3,
-        3,   51,    9,   51,    9,   17,  537,   22,    9,   17,
-       17,   17,   17,   10,  132,   10,   29,  963,   29,   10,
-      176,   21,   21,   47,   21,   47,   29,  148,    3,    3,
-        3,    4,    4,   47,    4,    4,   19,    4,    4,  537,
-        4,    4,    4,    4,    9,   20,    4,    4,   23,  176,
-       23,    9,    9,    4,    9,   10,    4,   22,   22,   85,
-       22,   23,   10,   10,  962,   10,   29,  199,   29,   45,
-       52,   45,   52,    9,   17,   93,   37,   93,   45,   37,
-
-        9,  961,    4,    4,   10,    4,   38,  960,   46,   38,
-       46,   10,   37,   37,   37,   37,  199,   46,   23,   23,
-       23,  959,   38,   38,   38,   38,   57,   57,  153,   57,
-      153,    4,    4,    4,   13,   13,   13,   13,   13,   13,
+      108,    3,    3,    5,    3,    5, 1051,    3,    3,    3,
+        3,   85,   85,    3,    3,    6,    6,    7,    6,    7,
+        3,   21,    6,    3,    8,  138,    8,   11,   11,  108,
+
+       11,   12,   12, 1003,   12,   19,   91,   19,   19,   27,
+       28,   27,   28,   17,   20,   17,   20,   20,  154,    3,
+        3,   51,    9,   51,    9,   17,  673,   22,    9,   17,
+       17,   17,   17,   10,  138,   10,   29, 1002,   29,   10,
+      182,   21,   21,   47,   21,   47,   29,  154,    3,    3,
+        3,    4,    4,   47,    4,    4,   19,    4,    4,  673,
+        4,    4,    4,    4,    9,   20,    4,    4,   23,  182,
+       23,    9,    9,    4,    9,   10,    4,   22,   22,   91,
+       22,   23,   10,   10, 1001,   10,   29,  205,   29,   45,
+       52,   45,   52,    9,   17,   99,   37,   99,   45,   37,
+
+        9, 1000,    4,    4,   10,    4,   38,  999,   46,   38,
+       46,   10,   37,   37,   37,   37,  205,   46,   23,   23,
+       23,  998,   38,   38,   38,   38,   63,   63,  159,   63,
+      159,    4,    4,    4,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
@@ -1393,14 +1468,14 @@ static yyconst flex_int16_t yy_chk[4596] =
 
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   18,   24,
-       18,   24,  155,   30,  155,   30,   31,  202,   31,   31,
-       18,   64,   24,   30,   18,   18,   18,   18,   32,   43,
-       32,   32,   53,   48,   53,   48,  167,   61,   61,   53,
-       61,  101,   43,   48,   73,   73,  202,   73,   81,  261,
-       81,  261,   43,   81,   81,   81,   81,   43,   64,   24,
-       24,   24,  170,   30,  958,   30,   31,   31,   31,  170,
-      957,  101,   43,  111,  111,  268,  111,  268,   32,   32,
-       32,   43,   53,   53,   53,  956,   43,  167,   64,   18,
+       18,   24,  161,   30,  161,   30,   31,  208,   31,   31,
+       18,   70,   24,   30,   18,   18,   18,   18,   32,   43,
+       32,   32,   53,   48,   53,   48,  173,   67,   67,   53,
+       67,  107,   43,   48,   79,   79,  208,   79,   87,  285,
+       87,  285,   43,   87,   87,   87,   87,   43,   70,   24,
+       24,   24,  176,   30,  997,   30,   31,   31,   31,  176,
+      996,  107,   43,  117,  117,  292,  117,  292,   32,   32,
+       32,   43,   53,   53,   53,  995,   43,  173,   70,   18,
 
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
@@ -1411,15 +1486,15 @@ static yyconst flex_int16_t yy_chk[4596] =
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   33,   33,   39,   33,   39,   34,
-       34,   33,   34,  147,   41,   42,   34,   49,   44,   49,
-
-       33,   41,   42,  175,  308,   34,  308,   49,  274,  274,
-       50,   44,   50,  184,   41,   42,  122,  122,  122,  122,
-       50,   44,  185,  147,   41,   42,   44,   33,  207,   41,
-       42,  955,   34,  175,   33,   33,   39,   33,   39,   34,
-       34,   44,   34,  184,   41,   42,  334,   49,  334,   49,
-       44,  954,  185,   41,   42,   44,   33,  207,   41,   42,
-       50,   34,   50,   33,  336,   39,  336,   39,   34,   35,
+       34,   33,   34,   49,  153,   49,   34,   50,   44,   50,
+
+       33,  181,   54,   49,   54,   34,  263,   50,   59,   54,
+       59,   44,  298,  298,  190,   59,  128,  128,  128,  128,
+      994,   44,  213,  332,  153,  332,   44,   33,  302,  302,
+     1220,  181,   34, 1220,   33,   33,   39,   33,   39,   34,
+       34,   44,   34,   49,  190,   49,  358,   50,  358,   50,
+       44,  213,   54,   54,   54,   44,   33,  263,   59,   59,
+       59,   34,  360,   33,  360,   39,  993,   39,   34,   35,
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
@@ -1429,430 +1504,489 @@ static yyconst flex_int16_t yy_chk[4596] =
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   40,  634,   40,   54,  189,   54,   69,
-       69,  188,   69,   54,   80,   80,   69,   82,   82,  188,
-       82,  189,  128,  128,   82,  278,  278,  131,  131,  953,
-      138,  138,  359,   82,  187,  190,  194,  634,  195,   82,
-      187,  188,  191,  201,  196,  345,   80,  192,  196,  188,
-
-      952,  189,  345,   40,  128,   40,   54,   54,   54,  131,
-      897,  359,  138,  191,  187,  190,  194,  192,  195,  187,
-      198,   82,  191,  201,  196,   80,  896,  192,  196,  203,
-      198,  204,   40,  128,   40,   65,  243,  243,  131,  243,
-       69,  138,  191,  250,  205,  197,  192,  361,   82,  197,
-      198,  206,  251,  200,   65,  259,   65,  273,   65,  203,
-      198,  204,  895,  200,   65,  894,  200,   65,   65,   65,
-      893,   65,   65,   65,  205,  197,  361,   65,  892,  197,
-      250,  206,  251,  200,   65,  259,   65,  273,   65,  211,
-      211,  211,  211,  200,   65,  200,  891,   65,   65,   65,
-
-       65,   65,   65,  890,  247,  247,   65,  247,   65,  889,
-      250,  254,  254,  888,  254,  255,  255,  887,  255,  256,
-      256,  363,  256,  257,  257,  275,  257,  293,  254,  254,
-      254,  254,  255,  255,  255,  255,  256,  256,  256,  256,
-      257,  257,  257,  257,  264,  264,  304,  264,  276,  276,
-      363,  264,  305,  886,  254,  275,  275,  293,  312,  312,
-      256,  312,  332,  257,  885,  284,  284,  884,  284,  333,
-      349,  350,  284,  355,  356,  358,  304,  883,  365,  366,
-      276,  284,  305,  254,  367,  360,  368,  284,  371,  358,
-      256,  369,  332,  257,  319,  319,  319,  319,  372,  333,
-
-      349,  350,  360,  355,  356,  358,  364,  365,  366,  276,
-      364,  373,  381,  367,  374,  360,  368,  371,  358,  284,
-      418,  369,  418,  882,  420,  264,  420,  422,  372,  422,
-      881,  360,  391,  391,  391,  391,  364,  424,  880,  424,
-      364,  373,  381,  374,  376,  378,  284,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  370,  376,  378,  321,  370,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-
-      321,  379,  370,  380,  383,  370,  382,  383,  384,  385,
-      382,  879,  386,  380,  387,  382,  385,  878,  405,  427,
-      427,  412,  413,  433,  433,  448,  414,  448,  639,  639,
-      379,  416,  426,  380,  383,  877,  382,  383,  384,  385,
-      382,  386,  380,  387,  531,  382,  385,  388,  405,  388,
-      412,  413,  388,  388,  408,  408,  414,  408,  388,  388,
-      428,  416,  426,  876,  388,  388,  875,  411,  411,  388,
-      411,  408,  408,  408,  408,  441,  388,  388,  443,  388,
-      429,  429,  388,  388,  411,  411,  411,  411,  388,  388,
-      428,  428,  446,  388,  388,  431,  431,  447,  388,  438,
-
-      438,  438,  438,  464,  450,  441,  450,  465,  443,  469,
-      470,  521,  429,  521,  871,  471,  429,  524,  870,  524,
-      526,  526,  446,  526,  531,  818,  625,  447,  625,  431,
-      431,  626,  626,  464,  626,  632,  632,  465,  632,  469,
-      470,  429,  430,  430,  471,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  817,  430,  430,  430,
-
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  432,  432,  432,  432,
-      451,  452,  453,  457,  456,  432,  432,  432,  432,  432,
-      432,  454,  459,  460,  472,  461,  451,  452,  473,  458,
-      453,  474,  457,  461,  454,  816,  456,  475,  476,  477,
-      432,  432,  459,  460,  478,  432,  432,  432,  432,  432,
-      432,  458,  480,  472,  458,  482,  451,  452,  473,  481,
-      453,  474,  457,  461,  454,  456,  486,  475,  476,  477,
-      484,  487,  459,  460,  478,  815,  485,  488,  489,  814,
-
-      458,  491,  480,  458,  462,  482,  492,  493,  481,  462,
-      462,  462,  462,  494,  495,  462,  486,  496,  497,  484,
-      462,  487,  498,  499,  462,  485,  488,  462,  489,  462,
-      500,  491,  462,  501,  502,  503,  492,  493,  505,  462,
-      462,  462,  462,  494,  495,  462,  506,  496,  497,  504,
-      462,  507,  498,  499,  462,  504,  462,  508,  462,  509,
-      500,  462,  510,  501,  502,  503,  511,  513,  505,  512,
-      514,  515,  516,  517,  519,  506,  518,  519,  519,  504,
-      507,  520,  638,  638,  638,  504,  546,  508,  527,  509,
-      528,  529,  510,  533,  543,  544,  511,  513,  512,  813,
-
-      514,  515,  516,  517,  519,  518,  519,  519,  631,  522,
-      522,  520,  522,  525,  525,  546,  525,  719,  527,  719,
-      528,  529,  812,  533,  543,  544,  522,  522,  522,  522,
-      525,  525,  525,  525,  534,  534,  811,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  631,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  535,  535,
-      545,  548,  550,  810,  539,  539,  549,  552,  557,  551,
-      554,  549,  552,  553,  809,  559,  558,  640,  640,  548,
-      551,  548,  556,  554,  727,  727,  550,  556,  557,  558,
-      545,  559,  535,  535,  536,  536,  536,  536,  539,  539,
-      553,  549,  552,  536,  536,  536,  536,  536,  536,  548,
-      551,  548,  555,  554,  562,  550,  560,  556,  557,  558,
-      800,  559,  800,  563,  569,  561,  566,  562,  564,  553,
-      555,  571,  560,  536,  536,  536,  536,  536,  536,  540,
-
-      540,  540,  540,  561,  565,  563,  566,  564,  540,  540,
-      540,  540,  540,  540,  569,  567,  568,  562,  570,  572,
-      555,  571,  560,  575,  568,  808,  565,  576,  577,  565,
-      578,  579,  580,  561,  563,  567,  566,  564,  540,  540,
-      540,  540,  540,  540,  582,  584,  581,  570,  572,  583,
-      587,  806,  588,  575,  568,  565,  576,  577,  565,  578,
-      589,  579,  580,  581,  590,  567,  594,  595,  599,  581,
-      799,  597,  598,  601,  582,  584,  602,  603,  583,  604,
-      587,  588,  605,  606,  796,  607,  608,  609,  611,  589,
-      612,  613,  615,  581,  590,  594,  614,  595,  599,  581,
-
-      597,  598,  601,  616,  617,  619,  602,  603,  618,  604,
-      620,  605,  621,  606,  607,  608,  620,  609,  611,  622,
-      612,  613,  615,  627,  628,  614,  629,  636,  636,  641,
-      651,  643,  616,  646,  617,  619,  647,  618,  644,  784,
-      620,  669,  621,  650,  652,  620,  770,  660,  647,  622,
-      651,  648,  627,  652,  628,  629,  650,  649,  646,  641,
-      643,  636,  636,  637,  637,  637,  637,  653,  644,  648,
-      669,  660,  637,  637,  637,  637,  637,  637,  647,  649,
-      651,  654,  655,  652,  656,  653,  650,  646,  654,  655,
-      657,  658,  659,  656,  728,  728,  665,  659,  663,  648,
-
-      660,  657,  637,  637,  637,  637,  637,  637,  649,  658,
-      661,  658,  662,  664,  665,  653,  667,  662,  654,  655,
-      668,  661,  670,  656,  666,  663,  664,  659,  671,  666,
-      672,  657,  674,  668,  676,  679,  667,  761,  680,  658,
-      681,  658,  683,  687,  665,  679,  685,  662,  688,  689,
-      691,  661,  670,  692,  663,  693,  664,  671,  695,  666,
-      672,  674,  696,  668,  676,  679,  667,  680,  697,  699,
-      681,  700,  683,  687,  679,  685,  701,  702,  688,  689,
-      691,  704,  692,  705,  707,  693,  706,  695,  709,  710,
-      711,  696,  713,  714,  733,  715,  716,  697,  717,  699,
-
-      700,  720,  721,  722,  722,  701,  722,  702,  730,  736,
-      704,  733,  734,  705,  707,  706,  737,  734,  709,  710,
-      711,  735,  713,  714,  715,  736,  716,  739,  717,  740,
-      738,  720,  721,  726,  726,  726,  735,  741,  743,  745,
-      737,  733,  738,  744,  747,  742,  746,  734,  748,  739,
-      729,  750,  749,  740,  742,  736,  744,  752,  746,  751,
-      743,  741,  747,  725,  745,  749,  735,  753,  751,  737,
-      748,  750,  738,  754,  753,  752,  755,  763,  739,  764,
-      754,  765,  740,  756,  742,  755,  744,  763,  746,  743,
-      741,  766,  747,  745,  756,  749,  767,  768,  751,  748,
-
-      769,  750,  771,  772,  753,  752,  773,  763,  774,  764,
-      754,  765,  775,  776,  778,  755,  777,  763,  780,  724,
-      782,  766,  786,  787,  756,  767,  768,  788,  791,  769,
-      793,  797,  771,  772,  718,  798,  773,  802,  774,  802,
-      804,  712,  775,  776,  778,  777,  790,  790,  780,  782,
-      820,  790,  786,  787,  790,  819,  788,  790,  791,  708,
-      793,  797,  790,  794,  794,  798,  823,  820,  794,  804,
-      821,  794,  824,  822,  794,  821,  790,  790,  825,  819,
-      826,  790,  823,  827,  790,  828,  831,  790,  822,  830,
-      825,  790,  832,  794,  794,  833,  824,  820,  794,  831,
-
-      834,  794,  826,  835,  794,  821,  829,  827,  819,  828,
-      838,  830,  823,  836,  841,  829,  694,  840,  822,  842,
-      825,  843,  832,  844,  833,  824,  845,  847,  849,  831,
-      834,  826,  835,  850,  852,  856,  827,  857,  828,  838,
-      830,  858,  690,  836,  841,  829,  840,  860,  842,  865,
-      852,  843,  844,  861,  862,  859,  845,  847,  849,  859,
-      863,  864,  859,  850,  852,  856,  857,  866,  684,  868,
-      869,  858,  859,  872,  867,  678,  860,  867,  865,  852,
-      873,  898,  873,  861,  862,  859,  903,  867,  899,  859,
-      863,  864,  859,  900,  901,  902,  905,  866,  868,  869,
-
-      906,  859,  872,  907,  867,  898,  908,  867,  910,  911,
-      912,  642,  913,  914,  915,  903,  867,  916,  899,  917,
-      919,  920,  921,  900,  901,  902,  905,  922,  635,  923,
-      906,  924,  926,  907,  898,  927,  908,  910,  928,  911,
-      912,  913,  930,  914,  915,  931,  932,  916,  917,  933,
-      919,  920,  921,  934,  935,  937,  936,  922,  923,  938,
-      924,  938,  926,  965,  940,  927,  940,  928,  966,  967,
-      968,  969,  930,  936,  970,  931,  932,  971,  933,  972,
-      973,  974,  934,  935,  937,  975,  936,  976,  978,  633,
-      979,  980,  965,  981,  982,  983,  984,  985,  966,  967,
-
-      968,  969,  936,  987,  970,  989,  990,  971,  972,  973,
-      991,  974,  992,  993,  975,  995,  999,  976,  978,  979,
-      980,  996,  981,  998,  982,  983,  984,  985, 1015,  997,
-     1013, 1014,  987,  997,  989,  990, 1016, 1017, 1019, 1020,
-      991, 1022,  992,  993, 1023,  995,  999, 1024, 1025, 1026,
-      996, 1027,  998, 1028, 1030, 1034, 1035, 1015,  997, 1036,
-     1013, 1014,  997, 1039, 1040, 1016, 1017, 1041, 1019, 1020,
-     1022, 1042, 1043, 1023, 1044, 1046, 1047, 1024, 1025, 1026,
-     1048, 1027, 1049, 1028, 1030, 1034, 1035, 1050, 1053, 1036,
-     1055, 1057, 1039, 1060, 1040, 1063, 1064, 1041, 1065, 1066,
-
-     1042, 1043, 1067, 1044, 1046, 1068, 1047, 1069, 1070, 1072,
-     1048, 1073, 1049, 1074, 1075,  623, 1077, 1050, 1053, 1055,
-     1081, 1057, 1082, 1060, 1083, 1063, 1064, 1065, 1084, 1066,
-     1086, 1087, 1067, 1088, 1089, 1068, 1090, 1069, 1070, 1072,
-     1073, 1093, 1074, 1095, 1075, 1077, 1096, 1097, 1098, 1100,
-     1081, 1103, 1082, 1083, 1105,  596, 1106, 1107, 1084, 1109,
-     1086, 1087, 1110, 1088, 1089, 1090, 1157, 1157,  593, 1173,
-     1093, 1173, 1206, 1095, 1206, 1096, 1097, 1098,  547, 1100,
-      538, 1103, 1166, 1166, 1105, 1106, 1107, 1166,  490, 1109,
-      467,  466, 1110, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-
-     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-     1114, 1114, 1114, 1114, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1115, 1115, 1115, 1115, 1116, 1116, 1116, 1116, 1116,
-     1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
-     1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117, 1117,
-     1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-     1117, 1117, 1117, 1117, 1117, 1117, 1117, 1118, 1118, 1118,
-     1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
-     1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1119,
-
-     1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
-     1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121,
-     1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121,
-     1121, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
-     1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
-     1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
-     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
-
-     1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
-     1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
-     1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125,
-     1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
-     1125, 1125, 1125, 1125, 1125, 1126, 1126, 1126, 1126, 1126,
-     1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
-     1126, 1126, 1126, 1126, 1126, 1126, 1127, 1127, 1127, 1127,
-     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
-     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128,
-     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
-
-     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1129, 1129,
-     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
-     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130,
-     1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
-     1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
-     1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
-     1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
-     1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
-     1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
-     1132, 1132, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
-
-     1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
-     1133, 1133, 1133, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1135,  455, 1135,  437, 1135, 1135,
-     1213, 1213, 1213, 1135, 1136, 1136, 1136, 1136, 1136, 1136,
-     1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
-     1136, 1136, 1136, 1136, 1137,  410, 1137,  389, 1137, 1137,
-     1167, 1167,  362, 1137, 1138, 1167, 1138, 1138, 1138, 1138,
-     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
-     1138, 1138, 1138, 1138, 1138, 1139,  353, 1139, 1139, 1139,
-
-     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
-     1139, 1139, 1139, 1139, 1139, 1139, 1140, 1140,  351, 1140,
-      346, 1140, 1140,  344,  343,  328, 1140, 1141,  315, 1141,
-     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
-     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142,
-     1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
-     1142, 1142, 1142,  314, 1142,  313, 1142, 1142, 1142, 1143,
-      310, 1143, 1143,  296, 1143, 1143, 1143, 1143, 1143, 1143,
-     1143, 1143, 1143, 1143,  289, 1143,  288, 1143, 1143, 1143,
-     1144,  287,  286, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
-
-     1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
-     1144, 1145,  283, 1145,  281, 1145, 1145,  280,  271,  270,
-     1145, 1146,  267, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-     1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-     1146, 1146, 1147,  266, 1147, 1147, 1147, 1147, 1147, 1147,
-     1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,  249,
-     1147, 1147, 1147, 1148,  245, 1148,  241, 1148,  239, 1148,
-     1148, 1148, 1148,  238, 1148, 1148,  236,  235,  234, 1148,
-     1149,  230, 1149, 1149, 1149,  216, 1149, 1149, 1149, 1149,
-     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
-
-     1149, 1150,  215, 1150,  214, 1150, 1150,  210,  183,  182,
-     1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
-     1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
-     1151, 1151, 1152,  180, 1152, 1152, 1152, 1152, 1152,  178,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152,  177, 1152,  174,
-     1152, 1152, 1152, 1153,  173, 1153,  172, 1153, 1153, 1153,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,  168,  166,
-      164, 1153, 1153, 1153, 1154, 1154, 1154, 1154, 1154, 1154,
+       35,   35,   35,   40,   41,   40,  451,   42,  451,   55,
+       41,   55,   55,   42,   86,   86,   55,   41,   41,  992,
+       42,   42,  267,  267,   55,  267,  191,  369,  991,   56,
+       41,   56,   56,   42,  369,   57,   56,   57,   57,  570,
+       41,  383,  670,   42,   56,   41,   86,   58,   42,   58,
+
+       58,  936,   60,   40,   60,   40,  191,  134,  134,   60,
+       41,   75,   75,   42,   75,  193,  196,  935,   75,   41,
+      383,  193,   42,  934,   41,   86,   41,   42,  933,   42,
+      137,  137,   40,  932,   40,   57,   57,   57,   55,  134,
+       55,  144,  144,  195,  200,  193,  196,   58,   58,   58,
+      193,  194,   60,   60,   60,  931,  197,  195,   56,  194,
+       56,   71,  137,   88,   88,  453,   88,  453,  134,  570,
+       88,  201,  670,  144,  200,  271,  271,  197,  271,   88,
+       71,  194,   71,  207,   71,   88,  197,  195,  198,  194,
+       71,  137,   75,   71,   71,   71,  274,   71,   71,   71,
+
+      930,  201,  144,   71, 1257,  202,  197, 1257,  198,  202,
+       71,  203,   71,  207,   71,  203,  209,   88,  198,  204,
+       71,  210,  211,   71,   71,   71,   71,   71,   71,  204,
+      206,  212,   71,  274,   71,  202,  275,  198,  929,  202,
+      206,  203,  928,  206,   88,  203,  209,  336,  336,  204,
+      336,  210,  211,  217,  217,  217,  217,  460,  460,  204,
+      206,  212,  927,  274,  278,  278,  275,  278,  279,  279,
+      206,  279,  206,  280,  280,  283,  280,  281,  281,  297,
+      281,  278,  278,  278,  278,  279,  279,  279,  279,  299,
+      280,  280,  280,  280,  281,  281,  281,  281,  317,  288,
+
+      288,  385,  288,  300,  300,  283,  288,  278,  328,  297,
+      329,  356,  357,  373,  280,  308,  308,  281,  308,  299,
+      299,  374,  308,  343,  343,  343,  343,  379,  317,  380,
+      385,  308,  382,  384,  926,  300,  278,  308,  328,  387,
+      329,  356,  357,  373,  280,  389,  382,  281,  388,  925,
+      384,  374,  388,  924,  390,  391,  392,  379,  393,  380,
+      395,  394,  382,  384,  300,  394,  398,  923,  387,  308,
+      415,  415,  415,  415,  389,  382,  466,  466,  388,  384,
+      288,  922,  388,  390,  391,  455,  392,  455,  393,  395,
+      921,  394,  396,  397,  394,  398,  308,  345,  345,  345,
+
+      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
+      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
+      345,  345,  396,  397,  400,  345,  402,  345,  345,  345,
+      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
+      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
+      345,  403,  404,  400,  405,  402,  406,  408,  920,  410,
+      406,  919,  404,  407,  409,  406,  407,  918,  411,  438,
+      447,  409,  917,  457,  445,  457,  446,  481,  916,  481,
+      403,  449,  404,  915,  405,  459,  406,  408,  410,  914,
+      406,  404,  504,  407,  409,  406,  407,  411,  910,  438,
+
+      447,  409,  412,  445,  412,  446,  909,  412,  412,  441,
+      441,  449,  441,  412,  412,  459,  461,  464,  464,  412,
+      412,  504,  444,  444,  412,  444,  441,  441,  441,  441,
+      474,  412,  412,  476,  412,  462,  462,  412,  412,  444,
+      444,  444,  444,  412,  412,  479,  461,  461,  412,  412,
+      480,  464,  464,  412,  471,  471,  471,  471,  497,  483,
+      474,  483,  498,  476,  502,  503,  560,  462,  560,  857,
+      505,  462,  563,  856,  563,  479,  565,  565,  855,  565,
+      480,  664,  854,  664,  665,  665,  853,  665,  497,  852,
+      671,  671,  498,  671,  502,  503,  462,  463,  463,  505,
+
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  851,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  465,  465,  465,  465,  484,  485,  486,  490,  489,
+      465,  465,  465,  465,  465,  465,  487,  492,  493,  514,
+
+      494,  484,  485,  506,  491,  486,  507,  490,  494,  487,
+      850,  489,  508,  509,  510,  465,  465,  492,  493,  511,
+      465,  465,  465,  465,  465,  465,  491,  513,  514,  491,
+      515,  484,  485,  506,  517,  486,  507,  490,  494,  487,
+      489,  519,  508,  509,  510,  518,  520,  492,  493,  511,
+      849,  521,  539,  522,  848,  491,  524,  513,  491,  495,
+      515,  525,  526,  517,  495,  495,  495,  495,  527,  528,
+      495,  519,  529,  530,  518,  495,  520,  531,  532,  495,
+      521,  539,  495,  522,  495,  533,  524,  495,  534,  535,
+      536,  525,  526,  538,  495,  495,  495,  495,  527,  528,
+
+      495,  540,  529,  530,  537,  495,  541,  531,  532,  495,
+      537,  495,  542,  495,  543,  533,  495,  544,  534,  535,
+      536,  545,  546,  538,  547,  548,  549,  550,  847,  551,
+      540,  559,  678,  678,  537,  552,  541,  845,  552,  552,
+      537,  566,  542,  567,  543,  568,  838,  544,  679,  679,
+      545,  758,  546,  758,  547,  548,  549,  550,  551,  561,
+      561,  559,  561,  564,  564,  552,  564,  552,  552,  572,
+      835,  566,  582,  567,  823,  568,  561,  561,  561,  561,
+      564,  564,  564,  564,  677,  677,  677,  761,  761,  809,
+      761,  765,  765,  765,  766,  766,  767,  767,  800,  572,
+
+      573,  573,  582,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  769,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
+      573,  573,  573,  573,  574,  574,  583,  584,  587,  589,
+      578,  578,  594,  588,  590,  596,  593,  585,  588,  768,
+
+      592,  597,  591,  607,  764,  590,  587,  591,  587,  593,
+      594,  607,  763,  589,  597,  596,  583,  584,  574,  574,
+      575,  575,  575,  575,  578,  578,  585,  592,  588,  575,
+      575,  575,  575,  575,  575,  590,  587,  591,  587,  593,
+      594,  607,  589,  757,  597,  596,  839,  841,  839,  841,
+      912,  977,  912,  977,  751,  979,  592,  979,  747,  575,
+      575,  575,  575,  575,  575,  576,  576,  733,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  729,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  579,
+      579,  579,  579,  601,  598,  599,  600,  602,  579,  579,
+      579,  579,  579,  579,  595,  603,  601,  605,  608,  595,
+      598,  599,  604,  609,  600,  606,  610,  723,  611,  602,
+      614,  717,  615,  616,  603,  681,  617,  605,  579,  579,
+      579,  579,  579,  579,  604,  606,  601,  604,  608,  595,
+
+      598,  599,  609,  618,  600,  619,  610,  611,  602,  621,
+      614,  615,  616,  620,  603,  617,  622,  605,  623,  626,
+      674,  627,  628,  604,  629,  606,  604,  633,  634,  638,
+      620,  672,  636,  618,  637,  619,  620,  662,  640,  621,
+      641,  642,  643,  635,  644,  622,  645,  648,  623,  626,
+      627,  628,  646,  647,  629,  650,  633,  651,  634,  638,
+      620,  636,  652,  637,  653,  654,  620,  640,  655,  656,
+      641,  642,  643,  644,  657,  658,  645,  648,  659,  660,
+      661,  646,  647,  666,  659,  650,  667,  651,  668,  675,
+      675,  680,  652,  653,  685,  654,  688,  655,  689,  656,
+
+      682,  683,  686,  657,  687,  658,  691,  632,  659,  660,
+      661,  689,  666,  659,  686,  691,  667,  668,  688,  685,
+      690,  680,  687,  675,  675,  676,  676,  676,  676,  682,
+      586,  683,  692,  699,  676,  676,  676,  676,  676,  676,
+      690,  689,  693,  696,  686,  691,  694,  688,  685,  693,
+      692,  695,  687,  694,  696,  697,  698,  699,  702,  703,
+      695,  698,  709,  700,  676,  676,  676,  676,  676,  676,
+      690,  701,  703,  697,  700,  697,  701,  704,  706,  693,
+      692,  707,  705,  694,  696,  702,  699,  705,  577,  708,
+      695,  698,  709,  710,  707,  704,  711,  715,  706,  558,
+
+      713,  718,  703,  697,  700,  697,  701,  719,  720,  722,
+      557,  718,  724,  726,  702,  727,  728,  705,  708,  730,
+      555,  731,  710,  732,  707,  704,  711,  715,  706,  713,
+      734,  718,  735,  736,  738,  741,  719,  739,  720,  722,
+      718,  724,  740,  726,  743,  727,  728,  744,  746,  730,
+      731,  745,  748,  732,  749,  750,  752,  753,  755,  734,
+      754,  735,  736,  756,  738,  741,  739,  759,  760,  777,
+      773,  740,  776,  743,  772,  773,  775,  744,  746,  774,
+      745,  777,  748,  779,  749,  750,  752,  753,  755,  754,
+      778,  772,  775,  756,  774,  780,  776,  759,  760,  781,
+
+      783,  782,  784,  785,  787,  773,  554,  779,  781,  795,
+      786,  777,  778,  783,  789,  785,  788,  791,  523,  780,
+      795,  772,  775,  782,  774,  776,  787,  784,  786,  788,
+      790,  803,  804,  792,  789,  791,  779,  793,  781,  790,
+      792,  778,  794,  783,  793,  785,  805,  802,  780,  806,
+      795,  794,  782,  807,  808,  787,  784,  802,  786,  788,
+      810,  803,  804,  811,  789,  791,  812,  813,  814,  790,
+      792,  815,  500,  816,  793,  817,  805,  802,  806,  819,
+      825,  794,  807,  808,  821,  826,  830,  802,  827,  843,
+      810,  832,  836,  811,  499,  859,  812,  813,  814,  858,
+
+      837,  815,  816,  829,  829,  817, 1199, 1199,  829,  819,
+      825,  829,  859,  821,  829,  826,  830,  827,  843,  829,
+      862,  832,  836,  858,  833,  833,  860,  863,  861,  833,
+      837,  860,  833,  829,  829,  833,  862,  864,  829,  866,
+      867,  829,  859,  861,  829,  865,  869,  868,  829,  864,
+      488,  863,  858,  871,  833,  833,  868,  870,  872,  833,
+      873,  860,  833,  866,  867,  833,  862,  865,  869,  874,
+      870,  875,  880,  861,  877,  879,  881,  882,  884,  864,
+      863,  883,  886,  871,  888,  889,  868,  872,  895,  897,
+      873,  896,  866,  867,  899,  891,  865,  869,  874,  900,
+
+      870,  875,  880,  877,  879,  881,  901,  882,  884,  898,
+      883,  891,  886,  898,  888,  889,  898,  902,  895,  897,
+      896,  903,  905,  899,  904,  891,  898,  907,  906,  900,
+      908,  906,  470,  911,  938,  939,  901,  940,  941,  898,
+      891,  906,  937,  898,  942,  944,  898,  902,  945,  946,
+      947,  903,  905,  904,  949,  898,  907,  950,  906,  908,
+      951,  906,  911,  952,  938,  939,  937,  940,  941,  953,
+      906,  954,  955,  942,  956,  944,  958,  959,  945,  946,
+      947,  960,  961,  949,  962,  963,  965,  950,  966,  969,
+      951,  967,  952,  970,  971,  937,  972,  973,  974,  953,
+
+      975,  954,  955,  956,  976, 1004,  958,  959, 1005, 1006,
+     1007,  960,  961,  962,  963, 1008,  965,  975,  966,  969,
+      967, 1009, 1010,  970,  971,  972,  973,  974, 1011, 1012,
+      975, 1013, 1015,  976, 1004, 1014, 1017, 1021, 1005, 1006,
+     1007, 1018, 1019, 1020, 1022, 1008,  975, 1023, 1024,  443,
+     1026, 1009, 1010, 1028, 1029, 1030, 1031, 1011, 1012, 1032,
+     1034, 1013, 1015, 1035, 1014, 1036, 1017, 1021, 1037, 1036,
+     1018, 1019, 1020, 1038, 1022, 1052, 1053, 1023, 1024, 1026,
+     1054, 1055, 1028, 1029, 1056, 1030, 1031, 1058, 1059, 1032,
+     1034, 1061, 1035, 1062, 1036, 1063, 1064, 1037, 1036, 1065,
+
+     1066, 1067, 1069, 1038, 1073, 1052, 1053, 1074, 1075, 1054,
+     1055, 1078, 1079, 1056, 1080,  436, 1081, 1058, 1059, 1082,
+     1061, 1083, 1062, 1085, 1086, 1063, 1064, 1087, 1088, 1065,
+     1066, 1067, 1069, 1089, 1073, 1092, 1096, 1074, 1075, 1094,
+     1078, 1099, 1079, 1102, 1080, 1081, 1103, 1105, 1082, 1104,
+     1083, 1106, 1085, 1107, 1086, 1108, 1109, 1087, 1088, 1111,
+      435, 1112, 1113, 1089, 1114, 1092, 1096, 1116, 1094, 1120,
+     1121, 1099, 1122, 1102, 1123, 1125, 1103, 1105, 1104, 1126,
+     1127, 1106, 1128, 1107, 1129, 1108, 1109, 1132, 1134, 1111,
+     1112, 1113, 1135, 1136, 1114, 1137, 1116, 1139, 1142, 1120,
+
+     1121, 1122, 1144, 1148, 1123, 1125, 1145, 1146, 1149, 1126,
+     1127,  421, 1128, 1129, 1202, 1202, 1132,  420, 1134, 1202,
+      413, 1135, 1136,  386, 1137, 1203, 1203, 1139, 1142,  377,
+     1203,  375, 1144, 1148,  370, 1145, 1146,  368, 1149, 1153,
+     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+     1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
      1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1154, 1154, 1155,  161, 1155, 1155, 1155,
-
+     1154, 1154, 1154, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
      1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-     1155, 1155, 1155, 1155, 1155, 1155, 1156, 1156,  160,  159,
-      158, 1156, 1156, 1158,  150, 1158, 1158, 1158, 1158, 1158,
+
+     1155, 1155, 1155, 1155, 1155, 1156, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1158,
      1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1158, 1159,  149,  145, 1159, 1159, 1159,
-     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,  144,
-     1159,  142, 1159, 1160,  137, 1160, 1160, 1160, 1160,  135,
-     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
-     1160, 1160, 1160, 1160, 1161, 1161, 1161, 1161, 1161, 1161,
-     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,  130,
+     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
+     1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
+     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
+     1159, 1159, 1159, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
 
-     1161,  126, 1161, 1161, 1161, 1162,  120, 1162, 1162, 1162,
-      115, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
-      113,  112,  109, 1162, 1162, 1162, 1163,  107, 1163,  105,
-     1163, 1163,  104,  103,   99, 1163, 1164,   96, 1164, 1164,
+     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
+     1160, 1160, 1160, 1160, 1160, 1161, 1161, 1161, 1161, 1161,
+     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
+     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1162, 1162,
+     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1163,
+     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+     1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
      1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
-     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165,   95, 1165,
+
+     1164, 1164, 1164, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
      1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1168, 1168,
+     1165, 1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166,
+     1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
+     1166, 1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167,
+     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
+     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168,
      1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1169,
+     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
+     1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
 
-       92, 1169,   90, 1169, 1169,   86,   84,   78, 1169, 1170,
-     1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
+     1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
+     1169, 1169, 1169, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
      1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
-     1171,   77, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171,   74, 1171, 1171,
-     1171, 1172,   71, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
+     1170, 1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171,
+     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1172, 1172, 1172,
      1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
-     1172, 1172, 1174,   66, 1174,   63, 1174, 1174,   59,   55,
-       16, 1174,   15, 1174, 1175,    0, 1175, 1175, 1175, 1175,
-     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
+     1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
 
-     1175, 1175, 1175, 1175, 1175, 1176,    0, 1176, 1176, 1176,
+     1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
+     1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
+     1174, 1174, 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
+     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
+     1175, 1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176, 1176,
      1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
-     1176, 1176, 1176, 1176, 1176, 1176, 1177,    0, 1177, 1177,
-     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
-     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178,    0, 1178,
+     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177,  367, 1177,
+     1213, 1213, 1177, 1177,  352, 1213,  339, 1177, 1178, 1178,
      1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
-     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179, 1179,
-     1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
-     1179, 1179, 1179,    0, 1179,    0, 1179, 1179, 1179, 1180,
-        0, 1180, 1180,    0, 1180, 1180, 1180, 1180, 1180, 1180,
+     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179,
 
-     1180, 1180, 1180, 1180,    0, 1180,    0, 1180, 1180, 1180,
+      338, 1179, 1214, 1214, 1179, 1179,  337, 1214,  334, 1179,
+     1180,  320, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1180, 1180, 1181,  313, 1181, 1181, 1181, 1181, 1181, 1181,
      1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1182,    0,    0, 1182, 1182, 1182, 1182, 1182, 1182,
-     1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
-     1182, 1182, 1183,    0, 1183,    0, 1183, 1183,    0,    0,
-        0, 1183, 1184,    0, 1184,    0, 1184,    0, 1184, 1184,
-     1184, 1184,    0, 1184, 1184,    0,    0,    0, 1184, 1185,
-        0, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-
-     1186,    0, 1186,    0, 1186, 1186,    0,    0,    0, 1186,
-     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1188,    0, 1188, 1188, 1188, 1188, 1188,    0, 1188,
-     1188, 1188, 1188, 1188, 1188, 1188,    0, 1188,    0, 1188,
-     1188, 1188, 1189,    0, 1189,    0, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189,    0,    0,    0,
-     1189, 1189, 1189, 1190,    0, 1190, 1190, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1191,    0, 1191, 1191, 1191, 1191,
-
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1192, 1192,    0,    0,    0,
-     1192, 1192, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193,
+     1181, 1181, 1181, 1181, 1182, 1182, 1264, 1182, 1264, 1264,
+     1182, 1182,  312,  311,  310, 1182, 1183,  307, 1183, 1183,
+     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
+     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184,
+     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+
+     1184, 1184, 1184, 1184,  305, 1184,  304, 1184, 1184, 1184,
+     1185,  295, 1185, 1185,  294, 1185, 1185, 1185, 1185, 1185,
+     1185, 1185, 1185, 1185, 1185, 1185,  291, 1185,  290, 1185,
+     1185, 1185, 1186,  273,  269, 1186, 1186, 1186, 1186, 1186,
+     1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
+     1186, 1186, 1186, 1186, 1187,  265, 1187,  261,  257, 1187,
+     1187,  254,  250,  248, 1187, 1188,  247, 1188, 1188, 1188,
+     1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
+     1188, 1188, 1188, 1188, 1188, 1188, 1188, 1189,  245, 1189,
+     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
+
+     1189, 1189, 1189, 1189, 1189,  244, 1189, 1189, 1189, 1190,
+      243, 1190,  239, 1190,  222, 1190, 1190, 1190, 1190,  221,
+     1190, 1190, 1190,  220,  216,  189, 1190, 1191,  188, 1191,
+     1191, 1191,  186, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192,
+      184, 1192,  183,  180, 1192, 1192,  179,  178,  174, 1192,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
      1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
-     1193, 1193, 1193, 1194,    0,    0, 1194, 1194, 1194, 1194,
-     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,    0, 1194,
-        0, 1194, 1195,    0, 1195, 1195, 1195, 1195,    0, 1195,
+     1193, 1193, 1194,  172, 1194, 1194, 1194, 1194, 1194,  170,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,  167, 1194,
+
+      166, 1194, 1194, 1194, 1195,  165, 1195,  164, 1195, 1195,
      1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
-     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,    0, 1196,
-
-        0, 1196, 1196, 1196, 1197,    0, 1197, 1197, 1197,    0,
-     1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,    0,
-        0,    0, 1197, 1197, 1197, 1198,    0, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1199,    0, 1199, 1199,
-     1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
-     1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200,
+      156,  155,  151, 1195, 1195, 1195, 1196, 1196, 1196, 1196,
+     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1197,  150,
+     1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+     1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+     1198, 1198,  148,  143,  141,  136, 1198, 1198, 1200,  132,
+     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
      1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201,    0,
-     1201,    0, 1201, 1201,    0,    0,    0, 1201, 1202,    0,
 
-     1202,    0, 1202, 1202,    0,    0,    0, 1202, 1203, 1203,
-     1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
-     1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1204,
+     1201,  126,  121, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201,  119, 1201,  118, 1201,
+     1204,  115, 1204, 1204, 1204, 1204,  113, 1204, 1204, 1204,
      1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1205,    0, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205,    0, 1205, 1205,
-     1205, 1207,    0, 1207,    0, 1207, 1207,    0,    0,    0,
-     1207,    0, 1207, 1208,    0, 1208, 1208, 1208, 1208, 1208,
+     1204, 1204, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
+     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,  111, 1205,
+      110, 1205, 1205, 1205, 1206,  109, 1206, 1206, 1206,  105,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+      102,  101,   98, 1206, 1206, 1206, 1207,   96, 1207,   92,
+     1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207,
+
+     1207, 1207,   90,   84,   83, 1207, 1207, 1207, 1208, 1208,
      1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-
-     1208, 1208, 1208, 1208, 1209,    0, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1210,    0, 1210, 1210, 1210,
-     1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
-     1210, 1210, 1210, 1210, 1210, 1210, 1211,    0, 1211, 1211,
-        0, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211,    0, 1211,    0, 1211, 1211, 1211, 1212, 1212, 1212,
+     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
+     1209,   80, 1209, 1209, 1209,   77, 1209, 1209, 1209, 1209,
+     1209, 1209, 1209, 1209, 1209, 1209,   72,   69,   65, 1209,
+     1209, 1209, 1210,   61, 1210,   16,   15, 1210, 1210,    0,
+        0,    0, 1210, 1211,    0, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1211, 1211, 1211, 1212,    0, 1212, 1212, 1212,
      1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
-     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1214,    0,
-     1214,    0, 1214, 1214,    0,    0,    0, 1214, 1215,    0,
 
+     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1215, 1215, 1215,
      1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
      1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216,
-        0, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
-     1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
-     1217, 1217,    0,    0,    0, 1217, 1217, 1218,    0, 1218,
+        0, 1216,    0,    0, 1216, 1216,    0,    0,    0, 1216,
+     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
+     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
+     1217, 1217, 1218,    0, 1218, 1218, 1218, 1218, 1218, 1218,
      1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
-     1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219, 1219,
+        0, 1218, 1218, 1218, 1219,    0, 1219, 1219, 1219, 1219,
      1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113
 
+     1219, 1219, 1219, 1219, 1219, 1219, 1221,    0, 1221,    0,
+        0, 1221, 1221,    0,    0,    0, 1221,    0, 1221, 1222,
+        0, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1223,    0, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1224,    0, 1224, 1224, 1224, 1224, 1224,
+     1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
+     1224, 1224, 1224, 1224, 1224, 1225,    0, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226,    0, 1226,    0, 1226, 1226, 1226, 1227,
+        0, 1227, 1227,    0, 1227, 1227, 1227, 1227, 1227, 1227,
+     1227, 1227, 1227, 1227, 1227,    0, 1227,    0, 1227, 1227,
+     1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
+     1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
+     1228, 1228, 1228, 1229,    0,    0, 1229, 1229, 1229, 1229,
+     1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
+     1229, 1229, 1229, 1229, 1229, 1230,    0, 1230,    0,    0,
+
+     1230, 1230,    0,    0,    0, 1230, 1231,    0, 1231,    0,
+     1231,    0, 1231, 1231, 1231, 1231,    0, 1231, 1231, 1231,
+        0,    0,    0, 1231, 1232,    0, 1232, 1232, 1232, 1232,
+     1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
+     1232, 1232, 1232, 1232, 1232, 1232, 1233,    0, 1233,    0,
+        0, 1233, 1233,    0,    0,    0, 1233, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1235,
+        0, 1235, 1235, 1235, 1235, 1235,    0, 1235, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235,    0, 1235,    0, 1235, 1235,
+
+     1235, 1236,    0, 1236,    0, 1236, 1236, 1236, 1236, 1236,
+     1236, 1236, 1236, 1236, 1236, 1236, 1236,    0,    0,    0,
+     1236, 1236, 1236, 1237,    0, 1237, 1237, 1237, 1237, 1237,
+     1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
+     1237, 1237, 1237, 1237, 1237, 1238,    0, 1238, 1238, 1238,
+     1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
+     1238, 1238, 1238, 1238, 1238, 1238, 1238, 1239, 1239,    0,
+        0,    0,    0, 1239, 1239, 1240,    0, 1240, 1240, 1240,
+     1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
+     1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241,    0,    0,
+
+     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241,    0, 1241,    0, 1241, 1242,    0,    0,
+        0, 1242,    0, 1242,    0,    0, 1242, 1242,    0,    0,
+        0, 1242, 1243,    0, 1243,    0, 1243, 1243, 1243,    0,
+        0,    0, 1243, 1244,    0, 1244, 1244, 1244, 1244,    0,
+     1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
+     1244, 1244, 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+     1245,    0, 1245,    0, 1245, 1245, 1245, 1246,    0, 1246,
+     1246, 1246,    0, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+
+     1246, 1246, 1246,    0,    0,    0, 1246, 1246, 1246, 1247,
+        0, 1247,    0, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
+     1247, 1247, 1247, 1247, 1247,    0,    0,    0, 1247, 1247,
+     1247, 1248,    0, 1248, 1248, 1248,    0, 1248, 1248, 1248,
+     1248, 1248, 1248, 1248, 1248, 1248, 1248,    0,    0,    0,
+     1248, 1248, 1248, 1249,    0, 1249, 1249, 1249, 1249, 1249,
+     1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
+     1249, 1249, 1249, 1249, 1249, 1250,    0, 1250, 1250, 1250,
+     1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
+     1250, 1250, 1250, 1250, 1250, 1250, 1250, 1251, 1251, 1251,
+
+     1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251,
+     1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1252,
+        0, 1252,    0,    0, 1252, 1252,    0,    0,    0, 1252,
+     1253,    0, 1253,    0,    0, 1253, 1253,    0,    0,    0,
+     1253, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+     1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+     1254, 1254, 1254, 1255, 1255, 1255, 1255, 1255, 1255, 1255,
+     1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255,
+     1255, 1255, 1255, 1255, 1255, 1256,    0, 1256, 1256, 1256,
+     1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
+
+     1256, 1256, 1256,    0, 1256, 1256, 1256, 1258,    0, 1258,
+        0,    0, 1258, 1258,    0,    0,    0, 1258,    0, 1258,
+     1259,    0, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
+     1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
+     1259, 1259, 1260,    0, 1260, 1260, 1260, 1260, 1260, 1260,
+     1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+     1260, 1260, 1260, 1260, 1261,    0, 1261, 1261, 1261, 1261,
+     1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261,
+     1261, 1261, 1261, 1261, 1261, 1261, 1262,    0, 1262, 1262,
+        0, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
+
+     1262, 1262,    0, 1262,    0, 1262, 1262, 1262, 1263, 1263,
+     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
+     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
+     1265,    0, 1265,    0,    0, 1265, 1265,    0,    0,    0,
+     1265, 1266,    0, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
+     1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
+     1266, 1266, 1266, 1267,    0, 1267, 1267, 1267, 1267, 1267,
+     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+     1267, 1267, 1267, 1267, 1267, 1268, 1268,    0,    0,    0,
+        0, 1268, 1268, 1269,    0,    0,    0, 1269,    0, 1269,
+
+        0,    0, 1269, 1269,    0,    0,    0, 1269, 1270,    0,
+     1270,    0, 1270, 1270, 1270,    0,    0,    0, 1270, 1271,
+        0, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
+     1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
+     1272, 1272, 1272, 1273,    0, 1273,    0,    0, 1273, 1273,
+        0,    0,    0, 1273, 1274,    0, 1274, 1274, 1274, 1274,
+     1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274,
+     1274, 1274, 1274, 1274, 1274, 1274, 1275,    0, 1275,    0,
+
+        0, 1275, 1275,    0,    0,    0, 1275, 1276, 1276, 1276,
+     1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,
+     1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1277,
+     1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
+     1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
+     1277, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2026,7 +2160,9 @@ static void markup_option(const char *name, int sense);
 
 
 
-#line 2021 "scan.c"
+/* Nick extra rules for action groups */
+
+#line 2157 "scan.c"
 
 #define INITIAL 0
 #define SECT2 1
@@ -2055,6 +2191,9 @@ static void markup_option(const char *name, int sense);
 #define CODE_COMMENT 24
 #define SECT3_NOESCAPE 25
 #define CHARACTER_CONSTANT 26
+#define BRACE_ACTION 27
+#define DOUBLE_QUOTED 28
+#define SINGLE_QUOTED 29
 
 #ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -2250,7 +2389,7 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
     
-#line 184 "scan.l"
+#line 186 "scan.l"
 
        static int bracelevel, didadef, indented_code;
        static int doing_rule_action = false;
@@ -2261,7 +2400,7 @@ YY_DECL
        char nmdef[MAXLINE];
 
 
-#line 2256 "scan.c"
+#line 2395 "scan.c"
 
        if ( !(yy_init) )
                {
@@ -2326,13 +2465,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 >= 1114 )
+                               if ( yy_current_state >= 1153 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 4511 );
+               while ( yy_base[yy_current_state] != 5052 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2358,39 +2497,39 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 195 "scan.l"
+#line 197 "scan.l"
 START_CODEBLOCK(true); piece_append("<AST_Text>");
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 196 "scan.l"
+#line 198 "scan.l"
 add_action("/*[""["); yy_push_state( COMMENT );
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 197 "scan.l"
+#line 199 "scan.l"
 yy_push_state( LINEDIR );
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 198 "scan.l"
+#line 200 "scan.l"
 return SCDECL;
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 199 "scan.l"
+#line 201 "scan.l"
 return XSCDECL;
        YY_BREAK
 case 6:
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 200 "scan.l"
+#line 202 "scan.l"
 START_CODEBLOCK(false); piece_flush(strlen(yytext)); piece_append("<AST_Text>");
        YY_BREAK
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 201 "scan.l"
+#line 203 "scan.l"
 {
                 brace_start_line = linenum;
                 ++linenum;
@@ -2401,17 +2540,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 209 "scan.l"
+#line 211 "scan.l"
 synerr( _("malformed '%top' directive") );
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 211 "scan.l"
+#line 213 "scan.l"
 /* discard */
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 213 "scan.l"
+#line 215 "scan.l"
 {
                        sectnum = 2;
                        bracelevel = 0;
@@ -2433,42 +2572,42 @@ YY_RULE_SETUP
 case 11:
 /* rule 11 can match eol */
 YY_RULE_SETUP
-#line 231 "scan.l"
+#line 233 "scan.l"
 yytext_is_array = false; ++linenum; piece_append("<AST_Section1_Options><AST_Section1_Options_Array>"); piece_flush(strlen(yytext) - 1); piece_append("</AST_Section1_Options_Array></AST_Section1_Options>"); 
        YY_BREAK
 case 12:
 /* rule 12 can match eol */
 YY_RULE_SETUP
-#line 232 "scan.l"
+#line 234 "scan.l"
 yytext_is_array = true; ++linenum; piece_append("<AST_Section1_Options><AST_Section1_Options_Array value=\"true\">"); piece_flush(strlen(yytext) - 1); piece_append("</AST_Section1_Options_Array></AST_Section1_Options>");
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 234 "scan.l"
+#line 236 "scan.l"
 BEGIN(OPTION); return TOK_OPTION;
        YY_BREAK
 case 14:
 /* rule 14 can match eol */
 YY_RULE_SETUP
-#line 236 "scan.l"
+#line 238 "scan.l"
 ++linenum; /* ignore */
        YY_BREAK
 case 15:
 /* rule 15 can match eol */
 YY_RULE_SETUP
-#line 237 "scan.l"
+#line 239 "scan.l"
 ++linenum;     /* ignore */
        YY_BREAK
 /* xgettext: no-c-format */
 case 16:
 /* rule 16 can match eol */
 YY_RULE_SETUP
-#line 240 "scan.l"
+#line 242 "scan.l"
 synerr( _( "unrecognized '%' directive" ) );
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 242 "scan.l"
+#line 244 "scan.l"
 {
                        if(yyleng < MAXLINE)
                         {
@@ -2486,51 +2625,51 @@ YY_RULE_SETUP
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 257 "scan.l"
+#line 259 "scan.l"
 RETURNNAME;
        YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-#line 258 "scan.l"
+#line 260 "scan.l"
 ++linenum; /* allows blank lines in section 1 */
        YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 259 "scan.l"
+#line 261 "scan.l"
 ACTION_ECHO; ++linenum; /* maybe end of comment line */
        YY_BREAK
 
 /* */
 case 21:
 YY_RULE_SETUP
-#line 264 "scan.l"
+#line 266 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 265 "scan.l"
+#line 267 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 23:
 /* rule 23 can match eol */
 YY_RULE_SETUP
-#line 267 "scan.l"
+#line 269 "scan.l"
 ++linenum; ACTION_ECHO;
        YY_BREAK
 
 
 case 24:
 YY_RULE_SETUP
-#line 270 "scan.l"
+#line 272 "scan.l"
 add_action("*/]""]"); yy_pop_state();
        YY_BREAK
 
 
 case 25:
 YY_RULE_SETUP
-#line 273 "scan.l"
+#line 275 "scan.l"
 ACTION_ECHO; yy_pop_state();
        YY_BREAK
 
@@ -2538,41 +2677,41 @@ ACTION_ECHO; yy_pop_state();
 /* This is the same as COMMENT, but is discarded rather than output. */
 case 26:
 YY_RULE_SETUP
-#line 278 "scan.l"
+#line 280 "scan.l"
 yy_pop_state();
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 279 "scan.l"
+#line 281 "scan.l"
 ;
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 280 "scan.l"
+#line 282 "scan.l"
 ;
        YY_BREAK
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-#line 281 "scan.l"
+#line 283 "scan.l"
 ++linenum;
        YY_BREAK
 
 
 case 30:
 YY_RULE_SETUP
-#line 285 "scan.l"
+#line 287 "scan.l"
 yy_pop_state();
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 286 "scan.l"
+#line 288 "scan.l"
 ;
        YY_BREAK
 case 32:
 /* rule 32 can match eol */
 YY_RULE_SETUP
-#line 287 "scan.l"
+#line 289 "scan.l"
 ++linenum;
        YY_BREAK
 
@@ -2580,17 +2719,17 @@ YY_RULE_SETUP
 case 33:
 /* rule 33 can match eol */
 YY_RULE_SETUP
-#line 291 "scan.l"
+#line 293 "scan.l"
 yy_pop_state();
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 292 "scan.l"
+#line 294 "scan.l"
 linenum = myctoi( yytext );
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 294 "scan.l"
+#line 296 "scan.l"
 {
                        free(infilename);
                        infilename = xstrdup(yytext + 1);
@@ -2599,19 +2738,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 299 "scan.l"
+#line 301 "scan.l"
 /* ignore spurious characters */
        YY_BREAK
 
 
 case 37:
 YY_RULE_SETUP
-#line 302 "scan.l"
+#line 304 "scan.l"
 ACTION_ECHO_QSTART;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 303 "scan.l"
+#line 305 "scan.l"
 ACTION_ECHO_QEND;
        YY_BREAK
 
@@ -2619,23 +2758,23 @@ ACTION_ECHO_QEND;
 case 39:
 /* rule 39 can match eol */
 YY_RULE_SETUP
-#line 307 "scan.l"
+#line 309 "scan.l"
 ++linenum; piece_append("</AST_Text>"); piece_flush(strlen(yytext)); END_CODEBLOCK;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 308 "scan.l"
+#line 310 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 309 "scan.l"
+#line 311 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 42:
 /* rule 42 can match eol */
 YY_RULE_SETUP
-#line 310 "scan.l"
+#line 312 "scan.l"
 {
                        ++linenum;
                        ACTION_ECHO;
@@ -2646,7 +2785,7 @@ YY_RULE_SETUP
 
 case 43:
 YY_RULE_SETUP
-#line 318 "scan.l"
+#line 320 "scan.l"
 {
                 if( --brace_depth == 0){
                     /* TODO: Matched. */
@@ -2657,7 +2796,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 326 "scan.l"
+#line 328 "scan.l"
 {
                 brace_depth++;
                 buf_strnappend(&top_buf, yytext, yyleng);
@@ -2666,7 +2805,7 @@ YY_RULE_SETUP
 case 45:
 /* rule 45 can match eol */
 YY_RULE_SETUP
-#line 331 "scan.l"
+#line 333 "scan.l"
 {
                 ++linenum;
                 buf_strnappend(&top_buf, yytext, yyleng);
@@ -2674,23 +2813,23 @@ YY_RULE_SETUP
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 336 "scan.l"
+#line 338 "scan.l"
 buf_strnappend(&top_buf, escaped_qstart, (int) strlen(escaped_qstart));
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 337 "scan.l"
+#line 339 "scan.l"
 buf_strnappend(&top_buf, escaped_qend, (int) strlen(escaped_qend));
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 338 "scan.l"
+#line 340 "scan.l"
 {
        buf_strnappend(&top_buf, yytext, yyleng);
     }
        YY_BREAK
 case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE):
-#line 342 "scan.l"
+#line 344 "scan.l"
 {
                 linenum = brace_start_line;
                 synerr(_("Unmatched '{'"));
@@ -2701,12 +2840,12 @@ case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE):
 
 case 49:
 YY_RULE_SETUP
-#line 351 "scan.l"
+#line 353 "scan.l"
 /* separates name and definition */
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 353 "scan.l"
+#line 355 "scan.l"
 {
                        if(yyleng < MAXLINE)
                         {
@@ -2732,7 +2871,7 @@ YY_RULE_SETUP
 case 51:
 /* rule 51 can match eol */
 YY_RULE_SETUP
-#line 375 "scan.l"
+#line 377 "scan.l"
 {
                        if ( ! didadef )
                                synerr( _( "incomplete name definition" ) );
@@ -2745,42 +2884,42 @@ YY_RULE_SETUP
 case 52:
 /* rule 52 can match eol */
 YY_RULE_SETUP
-#line 385 "scan.l"
+#line 387 "scan.l"
 ++linenum; BEGIN(INITIAL);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 386 "scan.l"
+#line 388 "scan.l"
 option_sense = true;
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 388 "scan.l"
+#line 390 "scan.l"
 return '=';
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 390 "scan.l"
+#line 392 "scan.l"
 option_sense = ! option_sense;
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 392 "scan.l"
+#line 394 "scan.l"
 csize = option_sense ? 128 : 256; markup_option("SevenBit", option_sense);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 393 "scan.l"
+#line 395 "scan.l"
 csize = option_sense ? 256 : 128; markup_option("SevenBit", !option_sense);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 395 "scan.l"
+#line 397 "scan.l"
 long_align = option_sense; markup_option("Align", option_sense);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 396 "scan.l"
+#line 398 "scan.l"
 {
                        ACTION_M4_IFDEF( "M4""_YY_ALWAYS_INTERACTIVE", option_sense );
             interactive = option_sense;
@@ -2789,27 +2928,27 @@ YY_RULE_SETUP
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 401 "scan.l"
+#line 403 "scan.l"
 yytext_is_array = option_sense; markup_option("Array", option_sense);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 402 "scan.l"
+#line 404 "scan.l"
 backing_up_report = option_sense; markup_option("Backup", option_sense);
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 403 "scan.l"
+#line 405 "scan.l"
 interactive = ! option_sense; markup_option("Interactive", !option_sense);
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 404 "scan.l"
+#line 406 "scan.l"
 bison_bridge_lval = option_sense; markup_option("BisonBridge", option_sense);
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 405 "scan.l"
+#line 407 "scan.l"
 { if((bison_bridge_lloc = option_sense))
                             bison_bridge_lval = true;
  markup_option("BisonLocations", option_sense);
@@ -2817,37 +2956,37 @@ YY_RULE_SETUP
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 409 "scan.l"
+#line 411 "scan.l"
 C_plus_plus = option_sense; markup_option("CPlusPlus", option_sense);
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 410 "scan.l"
+#line 412 "scan.l"
 sf_set_case_ins(!option_sense); markup_option("Caseless", !option_sense);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 411 "scan.l"
+#line 413 "scan.l"
 sf_set_case_ins(option_sense); markup_option("Caseless", option_sense);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 412 "scan.l"
+#line 414 "scan.l"
 ddebug = option_sense; markup_option("Debug", option_sense);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 413 "scan.l"
+#line 415 "scan.l"
 spprdflt = ! option_sense; markup_option("Default", option_sense);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 414 "scan.l"
+#line 416 "scan.l"
 useecs = option_sense; markup_option("ECS", option_sense);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 415 "scan.l"
+#line 417 "scan.l"
 {
                        useecs = usemecs = false;
                        use_read = fullspd = true;
@@ -2856,7 +2995,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 420 "scan.l"
+#line 422 "scan.l"
 {
                        useecs = usemecs = false;
                        use_read = fulltbl = true;
@@ -2865,32 +3004,32 @@ YY_RULE_SETUP
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 425 "scan.l"
+#line 427 "scan.l"
 ACTION_IFDEF("YY_NO_INPUT", ! option_sense); markup_option("Input", option_sense);
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 426 "scan.l"
+#line 428 "scan.l"
 interactive = option_sense; markup_option("Interactive", option_sense);
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 427 "scan.l"
+#line 429 "scan.l"
 lex_compat = option_sense; markup_option("LexCompat", option_sense);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 428 "scan.l"
+#line 430 "scan.l"
 posix_compat = option_sense; markup_option("PosixCompat", option_sense);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 429 "scan.l"
+#line 431 "scan.l"
 gen_line_dirs = option_sense; markup_option("Line", option_sense);
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 430 "scan.l"
+#line 432 "scan.l"
 {
                        ACTION_M4_IFDEF( "M4""_YY_MAIN", option_sense);
             /* Override yywrap */
@@ -2901,12 +3040,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 437 "scan.l"
+#line 439 "scan.l"
 usemecs = option_sense; markup_option("MetaECS", option_sense);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 438 "scan.l"
+#line 440 "scan.l"
 {
                        ACTION_M4_IFDEF( "M4""_YY_NEVER_INTERACTIVE", option_sense );
             interactive = !option_sense;
@@ -2915,237 +3054,237 @@ YY_RULE_SETUP
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 443 "scan.l"
+#line 445 "scan.l"
 performance_report += option_sense ? 1 : -1; markup_option("PerfReport", option_sense);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 444 "scan.l"
+#line 446 "scan.l"
 yytext_is_array = ! option_sense; markup_option("Array", !option_sense);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 445 "scan.l"
+#line 447 "scan.l"
 use_read = option_sense; markup_option("Read", option_sense);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 446 "scan.l"
+#line 448 "scan.l"
 reentrant = option_sense; markup_option("Reentrant", option_sense);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 447 "scan.l"
+#line 449 "scan.l"
 reject_really_used = option_sense; markup_option("Reject", option_sense);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 448 "scan.l"
+#line 450 "scan.l"
 ACTION_M4_IFDEF( "M4""_YY_STACK_USED", option_sense ); markup_option("Stack", option_sense);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 449 "scan.l"
+#line 451 "scan.l"
 do_stdinit = option_sense; markup_option("StdInit", option_sense);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 450 "scan.l"
+#line 452 "scan.l"
 use_stdout = option_sense; markup_option("StdOut", option_sense);
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 451 "scan.l"
+#line 453 "scan.l"
 ACTION_IFDEF("YY_NO_UNISTD_H", ! option_sense); markup_option("UniStd", option_sense);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 452 "scan.l"
+#line 454 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_UNPUT", ! option_sense); markup_option("Unput", option_sense);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 453 "scan.l"
+#line 455 "scan.l"
 printstats = option_sense; markup_option("Verbose", option_sense);
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 454 "scan.l"
+#line 456 "scan.l"
 nowarn = ! option_sense; markup_option("Warn", option_sense);
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 455 "scan.l"
+#line 457 "scan.l"
 do_yylineno = option_sense; ACTION_M4_IFDEF("M4""_YY_USE_LINENO", option_sense); markup_option("YYLineNo", option_sense);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 456 "scan.l"
+#line 458 "scan.l"
 yymore_really_used = option_sense; markup_option("YYMore", option_sense);
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 457 "scan.l"
+#line 459 "scan.l"
 do_yywrap = option_sense; markup_option("YYWrap", option_sense);
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 459 "scan.l"
+#line 461 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_PUSH_STATE", ! option_sense); markup_option("YYPushState", option_sense);
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 460 "scan.l"
+#line 462 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_POP_STATE", ! option_sense); markup_option("YYPopState", option_sense);
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 461 "scan.l"
+#line 463 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_TOP_STATE", ! option_sense); markup_option("YYTopState", option_sense);
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 463 "scan.l"
+#line 465 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BUFFER", ! option_sense); markup_option("YYScanBuffer", option_sense);
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 464 "scan.l"
+#line 466 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BYTES", ! option_sense); markup_option("YYScanBytes", option_sense);
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 465 "scan.l"
+#line 467 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SCAN_STRING", ! option_sense); markup_option("YYScanString", option_sense);
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 467 "scan.l"
+#line 469 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_FLEX_ALLOC", ! option_sense); markup_option("YYAlloc", option_sense);
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 468 "scan.l"
+#line 470 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_FLEX_REALLOC", ! option_sense); markup_option("YYRealloc", option_sense);
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 469 "scan.l"
+#line 471 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_FLEX_FREE", ! option_sense); markup_option("YYFree", option_sense);
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 471 "scan.l"
+#line 473 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_DEBUG", ! option_sense); markup_option("YYGetDebug", option_sense);
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 472 "scan.l"
+#line 474 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_DEBUG", ! option_sense); markup_option("YYSetDebug", option_sense);
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 473 "scan.l"
+#line 475 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_EXTRA", ! option_sense); markup_option("YYGetExtra", option_sense);
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 474 "scan.l"
+#line 476 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_EXTRA", ! option_sense); markup_option("YYSetExtra", option_sense);
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 475 "scan.l"
+#line 477 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LENG", ! option_sense); markup_option("YYGetLeng", option_sense);
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 476 "scan.l"
+#line 478 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_TEXT", ! option_sense); markup_option("YYGetText", option_sense);
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 477 "scan.l"
+#line 479 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LINENO", ! option_sense); markup_option("YYGetLineNo", option_sense);
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 478 "scan.l"
+#line 480 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_LINENO", ! option_sense); markup_option("YYSetLineNo", option_sense);
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 479 "scan.l"
+#line 481 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_IN", ! option_sense); markup_option("YYGetIn", option_sense);
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 480 "scan.l"
+#line 482 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_IN", ! option_sense); markup_option("YYSetIn", option_sense);
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 481 "scan.l"
+#line 483 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_OUT", ! option_sense); markup_option("YYGetOut", option_sense);
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 482 "scan.l"
+#line 484 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_OUT", ! option_sense); markup_option("YYSetOut", option_sense);
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 483 "scan.l"
+#line 485 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LVAL", ! option_sense); markup_option("YYGetLVal", option_sense);
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 484 "scan.l"
+#line 486 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_LVAL", ! option_sense); markup_option("YYSetLVal", option_sense);
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 485 "scan.l"
+#line 487 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LLOC", ! option_sense); markup_option("YYGetLLoc", option_sense);
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 486 "scan.l"
+#line 488 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_LLOC", ! option_sense); markup_option("YYSetLLoc", option_sense);
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 488 "scan.l"
+#line 490 "scan.l"
 return TOK_EXTRA_TYPE;
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 489 "scan.l"
+#line 491 "scan.l"
 return TOK_OUTFILE;
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 490 "scan.l"
+#line 492 "scan.l"
 return TOK_PREFIX;
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 491 "scan.l"
+#line 493 "scan.l"
 return TOK_YYCLASS;
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 492 "scan.l"
+#line 494 "scan.l"
 return TOK_HEADER_FILE;
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 493 "scan.l"
+#line 495 "scan.l"
 return TOK_TABLES_FILE;
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 494 "scan.l"
+#line 496 "scan.l"
 {
                     tablesverify = option_sense;
                     if(!tablesext && option_sense)
@@ -3155,7 +3294,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 502 "scan.l"
+#line 504 "scan.l"
 {
                        if(yyleng-1 < MAXLINE)
                         {
@@ -3181,7 +3320,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 525 "scan.l"
+#line 527 "scan.l"
 {
                        format_synerr( _( "unrecognized %%option: %s" ),
                                yytext );
@@ -3192,28 +3331,28 @@ YY_RULE_SETUP
 case 130:
 /* rule 130 can match eol */
 YY_RULE_SETUP
-#line 532 "scan.l"
+#line 534 "scan.l"
 ++linenum; BEGIN(INITIAL);
        YY_BREAK
 
 case 131:
 YY_RULE_SETUP
-#line 536 "scan.l"
+#line 538 "scan.l"
 ++bracelevel; yyless( 2 );     /* eat only %{ */
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 537 "scan.l"
+#line 539 "scan.l"
 --bracelevel; yyless( 2 );     /* eat only %} */
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 539 "scan.l"
+#line 541 "scan.l"
 START_CODEBLOCK(true); piece_append("<AST_Text>"); /* indented code in prolog */
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 541 "scan.l"
+#line 543 "scan.l"
 {
         /* non-indented code */
                if ( bracelevel <= 0 ) {
@@ -3230,17 +3369,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 555 "scan.l"
+#line 557 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 136:
 /* rule 136 can match eol */
 YY_RULE_SETUP
-#line 556 "scan.l"
+#line 558 "scan.l"
 ++linenum; ACTION_ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT2PROLOG):
-#line 558 "scan.l"
+#line 560 "scan.l"
 {
                        mark_prolog();
                        sectnum = 0;
@@ -3259,12 +3398,12 @@ case YY_STATE_EOF(SECT2PROLOG):
 case 137:
 /* rule 137 can match eol */
 YY_RULE_SETUP
-#line 573 "scan.l"
+#line 575 "scan.l"
 ++linenum; /* allow blank lines in section 2 */
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 575 "scan.l"
+#line 577 "scan.l"
 {
                        indented_code = false;
                        doing_codeblock = true;
@@ -3278,7 +3417,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 586 "scan.l"
+#line 588 "scan.l"
 {
                         /* Allow "<" to appear in (?x) patterns. */
                         if (!sf_skip_ws())
@@ -3288,12 +3427,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 592 "scan.l"
+#line 594 "scan.l"
 return '^';
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 593 "scan.l"
+#line 595 "scan.l"
 BEGIN(QUOTE); return '"';
        YY_BREAK
 case 142:
@@ -3301,7 +3440,7 @@ case 142:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 594 "scan.l"
+#line 596 "scan.l"
 {
                        BEGIN(NUM);
                        if ( lex_compat || posix_compat )
@@ -3316,12 +3455,12 @@ case 143:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 601 "scan.l"
+#line 603 "scan.l"
 return '$';
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 603 "scan.l"
+#line 605 "scan.l"
 {
                        bracelevel = 1;
                        BEGIN(PERCENT_BRACE_ACTION);
@@ -3353,7 +3492,7 @@ YY_RULE_SETUP
 case 145:
 /* rule 145 can match eol */
 YY_RULE_SETUP
-#line 630 "scan.l"
+#line 632 "scan.l"
 {
                         if (sf_skip_ws()){
                             /* We're in the middle of a (?x: ) pattern. */
@@ -3384,7 +3523,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 658 "scan.l"
+#line 660 "scan.l"
 {
 
                 if (sf_skip_ws()){
@@ -3401,12 +3540,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 672 "scan.l"
+#line 674 "scan.l"
 /* allow indented rules */ ;
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 674 "scan.l"
+#line 676 "scan.l"
 {
             if (sf_skip_ws()){
                 /* We're in the middle of a (?x: ) pattern. */
@@ -3440,7 +3579,7 @@ YY_RULE_SETUP
 case 149:
 /* rule 149 can match eol */
 YY_RULE_SETUP
-#line 704 "scan.l"
+#line 706 "scan.l"
 {
             if (sf_skip_ws()){
                 /* We're in the middle of a (?x: ) pattern. */
@@ -3474,15 +3613,15 @@ YY_RULE_SETUP
                        }
        YY_BREAK
 case 150:
-#line 737 "scan.l"
+#line 739 "scan.l"
 case 151:
 YY_RULE_SETUP
-#line 737 "scan.l"
+#line 739 "scan.l"
 return EOF_OP;
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 739 "scan.l"
+#line 741 "scan.l"
 {
                        sectnum = 3;
                        BEGIN(no_section3_escape ? SECT3_NOESCAPE : SECT3);
@@ -3502,7 +3641,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 756 "scan.l"
+#line 758 "scan.l"
 {
                        int cclval;
 
@@ -3552,12 +3691,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 802 "scan.l"
+#line 804 "scan.l"
 return CCL_OP_DIFF;
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 803 "scan.l"
+#line 805 "scan.l"
 return CCL_OP_UNION;
        YY_BREAK
 /* Check for :space: at the end of the rule so we don't
@@ -3567,7 +3706,7 @@ return CCL_OP_UNION;
 case 156:
 /* rule 156 can match eol */
 YY_RULE_SETUP
-#line 810 "scan.l"
+#line 812 "scan.l"
 {
                        char *nmdefptr;
             int end_is_ws, end_ch;
@@ -3615,6 +3754,10 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
                                        {
                                        unput(')');
                                        PUT_BACK_STRING(nmdefptr, 0);
+ if (!lex_compat && !posix_compat) {
+  unput(':');
+  unput('?');
+ }
                                        unput('(');
                                        }
                                }
@@ -3622,7 +3765,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 862 "scan.l"
+#line 868 "scan.l"
 {
                     if (sf_skip_ws())
                         yy_push_state(COMMENT_DISCARD);
@@ -3635,7 +3778,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 872 "scan.l"
+#line 878 "scan.l"
 {
                     if (lex_compat || posix_compat){
                         /* Push back the "?#" and treat it like a normal parens. */
@@ -3649,7 +3792,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 882 "scan.l"
+#line 888 "scan.l"
 {
                     sf_push();
                     if (lex_compat || posix_compat)
@@ -3662,12 +3805,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 891 "scan.l"
+#line 897 "scan.l"
 sf_push(); return '(';
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 892 "scan.l"
+#line 898 "scan.l"
 {
                     if (_sf_top_ix > 0) {
                         sf_pop();
@@ -3678,17 +3821,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 900 "scan.l"
+#line 906 "scan.l"
 return (unsigned char) yytext[0];
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 901 "scan.l"
+#line 907 "scan.l"
 RETURNCHAR;
        YY_BREAK
 /* Nick added this rule for consistency with rest of scanner */
 case YY_STATE_EOF(SECT2):
-#line 904 "scan.l"
+#line 910 "scan.l"
 {
                        sectnum = 0;
 #if 1
@@ -3706,17 +3849,17 @@ case YY_STATE_EOF(SECT2):
 case 164:
 /* rule 164 can match eol */
 YY_RULE_SETUP
-#line 919 "scan.l"
+#line 925 "scan.l"
 ++linenum;     /* Allow blank lines & continuations */
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 920 "scan.l"
+#line 926 "scan.l"
 return (unsigned char) yytext[0];
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 921 "scan.l"
+#line 927 "scan.l"
 BEGIN(SECT2); return '>';
        YY_BREAK
 case 167:
@@ -3724,17 +3867,17 @@ case 167:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 922 "scan.l"
+#line 928 "scan.l"
 BEGIN(CARETISBOL); return '>';
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 923 "scan.l"
+#line 929 "scan.l"
 RETURNNAME;
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 924 "scan.l"
+#line 930 "scan.l"
 {
                        format_synerr( _( "bad <start condition>: %s" ),
                                yytext );
@@ -3743,24 +3886,24 @@ YY_RULE_SETUP
 
 case 170:
 YY_RULE_SETUP
-#line 930 "scan.l"
+#line 936 "scan.l"
 BEGIN(SECT2); return '^';
        YY_BREAK
 
 case 171:
 YY_RULE_SETUP
-#line 934 "scan.l"
+#line 940 "scan.l"
 RETURNCHAR;
        YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 935 "scan.l"
+#line 941 "scan.l"
 BEGIN(SECT2); return '"';
        YY_BREAK
 case 173:
 /* rule 173 can match eol */
 YY_RULE_SETUP
-#line 937 "scan.l"
+#line 943 "scan.l"
 {
                        synerr( _( "missing quote" ) );
                        BEGIN(SECT2);
@@ -3770,100 +3913,135 @@ YY_RULE_SETUP
        YY_BREAK
 
 
+/* Nick extra rules for named groups */
 case 174:
-YY_RULE_SETUP
-#line 946 "scan.l"
-BEGIN(SECT2);
-       YY_BREAK
+#line 954 "scan.l"
 case 175:
 YY_RULE_SETUP
-#line 947 "scan.l"
-BEGIN(GROUP_MINUS_PARAMS);
+#line 954 "scan.l"
+{
+                BEGIN(SECT2);
+#if 1
+ /* here we know yytext is not used by parser, so OK to destroy it */
+ piece_flush(1);
+ piece_pack();
+ piece_append("<RegexGroupName_Text>");
+ piece_flush(strlen(yytext) - 1);
+ piece_append("</RegexGroupName_Text>");
+ piece_pack();
+ piece_flush(1);
+ return ~NAME;
+#else
+                return NAME;
+#endif
+            }
        YY_BREAK
+/* Nick extra rules for action groups */
 case 176:
 YY_RULE_SETUP
-#line 948 "scan.l"
-sf_set_case_ins(1);
-       YY_BREAK
+#line 971 "scan.l"
+{
+                BEGIN(SECT2);
+                yy_push_state(BRACE_ACTION);
+               bracelevel = 1;
+ piece_flush(strlen(yytext));
+ piece_append("<RegexGroupAction_Text>");
+            }
+       YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 949 "scan.l"
-sf_set_dot_all(1);
+#line 978 "scan.l"
+BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 950 "scan.l"
+#line 979 "scan.l"
+BEGIN(GROUP_MINUS_PARAMS);
+       YY_BREAK
+case 179:
+YY_RULE_SETUP
+#line 980 "scan.l"
+sf_set_case_ins(1);
+       YY_BREAK
+case 180:
+YY_RULE_SETUP
+#line 981 "scan.l"
+sf_set_dot_all(1);
+       YY_BREAK
+case 181:
+YY_RULE_SETUP
+#line 982 "scan.l"
 sf_set_skip_ws(1);
        YY_BREAK
 
 
-case 179:
+case 182:
 YY_RULE_SETUP
-#line 953 "scan.l"
-BEGIN(SECT2);
+#line 985 "scan.l"
+BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
        YY_BREAK
-case 180:
+case 183:
 YY_RULE_SETUP
-#line 954 "scan.l"
+#line 986 "scan.l"
 sf_set_case_ins(0);
        YY_BREAK
-case 181:
+case 184:
 YY_RULE_SETUP
-#line 955 "scan.l"
+#line 987 "scan.l"
 sf_set_dot_all(0);
        YY_BREAK
-case 182:
+case 185:
 YY_RULE_SETUP
-#line 956 "scan.l"
+#line 988 "scan.l"
 sf_set_skip_ws(0);
        YY_BREAK
 
 
-case 183:
+case 186:
 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 960 "scan.l"
+#line 992 "scan.l"
 BEGIN(CCL); return '^';
        YY_BREAK
-case 184:
+case 187:
 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 961 "scan.l"
+#line 993 "scan.l"
 return '^';
        YY_BREAK
-case 185:
+case 188:
 YY_RULE_SETUP
-#line 962 "scan.l"
+#line 994 "scan.l"
 BEGIN(CCL); RETURNCHAR;
        YY_BREAK
 
 
-case 186:
+case 189:
 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 966 "scan.l"
+#line 998 "scan.l"
 return '-';
        YY_BREAK
-case 187:
+case 190:
 YY_RULE_SETUP
-#line 967 "scan.l"
+#line 999 "scan.l"
 RETURNCHAR;
        YY_BREAK
-case 188:
+case 191:
 YY_RULE_SETUP
-#line 968 "scan.l"
+#line 1000 "scan.l"
 BEGIN(SECT2); return ']';
        YY_BREAK
-case 189:
-/* rule 189 can match eol */
+case 192:
+/* rule 192 can match eol */
 YY_RULE_SETUP
-#line 969 "scan.l"
+#line 1001 "scan.l"
 {
                        synerr( _( "bad character class" ) );
                        BEGIN(SECT2);
@@ -3872,129 +4050,129 @@ YY_RULE_SETUP
        YY_BREAK
 
 
-case 190:
+case 193:
 YY_RULE_SETUP
-#line 977 "scan.l"
+#line 1009 "scan.l"
 BEGIN(CCL); return CCE_ALNUM;
        YY_BREAK
-case 191:
+case 194:
 YY_RULE_SETUP
-#line 978 "scan.l"
+#line 1010 "scan.l"
 BEGIN(CCL); return CCE_ALPHA;
        YY_BREAK
-case 192:
+case 195:
 YY_RULE_SETUP
-#line 979 "scan.l"
+#line 1011 "scan.l"
 BEGIN(CCL); return CCE_BLANK;
        YY_BREAK
-case 193:
+case 196:
 YY_RULE_SETUP
-#line 980 "scan.l"
+#line 1012 "scan.l"
 BEGIN(CCL); return CCE_CNTRL;
        YY_BREAK
-case 194:
+case 197:
 YY_RULE_SETUP
-#line 981 "scan.l"
+#line 1013 "scan.l"
 BEGIN(CCL); return CCE_DIGIT;
        YY_BREAK
-case 195:
+case 198:
 YY_RULE_SETUP
-#line 982 "scan.l"
+#line 1014 "scan.l"
 BEGIN(CCL); return CCE_GRAPH;
        YY_BREAK
-case 196:
+case 199:
 YY_RULE_SETUP
-#line 983 "scan.l"
+#line 1015 "scan.l"
 BEGIN(CCL); return CCE_LOWER;
        YY_BREAK
-case 197:
+case 200:
 YY_RULE_SETUP
-#line 984 "scan.l"
+#line 1016 "scan.l"
 BEGIN(CCL); return CCE_PRINT;
        YY_BREAK
-case 198:
+case 201:
 YY_RULE_SETUP
-#line 985 "scan.l"
+#line 1017 "scan.l"
 BEGIN(CCL); return CCE_PUNCT;
        YY_BREAK
-case 199:
+case 202:
 YY_RULE_SETUP
-#line 986 "scan.l"
+#line 1018 "scan.l"
 BEGIN(CCL); return CCE_SPACE;
        YY_BREAK
-case 200:
+case 203:
 YY_RULE_SETUP
-#line 987 "scan.l"
+#line 1019 "scan.l"
 BEGIN(CCL); return CCE_UPPER;
        YY_BREAK
-case 201:
+case 204:
 YY_RULE_SETUP
-#line 988 "scan.l"
+#line 1020 "scan.l"
 BEGIN(CCL); return CCE_XDIGIT;
        YY_BREAK
-case 202:
+case 205:
 YY_RULE_SETUP
-#line 990 "scan.l"
+#line 1022 "scan.l"
 BEGIN(CCL); return CCE_NEG_ALNUM;
        YY_BREAK
-case 203:
+case 206:
 YY_RULE_SETUP
-#line 991 "scan.l"
+#line 1023 "scan.l"
 BEGIN(CCL); return CCE_NEG_ALPHA;
        YY_BREAK
-case 204:
+case 207:
 YY_RULE_SETUP
-#line 992 "scan.l"
+#line 1024 "scan.l"
 BEGIN(CCL); return CCE_NEG_BLANK;
        YY_BREAK
-case 205:
+case 208:
 YY_RULE_SETUP
-#line 993 "scan.l"
+#line 1025 "scan.l"
 BEGIN(CCL); return CCE_NEG_CNTRL;
        YY_BREAK
-case 206:
+case 209:
 YY_RULE_SETUP
-#line 994 "scan.l"
+#line 1026 "scan.l"
 BEGIN(CCL); return CCE_NEG_DIGIT;
        YY_BREAK
-case 207:
+case 210:
 YY_RULE_SETUP
-#line 995 "scan.l"
+#line 1027 "scan.l"
 BEGIN(CCL); return CCE_NEG_GRAPH;
        YY_BREAK
-case 208:
+case 211:
 YY_RULE_SETUP
-#line 996 "scan.l"
+#line 1028 "scan.l"
 BEGIN(CCL); return CCE_NEG_LOWER;
        YY_BREAK
-case 209:
+case 212:
 YY_RULE_SETUP
-#line 997 "scan.l"
+#line 1029 "scan.l"
 BEGIN(CCL); return CCE_NEG_PRINT;
        YY_BREAK
-case 210:
+case 213:
 YY_RULE_SETUP
-#line 998 "scan.l"
+#line 1030 "scan.l"
 BEGIN(CCL); return CCE_NEG_PUNCT;
        YY_BREAK
-case 211:
+case 214:
 YY_RULE_SETUP
-#line 999 "scan.l"
+#line 1031 "scan.l"
 BEGIN(CCL); return CCE_NEG_SPACE;
        YY_BREAK
-case 212:
+case 215:
 YY_RULE_SETUP
-#line 1000 "scan.l"
+#line 1032 "scan.l"
 BEGIN(CCL); return CCE_NEG_UPPER;
        YY_BREAK
-case 213:
+case 216:
 YY_RULE_SETUP
-#line 1001 "scan.l"
+#line 1033 "scan.l"
 BEGIN(CCL); return CCE_NEG_XDIGIT;
        YY_BREAK
-case 214:
+case 217:
 YY_RULE_SETUP
-#line 1002 "scan.l"
+#line 1034 "scan.l"
 {
                        format_synerr(
                                _( "bad character class expression: %s" ),
@@ -4004,22 +4182,22 @@ YY_RULE_SETUP
        YY_BREAK
 
 
-case 215:
+case 218:
 YY_RULE_SETUP
-#line 1011 "scan.l"
+#line 1043 "scan.l"
 {
                        yylval = myctoi( yytext );
                        return NUMBER;
                        }
        YY_BREAK
-case 216:
+case 219:
 YY_RULE_SETUP
-#line 1016 "scan.l"
+#line 1048 "scan.l"
 return ',';
        YY_BREAK
-case 217:
+case 220:
 YY_RULE_SETUP
-#line 1017 "scan.l"
+#line 1049 "scan.l"
 {
                        BEGIN(SECT2);
                        if ( lex_compat || posix_compat )
@@ -4028,19 +4206,19 @@ YY_RULE_SETUP
                                return END_REPEAT_FLEX;
                        }
        YY_BREAK
-case 218:
+case 221:
 YY_RULE_SETUP
-#line 1025 "scan.l"
+#line 1057 "scan.l"
 {
                        synerr( _( "bad character inside {}'s" ) );
                        BEGIN(SECT2);
                        return '}';
                        }
        YY_BREAK
-case 219:
-/* rule 219 can match eol */
+case 222:
+/* rule 222 can match eol */
 YY_RULE_SETUP
-#line 1031 "scan.l"
+#line 1063 "scan.l"
 {
                        synerr( _( "missing }" ) );
                        BEGIN(SECT2);
@@ -4050,43 +4228,43 @@ YY_RULE_SETUP
        YY_BREAK
 
 
-case 220:
+case 223:
 YY_RULE_SETUP
-#line 1041 "scan.l"
+#line 1073 "scan.l"
 bracelevel = 0; piece_append("</AST_Text>");
        YY_BREAK
-case 221:
+case 224:
 YY_RULE_SETUP
-#line 1043 "scan.l"
+#line 1075 "scan.l"
 ACTION_ECHO; yy_push_state( CODE_COMMENT );
        YY_BREAK
 
-case 222:
+case 225:
 YY_RULE_SETUP
-#line 1046 "scan.l"
+#line 1078 "scan.l"
 {
             ACTION_ECHO;
             CHECK_REJECT(yytext);
         }
        YY_BREAK
-case 223:
+case 226:
 YY_RULE_SETUP
-#line 1050 "scan.l"
+#line 1082 "scan.l"
 {
             ACTION_ECHO;
             CHECK_YYMORE(yytext);
         }
        YY_BREAK
 
-case 224:
+case 227:
 YY_RULE_SETUP
-#line 1056 "scan.l"
+#line 1088 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 225:
-/* rule 225 can match eol */
+case 228:
+/* rule 228 can match eol */
 YY_RULE_SETUP
-#line 1057 "scan.l"
+#line 1089 "scan.l"
 {
                ++linenum;
                ACTION_ECHO;
@@ -4107,45 +4285,45 @@ YY_RULE_SETUP
 
 /* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */
 
-case 226:
+case 229:
 YY_RULE_SETUP
-#line 1078 "scan.l"
+#line 1110 "scan.l"
 ACTION_ECHO; ++bracelevel;
        YY_BREAK
-case 227:
+case 230:
 YY_RULE_SETUP
-#line 1079 "scan.l"
+#line 1111 "scan.l"
 ACTION_ECHO; --bracelevel;
        YY_BREAK
-case 228:
+case 231:
 YY_RULE_SETUP
-#line 1080 "scan.l"
+#line 1112 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 229:
+case 232:
 YY_RULE_SETUP
-#line 1081 "scan.l"
+#line 1113 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 230:
+case 233:
 YY_RULE_SETUP
-#line 1082 "scan.l"
+#line 1114 "scan.l"
 ACTION_ECHO; /* character constant */
        YY_BREAK
-case 231:
+case 234:
 YY_RULE_SETUP
-#line 1083 "scan.l"
+#line 1115 "scan.l"
 ACTION_ECHO; BEGIN(CHARACTER_CONSTANT);
        YY_BREAK
-case 232:
+case 235:
 YY_RULE_SETUP
-#line 1084 "scan.l"
+#line 1116 "scan.l"
 ACTION_ECHO; BEGIN(ACTION_STRING);
        YY_BREAK
-case 233:
-/* rule 233 can match eol */
+case 236:
+/* rule 236 can match eol */
 YY_RULE_SETUP
-#line 1085 "scan.l"
+#line 1117 "scan.l"
 {
                 ++linenum;
                 ACTION_ECHO;
@@ -4162,68 +4340,73 @@ YY_RULE_SETUP
                 }
              }
        YY_BREAK
-case 234:
+case 237:
 YY_RULE_SETUP
-#line 1100 "scan.l"
+#line 1132 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 
 
-case 235:
+case 238:
 YY_RULE_SETUP
-#line 1104 "scan.l"
+#line 1136 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 236:
+case 239:
 YY_RULE_SETUP
-#line 1105 "scan.l"
+#line 1137 "scan.l"
 ACTION_ECHO; BEGIN(ACTION);
        YY_BREAK
 
 
-case 237:
+case 240:
 YY_RULE_SETUP
-#line 1108 "scan.l"
+#line 1140 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 238:
+case 241:
 YY_RULE_SETUP
-#line 1109 "scan.l"
+#line 1141 "scan.l"
 ACTION_ECHO; BEGIN(ACTION);
        YY_BREAK
 
 
-case 239:
-/* rule 239 can match eol */
+case 242:
+/* rule 242 can match eol */
 YY_RULE_SETUP
-#line 1112 "scan.l"
+#line 1144 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 240:
-/* rule 240 can match eol */
+case 243:
+/* rule 243 can match eol */
 YY_RULE_SETUP
-#line 1113 "scan.l"
+#line 1145 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 241:
-/* rule 241 can match eol */
+case 244:
+/* rule 244 can match eol */
 YY_RULE_SETUP
-#line 1114 "scan.l"
+#line 1146 "scan.l"
 ++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); piece_flush(strlen(yytext)); if (doing_rule_action) markup_action("</AST_Text></AST_Section2_Rule_Action>"); } else { BEGIN(ACTION); }
        YY_BREAK
-case 242:
+case 245:
 YY_RULE_SETUP
-#line 1115 "scan.l"
+#line 1147 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 
+/* Nick extra rules for action groups */
+/* Nick added: BRACE_ACTION,DOUBLE_QUOTED,SINGLE_QUOTED */
 case YY_STATE_EOF(COMMENT):
 case YY_STATE_EOF(CODE_COMMENT):
 case YY_STATE_EOF(COMMENT_DISCARD):
 case YY_STATE_EOF(ACTION):
 case YY_STATE_EOF(ACTION_STRING):
 case YY_STATE_EOF(CHARACTER_CONSTANT):
-#line 1118 "scan.l"
+case YY_STATE_EOF(BRACE_ACTION):
+case YY_STATE_EOF(DOUBLE_QUOTED):
+case YY_STATE_EOF(SINGLE_QUOTED):
+#line 1152 "scan.l"
 {
                        synerr( _( "EOF encountered inside an action" ) );
                        yyterminate();
@@ -4232,15 +4415,15 @@ case YY_STATE_EOF(CHARACTER_CONSTANT):
 case YY_STATE_EOF(EXTENDED_COMMENT):
 case YY_STATE_EOF(GROUP_WITH_PARAMS):
 case YY_STATE_EOF(GROUP_MINUS_PARAMS):
-#line 1123 "scan.l"
+#line 1157 "scan.l"
 {
                        synerr( _( "EOF encountered inside pattern" ) );
                        yyterminate();
                        }
        YY_BREAK
-case 243:
+case 246:
 YY_RULE_SETUP
-#line 1128 "scan.l"
+#line 1162 "scan.l"
 {
                        yylval = myesc( (unsigned char *) yytext );
 
@@ -4251,29 +4434,29 @@ YY_RULE_SETUP
                        }
        YY_BREAK
 
-case 244:
+case 247:
 YY_RULE_SETUP
-#line 1138 "scan.l"
+#line 1172 "scan.l"
 fputs(escaped_qstart, yyout);
        YY_BREAK
-case 245:
+case 248:
 YY_RULE_SETUP
-#line 1139 "scan.l"
+#line 1173 "scan.l"
 fputs(escaped_qend, yyout);
        YY_BREAK
-case 246:
-/* rule 246 can match eol */
+case 249:
+/* rule 249 can match eol */
 YY_RULE_SETUP
-#line 1140 "scan.l"
+#line 1174 "scan.l"
 ECHO;
        YY_BREAK
-case 247:
+case 250:
 YY_RULE_SETUP
-#line 1141 "scan.l"
+#line 1175 "scan.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT3):
-#line 1142 "scan.l"
+#line 1176 "scan.l"
 {
         sectnum = 0;
 #if 1
@@ -4288,29 +4471,29 @@ case YY_STATE_EOF(SECT3):
        YY_BREAK
 
 
-case 248:
+case 251:
 YY_RULE_SETUP
-#line 1155 "scan.l"
+#line 1189 "scan.l"
 fprintf(yyout, "[""[%s]""]", escaped_qstart);
        YY_BREAK
-case 249:
+case 252:
 YY_RULE_SETUP
-#line 1156 "scan.l"
+#line 1190 "scan.l"
 fprintf(yyout, "[""[%s]""]", escaped_qend);
        YY_BREAK
-case 250:
-/* rule 250 can match eol */
+case 253:
+/* rule 253 can match eol */
 YY_RULE_SETUP
-#line 1157 "scan.l"
+#line 1191 "scan.l"
 ECHO;
        YY_BREAK
-case 251:
+case 254:
 YY_RULE_SETUP
-#line 1158 "scan.l"
+#line 1192 "scan.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT3_NOESCAPE):
-#line 1159 "scan.l"
+#line 1193 "scan.l"
 {
        sectnum = 0;
 #if 1
@@ -4324,18 +4507,103 @@ case YY_STATE_EOF(SECT3_NOESCAPE):
     }
        YY_BREAK
 
-case 252:
-/* rule 252 can match eol */
+/* Nick extra rules for action groups */
+
+case 255:
+YY_RULE_SETUP
+#line 1208 "scan.l"
+++bracelevel;
+       YY_BREAK
+case 256:
+YY_RULE_SETUP
+#line 1209 "scan.l"
+{
+                           if (--bracelevel == 0) {
+                               yy_pop_state();
+ piece_append("</RegexGroupAction_Text>");
+                               return '{';
+                           }
+                       }
+       YY_BREAK
+case 257:
+YY_RULE_SETUP
+#line 1216 "scan.l"
+yy_push_state(SINGLE_QUOTED);
+       YY_BREAK
+case 258:
+YY_RULE_SETUP
+#line 1217 "scan.l"
+yy_push_state(DOUBLE_QUOTED);
+       YY_BREAK
+case 259:
+YY_RULE_SETUP
+#line 1218 "scan.l"
+yy_push_state(COMMENT_DISCARD);
+       YY_BREAK
+
+
+case 260:
 YY_RULE_SETUP
-#line 1171 "scan.l"
+#line 1221 "scan.l"
+
+       YY_BREAK
+case 261:
+YY_RULE_SETUP
+#line 1222 "scan.l"
+yy_pop_state();
+       YY_BREAK
+
+
+case 262:
+YY_RULE_SETUP
+#line 1225 "scan.l"
+
+       YY_BREAK
+case 263:
+YY_RULE_SETUP
+#line 1226 "scan.l"
+yy_pop_state();
+       YY_BREAK
+
+
+case 264:
+/* rule 264 can match eol */
+YY_RULE_SETUP
+#line 1229 "scan.l"
+
+       YY_BREAK
+case 265:
+/* rule 265 can match eol */
+YY_RULE_SETUP
+#line 1230 "scan.l"
+
+       YY_BREAK
+
+
+case 266:
+/* rule 266 can match eol */
+YY_RULE_SETUP
+#line 1233 "scan.l"
+++linenum;
+       YY_BREAK
+case 267:
+YY_RULE_SETUP
+#line 1234 "scan.l"
+
+       YY_BREAK
+
+case 268:
+/* rule 268 can match eol */
+YY_RULE_SETUP
+#line 1237 "scan.l"
 format_synerr( _( "bad character: %s" ), yytext );
        YY_BREAK
-case 253:
+case 269:
 YY_RULE_SETUP
-#line 1173 "scan.l"
+#line 1239 "scan.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 4325 "scan.c"
+#line 4593 "scan.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(CODEBLOCK):
 case YY_STATE_EOF(PICKUPDEF):
@@ -4640,7 +4908,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 >= 1114 )
+                       if ( yy_current_state >= 1153 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4668,11 +4936,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 >= 1114 )
+               if ( yy_current_state >= 1153 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1113);
+       yy_is_jam = (yy_current_state == 1152);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5388,7 +5656,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 1173 "scan.l"
+#line 1239 "scan.l"
 
 
 
index a3563e9..fdee5fd 100644 (file)
@@ -158,6 +158,8 @@ static void markup_option(const char *name, int sense);
 %x COMMENT_DISCARD CODE_COMMENT
 %x SECT3_NOESCAPE
 %x CHARACTER_CONSTANT
+/* Nick extra rules for action groups */
+%x BRACE_ACTION DOUBLE_QUOTED SINGLE_QUOTED
 
 WS             [[:blank:]]+
 OPTWS          [[:blank:]]*
@@ -854,6 +856,10 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
                                        {
                                        unput(')');
                                        PUT_BACK_STRING(nmdefptr, 0);
+ if (!lex_compat && !posix_compat) {
+  unput(':');
+  unput('?');
+ }
                                        unput('(');
                                        }
                                }
@@ -943,14 +949,40 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
 }
 
 <GROUP_WITH_PARAMS>{
-    ":"     BEGIN(SECT2);
+    /* Nick extra rules for named groups */
+    "'"{NAME}"'" |
+    "<"{NAME}">" {
+                BEGIN(SECT2);
+#if 1
+ /* here we know yytext is not used by parser, so OK to destroy it */
+ piece_flush(1);
+ piece_pack();
+ piece_append("<RegexGroupName_Text>");
+ piece_flush(strlen(yytext) - 1);
+ piece_append("</RegexGroupName_Text>");
+ piece_pack();
+ piece_flush(1);
+ return ~NAME;
+#else
+                return NAME;
+#endif
+            }
+    /* Nick extra rules for action groups */
+    "{" {
+                BEGIN(SECT2);
+                yy_push_state(BRACE_ACTION);
+               bracelevel = 1;
+ piece_flush(strlen(yytext));
+ piece_append("<RegexGroupAction_Text>");
+            }
+    ":"     BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
     "-"     BEGIN(GROUP_MINUS_PARAMS);
     i       sf_set_case_ins(1);
     s       sf_set_dot_all(1);
     x       sf_set_skip_ws(1);
 }
 <GROUP_MINUS_PARAMS>{
-    ":"     BEGIN(SECT2);
+    ":"     BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
     i       sf_set_case_ins(0);
     s       sf_set_dot_all(0);
     x       sf_set_skip_ws(0);
@@ -1115,7 +1147,9 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
         .      ACTION_ECHO;
 }
 
-<COMMENT,CODE_COMMENT,COMMENT_DISCARD,ACTION,ACTION_STRING,CHARACTER_CONSTANT><<EOF>>  {
+ /* Nick extra rules for action groups */
+ /* Nick added: BRACE_ACTION,DOUBLE_QUOTED,SINGLE_QUOTED */
+<COMMENT,CODE_COMMENT,COMMENT_DISCARD,ACTION,ACTION_STRING,CHARACTER_CONSTANT,BRACE_ACTION,DOUBLE_QUOTED,SINGLE_QUOTED><<EOF>> {
                        synerr( _( "EOF encountered inside an action" ) );
                        yyterminate();
                        }
@@ -1168,6 +1202,38 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
 #endif
     }
 }
+
+ /* Nick extra rules for action groups */
+<BRACE_ACTION>{
+       "{"             ++bracelevel;
+       "}"             {
+                           if (--bracelevel == 0) {
+                               yy_pop_state();
+ piece_append("</RegexGroupAction_Text>");
+                               return '{';
+                           }
+                       }
+       "'"             yy_push_state(SINGLE_QUOTED);
+       \"              yy_push_state(DOUBLE_QUOTED);
+       "/*"            yy_push_state(COMMENT_DISCARD);
+}
+<SINGLE_QUOTED>{
+       [^\[\]\'\\\n]+
+        \'             yy_pop_state();
+}
+<DOUBLE_QUOTED>{
+       [^\[\]\"\\\n]+
+       \"              yy_pop_state();
+}
+<SINGLE_QUOTED,DOUBLE_QUOTED>{
+        (\\\n)*
+       \\(\\\n)*.
+}
+<BRACE_ACTION,SINGLE_QUOTED,DOUBLE_QUOTED>{
+       {NL}            ++linenum;
+        .
+}
+
 <*>.|\n                        format_synerr( _( "bad character: %s" ), yytext );
 
 %%