diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -3,9 +3,8 @@
 
 This package provides Haskell bindings for [libcmark], the reference
 parser for [CommonMark], a fully specified variant of Markdown.
-It includes sources for [libcmark] (version 0.27.1, implementing
-version 0.27 of the spec) and does not require prior installation of
-the C library.
+It includes sources for [libcmark] and does not require prior
+installation of the C library.
 
 cmark provides the following advantages over existing Markdown
 libraries for Haskell:
diff --git a/cbits/blocks.c b/cbits/blocks.c
--- a/cbits/blocks.c
+++ b/cbits/blocks.c
@@ -414,8 +414,8 @@
     data->marker_offset = 0; // will be adjusted later
     data->list_type = CMARK_BULLET_LIST;
     data->bullet_char = c;
-    data->start = 1;
-    data->delimiter = CMARK_PERIOD_DELIM;
+    data->start = 0;
+    data->delimiter = CMARK_NO_DELIM;
     data->tight = false;
   } else if (cmark_isdigit(c)) {
     int start = 0;
@@ -580,7 +580,7 @@
           if (buffer == end)
             parser->last_buffer_ended_with_cr = true;
         }
-        if (*buffer == '\n')
+        if (buffer < end && *buffer == '\n')
           buffer++;
       }
     }
@@ -1146,6 +1146,8 @@
   else
     cmark_strbuf_put(&parser->curline, buffer, bytes);
 
+  bytes = parser->curline.size;
+
   // ensure line ends with a newline:
   if (bytes == 0 || !S_is_line_end_char(parser->curline.ptr[bytes - 1]))
     cmark_strbuf_putc(&parser->curline, '\n');
@@ -1157,6 +1159,7 @@
 
   input.data = parser->curline.ptr;
   input.len = parser->curline.size;
+  input.alloc = 0;
 
   parser->line_number++;
 
@@ -1191,9 +1194,7 @@
 
   finalize_document(parser);
 
-  if (parser->options & CMARK_OPT_NORMALIZE) {
-    cmark_consolidate_text_nodes(parser->root);
-  }
+  cmark_consolidate_text_nodes(parser->root);
 
   cmark_strbuf_free(&parser->curline);
 
diff --git a/cbits/buffer.c b/cbits/buffer.c
--- a/cbits/buffer.c
+++ b/cbits/buffer.c
@@ -42,8 +42,12 @@
   if (target_size < buf->asize)
     return;
 
-  if (target_size > (bufsize_t)(INT32_MAX / 2))
+  if (target_size > (bufsize_t)(INT32_MAX / 2)) {
+    fprintf(stderr,
+      "[cmark] cmark_strbuf_grow requests buffer with size > %d, aborting\n",
+         (INT32_MAX / 2));
     abort();
+  }
 
   /* Oversize the buffer by 50% to guarantee amortized linear time
    * complexity on append operations. */
diff --git a/cbits/case_fold_switch.inc b/cbits/case_fold_switch.inc
--- a/cbits/case_fold_switch.inc
+++ b/cbits/case_fold_switch.inc
@@ -657,1980 +657,3670 @@
       case 0x0232:
         bufpush(0x0233);
         break;
-      case 0x0345:
-        bufpush(0x03B9);
-        break;
-      case 0x0386:
-        bufpush(0x03AC);
-        break;
-      case 0x0388:
-        bufpush(0x03AD);
-        break;
-      case 0x0389:
-        bufpush(0x03AE);
-        break;
-      case 0x038A:
-        bufpush(0x03AF);
-        break;
-      case 0x038C:
-        bufpush(0x03CC);
-        break;
-      case 0x038E:
-        bufpush(0x03CD);
-        break;
-      case 0x038F:
-        bufpush(0x03CE);
-        break;
-      case 0x0390:
-        bufpush(0x03B9);
-        bufpush(0x0308);
-        bufpush(0x0301);
-        break;
-      case 0x0391:
-        bufpush(0x03B1);
-        break;
-      case 0x0392:
-        bufpush(0x03B2);
-        break;
-      case 0x0393:
-        bufpush(0x03B3);
-        break;
-      case 0x0394:
-        bufpush(0x03B4);
-        break;
-      case 0x0395:
-        bufpush(0x03B5);
-        break;
-      case 0x0396:
-        bufpush(0x03B6);
-        break;
-      case 0x0397:
-        bufpush(0x03B7);
-        break;
-      case 0x0398:
-        bufpush(0x03B8);
-        break;
-      case 0x0399:
-        bufpush(0x03B9);
-        break;
-      case 0x039A:
-        bufpush(0x03BA);
-        break;
-      case 0x039B:
-        bufpush(0x03BB);
-        break;
-      case 0x039C:
-        bufpush(0x03BC);
-        break;
-      case 0x039D:
-        bufpush(0x03BD);
-        break;
-      case 0x039E:
-        bufpush(0x03BE);
-        break;
-      case 0x039F:
-        bufpush(0x03BF);
-        break;
-      case 0x03A0:
-        bufpush(0x03C0);
-        break;
-      case 0x03A1:
-        bufpush(0x03C1);
-        break;
-      case 0x03A3:
-        bufpush(0x03C3);
-        break;
-      case 0x03A4:
-        bufpush(0x03C4);
-        break;
-      case 0x03A5:
-        bufpush(0x03C5);
-        break;
-      case 0x03A6:
-        bufpush(0x03C6);
-        break;
-      case 0x03A7:
-        bufpush(0x03C7);
-        break;
-      case 0x03A8:
-        bufpush(0x03C8);
-        break;
-      case 0x03A9:
-        bufpush(0x03C9);
-        break;
-      case 0x03AA:
-        bufpush(0x03CA);
-        break;
-      case 0x03AB:
-        bufpush(0x03CB);
-        break;
-      case 0x03B0:
-        bufpush(0x03C5);
-        bufpush(0x0308);
-        bufpush(0x0301);
-        break;
-      case 0x03C2:
-        bufpush(0x03C3);
-        break;
-      case 0x03D0:
-        bufpush(0x03B2);
-        break;
-      case 0x03D1:
-        bufpush(0x03B8);
-        break;
-      case 0x03D5:
-        bufpush(0x03C6);
-        break;
-      case 0x03D6:
-        bufpush(0x03C0);
-        break;
-      case 0x03D8:
-        bufpush(0x03D9);
-        break;
-      case 0x03DA:
-        bufpush(0x03DB);
-        break;
-      case 0x03DC:
-        bufpush(0x03DD);
-        break;
-      case 0x03DE:
-        bufpush(0x03DF);
-        break;
-      case 0x03E0:
-        bufpush(0x03E1);
-        break;
-      case 0x03E2:
-        bufpush(0x03E3);
-        break;
-      case 0x03E4:
-        bufpush(0x03E5);
-        break;
-      case 0x03E6:
-        bufpush(0x03E7);
-        break;
-      case 0x03E8:
-        bufpush(0x03E9);
-        break;
-      case 0x03EA:
-        bufpush(0x03EB);
-        break;
-      case 0x03EC:
-        bufpush(0x03ED);
-        break;
-      case 0x03EE:
-        bufpush(0x03EF);
-        break;
-      case 0x03F0:
-        bufpush(0x03BA);
-        break;
-      case 0x03F1:
-        bufpush(0x03C1);
-        break;
-      case 0x03F2:
-        bufpush(0x03C3);
-        break;
-      case 0x03F4:
-        bufpush(0x03B8);
-        break;
-      case 0x03F5:
-        bufpush(0x03B5);
-        break;
-      case 0x0400:
-        bufpush(0x0450);
-        break;
-      case 0x0401:
-        bufpush(0x0451);
-        break;
-      case 0x0402:
-        bufpush(0x0452);
-        break;
-      case 0x0403:
-        bufpush(0x0453);
-        break;
-      case 0x0404:
-        bufpush(0x0454);
-        break;
-      case 0x0405:
-        bufpush(0x0455);
-        break;
-      case 0x0406:
-        bufpush(0x0456);
-        break;
-      case 0x0407:
-        bufpush(0x0457);
-        break;
-      case 0x0408:
-        bufpush(0x0458);
-        break;
-      case 0x0409:
-        bufpush(0x0459);
-        break;
-      case 0x040A:
-        bufpush(0x045A);
-        break;
-      case 0x040B:
-        bufpush(0x045B);
-        break;
-      case 0x040C:
-        bufpush(0x045C);
-        break;
-      case 0x040D:
-        bufpush(0x045D);
-        break;
-      case 0x040E:
-        bufpush(0x045E);
-        break;
-      case 0x040F:
-        bufpush(0x045F);
-        break;
-      case 0x0410:
-        bufpush(0x0430);
-        break;
-      case 0x0411:
-        bufpush(0x0431);
-        break;
-      case 0x0412:
-        bufpush(0x0432);
-        break;
-      case 0x0413:
-        bufpush(0x0433);
-        break;
-      case 0x0414:
-        bufpush(0x0434);
-        break;
-      case 0x0415:
-        bufpush(0x0435);
-        break;
-      case 0x0416:
-        bufpush(0x0436);
-        break;
-      case 0x0417:
-        bufpush(0x0437);
-        break;
-      case 0x0418:
-        bufpush(0x0438);
-        break;
-      case 0x0419:
-        bufpush(0x0439);
-        break;
-      case 0x041A:
-        bufpush(0x043A);
-        break;
-      case 0x041B:
-        bufpush(0x043B);
-        break;
-      case 0x041C:
-        bufpush(0x043C);
-        break;
-      case 0x041D:
-        bufpush(0x043D);
-        break;
-      case 0x041E:
-        bufpush(0x043E);
-        break;
-      case 0x041F:
-        bufpush(0x043F);
-        break;
-      case 0x0420:
-        bufpush(0x0440);
-        break;
-      case 0x0421:
-        bufpush(0x0441);
-        break;
-      case 0x0422:
-        bufpush(0x0442);
-        break;
-      case 0x0423:
-        bufpush(0x0443);
-        break;
-      case 0x0424:
-        bufpush(0x0444);
-        break;
-      case 0x0425:
-        bufpush(0x0445);
-        break;
-      case 0x0426:
-        bufpush(0x0446);
-        break;
-      case 0x0427:
-        bufpush(0x0447);
-        break;
-      case 0x0428:
-        bufpush(0x0448);
-        break;
-      case 0x0429:
-        bufpush(0x0449);
-        break;
-      case 0x042A:
-        bufpush(0x044A);
-        break;
-      case 0x042B:
-        bufpush(0x044B);
-        break;
-      case 0x042C:
-        bufpush(0x044C);
-        break;
-      case 0x042D:
-        bufpush(0x044D);
-        break;
-      case 0x042E:
-        bufpush(0x044E);
-        break;
-      case 0x042F:
-        bufpush(0x044F);
-        break;
-      case 0x0460:
-        bufpush(0x0461);
-        break;
-      case 0x0462:
-        bufpush(0x0463);
-        break;
-      case 0x0464:
-        bufpush(0x0465);
-        break;
-      case 0x0466:
-        bufpush(0x0467);
-        break;
-      case 0x0468:
-        bufpush(0x0469);
-        break;
-      case 0x046A:
-        bufpush(0x046B);
-        break;
-      case 0x046C:
-        bufpush(0x046D);
-        break;
-      case 0x046E:
-        bufpush(0x046F);
-        break;
-      case 0x0470:
-        bufpush(0x0471);
-        break;
-      case 0x0472:
-        bufpush(0x0473);
-        break;
-      case 0x0474:
-        bufpush(0x0475);
-        break;
-      case 0x0476:
-        bufpush(0x0477);
-        break;
-      case 0x0478:
-        bufpush(0x0479);
-        break;
-      case 0x047A:
-        bufpush(0x047B);
-        break;
-      case 0x047C:
-        bufpush(0x047D);
-        break;
-      case 0x047E:
-        bufpush(0x047F);
-        break;
-      case 0x0480:
-        bufpush(0x0481);
-        break;
-      case 0x048A:
-        bufpush(0x048B);
-        break;
-      case 0x048C:
-        bufpush(0x048D);
-        break;
-      case 0x048E:
-        bufpush(0x048F);
-        break;
-      case 0x0490:
-        bufpush(0x0491);
-        break;
-      case 0x0492:
-        bufpush(0x0493);
-        break;
-      case 0x0494:
-        bufpush(0x0495);
-        break;
-      case 0x0496:
-        bufpush(0x0497);
-        break;
-      case 0x0498:
-        bufpush(0x0499);
-        break;
-      case 0x049A:
-        bufpush(0x049B);
-        break;
-      case 0x049C:
-        bufpush(0x049D);
-        break;
-      case 0x049E:
-        bufpush(0x049F);
-        break;
-      case 0x04A0:
-        bufpush(0x04A1);
-        break;
-      case 0x04A2:
-        bufpush(0x04A3);
-        break;
-      case 0x04A4:
-        bufpush(0x04A5);
-        break;
-      case 0x04A6:
-        bufpush(0x04A7);
-        break;
-      case 0x04A8:
-        bufpush(0x04A9);
-        break;
-      case 0x04AA:
-        bufpush(0x04AB);
-        break;
-      case 0x04AC:
-        bufpush(0x04AD);
-        break;
-      case 0x04AE:
-        bufpush(0x04AF);
-        break;
-      case 0x04B0:
-        bufpush(0x04B1);
-        break;
-      case 0x04B2:
-        bufpush(0x04B3);
-        break;
-      case 0x04B4:
-        bufpush(0x04B5);
-        break;
-      case 0x04B6:
-        bufpush(0x04B7);
-        break;
-      case 0x04B8:
-        bufpush(0x04B9);
-        break;
-      case 0x04BA:
-        bufpush(0x04BB);
-        break;
-      case 0x04BC:
-        bufpush(0x04BD);
-        break;
-      case 0x04BE:
-        bufpush(0x04BF);
-        break;
-      case 0x04C1:
-        bufpush(0x04C2);
-        break;
-      case 0x04C3:
-        bufpush(0x04C4);
-        break;
-      case 0x04C5:
-        bufpush(0x04C6);
-        break;
-      case 0x04C7:
-        bufpush(0x04C8);
-        break;
-      case 0x04C9:
-        bufpush(0x04CA);
-        break;
-      case 0x04CB:
-        bufpush(0x04CC);
-        break;
-      case 0x04CD:
-        bufpush(0x04CE);
-        break;
-      case 0x04D0:
-        bufpush(0x04D1);
-        break;
-      case 0x04D2:
-        bufpush(0x04D3);
-        break;
-      case 0x04D4:
-        bufpush(0x04D5);
-        break;
-      case 0x04D6:
-        bufpush(0x04D7);
-        break;
-      case 0x04D8:
-        bufpush(0x04D9);
-        break;
-      case 0x04DA:
-        bufpush(0x04DB);
-        break;
-      case 0x04DC:
-        bufpush(0x04DD);
-        break;
-      case 0x04DE:
-        bufpush(0x04DF);
-        break;
-      case 0x04E0:
-        bufpush(0x04E1);
-        break;
-      case 0x04E2:
-        bufpush(0x04E3);
-        break;
-      case 0x04E4:
-        bufpush(0x04E5);
-        break;
-      case 0x04E6:
-        bufpush(0x04E7);
-        break;
-      case 0x04E8:
-        bufpush(0x04E9);
-        break;
-      case 0x04EA:
-        bufpush(0x04EB);
-        break;
-      case 0x04EC:
-        bufpush(0x04ED);
-        break;
-      case 0x04EE:
-        bufpush(0x04EF);
-        break;
-      case 0x04F0:
-        bufpush(0x04F1);
-        break;
-      case 0x04F2:
-        bufpush(0x04F3);
-        break;
-      case 0x04F4:
-        bufpush(0x04F5);
-        break;
-      case 0x04F8:
-        bufpush(0x04F9);
-        break;
-      case 0x0500:
-        bufpush(0x0501);
-        break;
-      case 0x0502:
-        bufpush(0x0503);
-        break;
-      case 0x0504:
-        bufpush(0x0505);
-        break;
-      case 0x0506:
-        bufpush(0x0507);
-        break;
-      case 0x0508:
-        bufpush(0x0509);
-        break;
-      case 0x050A:
-        bufpush(0x050B);
-        break;
-      case 0x050C:
-        bufpush(0x050D);
-        break;
-      case 0x050E:
-        bufpush(0x050F);
-        break;
-      case 0x0531:
-        bufpush(0x0561);
-        break;
-      case 0x0532:
-        bufpush(0x0562);
-        break;
-      case 0x0533:
-        bufpush(0x0563);
-        break;
-      case 0x0534:
-        bufpush(0x0564);
-        break;
-      case 0x0535:
-        bufpush(0x0565);
-        break;
-      case 0x0536:
-        bufpush(0x0566);
-        break;
-      case 0x0537:
-        bufpush(0x0567);
-        break;
-      case 0x0538:
-        bufpush(0x0568);
-        break;
-      case 0x0539:
-        bufpush(0x0569);
-        break;
-      case 0x053A:
-        bufpush(0x056A);
-        break;
-      case 0x053B:
-        bufpush(0x056B);
-        break;
-      case 0x053C:
-        bufpush(0x056C);
-        break;
-      case 0x053D:
-        bufpush(0x056D);
-        break;
-      case 0x053E:
-        bufpush(0x056E);
-        break;
-      case 0x053F:
-        bufpush(0x056F);
-        break;
-      case 0x0540:
-        bufpush(0x0570);
-        break;
-      case 0x0541:
-        bufpush(0x0571);
-        break;
-      case 0x0542:
-        bufpush(0x0572);
-        break;
-      case 0x0543:
-        bufpush(0x0573);
-        break;
-      case 0x0544:
-        bufpush(0x0574);
-        break;
-      case 0x0545:
-        bufpush(0x0575);
-        break;
-      case 0x0546:
-        bufpush(0x0576);
-        break;
-      case 0x0547:
-        bufpush(0x0577);
-        break;
-      case 0x0548:
-        bufpush(0x0578);
-        break;
-      case 0x0549:
-        bufpush(0x0579);
-        break;
-      case 0x054A:
-        bufpush(0x057A);
-        break;
-      case 0x054B:
-        bufpush(0x057B);
-        break;
-      case 0x054C:
-        bufpush(0x057C);
-        break;
-      case 0x054D:
-        bufpush(0x057D);
-        break;
-      case 0x054E:
-        bufpush(0x057E);
-        break;
-      case 0x054F:
-        bufpush(0x057F);
-        break;
-      case 0x0550:
-        bufpush(0x0580);
-        break;
-      case 0x0551:
-        bufpush(0x0581);
-        break;
-      case 0x0552:
-        bufpush(0x0582);
-        break;
-      case 0x0553:
-        bufpush(0x0583);
-        break;
-      case 0x0554:
-        bufpush(0x0584);
-        break;
-      case 0x0555:
-        bufpush(0x0585);
-        break;
-      case 0x0556:
-        bufpush(0x0586);
-        break;
-      case 0x0587:
-        bufpush(0x0565);
-        bufpush(0x0582);
-        break;
-      case 0x1E00:
-        bufpush(0x1E01);
-        break;
-      case 0x1E02:
-        bufpush(0x1E03);
-        break;
-      case 0x1E04:
-        bufpush(0x1E05);
-        break;
-      case 0x1E06:
-        bufpush(0x1E07);
-        break;
-      case 0x1E08:
-        bufpush(0x1E09);
-        break;
-      case 0x1E0A:
-        bufpush(0x1E0B);
-        break;
-      case 0x1E0C:
-        bufpush(0x1E0D);
-        break;
-      case 0x1E0E:
-        bufpush(0x1E0F);
-        break;
-      case 0x1E10:
-        bufpush(0x1E11);
-        break;
-      case 0x1E12:
-        bufpush(0x1E13);
-        break;
-      case 0x1E14:
-        bufpush(0x1E15);
-        break;
-      case 0x1E16:
-        bufpush(0x1E17);
-        break;
-      case 0x1E18:
-        bufpush(0x1E19);
-        break;
-      case 0x1E1A:
-        bufpush(0x1E1B);
-        break;
-      case 0x1E1C:
-        bufpush(0x1E1D);
-        break;
-      case 0x1E1E:
-        bufpush(0x1E1F);
-        break;
-      case 0x1E20:
-        bufpush(0x1E21);
-        break;
-      case 0x1E22:
-        bufpush(0x1E23);
-        break;
-      case 0x1E24:
-        bufpush(0x1E25);
-        break;
-      case 0x1E26:
-        bufpush(0x1E27);
-        break;
-      case 0x1E28:
-        bufpush(0x1E29);
-        break;
-      case 0x1E2A:
-        bufpush(0x1E2B);
-        break;
-      case 0x1E2C:
-        bufpush(0x1E2D);
-        break;
-      case 0x1E2E:
-        bufpush(0x1E2F);
-        break;
-      case 0x1E30:
-        bufpush(0x1E31);
-        break;
-      case 0x1E32:
-        bufpush(0x1E33);
-        break;
-      case 0x1E34:
-        bufpush(0x1E35);
-        break;
-      case 0x1E36:
-        bufpush(0x1E37);
-        break;
-      case 0x1E38:
-        bufpush(0x1E39);
-        break;
-      case 0x1E3A:
-        bufpush(0x1E3B);
-        break;
-      case 0x1E3C:
-        bufpush(0x1E3D);
-        break;
-      case 0x1E3E:
-        bufpush(0x1E3F);
-        break;
-      case 0x1E40:
-        bufpush(0x1E41);
-        break;
-      case 0x1E42:
-        bufpush(0x1E43);
-        break;
-      case 0x1E44:
-        bufpush(0x1E45);
-        break;
-      case 0x1E46:
-        bufpush(0x1E47);
-        break;
-      case 0x1E48:
-        bufpush(0x1E49);
-        break;
-      case 0x1E4A:
-        bufpush(0x1E4B);
-        break;
-      case 0x1E4C:
-        bufpush(0x1E4D);
-        break;
-      case 0x1E4E:
-        bufpush(0x1E4F);
-        break;
-      case 0x1E50:
-        bufpush(0x1E51);
-        break;
-      case 0x1E52:
-        bufpush(0x1E53);
-        break;
-      case 0x1E54:
-        bufpush(0x1E55);
-        break;
-      case 0x1E56:
-        bufpush(0x1E57);
-        break;
-      case 0x1E58:
-        bufpush(0x1E59);
-        break;
-      case 0x1E5A:
-        bufpush(0x1E5B);
-        break;
-      case 0x1E5C:
-        bufpush(0x1E5D);
-        break;
-      case 0x1E5E:
-        bufpush(0x1E5F);
-        break;
-      case 0x1E60:
-        bufpush(0x1E61);
-        break;
-      case 0x1E62:
-        bufpush(0x1E63);
-        break;
-      case 0x1E64:
-        bufpush(0x1E65);
-        break;
-      case 0x1E66:
-        bufpush(0x1E67);
-        break;
-      case 0x1E68:
-        bufpush(0x1E69);
-        break;
-      case 0x1E6A:
-        bufpush(0x1E6B);
-        break;
-      case 0x1E6C:
-        bufpush(0x1E6D);
-        break;
-      case 0x1E6E:
-        bufpush(0x1E6F);
-        break;
-      case 0x1E70:
-        bufpush(0x1E71);
-        break;
-      case 0x1E72:
-        bufpush(0x1E73);
-        break;
-      case 0x1E74:
-        bufpush(0x1E75);
-        break;
-      case 0x1E76:
-        bufpush(0x1E77);
-        break;
-      case 0x1E78:
-        bufpush(0x1E79);
-        break;
-      case 0x1E7A:
-        bufpush(0x1E7B);
-        break;
-      case 0x1E7C:
-        bufpush(0x1E7D);
-        break;
-      case 0x1E7E:
-        bufpush(0x1E7F);
-        break;
-      case 0x1E80:
-        bufpush(0x1E81);
-        break;
-      case 0x1E82:
-        bufpush(0x1E83);
-        break;
-      case 0x1E84:
-        bufpush(0x1E85);
-        break;
-      case 0x1E86:
-        bufpush(0x1E87);
-        break;
-      case 0x1E88:
-        bufpush(0x1E89);
-        break;
-      case 0x1E8A:
-        bufpush(0x1E8B);
-        break;
-      case 0x1E8C:
-        bufpush(0x1E8D);
-        break;
-      case 0x1E8E:
-        bufpush(0x1E8F);
-        break;
-      case 0x1E90:
-        bufpush(0x1E91);
-        break;
-      case 0x1E92:
-        bufpush(0x1E93);
-        break;
-      case 0x1E94:
-        bufpush(0x1E95);
-        break;
-      case 0x1E96:
-        bufpush(0x0068);
-        bufpush(0x0331);
-        break;
-      case 0x1E97:
-        bufpush(0x0074);
-        bufpush(0x0308);
-        break;
-      case 0x1E98:
-        bufpush(0x0077);
-        bufpush(0x030A);
-        break;
-      case 0x1E99:
-        bufpush(0x0079);
-        bufpush(0x030A);
-        break;
-      case 0x1E9A:
-        bufpush(0x0061);
-        bufpush(0x02BE);
-        break;
-      case 0x1E9B:
-        bufpush(0x1E61);
-        break;
-      case 0x1EA0:
-        bufpush(0x1EA1);
-        break;
-      case 0x1EA2:
-        bufpush(0x1EA3);
-        break;
-      case 0x1EA4:
-        bufpush(0x1EA5);
-        break;
-      case 0x1EA6:
-        bufpush(0x1EA7);
-        break;
-      case 0x1EA8:
-        bufpush(0x1EA9);
-        break;
-      case 0x1EAA:
-        bufpush(0x1EAB);
-        break;
-      case 0x1EAC:
-        bufpush(0x1EAD);
-        break;
-      case 0x1EAE:
-        bufpush(0x1EAF);
-        break;
-      case 0x1EB0:
-        bufpush(0x1EB1);
-        break;
-      case 0x1EB2:
-        bufpush(0x1EB3);
-        break;
-      case 0x1EB4:
-        bufpush(0x1EB5);
-        break;
-      case 0x1EB6:
-        bufpush(0x1EB7);
-        break;
-      case 0x1EB8:
-        bufpush(0x1EB9);
-        break;
-      case 0x1EBA:
-        bufpush(0x1EBB);
-        break;
-      case 0x1EBC:
-        bufpush(0x1EBD);
-        break;
-      case 0x1EBE:
-        bufpush(0x1EBF);
-        break;
-      case 0x1EC0:
-        bufpush(0x1EC1);
-        break;
-      case 0x1EC2:
-        bufpush(0x1EC3);
-        break;
-      case 0x1EC4:
-        bufpush(0x1EC5);
-        break;
-      case 0x1EC6:
-        bufpush(0x1EC7);
-        break;
-      case 0x1EC8:
-        bufpush(0x1EC9);
-        break;
-      case 0x1ECA:
-        bufpush(0x1ECB);
-        break;
-      case 0x1ECC:
-        bufpush(0x1ECD);
-        break;
-      case 0x1ECE:
-        bufpush(0x1ECF);
-        break;
-      case 0x1ED0:
-        bufpush(0x1ED1);
-        break;
-      case 0x1ED2:
-        bufpush(0x1ED3);
-        break;
-      case 0x1ED4:
-        bufpush(0x1ED5);
-        break;
-      case 0x1ED6:
-        bufpush(0x1ED7);
-        break;
-      case 0x1ED8:
-        bufpush(0x1ED9);
-        break;
-      case 0x1EDA:
-        bufpush(0x1EDB);
-        break;
-      case 0x1EDC:
-        bufpush(0x1EDD);
-        break;
-      case 0x1EDE:
-        bufpush(0x1EDF);
-        break;
-      case 0x1EE0:
-        bufpush(0x1EE1);
-        break;
-      case 0x1EE2:
-        bufpush(0x1EE3);
-        break;
-      case 0x1EE4:
-        bufpush(0x1EE5);
-        break;
-      case 0x1EE6:
-        bufpush(0x1EE7);
-        break;
-      case 0x1EE8:
-        bufpush(0x1EE9);
-        break;
-      case 0x1EEA:
-        bufpush(0x1EEB);
-        break;
-      case 0x1EEC:
-        bufpush(0x1EED);
-        break;
-      case 0x1EEE:
-        bufpush(0x1EEF);
-        break;
-      case 0x1EF0:
-        bufpush(0x1EF1);
-        break;
-      case 0x1EF2:
-        bufpush(0x1EF3);
-        break;
-      case 0x1EF4:
-        bufpush(0x1EF5);
-        break;
-      case 0x1EF6:
-        bufpush(0x1EF7);
-        break;
-      case 0x1EF8:
-        bufpush(0x1EF9);
-        break;
-      case 0x1F08:
-        bufpush(0x1F00);
-        break;
-      case 0x1F09:
-        bufpush(0x1F01);
-        break;
-      case 0x1F0A:
-        bufpush(0x1F02);
-        break;
-      case 0x1F0B:
-        bufpush(0x1F03);
-        break;
-      case 0x1F0C:
-        bufpush(0x1F04);
-        break;
-      case 0x1F0D:
-        bufpush(0x1F05);
-        break;
-      case 0x1F0E:
-        bufpush(0x1F06);
-        break;
-      case 0x1F0F:
-        bufpush(0x1F07);
-        break;
-      case 0x1F18:
-        bufpush(0x1F10);
-        break;
-      case 0x1F19:
-        bufpush(0x1F11);
-        break;
-      case 0x1F1A:
-        bufpush(0x1F12);
-        break;
-      case 0x1F1B:
-        bufpush(0x1F13);
-        break;
-      case 0x1F1C:
-        bufpush(0x1F14);
-        break;
-      case 0x1F1D:
-        bufpush(0x1F15);
-        break;
-      case 0x1F28:
-        bufpush(0x1F20);
-        break;
-      case 0x1F29:
-        bufpush(0x1F21);
-        break;
-      case 0x1F2A:
-        bufpush(0x1F22);
-        break;
-      case 0x1F2B:
-        bufpush(0x1F23);
-        break;
-      case 0x1F2C:
-        bufpush(0x1F24);
-        break;
-      case 0x1F2D:
-        bufpush(0x1F25);
-        break;
-      case 0x1F2E:
-        bufpush(0x1F26);
-        break;
-      case 0x1F2F:
-        bufpush(0x1F27);
-        break;
-      case 0x1F38:
-        bufpush(0x1F30);
-        break;
-      case 0x1F39:
-        bufpush(0x1F31);
-        break;
-      case 0x1F3A:
-        bufpush(0x1F32);
-        break;
-      case 0x1F3B:
-        bufpush(0x1F33);
-        break;
-      case 0x1F3C:
-        bufpush(0x1F34);
-        break;
-      case 0x1F3D:
-        bufpush(0x1F35);
-        break;
-      case 0x1F3E:
-        bufpush(0x1F36);
-        break;
-      case 0x1F3F:
-        bufpush(0x1F37);
-        break;
-      case 0x1F48:
-        bufpush(0x1F40);
-        break;
-      case 0x1F49:
-        bufpush(0x1F41);
-        break;
-      case 0x1F4A:
-        bufpush(0x1F42);
-        break;
-      case 0x1F4B:
-        bufpush(0x1F43);
-        break;
-      case 0x1F4C:
-        bufpush(0x1F44);
-        break;
-      case 0x1F4D:
-        bufpush(0x1F45);
-        break;
-      case 0x1F50:
-        bufpush(0x03C5);
-        bufpush(0x0313);
-        break;
-      case 0x1F52:
-        bufpush(0x03C5);
-        bufpush(0x0313);
-        bufpush(0x0300);
-        break;
-      case 0x1F54:
-        bufpush(0x03C5);
-        bufpush(0x0313);
-        bufpush(0x0301);
-        break;
-      case 0x1F56:
-        bufpush(0x03C5);
-        bufpush(0x0313);
-        bufpush(0x0342);
-        break;
-      case 0x1F59:
-        bufpush(0x1F51);
-        break;
-      case 0x1F5B:
-        bufpush(0x1F53);
-        break;
-      case 0x1F5D:
-        bufpush(0x1F55);
-        break;
-      case 0x1F5F:
-        bufpush(0x1F57);
-        break;
-      case 0x1F68:
-        bufpush(0x1F60);
-        break;
-      case 0x1F69:
-        bufpush(0x1F61);
-        break;
-      case 0x1F6A:
-        bufpush(0x1F62);
-        break;
-      case 0x1F6B:
-        bufpush(0x1F63);
-        break;
-      case 0x1F6C:
-        bufpush(0x1F64);
-        break;
-      case 0x1F6D:
-        bufpush(0x1F65);
-        break;
-      case 0x1F6E:
-        bufpush(0x1F66);
-        break;
-      case 0x1F6F:
-        bufpush(0x1F67);
-        break;
-      case 0x1F80:
-        bufpush(0x1F00);
-        bufpush(0x03B9);
-        break;
-      case 0x1F81:
-        bufpush(0x1F01);
-        bufpush(0x03B9);
-        break;
-      case 0x1F82:
-        bufpush(0x1F02);
-        bufpush(0x03B9);
-        break;
-      case 0x1F83:
-        bufpush(0x1F03);
-        bufpush(0x03B9);
-        break;
-      case 0x1F84:
-        bufpush(0x1F04);
-        bufpush(0x03B9);
-        break;
-      case 0x1F85:
-        bufpush(0x1F05);
-        bufpush(0x03B9);
-        break;
-      case 0x1F86:
-        bufpush(0x1F06);
-        bufpush(0x03B9);
-        break;
-      case 0x1F87:
-        bufpush(0x1F07);
-        bufpush(0x03B9);
-        break;
-      case 0x1F88:
-        bufpush(0x1F00);
-        bufpush(0x03B9);
-        break;
-      case 0x1F89:
-        bufpush(0x1F01);
-        bufpush(0x03B9);
-        break;
-      case 0x1F8A:
-        bufpush(0x1F02);
-        bufpush(0x03B9);
-        break;
-      case 0x1F8B:
-        bufpush(0x1F03);
-        bufpush(0x03B9);
-        break;
-      case 0x1F8C:
-        bufpush(0x1F04);
-        bufpush(0x03B9);
-        break;
-      case 0x1F8D:
-        bufpush(0x1F05);
-        bufpush(0x03B9);
-        break;
-      case 0x1F8E:
-        bufpush(0x1F06);
-        bufpush(0x03B9);
-        break;
-      case 0x1F8F:
-        bufpush(0x1F07);
-        bufpush(0x03B9);
-        break;
-      case 0x1F90:
-        bufpush(0x1F20);
-        bufpush(0x03B9);
-        break;
-      case 0x1F91:
-        bufpush(0x1F21);
-        bufpush(0x03B9);
-        break;
-      case 0x1F92:
-        bufpush(0x1F22);
-        bufpush(0x03B9);
-        break;
-      case 0x1F93:
-        bufpush(0x1F23);
-        bufpush(0x03B9);
-        break;
-      case 0x1F94:
-        bufpush(0x1F24);
-        bufpush(0x03B9);
-        break;
-      case 0x1F95:
-        bufpush(0x1F25);
-        bufpush(0x03B9);
-        break;
-      case 0x1F96:
-        bufpush(0x1F26);
-        bufpush(0x03B9);
-        break;
-      case 0x1F97:
-        bufpush(0x1F27);
-        bufpush(0x03B9);
-        break;
-      case 0x1F98:
-        bufpush(0x1F20);
-        bufpush(0x03B9);
-        break;
-      case 0x1F99:
-        bufpush(0x1F21);
-        bufpush(0x03B9);
-        break;
-      case 0x1F9A:
-        bufpush(0x1F22);
-        bufpush(0x03B9);
-        break;
-      case 0x1F9B:
-        bufpush(0x1F23);
-        bufpush(0x03B9);
-        break;
-      case 0x1F9C:
-        bufpush(0x1F24);
-        bufpush(0x03B9);
-        break;
-      case 0x1F9D:
-        bufpush(0x1F25);
-        bufpush(0x03B9);
-        break;
-      case 0x1F9E:
-        bufpush(0x1F26);
-        bufpush(0x03B9);
-        break;
-      case 0x1F9F:
-        bufpush(0x1F27);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA0:
-        bufpush(0x1F60);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA1:
-        bufpush(0x1F61);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA2:
-        bufpush(0x1F62);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA3:
-        bufpush(0x1F63);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA4:
-        bufpush(0x1F64);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA5:
-        bufpush(0x1F65);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA6:
-        bufpush(0x1F66);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA7:
-        bufpush(0x1F67);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA8:
-        bufpush(0x1F60);
-        bufpush(0x03B9);
-        break;
-      case 0x1FA9:
-        bufpush(0x1F61);
-        bufpush(0x03B9);
-        break;
-      case 0x1FAA:
-        bufpush(0x1F62);
-        bufpush(0x03B9);
-        break;
-      case 0x1FAB:
-        bufpush(0x1F63);
-        bufpush(0x03B9);
-        break;
-      case 0x1FAC:
-        bufpush(0x1F64);
-        bufpush(0x03B9);
-        break;
-      case 0x1FAD:
-        bufpush(0x1F65);
-        bufpush(0x03B9);
-        break;
-      case 0x1FAE:
-        bufpush(0x1F66);
-        bufpush(0x03B9);
-        break;
-      case 0x1FAF:
-        bufpush(0x1F67);
-        bufpush(0x03B9);
-        break;
-      case 0x1FB2:
-        bufpush(0x1F70);
-        bufpush(0x03B9);
-        break;
-      case 0x1FB3:
-        bufpush(0x03B1);
-        bufpush(0x03B9);
-        break;
-      case 0x1FB4:
-        bufpush(0x03AC);
-        bufpush(0x03B9);
-        break;
-      case 0x1FB6:
-        bufpush(0x03B1);
-        bufpush(0x0342);
-        break;
-      case 0x1FB7:
-        bufpush(0x03B1);
-        bufpush(0x0342);
-        bufpush(0x03B9);
-        break;
-      case 0x1FB8:
-        bufpush(0x1FB0);
-        break;
-      case 0x1FB9:
-        bufpush(0x1FB1);
-        break;
-      case 0x1FBA:
-        bufpush(0x1F70);
-        break;
-      case 0x1FBB:
-        bufpush(0x1F71);
-        break;
-      case 0x1FBC:
-        bufpush(0x03B1);
-        bufpush(0x03B9);
-        break;
-      case 0x1FBE:
-        bufpush(0x03B9);
-        break;
-      case 0x1FC2:
-        bufpush(0x1F74);
-        bufpush(0x03B9);
-        break;
-      case 0x1FC3:
-        bufpush(0x03B7);
-        bufpush(0x03B9);
-        break;
-      case 0x1FC4:
-        bufpush(0x03AE);
-        bufpush(0x03B9);
-        break;
-      case 0x1FC6:
-        bufpush(0x03B7);
-        bufpush(0x0342);
-        break;
-      case 0x1FC7:
-        bufpush(0x03B7);
-        bufpush(0x0342);
-        bufpush(0x03B9);
-        break;
-      case 0x1FC8:
-        bufpush(0x1F72);
-        break;
-      case 0x1FC9:
-        bufpush(0x1F73);
-        break;
-      case 0x1FCA:
-        bufpush(0x1F74);
-        break;
-      case 0x1FCB:
-        bufpush(0x1F75);
-        break;
-      case 0x1FCC:
-        bufpush(0x03B7);
-        bufpush(0x03B9);
-        break;
-      case 0x1FD2:
-        bufpush(0x03B9);
-        bufpush(0x0308);
-        bufpush(0x0300);
-        break;
-      case 0x1FD3:
-        bufpush(0x03B9);
-        bufpush(0x0308);
-        bufpush(0x0301);
-        break;
-      case 0x1FD6:
-        bufpush(0x03B9);
-        bufpush(0x0342);
-        break;
-      case 0x1FD7:
-        bufpush(0x03B9);
-        bufpush(0x0308);
-        bufpush(0x0342);
-        break;
-      case 0x1FD8:
-        bufpush(0x1FD0);
-        break;
-      case 0x1FD9:
-        bufpush(0x1FD1);
-        break;
-      case 0x1FDA:
-        bufpush(0x1F76);
-        break;
-      case 0x1FDB:
-        bufpush(0x1F77);
-        break;
-      case 0x1FE2:
-        bufpush(0x03C5);
-        bufpush(0x0308);
-        bufpush(0x0300);
-        break;
-      case 0x1FE3:
-        bufpush(0x03C5);
-        bufpush(0x0308);
-        bufpush(0x0301);
-        break;
-      case 0x1FE4:
-        bufpush(0x03C1);
-        bufpush(0x0313);
-        break;
-      case 0x1FE6:
-        bufpush(0x03C5);
-        bufpush(0x0342);
-        break;
-      case 0x1FE7:
-        bufpush(0x03C5);
-        bufpush(0x0308);
-        bufpush(0x0342);
-        break;
-      case 0x1FE8:
-        bufpush(0x1FE0);
-        break;
-      case 0x1FE9:
-        bufpush(0x1FE1);
-        break;
-      case 0x1FEA:
-        bufpush(0x1F7A);
-        break;
-      case 0x1FEB:
-        bufpush(0x1F7B);
-        break;
-      case 0x1FEC:
-        bufpush(0x1FE5);
-        break;
-      case 0x1FF2:
-        bufpush(0x1F7C);
-        bufpush(0x03B9);
-        break;
-      case 0x1FF3:
-        bufpush(0x03C9);
-        bufpush(0x03B9);
-        break;
-      case 0x1FF4:
-        bufpush(0x03CE);
-        bufpush(0x03B9);
-        break;
-      case 0x1FF6:
-        bufpush(0x03C9);
-        bufpush(0x0342);
-        break;
-      case 0x1FF7:
-        bufpush(0x03C9);
-        bufpush(0x0342);
-        bufpush(0x03B9);
-        break;
-      case 0x1FF8:
-        bufpush(0x1F78);
-        break;
-      case 0x1FF9:
-        bufpush(0x1F79);
-        break;
-      case 0x1FFA:
-        bufpush(0x1F7C);
-        break;
-      case 0x1FFB:
-        bufpush(0x1F7D);
-        break;
-      case 0x1FFC:
-        bufpush(0x03C9);
-        bufpush(0x03B9);
-        break;
-      case 0x2126:
-        bufpush(0x03C9);
-        break;
-      case 0x212A:
-        bufpush(0x006B);
-        break;
-      case 0x212B:
-        bufpush(0x00E5);
-        break;
-      case 0x2160:
-        bufpush(0x2170);
-        break;
-      case 0x2161:
-        bufpush(0x2171);
-        break;
-      case 0x2162:
-        bufpush(0x2172);
-        break;
-      case 0x2163:
-        bufpush(0x2173);
-        break;
-      case 0x2164:
-        bufpush(0x2174);
-        break;
-      case 0x2165:
-        bufpush(0x2175);
-        break;
-      case 0x2166:
-        bufpush(0x2176);
-        break;
-      case 0x2167:
-        bufpush(0x2177);
-        break;
-      case 0x2168:
-        bufpush(0x2178);
-        break;
-      case 0x2169:
-        bufpush(0x2179);
-        break;
-      case 0x216A:
-        bufpush(0x217A);
-        break;
-      case 0x216B:
-        bufpush(0x217B);
-        break;
-      case 0x216C:
-        bufpush(0x217C);
-        break;
-      case 0x216D:
-        bufpush(0x217D);
-        break;
-      case 0x216E:
-        bufpush(0x217E);
-        break;
-      case 0x216F:
-        bufpush(0x217F);
-        break;
-      case 0x24B6:
-        bufpush(0x24D0);
-        break;
-      case 0x24B7:
-        bufpush(0x24D1);
-        break;
-      case 0x24B8:
-        bufpush(0x24D2);
-        break;
-      case 0x24B9:
-        bufpush(0x24D3);
-        break;
-      case 0x24BA:
-        bufpush(0x24D4);
-        break;
-      case 0x24BB:
-        bufpush(0x24D5);
-        break;
-      case 0x24BC:
-        bufpush(0x24D6);
-        break;
-      case 0x24BD:
-        bufpush(0x24D7);
-        break;
-      case 0x24BE:
-        bufpush(0x24D8);
-        break;
-      case 0x24BF:
-        bufpush(0x24D9);
-        break;
-      case 0x24C0:
-        bufpush(0x24DA);
-        break;
-      case 0x24C1:
-        bufpush(0x24DB);
-        break;
-      case 0x24C2:
-        bufpush(0x24DC);
-        break;
-      case 0x24C3:
-        bufpush(0x24DD);
-        break;
-      case 0x24C4:
-        bufpush(0x24DE);
-        break;
-      case 0x24C5:
-        bufpush(0x24DF);
-        break;
-      case 0x24C6:
-        bufpush(0x24E0);
-        break;
-      case 0x24C7:
-        bufpush(0x24E1);
-        break;
-      case 0x24C8:
-        bufpush(0x24E2);
-        break;
-      case 0x24C9:
-        bufpush(0x24E3);
-        break;
-      case 0x24CA:
-        bufpush(0x24E4);
-        break;
-      case 0x24CB:
-        bufpush(0x24E5);
-        break;
-      case 0x24CC:
-        bufpush(0x24E6);
-        break;
-      case 0x24CD:
-        bufpush(0x24E7);
-        break;
-      case 0x24CE:
-        bufpush(0x24E8);
-        break;
-      case 0x24CF:
-        bufpush(0x24E9);
-        break;
-      case 0xFB00:
-        bufpush(0x0066);
-        bufpush(0x0066);
-        break;
-      case 0xFB01:
-        bufpush(0x0066);
-        bufpush(0x0069);
-        break;
-      case 0xFB02:
-        bufpush(0x0066);
-        bufpush(0x006C);
-        break;
-      case 0xFB03:
-        bufpush(0x0066);
-        bufpush(0x0066);
-        bufpush(0x0069);
-        break;
-      case 0xFB04:
-        bufpush(0x0066);
-        bufpush(0x0066);
-        bufpush(0x006C);
-        break;
-      case 0xFB05:
-        bufpush(0x0073);
-        bufpush(0x0074);
-        break;
-      case 0xFB06:
-        bufpush(0x0073);
-        bufpush(0x0074);
-        break;
-      case 0xFB13:
-        bufpush(0x0574);
-        bufpush(0x0576);
-        break;
-      case 0xFB14:
-        bufpush(0x0574);
-        bufpush(0x0565);
-        break;
-      case 0xFB15:
-        bufpush(0x0574);
-        bufpush(0x056B);
-        break;
-      case 0xFB16:
-        bufpush(0x057E);
-        bufpush(0x0576);
-        break;
-      case 0xFB17:
-        bufpush(0x0574);
-        bufpush(0x056D);
-        break;
-      case 0xFF21:
-        bufpush(0xFF41);
-        break;
-      case 0xFF22:
-        bufpush(0xFF42);
-        break;
-      case 0xFF23:
-        bufpush(0xFF43);
-        break;
-      case 0xFF24:
-        bufpush(0xFF44);
-        break;
-      case 0xFF25:
-        bufpush(0xFF45);
-        break;
-      case 0xFF26:
-        bufpush(0xFF46);
-        break;
-      case 0xFF27:
-        bufpush(0xFF47);
-        break;
-      case 0xFF28:
-        bufpush(0xFF48);
-        break;
-      case 0xFF29:
-        bufpush(0xFF49);
-        break;
-      case 0xFF2A:
-        bufpush(0xFF4A);
-        break;
-      case 0xFF2B:
-        bufpush(0xFF4B);
-        break;
-      case 0xFF2C:
-        bufpush(0xFF4C);
-        break;
-      case 0xFF2D:
-        bufpush(0xFF4D);
-        break;
-      case 0xFF2E:
-        bufpush(0xFF4E);
-        break;
-      case 0xFF2F:
-        bufpush(0xFF4F);
-        break;
-      case 0xFF30:
-        bufpush(0xFF50);
-        break;
-      case 0xFF31:
-        bufpush(0xFF51);
-        break;
-      case 0xFF32:
-        bufpush(0xFF52);
-        break;
-      case 0xFF33:
-        bufpush(0xFF53);
-        break;
-      case 0xFF34:
-        bufpush(0xFF54);
-        break;
-      case 0xFF35:
-        bufpush(0xFF55);
-        break;
-      case 0xFF36:
-        bufpush(0xFF56);
-        break;
-      case 0xFF37:
-        bufpush(0xFF57);
-        break;
-      case 0xFF38:
-        bufpush(0xFF58);
-        break;
-      case 0xFF39:
-        bufpush(0xFF59);
-        break;
-      case 0xFF3A:
-        bufpush(0xFF5A);
-        break;
-      case 0x10400:
-        bufpush(0x10428);
-        break;
-      case 0x10401:
-        bufpush(0x10429);
-        break;
-      case 0x10402:
-        bufpush(0x1042A);
-        break;
-      case 0x10403:
-        bufpush(0x1042B);
-        break;
-      case 0x10404:
-        bufpush(0x1042C);
-        break;
-      case 0x10405:
-        bufpush(0x1042D);
-        break;
-      case 0x10406:
-        bufpush(0x1042E);
-        break;
-      case 0x10407:
-        bufpush(0x1042F);
-        break;
-      case 0x10408:
-        bufpush(0x10430);
-        break;
-      case 0x10409:
-        bufpush(0x10431);
-        break;
-      case 0x1040A:
-        bufpush(0x10432);
-        break;
-      case 0x1040B:
-        bufpush(0x10433);
-        break;
-      case 0x1040C:
-        bufpush(0x10434);
-        break;
-      case 0x1040D:
-        bufpush(0x10435);
-        break;
-      case 0x1040E:
-        bufpush(0x10436);
-        break;
-      case 0x1040F:
-        bufpush(0x10437);
-        break;
-      case 0x10410:
-        bufpush(0x10438);
-        break;
-      case 0x10411:
-        bufpush(0x10439);
-        break;
-      case 0x10412:
-        bufpush(0x1043A);
-        break;
-      case 0x10413:
-        bufpush(0x1043B);
-        break;
-      case 0x10414:
-        bufpush(0x1043C);
-        break;
-      case 0x10415:
-        bufpush(0x1043D);
-        break;
-      case 0x10416:
-        bufpush(0x1043E);
-        break;
-      case 0x10417:
-        bufpush(0x1043F);
-        break;
-      case 0x10418:
-        bufpush(0x10440);
-        break;
-      case 0x10419:
-        bufpush(0x10441);
-        break;
-      case 0x1041A:
-        bufpush(0x10442);
-        break;
-      case 0x1041B:
-        bufpush(0x10443);
-        break;
-      case 0x1041C:
-        bufpush(0x10444);
-        break;
-      case 0x1041D:
-        bufpush(0x10445);
-        break;
-      case 0x1041E:
-        bufpush(0x10446);
-        break;
-      case 0x1041F:
-        bufpush(0x10447);
-        break;
-      case 0x10420:
-        bufpush(0x10448);
-        break;
-      case 0x10421:
-        bufpush(0x10449);
-        break;
-      case 0x10422:
-        bufpush(0x1044A);
-        break;
-      case 0x10423:
-        bufpush(0x1044B);
-        break;
-      case 0x10424:
-        bufpush(0x1044C);
-        break;
-      case 0x10425:
-        bufpush(0x1044D);
+      case 0x023A:
+        bufpush(0x2C65);
+        break;
+      case 0x023B:
+        bufpush(0x023C);
+        break;
+      case 0x023D:
+        bufpush(0x019A);
+        break;
+      case 0x023E:
+        bufpush(0x2C66);
+        break;
+      case 0x0241:
+        bufpush(0x0242);
+        break;
+      case 0x0243:
+        bufpush(0x0180);
+        break;
+      case 0x0244:
+        bufpush(0x0289);
+        break;
+      case 0x0245:
+        bufpush(0x028C);
+        break;
+      case 0x0246:
+        bufpush(0x0247);
+        break;
+      case 0x0248:
+        bufpush(0x0249);
+        break;
+      case 0x024A:
+        bufpush(0x024B);
+        break;
+      case 0x024C:
+        bufpush(0x024D);
+        break;
+      case 0x024E:
+        bufpush(0x024F);
+        break;
+      case 0x0345:
+        bufpush(0x03B9);
+        break;
+      case 0x0370:
+        bufpush(0x0371);
+        break;
+      case 0x0372:
+        bufpush(0x0373);
+        break;
+      case 0x0376:
+        bufpush(0x0377);
+        break;
+      case 0x037F:
+        bufpush(0x03F3);
+        break;
+      case 0x0386:
+        bufpush(0x03AC);
+        break;
+      case 0x0388:
+        bufpush(0x03AD);
+        break;
+      case 0x0389:
+        bufpush(0x03AE);
+        break;
+      case 0x038A:
+        bufpush(0x03AF);
+        break;
+      case 0x038C:
+        bufpush(0x03CC);
+        break;
+      case 0x038E:
+        bufpush(0x03CD);
+        break;
+      case 0x038F:
+        bufpush(0x03CE);
+        break;
+      case 0x0390:
+        bufpush(0x03B9);
+        bufpush(0x0308);
+        bufpush(0x0301);
+        break;
+      case 0x0391:
+        bufpush(0x03B1);
+        break;
+      case 0x0392:
+        bufpush(0x03B2);
+        break;
+      case 0x0393:
+        bufpush(0x03B3);
+        break;
+      case 0x0394:
+        bufpush(0x03B4);
+        break;
+      case 0x0395:
+        bufpush(0x03B5);
+        break;
+      case 0x0396:
+        bufpush(0x03B6);
+        break;
+      case 0x0397:
+        bufpush(0x03B7);
+        break;
+      case 0x0398:
+        bufpush(0x03B8);
+        break;
+      case 0x0399:
+        bufpush(0x03B9);
+        break;
+      case 0x039A:
+        bufpush(0x03BA);
+        break;
+      case 0x039B:
+        bufpush(0x03BB);
+        break;
+      case 0x039C:
+        bufpush(0x03BC);
+        break;
+      case 0x039D:
+        bufpush(0x03BD);
+        break;
+      case 0x039E:
+        bufpush(0x03BE);
+        break;
+      case 0x039F:
+        bufpush(0x03BF);
+        break;
+      case 0x03A0:
+        bufpush(0x03C0);
+        break;
+      case 0x03A1:
+        bufpush(0x03C1);
+        break;
+      case 0x03A3:
+        bufpush(0x03C3);
+        break;
+      case 0x03A4:
+        bufpush(0x03C4);
+        break;
+      case 0x03A5:
+        bufpush(0x03C5);
+        break;
+      case 0x03A6:
+        bufpush(0x03C6);
+        break;
+      case 0x03A7:
+        bufpush(0x03C7);
+        break;
+      case 0x03A8:
+        bufpush(0x03C8);
+        break;
+      case 0x03A9:
+        bufpush(0x03C9);
+        break;
+      case 0x03AA:
+        bufpush(0x03CA);
+        break;
+      case 0x03AB:
+        bufpush(0x03CB);
+        break;
+      case 0x03B0:
+        bufpush(0x03C5);
+        bufpush(0x0308);
+        bufpush(0x0301);
+        break;
+      case 0x03C2:
+        bufpush(0x03C3);
+        break;
+      case 0x03CF:
+        bufpush(0x03D7);
+        break;
+      case 0x03D0:
+        bufpush(0x03B2);
+        break;
+      case 0x03D1:
+        bufpush(0x03B8);
+        break;
+      case 0x03D5:
+        bufpush(0x03C6);
+        break;
+      case 0x03D6:
+        bufpush(0x03C0);
+        break;
+      case 0x03D8:
+        bufpush(0x03D9);
+        break;
+      case 0x03DA:
+        bufpush(0x03DB);
+        break;
+      case 0x03DC:
+        bufpush(0x03DD);
+        break;
+      case 0x03DE:
+        bufpush(0x03DF);
+        break;
+      case 0x03E0:
+        bufpush(0x03E1);
+        break;
+      case 0x03E2:
+        bufpush(0x03E3);
+        break;
+      case 0x03E4:
+        bufpush(0x03E5);
+        break;
+      case 0x03E6:
+        bufpush(0x03E7);
+        break;
+      case 0x03E8:
+        bufpush(0x03E9);
+        break;
+      case 0x03EA:
+        bufpush(0x03EB);
+        break;
+      case 0x03EC:
+        bufpush(0x03ED);
+        break;
+      case 0x03EE:
+        bufpush(0x03EF);
+        break;
+      case 0x03F0:
+        bufpush(0x03BA);
+        break;
+      case 0x03F1:
+        bufpush(0x03C1);
+        break;
+      case 0x03F4:
+        bufpush(0x03B8);
+        break;
+      case 0x03F5:
+        bufpush(0x03B5);
+        break;
+      case 0x03F7:
+        bufpush(0x03F8);
+        break;
+      case 0x03F9:
+        bufpush(0x03F2);
+        break;
+      case 0x03FA:
+        bufpush(0x03FB);
+        break;
+      case 0x03FD:
+        bufpush(0x037B);
+        break;
+      case 0x03FE:
+        bufpush(0x037C);
+        break;
+      case 0x03FF:
+        bufpush(0x037D);
+        break;
+      case 0x0400:
+        bufpush(0x0450);
+        break;
+      case 0x0401:
+        bufpush(0x0451);
+        break;
+      case 0x0402:
+        bufpush(0x0452);
+        break;
+      case 0x0403:
+        bufpush(0x0453);
+        break;
+      case 0x0404:
+        bufpush(0x0454);
+        break;
+      case 0x0405:
+        bufpush(0x0455);
+        break;
+      case 0x0406:
+        bufpush(0x0456);
+        break;
+      case 0x0407:
+        bufpush(0x0457);
+        break;
+      case 0x0408:
+        bufpush(0x0458);
+        break;
+      case 0x0409:
+        bufpush(0x0459);
+        break;
+      case 0x040A:
+        bufpush(0x045A);
+        break;
+      case 0x040B:
+        bufpush(0x045B);
+        break;
+      case 0x040C:
+        bufpush(0x045C);
+        break;
+      case 0x040D:
+        bufpush(0x045D);
+        break;
+      case 0x040E:
+        bufpush(0x045E);
+        break;
+      case 0x040F:
+        bufpush(0x045F);
+        break;
+      case 0x0410:
+        bufpush(0x0430);
+        break;
+      case 0x0411:
+        bufpush(0x0431);
+        break;
+      case 0x0412:
+        bufpush(0x0432);
+        break;
+      case 0x0413:
+        bufpush(0x0433);
+        break;
+      case 0x0414:
+        bufpush(0x0434);
+        break;
+      case 0x0415:
+        bufpush(0x0435);
+        break;
+      case 0x0416:
+        bufpush(0x0436);
+        break;
+      case 0x0417:
+        bufpush(0x0437);
+        break;
+      case 0x0418:
+        bufpush(0x0438);
+        break;
+      case 0x0419:
+        bufpush(0x0439);
+        break;
+      case 0x041A:
+        bufpush(0x043A);
+        break;
+      case 0x041B:
+        bufpush(0x043B);
+        break;
+      case 0x041C:
+        bufpush(0x043C);
+        break;
+      case 0x041D:
+        bufpush(0x043D);
+        break;
+      case 0x041E:
+        bufpush(0x043E);
+        break;
+      case 0x041F:
+        bufpush(0x043F);
+        break;
+      case 0x0420:
+        bufpush(0x0440);
+        break;
+      case 0x0421:
+        bufpush(0x0441);
+        break;
+      case 0x0422:
+        bufpush(0x0442);
+        break;
+      case 0x0423:
+        bufpush(0x0443);
+        break;
+      case 0x0424:
+        bufpush(0x0444);
+        break;
+      case 0x0425:
+        bufpush(0x0445);
+        break;
+      case 0x0426:
+        bufpush(0x0446);
+        break;
+      case 0x0427:
+        bufpush(0x0447);
+        break;
+      case 0x0428:
+        bufpush(0x0448);
+        break;
+      case 0x0429:
+        bufpush(0x0449);
+        break;
+      case 0x042A:
+        bufpush(0x044A);
+        break;
+      case 0x042B:
+        bufpush(0x044B);
+        break;
+      case 0x042C:
+        bufpush(0x044C);
+        break;
+      case 0x042D:
+        bufpush(0x044D);
+        break;
+      case 0x042E:
+        bufpush(0x044E);
+        break;
+      case 0x042F:
+        bufpush(0x044F);
+        break;
+      case 0x0460:
+        bufpush(0x0461);
+        break;
+      case 0x0462:
+        bufpush(0x0463);
+        break;
+      case 0x0464:
+        bufpush(0x0465);
+        break;
+      case 0x0466:
+        bufpush(0x0467);
+        break;
+      case 0x0468:
+        bufpush(0x0469);
+        break;
+      case 0x046A:
+        bufpush(0x046B);
+        break;
+      case 0x046C:
+        bufpush(0x046D);
+        break;
+      case 0x046E:
+        bufpush(0x046F);
+        break;
+      case 0x0470:
+        bufpush(0x0471);
+        break;
+      case 0x0472:
+        bufpush(0x0473);
+        break;
+      case 0x0474:
+        bufpush(0x0475);
+        break;
+      case 0x0476:
+        bufpush(0x0477);
+        break;
+      case 0x0478:
+        bufpush(0x0479);
+        break;
+      case 0x047A:
+        bufpush(0x047B);
+        break;
+      case 0x047C:
+        bufpush(0x047D);
+        break;
+      case 0x047E:
+        bufpush(0x047F);
+        break;
+      case 0x0480:
+        bufpush(0x0481);
+        break;
+      case 0x048A:
+        bufpush(0x048B);
+        break;
+      case 0x048C:
+        bufpush(0x048D);
+        break;
+      case 0x048E:
+        bufpush(0x048F);
+        break;
+      case 0x0490:
+        bufpush(0x0491);
+        break;
+      case 0x0492:
+        bufpush(0x0493);
+        break;
+      case 0x0494:
+        bufpush(0x0495);
+        break;
+      case 0x0496:
+        bufpush(0x0497);
+        break;
+      case 0x0498:
+        bufpush(0x0499);
+        break;
+      case 0x049A:
+        bufpush(0x049B);
+        break;
+      case 0x049C:
+        bufpush(0x049D);
+        break;
+      case 0x049E:
+        bufpush(0x049F);
+        break;
+      case 0x04A0:
+        bufpush(0x04A1);
+        break;
+      case 0x04A2:
+        bufpush(0x04A3);
+        break;
+      case 0x04A4:
+        bufpush(0x04A5);
+        break;
+      case 0x04A6:
+        bufpush(0x04A7);
+        break;
+      case 0x04A8:
+        bufpush(0x04A9);
+        break;
+      case 0x04AA:
+        bufpush(0x04AB);
+        break;
+      case 0x04AC:
+        bufpush(0x04AD);
+        break;
+      case 0x04AE:
+        bufpush(0x04AF);
+        break;
+      case 0x04B0:
+        bufpush(0x04B1);
+        break;
+      case 0x04B2:
+        bufpush(0x04B3);
+        break;
+      case 0x04B4:
+        bufpush(0x04B5);
+        break;
+      case 0x04B6:
+        bufpush(0x04B7);
+        break;
+      case 0x04B8:
+        bufpush(0x04B9);
+        break;
+      case 0x04BA:
+        bufpush(0x04BB);
+        break;
+      case 0x04BC:
+        bufpush(0x04BD);
+        break;
+      case 0x04BE:
+        bufpush(0x04BF);
+        break;
+      case 0x04C0:
+        bufpush(0x04CF);
+        break;
+      case 0x04C1:
+        bufpush(0x04C2);
+        break;
+      case 0x04C3:
+        bufpush(0x04C4);
+        break;
+      case 0x04C5:
+        bufpush(0x04C6);
+        break;
+      case 0x04C7:
+        bufpush(0x04C8);
+        break;
+      case 0x04C9:
+        bufpush(0x04CA);
+        break;
+      case 0x04CB:
+        bufpush(0x04CC);
+        break;
+      case 0x04CD:
+        bufpush(0x04CE);
+        break;
+      case 0x04D0:
+        bufpush(0x04D1);
+        break;
+      case 0x04D2:
+        bufpush(0x04D3);
+        break;
+      case 0x04D4:
+        bufpush(0x04D5);
+        break;
+      case 0x04D6:
+        bufpush(0x04D7);
+        break;
+      case 0x04D8:
+        bufpush(0x04D9);
+        break;
+      case 0x04DA:
+        bufpush(0x04DB);
+        break;
+      case 0x04DC:
+        bufpush(0x04DD);
+        break;
+      case 0x04DE:
+        bufpush(0x04DF);
+        break;
+      case 0x04E0:
+        bufpush(0x04E1);
+        break;
+      case 0x04E2:
+        bufpush(0x04E3);
+        break;
+      case 0x04E4:
+        bufpush(0x04E5);
+        break;
+      case 0x04E6:
+        bufpush(0x04E7);
+        break;
+      case 0x04E8:
+        bufpush(0x04E9);
+        break;
+      case 0x04EA:
+        bufpush(0x04EB);
+        break;
+      case 0x04EC:
+        bufpush(0x04ED);
+        break;
+      case 0x04EE:
+        bufpush(0x04EF);
+        break;
+      case 0x04F0:
+        bufpush(0x04F1);
+        break;
+      case 0x04F2:
+        bufpush(0x04F3);
+        break;
+      case 0x04F4:
+        bufpush(0x04F5);
+        break;
+      case 0x04F6:
+        bufpush(0x04F7);
+        break;
+      case 0x04F8:
+        bufpush(0x04F9);
+        break;
+      case 0x04FA:
+        bufpush(0x04FB);
+        break;
+      case 0x04FC:
+        bufpush(0x04FD);
+        break;
+      case 0x04FE:
+        bufpush(0x04FF);
+        break;
+      case 0x0500:
+        bufpush(0x0501);
+        break;
+      case 0x0502:
+        bufpush(0x0503);
+        break;
+      case 0x0504:
+        bufpush(0x0505);
+        break;
+      case 0x0506:
+        bufpush(0x0507);
+        break;
+      case 0x0508:
+        bufpush(0x0509);
+        break;
+      case 0x050A:
+        bufpush(0x050B);
+        break;
+      case 0x050C:
+        bufpush(0x050D);
+        break;
+      case 0x050E:
+        bufpush(0x050F);
+        break;
+      case 0x0510:
+        bufpush(0x0511);
+        break;
+      case 0x0512:
+        bufpush(0x0513);
+        break;
+      case 0x0514:
+        bufpush(0x0515);
+        break;
+      case 0x0516:
+        bufpush(0x0517);
+        break;
+      case 0x0518:
+        bufpush(0x0519);
+        break;
+      case 0x051A:
+        bufpush(0x051B);
+        break;
+      case 0x051C:
+        bufpush(0x051D);
+        break;
+      case 0x051E:
+        bufpush(0x051F);
+        break;
+      case 0x0520:
+        bufpush(0x0521);
+        break;
+      case 0x0522:
+        bufpush(0x0523);
+        break;
+      case 0x0524:
+        bufpush(0x0525);
+        break;
+      case 0x0526:
+        bufpush(0x0527);
+        break;
+      case 0x0528:
+        bufpush(0x0529);
+        break;
+      case 0x052A:
+        bufpush(0x052B);
+        break;
+      case 0x052C:
+        bufpush(0x052D);
+        break;
+      case 0x052E:
+        bufpush(0x052F);
+        break;
+      case 0x0531:
+        bufpush(0x0561);
+        break;
+      case 0x0532:
+        bufpush(0x0562);
+        break;
+      case 0x0533:
+        bufpush(0x0563);
+        break;
+      case 0x0534:
+        bufpush(0x0564);
+        break;
+      case 0x0535:
+        bufpush(0x0565);
+        break;
+      case 0x0536:
+        bufpush(0x0566);
+        break;
+      case 0x0537:
+        bufpush(0x0567);
+        break;
+      case 0x0538:
+        bufpush(0x0568);
+        break;
+      case 0x0539:
+        bufpush(0x0569);
+        break;
+      case 0x053A:
+        bufpush(0x056A);
+        break;
+      case 0x053B:
+        bufpush(0x056B);
+        break;
+      case 0x053C:
+        bufpush(0x056C);
+        break;
+      case 0x053D:
+        bufpush(0x056D);
+        break;
+      case 0x053E:
+        bufpush(0x056E);
+        break;
+      case 0x053F:
+        bufpush(0x056F);
+        break;
+      case 0x0540:
+        bufpush(0x0570);
+        break;
+      case 0x0541:
+        bufpush(0x0571);
+        break;
+      case 0x0542:
+        bufpush(0x0572);
+        break;
+      case 0x0543:
+        bufpush(0x0573);
+        break;
+      case 0x0544:
+        bufpush(0x0574);
+        break;
+      case 0x0545:
+        bufpush(0x0575);
+        break;
+      case 0x0546:
+        bufpush(0x0576);
+        break;
+      case 0x0547:
+        bufpush(0x0577);
+        break;
+      case 0x0548:
+        bufpush(0x0578);
+        break;
+      case 0x0549:
+        bufpush(0x0579);
+        break;
+      case 0x054A:
+        bufpush(0x057A);
+        break;
+      case 0x054B:
+        bufpush(0x057B);
+        break;
+      case 0x054C:
+        bufpush(0x057C);
+        break;
+      case 0x054D:
+        bufpush(0x057D);
+        break;
+      case 0x054E:
+        bufpush(0x057E);
+        break;
+      case 0x054F:
+        bufpush(0x057F);
+        break;
+      case 0x0550:
+        bufpush(0x0580);
+        break;
+      case 0x0551:
+        bufpush(0x0581);
+        break;
+      case 0x0552:
+        bufpush(0x0582);
+        break;
+      case 0x0553:
+        bufpush(0x0583);
+        break;
+      case 0x0554:
+        bufpush(0x0584);
+        break;
+      case 0x0555:
+        bufpush(0x0585);
+        break;
+      case 0x0556:
+        bufpush(0x0586);
+        break;
+      case 0x0587:
+        bufpush(0x0565);
+        bufpush(0x0582);
+        break;
+      case 0x10A0:
+        bufpush(0x2D00);
+        break;
+      case 0x10A1:
+        bufpush(0x2D01);
+        break;
+      case 0x10A2:
+        bufpush(0x2D02);
+        break;
+      case 0x10A3:
+        bufpush(0x2D03);
+        break;
+      case 0x10A4:
+        bufpush(0x2D04);
+        break;
+      case 0x10A5:
+        bufpush(0x2D05);
+        break;
+      case 0x10A6:
+        bufpush(0x2D06);
+        break;
+      case 0x10A7:
+        bufpush(0x2D07);
+        break;
+      case 0x10A8:
+        bufpush(0x2D08);
+        break;
+      case 0x10A9:
+        bufpush(0x2D09);
+        break;
+      case 0x10AA:
+        bufpush(0x2D0A);
+        break;
+      case 0x10AB:
+        bufpush(0x2D0B);
+        break;
+      case 0x10AC:
+        bufpush(0x2D0C);
+        break;
+      case 0x10AD:
+        bufpush(0x2D0D);
+        break;
+      case 0x10AE:
+        bufpush(0x2D0E);
+        break;
+      case 0x10AF:
+        bufpush(0x2D0F);
+        break;
+      case 0x10B0:
+        bufpush(0x2D10);
+        break;
+      case 0x10B1:
+        bufpush(0x2D11);
+        break;
+      case 0x10B2:
+        bufpush(0x2D12);
+        break;
+      case 0x10B3:
+        bufpush(0x2D13);
+        break;
+      case 0x10B4:
+        bufpush(0x2D14);
+        break;
+      case 0x10B5:
+        bufpush(0x2D15);
+        break;
+      case 0x10B6:
+        bufpush(0x2D16);
+        break;
+      case 0x10B7:
+        bufpush(0x2D17);
+        break;
+      case 0x10B8:
+        bufpush(0x2D18);
+        break;
+      case 0x10B9:
+        bufpush(0x2D19);
+        break;
+      case 0x10BA:
+        bufpush(0x2D1A);
+        break;
+      case 0x10BB:
+        bufpush(0x2D1B);
+        break;
+      case 0x10BC:
+        bufpush(0x2D1C);
+        break;
+      case 0x10BD:
+        bufpush(0x2D1D);
+        break;
+      case 0x10BE:
+        bufpush(0x2D1E);
+        break;
+      case 0x10BF:
+        bufpush(0x2D1F);
+        break;
+      case 0x10C0:
+        bufpush(0x2D20);
+        break;
+      case 0x10C1:
+        bufpush(0x2D21);
+        break;
+      case 0x10C2:
+        bufpush(0x2D22);
+        break;
+      case 0x10C3:
+        bufpush(0x2D23);
+        break;
+      case 0x10C4:
+        bufpush(0x2D24);
+        break;
+      case 0x10C5:
+        bufpush(0x2D25);
+        break;
+      case 0x10C7:
+        bufpush(0x2D27);
+        break;
+      case 0x10CD:
+        bufpush(0x2D2D);
+        break;
+      case 0x13F8:
+        bufpush(0x13F0);
+        break;
+      case 0x13F9:
+        bufpush(0x13F1);
+        break;
+      case 0x13FA:
+        bufpush(0x13F2);
+        break;
+      case 0x13FB:
+        bufpush(0x13F3);
+        break;
+      case 0x13FC:
+        bufpush(0x13F4);
+        break;
+      case 0x13FD:
+        bufpush(0x13F5);
+        break;
+      case 0x1C80:
+        bufpush(0x0432);
+        break;
+      case 0x1C81:
+        bufpush(0x0434);
+        break;
+      case 0x1C82:
+        bufpush(0x043E);
+        break;
+      case 0x1C83:
+        bufpush(0x0441);
+        break;
+      case 0x1C84:
+        bufpush(0x0442);
+        break;
+      case 0x1C85:
+        bufpush(0x0442);
+        break;
+      case 0x1C86:
+        bufpush(0x044A);
+        break;
+      case 0x1C87:
+        bufpush(0x0463);
+        break;
+      case 0x1C88:
+        bufpush(0xA64B);
+        break;
+      case 0x1E00:
+        bufpush(0x1E01);
+        break;
+      case 0x1E02:
+        bufpush(0x1E03);
+        break;
+      case 0x1E04:
+        bufpush(0x1E05);
+        break;
+      case 0x1E06:
+        bufpush(0x1E07);
+        break;
+      case 0x1E08:
+        bufpush(0x1E09);
+        break;
+      case 0x1E0A:
+        bufpush(0x1E0B);
+        break;
+      case 0x1E0C:
+        bufpush(0x1E0D);
+        break;
+      case 0x1E0E:
+        bufpush(0x1E0F);
+        break;
+      case 0x1E10:
+        bufpush(0x1E11);
+        break;
+      case 0x1E12:
+        bufpush(0x1E13);
+        break;
+      case 0x1E14:
+        bufpush(0x1E15);
+        break;
+      case 0x1E16:
+        bufpush(0x1E17);
+        break;
+      case 0x1E18:
+        bufpush(0x1E19);
+        break;
+      case 0x1E1A:
+        bufpush(0x1E1B);
+        break;
+      case 0x1E1C:
+        bufpush(0x1E1D);
+        break;
+      case 0x1E1E:
+        bufpush(0x1E1F);
+        break;
+      case 0x1E20:
+        bufpush(0x1E21);
+        break;
+      case 0x1E22:
+        bufpush(0x1E23);
+        break;
+      case 0x1E24:
+        bufpush(0x1E25);
+        break;
+      case 0x1E26:
+        bufpush(0x1E27);
+        break;
+      case 0x1E28:
+        bufpush(0x1E29);
+        break;
+      case 0x1E2A:
+        bufpush(0x1E2B);
+        break;
+      case 0x1E2C:
+        bufpush(0x1E2D);
+        break;
+      case 0x1E2E:
+        bufpush(0x1E2F);
+        break;
+      case 0x1E30:
+        bufpush(0x1E31);
+        break;
+      case 0x1E32:
+        bufpush(0x1E33);
+        break;
+      case 0x1E34:
+        bufpush(0x1E35);
+        break;
+      case 0x1E36:
+        bufpush(0x1E37);
+        break;
+      case 0x1E38:
+        bufpush(0x1E39);
+        break;
+      case 0x1E3A:
+        bufpush(0x1E3B);
+        break;
+      case 0x1E3C:
+        bufpush(0x1E3D);
+        break;
+      case 0x1E3E:
+        bufpush(0x1E3F);
+        break;
+      case 0x1E40:
+        bufpush(0x1E41);
+        break;
+      case 0x1E42:
+        bufpush(0x1E43);
+        break;
+      case 0x1E44:
+        bufpush(0x1E45);
+        break;
+      case 0x1E46:
+        bufpush(0x1E47);
+        break;
+      case 0x1E48:
+        bufpush(0x1E49);
+        break;
+      case 0x1E4A:
+        bufpush(0x1E4B);
+        break;
+      case 0x1E4C:
+        bufpush(0x1E4D);
+        break;
+      case 0x1E4E:
+        bufpush(0x1E4F);
+        break;
+      case 0x1E50:
+        bufpush(0x1E51);
+        break;
+      case 0x1E52:
+        bufpush(0x1E53);
+        break;
+      case 0x1E54:
+        bufpush(0x1E55);
+        break;
+      case 0x1E56:
+        bufpush(0x1E57);
+        break;
+      case 0x1E58:
+        bufpush(0x1E59);
+        break;
+      case 0x1E5A:
+        bufpush(0x1E5B);
+        break;
+      case 0x1E5C:
+        bufpush(0x1E5D);
+        break;
+      case 0x1E5E:
+        bufpush(0x1E5F);
+        break;
+      case 0x1E60:
+        bufpush(0x1E61);
+        break;
+      case 0x1E62:
+        bufpush(0x1E63);
+        break;
+      case 0x1E64:
+        bufpush(0x1E65);
+        break;
+      case 0x1E66:
+        bufpush(0x1E67);
+        break;
+      case 0x1E68:
+        bufpush(0x1E69);
+        break;
+      case 0x1E6A:
+        bufpush(0x1E6B);
+        break;
+      case 0x1E6C:
+        bufpush(0x1E6D);
+        break;
+      case 0x1E6E:
+        bufpush(0x1E6F);
+        break;
+      case 0x1E70:
+        bufpush(0x1E71);
+        break;
+      case 0x1E72:
+        bufpush(0x1E73);
+        break;
+      case 0x1E74:
+        bufpush(0x1E75);
+        break;
+      case 0x1E76:
+        bufpush(0x1E77);
+        break;
+      case 0x1E78:
+        bufpush(0x1E79);
+        break;
+      case 0x1E7A:
+        bufpush(0x1E7B);
+        break;
+      case 0x1E7C:
+        bufpush(0x1E7D);
+        break;
+      case 0x1E7E:
+        bufpush(0x1E7F);
+        break;
+      case 0x1E80:
+        bufpush(0x1E81);
+        break;
+      case 0x1E82:
+        bufpush(0x1E83);
+        break;
+      case 0x1E84:
+        bufpush(0x1E85);
+        break;
+      case 0x1E86:
+        bufpush(0x1E87);
+        break;
+      case 0x1E88:
+        bufpush(0x1E89);
+        break;
+      case 0x1E8A:
+        bufpush(0x1E8B);
+        break;
+      case 0x1E8C:
+        bufpush(0x1E8D);
+        break;
+      case 0x1E8E:
+        bufpush(0x1E8F);
+        break;
+      case 0x1E90:
+        bufpush(0x1E91);
+        break;
+      case 0x1E92:
+        bufpush(0x1E93);
+        break;
+      case 0x1E94:
+        bufpush(0x1E95);
+        break;
+      case 0x1E96:
+        bufpush(0x0068);
+        bufpush(0x0331);
+        break;
+      case 0x1E97:
+        bufpush(0x0074);
+        bufpush(0x0308);
+        break;
+      case 0x1E98:
+        bufpush(0x0077);
+        bufpush(0x030A);
+        break;
+      case 0x1E99:
+        bufpush(0x0079);
+        bufpush(0x030A);
+        break;
+      case 0x1E9A:
+        bufpush(0x0061);
+        bufpush(0x02BE);
+        break;
+      case 0x1E9B:
+        bufpush(0x1E61);
+        break;
+      case 0x1E9E:
+        bufpush(0x0073);
+        bufpush(0x0073);
+        break;
+      case 0x1EA0:
+        bufpush(0x1EA1);
+        break;
+      case 0x1EA2:
+        bufpush(0x1EA3);
+        break;
+      case 0x1EA4:
+        bufpush(0x1EA5);
+        break;
+      case 0x1EA6:
+        bufpush(0x1EA7);
+        break;
+      case 0x1EA8:
+        bufpush(0x1EA9);
+        break;
+      case 0x1EAA:
+        bufpush(0x1EAB);
+        break;
+      case 0x1EAC:
+        bufpush(0x1EAD);
+        break;
+      case 0x1EAE:
+        bufpush(0x1EAF);
+        break;
+      case 0x1EB0:
+        bufpush(0x1EB1);
+        break;
+      case 0x1EB2:
+        bufpush(0x1EB3);
+        break;
+      case 0x1EB4:
+        bufpush(0x1EB5);
+        break;
+      case 0x1EB6:
+        bufpush(0x1EB7);
+        break;
+      case 0x1EB8:
+        bufpush(0x1EB9);
+        break;
+      case 0x1EBA:
+        bufpush(0x1EBB);
+        break;
+      case 0x1EBC:
+        bufpush(0x1EBD);
+        break;
+      case 0x1EBE:
+        bufpush(0x1EBF);
+        break;
+      case 0x1EC0:
+        bufpush(0x1EC1);
+        break;
+      case 0x1EC2:
+        bufpush(0x1EC3);
+        break;
+      case 0x1EC4:
+        bufpush(0x1EC5);
+        break;
+      case 0x1EC6:
+        bufpush(0x1EC7);
+        break;
+      case 0x1EC8:
+        bufpush(0x1EC9);
+        break;
+      case 0x1ECA:
+        bufpush(0x1ECB);
+        break;
+      case 0x1ECC:
+        bufpush(0x1ECD);
+        break;
+      case 0x1ECE:
+        bufpush(0x1ECF);
+        break;
+      case 0x1ED0:
+        bufpush(0x1ED1);
+        break;
+      case 0x1ED2:
+        bufpush(0x1ED3);
+        break;
+      case 0x1ED4:
+        bufpush(0x1ED5);
+        break;
+      case 0x1ED6:
+        bufpush(0x1ED7);
+        break;
+      case 0x1ED8:
+        bufpush(0x1ED9);
+        break;
+      case 0x1EDA:
+        bufpush(0x1EDB);
+        break;
+      case 0x1EDC:
+        bufpush(0x1EDD);
+        break;
+      case 0x1EDE:
+        bufpush(0x1EDF);
+        break;
+      case 0x1EE0:
+        bufpush(0x1EE1);
+        break;
+      case 0x1EE2:
+        bufpush(0x1EE3);
+        break;
+      case 0x1EE4:
+        bufpush(0x1EE5);
+        break;
+      case 0x1EE6:
+        bufpush(0x1EE7);
+        break;
+      case 0x1EE8:
+        bufpush(0x1EE9);
+        break;
+      case 0x1EEA:
+        bufpush(0x1EEB);
+        break;
+      case 0x1EEC:
+        bufpush(0x1EED);
+        break;
+      case 0x1EEE:
+        bufpush(0x1EEF);
+        break;
+      case 0x1EF0:
+        bufpush(0x1EF1);
+        break;
+      case 0x1EF2:
+        bufpush(0x1EF3);
+        break;
+      case 0x1EF4:
+        bufpush(0x1EF5);
+        break;
+      case 0x1EF6:
+        bufpush(0x1EF7);
+        break;
+      case 0x1EF8:
+        bufpush(0x1EF9);
+        break;
+      case 0x1EFA:
+        bufpush(0x1EFB);
+        break;
+      case 0x1EFC:
+        bufpush(0x1EFD);
+        break;
+      case 0x1EFE:
+        bufpush(0x1EFF);
+        break;
+      case 0x1F08:
+        bufpush(0x1F00);
+        break;
+      case 0x1F09:
+        bufpush(0x1F01);
+        break;
+      case 0x1F0A:
+        bufpush(0x1F02);
+        break;
+      case 0x1F0B:
+        bufpush(0x1F03);
+        break;
+      case 0x1F0C:
+        bufpush(0x1F04);
+        break;
+      case 0x1F0D:
+        bufpush(0x1F05);
+        break;
+      case 0x1F0E:
+        bufpush(0x1F06);
+        break;
+      case 0x1F0F:
+        bufpush(0x1F07);
+        break;
+      case 0x1F18:
+        bufpush(0x1F10);
+        break;
+      case 0x1F19:
+        bufpush(0x1F11);
+        break;
+      case 0x1F1A:
+        bufpush(0x1F12);
+        break;
+      case 0x1F1B:
+        bufpush(0x1F13);
+        break;
+      case 0x1F1C:
+        bufpush(0x1F14);
+        break;
+      case 0x1F1D:
+        bufpush(0x1F15);
+        break;
+      case 0x1F28:
+        bufpush(0x1F20);
+        break;
+      case 0x1F29:
+        bufpush(0x1F21);
+        break;
+      case 0x1F2A:
+        bufpush(0x1F22);
+        break;
+      case 0x1F2B:
+        bufpush(0x1F23);
+        break;
+      case 0x1F2C:
+        bufpush(0x1F24);
+        break;
+      case 0x1F2D:
+        bufpush(0x1F25);
+        break;
+      case 0x1F2E:
+        bufpush(0x1F26);
+        break;
+      case 0x1F2F:
+        bufpush(0x1F27);
+        break;
+      case 0x1F38:
+        bufpush(0x1F30);
+        break;
+      case 0x1F39:
+        bufpush(0x1F31);
+        break;
+      case 0x1F3A:
+        bufpush(0x1F32);
+        break;
+      case 0x1F3B:
+        bufpush(0x1F33);
+        break;
+      case 0x1F3C:
+        bufpush(0x1F34);
+        break;
+      case 0x1F3D:
+        bufpush(0x1F35);
+        break;
+      case 0x1F3E:
+        bufpush(0x1F36);
+        break;
+      case 0x1F3F:
+        bufpush(0x1F37);
+        break;
+      case 0x1F48:
+        bufpush(0x1F40);
+        break;
+      case 0x1F49:
+        bufpush(0x1F41);
+        break;
+      case 0x1F4A:
+        bufpush(0x1F42);
+        break;
+      case 0x1F4B:
+        bufpush(0x1F43);
+        break;
+      case 0x1F4C:
+        bufpush(0x1F44);
+        break;
+      case 0x1F4D:
+        bufpush(0x1F45);
+        break;
+      case 0x1F50:
+        bufpush(0x03C5);
+        bufpush(0x0313);
+        break;
+      case 0x1F52:
+        bufpush(0x03C5);
+        bufpush(0x0313);
+        bufpush(0x0300);
+        break;
+      case 0x1F54:
+        bufpush(0x03C5);
+        bufpush(0x0313);
+        bufpush(0x0301);
+        break;
+      case 0x1F56:
+        bufpush(0x03C5);
+        bufpush(0x0313);
+        bufpush(0x0342);
+        break;
+      case 0x1F59:
+        bufpush(0x1F51);
+        break;
+      case 0x1F5B:
+        bufpush(0x1F53);
+        break;
+      case 0x1F5D:
+        bufpush(0x1F55);
+        break;
+      case 0x1F5F:
+        bufpush(0x1F57);
+        break;
+      case 0x1F68:
+        bufpush(0x1F60);
+        break;
+      case 0x1F69:
+        bufpush(0x1F61);
+        break;
+      case 0x1F6A:
+        bufpush(0x1F62);
+        break;
+      case 0x1F6B:
+        bufpush(0x1F63);
+        break;
+      case 0x1F6C:
+        bufpush(0x1F64);
+        break;
+      case 0x1F6D:
+        bufpush(0x1F65);
+        break;
+      case 0x1F6E:
+        bufpush(0x1F66);
+        break;
+      case 0x1F6F:
+        bufpush(0x1F67);
+        break;
+      case 0x1F80:
+        bufpush(0x1F00);
+        bufpush(0x03B9);
+        break;
+      case 0x1F81:
+        bufpush(0x1F01);
+        bufpush(0x03B9);
+        break;
+      case 0x1F82:
+        bufpush(0x1F02);
+        bufpush(0x03B9);
+        break;
+      case 0x1F83:
+        bufpush(0x1F03);
+        bufpush(0x03B9);
+        break;
+      case 0x1F84:
+        bufpush(0x1F04);
+        bufpush(0x03B9);
+        break;
+      case 0x1F85:
+        bufpush(0x1F05);
+        bufpush(0x03B9);
+        break;
+      case 0x1F86:
+        bufpush(0x1F06);
+        bufpush(0x03B9);
+        break;
+      case 0x1F87:
+        bufpush(0x1F07);
+        bufpush(0x03B9);
+        break;
+      case 0x1F88:
+        bufpush(0x1F00);
+        bufpush(0x03B9);
+        break;
+      case 0x1F89:
+        bufpush(0x1F01);
+        bufpush(0x03B9);
+        break;
+      case 0x1F8A:
+        bufpush(0x1F02);
+        bufpush(0x03B9);
+        break;
+      case 0x1F8B:
+        bufpush(0x1F03);
+        bufpush(0x03B9);
+        break;
+      case 0x1F8C:
+        bufpush(0x1F04);
+        bufpush(0x03B9);
+        break;
+      case 0x1F8D:
+        bufpush(0x1F05);
+        bufpush(0x03B9);
+        break;
+      case 0x1F8E:
+        bufpush(0x1F06);
+        bufpush(0x03B9);
+        break;
+      case 0x1F8F:
+        bufpush(0x1F07);
+        bufpush(0x03B9);
+        break;
+      case 0x1F90:
+        bufpush(0x1F20);
+        bufpush(0x03B9);
+        break;
+      case 0x1F91:
+        bufpush(0x1F21);
+        bufpush(0x03B9);
+        break;
+      case 0x1F92:
+        bufpush(0x1F22);
+        bufpush(0x03B9);
+        break;
+      case 0x1F93:
+        bufpush(0x1F23);
+        bufpush(0x03B9);
+        break;
+      case 0x1F94:
+        bufpush(0x1F24);
+        bufpush(0x03B9);
+        break;
+      case 0x1F95:
+        bufpush(0x1F25);
+        bufpush(0x03B9);
+        break;
+      case 0x1F96:
+        bufpush(0x1F26);
+        bufpush(0x03B9);
+        break;
+      case 0x1F97:
+        bufpush(0x1F27);
+        bufpush(0x03B9);
+        break;
+      case 0x1F98:
+        bufpush(0x1F20);
+        bufpush(0x03B9);
+        break;
+      case 0x1F99:
+        bufpush(0x1F21);
+        bufpush(0x03B9);
+        break;
+      case 0x1F9A:
+        bufpush(0x1F22);
+        bufpush(0x03B9);
+        break;
+      case 0x1F9B:
+        bufpush(0x1F23);
+        bufpush(0x03B9);
+        break;
+      case 0x1F9C:
+        bufpush(0x1F24);
+        bufpush(0x03B9);
+        break;
+      case 0x1F9D:
+        bufpush(0x1F25);
+        bufpush(0x03B9);
+        break;
+      case 0x1F9E:
+        bufpush(0x1F26);
+        bufpush(0x03B9);
+        break;
+      case 0x1F9F:
+        bufpush(0x1F27);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA0:
+        bufpush(0x1F60);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA1:
+        bufpush(0x1F61);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA2:
+        bufpush(0x1F62);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA3:
+        bufpush(0x1F63);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA4:
+        bufpush(0x1F64);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA5:
+        bufpush(0x1F65);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA6:
+        bufpush(0x1F66);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA7:
+        bufpush(0x1F67);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA8:
+        bufpush(0x1F60);
+        bufpush(0x03B9);
+        break;
+      case 0x1FA9:
+        bufpush(0x1F61);
+        bufpush(0x03B9);
+        break;
+      case 0x1FAA:
+        bufpush(0x1F62);
+        bufpush(0x03B9);
+        break;
+      case 0x1FAB:
+        bufpush(0x1F63);
+        bufpush(0x03B9);
+        break;
+      case 0x1FAC:
+        bufpush(0x1F64);
+        bufpush(0x03B9);
+        break;
+      case 0x1FAD:
+        bufpush(0x1F65);
+        bufpush(0x03B9);
+        break;
+      case 0x1FAE:
+        bufpush(0x1F66);
+        bufpush(0x03B9);
+        break;
+      case 0x1FAF:
+        bufpush(0x1F67);
+        bufpush(0x03B9);
+        break;
+      case 0x1FB2:
+        bufpush(0x1F70);
+        bufpush(0x03B9);
+        break;
+      case 0x1FB3:
+        bufpush(0x03B1);
+        bufpush(0x03B9);
+        break;
+      case 0x1FB4:
+        bufpush(0x03AC);
+        bufpush(0x03B9);
+        break;
+      case 0x1FB6:
+        bufpush(0x03B1);
+        bufpush(0x0342);
+        break;
+      case 0x1FB7:
+        bufpush(0x03B1);
+        bufpush(0x0342);
+        bufpush(0x03B9);
+        break;
+      case 0x1FB8:
+        bufpush(0x1FB0);
+        break;
+      case 0x1FB9:
+        bufpush(0x1FB1);
+        break;
+      case 0x1FBA:
+        bufpush(0x1F70);
+        break;
+      case 0x1FBB:
+        bufpush(0x1F71);
+        break;
+      case 0x1FBC:
+        bufpush(0x03B1);
+        bufpush(0x03B9);
+        break;
+      case 0x1FBE:
+        bufpush(0x03B9);
+        break;
+      case 0x1FC2:
+        bufpush(0x1F74);
+        bufpush(0x03B9);
+        break;
+      case 0x1FC3:
+        bufpush(0x03B7);
+        bufpush(0x03B9);
+        break;
+      case 0x1FC4:
+        bufpush(0x03AE);
+        bufpush(0x03B9);
+        break;
+      case 0x1FC6:
+        bufpush(0x03B7);
+        bufpush(0x0342);
+        break;
+      case 0x1FC7:
+        bufpush(0x03B7);
+        bufpush(0x0342);
+        bufpush(0x03B9);
+        break;
+      case 0x1FC8:
+        bufpush(0x1F72);
+        break;
+      case 0x1FC9:
+        bufpush(0x1F73);
+        break;
+      case 0x1FCA:
+        bufpush(0x1F74);
+        break;
+      case 0x1FCB:
+        bufpush(0x1F75);
+        break;
+      case 0x1FCC:
+        bufpush(0x03B7);
+        bufpush(0x03B9);
+        break;
+      case 0x1FD2:
+        bufpush(0x03B9);
+        bufpush(0x0308);
+        bufpush(0x0300);
+        break;
+      case 0x1FD3:
+        bufpush(0x03B9);
+        bufpush(0x0308);
+        bufpush(0x0301);
+        break;
+      case 0x1FD6:
+        bufpush(0x03B9);
+        bufpush(0x0342);
+        break;
+      case 0x1FD7:
+        bufpush(0x03B9);
+        bufpush(0x0308);
+        bufpush(0x0342);
+        break;
+      case 0x1FD8:
+        bufpush(0x1FD0);
+        break;
+      case 0x1FD9:
+        bufpush(0x1FD1);
+        break;
+      case 0x1FDA:
+        bufpush(0x1F76);
+        break;
+      case 0x1FDB:
+        bufpush(0x1F77);
+        break;
+      case 0x1FE2:
+        bufpush(0x03C5);
+        bufpush(0x0308);
+        bufpush(0x0300);
+        break;
+      case 0x1FE3:
+        bufpush(0x03C5);
+        bufpush(0x0308);
+        bufpush(0x0301);
+        break;
+      case 0x1FE4:
+        bufpush(0x03C1);
+        bufpush(0x0313);
+        break;
+      case 0x1FE6:
+        bufpush(0x03C5);
+        bufpush(0x0342);
+        break;
+      case 0x1FE7:
+        bufpush(0x03C5);
+        bufpush(0x0308);
+        bufpush(0x0342);
+        break;
+      case 0x1FE8:
+        bufpush(0x1FE0);
+        break;
+      case 0x1FE9:
+        bufpush(0x1FE1);
+        break;
+      case 0x1FEA:
+        bufpush(0x1F7A);
+        break;
+      case 0x1FEB:
+        bufpush(0x1F7B);
+        break;
+      case 0x1FEC:
+        bufpush(0x1FE5);
+        break;
+      case 0x1FF2:
+        bufpush(0x1F7C);
+        bufpush(0x03B9);
+        break;
+      case 0x1FF3:
+        bufpush(0x03C9);
+        bufpush(0x03B9);
+        break;
+      case 0x1FF4:
+        bufpush(0x03CE);
+        bufpush(0x03B9);
+        break;
+      case 0x1FF6:
+        bufpush(0x03C9);
+        bufpush(0x0342);
+        break;
+      case 0x1FF7:
+        bufpush(0x03C9);
+        bufpush(0x0342);
+        bufpush(0x03B9);
+        break;
+      case 0x1FF8:
+        bufpush(0x1F78);
+        break;
+      case 0x1FF9:
+        bufpush(0x1F79);
+        break;
+      case 0x1FFA:
+        bufpush(0x1F7C);
+        break;
+      case 0x1FFB:
+        bufpush(0x1F7D);
+        break;
+      case 0x1FFC:
+        bufpush(0x03C9);
+        bufpush(0x03B9);
+        break;
+      case 0x2126:
+        bufpush(0x03C9);
+        break;
+      case 0x212A:
+        bufpush(0x006B);
+        break;
+      case 0x212B:
+        bufpush(0x00E5);
+        break;
+      case 0x2132:
+        bufpush(0x214E);
+        break;
+      case 0x2160:
+        bufpush(0x2170);
+        break;
+      case 0x2161:
+        bufpush(0x2171);
+        break;
+      case 0x2162:
+        bufpush(0x2172);
+        break;
+      case 0x2163:
+        bufpush(0x2173);
+        break;
+      case 0x2164:
+        bufpush(0x2174);
+        break;
+      case 0x2165:
+        bufpush(0x2175);
+        break;
+      case 0x2166:
+        bufpush(0x2176);
+        break;
+      case 0x2167:
+        bufpush(0x2177);
+        break;
+      case 0x2168:
+        bufpush(0x2178);
+        break;
+      case 0x2169:
+        bufpush(0x2179);
+        break;
+      case 0x216A:
+        bufpush(0x217A);
+        break;
+      case 0x216B:
+        bufpush(0x217B);
+        break;
+      case 0x216C:
+        bufpush(0x217C);
+        break;
+      case 0x216D:
+        bufpush(0x217D);
+        break;
+      case 0x216E:
+        bufpush(0x217E);
+        break;
+      case 0x216F:
+        bufpush(0x217F);
+        break;
+      case 0x2183:
+        bufpush(0x2184);
+        break;
+      case 0x24B6:
+        bufpush(0x24D0);
+        break;
+      case 0x24B7:
+        bufpush(0x24D1);
+        break;
+      case 0x24B8:
+        bufpush(0x24D2);
+        break;
+      case 0x24B9:
+        bufpush(0x24D3);
+        break;
+      case 0x24BA:
+        bufpush(0x24D4);
+        break;
+      case 0x24BB:
+        bufpush(0x24D5);
+        break;
+      case 0x24BC:
+        bufpush(0x24D6);
+        break;
+      case 0x24BD:
+        bufpush(0x24D7);
+        break;
+      case 0x24BE:
+        bufpush(0x24D8);
+        break;
+      case 0x24BF:
+        bufpush(0x24D9);
+        break;
+      case 0x24C0:
+        bufpush(0x24DA);
+        break;
+      case 0x24C1:
+        bufpush(0x24DB);
+        break;
+      case 0x24C2:
+        bufpush(0x24DC);
+        break;
+      case 0x24C3:
+        bufpush(0x24DD);
+        break;
+      case 0x24C4:
+        bufpush(0x24DE);
+        break;
+      case 0x24C5:
+        bufpush(0x24DF);
+        break;
+      case 0x24C6:
+        bufpush(0x24E0);
+        break;
+      case 0x24C7:
+        bufpush(0x24E1);
+        break;
+      case 0x24C8:
+        bufpush(0x24E2);
+        break;
+      case 0x24C9:
+        bufpush(0x24E3);
+        break;
+      case 0x24CA:
+        bufpush(0x24E4);
+        break;
+      case 0x24CB:
+        bufpush(0x24E5);
+        break;
+      case 0x24CC:
+        bufpush(0x24E6);
+        break;
+      case 0x24CD:
+        bufpush(0x24E7);
+        break;
+      case 0x24CE:
+        bufpush(0x24E8);
+        break;
+      case 0x24CF:
+        bufpush(0x24E9);
+        break;
+      case 0x2C00:
+        bufpush(0x2C30);
+        break;
+      case 0x2C01:
+        bufpush(0x2C31);
+        break;
+      case 0x2C02:
+        bufpush(0x2C32);
+        break;
+      case 0x2C03:
+        bufpush(0x2C33);
+        break;
+      case 0x2C04:
+        bufpush(0x2C34);
+        break;
+      case 0x2C05:
+        bufpush(0x2C35);
+        break;
+      case 0x2C06:
+        bufpush(0x2C36);
+        break;
+      case 0x2C07:
+        bufpush(0x2C37);
+        break;
+      case 0x2C08:
+        bufpush(0x2C38);
+        break;
+      case 0x2C09:
+        bufpush(0x2C39);
+        break;
+      case 0x2C0A:
+        bufpush(0x2C3A);
+        break;
+      case 0x2C0B:
+        bufpush(0x2C3B);
+        break;
+      case 0x2C0C:
+        bufpush(0x2C3C);
+        break;
+      case 0x2C0D:
+        bufpush(0x2C3D);
+        break;
+      case 0x2C0E:
+        bufpush(0x2C3E);
+        break;
+      case 0x2C0F:
+        bufpush(0x2C3F);
+        break;
+      case 0x2C10:
+        bufpush(0x2C40);
+        break;
+      case 0x2C11:
+        bufpush(0x2C41);
+        break;
+      case 0x2C12:
+        bufpush(0x2C42);
+        break;
+      case 0x2C13:
+        bufpush(0x2C43);
+        break;
+      case 0x2C14:
+        bufpush(0x2C44);
+        break;
+      case 0x2C15:
+        bufpush(0x2C45);
+        break;
+      case 0x2C16:
+        bufpush(0x2C46);
+        break;
+      case 0x2C17:
+        bufpush(0x2C47);
+        break;
+      case 0x2C18:
+        bufpush(0x2C48);
+        break;
+      case 0x2C19:
+        bufpush(0x2C49);
+        break;
+      case 0x2C1A:
+        bufpush(0x2C4A);
+        break;
+      case 0x2C1B:
+        bufpush(0x2C4B);
+        break;
+      case 0x2C1C:
+        bufpush(0x2C4C);
+        break;
+      case 0x2C1D:
+        bufpush(0x2C4D);
+        break;
+      case 0x2C1E:
+        bufpush(0x2C4E);
+        break;
+      case 0x2C1F:
+        bufpush(0x2C4F);
+        break;
+      case 0x2C20:
+        bufpush(0x2C50);
+        break;
+      case 0x2C21:
+        bufpush(0x2C51);
+        break;
+      case 0x2C22:
+        bufpush(0x2C52);
+        break;
+      case 0x2C23:
+        bufpush(0x2C53);
+        break;
+      case 0x2C24:
+        bufpush(0x2C54);
+        break;
+      case 0x2C25:
+        bufpush(0x2C55);
+        break;
+      case 0x2C26:
+        bufpush(0x2C56);
+        break;
+      case 0x2C27:
+        bufpush(0x2C57);
+        break;
+      case 0x2C28:
+        bufpush(0x2C58);
+        break;
+      case 0x2C29:
+        bufpush(0x2C59);
+        break;
+      case 0x2C2A:
+        bufpush(0x2C5A);
+        break;
+      case 0x2C2B:
+        bufpush(0x2C5B);
+        break;
+      case 0x2C2C:
+        bufpush(0x2C5C);
+        break;
+      case 0x2C2D:
+        bufpush(0x2C5D);
+        break;
+      case 0x2C2E:
+        bufpush(0x2C5E);
+        break;
+      case 0x2C60:
+        bufpush(0x2C61);
+        break;
+      case 0x2C62:
+        bufpush(0x026B);
+        break;
+      case 0x2C63:
+        bufpush(0x1D7D);
+        break;
+      case 0x2C64:
+        bufpush(0x027D);
+        break;
+      case 0x2C67:
+        bufpush(0x2C68);
+        break;
+      case 0x2C69:
+        bufpush(0x2C6A);
+        break;
+      case 0x2C6B:
+        bufpush(0x2C6C);
+        break;
+      case 0x2C6D:
+        bufpush(0x0251);
+        break;
+      case 0x2C6E:
+        bufpush(0x0271);
+        break;
+      case 0x2C6F:
+        bufpush(0x0250);
+        break;
+      case 0x2C70:
+        bufpush(0x0252);
+        break;
+      case 0x2C72:
+        bufpush(0x2C73);
+        break;
+      case 0x2C75:
+        bufpush(0x2C76);
+        break;
+      case 0x2C7E:
+        bufpush(0x023F);
+        break;
+      case 0x2C7F:
+        bufpush(0x0240);
+        break;
+      case 0x2C80:
+        bufpush(0x2C81);
+        break;
+      case 0x2C82:
+        bufpush(0x2C83);
+        break;
+      case 0x2C84:
+        bufpush(0x2C85);
+        break;
+      case 0x2C86:
+        bufpush(0x2C87);
+        break;
+      case 0x2C88:
+        bufpush(0x2C89);
+        break;
+      case 0x2C8A:
+        bufpush(0x2C8B);
+        break;
+      case 0x2C8C:
+        bufpush(0x2C8D);
+        break;
+      case 0x2C8E:
+        bufpush(0x2C8F);
+        break;
+      case 0x2C90:
+        bufpush(0x2C91);
+        break;
+      case 0x2C92:
+        bufpush(0x2C93);
+        break;
+      case 0x2C94:
+        bufpush(0x2C95);
+        break;
+      case 0x2C96:
+        bufpush(0x2C97);
+        break;
+      case 0x2C98:
+        bufpush(0x2C99);
+        break;
+      case 0x2C9A:
+        bufpush(0x2C9B);
+        break;
+      case 0x2C9C:
+        bufpush(0x2C9D);
+        break;
+      case 0x2C9E:
+        bufpush(0x2C9F);
+        break;
+      case 0x2CA0:
+        bufpush(0x2CA1);
+        break;
+      case 0x2CA2:
+        bufpush(0x2CA3);
+        break;
+      case 0x2CA4:
+        bufpush(0x2CA5);
+        break;
+      case 0x2CA6:
+        bufpush(0x2CA7);
+        break;
+      case 0x2CA8:
+        bufpush(0x2CA9);
+        break;
+      case 0x2CAA:
+        bufpush(0x2CAB);
+        break;
+      case 0x2CAC:
+        bufpush(0x2CAD);
+        break;
+      case 0x2CAE:
+        bufpush(0x2CAF);
+        break;
+      case 0x2CB0:
+        bufpush(0x2CB1);
+        break;
+      case 0x2CB2:
+        bufpush(0x2CB3);
+        break;
+      case 0x2CB4:
+        bufpush(0x2CB5);
+        break;
+      case 0x2CB6:
+        bufpush(0x2CB7);
+        break;
+      case 0x2CB8:
+        bufpush(0x2CB9);
+        break;
+      case 0x2CBA:
+        bufpush(0x2CBB);
+        break;
+      case 0x2CBC:
+        bufpush(0x2CBD);
+        break;
+      case 0x2CBE:
+        bufpush(0x2CBF);
+        break;
+      case 0x2CC0:
+        bufpush(0x2CC1);
+        break;
+      case 0x2CC2:
+        bufpush(0x2CC3);
+        break;
+      case 0x2CC4:
+        bufpush(0x2CC5);
+        break;
+      case 0x2CC6:
+        bufpush(0x2CC7);
+        break;
+      case 0x2CC8:
+        bufpush(0x2CC9);
+        break;
+      case 0x2CCA:
+        bufpush(0x2CCB);
+        break;
+      case 0x2CCC:
+        bufpush(0x2CCD);
+        break;
+      case 0x2CCE:
+        bufpush(0x2CCF);
+        break;
+      case 0x2CD0:
+        bufpush(0x2CD1);
+        break;
+      case 0x2CD2:
+        bufpush(0x2CD3);
+        break;
+      case 0x2CD4:
+        bufpush(0x2CD5);
+        break;
+      case 0x2CD6:
+        bufpush(0x2CD7);
+        break;
+      case 0x2CD8:
+        bufpush(0x2CD9);
+        break;
+      case 0x2CDA:
+        bufpush(0x2CDB);
+        break;
+      case 0x2CDC:
+        bufpush(0x2CDD);
+        break;
+      case 0x2CDE:
+        bufpush(0x2CDF);
+        break;
+      case 0x2CE0:
+        bufpush(0x2CE1);
+        break;
+      case 0x2CE2:
+        bufpush(0x2CE3);
+        break;
+      case 0x2CEB:
+        bufpush(0x2CEC);
+        break;
+      case 0x2CED:
+        bufpush(0x2CEE);
+        break;
+      case 0x2CF2:
+        bufpush(0x2CF3);
+        break;
+      case 0xA640:
+        bufpush(0xA641);
+        break;
+      case 0xA642:
+        bufpush(0xA643);
+        break;
+      case 0xA644:
+        bufpush(0xA645);
+        break;
+      case 0xA646:
+        bufpush(0xA647);
+        break;
+      case 0xA648:
+        bufpush(0xA649);
+        break;
+      case 0xA64A:
+        bufpush(0xA64B);
+        break;
+      case 0xA64C:
+        bufpush(0xA64D);
+        break;
+      case 0xA64E:
+        bufpush(0xA64F);
+        break;
+      case 0xA650:
+        bufpush(0xA651);
+        break;
+      case 0xA652:
+        bufpush(0xA653);
+        break;
+      case 0xA654:
+        bufpush(0xA655);
+        break;
+      case 0xA656:
+        bufpush(0xA657);
+        break;
+      case 0xA658:
+        bufpush(0xA659);
+        break;
+      case 0xA65A:
+        bufpush(0xA65B);
+        break;
+      case 0xA65C:
+        bufpush(0xA65D);
+        break;
+      case 0xA65E:
+        bufpush(0xA65F);
+        break;
+      case 0xA660:
+        bufpush(0xA661);
+        break;
+      case 0xA662:
+        bufpush(0xA663);
+        break;
+      case 0xA664:
+        bufpush(0xA665);
+        break;
+      case 0xA666:
+        bufpush(0xA667);
+        break;
+      case 0xA668:
+        bufpush(0xA669);
+        break;
+      case 0xA66A:
+        bufpush(0xA66B);
+        break;
+      case 0xA66C:
+        bufpush(0xA66D);
+        break;
+      case 0xA680:
+        bufpush(0xA681);
+        break;
+      case 0xA682:
+        bufpush(0xA683);
+        break;
+      case 0xA684:
+        bufpush(0xA685);
+        break;
+      case 0xA686:
+        bufpush(0xA687);
+        break;
+      case 0xA688:
+        bufpush(0xA689);
+        break;
+      case 0xA68A:
+        bufpush(0xA68B);
+        break;
+      case 0xA68C:
+        bufpush(0xA68D);
+        break;
+      case 0xA68E:
+        bufpush(0xA68F);
+        break;
+      case 0xA690:
+        bufpush(0xA691);
+        break;
+      case 0xA692:
+        bufpush(0xA693);
+        break;
+      case 0xA694:
+        bufpush(0xA695);
+        break;
+      case 0xA696:
+        bufpush(0xA697);
+        break;
+      case 0xA698:
+        bufpush(0xA699);
+        break;
+      case 0xA69A:
+        bufpush(0xA69B);
+        break;
+      case 0xA722:
+        bufpush(0xA723);
+        break;
+      case 0xA724:
+        bufpush(0xA725);
+        break;
+      case 0xA726:
+        bufpush(0xA727);
+        break;
+      case 0xA728:
+        bufpush(0xA729);
+        break;
+      case 0xA72A:
+        bufpush(0xA72B);
+        break;
+      case 0xA72C:
+        bufpush(0xA72D);
+        break;
+      case 0xA72E:
+        bufpush(0xA72F);
+        break;
+      case 0xA732:
+        bufpush(0xA733);
+        break;
+      case 0xA734:
+        bufpush(0xA735);
+        break;
+      case 0xA736:
+        bufpush(0xA737);
+        break;
+      case 0xA738:
+        bufpush(0xA739);
+        break;
+      case 0xA73A:
+        bufpush(0xA73B);
+        break;
+      case 0xA73C:
+        bufpush(0xA73D);
+        break;
+      case 0xA73E:
+        bufpush(0xA73F);
+        break;
+      case 0xA740:
+        bufpush(0xA741);
+        break;
+      case 0xA742:
+        bufpush(0xA743);
+        break;
+      case 0xA744:
+        bufpush(0xA745);
+        break;
+      case 0xA746:
+        bufpush(0xA747);
+        break;
+      case 0xA748:
+        bufpush(0xA749);
+        break;
+      case 0xA74A:
+        bufpush(0xA74B);
+        break;
+      case 0xA74C:
+        bufpush(0xA74D);
+        break;
+      case 0xA74E:
+        bufpush(0xA74F);
+        break;
+      case 0xA750:
+        bufpush(0xA751);
+        break;
+      case 0xA752:
+        bufpush(0xA753);
+        break;
+      case 0xA754:
+        bufpush(0xA755);
+        break;
+      case 0xA756:
+        bufpush(0xA757);
+        break;
+      case 0xA758:
+        bufpush(0xA759);
+        break;
+      case 0xA75A:
+        bufpush(0xA75B);
+        break;
+      case 0xA75C:
+        bufpush(0xA75D);
+        break;
+      case 0xA75E:
+        bufpush(0xA75F);
+        break;
+      case 0xA760:
+        bufpush(0xA761);
+        break;
+      case 0xA762:
+        bufpush(0xA763);
+        break;
+      case 0xA764:
+        bufpush(0xA765);
+        break;
+      case 0xA766:
+        bufpush(0xA767);
+        break;
+      case 0xA768:
+        bufpush(0xA769);
+        break;
+      case 0xA76A:
+        bufpush(0xA76B);
+        break;
+      case 0xA76C:
+        bufpush(0xA76D);
+        break;
+      case 0xA76E:
+        bufpush(0xA76F);
+        break;
+      case 0xA779:
+        bufpush(0xA77A);
+        break;
+      case 0xA77B:
+        bufpush(0xA77C);
+        break;
+      case 0xA77D:
+        bufpush(0x1D79);
+        break;
+      case 0xA77E:
+        bufpush(0xA77F);
+        break;
+      case 0xA780:
+        bufpush(0xA781);
+        break;
+      case 0xA782:
+        bufpush(0xA783);
+        break;
+      case 0xA784:
+        bufpush(0xA785);
+        break;
+      case 0xA786:
+        bufpush(0xA787);
+        break;
+      case 0xA78B:
+        bufpush(0xA78C);
+        break;
+      case 0xA78D:
+        bufpush(0x0265);
+        break;
+      case 0xA790:
+        bufpush(0xA791);
+        break;
+      case 0xA792:
+        bufpush(0xA793);
+        break;
+      case 0xA796:
+        bufpush(0xA797);
+        break;
+      case 0xA798:
+        bufpush(0xA799);
+        break;
+      case 0xA79A:
+        bufpush(0xA79B);
+        break;
+      case 0xA79C:
+        bufpush(0xA79D);
+        break;
+      case 0xA79E:
+        bufpush(0xA79F);
+        break;
+      case 0xA7A0:
+        bufpush(0xA7A1);
+        break;
+      case 0xA7A2:
+        bufpush(0xA7A3);
+        break;
+      case 0xA7A4:
+        bufpush(0xA7A5);
+        break;
+      case 0xA7A6:
+        bufpush(0xA7A7);
+        break;
+      case 0xA7A8:
+        bufpush(0xA7A9);
+        break;
+      case 0xA7AA:
+        bufpush(0x0266);
+        break;
+      case 0xA7AB:
+        bufpush(0x025C);
+        break;
+      case 0xA7AC:
+        bufpush(0x0261);
+        break;
+      case 0xA7AD:
+        bufpush(0x026C);
+        break;
+      case 0xA7AE:
+        bufpush(0x026A);
+        break;
+      case 0xA7B0:
+        bufpush(0x029E);
+        break;
+      case 0xA7B1:
+        bufpush(0x0287);
+        break;
+      case 0xA7B2:
+        bufpush(0x029D);
+        break;
+      case 0xA7B3:
+        bufpush(0xAB53);
+        break;
+      case 0xA7B4:
+        bufpush(0xA7B5);
+        break;
+      case 0xA7B6:
+        bufpush(0xA7B7);
+        break;
+      case 0xAB70:
+        bufpush(0x13A0);
+        break;
+      case 0xAB71:
+        bufpush(0x13A1);
+        break;
+      case 0xAB72:
+        bufpush(0x13A2);
+        break;
+      case 0xAB73:
+        bufpush(0x13A3);
+        break;
+      case 0xAB74:
+        bufpush(0x13A4);
+        break;
+      case 0xAB75:
+        bufpush(0x13A5);
+        break;
+      case 0xAB76:
+        bufpush(0x13A6);
+        break;
+      case 0xAB77:
+        bufpush(0x13A7);
+        break;
+      case 0xAB78:
+        bufpush(0x13A8);
+        break;
+      case 0xAB79:
+        bufpush(0x13A9);
+        break;
+      case 0xAB7A:
+        bufpush(0x13AA);
+        break;
+      case 0xAB7B:
+        bufpush(0x13AB);
+        break;
+      case 0xAB7C:
+        bufpush(0x13AC);
+        break;
+      case 0xAB7D:
+        bufpush(0x13AD);
+        break;
+      case 0xAB7E:
+        bufpush(0x13AE);
+        break;
+      case 0xAB7F:
+        bufpush(0x13AF);
+        break;
+      case 0xAB80:
+        bufpush(0x13B0);
+        break;
+      case 0xAB81:
+        bufpush(0x13B1);
+        break;
+      case 0xAB82:
+        bufpush(0x13B2);
+        break;
+      case 0xAB83:
+        bufpush(0x13B3);
+        break;
+      case 0xAB84:
+        bufpush(0x13B4);
+        break;
+      case 0xAB85:
+        bufpush(0x13B5);
+        break;
+      case 0xAB86:
+        bufpush(0x13B6);
+        break;
+      case 0xAB87:
+        bufpush(0x13B7);
+        break;
+      case 0xAB88:
+        bufpush(0x13B8);
+        break;
+      case 0xAB89:
+        bufpush(0x13B9);
+        break;
+      case 0xAB8A:
+        bufpush(0x13BA);
+        break;
+      case 0xAB8B:
+        bufpush(0x13BB);
+        break;
+      case 0xAB8C:
+        bufpush(0x13BC);
+        break;
+      case 0xAB8D:
+        bufpush(0x13BD);
+        break;
+      case 0xAB8E:
+        bufpush(0x13BE);
+        break;
+      case 0xAB8F:
+        bufpush(0x13BF);
+        break;
+      case 0xAB90:
+        bufpush(0x13C0);
+        break;
+      case 0xAB91:
+        bufpush(0x13C1);
+        break;
+      case 0xAB92:
+        bufpush(0x13C2);
+        break;
+      case 0xAB93:
+        bufpush(0x13C3);
+        break;
+      case 0xAB94:
+        bufpush(0x13C4);
+        break;
+      case 0xAB95:
+        bufpush(0x13C5);
+        break;
+      case 0xAB96:
+        bufpush(0x13C6);
+        break;
+      case 0xAB97:
+        bufpush(0x13C7);
+        break;
+      case 0xAB98:
+        bufpush(0x13C8);
+        break;
+      case 0xAB99:
+        bufpush(0x13C9);
+        break;
+      case 0xAB9A:
+        bufpush(0x13CA);
+        break;
+      case 0xAB9B:
+        bufpush(0x13CB);
+        break;
+      case 0xAB9C:
+        bufpush(0x13CC);
+        break;
+      case 0xAB9D:
+        bufpush(0x13CD);
+        break;
+      case 0xAB9E:
+        bufpush(0x13CE);
+        break;
+      case 0xAB9F:
+        bufpush(0x13CF);
+        break;
+      case 0xABA0:
+        bufpush(0x13D0);
+        break;
+      case 0xABA1:
+        bufpush(0x13D1);
+        break;
+      case 0xABA2:
+        bufpush(0x13D2);
+        break;
+      case 0xABA3:
+        bufpush(0x13D3);
+        break;
+      case 0xABA4:
+        bufpush(0x13D4);
+        break;
+      case 0xABA5:
+        bufpush(0x13D5);
+        break;
+      case 0xABA6:
+        bufpush(0x13D6);
+        break;
+      case 0xABA7:
+        bufpush(0x13D7);
+        break;
+      case 0xABA8:
+        bufpush(0x13D8);
+        break;
+      case 0xABA9:
+        bufpush(0x13D9);
+        break;
+      case 0xABAA:
+        bufpush(0x13DA);
+        break;
+      case 0xABAB:
+        bufpush(0x13DB);
+        break;
+      case 0xABAC:
+        bufpush(0x13DC);
+        break;
+      case 0xABAD:
+        bufpush(0x13DD);
+        break;
+      case 0xABAE:
+        bufpush(0x13DE);
+        break;
+      case 0xABAF:
+        bufpush(0x13DF);
+        break;
+      case 0xABB0:
+        bufpush(0x13E0);
+        break;
+      case 0xABB1:
+        bufpush(0x13E1);
+        break;
+      case 0xABB2:
+        bufpush(0x13E2);
+        break;
+      case 0xABB3:
+        bufpush(0x13E3);
+        break;
+      case 0xABB4:
+        bufpush(0x13E4);
+        break;
+      case 0xABB5:
+        bufpush(0x13E5);
+        break;
+      case 0xABB6:
+        bufpush(0x13E6);
+        break;
+      case 0xABB7:
+        bufpush(0x13E7);
+        break;
+      case 0xABB8:
+        bufpush(0x13E8);
+        break;
+      case 0xABB9:
+        bufpush(0x13E9);
+        break;
+      case 0xABBA:
+        bufpush(0x13EA);
+        break;
+      case 0xABBB:
+        bufpush(0x13EB);
+        break;
+      case 0xABBC:
+        bufpush(0x13EC);
+        break;
+      case 0xABBD:
+        bufpush(0x13ED);
+        break;
+      case 0xABBE:
+        bufpush(0x13EE);
+        break;
+      case 0xABBF:
+        bufpush(0x13EF);
+        break;
+      case 0xFB00:
+        bufpush(0x0066);
+        bufpush(0x0066);
+        break;
+      case 0xFB01:
+        bufpush(0x0066);
+        bufpush(0x0069);
+        break;
+      case 0xFB02:
+        bufpush(0x0066);
+        bufpush(0x006C);
+        break;
+      case 0xFB03:
+        bufpush(0x0066);
+        bufpush(0x0066);
+        bufpush(0x0069);
+        break;
+      case 0xFB04:
+        bufpush(0x0066);
+        bufpush(0x0066);
+        bufpush(0x006C);
+        break;
+      case 0xFB05:
+        bufpush(0x0073);
+        bufpush(0x0074);
+        break;
+      case 0xFB06:
+        bufpush(0x0073);
+        bufpush(0x0074);
+        break;
+      case 0xFB13:
+        bufpush(0x0574);
+        bufpush(0x0576);
+        break;
+      case 0xFB14:
+        bufpush(0x0574);
+        bufpush(0x0565);
+        break;
+      case 0xFB15:
+        bufpush(0x0574);
+        bufpush(0x056B);
+        break;
+      case 0xFB16:
+        bufpush(0x057E);
+        bufpush(0x0576);
+        break;
+      case 0xFB17:
+        bufpush(0x0574);
+        bufpush(0x056D);
+        break;
+      case 0xFF21:
+        bufpush(0xFF41);
+        break;
+      case 0xFF22:
+        bufpush(0xFF42);
+        break;
+      case 0xFF23:
+        bufpush(0xFF43);
+        break;
+      case 0xFF24:
+        bufpush(0xFF44);
+        break;
+      case 0xFF25:
+        bufpush(0xFF45);
+        break;
+      case 0xFF26:
+        bufpush(0xFF46);
+        break;
+      case 0xFF27:
+        bufpush(0xFF47);
+        break;
+      case 0xFF28:
+        bufpush(0xFF48);
+        break;
+      case 0xFF29:
+        bufpush(0xFF49);
+        break;
+      case 0xFF2A:
+        bufpush(0xFF4A);
+        break;
+      case 0xFF2B:
+        bufpush(0xFF4B);
+        break;
+      case 0xFF2C:
+        bufpush(0xFF4C);
+        break;
+      case 0xFF2D:
+        bufpush(0xFF4D);
+        break;
+      case 0xFF2E:
+        bufpush(0xFF4E);
+        break;
+      case 0xFF2F:
+        bufpush(0xFF4F);
+        break;
+      case 0xFF30:
+        bufpush(0xFF50);
+        break;
+      case 0xFF31:
+        bufpush(0xFF51);
+        break;
+      case 0xFF32:
+        bufpush(0xFF52);
+        break;
+      case 0xFF33:
+        bufpush(0xFF53);
+        break;
+      case 0xFF34:
+        bufpush(0xFF54);
+        break;
+      case 0xFF35:
+        bufpush(0xFF55);
+        break;
+      case 0xFF36:
+        bufpush(0xFF56);
+        break;
+      case 0xFF37:
+        bufpush(0xFF57);
+        break;
+      case 0xFF38:
+        bufpush(0xFF58);
+        break;
+      case 0xFF39:
+        bufpush(0xFF59);
+        break;
+      case 0xFF3A:
+        bufpush(0xFF5A);
+        break;
+      case 0x10400:
+        bufpush(0x10428);
+        break;
+      case 0x10401:
+        bufpush(0x10429);
+        break;
+      case 0x10402:
+        bufpush(0x1042A);
+        break;
+      case 0x10403:
+        bufpush(0x1042B);
+        break;
+      case 0x10404:
+        bufpush(0x1042C);
+        break;
+      case 0x10405:
+        bufpush(0x1042D);
+        break;
+      case 0x10406:
+        bufpush(0x1042E);
+        break;
+      case 0x10407:
+        bufpush(0x1042F);
+        break;
+      case 0x10408:
+        bufpush(0x10430);
+        break;
+      case 0x10409:
+        bufpush(0x10431);
+        break;
+      case 0x1040A:
+        bufpush(0x10432);
+        break;
+      case 0x1040B:
+        bufpush(0x10433);
+        break;
+      case 0x1040C:
+        bufpush(0x10434);
+        break;
+      case 0x1040D:
+        bufpush(0x10435);
+        break;
+      case 0x1040E:
+        bufpush(0x10436);
+        break;
+      case 0x1040F:
+        bufpush(0x10437);
+        break;
+      case 0x10410:
+        bufpush(0x10438);
+        break;
+      case 0x10411:
+        bufpush(0x10439);
+        break;
+      case 0x10412:
+        bufpush(0x1043A);
+        break;
+      case 0x10413:
+        bufpush(0x1043B);
+        break;
+      case 0x10414:
+        bufpush(0x1043C);
+        break;
+      case 0x10415:
+        bufpush(0x1043D);
+        break;
+      case 0x10416:
+        bufpush(0x1043E);
+        break;
+      case 0x10417:
+        bufpush(0x1043F);
+        break;
+      case 0x10418:
+        bufpush(0x10440);
+        break;
+      case 0x10419:
+        bufpush(0x10441);
+        break;
+      case 0x1041A:
+        bufpush(0x10442);
+        break;
+      case 0x1041B:
+        bufpush(0x10443);
+        break;
+      case 0x1041C:
+        bufpush(0x10444);
+        break;
+      case 0x1041D:
+        bufpush(0x10445);
+        break;
+      case 0x1041E:
+        bufpush(0x10446);
+        break;
+      case 0x1041F:
+        bufpush(0x10447);
+        break;
+      case 0x10420:
+        bufpush(0x10448);
+        break;
+      case 0x10421:
+        bufpush(0x10449);
+        break;
+      case 0x10422:
+        bufpush(0x1044A);
+        break;
+      case 0x10423:
+        bufpush(0x1044B);
+        break;
+      case 0x10424:
+        bufpush(0x1044C);
+        break;
+      case 0x10425:
+        bufpush(0x1044D);
+        break;
+      case 0x10426:
+        bufpush(0x1044E);
+        break;
+      case 0x10427:
+        bufpush(0x1044F);
+        break;
+      case 0x104B0:
+        bufpush(0x104D8);
+        break;
+      case 0x104B1:
+        bufpush(0x104D9);
+        break;
+      case 0x104B2:
+        bufpush(0x104DA);
+        break;
+      case 0x104B3:
+        bufpush(0x104DB);
+        break;
+      case 0x104B4:
+        bufpush(0x104DC);
+        break;
+      case 0x104B5:
+        bufpush(0x104DD);
+        break;
+      case 0x104B6:
+        bufpush(0x104DE);
+        break;
+      case 0x104B7:
+        bufpush(0x104DF);
+        break;
+      case 0x104B8:
+        bufpush(0x104E0);
+        break;
+      case 0x104B9:
+        bufpush(0x104E1);
+        break;
+      case 0x104BA:
+        bufpush(0x104E2);
+        break;
+      case 0x104BB:
+        bufpush(0x104E3);
+        break;
+      case 0x104BC:
+        bufpush(0x104E4);
+        break;
+      case 0x104BD:
+        bufpush(0x104E5);
+        break;
+      case 0x104BE:
+        bufpush(0x104E6);
+        break;
+      case 0x104BF:
+        bufpush(0x104E7);
+        break;
+      case 0x104C0:
+        bufpush(0x104E8);
+        break;
+      case 0x104C1:
+        bufpush(0x104E9);
+        break;
+      case 0x104C2:
+        bufpush(0x104EA);
+        break;
+      case 0x104C3:
+        bufpush(0x104EB);
+        break;
+      case 0x104C4:
+        bufpush(0x104EC);
+        break;
+      case 0x104C5:
+        bufpush(0x104ED);
+        break;
+      case 0x104C6:
+        bufpush(0x104EE);
+        break;
+      case 0x104C7:
+        bufpush(0x104EF);
+        break;
+      case 0x104C8:
+        bufpush(0x104F0);
+        break;
+      case 0x104C9:
+        bufpush(0x104F1);
+        break;
+      case 0x104CA:
+        bufpush(0x104F2);
+        break;
+      case 0x104CB:
+        bufpush(0x104F3);
+        break;
+      case 0x104CC:
+        bufpush(0x104F4);
+        break;
+      case 0x104CD:
+        bufpush(0x104F5);
+        break;
+      case 0x104CE:
+        bufpush(0x104F6);
+        break;
+      case 0x104CF:
+        bufpush(0x104F7);
+        break;
+      case 0x104D0:
+        bufpush(0x104F8);
+        break;
+      case 0x104D1:
+        bufpush(0x104F9);
+        break;
+      case 0x104D2:
+        bufpush(0x104FA);
+        break;
+      case 0x104D3:
+        bufpush(0x104FB);
+        break;
+      case 0x10C80:
+        bufpush(0x10CC0);
+        break;
+      case 0x10C81:
+        bufpush(0x10CC1);
+        break;
+      case 0x10C82:
+        bufpush(0x10CC2);
+        break;
+      case 0x10C83:
+        bufpush(0x10CC3);
+        break;
+      case 0x10C84:
+        bufpush(0x10CC4);
+        break;
+      case 0x10C85:
+        bufpush(0x10CC5);
+        break;
+      case 0x10C86:
+        bufpush(0x10CC6);
+        break;
+      case 0x10C87:
+        bufpush(0x10CC7);
+        break;
+      case 0x10C88:
+        bufpush(0x10CC8);
+        break;
+      case 0x10C89:
+        bufpush(0x10CC9);
+        break;
+      case 0x10C8A:
+        bufpush(0x10CCA);
+        break;
+      case 0x10C8B:
+        bufpush(0x10CCB);
+        break;
+      case 0x10C8C:
+        bufpush(0x10CCC);
+        break;
+      case 0x10C8D:
+        bufpush(0x10CCD);
+        break;
+      case 0x10C8E:
+        bufpush(0x10CCE);
+        break;
+      case 0x10C8F:
+        bufpush(0x10CCF);
+        break;
+      case 0x10C90:
+        bufpush(0x10CD0);
+        break;
+      case 0x10C91:
+        bufpush(0x10CD1);
+        break;
+      case 0x10C92:
+        bufpush(0x10CD2);
+        break;
+      case 0x10C93:
+        bufpush(0x10CD3);
+        break;
+      case 0x10C94:
+        bufpush(0x10CD4);
+        break;
+      case 0x10C95:
+        bufpush(0x10CD5);
+        break;
+      case 0x10C96:
+        bufpush(0x10CD6);
+        break;
+      case 0x10C97:
+        bufpush(0x10CD7);
+        break;
+      case 0x10C98:
+        bufpush(0x10CD8);
+        break;
+      case 0x10C99:
+        bufpush(0x10CD9);
+        break;
+      case 0x10C9A:
+        bufpush(0x10CDA);
+        break;
+      case 0x10C9B:
+        bufpush(0x10CDB);
+        break;
+      case 0x10C9C:
+        bufpush(0x10CDC);
+        break;
+      case 0x10C9D:
+        bufpush(0x10CDD);
+        break;
+      case 0x10C9E:
+        bufpush(0x10CDE);
+        break;
+      case 0x10C9F:
+        bufpush(0x10CDF);
+        break;
+      case 0x10CA0:
+        bufpush(0x10CE0);
+        break;
+      case 0x10CA1:
+        bufpush(0x10CE1);
+        break;
+      case 0x10CA2:
+        bufpush(0x10CE2);
+        break;
+      case 0x10CA3:
+        bufpush(0x10CE3);
+        break;
+      case 0x10CA4:
+        bufpush(0x10CE4);
+        break;
+      case 0x10CA5:
+        bufpush(0x10CE5);
+        break;
+      case 0x10CA6:
+        bufpush(0x10CE6);
+        break;
+      case 0x10CA7:
+        bufpush(0x10CE7);
+        break;
+      case 0x10CA8:
+        bufpush(0x10CE8);
+        break;
+      case 0x10CA9:
+        bufpush(0x10CE9);
+        break;
+      case 0x10CAA:
+        bufpush(0x10CEA);
+        break;
+      case 0x10CAB:
+        bufpush(0x10CEB);
+        break;
+      case 0x10CAC:
+        bufpush(0x10CEC);
+        break;
+      case 0x10CAD:
+        bufpush(0x10CED);
+        break;
+      case 0x10CAE:
+        bufpush(0x10CEE);
+        break;
+      case 0x10CAF:
+        bufpush(0x10CEF);
+        break;
+      case 0x10CB0:
+        bufpush(0x10CF0);
+        break;
+      case 0x10CB1:
+        bufpush(0x10CF1);
+        break;
+      case 0x10CB2:
+        bufpush(0x10CF2);
+        break;
+      case 0x118A0:
+        bufpush(0x118C0);
+        break;
+      case 0x118A1:
+        bufpush(0x118C1);
+        break;
+      case 0x118A2:
+        bufpush(0x118C2);
+        break;
+      case 0x118A3:
+        bufpush(0x118C3);
+        break;
+      case 0x118A4:
+        bufpush(0x118C4);
+        break;
+      case 0x118A5:
+        bufpush(0x118C5);
+        break;
+      case 0x118A6:
+        bufpush(0x118C6);
+        break;
+      case 0x118A7:
+        bufpush(0x118C7);
+        break;
+      case 0x118A8:
+        bufpush(0x118C8);
+        break;
+      case 0x118A9:
+        bufpush(0x118C9);
+        break;
+      case 0x118AA:
+        bufpush(0x118CA);
+        break;
+      case 0x118AB:
+        bufpush(0x118CB);
+        break;
+      case 0x118AC:
+        bufpush(0x118CC);
+        break;
+      case 0x118AD:
+        bufpush(0x118CD);
+        break;
+      case 0x118AE:
+        bufpush(0x118CE);
+        break;
+      case 0x118AF:
+        bufpush(0x118CF);
+        break;
+      case 0x118B0:
+        bufpush(0x118D0);
+        break;
+      case 0x118B1:
+        bufpush(0x118D1);
+        break;
+      case 0x118B2:
+        bufpush(0x118D2);
+        break;
+      case 0x118B3:
+        bufpush(0x118D3);
+        break;
+      case 0x118B4:
+        bufpush(0x118D4);
+        break;
+      case 0x118B5:
+        bufpush(0x118D5);
+        break;
+      case 0x118B6:
+        bufpush(0x118D6);
+        break;
+      case 0x118B7:
+        bufpush(0x118D7);
+        break;
+      case 0x118B8:
+        bufpush(0x118D8);
+        break;
+      case 0x118B9:
+        bufpush(0x118D9);
+        break;
+      case 0x118BA:
+        bufpush(0x118DA);
+        break;
+      case 0x118BB:
+        bufpush(0x118DB);
+        break;
+      case 0x118BC:
+        bufpush(0x118DC);
+        break;
+      case 0x118BD:
+        bufpush(0x118DD);
+        break;
+      case 0x118BE:
+        bufpush(0x118DE);
+        break;
+      case 0x118BF:
+        bufpush(0x118DF);
+        break;
+      case 0x1E900:
+        bufpush(0x1E922);
+        break;
+      case 0x1E901:
+        bufpush(0x1E923);
+        break;
+      case 0x1E902:
+        bufpush(0x1E924);
+        break;
+      case 0x1E903:
+        bufpush(0x1E925);
+        break;
+      case 0x1E904:
+        bufpush(0x1E926);
+        break;
+      case 0x1E905:
+        bufpush(0x1E927);
+        break;
+      case 0x1E906:
+        bufpush(0x1E928);
+        break;
+      case 0x1E907:
+        bufpush(0x1E929);
+        break;
+      case 0x1E908:
+        bufpush(0x1E92A);
+        break;
+      case 0x1E909:
+        bufpush(0x1E92B);
+        break;
+      case 0x1E90A:
+        bufpush(0x1E92C);
+        break;
+      case 0x1E90B:
+        bufpush(0x1E92D);
+        break;
+      case 0x1E90C:
+        bufpush(0x1E92E);
+        break;
+      case 0x1E90D:
+        bufpush(0x1E92F);
+        break;
+      case 0x1E90E:
+        bufpush(0x1E930);
+        break;
+      case 0x1E90F:
+        bufpush(0x1E931);
+        break;
+      case 0x1E910:
+        bufpush(0x1E932);
+        break;
+      case 0x1E911:
+        bufpush(0x1E933);
+        break;
+      case 0x1E912:
+        bufpush(0x1E934);
+        break;
+      case 0x1E913:
+        bufpush(0x1E935);
+        break;
+      case 0x1E914:
+        bufpush(0x1E936);
+        break;
+      case 0x1E915:
+        bufpush(0x1E937);
+        break;
+      case 0x1E916:
+        bufpush(0x1E938);
+        break;
+      case 0x1E917:
+        bufpush(0x1E939);
+        break;
+      case 0x1E918:
+        bufpush(0x1E93A);
+        break;
+      case 0x1E919:
+        bufpush(0x1E93B);
+        break;
+      case 0x1E91A:
+        bufpush(0x1E93C);
+        break;
+      case 0x1E91B:
+        bufpush(0x1E93D);
+        break;
+      case 0x1E91C:
+        bufpush(0x1E93E);
+        break;
+      case 0x1E91D:
+        bufpush(0x1E93F);
+        break;
+      case 0x1E91E:
+        bufpush(0x1E940);
+        break;
+      case 0x1E91F:
+        bufpush(0x1E941);
+        break;
+      case 0x1E920:
+        bufpush(0x1E942);
+        break;
+      case 0x1E921:
+        bufpush(0x1E943);
         break;
       default:
         bufpush(c);
diff --git a/cbits/chunk.h b/cbits/chunk.h
--- a/cbits/chunk.h
+++ b/cbits/chunk.h
@@ -37,6 +37,8 @@
 }
 
 static CMARK_INLINE void cmark_chunk_rtrim(cmark_chunk *c) {
+  assert(!c->alloc);
+
   while (c->len > 0) {
     if (!cmark_isspace(c->data[c->len - 1]))
       break;
diff --git a/cbits/cmark.c b/cbits/cmark.c
--- a/cbits/cmark.c
+++ b/cbits/cmark.c
@@ -12,15 +12,19 @@
 
 static void *xcalloc(size_t nmem, size_t size) {
   void *ptr = calloc(nmem, size);
-  if (!ptr)
+  if (!ptr) {
+    fprintf(stderr, "[cmark] calloc returned null pointer, aborting\n");
     abort();
+  }
   return ptr;
 }
 
 static void *xrealloc(void *ptr, size_t size) {
   void *new_ptr = realloc(ptr, size);
-  if (!new_ptr)
+  if (!new_ptr) {
+    fprintf(stderr, "[cmark] realloc returned null pointer, aborting\n");
     abort();
+  }
   return new_ptr;
 }
 
diff --git a/cbits/cmark.h b/cbits/cmark.h
--- a/cbits/cmark.h
+++ b/cbits/cmark.h
@@ -265,7 +265,8 @@
 const char *cmark_node_get_type_string(cmark_node *node);
 
 /** Returns the string contents of 'node', or an empty
-    string if none is set.
+    string if none is set.  Returns NULL if called on a
+    node that does not have string content.
  */
 CMARK_EXPORT const char *cmark_node_get_literal(cmark_node *node);
 
@@ -334,7 +335,8 @@
 CMARK_EXPORT int cmark_node_set_fence_info(cmark_node *node, const char *info);
 
 /** Returns the URL of a link or image 'node', or an empty string
-    if no URL is set.
+    if no URL is set.  Returns NULL if called on a node that is
+    not a link or image.
  */
 CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node);
 
@@ -344,7 +346,8 @@
 CMARK_EXPORT int cmark_node_set_url(cmark_node *node, const char *url);
 
 /** Returns the title of a link or image 'node', or an empty
-    string if no title is set.
+    string if no title is set.  Returns NULL if called on a node
+    that is not a link or image.
  */
 CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node);
 
@@ -354,7 +357,8 @@
 CMARK_EXPORT int cmark_node_set_title(cmark_node *node, const char *title);
 
 /** Returns the literal "on enter" text for a custom 'node', or
-    an empty string if no on_enter is set.
+    an empty string if no on_enter is set.  Returns NULL if called
+    on a non-custom node.
  */
 CMARK_EXPORT const char *cmark_node_get_on_enter(cmark_node *node);
 
@@ -366,7 +370,8 @@
                                          const char *on_enter);
 
 /** Returns the literal "on exit" text for a custom 'node', or
-    an empty string if no on_exit is set.
+    an empty string if no on_exit is set.  Returns NULL if
+    called on a non-custom node.
  */
 CMARK_EXPORT const char *cmark_node_get_on_exit(cmark_node *node);
 
@@ -563,7 +568,7 @@
  * ### Options affecting parsing
  */
 
-/** Normalize tree by consolidating adjacent text nodes.
+/** Legacy option (no effect).
  */
 #define CMARK_OPT_NORMALIZE (1 << 8)
 
diff --git a/cbits/cmark_version.h b/cbits/cmark_version.h
--- a/cbits/cmark_version.h
+++ b/cbits/cmark_version.h
@@ -1,7 +1,7 @@
 #ifndef CMARK_VERSION_H
 #define CMARK_VERSION_H
 
-#define CMARK_VERSION ((0 << 16) | (27 << 8)  | 1)
-#define CMARK_VERSION_STRING "0.27.1"
+#define CMARK_VERSION ((0 << 16) | (28 << 8)  | 0)
+#define CMARK_VERSION_STRING "0.28.0"
 
 #endif
diff --git a/cbits/commonmark.c b/cbits/commonmark.c
--- a/cbits/commonmark.c
+++ b/cbits/commonmark.c
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <stdint.h>
 #include <assert.h>
 
 #include "config.h"
@@ -81,7 +82,9 @@
 }
 
 static int shortest_unused_backtick_sequence(const char *code) {
-  int32_t used = 1;
+  // note: if the shortest sequence is >= 32, this returns 32
+  // so as not to overflow the bit array.
+  uint32_t used = 1;
   int current = 0;
   size_t i = 0;
   size_t code_len = strlen(code);
@@ -89,8 +92,8 @@
     if (code[i] == '`') {
       current++;
     } else {
-      if (current) {
-        used |= (1 << current);
+      if (current > 0 && current < 32) {
+        used |= (1U << current);
       }
       current = 0;
     }
@@ -98,7 +101,7 @@
   }
   // return number of first bit that is 0:
   i = 0;
-  while (used & 1) {
+  while (i < 32 && used & 1) {
     used = used >> 1;
     i++;
   }
diff --git a/cbits/inlines.c b/cbits/inlines.c
--- a/cbits/inlines.c
+++ b/cbits/inlines.c
@@ -30,10 +30,13 @@
 #define make_emph(mem) make_simple(mem, CMARK_NODE_EMPH)
 #define make_strong(mem) make_simple(mem, CMARK_NODE_STRONG)
 
+#define MAXBACKTICKS 1000
+
 typedef struct delimiter {
   struct delimiter *previous;
   struct delimiter *next;
   cmark_node *inl_text;
+  bufsize_t length;
   unsigned char delim_char;
   bool can_open;
   bool can_close;
@@ -56,6 +59,8 @@
   cmark_reference_map *refmap;
   delimiter *last_delim;
   bracket *last_bracket;
+  bufsize_t backticks[MAXBACKTICKS + 1];
+  bool scanned_for_backticks;
 } subject;
 
 static CMARK_INLINE bool S_is_line_end_char(char c) {
@@ -110,7 +115,8 @@
   c.len = len;
   c.data = (unsigned char *)mem->calloc(len + 1, 1);
   c.alloc = 1;
-  memcpy(c.data, src->data, len);
+  if (len)
+    memcpy(c.data, src->data, len);
   c.data[len] = '\0';
 
   return c;
@@ -145,6 +151,7 @@
 
 static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
                              cmark_reference_map *refmap) {
+  int i;
   e->mem = mem;
   e->input.data = buffer->ptr;
   e->input.len = buffer->size;
@@ -153,6 +160,10 @@
   e->refmap = refmap;
   e->last_delim = NULL;
   e->last_bracket = NULL;
+  for (i = 0; i <= MAXBACKTICKS; i++) {
+    e->backticks[i] = 0;
+  }
+  e->scanned_for_backticks = false;
 }
 
 static CMARK_INLINE int isbacktick(int c) { return (c == '`'); }
@@ -219,23 +230,42 @@
 // after the closing backticks.
 static bufsize_t scan_to_closing_backticks(subject *subj,
                                            bufsize_t openticklength) {
-  // read non backticks
-  unsigned char c;
-  while ((c = peek_char(subj)) && c != '`') {
-    advance(subj);
-  }
-  if (is_eof(subj)) {
-    return 0; // did not find closing ticks, return 0
+
+  bool found = false;
+  if (openticklength > MAXBACKTICKS) {
+    // we limit backtick string length because of the array subj->backticks:
+    return 0;
   }
-  bufsize_t numticks = 0;
-  while (peek_char(subj) == '`') {
-    advance(subj);
-    numticks++;
+  if (subj->scanned_for_backticks &&
+      subj->backticks[openticklength] <= subj->pos) {
+    // return if we already know there's no closer
+    return 0;
   }
-  if (numticks != openticklength) {
-    return (scan_to_closing_backticks(subj, openticklength));
+  while (!found) {
+    // read non backticks
+    unsigned char c;
+    while ((c = peek_char(subj)) && c != '`') {
+      advance(subj);
+    }
+    if (is_eof(subj)) {
+      break;
+    }
+    bufsize_t numticks = 0;
+    while (peek_char(subj) == '`') {
+      advance(subj);
+      numticks++;
+    }
+    // store position of ender
+    if (numticks <= MAXBACKTICKS) {
+      subj->backticks[numticks] = subj->pos - numticks;
+    }
+    if (numticks == openticklength) {
+      return (subj->pos);
+    }
   }
-  return (subj->pos);
+  // got through whole input without finding closer
+  subj->scanned_for_backticks = true;
+  return 0;
 }
 
 // Parse backtick code section or raw backticks, return an inline.
@@ -302,13 +332,13 @@
     after_char = 10;
   }
   left_flanking = numdelims > 0 && !cmark_utf8proc_is_space(after_char) &&
-                  !(cmark_utf8proc_is_punctuation(after_char) &&
-                    !cmark_utf8proc_is_space(before_char) &&
-                    !cmark_utf8proc_is_punctuation(before_char));
+                  (!cmark_utf8proc_is_punctuation(after_char) ||
+                   cmark_utf8proc_is_space(before_char) ||
+                   cmark_utf8proc_is_punctuation(before_char));
   right_flanking = numdelims > 0 && !cmark_utf8proc_is_space(before_char) &&
-                   !(cmark_utf8proc_is_punctuation(before_char) &&
-                     !cmark_utf8proc_is_space(after_char) &&
-                     !cmark_utf8proc_is_punctuation(after_char));
+                   (!cmark_utf8proc_is_punctuation(before_char) ||
+                    cmark_utf8proc_is_space(after_char) ||
+                    cmark_utf8proc_is_punctuation(after_char));
   if (c == '_') {
     *can_open = left_flanking &&
                 (!right_flanking || cmark_utf8proc_is_punctuation(before_char));
@@ -371,6 +401,7 @@
   delim->can_open = can_open;
   delim->can_close = can_close;
   delim->inl_text = inl_text;
+  delim->length = inl_text->as.literal.len;
   delim->previous = subj->last_delim;
   delim->next = NULL;
   if (delim->previous != NULL) {
@@ -485,14 +516,9 @@
   delimiter *opener;
   delimiter *old_closer;
   bool opener_found;
-  bool odd_match;
-  delimiter *openers_bottom[128];
-
-  // initialize openers_bottom:
-  openers_bottom['*'] = stack_bottom;
-  openers_bottom['_'] = stack_bottom;
-  openers_bottom['\''] = stack_bottom;
-  openers_bottom['"'] = stack_bottom;
+  int openers_bottom_index;
+  delimiter *openers_bottom[6] = {stack_bottom, stack_bottom, stack_bottom,
+                                  stack_bottom, stack_bottom, stack_bottom};
 
   // move back to first relevant delim.
   while (closer != NULL && closer->previous != stack_bottom) {
@@ -502,23 +528,35 @@
   // now move forward, looking for closers, and handling each
   while (closer != NULL) {
     if (closer->can_close) {
+      switch (closer->delim_char) {
+      case '"':
+        openers_bottom_index = 0;
+        break;
+      case '\'':
+        openers_bottom_index = 1;
+        break;
+      case '_':
+        openers_bottom_index = 2;
+        break;
+      case '*':
+        openers_bottom_index = 3 + (closer->length % 3);
+        break;
+      default:
+        assert(false);
+      }
+
       // Now look backwards for first matching opener:
       opener = closer->previous;
       opener_found = false;
-      odd_match = false;
-      while (opener != NULL && opener != stack_bottom &&
-             opener != openers_bottom[closer->delim_char]) {
-        // interior closer of size 2 can't match opener of size 1
-        // or of size 1 can't match 2
-        odd_match = (closer->can_open || opener->can_close) &&
-                    ((opener->inl_text->as.literal.len +
-                      closer->inl_text->as.literal.len) %
-                         3 ==
-                     0);
-        if (opener->delim_char == closer->delim_char && opener->can_open &&
-            !odd_match) {
-          opener_found = true;
-          break;
+      while (opener != NULL && opener != openers_bottom[openers_bottom_index]) {
+        if (opener->can_open && opener->delim_char == closer->delim_char) {
+          // interior closer of size 2 can't match opener of size 1
+          // or of size 1 can't match 2
+          if (!(closer->can_open || opener->can_close) ||
+              ((opener->length + closer->length) % 3) != 0) {
+            opener_found = true;
+            break;
+          }
         }
         opener = opener->previous;
       }
@@ -546,13 +584,9 @@
         }
         closer = closer->next;
       }
-      if (!opener_found && !odd_match) {
+      if (!opener_found) {
         // set lower bound for future searches for openers
-        // (we don't do this with 'odd_match' set because
-        // a ** that didn't match an earlier * might turn into
-        // an opener, and the * might be matched by something
-        // else.
-        openers_bottom[old_closer->delim_char] = old_closer->previous;
+        openers_bottom[openers_bottom_index] = old_closer->previous;
         if (!old_closer->can_open) {
           // we can remove a closer that can't be an
           // opener, once we've seen there's no
@@ -565,7 +599,7 @@
     }
   }
   // free all delimiters in list until stack_bottom:
-  while (subj->last_delim != stack_bottom) {
+  while (subj->last_delim != NULL && subj->last_delim != stack_bottom) {
     remove_delimiter(subj, subj->last_delim);
   }
 }
@@ -581,12 +615,7 @@
   cmark_node *tmp, *tmpnext, *emph;
 
   // calculate the actual number of characters used from this closer
-  if (closer_num_chars < 3 || opener_num_chars < 3) {
-    use_delims = closer_num_chars <= opener_num_chars ? closer_num_chars
-                                                      : opener_num_chars;
-  } else { // closer and opener both have >= 3 characters
-    use_delims = closer_num_chars % 2 == 0 ? 2 : 1;
-  }
+  use_delims = (closer_num_chars >= 2 && opener_num_chars >=2) ? 2 : 1;
 
   // remove used characters from associated inlines.
   opener_num_chars -= use_delims;
@@ -666,8 +695,8 @@
   return make_str(subj->mem, cmark_chunk_buf_detach(&ent));
 }
 
-// Clean a URL: remove surrounding whitespace and surrounding <>,
-// and remove \ that escape punctuation.
+// Clean a URL: remove surrounding whitespace, and remove \ that escape
+// punctuation.
 cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) {
   cmark_strbuf buf = CMARK_BUF_INIT(mem);
 
@@ -678,11 +707,7 @@
     return result;
   }
 
-  if (url->data[0] == '<' && url->data[url->len - 1] == '>') {
-    houdini_unescape_html_f(&buf, url->data + 1, url->len - 2);
-  } else {
-    houdini_unescape_html_f(&buf, url->data, url->len);
-  }
+  houdini_unescape_html_f(&buf, url->data, url->len);
 
   cmark_strbuf_unescape(&buf);
   return cmark_chunk_buf_detach(&buf);
@@ -796,12 +821,74 @@
   return 0;
 }
 
+static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) {
+  bufsize_t i = offset;
+  size_t nb_p = 0;
+
+  while (i < input->len) {
+    if (input->data[i] == '\\' &&
+        i + 1 < input-> len &&
+        cmark_ispunct(input->data[i+1]))
+      i += 2;
+    else if (input->data[i] == '(') {
+      ++nb_p;
+      ++i;
+    } else if (input->data[i] == ')') {
+      if (nb_p == 0)
+        break;
+      --nb_p;
+      ++i;
+    } else if (cmark_isspace(input->data[i]))
+      break;
+    else
+      ++i;
+  }
+
+  if (i >= input->len)
+    return -1;
+
+  {
+    cmark_chunk result = {input->data + offset, i - offset, 0};
+    *output = result;
+  }
+  return i - offset;
+}
+
+static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) {
+  bufsize_t i = offset;
+
+  if (i < input->len && input->data[i] == '<') {
+    ++i;
+    while (i < input->len) {
+      if (input->data[i] == '>') {
+        ++i;
+        break;
+      } else if (input->data[i] == '\\')
+        i += 2;
+      else if (cmark_isspace(input->data[i]) || input->data[i] == '<')
+        return manual_scan_link_url_2(input, offset, output);
+      else
+        ++i;
+    }
+  } else {
+    return manual_scan_link_url_2(input, offset, output);
+  }
+
+  if (i >= input->len)
+    return -1;
+
+  {
+    cmark_chunk result = {input->data + offset + 1, i - 2 - offset, 0};
+    *output = result;
+  }
+  return i - offset;
+}
+
 // Return a link, an image, or a literal close bracket.
 static cmark_node *handle_close_bracket(subject *subj) {
   bufsize_t initial_pos, after_link_text_pos;
-  bufsize_t starturl, endurl, starttitle, endtitle, endall;
-  bufsize_t n;
-  bufsize_t sps;
+  bufsize_t endurl, starttitle, endtitle, endall;
+  bufsize_t sps, n;
   cmark_reference *ref = NULL;
   cmark_chunk url_chunk, title_chunk;
   cmark_chunk url, title;
@@ -837,11 +924,10 @@
   // First, look for an inline link.
   if (peek_char(subj) == '(' &&
       ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) &&
-      ((n = scan_link_url(&subj->input, subj->pos + 1 + sps)) > -1)) {
+      ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, &url_chunk)) > -1)) {
 
     // try to parse an explicit link:
-    starturl = subj->pos + 1 + sps; // after (
-    endurl = starturl + n;
+    endurl = subj->pos + 1 + sps + n;
     starttitle = endurl + scan_spacechars(&subj->input, endurl);
 
     // ensure there are spaces btw url and title
@@ -854,7 +940,6 @@
     if (peek_at(subj, endall) == ')') {
       subj->pos = endall + 1;
 
-      url_chunk = cmark_chunk_dup(&subj->input, starturl, endurl - starturl);
       title_chunk =
           cmark_chunk_dup(&subj->input, starttitle, endtitle - starttitle);
       url = cmark_clean_url(subj->mem, &url_chunk);
@@ -1096,7 +1181,10 @@
     ;
 
   process_emphasis(&subj, NULL);
-  // free bracket stack
+  // free bracket and delim stack
+  while (subj.last_delim) {
+    remove_delimiter(&subj, subj.last_delim);
+  }
   while (subj.last_bracket) {
     pop_bracket(&subj);
   }
@@ -1140,9 +1228,8 @@
 
   // parse link url:
   spnl(&subj);
-  matchlen = scan_link_url(&subj.input, subj.pos);
-  if (matchlen) {
-    url = cmark_chunk_dup(&subj.input, subj.pos, matchlen);
+  if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1 &&
+      url.len > 0) {
     subj.pos += matchlen;
   } else {
     return 0;
diff --git a/cbits/latex.c b/cbits/latex.c
--- a/cbits/latex.c
+++ b/cbits/latex.c
@@ -42,7 +42,7 @@
     break;
   case 45:             // '-'
     if (nextc == 45) { // prevent ligature
-      cmark_render_ascii(renderer, "\\-");
+      cmark_render_ascii(renderer, "-{}");
     } else {
       cmark_render_ascii(renderer, "-");
     }
@@ -179,6 +179,10 @@
 
     link_text = node->first_child;
     cmark_consolidate_text_nodes(link_text);
+
+    if (!link_text)
+      return NO_LINK;
+
     realurl = (char *)url;
     realurllen = (int)url_len;
     if (strncmp(realurl, "mailto:", 7) == 0) {
@@ -216,11 +220,10 @@
 static int S_render_node(cmark_renderer *renderer, cmark_node *node,
                          cmark_event_type ev_type, int options) {
   int list_number;
+  int enumlevel;
   char list_number_string[LIST_NUMBER_STRING_SIZE];
   bool entering = (ev_type == CMARK_EVENT_ENTER);
   cmark_list_type list_type;
-  const char *roman_numerals[] = {"",   "i",   "ii",   "iii", "iv", "v",
-                                  "vi", "vii", "viii", "ix",  "x"};
   bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options);
 
   // avoid warning about unused parameter:
@@ -249,13 +252,24 @@
       CR();
       list_number = cmark_node_get_list_start(node);
       if (list_number > 1) {
-        snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d",
-                 list_number);
-        LIT("\\setcounter{enum");
-        LIT((char *)roman_numerals[S_get_enumlevel(node)]);
-        LIT("}{");
-        OUT(list_number_string, false, NORMAL);
-        LIT("}");
+	enumlevel = S_get_enumlevel(node);
+	// latex normally supports only five levels
+	if (enumlevel >= 1 && enumlevel <= 5) {
+          snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d",
+                   list_number);
+          LIT("\\setcounter{enum");
+          switch(enumlevel) {
+	  case 1: LIT("i"); break;
+	  case 2: LIT("ii"); break;
+	  case 3: LIT("iii"); break;
+	  case 4: LIT("iv"); break;
+	  case 5: LIT("v"); break;
+	  default: LIT("i"); break;
+	  }
+          LIT("}{");
+          OUT(list_number_string, false, NORMAL);
+          LIT("}");
+	}
         CR();
       }
     } else {
@@ -390,7 +404,8 @@
       case URL_AUTOLINK:
         LIT("\\url{");
         OUT(url, false, URL);
-        break;
+        LIT("}");
+        return 0; // Don't process further nodes to avoid double-rendering artefacts
       case EMAIL_AUTOLINK:
         LIT("\\href{");
         OUT(url, false, URL);
diff --git a/cbits/node.c b/cbits/node.c
--- a/cbits/node.c
+++ b/cbits/node.c
@@ -85,7 +85,7 @@
   case CMARK_NODE_LIST: {
     cmark_list *list = &node->as.list;
     list->list_type = CMARK_BULLET_LIST;
-    list->start = 1;
+    list->start = 0;
     list->tight = false;
     break;
   }
diff --git a/cbits/scanners.c b/cbits/scanners.c
--- a/cbits/scanners.c
+++ b/cbits/scanners.c
@@ -1,20971 +1,17793 @@
 /* Generated by re2c 0.15.3 */
-#include "scanners.h"
-#include "chunk.h"
-#include <stdlib.h>
-
-bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
-                   bufsize_t offset) {
-  bufsize_t res;
-  unsigned char *ptr = (unsigned char *)c->data;
-
-  if (ptr == NULL || offset > c->len) {
-    return 0;
-  } else {
-    unsigned char lim = ptr[c->len];
-
-    ptr[c->len] = '\0';
-    res = scanner(ptr + offset);
-    ptr[c->len] = lim;
-  }
-
-  return res;
-}
-
-// Try to match a scheme including colon.
-bufsize_t _scan_scheme(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= 'Z') {
-        if (yych == '\n')
-          goto yy2;
-        if (yych <= '@')
-          goto yy4;
-        goto yy3;
-      } else {
-        if (yych <= '`')
-          goto yy4;
-        if (yych <= 'z')
-          goto yy3;
-        if (yych <= 0x7F)
-          goto yy4;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy5;
-        if (yych <= 0xE0)
-          goto yy7;
-        if (yych <= 0xEC)
-          goto yy8;
-        goto yy12;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy8;
-          goto yy9;
-        } else {
-          if (yych <= 0xF3)
-            goto yy10;
-          if (yych <= 0xF4)
-            goto yy11;
-        }
-      }
-    }
-  yy2 : { return 0; }
-  yy3:
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy2;
-        goto yy13;
-      } else {
-        if (yych <= ',')
-          goto yy2;
-        if (yych <= '.')
-          goto yy13;
-        goto yy2;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '9')
-          goto yy13;
-        if (yych <= '@')
-          goto yy2;
-        goto yy13;
-      } else {
-        if (yych <= '`')
-          goto yy2;
-        if (yych <= 'z')
-          goto yy13;
-        goto yy2;
-      }
-    }
-  yy4:
-    yych = *++p;
-    goto yy2;
-  yy5:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy4;
-  yy6:
-    p = marker;
-    goto yy2;
-  yy7:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy5;
-    goto yy6;
-  yy8:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy5;
-    goto yy6;
-  yy9:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy8;
-    goto yy6;
-  yy10:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy8;
-    goto yy6;
-  yy11:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0x8F)
-      goto yy8;
-    goto yy6;
-  yy12:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0x9F)
-      goto yy5;
-    goto yy6;
-  yy13:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych == '+')
-          goto yy16;
-        goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-        goto yy16;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-        goto yy16;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych <= 'z')
-          goto yy16;
-        goto yy6;
-      }
-    }
-  yy14:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy16:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    ++p;
-    if ((yych = *p) == ':')
-      goto yy14;
-    goto yy6;
-  }
-}
-
-// Try to match URI autolink after first <, returning number of chars matched.
-bufsize_t _scan_autolink_uri(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= 'Z') {
-        if (yych == '\n')
-          goto yy48;
-        if (yych <= '@')
-          goto yy50;
-        goto yy49;
-      } else {
-        if (yych <= '`')
-          goto yy50;
-        if (yych <= 'z')
-          goto yy49;
-        if (yych <= 0x7F)
-          goto yy50;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy51;
-        if (yych <= 0xE0)
-          goto yy53;
-        if (yych <= 0xEC)
-          goto yy54;
-        goto yy58;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy54;
-          goto yy55;
-        } else {
-          if (yych <= 0xF3)
-            goto yy56;
-          if (yych <= 0xF4)
-            goto yy57;
-        }
-      }
-    }
-  yy48 : { return 0; }
-  yy49:
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy48;
-        goto yy59;
-      } else {
-        if (yych <= ',')
-          goto yy48;
-        if (yych <= '.')
-          goto yy59;
-        goto yy48;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '9')
-          goto yy59;
-        if (yych <= '@')
-          goto yy48;
-        goto yy59;
-      } else {
-        if (yych <= '`')
-          goto yy48;
-        if (yych <= 'z')
-          goto yy59;
-        goto yy48;
-      }
-    }
-  yy50:
-    yych = *++p;
-    goto yy48;
-  yy51:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy50;
-  yy52:
-    p = marker;
-    goto yy48;
-  yy53:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy51;
-    goto yy52;
-  yy54:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy51;
-    goto yy52;
-  yy55:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy54;
-    goto yy52;
-  yy56:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy54;
-    goto yy52;
-  yy57:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x8F)
-      goto yy54;
-    goto yy52;
-  yy58:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x9F)
-      goto yy51;
-    goto yy52;
-  yy59:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych == '+')
-          goto yy62;
-        goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-        goto yy62;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-        goto yy62;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych <= 'z')
-          goto yy62;
-        goto yy52;
-      }
-    }
-  yy60:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy60;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '<')
-          goto yy52;
-        if (yych <= '>')
-          goto yy99;
-        goto yy52;
-      } else {
-        if (yych <= 0xDF)
-          goto yy92;
-        if (yych <= 0xE0)
-          goto yy93;
-        goto yy94;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy98;
-        if (yych <= 0xEF)
-          goto yy94;
-        goto yy95;
-      } else {
-        if (yych <= 0xF3)
-          goto yy96;
-        if (yych <= 0xF4)
-          goto yy97;
-        goto yy52;
-      }
-    }
-  yy62:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy52;
-      } else {
-        if (yych == '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych == ':')
-      goto yy60;
-    goto yy52;
-  yy92:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy60;
-    goto yy52;
-  yy93:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy92;
-    goto yy52;
-  yy94:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy92;
-    goto yy52;
-  yy95:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy94;
-    goto yy52;
-  yy96:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy94;
-    goto yy52;
-  yy97:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x8F)
-      goto yy94;
-    goto yy52;
-  yy98:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x9F)
-      goto yy92;
-    goto yy52;
-  yy99:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match email autolink after first <, returning num of chars matched.
-bufsize_t _scan_autolink_email(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
-        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= '?') {
-      if (yych <= ')') {
-        if (yych <= ' ') {
-          if (yych != '\n')
-            goto yy105;
-        } else {
-          if (yych == '"')
-            goto yy105;
-          if (yych <= '\'')
-            goto yy104;
-          goto yy105;
-        }
-      } else {
-        if (yych <= '9') {
-          if (yych == ',')
-            goto yy105;
-          goto yy104;
-        } else {
-          if (yych == '=')
-            goto yy104;
-          if (yych <= '>')
-            goto yy105;
-          goto yy104;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= ']') {
-          if (yych <= '@')
-            goto yy105;
-          if (yych <= 'Z')
-            goto yy104;
-          goto yy105;
-        } else {
-          if (yych <= '~')
-            goto yy104;
-          if (yych <= 0x7F)
-            goto yy105;
-          if (yych >= 0xC2)
-            goto yy106;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy108;
-          if (yych == 0xED)
-            goto yy113;
-          goto yy109;
-        } else {
-          if (yych <= 0xF0)
-            goto yy110;
-          if (yych <= 0xF3)
-            goto yy111;
-          if (yych <= 0xF4)
-            goto yy112;
-        }
-      }
-    }
-  yy103 : { return 0; }
-  yy104:
-    yych = *(marker = ++p);
-    if (yych <= ',') {
-      if (yych <= '"') {
-        if (yych == '!')
-          goto yy116;
-        goto yy103;
-      } else {
-        if (yych <= '\'')
-          goto yy116;
-        if (yych <= ')')
-          goto yy103;
-        if (yych <= '+')
-          goto yy116;
-        goto yy103;
-      }
-    } else {
-      if (yych <= '>') {
-        if (yych <= '9')
-          goto yy116;
-        if (yych == '=')
-          goto yy116;
-        goto yy103;
-      } else {
-        if (yych <= 'Z')
-          goto yy116;
-        if (yych <= ']')
-          goto yy103;
-        if (yych <= '~')
-          goto yy116;
-        goto yy103;
-      }
-    }
-  yy105:
-    yych = *++p;
-    goto yy103;
-  yy106:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy105;
-  yy107:
-    p = marker;
-    goto yy103;
-  yy108:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy106;
-    goto yy107;
-  yy109:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy106;
-    goto yy107;
-  yy110:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy109;
-    goto yy107;
-  yy111:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy109;
-    goto yy107;
-  yy112:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0x8F)
-      goto yy109;
-    goto yy107;
-  yy113:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0x9F)
-      goto yy106;
-    goto yy107;
-  yy114:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy117;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy117;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy117;
-      goto yy107;
-    }
-  yy115:
-    ++p;
-    yych = *p;
-  yy116:
-    if (yybm[0 + yych] & 128) {
-      goto yy115;
-    }
-    if (yych <= '>')
-      goto yy107;
-    if (yych <= '@')
-      goto yy114;
-    goto yy107;
-  yy117:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy119;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych >= ':')
-          goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy248;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy247;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy247;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy247;
-        goto yy107;
-      }
-    }
-  yy119:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy248;
-      if (yych <= '/')
-        goto yy107;
-      goto yy247;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy247;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy247;
-        goto yy107;
-      }
-    }
-  yy120:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy123;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy123;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy123;
-      goto yy107;
-    }
-  yy121:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy123:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy125;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych >= ':')
-          goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy127;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy126;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy126;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy126;
-        goto yy107;
-      }
-    }
-  yy125:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy127;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy126:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy129;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy128;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy128;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy128;
-        goto yy107;
-      }
-    }
-  yy127:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy129;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy128:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy131;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy130;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy130;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy130;
-        goto yy107;
-      }
-    }
-  yy129:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy131;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy130:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy133;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy132;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy132;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy132;
-        goto yy107;
-      }
-    }
-  yy131:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy133;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy132:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy135;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy134;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy134;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy134;
-        goto yy107;
-      }
-    }
-  yy133:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy135;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy134:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy137;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy136;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy136;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy136;
-        goto yy107;
-      }
-    }
-  yy135:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy137;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy136:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy139;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy138;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy138;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy138;
-        goto yy107;
-      }
-    }
-  yy137:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy139;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy138:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy141;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy140;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy140;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy140;
-        goto yy107;
-      }
-    }
-  yy139:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy141;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy140:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy143;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy142;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy142;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy142;
-        goto yy107;
-      }
-    }
-  yy141:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy143;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy142:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy145;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy144;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy144;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy144;
-        goto yy107;
-      }
-    }
-  yy143:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy145;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy144:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy147;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy146;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy146;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy146;
-        goto yy107;
-      }
-    }
-  yy145:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy147;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy146:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy149;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy148;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy148;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy148;
-        goto yy107;
-      }
-    }
-  yy147:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy149;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy148:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy151;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy150;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy150;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy150;
-        goto yy107;
-      }
-    }
-  yy149:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy151;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy150:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy153;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy152;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy152;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy152;
-        goto yy107;
-      }
-    }
-  yy151:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy153;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy152:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy155;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy154;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy154;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy154;
-        goto yy107;
-      }
-    }
-  yy153:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy155;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy154:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy157;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy156;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy156;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy156;
-        goto yy107;
-      }
-    }
-  yy155:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy157;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy156:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy159;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy158;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy158;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy158;
-        goto yy107;
-      }
-    }
-  yy157:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy159;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy158:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy161;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy160;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy160;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy160;
-        goto yy107;
-      }
-    }
-  yy159:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy161;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy160:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy163;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy162;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy162;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy162;
-        goto yy107;
-      }
-    }
-  yy161:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy163;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy162:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy165;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy164;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy164;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy164;
-        goto yy107;
-      }
-    }
-  yy163:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy165;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy164:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy167;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy166;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy166;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy166;
-        goto yy107;
-      }
-    }
-  yy165:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy167;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy166:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy169;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy168;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy168;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy168;
-        goto yy107;
-      }
-    }
-  yy167:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy169;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy168:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy171;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy170;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy170;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy170;
-        goto yy107;
-      }
-    }
-  yy169:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy171;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy170:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy173;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy172;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy172;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy172;
-        goto yy107;
-      }
-    }
-  yy171:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy173;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy172:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy175;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy174;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy174;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy174;
-        goto yy107;
-      }
-    }
-  yy173:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy175;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy174:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy177;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy176;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy176;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy176;
-        goto yy107;
-      }
-    }
-  yy175:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy177;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy176:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy179;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy178;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy178;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy178;
-        goto yy107;
-      }
-    }
-  yy177:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy179;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy178:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy181;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy180;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy180;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy180;
-        goto yy107;
-      }
-    }
-  yy179:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy181;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy180:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy183;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy182;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy182;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy182;
-        goto yy107;
-      }
-    }
-  yy181:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy183;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy182:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy185;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy184;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy184;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy184;
-        goto yy107;
-      }
-    }
-  yy183:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy185;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy184:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy187;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy186;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy186;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy186;
-        goto yy107;
-      }
-    }
-  yy185:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy187;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy186:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy189;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy188;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy188;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy188;
-        goto yy107;
-      }
-    }
-  yy187:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy189;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy188:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy191;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy190;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy190;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy190;
-        goto yy107;
-      }
-    }
-  yy189:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy191;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy190:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy193;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy192;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy192;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy192;
-        goto yy107;
-      }
-    }
-  yy191:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy193;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy192:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy195;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy194;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy194;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy194;
-        goto yy107;
-      }
-    }
-  yy193:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy195;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy194:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy197;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy196;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy196;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy196;
-        goto yy107;
-      }
-    }
-  yy195:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy197;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy196:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy199;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy198;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy198;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy198;
-        goto yy107;
-      }
-    }
-  yy197:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy199;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy198:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy201;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy200;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy200;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy200;
-        goto yy107;
-      }
-    }
-  yy199:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy201;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy200:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy203;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy202;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy202;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy202;
-        goto yy107;
-      }
-    }
-  yy201:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy203;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy202:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy205;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy204;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy204;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy204;
-        goto yy107;
-      }
-    }
-  yy203:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy205;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy204:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy207;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy206;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy206;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy206;
-        goto yy107;
-      }
-    }
-  yy205:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy207;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy206:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy209;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy208;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy208;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy208;
-        goto yy107;
-      }
-    }
-  yy207:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy209;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy208:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy211;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy210;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy210;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy210;
-        goto yy107;
-      }
-    }
-  yy209:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy211;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy210:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy213;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy212;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy212;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy212;
-        goto yy107;
-      }
-    }
-  yy211:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy213;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy212:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy215;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy214;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy214;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy214;
-        goto yy107;
-      }
-    }
-  yy213:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy215;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy214:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy217;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy216;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy216;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy216;
-        goto yy107;
-      }
-    }
-  yy215:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy217;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy216:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy219;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy218;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy218;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy218;
-        goto yy107;
-      }
-    }
-  yy217:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy219;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy218:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy221;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy220;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy220;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy220;
-        goto yy107;
-      }
-    }
-  yy219:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy221;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy220:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy223;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy222;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy222;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy222;
-        goto yy107;
-      }
-    }
-  yy221:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy223;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy222:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy225;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy224;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy224;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy224;
-        goto yy107;
-      }
-    }
-  yy223:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy225;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy224:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy227;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy226;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy226;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy226;
-        goto yy107;
-      }
-    }
-  yy225:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy227;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy226:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy229;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy228;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy228;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy228;
-        goto yy107;
-      }
-    }
-  yy227:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy229;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy228:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy231;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy230;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy230;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy230;
-        goto yy107;
-      }
-    }
-  yy229:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy231;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy230:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy233;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy232;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy232;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy232;
-        goto yy107;
-      }
-    }
-  yy231:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy233;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy232:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy235;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy234;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy234;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy234;
-        goto yy107;
-      }
-    }
-  yy233:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy235;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy234:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy237;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy236;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy236;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy236;
-        goto yy107;
-      }
-    }
-  yy235:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy237;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy236:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy239;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy238;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy238;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy238;
-        goto yy107;
-      }
-    }
-  yy237:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy239;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy238:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy241;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy240;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy240;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy240;
-        goto yy107;
-      }
-    }
-  yy239:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy241;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy240:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy243;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy242;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy242;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy242;
-        goto yy107;
-      }
-    }
-  yy241:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy243;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy242:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy245;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy244;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy244;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy244;
-        goto yy107;
-      }
-    }
-  yy243:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy245;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy244:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= '-')
-          goto yy107;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy246;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy246;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy246;
-        goto yy107;
-      }
-    }
-  yy245:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych >= ':')
-        goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy246;
-      if (yych <= '`')
-        goto yy107;
-      if (yych >= '{')
-        goto yy107;
-    }
-  yy246:
-    ++p;
-    yych = *p;
-    if (yych == '.')
-      goto yy120;
-    if (yych == '>')
-      goto yy121;
-    goto yy107;
-  yy247:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy250;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy249;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy249;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy249;
-        goto yy107;
-      }
-    }
-  yy248:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy250;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy249:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy252;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy251;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy251;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy251;
-        goto yy107;
-      }
-    }
-  yy250:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy252;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy251:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy254;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy253;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy253;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy253;
-        goto yy107;
-      }
-    }
-  yy252:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy254;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy253:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy256;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy255;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy255;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy255;
-        goto yy107;
-      }
-    }
-  yy254:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy256;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy255:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy258;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy257;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy257;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy257;
-        goto yy107;
-      }
-    }
-  yy256:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy258;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy257:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy260;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy259;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy259;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy259;
-        goto yy107;
-      }
-    }
-  yy258:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy260;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy259:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy262;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy261;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy261;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy261;
-        goto yy107;
-      }
-    }
-  yy260:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy262;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy261:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy264;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy263;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy263;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy263;
-        goto yy107;
-      }
-    }
-  yy262:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy264;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy263:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy266;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy265;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy265;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy265;
-        goto yy107;
-      }
-    }
-  yy264:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy266;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy265:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy268;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy267;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy267;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy267;
-        goto yy107;
-      }
-    }
-  yy266:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy268;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy267:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy270;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy269;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy269;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy269;
-        goto yy107;
-      }
-    }
-  yy268:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy270;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy269:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy272;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy271;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy271;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy271;
-        goto yy107;
-      }
-    }
-  yy270:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy272;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy271:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy274;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy273;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy273;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy273;
-        goto yy107;
-      }
-    }
-  yy272:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy274;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy273:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy276;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy275;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy275;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy275;
-        goto yy107;
-      }
-    }
-  yy274:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy276;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy275:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy278;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy277;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy277;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy277;
-        goto yy107;
-      }
-    }
-  yy276:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy278;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy277:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy280;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy279;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy279;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy279;
-        goto yy107;
-      }
-    }
-  yy278:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy280;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy279:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy282;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy281;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy281;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy281;
-        goto yy107;
-      }
-    }
-  yy280:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy282;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy281:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy284;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy283;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy283;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy283;
-        goto yy107;
-      }
-    }
-  yy282:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy284;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy283:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy286;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy285;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy285;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy285;
-        goto yy107;
-      }
-    }
-  yy284:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy286;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy285:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy288;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy287;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy287;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy287;
-        goto yy107;
-      }
-    }
-  yy286:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy288;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy287:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy290;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy289;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy289;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy289;
-        goto yy107;
-      }
-    }
-  yy288:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy290;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy289:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy292;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy291;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy291;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy291;
-        goto yy107;
-      }
-    }
-  yy290:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy292;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy291:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy294;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy293;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy293;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy293;
-        goto yy107;
-      }
-    }
-  yy292:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy294;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy293:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy296;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy295;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy295;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy295;
-        goto yy107;
-      }
-    }
-  yy294:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy296;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy295:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy298;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy297;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy297;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy297;
-        goto yy107;
-      }
-    }
-  yy296:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy298;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy297:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy300;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy299;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy299;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy299;
-        goto yy107;
-      }
-    }
-  yy298:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy300;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy299:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy302;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy301;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy301;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy301;
-        goto yy107;
-      }
-    }
-  yy300:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy302;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy301:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy304;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy303;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy303;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy303;
-        goto yy107;
-      }
-    }
-  yy302:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy304;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy303:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy306;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy305;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy305;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy305;
-        goto yy107;
-      }
-    }
-  yy304:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy306;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy305:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy308;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy307;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy307;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy307;
-        goto yy107;
-      }
-    }
-  yy306:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy308;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy307:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy310;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy309;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy309;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy309;
-        goto yy107;
-      }
-    }
-  yy308:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy310;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy309:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy312;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy311;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy311;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy311;
-        goto yy107;
-      }
-    }
-  yy310:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy312;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy311:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy314;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy313;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy313;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy313;
-        goto yy107;
-      }
-    }
-  yy312:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy314;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy313:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy316;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy315;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy315;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy315;
-        goto yy107;
-      }
-    }
-  yy314:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy316;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy315:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy318;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy317;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy317;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy317;
-        goto yy107;
-      }
-    }
-  yy316:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy318;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy317:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy320;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy319;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy319;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy319;
-        goto yy107;
-      }
-    }
-  yy318:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy320;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy319:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy322;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy321;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy321;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy321;
-        goto yy107;
-      }
-    }
-  yy320:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy322;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy321:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy324;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy323;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy323;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy323;
-        goto yy107;
-      }
-    }
-  yy322:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy324;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy323:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy326;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy325;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy325;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy325;
-        goto yy107;
-      }
-    }
-  yy324:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy326;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy325:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy328;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy327;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy327;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy327;
-        goto yy107;
-      }
-    }
-  yy326:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy328;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy327:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy330;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy329;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy329;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy329;
-        goto yy107;
-      }
-    }
-  yy328:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy330;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy329:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy332;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy331;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy331;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy331;
-        goto yy107;
-      }
-    }
-  yy330:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy332;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy331:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy334;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy333;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy333;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy333;
-        goto yy107;
-      }
-    }
-  yy332:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy334;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy333:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy336;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy335;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy335;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy335;
-        goto yy107;
-      }
-    }
-  yy334:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy336;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy335:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy338;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy337;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy337;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy337;
-        goto yy107;
-      }
-    }
-  yy336:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy338;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy337:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy340;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy339;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy339;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy339;
-        goto yy107;
-      }
-    }
-  yy338:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy340;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy339:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy342;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy341;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy341;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy341;
-        goto yy107;
-      }
-    }
-  yy340:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy342;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy341:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy344;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy343;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy343;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy343;
-        goto yy107;
-      }
-    }
-  yy342:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy344;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy343:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy346;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy345;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy345;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy345;
-        goto yy107;
-      }
-    }
-  yy344:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy346;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy345:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy348;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy347;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy347;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy347;
-        goto yy107;
-      }
-    }
-  yy346:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy348;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy347:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy350;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy349;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy349;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy349;
-        goto yy107;
-      }
-    }
-  yy348:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy350;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy349:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy352;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy351;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy351;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy351;
-        goto yy107;
-      }
-    }
-  yy350:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy352;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy351:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy354;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy353;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy353;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy353;
-        goto yy107;
-      }
-    }
-  yy352:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy354;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy353:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy356;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy355;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy355;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy355;
-        goto yy107;
-      }
-    }
-  yy354:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy356;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy355:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy358;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy357;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy357;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy357;
-        goto yy107;
-      }
-    }
-  yy356:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy358;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy357:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy360;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy359;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy359;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy359;
-        goto yy107;
-      }
-    }
-  yy358:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy360;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy359:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy362;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy361;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy361;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy361;
-        goto yy107;
-      }
-    }
-  yy360:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy362;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy361:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy364;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy363;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy363;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy363;
-        goto yy107;
-      }
-    }
-  yy362:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy364;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy363:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy366;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy365;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy365;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy365;
-        goto yy107;
-      }
-    }
-  yy364:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy366;
-      if (yych <= '/')
-        goto yy107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy365:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= '-')
-          goto yy107;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy246;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy246;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy246;
-        goto yy107;
-      }
-    }
-  yy366:
-    ++p;
-    if ((yych = *p) <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy246;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy246;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy246;
-      goto yy107;
-    }
-  }
-}
-
-// Try to match an HTML tag after first <, returning num of chars matched.
-bufsize_t _scan_html_tag(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        /* table 1 .. 8: 0 */
-        0, 230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199, 230,
-        230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
-        230, 230, 230, 199, 230, 70, 230, 230, 230, 230, 134, 230, 230, 230,
-        230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 246, 230, 198, 198, 196, 230, 230, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 230, 230, 226, 230, 246, 198, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 230, 230, 230, 230,
-        230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        /* table 9 .. 11: 256 */
-        0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 32, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 128, 160, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= '`') {
-      if (yych <= '.') {
-        if (yych <= '\n') {
-          if (yych <= '\t')
-            goto yy374;
-        } else {
-          if (yych == '!')
-            goto yy372;
-          goto yy374;
-        }
-      } else {
-        if (yych <= '?') {
-          if (yych <= '/')
-            goto yy371;
-          if (yych <= '>')
-            goto yy374;
-          goto yy373;
-        } else {
-          if (yych <= '@')
-            goto yy374;
-          if (yych <= 'Z')
-            goto yy370;
-          goto yy374;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 'z')
-            goto yy370;
-          if (yych <= 0x7F)
-            goto yy374;
-        } else {
-          if (yych <= 0xDF)
-            goto yy375;
-          if (yych <= 0xE0)
-            goto yy377;
-          goto yy378;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy382;
-          if (yych <= 0xEF)
-            goto yy378;
-          goto yy379;
-        } else {
-          if (yych <= 0xF3)
-            goto yy380;
-          if (yych <= 0xF4)
-            goto yy381;
-        }
-      }
-    }
-  yy369 : { return 0; }
-  yy370:
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy369;
-        if (yych <= '\r')
-          goto yy474;
-        if (yych <= 0x1F)
-          goto yy369;
-        goto yy474;
-      } else {
-        if (yych == '-')
-          goto yy472;
-        if (yych <= '.')
-          goto yy369;
-        goto yy476;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych <= '9')
-          goto yy472;
-        if (yych == '>')
-          goto yy393;
-        goto yy369;
-      } else {
-        if (yych <= 'Z')
-          goto yy472;
-        if (yych <= '`')
-          goto yy369;
-        if (yych <= 'z')
-          goto yy472;
-        goto yy369;
-      }
-    }
-  yy371:
-    yych = *(marker = ++p);
-    if (yych <= '@')
-      goto yy369;
-    if (yych <= 'Z')
-      goto yy468;
-    if (yych <= '`')
-      goto yy369;
-    if (yych <= 'z')
-      goto yy468;
-    goto yy369;
-  yy372:
-    yych = *(marker = ++p);
-    if (yybm[256 + yych] & 64) {
-      goto yy403;
-    }
-    if (yych == '-')
-      goto yy405;
-    if (yych <= '@')
-      goto yy369;
-    if (yych <= '[')
-      goto yy402;
-    goto yy369;
-  yy373:
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy369;
-    if (yych <= 0x7F)
-      goto yy384;
-    if (yych <= 0xC1)
-      goto yy369;
-    if (yych <= 0xF4)
-      goto yy384;
-    goto yy369;
-  yy374:
-    yych = *++p;
-    goto yy369;
-  yy375:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy374;
-  yy376:
-    p = marker;
-    goto yy369;
-  yy377:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy375;
-    goto yy376;
-  yy378:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy375;
-    goto yy376;
-  yy379:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy378;
-    goto yy376;
-  yy380:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy378;
-    goto yy376;
-  yy381:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy378;
-    goto yy376;
-  yy382:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy375;
-    goto yy376;
-  yy383:
-    ++p;
-    yych = *p;
-  yy384:
-    if (yybm[256 + yych] & 32) {
-      goto yy383;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '?')
-          goto yy392;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy385;
-        if (yych <= 0xE0)
-          goto yy386;
-        goto yy387;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy391;
-        if (yych <= 0xEF)
-          goto yy387;
-        goto yy388;
-      } else {
-        if (yych <= 0xF3)
-          goto yy389;
-        if (yych <= 0xF4)
-          goto yy390;
-        goto yy376;
-      }
-    }
-  yy385:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy383;
-    goto yy376;
-  yy386:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy385;
-    goto yy376;
-  yy387:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy385;
-    goto yy376;
-  yy388:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy387;
-    goto yy376;
-  yy389:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy387;
-    goto yy376;
-  yy390:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy387;
-    goto yy376;
-  yy391:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy385;
-    goto yy376;
-  yy392:
-    ++p;
-    yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '=')
-          goto yy383;
-      } else {
-        if (yych <= 0x7F)
-          goto yy383;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy395;
-        goto yy396;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy401;
-        goto yy397;
-      } else {
-        if (yych <= 0xF0)
-          goto yy398;
-        if (yych <= 0xF3)
-          goto yy399;
-        if (yych <= 0xF4)
-          goto yy400;
-        goto yy376;
-      }
-    }
-  yy393:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy395:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy383;
-    goto yy376;
-  yy396:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy395;
-    goto yy376;
-  yy397:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy395;
-    goto yy376;
-  yy398:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy397;
-    goto yy376;
-  yy399:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy397;
-    goto yy376;
-  yy400:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy397;
-    goto yy376;
-  yy401:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy395;
-    goto yy376;
-  yy402:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy438;
-    if (yych == 'c')
-      goto yy438;
-    goto yy376;
-  yy403:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy427;
-    }
-    if (yych <= '@')
-      goto yy376;
-    if (yych <= 'Z')
-      goto yy403;
-    goto yy376;
-  yy405:
-    yych = *++p;
-    if (yych != '-')
-      goto yy376;
-    yych = *++p;
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych != '-')
-          goto yy409;
-      } else {
-        if (yych <= '>')
-          goto yy376;
-        if (yych <= 0xC1)
-          goto yy409;
-        if (yych <= 0xDF)
-          goto yy410;
-        goto yy411;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy416;
-        goto yy412;
-      } else {
-        if (yych <= 0xF0)
-          goto yy413;
-        if (yych <= 0xF3)
-          goto yy414;
-        if (yych <= 0xF4)
-          goto yy415;
-        goto yy409;
-      }
-    }
-    yych = *++p;
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych == '-')
-          goto yy426;
-        goto yy409;
-      } else {
-        if (yych <= '>')
-          goto yy376;
-        if (yych <= 0xC1)
-          goto yy409;
-        if (yych <= 0xDF)
-          goto yy410;
-        goto yy411;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy416;
-        goto yy412;
-      } else {
-        if (yych <= 0xF0)
-          goto yy413;
-        if (yych <= 0xF3)
-          goto yy414;
-        if (yych <= 0xF4)
-          goto yy415;
-        goto yy409;
-      }
-    }
-  yy408:
-    ++p;
-    yych = *p;
-  yy409:
-    if (yybm[256 + yych] & 128) {
-      goto yy408;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '-')
-          goto yy417;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy418;
-        if (yych <= 0xE0)
-          goto yy419;
-        goto yy420;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy424;
-        if (yych <= 0xEF)
-          goto yy420;
-        goto yy421;
-      } else {
-        if (yych <= 0xF3)
-          goto yy422;
-        if (yych <= 0xF4)
-          goto yy423;
-        goto yy376;
-      }
-    }
-  yy410:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy408;
-    goto yy376;
-  yy411:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy410;
-    goto yy376;
-  yy412:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy410;
-    goto yy376;
-  yy413:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy412;
-    goto yy376;
-  yy414:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy412;
-    goto yy376;
-  yy415:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy412;
-    goto yy376;
-  yy416:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy410;
-    goto yy376;
-  yy417:
-    ++p;
-    yych = *p;
-    if (yybm[256 + yych] & 128) {
-      goto yy408;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '-')
-          goto yy425;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy418;
-        if (yych <= 0xE0)
-          goto yy419;
-        goto yy420;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy424;
-        if (yych <= 0xEF)
-          goto yy420;
-        goto yy421;
-      } else {
-        if (yych <= 0xF3)
-          goto yy422;
-        if (yych <= 0xF4)
-          goto yy423;
-        goto yy376;
-      }
-    }
-  yy418:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy408;
-    goto yy376;
-  yy419:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy418;
-    goto yy376;
-  yy420:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy418;
-    goto yy376;
-  yy421:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy420;
-    goto yy376;
-  yy422:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy420;
-    goto yy376;
-  yy423:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy420;
-    goto yy376;
-  yy424:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy418;
-    goto yy376;
-  yy425:
-    yych = *++p;
-    if (yych == '>')
-      goto yy393;
-    goto yy376;
-  yy426:
-    yych = *++p;
-    if (yych == '>')
-      goto yy393;
-    goto yy376;
-  yy427:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy427;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych >= '>')
-          goto yy393;
-      } else {
-        if (yych <= 0x7F)
-          goto yy429;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy431;
-        goto yy432;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy437;
-        goto yy433;
-      } else {
-        if (yych <= 0xF0)
-          goto yy434;
-        if (yych <= 0xF3)
-          goto yy435;
-        if (yych <= 0xF4)
-          goto yy436;
-        goto yy376;
-      }
-    }
-  yy429:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy429;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '>')
-          goto yy393;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy431;
-        if (yych <= 0xE0)
-          goto yy432;
-        goto yy433;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy437;
-        if (yych <= 0xEF)
-          goto yy433;
-        goto yy434;
-      } else {
-        if (yych <= 0xF3)
-          goto yy435;
-        if (yych <= 0xF4)
-          goto yy436;
-        goto yy376;
-      }
-    }
-  yy431:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy429;
-    goto yy376;
-  yy432:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy431;
-    goto yy376;
-  yy433:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy431;
-    goto yy376;
-  yy434:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy433;
-    goto yy376;
-  yy435:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy433;
-    goto yy376;
-  yy436:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy433;
-    goto yy376;
-  yy437:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy431;
-    goto yy376;
-  yy438:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy439;
-    if (yych != 'd')
-      goto yy376;
-  yy439:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy440;
-    if (yych != 'a')
-      goto yy376;
-  yy440:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy441;
-    if (yych != 't')
-      goto yy376;
-  yy441:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy442;
-    if (yych != 'a')
-      goto yy376;
-  yy442:
-    yych = *++p;
-    if (yych != '[')
-      goto yy376;
-  yy443:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy443;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= ']')
-          goto yy452;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy445;
-        if (yych <= 0xE0)
-          goto yy446;
-        goto yy447;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy451;
-        if (yych <= 0xEF)
-          goto yy447;
-        goto yy448;
-      } else {
-        if (yych <= 0xF3)
-          goto yy449;
-        if (yych <= 0xF4)
-          goto yy450;
-        goto yy376;
-      }
-    }
-  yy445:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy376;
-  yy446:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy445;
-    goto yy376;
-  yy447:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy445;
-    goto yy376;
-  yy448:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy447;
-    goto yy376;
-  yy449:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy447;
-    goto yy376;
-  yy450:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy447;
-    goto yy376;
-  yy451:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy445;
-    goto yy376;
-  yy452:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy443;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych >= '^')
-          goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy454;
-        if (yych <= 0xE0)
-          goto yy455;
-        goto yy456;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy460;
-        if (yych <= 0xEF)
-          goto yy456;
-        goto yy457;
-      } else {
-        if (yych <= 0xF3)
-          goto yy458;
-        if (yych <= 0xF4)
-          goto yy459;
-        goto yy376;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '=')
-          goto yy443;
-        goto yy393;
-      } else {
-        if (yych <= 0x7F)
-          goto yy443;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy461;
-        goto yy462;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy467;
-        goto yy463;
-      } else {
-        if (yych <= 0xF0)
-          goto yy464;
-        if (yych <= 0xF3)
-          goto yy465;
-        if (yych <= 0xF4)
-          goto yy466;
-        goto yy376;
-      }
-    }
-  yy454:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy376;
-  yy455:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy454;
-    goto yy376;
-  yy456:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy454;
-    goto yy376;
-  yy457:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy456;
-    goto yy376;
-  yy458:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy456;
-    goto yy376;
-  yy459:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy456;
-    goto yy376;
-  yy460:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy454;
-    goto yy376;
-  yy461:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy376;
-  yy462:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy461;
-    goto yy376;
-  yy463:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy461;
-    goto yy376;
-  yy464:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy463;
-    goto yy376;
-  yy465:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy463;
-    goto yy376;
-  yy466:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy463;
-    goto yy376;
-  yy467:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy461;
-    goto yy376;
-  yy468:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 8) {
-      goto yy468;
-    }
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy376;
-      if (yych >= 0x0E)
-        goto yy376;
-    } else {
-      if (yych <= ' ')
-        goto yy470;
-      if (yych == '>')
-        goto yy393;
-      goto yy376;
-    }
-  yy470:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy376;
-      if (yych <= '\r')
-        goto yy470;
-      goto yy376;
-    } else {
-      if (yych <= ' ')
-        goto yy470;
-      if (yych == '>')
-        goto yy393;
-      goto yy376;
-    }
-  yy472:
-    ++p;
-    yych = *p;
-    if (yych <= '/') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy376;
-        if (yych <= '\r')
-          goto yy474;
-        if (yych <= 0x1F)
-          goto yy376;
-      } else {
-        if (yych == '-')
-          goto yy472;
-        if (yych <= '.')
-          goto yy376;
-        goto yy476;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych <= '9')
-          goto yy472;
-        if (yych == '>')
-          goto yy393;
-        goto yy376;
-      } else {
-        if (yych <= 'Z')
-          goto yy472;
-        if (yych <= '`')
-          goto yy376;
-        if (yych <= 'z')
-          goto yy472;
-        goto yy376;
-      }
-    }
-  yy474:
-    ++p;
-    yych = *p;
-    if (yych <= ':') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy376;
-        if (yych <= '\r')
-          goto yy474;
-        if (yych <= 0x1F)
-          goto yy376;
-        goto yy474;
-      } else {
-        if (yych == '/')
-          goto yy476;
-        if (yych <= '9')
-          goto yy376;
-        goto yy477;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych == '>')
-          goto yy393;
-        if (yych <= '@')
-          goto yy376;
-        goto yy477;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy376;
-          goto yy477;
-        } else {
-          if (yych <= '`')
-            goto yy376;
-          if (yych <= 'z')
-            goto yy477;
-          goto yy376;
-        }
-      }
-    }
-  yy476:
-    yych = *++p;
-    if (yych == '>')
-      goto yy393;
-    goto yy376;
-  yy477:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy477;
-    }
-    if (yych <= ',') {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy376;
-      } else {
-        if (yych != ' ')
-          goto yy376;
-      }
-    } else {
-      if (yych <= '<') {
-        if (yych <= '/')
-          goto yy476;
-        goto yy376;
-      } else {
-        if (yych <= '=')
-          goto yy481;
-        if (yych <= '>')
-          goto yy393;
-        goto yy376;
-      }
-    }
-  yy479:
-    ++p;
-    yych = *p;
-    if (yych <= '<') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy376;
-        if (yych <= '\r')
-          goto yy479;
-        if (yych <= 0x1F)
-          goto yy376;
-        goto yy479;
-      } else {
-        if (yych <= '/') {
-          if (yych <= '.')
-            goto yy376;
-          goto yy476;
-        } else {
-          if (yych == ':')
-            goto yy477;
-          goto yy376;
-        }
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '=')
-          goto yy481;
-        if (yych <= '>')
-          goto yy393;
-        if (yych <= '@')
-          goto yy376;
-        goto yy477;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy376;
-          goto yy477;
-        } else {
-          if (yych <= '`')
-            goto yy376;
-          if (yych <= 'z')
-            goto yy477;
-          goto yy376;
-        }
-      }
-    }
-  yy481:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy483;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '"') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych >= '!')
-          goto yy494;
-      } else {
-        if (yych <= '\'')
-          goto yy492;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy485;
-        goto yy486;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy491;
-        goto yy487;
-      } else {
-        if (yych <= 0xF0)
-          goto yy488;
-        if (yych <= 0xF3)
-          goto yy489;
-        if (yych <= 0xF4)
-          goto yy490;
-        goto yy376;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy483;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '\'') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= ' ')
-          goto yy517;
-        if (yych <= '"')
-          goto yy494;
-        goto yy492;
-      } else {
-        if (yych == '>')
-          goto yy393;
-        if (yych <= 0xC1)
-          goto yy376;
-        goto yy485;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy486;
-        if (yych == 0xED)
-          goto yy491;
-        goto yy487;
-      } else {
-        if (yych <= 0xF0)
-          goto yy488;
-        if (yych <= 0xF3)
-          goto yy489;
-        if (yych <= 0xF4)
-          goto yy490;
-        goto yy376;
-      }
-    }
-  yy483:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy483;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= ' ')
-          goto yy511;
-        goto yy376;
-      } else {
-        if (yych <= '>')
-          goto yy393;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych >= 0xE0)
-          goto yy486;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy491;
-        goto yy487;
-      } else {
-        if (yych <= 0xF0)
-          goto yy488;
-        if (yych <= 0xF3)
-          goto yy489;
-        if (yych <= 0xF4)
-          goto yy490;
-        goto yy376;
-      }
-    }
-  yy485:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy483;
-    goto yy376;
-  yy486:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy485;
-    goto yy376;
-  yy487:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy485;
-    goto yy376;
-  yy488:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy487;
-    goto yy376;
-  yy489:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy487;
-    goto yy376;
-  yy490:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy487;
-    goto yy376;
-  yy491:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy485;
-    goto yy376;
-  yy492:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy492;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '\'')
-          goto yy503;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy504;
-        if (yych <= 0xE0)
-          goto yy505;
-        goto yy506;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy510;
-        if (yych <= 0xEF)
-          goto yy506;
-        goto yy507;
-      } else {
-        if (yych <= 0xF3)
-          goto yy508;
-        if (yych <= 0xF4)
-          goto yy509;
-        goto yy376;
-      }
-    }
-  yy494:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy494;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '"')
-          goto yy503;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy496;
-        if (yych <= 0xE0)
-          goto yy497;
-        goto yy498;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy502;
-        if (yych <= 0xEF)
-          goto yy498;
-        goto yy499;
-      } else {
-        if (yych <= 0xF3)
-          goto yy500;
-        if (yych <= 0xF4)
-          goto yy501;
-        goto yy376;
-      }
-    }
-  yy496:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy494;
-    goto yy376;
-  yy497:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy496;
-    goto yy376;
-  yy498:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy496;
-    goto yy376;
-  yy499:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy498;
-    goto yy376;
-  yy500:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy498;
-    goto yy376;
-  yy501:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy498;
-    goto yy376;
-  yy502:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy496;
-    goto yy376;
-  yy503:
-    ++p;
-    yych = *p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy376;
-      if (yych <= '\r')
-        goto yy474;
-      if (yych <= 0x1F)
-        goto yy376;
-      goto yy474;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy376;
-        goto yy476;
-      } else {
-        if (yych == '>')
-          goto yy393;
-        goto yy376;
-      }
-    }
-  yy504:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy492;
-    goto yy376;
-  yy505:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy504;
-    goto yy376;
-  yy506:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy504;
-    goto yy376;
-  yy507:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy506;
-    goto yy376;
-  yy508:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy506;
-    goto yy376;
-  yy509:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy506;
-    goto yy376;
-  yy510:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy504;
-    goto yy376;
-  yy511:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          goto yy511;
-        } else {
-          if (yych == ' ')
-            goto yy511;
-          if (yych <= '!')
-            goto yy483;
-          goto yy376;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy376;
-          if (yych <= '9')
-            goto yy483;
-        } else {
-          if (yych <= ';')
-            goto yy483;
-          if (yych <= '=')
-            goto yy376;
-          if (yych <= '>')
-            goto yy393;
-          goto yy483;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          if (yych >= '`')
-            goto yy376;
-        } else {
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          if (yych <= 0xC1)
-            goto yy376;
-          goto yy485;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych == 0xED)
-            goto yy491;
-          goto yy487;
-        } else {
-          if (yych <= 0xF0)
-            goto yy488;
-          if (yych <= 0xF3)
-            goto yy489;
-          if (yych <= 0xF4)
-            goto yy490;
-          goto yy376;
-        }
-      }
-    }
-  yy513:
-    ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          if (yych >= 0x0E)
-            goto yy483;
-        } else {
-          if (yych <= ' ')
-            goto yy515;
-          if (yych == '"')
-            goto yy376;
-          goto yy483;
-        }
-      } else {
-        if (yych <= '/') {
-          if (yych <= '\'')
-            goto yy376;
-          if (yych <= ',')
-            goto yy483;
-          if (yych <= '.')
-            goto yy513;
-          goto yy483;
-        } else {
-          if (yych <= ';') {
-            if (yych <= ':')
-              goto yy513;
-            goto yy483;
-          } else {
-            if (yych <= '<')
-              goto yy376;
-            if (yych <= '=')
-              goto yy481;
-            goto yy393;
-          }
-        }
-      }
-    } else {
-      if (yych <= 0xC1) {
-        if (yych <= '_') {
-          if (yych <= '@')
-            goto yy483;
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          goto yy513;
-        } else {
-          if (yych <= '`')
-            goto yy376;
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          goto yy376;
-        }
-      } else {
-        if (yych <= 0xED) {
-          if (yych <= 0xDF)
-            goto yy485;
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych <= 0xEC)
-            goto yy487;
-          goto yy491;
-        } else {
-          if (yych <= 0xF0) {
-            if (yych <= 0xEF)
-              goto yy487;
-            goto yy488;
-          } else {
-            if (yych <= 0xF3)
-              goto yy489;
-            if (yych <= 0xF4)
-              goto yy490;
-            goto yy376;
-          }
-        }
-      }
-    }
-  yy515:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          if (yych <= '\r')
-            goto yy515;
-          goto yy483;
-        } else {
-          if (yych <= ' ')
-            goto yy515;
-          if (yych == '"')
-            goto yy376;
-          goto yy483;
-        }
-      } else {
-        if (yych <= ';') {
-          if (yych <= '\'')
-            goto yy376;
-          if (yych == ':')
-            goto yy513;
-          goto yy483;
-        } else {
-          if (yych <= '<')
-            goto yy376;
-          if (yych <= '=')
-            goto yy481;
-          if (yych <= '>')
-            goto yy393;
-          goto yy483;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          if (yych <= '_')
-            goto yy513;
-          goto yy376;
-        } else {
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          if (yych <= 0xC1)
-            goto yy376;
-          goto yy485;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych == 0xED)
-            goto yy491;
-          goto yy487;
-        } else {
-          if (yych <= 0xF0)
-            goto yy488;
-          if (yych <= 0xF3)
-            goto yy489;
-          if (yych <= 0xF4)
-            goto yy490;
-          goto yy376;
-        }
-      }
-    }
-  yy517:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          goto yy517;
-        } else {
-          if (yych == ' ')
-            goto yy517;
-          if (yych <= '!')
-            goto yy483;
-          goto yy494;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy492;
-          if (yych <= '9')
-            goto yy483;
-          goto yy513;
-        } else {
-          if (yych <= ';')
-            goto yy483;
-          if (yych <= '=')
-            goto yy376;
-          if (yych <= '>')
-            goto yy393;
-          goto yy483;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          if (yych <= '_')
-            goto yy513;
-          goto yy376;
-        } else {
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          if (yych <= 0xC1)
-            goto yy376;
-          goto yy485;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych == 0xED)
-            goto yy491;
-          goto yy487;
-        } else {
-          if (yych <= 0xF0)
-            goto yy488;
-          if (yych <= 0xF3)
-            goto yy489;
-          if (yych <= 0xF4)
-            goto yy490;
-          goto yy376;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block tag start line, returning
-// an integer code for the type of block (1-6, matching the spec).
-// #7 is handled by a separate function, below.
-bufsize_t _scan_html_block_start(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych != '\n')
-          goto yy523;
-      } else {
-        if (yych <= '<')
-          goto yy522;
-        if (yych <= 0x7F)
-          goto yy523;
-        if (yych >= 0xC2)
-          goto yy524;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy526;
-        if (yych == 0xED)
-          goto yy531;
-        goto yy527;
-      } else {
-        if (yych <= 0xF0)
-          goto yy528;
-        if (yych <= 0xF3)
-          goto yy529;
-        if (yych <= 0xF4)
-          goto yy530;
-      }
-    }
-  yy521 : { return 0; }
-  yy522:
-    yych = *(marker = ++p);
-    switch (yych) {
-    case '!':
-      goto yy548;
-    case '/':
-      goto yy532;
-    case '?':
-      goto yy549;
-    case 'A':
-    case 'a':
-      goto yy534;
-    case 'B':
-    case 'b':
-      goto yy535;
-    case 'C':
-    case 'c':
-      goto yy536;
-    case 'D':
-    case 'd':
-      goto yy537;
-    case 'F':
-    case 'f':
-      goto yy538;
-    case 'H':
-    case 'h':
-      goto yy539;
-    case 'I':
-    case 'i':
-      goto yy540;
-    case 'L':
-    case 'l':
-      goto yy541;
-    case 'M':
-    case 'm':
-      goto yy542;
-    case 'N':
-    case 'n':
-      goto yy543;
-    case 'O':
-    case 'o':
-      goto yy544;
-    case 'P':
-    case 'p':
-      goto yy533;
-    case 'S':
-    case 's':
-      goto yy545;
-    case 'T':
-    case 't':
-      goto yy546;
-    case 'U':
-    case 'u':
-      goto yy547;
-    default:
-      goto yy521;
-    }
-  yy523:
-    yych = *++p;
-    goto yy521;
-  yy524:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy523;
-  yy525:
-    p = marker;
-    goto yy521;
-  yy526:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy524;
-    goto yy525;
-  yy527:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy524;
-    goto yy525;
-  yy528:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy527;
-    goto yy525;
-  yy529:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy527;
-    goto yy525;
-  yy530:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0x8F)
-      goto yy527;
-    goto yy525;
-  yy531:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0x9F)
-      goto yy524;
-    goto yy525;
-  yy532:
-    yych = *++p;
-    switch (yych) {
-    case 'A':
-    case 'a':
-      goto yy534;
-    case 'B':
-    case 'b':
-      goto yy535;
-    case 'C':
-    case 'c':
-      goto yy536;
-    case 'D':
-    case 'd':
-      goto yy537;
-    case 'F':
-    case 'f':
-      goto yy538;
-    case 'H':
-    case 'h':
-      goto yy539;
-    case 'I':
-    case 'i':
-      goto yy540;
-    case 'L':
-    case 'l':
-      goto yy541;
-    case 'M':
-    case 'm':
-      goto yy542;
-    case 'N':
-    case 'n':
-      goto yy543;
-    case 'O':
-    case 'o':
-      goto yy544;
-    case 'P':
-    case 'p':
-      goto yy733;
-    case 'S':
-    case 's':
-      goto yy734;
-    case 'T':
-    case 't':
-      goto yy546;
-    case 'U':
-    case 'u':
-      goto yy547;
-    default:
-      goto yy525;
-    }
-  yy533:
-    yych = *++p;
-    if (yych <= '>') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        if (yych <= 0x1F)
-          goto yy525;
-        goto yy565;
-      } else {
-        if (yych == '/')
-          goto yy567;
-        if (yych <= '=')
-          goto yy525;
-        goto yy565;
-      }
-    } else {
-      if (yych <= 'R') {
-        if (yych == 'A')
-          goto yy730;
-        if (yych <= 'Q')
-          goto yy525;
-        goto yy729;
-      } else {
-        if (yych <= 'a') {
-          if (yych <= '`')
-            goto yy525;
-          goto yy730;
-        } else {
-          if (yych == 'r')
-            goto yy729;
-          goto yy525;
-        }
-      }
-    }
-  yy534:
-    yych = *++p;
-    if (yych <= 'S') {
-      if (yych <= 'D') {
-        if (yych <= 'C')
-          goto yy525;
-        goto yy718;
-      } else {
-        if (yych <= 'Q')
-          goto yy525;
-        if (yych <= 'R')
-          goto yy717;
-        goto yy716;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych == 'd')
-          goto yy718;
-        goto yy525;
-      } else {
-        if (yych <= 'r')
-          goto yy717;
-        if (yych <= 's')
-          goto yy716;
-        goto yy525;
-      }
-    }
-  yy535:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych <= 'K') {
-        if (yych == 'A')
-          goto yy702;
-        goto yy525;
-      } else {
-        if (yych <= 'L')
-          goto yy701;
-        if (yych <= 'N')
-          goto yy525;
-        goto yy700;
-      }
-    } else {
-      if (yych <= 'k') {
-        if (yych == 'a')
-          goto yy702;
-        goto yy525;
-      } else {
-        if (yych <= 'l')
-          goto yy701;
-        if (yych == 'o')
-          goto yy700;
-        goto yy525;
-      }
-    }
-  yy536:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych <= 'D') {
-        if (yych == 'A')
-          goto yy687;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy686;
-        if (yych <= 'N')
-          goto yy525;
-        goto yy685;
-      }
-    } else {
-      if (yych <= 'd') {
-        if (yych == 'a')
-          goto yy687;
-        goto yy525;
-      } else {
-        if (yych <= 'e')
-          goto yy686;
-        if (yych == 'o')
-          goto yy685;
-        goto yy525;
-      }
-    }
-  yy537:
-    yych = *++p;
-    switch (yych) {
-    case 'D':
-    case 'L':
-    case 'T':
-    case 'd':
-    case 'l':
-    case 't':
-      goto yy564;
-    case 'E':
-    case 'e':
-      goto yy677;
-    case 'I':
-    case 'i':
-      goto yy676;
-    default:
-      goto yy525;
-    }
-  yy538:
-    yych = *++p;
-    if (yych <= 'R') {
-      if (yych <= 'N') {
-        if (yych == 'I')
-          goto yy652;
-        goto yy525;
-      } else {
-        if (yych <= 'O')
-          goto yy651;
-        if (yych <= 'Q')
-          goto yy525;
-        goto yy650;
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych == 'i')
-          goto yy652;
-        goto yy525;
-      } else {
-        if (yych <= 'o')
-          goto yy651;
-        if (yych == 'r')
-          goto yy650;
-        goto yy525;
-      }
-    }
-  yy539:
-    yych = *++p;
-    if (yych <= 'S') {
-      if (yych <= 'D') {
-        if (yych <= '0')
-          goto yy525;
-        if (yych <= '6')
-          goto yy564;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy645;
-        if (yych == 'R')
-          goto yy564;
-        goto yy525;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych <= 'T')
-          goto yy644;
-        if (yych == 'e')
-          goto yy645;
-        goto yy525;
-      } else {
-        if (yych <= 'r')
-          goto yy564;
-        if (yych == 't')
-          goto yy644;
-        goto yy525;
-      }
-    }
-  yy540:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy640;
-    if (yych == 'f')
-      goto yy640;
-    goto yy525;
-  yy541:
-    yych = *++p;
-    if (yych <= 'I') {
-      if (yych == 'E')
-        goto yy635;
-      if (yych <= 'H')
-        goto yy525;
-      goto yy634;
-    } else {
-      if (yych <= 'e') {
-        if (yych <= 'd')
-          goto yy525;
-        goto yy635;
-      } else {
-        if (yych == 'i')
-          goto yy634;
-        goto yy525;
-      }
-    }
-  yy542:
-    yych = *++p;
-    if (yych <= 'E') {
-      if (yych == 'A')
-        goto yy626;
-      if (yych <= 'D')
-        goto yy525;
-      goto yy625;
-    } else {
-      if (yych <= 'a') {
-        if (yych <= '`')
-          goto yy525;
-        goto yy626;
-      } else {
-        if (yych == 'e')
-          goto yy625;
-        goto yy525;
-      }
-    }
-  yy543:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych == 'A')
-        goto yy619;
-      if (yych <= 'N')
-        goto yy525;
-      goto yy618;
-    } else {
-      if (yych <= 'a') {
-        if (yych <= '`')
-          goto yy525;
-        goto yy619;
-      } else {
-        if (yych == 'o')
-          goto yy618;
-        goto yy525;
-      }
-    }
-  yy544:
-    yych = *++p;
-    if (yych <= 'P') {
-      if (yych == 'L')
-        goto yy564;
-      if (yych <= 'O')
-        goto yy525;
-      goto yy610;
-    } else {
-      if (yych <= 'l') {
-        if (yych <= 'k')
-          goto yy525;
-        goto yy564;
-      } else {
-        if (yych == 'p')
-          goto yy610;
-        goto yy525;
-      }
-    }
-  yy545:
-    yych = *++p;
-    switch (yych) {
-    case 'C':
-    case 'c':
-      goto yy587;
-    case 'E':
-    case 'e':
-      goto yy590;
-    case 'O':
-    case 'o':
-      goto yy589;
-    case 'T':
-    case 't':
-      goto yy586;
-    case 'U':
-    case 'u':
-      goto yy588;
-    default:
-      goto yy525;
-    }
-  yy546:
-    yych = *++p;
-    switch (yych) {
-    case 'A':
-    case 'a':
-      goto yy573;
-    case 'B':
-    case 'b':
-      goto yy572;
-    case 'D':
-    case 'd':
-      goto yy564;
-    case 'F':
-    case 'f':
-      goto yy571;
-    case 'H':
-    case 'h':
-      goto yy570;
-    case 'I':
-    case 'i':
-      goto yy569;
-    case 'R':
-    case 'r':
-      goto yy568;
-    default:
-      goto yy525;
-    }
-  yy547:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy564;
-    if (yych == 'l')
-      goto yy564;
-    goto yy525;
-  yy548:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych == '-')
-        goto yy551;
-      goto yy525;
-    } else {
-      if (yych <= 'Z')
-        goto yy552;
-      if (yych <= '[')
-        goto yy554;
-      goto yy525;
-    }
-  yy549:
-    ++p;
-    { return 3; }
-  yy551:
-    yych = *++p;
-    if (yych == '-')
-      goto yy562;
-    goto yy525;
-  yy552:
-    ++p;
-    { return 4; }
-  yy554:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy555;
-    if (yych != 'c')
-      goto yy525;
-  yy555:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy556;
-    if (yych != 'd')
-      goto yy525;
-  yy556:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy557;
-    if (yych != 'a')
-      goto yy525;
-  yy557:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy558;
-    if (yych != 't')
-      goto yy525;
-  yy558:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy559;
-    if (yych != 'a')
-      goto yy525;
-  yy559:
-    yych = *++p;
-    if (yych != '[')
-      goto yy525;
-    ++p;
-    { return 5; }
-  yy562:
-    ++p;
-    { return 2; }
-  yy564:
-    yych = *++p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy525;
-      if (yych <= '\r')
-        goto yy565;
-      if (yych <= 0x1F)
-        goto yy525;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      } else {
-        if (yych != '>')
-          goto yy525;
-      }
-    }
-  yy565:
-    ++p;
-    { return 6; }
-  yy567:
-    yych = *++p;
-    if (yych == '>')
-      goto yy565;
-    goto yy525;
-  yy568:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'A')
-          goto yy584;
-        if (yych == 'a')
-          goto yy584;
-        goto yy525;
-      }
-    }
-  yy569:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy582;
-    if (yych == 't')
-      goto yy582;
-    goto yy525;
-  yy570:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'D') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy580;
-        if (yych == 'e')
-          goto yy580;
-        goto yy525;
-      }
-    }
-  yy571:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy578;
-    if (yych == 'o')
-      goto yy578;
-    goto yy525;
-  yy572:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy576;
-    if (yych == 'o')
-      goto yy576;
-    goto yy525;
-  yy573:
-    yych = *++p;
-    if (yych == 'B')
-      goto yy574;
-    if (yych != 'b')
-      goto yy525;
-  yy574:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy575;
-    if (yych != 'l')
-      goto yy525;
-  yy575:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy576:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy577;
-    if (yych != 'd')
-      goto yy525;
-  yy577:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy564;
-    if (yych == 'y')
-      goto yy564;
-    goto yy525;
-  yy578:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy579;
-    if (yych != 'o')
-      goto yy525;
-  yy579:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy580:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy581;
-    if (yych != 'a')
-      goto yy525;
-  yy581:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy564;
-    if (yych == 'd')
-      goto yy564;
-    goto yy525;
-  yy582:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy583;
-    if (yych != 'l')
-      goto yy525;
-  yy583:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy584:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy585;
-    if (yych != 'c')
-      goto yy525;
-  yy585:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy564;
-    if (yych == 'k')
-      goto yy564;
-    goto yy525;
-  yy586:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy608;
-    if (yych == 'y')
-      goto yy608;
-    goto yy525;
-  yy587:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy602;
-    if (yych == 'r')
-      goto yy602;
-    goto yy525;
-  yy588:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy598;
-    if (yych == 'm')
-      goto yy598;
-    goto yy525;
-  yy589:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy595;
-    if (yych == 'u')
-      goto yy595;
-    goto yy525;
-  yy590:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy591;
-    if (yych != 'c')
-      goto yy525;
-  yy591:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy592;
-    if (yych != 't')
-      goto yy525;
-  yy592:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy593;
-    if (yych != 'i')
-      goto yy525;
-  yy593:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy594;
-    if (yych != 'o')
-      goto yy525;
-  yy594:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy595:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy596;
-    if (yych != 'r')
-      goto yy525;
-  yy596:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy597;
-    if (yych != 'c')
-      goto yy525;
-  yy597:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy598:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy599;
-    if (yych != 'm')
-      goto yy525;
-  yy599:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy600;
-    if (yych != 'a')
-      goto yy525;
-  yy600:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy601;
-    if (yych != 'r')
-      goto yy525;
-  yy601:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy564;
-    if (yych == 'y')
-      goto yy564;
-    goto yy525;
-  yy602:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy603;
-    if (yych != 'i')
-      goto yy525;
-  yy603:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy604;
-    if (yych != 'p')
-      goto yy525;
-  yy604:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy605;
-    if (yych != 't')
-      goto yy525;
-  yy605:
-    yych = *++p;
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy525;
-      if (yych >= 0x0E)
-        goto yy525;
-    } else {
-      if (yych <= ' ')
-        goto yy606;
-      if (yych != '>')
-        goto yy525;
-    }
-  yy606:
-    ++p;
-    { return 1; }
-  yy608:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy609;
-    if (yych != 'l')
-      goto yy525;
-  yy609:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy605;
-    if (yych == 'e')
-      goto yy605;
-    goto yy525;
-  yy610:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy611;
-    if (yych != 't')
-      goto yy525;
-  yy611:
-    yych = *++p;
-    if (yych <= 'I') {
-      if (yych == 'G')
-        goto yy613;
-      if (yych <= 'H')
-        goto yy525;
-    } else {
-      if (yych <= 'g') {
-        if (yych <= 'f')
-          goto yy525;
-        goto yy613;
-      } else {
-        if (yych != 'i')
-          goto yy525;
-      }
-    }
-    yych = *++p;
-    if (yych == 'O')
-      goto yy617;
-    if (yych == 'o')
-      goto yy617;
-    goto yy525;
-  yy613:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy614;
-    if (yych != 'r')
-      goto yy525;
-  yy614:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy615;
-    if (yych != 'o')
-      goto yy525;
-  yy615:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy616;
-    if (yych != 'u')
-      goto yy525;
-  yy616:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy564;
-    if (yych == 'p')
-      goto yy564;
-    goto yy525;
-  yy617:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy618:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy620;
-    if (yych == 'f')
-      goto yy620;
-    goto yy525;
-  yy619:
-    yych = *++p;
-    if (yych == 'V')
-      goto yy564;
-    if (yych == 'v')
-      goto yy564;
-    goto yy525;
-  yy620:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy621;
-    if (yych != 'r')
-      goto yy525;
-  yy621:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy622;
-    if (yych != 'a')
-      goto yy525;
-  yy622:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy623;
-    if (yych != 'm')
-      goto yy525;
-  yy623:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy624;
-    if (yych != 'e')
-      goto yy525;
-  yy624:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy564;
-    if (yych == 's')
-      goto yy564;
-    goto yy525;
-  yy625:
-    yych = *++p;
-    if (yych <= 'T') {
-      if (yych == 'N')
-        goto yy628;
-      if (yych <= 'S')
-        goto yy525;
-      goto yy629;
-    } else {
-      if (yych <= 'n') {
-        if (yych <= 'm')
-          goto yy525;
-        goto yy628;
-      } else {
-        if (yych == 't')
-          goto yy629;
-        goto yy525;
-      }
-    }
-  yy626:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy627;
-    if (yych != 'i')
-      goto yy525;
-  yy627:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy628:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy630;
-    if (yych == 'u')
-      goto yy630;
-    goto yy525;
-  yy629:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy564;
-    if (yych == 'a')
-      goto yy564;
-    goto yy525;
-  yy630:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'H') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'I')
-          goto yy631;
-        if (yych != 'i')
-          goto yy525;
-      }
-    }
-  yy631:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy632;
-    if (yych != 't')
-      goto yy525;
-  yy632:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy633;
-    if (yych != 'e')
-      goto yy525;
-  yy633:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych == 'm')
-      goto yy564;
-    goto yy525;
-  yy634:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'M') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'N')
-          goto yy639;
-        if (yych == 'n')
-          goto yy639;
-        goto yy525;
-      }
-    }
-  yy635:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy636;
-    if (yych != 'g')
-      goto yy525;
-  yy636:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy637;
-    if (yych != 'e')
-      goto yy525;
-  yy637:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy638;
-    if (yych != 'n')
-      goto yy525;
-  yy638:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy564;
-    if (yych == 'd')
-      goto yy564;
-    goto yy525;
-  yy639:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy564;
-    if (yych == 'k')
-      goto yy564;
-    goto yy525;
-  yy640:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy641;
-    if (yych != 'r')
-      goto yy525;
-  yy641:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy642;
-    if (yych != 'a')
-      goto yy525;
-  yy642:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy643;
-    if (yych != 'm')
-      goto yy525;
-  yy643:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy644:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy649;
-    if (yych == 'm')
-      goto yy649;
-    goto yy525;
-  yy645:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy646;
-    if (yych != 'a')
-      goto yy525;
-  yy646:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy647;
-    if (yych != 'd')
-      goto yy525;
-  yy647:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'D') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy648;
-        if (yych != 'e')
-          goto yy525;
-      }
-    }
-  yy648:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy564;
-    if (yych == 'r')
-      goto yy564;
-    goto yy525;
-  yy649:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy564;
-    if (yych == 'l')
-      goto yy564;
-    goto yy525;
-  yy650:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy671;
-    if (yych == 'a')
-      goto yy671;
-    goto yy525;
-  yy651:
-    yych = *++p;
-    if (yych <= 'R') {
-      if (yych == 'O')
-        goto yy667;
-      if (yych <= 'Q')
-        goto yy525;
-      goto yy668;
-    } else {
-      if (yych <= 'o') {
-        if (yych <= 'n')
-          goto yy525;
-        goto yy667;
-      } else {
-        if (yych == 'r')
-          goto yy668;
-        goto yy525;
-      }
-    }
-  yy652:
-    yych = *++p;
-    if (yych <= 'G') {
-      if (yych == 'E')
-        goto yy653;
-      if (yych <= 'F')
-        goto yy525;
-      goto yy654;
-    } else {
-      if (yych <= 'e') {
-        if (yych <= 'd')
-          goto yy525;
-      } else {
-        if (yych == 'g')
-          goto yy654;
-        goto yy525;
-      }
-    }
-  yy653:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy663;
-    if (yych == 'l')
-      goto yy663;
-    goto yy525;
-  yy654:
-    yych = *++p;
-    if (yych <= 'U') {
-      if (yych == 'C')
-        goto yy656;
-      if (yych <= 'T')
-        goto yy525;
-    } else {
-      if (yych <= 'c') {
-        if (yych <= 'b')
-          goto yy525;
-        goto yy656;
-      } else {
-        if (yych != 'u')
-          goto yy525;
-      }
-    }
-    yych = *++p;
-    if (yych == 'R')
-      goto yy662;
-    if (yych == 'r')
-      goto yy662;
-    goto yy525;
-  yy656:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy657;
-    if (yych != 'a')
-      goto yy525;
-  yy657:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy658;
-    if (yych != 'p')
-      goto yy525;
-  yy658:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy659;
-    if (yych != 't')
-      goto yy525;
-  yy659:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy660;
-    if (yych != 'i')
-      goto yy525;
-  yy660:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy661;
-    if (yych != 'o')
-      goto yy525;
-  yy661:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy662:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy663:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy664;
-    if (yych != 'd')
-      goto yy525;
-  yy664:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy665;
-    if (yych != 's')
-      goto yy525;
-  yy665:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy666;
-    if (yych != 'e')
-      goto yy525;
-  yy666:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy667:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy669;
-    if (yych == 't')
-      goto yy669;
-    goto yy525;
-  yy668:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych == 'm')
-      goto yy564;
-    goto yy525;
-  yy669:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy670;
-    if (yych != 'e')
-      goto yy525;
-  yy670:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy564;
-    if (yych == 'r')
-      goto yy564;
-    goto yy525;
-  yy671:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy672;
-    if (yych != 'm')
-      goto yy525;
-  yy672:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy673;
-    if (yych != 'e')
-      goto yy525;
-  yy673:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'R') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'S')
-          goto yy674;
-        if (yych != 's')
-          goto yy525;
-      }
-    }
-  yy674:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy675;
-    if (yych != 'e')
-      goto yy525;
-  yy675:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy676:
-    yych = *++p;
-    if (yych <= 'V') {
-      if (yych <= 'Q') {
-        if (yych == 'A')
-          goto yy682;
-        goto yy525;
-      } else {
-        if (yych <= 'R')
-          goto yy564;
-        if (yych <= 'U')
-          goto yy525;
-        goto yy564;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych == 'a')
-          goto yy682;
-        goto yy525;
-      } else {
-        if (yych <= 'r')
-          goto yy564;
-        if (yych == 'v')
-          goto yy564;
-        goto yy525;
-      }
-    }
-  yy677:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy678;
-    if (yych != 't')
-      goto yy525;
-  yy678:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy679;
-    if (yych != 'a')
-      goto yy525;
-  yy679:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy680;
-    if (yych != 'i')
-      goto yy525;
-  yy680:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy681;
-    if (yych != 'l')
-      goto yy525;
-  yy681:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy564;
-    if (yych == 's')
-      goto yy564;
-    goto yy525;
-  yy682:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy683;
-    if (yych != 'l')
-      goto yy525;
-  yy683:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy684;
-    if (yych != 'o')
-      goto yy525;
-  yy684:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy564;
-    if (yych == 'g')
-      goto yy564;
-    goto yy525;
-  yy685:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy695;
-    if (yych == 'l')
-      goto yy695;
-    goto yy525;
-  yy686:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy692;
-    if (yych == 'n')
-      goto yy692;
-    goto yy525;
-  yy687:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy688;
-    if (yych != 'p')
-      goto yy525;
-  yy688:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy689;
-    if (yych != 't')
-      goto yy525;
-  yy689:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy690;
-    if (yych != 'i')
-      goto yy525;
-  yy690:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy691;
-    if (yych != 'o')
-      goto yy525;
-  yy691:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy692:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy693;
-    if (yych != 't')
-      goto yy525;
-  yy693:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy694;
-    if (yych != 'e')
-      goto yy525;
-  yy694:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy564;
-    if (yych == 'r')
-      goto yy564;
-    goto yy525;
-  yy695:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'F') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'G')
-          goto yy696;
-        if (yych != 'g')
-          goto yy525;
-      }
-    }
-  yy696:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy697;
-    if (yych != 'r')
-      goto yy525;
-  yy697:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy698;
-    if (yych != 'o')
-      goto yy525;
-  yy698:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy699;
-    if (yych != 'u')
-      goto yy525;
-  yy699:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy564;
-    if (yych == 'p')
-      goto yy564;
-    goto yy525;
-  yy700:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy715;
-    if (yych == 'd')
-      goto yy715;
-    goto yy525;
-  yy701:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy708;
-    if (yych == 'o')
-      goto yy708;
-    goto yy525;
-  yy702:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy703;
-    if (yych != 's')
-      goto yy525;
-  yy703:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy704;
-    if (yych != 'e')
-      goto yy525;
-  yy704:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'E') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'F')
-          goto yy705;
-        if (yych != 'f')
-          goto yy525;
-      }
-    }
-  yy705:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy706;
-    if (yych != 'o')
-      goto yy525;
-  yy706:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy707;
-    if (yych != 'n')
-      goto yy525;
-  yy707:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy708:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy709;
-    if (yych != 'c')
-      goto yy525;
-  yy709:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy710;
-    if (yych != 'k')
-      goto yy525;
-  yy710:
-    yych = *++p;
-    if (yych == 'Q')
-      goto yy711;
-    if (yych != 'q')
-      goto yy525;
-  yy711:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy712;
-    if (yych != 'u')
-      goto yy525;
-  yy712:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy713;
-    if (yych != 'o')
-      goto yy525;
-  yy713:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy714;
-    if (yych != 't')
-      goto yy525;
-  yy714:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy715:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy564;
-    if (yych == 'y')
-      goto yy564;
-    goto yy525;
-  yy716:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy727;
-    if (yych == 'i')
-      goto yy727;
-    goto yy525;
-  yy717:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy723;
-    if (yych == 't')
-      goto yy723;
-    goto yy525;
-  yy718:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy719;
-    if (yych != 'd')
-      goto yy525;
-  yy719:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy720;
-    if (yych != 'r')
-      goto yy525;
-  yy720:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy721;
-    if (yych != 'e')
-      goto yy525;
-  yy721:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy722;
-    if (yych != 's')
-      goto yy525;
-  yy722:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy564;
-    if (yych == 's')
-      goto yy564;
-    goto yy525;
-  yy723:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy724;
-    if (yych != 'i')
-      goto yy525;
-  yy724:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy725;
-    if (yych != 'c')
-      goto yy525;
-  yy725:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy726;
-    if (yych != 'l')
-      goto yy525;
-  yy726:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy727:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy728;
-    if (yych != 'd')
-      goto yy525;
-  yy728:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy729:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy605;
-    if (yych == 'e')
-      goto yy605;
-    goto yy525;
-  yy730:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy731;
-    if (yych != 'r')
-      goto yy525;
-  yy731:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy732;
-    if (yych != 'a')
-      goto yy525;
-  yy732:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych == 'm')
-      goto yy564;
-    goto yy525;
-  yy733:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'A')
-          goto yy730;
-        if (yych == 'a')
-          goto yy730;
-        goto yy525;
-      }
-    }
-  yy734:
-    ++p;
-    if ((yych = *p) <= 'U') {
-      if (yych <= 'N') {
-        if (yych == 'E')
-          goto yy590;
-        goto yy525;
-      } else {
-        if (yych <= 'O')
-          goto yy589;
-        if (yych <= 'T')
-          goto yy525;
-        goto yy588;
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych == 'e')
-          goto yy590;
-        goto yy525;
-      } else {
-        if (yych <= 'o')
-          goto yy589;
-        if (yych == 'u')
-          goto yy588;
-        goto yy525;
-      }
-    }
-  }
-}
-
-// Try to match an HTML block tag start line of type 7, returning
-// 7 if successful, 0 if not.
-bufsize_t _scan_html_block_start_7(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,
-        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych != '\n')
-          goto yy739;
-      } else {
-        if (yych <= '<')
-          goto yy738;
-        if (yych <= 0x7F)
-          goto yy739;
-        if (yych >= 0xC2)
-          goto yy740;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy742;
-        if (yych == 0xED)
-          goto yy747;
-        goto yy743;
-      } else {
-        if (yych <= 0xF0)
-          goto yy744;
-        if (yych <= 0xF3)
-          goto yy745;
-        if (yych <= 0xF4)
-          goto yy746;
-      }
-    }
-  yy737 : { return 0; }
-  yy738:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '@') {
-      if (yych == '/')
-        goto yy750;
-      goto yy737;
-    } else {
-      if (yych <= 'Z')
-        goto yy748;
-      if (yych <= '`')
-        goto yy737;
-      if (yych <= 'z')
-        goto yy748;
-      goto yy737;
-    }
-  yy739:
-    yych = *++p;
-    goto yy737;
-  yy740:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy739;
-  yy741:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy737;
-    } else {
-      goto yy759;
-    }
-  yy742:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy740;
-    goto yy741;
-  yy743:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy740;
-    goto yy741;
-  yy744:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy743;
-    goto yy741;
-  yy745:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy743;
-    goto yy741;
-  yy746:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy743;
-    goto yy741;
-  yy747:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy740;
-    goto yy741;
-  yy748:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy748;
-    }
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy741;
-      if (yych <= '\r')
-        goto yy761;
-      if (yych <= 0x1F)
-        goto yy741;
-      goto yy761;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy741;
-        goto yy763;
-      } else {
-        if (yych == '>')
-          goto yy755;
-        goto yy741;
-      }
-    }
-  yy750:
-    yych = *++p;
-    if (yych <= '@')
-      goto yy741;
-    if (yych <= 'Z')
-      goto yy751;
-    if (yych <= '`')
-      goto yy741;
-    if (yych >= '{')
-      goto yy741;
-  yy751:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy753;
-    }
-    if (yych <= '=') {
-      if (yych <= '-') {
-        if (yych <= ',')
-          goto yy741;
-        goto yy751;
-      } else {
-        if (yych <= '/')
-          goto yy741;
-        if (yych <= '9')
-          goto yy751;
-        goto yy741;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy755;
-        if (yych <= '@')
-          goto yy741;
-        goto yy751;
-      } else {
-        if (yych <= '`')
-          goto yy741;
-        if (yych <= 'z')
-          goto yy751;
-        goto yy741;
-      }
-    }
-  yy753:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy753;
-    }
-    if (yych != '>')
-      goto yy741;
-  yy755:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy755;
-    }
-    if (yych <= 0x08)
-      goto yy741;
-    if (yych <= '\n')
-      goto yy757;
-    if (yych <= '\v')
-      goto yy741;
-    if (yych <= '\r')
-      goto yy760;
-    goto yy741;
-  yy757:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy755;
-    }
-    if (yych <= 0x08)
-      goto yy759;
-    if (yych <= '\n')
-      goto yy757;
-    if (yych <= '\v')
-      goto yy759;
-    if (yych <= '\r')
-      goto yy760;
-  yy759 : { return 7; }
-  yy760:
-    yych = *++p;
-    goto yy759;
-  yy761:
-    ++p;
-    yych = *p;
-    if (yych <= ':') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy741;
-        if (yych <= '\r')
-          goto yy761;
-        if (yych <= 0x1F)
-          goto yy741;
-        goto yy761;
-      } else {
-        if (yych == '/')
-          goto yy763;
-        if (yych <= '9')
-          goto yy741;
-        goto yy764;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych == '>')
-          goto yy755;
-        if (yych <= '@')
-          goto yy741;
-        goto yy764;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy741;
-          goto yy764;
-        } else {
-          if (yych <= '`')
-            goto yy741;
-          if (yych <= 'z')
-            goto yy764;
-          goto yy741;
-        }
-      }
-    }
-  yy763:
-    yych = *++p;
-    if (yych == '>')
-      goto yy755;
-    goto yy741;
-  yy764:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy764;
-    }
-    if (yych <= ',') {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy741;
-      } else {
-        if (yych != ' ')
-          goto yy741;
-      }
-    } else {
-      if (yych <= '<') {
-        if (yych <= '/')
-          goto yy763;
-        goto yy741;
-      } else {
-        if (yych <= '=')
-          goto yy768;
-        if (yych <= '>')
-          goto yy755;
-        goto yy741;
-      }
-    }
-  yy766:
-    ++p;
-    yych = *p;
-    if (yych <= '<') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy741;
-        if (yych <= '\r')
-          goto yy766;
-        if (yych <= 0x1F)
-          goto yy741;
-        goto yy766;
-      } else {
-        if (yych <= '/') {
-          if (yych <= '.')
-            goto yy741;
-          goto yy763;
-        } else {
-          if (yych == ':')
-            goto yy764;
-          goto yy741;
-        }
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '=')
-          goto yy768;
-        if (yych <= '>')
-          goto yy755;
-        if (yych <= '@')
-          goto yy741;
-        goto yy764;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy741;
-          goto yy764;
-        } else {
-          if (yych <= '`')
-            goto yy741;
-          if (yych <= 'z')
-            goto yy764;
-          goto yy741;
-        }
-      }
-    }
-  yy768:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy770;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '"') {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych >= '!')
-          goto yy781;
-      } else {
-        if (yych <= '\'')
-          goto yy779;
-        if (yych <= 0xC1)
-          goto yy741;
-        if (yych <= 0xDF)
-          goto yy772;
-        goto yy773;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy778;
-        goto yy774;
-      } else {
-        if (yych <= 0xF0)
-          goto yy775;
-        if (yych <= 0xF3)
-          goto yy776;
-        if (yych <= 0xF4)
-          goto yy777;
-        goto yy741;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy770;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '\'') {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= ' ')
-          goto yy804;
-        if (yych <= '"')
-          goto yy781;
-        goto yy779;
-      } else {
-        if (yych == '>')
-          goto yy755;
-        if (yych <= 0xC1)
-          goto yy741;
-        goto yy772;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy773;
-        if (yych == 0xED)
-          goto yy778;
-        goto yy774;
-      } else {
-        if (yych <= 0xF0)
-          goto yy775;
-        if (yych <= 0xF3)
-          goto yy776;
-        if (yych <= 0xF4)
-          goto yy777;
-        goto yy741;
-      }
-    }
-  yy770:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy770;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= ' ')
-          goto yy798;
-        goto yy741;
-      } else {
-        if (yych <= '>')
-          goto yy755;
-        if (yych <= 0xC1)
-          goto yy741;
-        if (yych >= 0xE0)
-          goto yy773;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy778;
-        goto yy774;
-      } else {
-        if (yych <= 0xF0)
-          goto yy775;
-        if (yych <= 0xF3)
-          goto yy776;
-        if (yych <= 0xF4)
-          goto yy777;
-        goto yy741;
-      }
-    }
-  yy772:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy770;
-    goto yy741;
-  yy773:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy772;
-    goto yy741;
-  yy774:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy772;
-    goto yy741;
-  yy775:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy774;
-    goto yy741;
-  yy776:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy774;
-    goto yy741;
-  yy777:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy774;
-    goto yy741;
-  yy778:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy772;
-    goto yy741;
-  yy779:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy779;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= '\'')
-          goto yy790;
-        goto yy741;
-      } else {
-        if (yych <= 0xDF)
-          goto yy791;
-        if (yych <= 0xE0)
-          goto yy792;
-        goto yy793;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy797;
-        if (yych <= 0xEF)
-          goto yy793;
-        goto yy794;
-      } else {
-        if (yych <= 0xF3)
-          goto yy795;
-        if (yych <= 0xF4)
-          goto yy796;
-        goto yy741;
-      }
-    }
-  yy781:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy781;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= '"')
-          goto yy790;
-        goto yy741;
-      } else {
-        if (yych <= 0xDF)
-          goto yy783;
-        if (yych <= 0xE0)
-          goto yy784;
-        goto yy785;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy789;
-        if (yych <= 0xEF)
-          goto yy785;
-        goto yy786;
-      } else {
-        if (yych <= 0xF3)
-          goto yy787;
-        if (yych <= 0xF4)
-          goto yy788;
-        goto yy741;
-      }
-    }
-  yy783:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy781;
-    goto yy741;
-  yy784:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy783;
-    goto yy741;
-  yy785:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy783;
-    goto yy741;
-  yy786:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy785;
-    goto yy741;
-  yy787:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy785;
-    goto yy741;
-  yy788:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy785;
-    goto yy741;
-  yy789:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy783;
-    goto yy741;
-  yy790:
-    ++p;
-    yych = *p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy741;
-      if (yych <= '\r')
-        goto yy761;
-      if (yych <= 0x1F)
-        goto yy741;
-      goto yy761;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy741;
-        goto yy763;
-      } else {
-        if (yych == '>')
-          goto yy755;
-        goto yy741;
-      }
-    }
-  yy791:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy779;
-    goto yy741;
-  yy792:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy791;
-    goto yy741;
-  yy793:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy791;
-    goto yy741;
-  yy794:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy793;
-    goto yy741;
-  yy795:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy793;
-    goto yy741;
-  yy796:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy793;
-    goto yy741;
-  yy797:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy791;
-    goto yy741;
-  yy798:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          goto yy798;
-        } else {
-          if (yych == ' ')
-            goto yy798;
-          if (yych <= '!')
-            goto yy770;
-          goto yy741;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy741;
-          if (yych <= '9')
-            goto yy770;
-        } else {
-          if (yych <= ';')
-            goto yy770;
-          if (yych <= '=')
-            goto yy741;
-          if (yych <= '>')
-            goto yy755;
-          goto yy770;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          if (yych >= '`')
-            goto yy741;
-        } else {
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          if (yych <= 0xC1)
-            goto yy741;
-          goto yy772;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych == 0xED)
-            goto yy778;
-          goto yy774;
-        } else {
-          if (yych <= 0xF0)
-            goto yy775;
-          if (yych <= 0xF3)
-            goto yy776;
-          if (yych <= 0xF4)
-            goto yy777;
-          goto yy741;
-        }
-      }
-    }
-  yy800:
-    ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          if (yych >= 0x0E)
-            goto yy770;
-        } else {
-          if (yych <= ' ')
-            goto yy802;
-          if (yych == '"')
-            goto yy741;
-          goto yy770;
-        }
-      } else {
-        if (yych <= '/') {
-          if (yych <= '\'')
-            goto yy741;
-          if (yych <= ',')
-            goto yy770;
-          if (yych <= '.')
-            goto yy800;
-          goto yy770;
-        } else {
-          if (yych <= ';') {
-            if (yych <= ':')
-              goto yy800;
-            goto yy770;
-          } else {
-            if (yych <= '<')
-              goto yy741;
-            if (yych <= '=')
-              goto yy768;
-            goto yy755;
-          }
-        }
-      }
-    } else {
-      if (yych <= 0xC1) {
-        if (yych <= '_') {
-          if (yych <= '@')
-            goto yy770;
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          goto yy800;
-        } else {
-          if (yych <= '`')
-            goto yy741;
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          goto yy741;
-        }
-      } else {
-        if (yych <= 0xED) {
-          if (yych <= 0xDF)
-            goto yy772;
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych <= 0xEC)
-            goto yy774;
-          goto yy778;
-        } else {
-          if (yych <= 0xF0) {
-            if (yych <= 0xEF)
-              goto yy774;
-            goto yy775;
-          } else {
-            if (yych <= 0xF3)
-              goto yy776;
-            if (yych <= 0xF4)
-              goto yy777;
-            goto yy741;
-          }
-        }
-      }
-    }
-  yy802:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          if (yych <= '\r')
-            goto yy802;
-          goto yy770;
-        } else {
-          if (yych <= ' ')
-            goto yy802;
-          if (yych == '"')
-            goto yy741;
-          goto yy770;
-        }
-      } else {
-        if (yych <= ';') {
-          if (yych <= '\'')
-            goto yy741;
-          if (yych == ':')
-            goto yy800;
-          goto yy770;
-        } else {
-          if (yych <= '<')
-            goto yy741;
-          if (yych <= '=')
-            goto yy768;
-          if (yych <= '>')
-            goto yy755;
-          goto yy770;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          if (yych <= '_')
-            goto yy800;
-          goto yy741;
-        } else {
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          if (yych <= 0xC1)
-            goto yy741;
-          goto yy772;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych == 0xED)
-            goto yy778;
-          goto yy774;
-        } else {
-          if (yych <= 0xF0)
-            goto yy775;
-          if (yych <= 0xF3)
-            goto yy776;
-          if (yych <= 0xF4)
-            goto yy777;
-          goto yy741;
-        }
-      }
-    }
-  yy804:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          goto yy804;
-        } else {
-          if (yych == ' ')
-            goto yy804;
-          if (yych <= '!')
-            goto yy770;
-          goto yy781;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy779;
-          if (yych <= '9')
-            goto yy770;
-          goto yy800;
-        } else {
-          if (yych <= ';')
-            goto yy770;
-          if (yych <= '=')
-            goto yy741;
-          if (yych <= '>')
-            goto yy755;
-          goto yy770;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          if (yych <= '_')
-            goto yy800;
-          goto yy741;
-        } else {
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          if (yych <= 0xC1)
-            goto yy741;
-          goto yy772;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych == 0xED)
-            goto yy778;
-          goto yy774;
-        } else {
-          if (yych <= 0xF0)
-            goto yy775;
-          if (yych <= 0xF3)
-            goto yy776;
-          if (yych <= 0xF4)
-            goto yy777;
-          goto yy741;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block end line of type 1
-bufsize_t _scan_html_block_end_1(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych != '\n')
-          goto yy809;
-      } else {
-        if (yych <= '<')
-          goto yy810;
-        if (yych <= 0x7F)
-          goto yy809;
-        if (yych >= 0xC2)
-          goto yy811;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy813;
-        if (yych == 0xED)
-          goto yy818;
-        goto yy814;
-      } else {
-        if (yych <= 0xF0)
-          goto yy815;
-        if (yych <= 0xF3)
-          goto yy816;
-        if (yych <= 0xF4)
-          goto yy817;
-      }
-    }
-  yy808 : { return 0; }
-  yy809:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy808;
-      goto yy823;
-    } else {
-      if (yych <= 0xC1)
-        goto yy808;
-      if (yych <= 0xF4)
-        goto yy823;
-      goto yy808;
-    }
-  yy810:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych == '\n')
-        goto yy808;
-      if (yych <= '.')
-        goto yy823;
-      goto yy819;
-    } else {
-      if (yych <= 0x7F)
-        goto yy823;
-      if (yych <= 0xC1)
-        goto yy808;
-      if (yych <= 0xF4)
-        goto yy823;
-      goto yy808;
-    }
-  yy811:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy809;
-  yy812:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy808;
-    } else {
-      goto yy840;
-    }
-  yy813:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy811;
-    goto yy812;
-  yy814:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy811;
-    goto yy812;
-  yy815:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy814;
-    goto yy812;
-  yy816:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy814;
-    goto yy812;
-  yy817:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x8F)
-      goto yy814;
-    goto yy812;
-  yy818:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x9F)
-      goto yy811;
-    goto yy812;
-  yy819:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 's') {
-      if (yych <= 'R') {
-        if (yych <= '\n') {
-          if (yych <= '\t')
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych == 'P')
-            goto yy831;
-          goto yy822;
-        }
-      } else {
-        if (yych <= 'o') {
-          if (yych <= 'S')
-            goto yy832;
-          goto yy822;
-        } else {
-          if (yych <= 'p')
-            goto yy831;
-          if (yych <= 'r')
-            goto yy822;
-          goto yy832;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych <= 0xDF)
-            goto yy824;
-          if (yych <= 0xE0)
-            goto yy825;
-          goto yy826;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy830;
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy820:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '.') {
-        if (yych == '\n')
-          goto yy812;
-      } else {
-        if (yych <= '/')
-          goto yy819;
-        if (yych <= 0x7F)
-          goto yy822;
-        if (yych <= 0xC1)
-          goto yy812;
-        goto yy824;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych == 0xED)
-          goto yy830;
-        goto yy826;
-      } else {
-        if (yych <= 0xF0)
-          goto yy827;
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-        goto yy812;
-      }
-    }
-  yy822:
-    ++p;
-    yych = *p;
-  yy823:
-    if (yybm[0 + yych] & 128) {
-      goto yy822;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy812;
-        if (yych <= '<')
-          goto yy820;
-        goto yy812;
-      } else {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        goto yy826;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy830;
-        if (yych <= 0xEF)
-          goto yy826;
-        goto yy827;
-      } else {
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-        goto yy812;
-      }
-    }
-  yy824:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy822;
-    goto yy812;
-  yy825:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy824;
-    goto yy812;
-  yy826:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy824;
-    goto yy812;
-  yy827:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy826;
-    goto yy812;
-  yy828:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy826;
-    goto yy812;
-  yy829:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x8F)
-      goto yy826;
-    goto yy812;
-  yy830:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x9F)
-      goto yy824;
-    goto yy812;
-  yy831:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'R') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'Q')
-          goto yy822;
-        goto yy843;
-      } else {
-        if (yych == 'r')
-          goto yy843;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy832:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 't') {
-      if (yych <= 'S') {
-        if (yych <= '\n') {
-          if (yych <= '\t')
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych == 'C')
-            goto yy834;
-          goto yy822;
-        }
-      } else {
-        if (yych <= 'b') {
-          if (yych >= 'U')
-            goto yy822;
-        } else {
-          if (yych <= 'c')
-            goto yy834;
-          if (yych <= 's')
-            goto yy822;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych <= 0xDF)
-            goto yy824;
-          if (yych <= 0xE0)
-            goto yy825;
-          goto yy826;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy830;
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'Y') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'X')
-          goto yy822;
-        goto yy841;
-      } else {
-        if (yych == 'y')
-          goto yy841;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy834:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'R') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'Q')
-          goto yy822;
-      } else {
-        if (yych == 'r')
-          goto yy835;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy835:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'I') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'H')
-          goto yy822;
-      } else {
-        if (yych == 'i')
-          goto yy836;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy836:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'P') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'O')
-          goto yy822;
-      } else {
-        if (yych == 'p')
-          goto yy837;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy837:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'T') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'S')
-          goto yy822;
-      } else {
-        if (yych == 't')
-          goto yy838;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy838:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy812;
-        goto yy822;
-      } else {
-        if (yych <= '>')
-          goto yy839;
-        if (yych <= 0x7F)
-          goto yy822;
-        if (yych <= 0xC1)
-          goto yy812;
-        goto yy824;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych == 0xED)
-          goto yy830;
-        goto yy826;
-      } else {
-        if (yych <= 0xF0)
-          goto yy827;
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-        goto yy812;
-      }
-    }
-  yy839:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy822;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy840;
-        if (yych <= '<')
-          goto yy820;
-      } else {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        goto yy826;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy830;
-        if (yych <= 0xEF)
-          goto yy826;
-        goto yy827;
-      } else {
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-      }
-    }
-  yy840 : { return (bufsize_t)(p - start); }
-  yy841:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'L') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'K')
-          goto yy822;
-      } else {
-        if (yych == 'l')
-          goto yy842;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy842:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'E') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'D')
-          goto yy822;
-        goto yy838;
-      } else {
-        if (yych == 'e')
-          goto yy838;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy843:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'E') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'D')
-          goto yy822;
-        goto yy838;
-      } else {
-        if (yych == 'e')
-          goto yy838;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block end line of type 2
-bufsize_t _scan_html_block_end_2(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ',') {
-        if (yych != '\n')
-          goto yy847;
-      } else {
-        if (yych <= '-')
-          goto yy848;
-        if (yych <= 0x7F)
-          goto yy847;
-        if (yych >= 0xC2)
-          goto yy849;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy851;
-        if (yych == 0xED)
-          goto yy856;
-        goto yy852;
-      } else {
-        if (yych <= 0xF0)
-          goto yy853;
-        if (yych <= 0xF3)
-          goto yy854;
-        if (yych <= 0xF4)
-          goto yy855;
-      }
-    }
-  yy846 : { return 0; }
-  yy847:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy846;
-      goto yy860;
-    } else {
-      if (yych <= 0xC1)
-        goto yy846;
-      if (yych <= 0xF4)
-        goto yy860;
-      goto yy846;
-    }
-  yy848:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy857;
-    }
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy846;
-      goto yy860;
-    } else {
-      if (yych <= 0xC1)
-        goto yy846;
-      if (yych <= 0xF4)
-        goto yy860;
-      goto yy846;
-    }
-  yy849:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy847;
-  yy850:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy846;
-    } else {
-      goto yy870;
-    }
-  yy851:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy849;
-    goto yy850;
-  yy852:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy849;
-    goto yy850;
-  yy853:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy852;
-    goto yy850;
-  yy854:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy852;
-    goto yy850;
-  yy855:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x8F)
-      goto yy852;
-    goto yy850;
-  yy856:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x9F)
-      goto yy849;
-    goto yy850;
-  yy857:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy857;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy850;
-      } else {
-        if (yych <= '>')
-          goto yy869;
-        if (yych <= 0x7F)
-          goto yy859;
-        if (yych <= 0xC1)
-          goto yy850;
-        goto yy861;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy862;
-        if (yych == 0xED)
-          goto yy867;
-        goto yy863;
-      } else {
-        if (yych <= 0xF0)
-          goto yy864;
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-        goto yy850;
-      }
-    }
-  yy859:
-    ++p;
-    yych = *p;
-  yy860:
-    if (yybm[0 + yych] & 128) {
-      goto yy859;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy850;
-        if (yych <= '-')
-          goto yy868;
-        goto yy850;
-      } else {
-        if (yych <= 0xDF)
-          goto yy861;
-        if (yych <= 0xE0)
-          goto yy862;
-        goto yy863;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy867;
-        if (yych <= 0xEF)
-          goto yy863;
-        goto yy864;
-      } else {
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-        goto yy850;
-      }
-    }
-  yy861:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy859;
-    goto yy850;
-  yy862:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy861;
-    goto yy850;
-  yy863:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy861;
-    goto yy850;
-  yy864:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy863;
-    goto yy850;
-  yy865:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy863;
-    goto yy850;
-  yy866:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x8F)
-      goto yy863;
-    goto yy850;
-  yy867:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x9F)
-      goto yy861;
-    goto yy850;
-  yy868:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy859;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy850;
-        if (yych <= '-')
-          goto yy857;
-        goto yy850;
-      } else {
-        if (yych <= 0xDF)
-          goto yy861;
-        if (yych <= 0xE0)
-          goto yy862;
-        goto yy863;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy867;
-        if (yych <= 0xEF)
-          goto yy863;
-        goto yy864;
-      } else {
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-        goto yy850;
-      }
-    }
-  yy869:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy859;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy870;
-        if (yych <= '-')
-          goto yy868;
-      } else {
-        if (yych <= 0xDF)
-          goto yy861;
-        if (yych <= 0xE0)
-          goto yy862;
-        goto yy863;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy867;
-        if (yych <= 0xEF)
-          goto yy863;
-        goto yy864;
-      } else {
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-      }
-    }
-  yy870 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match an HTML block end line of type 3
-bufsize_t _scan_html_block_end_3(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '>') {
-        if (yych != '\n')
-          goto yy874;
-      } else {
-        if (yych <= '?')
-          goto yy875;
-        if (yych <= 0x7F)
-          goto yy874;
-        if (yych >= 0xC2)
-          goto yy876;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy878;
-        if (yych == 0xED)
-          goto yy883;
-        goto yy879;
-      } else {
-        if (yych <= 0xF0)
-          goto yy880;
-        if (yych <= 0xF3)
-          goto yy881;
-        if (yych <= 0xF4)
-          goto yy882;
-      }
-    }
-  yy873 : { return 0; }
-  yy874:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy873;
-      goto yy889;
-    } else {
-      if (yych <= 0xC1)
-        goto yy873;
-      if (yych <= 0xF4)
-        goto yy889;
-      goto yy873;
-    }
-  yy875:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '>') {
-      if (yych == '\n')
-        goto yy873;
-      if (yych <= '=')
-        goto yy889;
-      goto yy884;
-    } else {
-      if (yych <= 0x7F)
-        goto yy889;
-      if (yych <= 0xC1)
-        goto yy873;
-      if (yych <= 0xF4)
-        goto yy889;
-      goto yy873;
-    }
-  yy876:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy874;
-  yy877:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy873;
-    } else {
-      goto yy885;
-    }
-  yy878:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy876;
-    goto yy877;
-  yy879:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy876;
-    goto yy877;
-  yy880:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy879;
-    goto yy877;
-  yy881:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy879;
-    goto yy877;
-  yy882:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x8F)
-      goto yy879;
-    goto yy877;
-  yy883:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x9F)
-      goto yy876;
-    goto yy877;
-  yy884:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy888;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy885;
-        if (yych <= '?')
-          goto yy886;
-      } else {
-        if (yych <= 0xDF)
-          goto yy890;
-        if (yych <= 0xE0)
-          goto yy891;
-        goto yy892;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy896;
-        if (yych <= 0xEF)
-          goto yy892;
-        goto yy893;
-      } else {
-        if (yych <= 0xF3)
-          goto yy894;
-        if (yych <= 0xF4)
-          goto yy895;
-      }
-    }
-  yy885 : { return (bufsize_t)(p - start); }
-  yy886:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy886;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy877;
-      } else {
-        if (yych <= '>')
-          goto yy884;
-        if (yych <= 0x7F)
-          goto yy888;
-        if (yych <= 0xC1)
-          goto yy877;
-        goto yy890;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy891;
-        if (yych == 0xED)
-          goto yy896;
-        goto yy892;
-      } else {
-        if (yych <= 0xF0)
-          goto yy893;
-        if (yych <= 0xF3)
-          goto yy894;
-        if (yych <= 0xF4)
-          goto yy895;
-        goto yy877;
-      }
-    }
-  yy888:
-    ++p;
-    yych = *p;
-  yy889:
-    if (yybm[0 + yych] & 128) {
-      goto yy888;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy877;
-        if (yych <= '?')
-          goto yy886;
-        goto yy877;
-      } else {
-        if (yych <= 0xDF)
-          goto yy890;
-        if (yych <= 0xE0)
-          goto yy891;
-        goto yy892;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy896;
-        if (yych <= 0xEF)
-          goto yy892;
-        goto yy893;
-      } else {
-        if (yych <= 0xF3)
-          goto yy894;
-        if (yych <= 0xF4)
-          goto yy895;
-        goto yy877;
-      }
-    }
-  yy890:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy888;
-    goto yy877;
-  yy891:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy890;
-    goto yy877;
-  yy892:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy890;
-    goto yy877;
-  yy893:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy892;
-    goto yy877;
-  yy894:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy892;
-    goto yy877;
-  yy895:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x8F)
-      goto yy892;
-    goto yy877;
-  yy896:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x9F)
-      goto yy890;
-    goto yy877;
-  }
-}
-
-// Try to match an HTML block end line of type 4
-bufsize_t _scan_html_block_end_4(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych != '\n')
-          goto yy900;
-      } else {
-        if (yych <= '>')
-          goto yy901;
-        if (yych <= 0x7F)
-          goto yy900;
-        if (yych >= 0xC2)
-          goto yy903;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy905;
-        if (yych == 0xED)
-          goto yy910;
-        goto yy906;
-      } else {
-        if (yych <= 0xF0)
-          goto yy907;
-        if (yych <= 0xF3)
-          goto yy908;
-        if (yych <= 0xF4)
-          goto yy909;
-      }
-    }
-  yy899 : { return 0; }
-  yy900:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy899;
-      goto yy914;
-    } else {
-      if (yych <= 0xC1)
-        goto yy899;
-      if (yych <= 0xF4)
-        goto yy914;
-      goto yy899;
-    }
-  yy901:
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych != '\n')
-        goto yy914;
-    } else {
-      if (yych <= 0xC1)
-        goto yy902;
-      if (yych <= 0xF4)
-        goto yy914;
-    }
-  yy902 : { return (bufsize_t)(p - start); }
-  yy903:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy900;
-  yy904:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy899;
-    } else {
-      goto yy902;
-    }
-  yy905:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy903;
-    goto yy904;
-  yy906:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy903;
-    goto yy904;
-  yy907:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy906;
-    goto yy904;
-  yy908:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy906;
-    goto yy904;
-  yy909:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x8F)
-      goto yy906;
-    goto yy904;
-  yy910:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x9F)
-      goto yy903;
-    goto yy904;
-  yy911:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy913;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy902;
-        if (yych <= '>')
-          goto yy911;
-        goto yy902;
-      } else {
-        if (yych <= 0xDF)
-          goto yy915;
-        if (yych <= 0xE0)
-          goto yy916;
-        goto yy917;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy921;
-        if (yych <= 0xEF)
-          goto yy917;
-        goto yy918;
-      } else {
-        if (yych <= 0xF3)
-          goto yy919;
-        if (yych <= 0xF4)
-          goto yy920;
-        goto yy902;
-      }
-    }
-  yy913:
-    ++p;
-    yych = *p;
-  yy914:
-    if (yybm[0 + yych] & 128) {
-      goto yy913;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy904;
-        if (yych <= '>')
-          goto yy911;
-        goto yy904;
-      } else {
-        if (yych <= 0xDF)
-          goto yy915;
-        if (yych <= 0xE0)
-          goto yy916;
-        goto yy917;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy921;
-        if (yych <= 0xEF)
-          goto yy917;
-        goto yy918;
-      } else {
-        if (yych <= 0xF3)
-          goto yy919;
-        if (yych <= 0xF4)
-          goto yy920;
-        goto yy904;
-      }
-    }
-  yy915:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy913;
-    goto yy904;
-  yy916:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy915;
-    goto yy904;
-  yy917:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy915;
-    goto yy904;
-  yy918:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy917;
-    goto yy904;
-  yy919:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy917;
-    goto yy904;
-  yy920:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x8F)
-      goto yy917;
-    goto yy904;
-  yy921:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x9F)
-      goto yy915;
-    goto yy904;
-  }
-}
-
-// Try to match an HTML block end line of type 5
-bufsize_t _scan_html_block_end_5(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '\\') {
-        if (yych != '\n')
-          goto yy925;
-      } else {
-        if (yych <= ']')
-          goto yy926;
-        if (yych <= 0x7F)
-          goto yy925;
-        if (yych >= 0xC2)
-          goto yy927;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy929;
-        if (yych == 0xED)
-          goto yy934;
-        goto yy930;
-      } else {
-        if (yych <= 0xF0)
-          goto yy931;
-        if (yych <= 0xF3)
-          goto yy932;
-        if (yych <= 0xF4)
-          goto yy933;
-      }
-    }
-  yy924 : { return 0; }
-  yy925:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy924;
-      goto yy938;
-    } else {
-      if (yych <= 0xC1)
-        goto yy924;
-      if (yych <= 0xF4)
-        goto yy938;
-      goto yy924;
-    }
-  yy926:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy935;
-    }
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy924;
-      goto yy938;
-    } else {
-      if (yych <= 0xC1)
-        goto yy924;
-      if (yych <= 0xF4)
-        goto yy938;
-      goto yy924;
-    }
-  yy927:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy925;
-  yy928:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy924;
-    } else {
-      goto yy948;
-    }
-  yy929:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy927;
-    goto yy928;
-  yy930:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy927;
-    goto yy928;
-  yy931:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy930;
-    goto yy928;
-  yy932:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy930;
-    goto yy928;
-  yy933:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x8F)
-      goto yy930;
-    goto yy928;
-  yy934:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x9F)
-      goto yy927;
-    goto yy928;
-  yy935:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy935;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy928;
-      } else {
-        if (yych <= '>')
-          goto yy947;
-        if (yych <= 0x7F)
-          goto yy937;
-        if (yych <= 0xC1)
-          goto yy928;
-        goto yy939;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy940;
-        if (yych == 0xED)
-          goto yy945;
-        goto yy941;
-      } else {
-        if (yych <= 0xF0)
-          goto yy942;
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-        goto yy928;
-      }
-    }
-  yy937:
-    ++p;
-    yych = *p;
-  yy938:
-    if (yybm[0 + yych] & 128) {
-      goto yy937;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy928;
-        if (yych <= ']')
-          goto yy946;
-        goto yy928;
-      } else {
-        if (yych <= 0xDF)
-          goto yy939;
-        if (yych <= 0xE0)
-          goto yy940;
-        goto yy941;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy945;
-        if (yych <= 0xEF)
-          goto yy941;
-        goto yy942;
-      } else {
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-        goto yy928;
-      }
-    }
-  yy939:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy937;
-    goto yy928;
-  yy940:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy939;
-    goto yy928;
-  yy941:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy939;
-    goto yy928;
-  yy942:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy941;
-    goto yy928;
-  yy943:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy941;
-    goto yy928;
-  yy944:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x8F)
-      goto yy941;
-    goto yy928;
-  yy945:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x9F)
-      goto yy939;
-    goto yy928;
-  yy946:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy937;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy928;
-        if (yych <= ']')
-          goto yy935;
-        goto yy928;
-      } else {
-        if (yych <= 0xDF)
-          goto yy939;
-        if (yych <= 0xE0)
-          goto yy940;
-        goto yy941;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy945;
-        if (yych <= 0xEF)
-          goto yy941;
-        goto yy942;
-      } else {
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-        goto yy928;
-      }
-    }
-  yy947:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy937;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy948;
-        if (yych <= ']')
-          goto yy946;
-      } else {
-        if (yych <= 0xDF)
-          goto yy939;
-        if (yych <= 0xE0)
-          goto yy940;
-        goto yy941;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy945;
-        if (yych <= 0xEF)
-          goto yy941;
-        goto yy942;
-      } else {
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-      }
-    }
-  yy948 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match a URL in a link or reference, return number of chars matched.
-// This may optionally be contained in <..>; otherwise
-// whitespace and unbalanced right parentheses aren't allowed.
-// Newlines aren't ever allowed.
-bufsize_t _scan_link_url(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   128, 128, 128, 128, 128, 128, 128, 128, 0,   8,   128, 128, 8,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 8,   224, 224, 224, 224, 224, 224, 224, 128, 128,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 32,  224, 32,  224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= '[') {
-      if (yych <= ' ') {
-        if (yych <= '\f') {
-          if (yych == '\n')
-            goto yy952;
-          goto yy968;
-        } else {
-          if (yych <= '\r')
-            goto yy954;
-          if (yych <= 0x1F)
-            goto yy968;
-          goto yy954;
-        }
-      } else {
-        if (yych <= ')') {
-          if (yych <= '\'')
-            goto yy956;
-          if (yych <= '(')
-            goto yy966;
-          goto yy968;
-        } else {
-          if (yych == '<')
-            goto yy955;
-          goto yy956;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy965;
-          if (yych <= 0x7F)
-            goto yy956;
-        } else {
-          if (yych <= 0xDF)
-            goto yy957;
-          if (yych <= 0xE0)
-            goto yy959;
-          goto yy960;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy964;
-          if (yych <= 0xEF)
-            goto yy960;
-          goto yy961;
-        } else {
-          if (yych <= 0xF3)
-            goto yy962;
-          if (yych <= 0xF4)
-            goto yy963;
-        }
-      }
-    }
-  yy951 : { return (bufsize_t)(p - start); }
-  yy952:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-  yy953:
-    if (yybm[0 + yych] & 8) {
-      goto yy952;
-    }
-    if (yych <= 0x7F) {
-      if (yych <= ')') {
-        if (yych <= 0x1F)
-          goto yy951;
-        if (yych <= '\'')
-          goto yy980;
-        if (yych <= '(')
-          goto yy971;
-        goto yy951;
-      } else {
-        if (yych <= '<') {
-          if (yych <= ';')
-            goto yy980;
-          goto yy1016;
-        } else {
-          if (yych == '\\')
-            goto yy982;
-          goto yy980;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF) {
-          if (yych <= 0xC1)
-            goto yy951;
-          goto yy983;
-        } else {
-          if (yych <= 0xE0)
-            goto yy984;
-          if (yych <= 0xEC)
-            goto yy985;
-          goto yy989;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy985;
-          goto yy986;
-        } else {
-          if (yych <= 0xF3)
-            goto yy987;
-          if (yych <= 0xF4)
-            goto yy988;
-          goto yy951;
-        }
-      }
-    }
-  yy954:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    goto yy953;
-  yy955:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy1016;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy951;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1029;
-          if (yych <= ' ')
-            goto yy951;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '<')
-            goto yy980;
-          goto yy1018;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1015;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1020;
-          if (yych <= 0xE0)
-            goto yy1021;
-          goto yy1022;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1026;
-          if (yych <= 0xEF)
-            goto yy1022;
-          goto yy1023;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy951;
-        }
-      }
-    }
-  yy956:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    goto yy981;
-  yy957:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy956;
-  yy958:
-    p = marker;
-    if (yyaccept <= 1) {
-      if (yyaccept == 0) {
-        goto yy951;
-      } else {
-        goto yy967;
-      }
-    } else {
-      goto yy1019;
-    }
-  yy959:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy957;
-    goto yy958;
-  yy960:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy957;
-    goto yy958;
-  yy961:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy960;
-    goto yy958;
-  yy962:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy960;
-    goto yy958;
-  yy963:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy960;
-    goto yy958;
-  yy964:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy957;
-    goto yy958;
-  yy965:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0xDF) {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy980;
-        if (yych <= '\r')
-          goto yy951;
-        goto yy980;
-      } else {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= 0x7F)
-          goto yy980;
-        if (yych <= 0xC1)
-          goto yy951;
-        goto yy990;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy991;
-        if (yych == 0xED)
-          goto yy996;
-        goto yy992;
-      } else {
-        if (yych <= 0xF0)
-          goto yy993;
-        if (yych <= 0xF3)
-          goto yy994;
-        if (yych <= 0xF4)
-          goto yy995;
-        goto yy951;
-      }
-    }
-  yy966:
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych <= '(') {
-      if (yych <= ' ')
-        goto yy967;
-      if (yych <= '\'')
-        goto yy972;
-    } else {
-      if (yych <= 0x7F)
-        goto yy972;
-      if (yych <= 0xC1)
-        goto yy967;
-      if (yych <= 0xF4)
-        goto yy972;
-    }
-  yy967 : { return 0; }
-  yy968:
-    yych = *++p;
-    goto yy967;
-  yy969:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy969;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= ')') {
-        if (yych <= ' ')
-          goto yy958;
-        if (yych >= ')')
-          goto yy997;
-      } else {
-        if (yych <= 0x7F)
-          goto yy971;
-        if (yych <= 0xC1)
-          goto yy958;
-        if (yych <= 0xDF)
-          goto yy973;
-        goto yy974;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy979;
-        goto yy975;
-      } else {
-        if (yych <= 0xF0)
-          goto yy976;
-        if (yych <= 0xF3)
-          goto yy977;
-        if (yych <= 0xF4)
-          goto yy978;
-        goto yy958;
-      }
-    }
-  yy971:
-    ++p;
-    yych = *p;
-  yy972:
-    if (yybm[0 + yych] & 32) {
-      goto yy971;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= '(')
-          goto yy958;
-        if (yych <= ')')
-          goto yy980;
-        goto yy969;
-      } else {
-        if (yych <= 0xC1)
-          goto yy958;
-        if (yych >= 0xE0)
-          goto yy974;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy979;
-        goto yy975;
-      } else {
-        if (yych <= 0xF0)
-          goto yy976;
-        if (yych <= 0xF3)
-          goto yy977;
-        if (yych <= 0xF4)
-          goto yy978;
-        goto yy958;
-      }
-    }
-  yy973:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy971;
-    goto yy958;
-  yy974:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy973;
-    goto yy958;
-  yy975:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy973;
-    goto yy958;
-  yy976:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy975;
-    goto yy958;
-  yy977:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy975;
-    goto yy958;
-  yy978:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy975;
-    goto yy958;
-  yy979:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy973;
-    goto yy958;
-  yy980:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-  yy981:
-    if (yych <= 0xC1) {
-      if (yych <= ')') {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= '\'')
-          goto yy980;
-        if (yych <= '(')
-          goto yy971;
-        goto yy951;
-      } else {
-        if (yych == '\\')
-          goto yy982;
-        if (yych <= 0x7F)
-          goto yy980;
-        goto yy951;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy983;
-        if (yych <= 0xE0)
-          goto yy984;
-        if (yych <= 0xEC)
-          goto yy985;
-        goto yy989;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy985;
-          goto yy986;
-        } else {
-          if (yych <= 0xF3)
-            goto yy987;
-          if (yych <= 0xF4)
-            goto yy988;
-          goto yy951;
-        }
-      }
-    }
-  yy982:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy980;
-        if (yych <= '\r')
-          goto yy951;
-        goto yy980;
-      } else {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= 0x7F)
-          goto yy980;
-        if (yych <= 0xC1)
-          goto yy951;
-        goto yy990;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy991;
-        if (yych == 0xED)
-          goto yy996;
-        goto yy992;
-      } else {
-        if (yych <= 0xF0)
-          goto yy993;
-        if (yych <= 0xF3)
-          goto yy994;
-        if (yych <= 0xF4)
-          goto yy995;
-        goto yy951;
-      }
-    }
-  yy983:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy980;
-    goto yy958;
-  yy984:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy983;
-    goto yy958;
-  yy985:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy983;
-    goto yy958;
-  yy986:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy985;
-    goto yy958;
-  yy987:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy985;
-    goto yy958;
-  yy988:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy985;
-    goto yy958;
-  yy989:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy983;
-    goto yy958;
-  yy990:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy980;
-    goto yy958;
-  yy991:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy990;
-    goto yy958;
-  yy992:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy990;
-    goto yy958;
-  yy993:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy992;
-    goto yy958;
-  yy994:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy992;
-    goto yy958;
-  yy995:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy992;
-    goto yy958;
-  yy996:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy990;
-    goto yy958;
-  yy997:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-  yy998:
-    if (yych <= 0xC1) {
-      if (yych <= ')') {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= '\'')
-          goto yy997;
-        if (yych <= '(')
-          goto yy971;
-        goto yy980;
-      } else {
-        if (yych == '\\')
-          goto yy999;
-        if (yych <= 0x7F)
-          goto yy997;
-        goto yy951;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1000;
-        if (yych <= 0xE0)
-          goto yy1001;
-        if (yych <= 0xEC)
-          goto yy1002;
-        goto yy1006;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1002;
-          goto yy1003;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1004;
-          if (yych <= 0xF4)
-            goto yy1005;
-          goto yy951;
-        }
-      }
-    }
-  yy999:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= 0xC1) {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy980;
-        if (yych <= '\r')
-          goto yy951;
-        if (yych <= 0x1F)
-          goto yy980;
-        goto yy951;
-      } else {
-        if (yych == '\\')
-          goto yy1007;
-        if (yych <= 0x7F)
-          goto yy997;
-        goto yy951;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1008;
-        if (yych <= 0xE0)
-          goto yy1009;
-        if (yych <= 0xEC)
-          goto yy1010;
-        goto yy1014;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1010;
-          goto yy1011;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1012;
-          if (yych <= 0xF4)
-            goto yy1013;
-          goto yy951;
-        }
-      }
-    }
-  yy1000:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy997;
-    goto yy958;
-  yy1001:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1000;
-    goto yy958;
-  yy1002:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1000;
-    goto yy958;
-  yy1003:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1002;
-    goto yy958;
-  yy1004:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1002;
-    goto yy958;
-  yy1005:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1002;
-    goto yy958;
-  yy1006:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1000;
-    goto yy958;
-  yy1007:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= '[') {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych == '(')
-          goto yy971;
-        goto yy997;
-      } else {
-        if (yych <= '\\')
-          goto yy999;
-        if (yych <= 0x7F)
-          goto yy997;
-        if (yych <= 0xC1)
-          goto yy951;
-        goto yy1000;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy1001;
-        if (yych == 0xED)
-          goto yy1006;
-        goto yy1002;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1003;
-        if (yych <= 0xF3)
-          goto yy1004;
-        if (yych <= 0xF4)
-          goto yy1005;
-        goto yy951;
-      }
-    }
-  yy1008:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy997;
-    goto yy958;
-  yy1009:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1008;
-    goto yy958;
-  yy1010:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1008;
-    goto yy958;
-  yy1011:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1010;
-    goto yy958;
-  yy1012:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1010;
-    goto yy958;
-  yy1013:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1010;
-    goto yy958;
-  yy1014:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1008;
-    goto yy958;
-  yy1015:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '\\') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy980;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '=') {
-          if (yych == ' ')
-            goto yy951;
-        } else {
-          if (yych <= '>')
-            goto yy1073;
-          if (yych >= '\\')
-            goto yy1074;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych >= 0x80)
-            goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1075;
-          if (yych <= 0xE0)
-            goto yy1076;
-          goto yy1077;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1081;
-          if (yych <= 0xEF)
-            goto yy1077;
-          goto yy1078;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1079;
-          if (yych <= 0xF4)
-            goto yy1080;
-          goto yy951;
-        }
-      }
-    }
-  yy1016:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1016;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy951;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1029;
-          if (yych <= ' ')
-            goto yy951;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '<')
-            goto yy980;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1015;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1020;
-          if (yych <= 0xE0)
-            goto yy1021;
-          goto yy1022;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1026;
-          if (yych <= 0xEF)
-            goto yy1022;
-          goto yy1023;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy951;
-        }
-      }
-    }
-  yy1018:
-    yyaccept = 2;
-    yych = *(marker = ++p);
-    if (yych <= ')') {
-      if (yych <= ' ')
-        goto yy1019;
-      if (yych <= '(')
-        goto yy981;
-    } else {
-      if (yych <= 0x7F)
-        goto yy981;
-      if (yych <= 0xC1)
-        goto yy1019;
-      if (yych <= 0xF4)
-        goto yy981;
-    }
-  yy1019 : { return (bufsize_t)(p - start); }
-  yy1020:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1016;
-    goto yy958;
-  yy1021:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1020;
-    goto yy958;
-  yy1022:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1020;
-    goto yy958;
-  yy1023:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1022;
-    goto yy958;
-  yy1024:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1022;
-    goto yy958;
-  yy1025:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1022;
-    goto yy958;
-  yy1026:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1020;
-    goto yy958;
-  yy1027:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy958;
-          if (yych >= '\t')
-            goto yy958;
-        } else {
-          if (yych == '\r')
-            goto yy958;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy958;
-          if (yych <= '\'')
-            goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy971;
-          goto yy1027;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1042;
-          if (yych <= '[')
-            goto yy1027;
-          goto yy1043;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1027;
-          if (yych <= 0xC1)
-            goto yy958;
-          if (yych <= 0xDF)
-            goto yy1045;
-          goto yy1046;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1051;
-          goto yy1047;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1048;
-          if (yych <= 0xF3)
-            goto yy1049;
-          if (yych <= 0xF4)
-            goto yy1050;
-          goto yy958;
-        }
-      }
-    }
-  yy1029:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1029;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= '<')
-          goto yy958;
-        if (yych >= '?')
-          goto yy1032;
-      } else {
-        if (yych <= 0xC1)
-          goto yy958;
-        if (yych <= 0xDF)
-          goto yy1034;
-        goto yy1035;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1040;
-        goto yy1036;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1037;
-        if (yych <= 0xF3)
-          goto yy1038;
-        if (yych <= 0xF4)
-          goto yy1039;
-        goto yy958;
-      }
-    }
-  yy1031:
-    yych = *++p;
-    goto yy1019;
-  yy1032:
-    ++p;
-    yych = *p;
-    if (yych <= '\\') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy958;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy958;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy958;
-        }
-      } else {
-        if (yych <= '=') {
-          if (yych == ' ')
-            goto yy958;
-          goto yy1029;
-        } else {
-          if (yych <= '>')
-            goto yy1041;
-          if (yych <= '[')
-            goto yy1029;
-          goto yy1032;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy1029;
-          goto yy958;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1034;
-          if (yych <= 0xE0)
-            goto yy1035;
-          goto yy1036;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1040;
-          if (yych <= 0xEF)
-            goto yy1036;
-          goto yy1037;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1038;
-          if (yych <= 0xF4)
-            goto yy1039;
-          goto yy958;
-        }
-      }
-    }
-  yy1034:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1029;
-    goto yy958;
-  yy1035:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1034;
-    goto yy958;
-  yy1036:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1034;
-    goto yy958;
-  yy1037:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1036;
-    goto yy958;
-  yy1038:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1036;
-    goto yy958;
-  yy1039:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1036;
-    goto yy958;
-  yy1040:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1034;
-    goto yy958;
-  yy1041:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1029;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= '<')
-          goto yy1019;
-        if (yych <= '>')
-          goto yy1031;
-        goto yy1032;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1019;
-        if (yych <= 0xDF)
-          goto yy1034;
-        goto yy1035;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1040;
-        goto yy1036;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1037;
-        if (yych <= 0xF3)
-          goto yy1038;
-        if (yych <= 0xF4)
-          goto yy1039;
-        goto yy1019;
-      }
-    }
-  yy1042:
-    yyaccept = 2;
-    yych = *(marker = ++p);
-    if (yych <= '(') {
-      if (yych <= ' ')
-        goto yy1019;
-      if (yych <= '\'')
-        goto yy972;
-      goto yy1019;
-    } else {
-      if (yych <= 0x7F)
-        goto yy972;
-      if (yych <= 0xC1)
-        goto yy1019;
-      if (yych <= 0xF4)
-        goto yy972;
-      goto yy1019;
-    }
-  yy1043:
-    ++p;
-    yych = *p;
-    if (yych <= '[') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy958;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy958;
-        } else {
-          if (yych == '\r')
-            goto yy958;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= ')') {
-          if (yych <= ' ')
-            goto yy958;
-          if (yych <= '(')
-            goto yy1027;
-          goto yy1052;
-        } else {
-          if (yych == '>')
-            goto yy1054;
-          goto yy1027;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1043;
-          if (yych <= 0x7F)
-            goto yy1027;
-          goto yy958;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1045;
-          if (yych <= 0xE0)
-            goto yy1046;
-          goto yy1047;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1051;
-          if (yych <= 0xEF)
-            goto yy1047;
-          goto yy1048;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1049;
-          if (yych <= 0xF4)
-            goto yy1050;
-          goto yy958;
-        }
-      }
-    }
-  yy1045:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1027;
-    goto yy958;
-  yy1046:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1045;
-    goto yy958;
-  yy1047:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1045;
-    goto yy958;
-  yy1048:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1047;
-    goto yy958;
-  yy1049:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1047;
-    goto yy958;
-  yy1050:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1047;
-    goto yy958;
-  yy1051:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1045;
-    goto yy958;
-  yy1052:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy951;
-        } else {
-          if (yych == '\r')
-            goto yy951;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy951;
-          if (yych <= '\'')
-            goto yy1052;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy997;
-          goto yy1052;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1055;
-          if (yych <= '[')
-            goto yy1052;
-          goto yy1056;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1052;
-          if (yych <= 0xC1)
-            goto yy951;
-          if (yych <= 0xDF)
-            goto yy1057;
-          goto yy1058;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1063;
-          goto yy1059;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1060;
-          if (yych <= 0xF3)
-            goto yy1061;
-          if (yych <= 0xF4)
-            goto yy1062;
-          goto yy951;
-        }
-      }
-    }
-  yy1054:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy1019;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy1019;
-        } else {
-          if (yych == '\r')
-            goto yy1019;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy1019;
-          if (yych <= '\'')
-            goto yy1027;
-          goto yy1029;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy971;
-          goto yy1027;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1042;
-          if (yych <= '[')
-            goto yy1027;
-          goto yy1043;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1027;
-          if (yych <= 0xC1)
-            goto yy1019;
-          if (yych <= 0xDF)
-            goto yy1045;
-          goto yy1046;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1051;
-          goto yy1047;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1048;
-          if (yych <= 0xF3)
-            goto yy1049;
-          if (yych <= 0xF4)
-            goto yy1050;
-          goto yy1019;
-        }
-      }
-    }
-  yy1055:
-    yyaccept = 2;
-    yych = *(marker = ++p);
-    if (yych <= ' ')
-      goto yy1019;
-    if (yych <= 0x7F)
-      goto yy998;
-    if (yych <= 0xC1)
-      goto yy1019;
-    if (yych <= 0xF4)
-      goto yy998;
-    goto yy1019;
-  yy1056:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '\\') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy980;
-          goto yy1016;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '=') {
-          if (yych <= 0x1F)
-            goto yy1016;
-          if (yych <= ' ')
-            goto yy951;
-          goto yy1052;
-        } else {
-          if (yych <= '>')
-            goto yy1064;
-          if (yych <= '[')
-            goto yy1052;
-          goto yy1065;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy1052;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1066;
-          if (yych <= 0xE0)
-            goto yy1067;
-          goto yy1068;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1072;
-          if (yych <= 0xEF)
-            goto yy1068;
-          goto yy1069;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1070;
-          if (yych <= 0xF4)
-            goto yy1071;
-          goto yy951;
-        }
-      }
-    }
-  yy1057:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1052;
-    goto yy958;
-  yy1058:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1057;
-    goto yy958;
-  yy1059:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1057;
-    goto yy958;
-  yy1060:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1059;
-    goto yy958;
-  yy1061:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1059;
-    goto yy958;
-  yy1062:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1059;
-    goto yy958;
-  yy1063:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1057;
-    goto yy958;
-  yy1064:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy1019;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy1019;
-        } else {
-          if (yych == '\r')
-            goto yy1019;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy1019;
-          if (yych <= '\'')
-            goto yy1052;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy997;
-          goto yy1052;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1055;
-          if (yych <= '[')
-            goto yy1052;
-          goto yy1056;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1052;
-          if (yych <= 0xC1)
-            goto yy1019;
-          if (yych <= 0xDF)
-            goto yy1057;
-          goto yy1058;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1063;
-          goto yy1059;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1060;
-          if (yych <= 0xF3)
-            goto yy1061;
-          if (yych <= 0xF4)
-            goto yy1062;
-          goto yy1019;
-        }
-      }
-    }
-  yy1065:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '[') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy951;
-        } else {
-          if (yych == '\r')
-            goto yy951;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy951;
-          if (yych <= '\'')
-            goto yy1052;
-          goto yy1027;
-        } else {
-          if (yych == '>')
-            goto yy1064;
-          goto yy1052;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1056;
-          if (yych <= 0x7F)
-            goto yy1052;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1057;
-          if (yych <= 0xE0)
-            goto yy1058;
-          goto yy1059;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1063;
-          if (yych <= 0xEF)
-            goto yy1059;
-          goto yy1060;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1061;
-          if (yych <= 0xF4)
-            goto yy1062;
-          goto yy951;
-        }
-      }
-    }
-  yy1066:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1052;
-    goto yy958;
-  yy1067:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1066;
-    goto yy958;
-  yy1068:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1066;
-    goto yy958;
-  yy1069:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1068;
-    goto yy958;
-  yy1070:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1068;
-    goto yy958;
-  yy1071:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1068;
-    goto yy958;
-  yy1072:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1066;
-    goto yy958;
-  yy1073:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1016;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy1019;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy1019;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy1019;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1029;
-          if (yych <= ' ')
-            goto yy1019;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '<')
-            goto yy980;
-          goto yy1018;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1015;
-          goto yy1019;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1020;
-          if (yych <= 0xE0)
-            goto yy1021;
-          goto yy1022;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1026;
-          if (yych <= 0xEF)
-            goto yy1022;
-          goto yy1023;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy1019;
-        }
-      }
-    }
-  yy1074:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy951;
-        } else {
-          if (yych == '\r')
-            goto yy951;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy951;
-          if (yych <= '\'')
-            goto yy1016;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '=')
-            goto yy1016;
-          goto yy1073;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= 0x7F) {
-          if (yych == '\\')
-            goto yy1015;
-          goto yy1016;
-        } else {
-          if (yych <= 0xC1)
-            goto yy951;
-          if (yych <= 0xDF)
-            goto yy1020;
-          goto yy1021;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1026;
-          goto yy1022;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1023;
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy951;
-        }
-      }
-    }
-  yy1075:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1016;
-    goto yy958;
-  yy1076:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1075;
-    goto yy958;
-  yy1077:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1075;
-    goto yy958;
-  yy1078:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1077;
-    goto yy958;
-  yy1079:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1077;
-    goto yy958;
-  yy1080:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1077;
-    goto yy958;
-  yy1081:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1075;
-    goto yy958;
-  }
-}
-
-// Try to match a link title (in single quotes, in double quotes, or
-// in parentheses), returning number of chars matched.  Allow one
-// level of internal nesting (quotes within quotes).
-bufsize_t _scan_link_title(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '"') {
-        if (yych == '\n')
-          goto yy1084;
-        if (yych <= '!')
-          goto yy1088;
-        goto yy1085;
-      } else {
-        if (yych <= '\'') {
-          if (yych <= '&')
-            goto yy1088;
-          goto yy1086;
-        } else {
-          if (yych <= '(')
-            goto yy1087;
-          if (yych <= 0x7F)
-            goto yy1088;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1089;
-        if (yych <= 0xE0)
-          goto yy1091;
-        if (yych <= 0xEC)
-          goto yy1092;
-        goto yy1096;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1092;
-          goto yy1093;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1094;
-          if (yych <= 0xF4)
-            goto yy1095;
-        }
-      }
-    }
-  yy1084 : { return 0; }
-  yy1085:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy1084;
-    if (yych <= 0x7F)
-      goto yy1128;
-    if (yych <= 0xC1)
-      goto yy1084;
-    if (yych <= 0xF4)
-      goto yy1128;
-    goto yy1084;
-  yy1086:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy1084;
-    if (yych <= 0x7F)
-      goto yy1114;
-    if (yych <= 0xC1)
-      goto yy1084;
-    if (yych <= 0xF4)
-      goto yy1114;
-    goto yy1084;
-  yy1087:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy1084;
-    if (yych <= 0x7F)
-      goto yy1100;
-    if (yych <= 0xC1)
-      goto yy1084;
-    if (yych <= 0xF4)
-      goto yy1100;
-    goto yy1084;
-  yy1088:
-    yych = *++p;
-    goto yy1084;
-  yy1089:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1088;
-  yy1090:
-    p = marker;
-    if (yyaccept <= 1) {
-      if (yyaccept == 0) {
-        goto yy1084;
-      } else {
-        goto yy1109;
-      }
-    } else {
-      if (yyaccept == 2) {
-        goto yy1123;
-      } else {
-        goto yy1137;
-      }
-    }
-  yy1091:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1089;
-    goto yy1090;
-  yy1092:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1089;
-    goto yy1090;
-  yy1093:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1092;
-    goto yy1090;
-  yy1094:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1092;
-    goto yy1090;
-  yy1095:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1092;
-    goto yy1090;
-  yy1096:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1089;
-    goto yy1090;
-  yy1097:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1099;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= ')')
-          goto yy1110;
-        goto yy1097;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych <= 0xDF)
-          goto yy1101;
-        goto yy1102;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1107;
-        goto yy1103;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1104;
-        if (yych <= 0xF3)
-          goto yy1105;
-        if (yych <= 0xF4)
-          goto yy1106;
-        goto yy1090;
-      }
-    }
-  yy1099:
-    ++p;
-    yych = *p;
-  yy1100:
-    if (yybm[0 + yych] & 32) {
-      goto yy1099;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= ')')
-          goto yy1108;
-        goto yy1097;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych >= 0xE0)
-          goto yy1102;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1107;
-        goto yy1103;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1104;
-        if (yych <= 0xF3)
-          goto yy1105;
-        if (yych <= 0xF4)
-          goto yy1106;
-        goto yy1090;
-      }
-    }
-  yy1101:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1099;
-    goto yy1090;
-  yy1102:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1101;
-    goto yy1090;
-  yy1103:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1101;
-    goto yy1090;
-  yy1104:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1103;
-    goto yy1090;
-  yy1105:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1103;
-    goto yy1090;
-  yy1106:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1103;
-    goto yy1090;
-  yy1107:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1101;
-    goto yy1090;
-  yy1108:
-    ++p;
-  yy1109 : { return (bufsize_t)(p - start); }
-  yy1110:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1099;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1109;
-        if (yych <= ')')
-          goto yy1108;
-        goto yy1097;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1109;
-        if (yych <= 0xDF)
-          goto yy1101;
-        goto yy1102;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1107;
-        goto yy1103;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1104;
-        if (yych <= 0xF3)
-          goto yy1105;
-        if (yych <= 0xF4)
-          goto yy1106;
-        goto yy1109;
-      }
-    }
-  yy1111:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1113;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '\'')
-          goto yy1124;
-        goto yy1111;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych <= 0xDF)
-          goto yy1115;
-        goto yy1116;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1121;
-        goto yy1117;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1118;
-        if (yych <= 0xF3)
-          goto yy1119;
-        if (yych <= 0xF4)
-          goto yy1120;
-        goto yy1090;
-      }
-    }
-  yy1113:
-    ++p;
-    yych = *p;
-  yy1114:
-    if (yybm[0 + yych] & 64) {
-      goto yy1113;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '\'')
-          goto yy1122;
-        goto yy1111;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych >= 0xE0)
-          goto yy1116;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1121;
-        goto yy1117;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1118;
-        if (yych <= 0xF3)
-          goto yy1119;
-        if (yych <= 0xF4)
-          goto yy1120;
-        goto yy1090;
-      }
-    }
-  yy1115:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1113;
-    goto yy1090;
-  yy1116:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1115;
-    goto yy1090;
-  yy1117:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1115;
-    goto yy1090;
-  yy1118:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1117;
-    goto yy1090;
-  yy1119:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1117;
-    goto yy1090;
-  yy1120:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1117;
-    goto yy1090;
-  yy1121:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1115;
-    goto yy1090;
-  yy1122:
-    ++p;
-  yy1123 : { return (bufsize_t)(p - start); }
-  yy1124:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1113;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1123;
-        if (yych <= '\'')
-          goto yy1122;
-        goto yy1111;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1123;
-        if (yych <= 0xDF)
-          goto yy1115;
-        goto yy1116;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1121;
-        goto yy1117;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1118;
-        if (yych <= 0xF3)
-          goto yy1119;
-        if (yych <= 0xF4)
-          goto yy1120;
-        goto yy1123;
-      }
-    }
-  yy1125:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1127;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '"')
-          goto yy1138;
-        goto yy1125;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych <= 0xDF)
-          goto yy1129;
-        goto yy1130;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1135;
-        goto yy1131;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1132;
-        if (yych <= 0xF3)
-          goto yy1133;
-        if (yych <= 0xF4)
-          goto yy1134;
-        goto yy1090;
-      }
-    }
-  yy1127:
-    ++p;
-    yych = *p;
-  yy1128:
-    if (yybm[0 + yych] & 128) {
-      goto yy1127;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '"')
-          goto yy1136;
-        goto yy1125;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych >= 0xE0)
-          goto yy1130;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1135;
-        goto yy1131;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1132;
-        if (yych <= 0xF3)
-          goto yy1133;
-        if (yych <= 0xF4)
-          goto yy1134;
-        goto yy1090;
-      }
-    }
-  yy1129:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1127;
-    goto yy1090;
-  yy1130:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1129;
-    goto yy1090;
-  yy1131:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1129;
-    goto yy1090;
-  yy1132:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1131;
-    goto yy1090;
-  yy1133:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1131;
-    goto yy1090;
-  yy1134:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1131;
-    goto yy1090;
-  yy1135:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1129;
-    goto yy1090;
-  yy1136:
-    ++p;
-  yy1137 : { return (bufsize_t)(p - start); }
-  yy1138:
-    yyaccept = 3;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1127;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1137;
-        if (yych <= '"')
-          goto yy1136;
-        goto yy1125;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1137;
-        if (yych <= 0xDF)
-          goto yy1129;
-        goto yy1130;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1135;
-        goto yy1131;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1132;
-        if (yych <= 0xF3)
-          goto yy1133;
-        if (yych <= 0xF4)
-          goto yy1134;
-        goto yy1137;
-      }
-    }
-  }
-}
-
-// Match space characters, including newlines.
-bufsize_t _scan_spacechars(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy1145;
-        if (yych == '\n')
-          goto yy1143;
-        goto yy1142;
-      } else {
-        if (yych == ' ')
-          goto yy1142;
-        if (yych <= 0x7F)
-          goto yy1145;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1147;
-        if (yych <= 0xE0)
-          goto yy1149;
-        if (yych <= 0xEC)
-          goto yy1150;
-        goto yy1154;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1150;
-          goto yy1151;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1152;
-          if (yych <= 0xF4)
-            goto yy1153;
-        }
-      }
-    }
-  yy1141 : { return (bufsize_t)(p - start); }
-  yy1142:
-    yych = *++p;
-    goto yy1144;
-  yy1143:
-    ++p;
-    yych = *p;
-  yy1144:
-    if (yybm[0 + yych] & 128) {
-      goto yy1143;
-    }
-    goto yy1141;
-  yy1145:
-    ++p;
-    { return 0; }
-  yy1147:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1145;
-  yy1148:
-    p = marker;
-    goto yy1141;
-  yy1149:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1147;
-    goto yy1148;
-  yy1150:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1147;
-    goto yy1148;
-  yy1151:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1150;
-    goto yy1148;
-  yy1152:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1150;
-    goto yy1148;
-  yy1153:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0x8F)
-      goto yy1150;
-    goto yy1148;
-  yy1154:
-    ++p;
-    if ((yych = *p) <= 0x7F)
-      goto yy1148;
-    if (yych <= 0x9F)
-      goto yy1147;
-    goto yy1148;
-  }
-}
-
-// Match ATX heading start.
-bufsize_t _scan_atx_heading_start(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '"') {
-        if (yych != '\n')
-          goto yy1159;
-      } else {
-        if (yych <= '#')
-          goto yy1158;
-        if (yych <= 0x7F)
-          goto yy1159;
-        if (yych >= 0xC2)
-          goto yy1160;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy1162;
-        if (yych == 0xED)
-          goto yy1167;
-        goto yy1163;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1164;
-        if (yych <= 0xF3)
-          goto yy1165;
-        if (yych <= 0xF4)
-          goto yy1166;
-      }
-    }
-  yy1157 : { return 0; }
-  yy1158:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1157;
-      if (yych <= '\n')
-        goto yy1168;
-      goto yy1157;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych == '#')
-        goto yy1172;
-      goto yy1157;
-    }
-  yy1159:
-    yych = *++p;
-    goto yy1157;
-  yy1160:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1159;
-  yy1161:
-    p = marker;
-    goto yy1157;
-  yy1162:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1160;
-    goto yy1161;
-  yy1163:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1160;
-    goto yy1161;
-  yy1164:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1163;
-    goto yy1161;
-  yy1165:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1163;
-    goto yy1161;
-  yy1166:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0x8F)
-      goto yy1163;
-    goto yy1161;
-  yy1167:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0x9F)
-      goto yy1160;
-    goto yy1161;
-  yy1168:
-    ++p;
-  yy1169 : { return (bufsize_t)(p - start); }
-  yy1170:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    goto yy1169;
-  yy1172:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1161;
-      if (yych <= '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1161;
-      if (yych <= '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1161;
-      if (yych <= '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1161;
-      if (yych <= '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    ++p;
-    if (yybm[0 + (yych = *p)] & 128) {
-      goto yy1170;
-    }
-    if (yych <= 0x08)
-      goto yy1161;
-    if (yych <= '\n')
-      goto yy1168;
-    if (yych == '\r')
-      goto yy1168;
-    goto yy1161;
-  }
-}
-
-// Match setext heading line.  Return 1 for level-1 heading,
-// 2 for level-2, 0 for no match.
-bufsize_t _scan_setext_heading_line(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 32, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  32, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 64, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '-') {
-        if (yych == '\n')
-          goto yy1179;
-        if (yych <= ',')
-          goto yy1182;
-        goto yy1181;
-      } else {
-        if (yych == '=')
-          goto yy1180;
-        if (yych <= 0x7F)
-          goto yy1182;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1183;
-        if (yych <= 0xE0)
-          goto yy1185;
-        if (yych <= 0xEC)
-          goto yy1186;
-        goto yy1190;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1186;
-          goto yy1187;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1188;
-          if (yych <= 0xF4)
-            goto yy1189;
-        }
-      }
-    }
-  yy1179 : { return 0; }
-  yy1180:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy1201;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1179;
-      if (yych <= '\n')
-        goto yy1198;
-      goto yy1179;
-    } else {
-      if (yych <= '\r')
-        goto yy1198;
-      if (yych == ' ')
-        goto yy1198;
-      goto yy1179;
-    }
-  yy1181:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy1195;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1179;
-      if (yych <= '\n')
-        goto yy1192;
-      goto yy1179;
-    } else {
-      if (yych <= '\r')
-        goto yy1192;
-      if (yych == ' ')
-        goto yy1192;
-      goto yy1179;
-    }
-  yy1182:
-    yych = *++p;
-    goto yy1179;
-  yy1183:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1182;
-  yy1184:
-    p = marker;
-    goto yy1179;
-  yy1185:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1183;
-    goto yy1184;
-  yy1186:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1183;
-    goto yy1184;
-  yy1187:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1186;
-    goto yy1184;
-  yy1188:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1186;
-    goto yy1184;
-  yy1189:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0x8F)
-      goto yy1186;
-    goto yy1184;
-  yy1190:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0x9F)
-      goto yy1183;
-    goto yy1184;
-  yy1191:
-    ++p;
-    yych = *p;
-  yy1192:
-    if (yybm[0 + yych] & 32) {
-      goto yy1191;
-    }
-    if (yych <= 0x08)
-      goto yy1184;
-    if (yych <= '\n')
-      goto yy1193;
-    if (yych != '\r')
-      goto yy1184;
-  yy1193:
-    ++p;
-    { return 2; }
-  yy1195:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1191;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1184;
-      if (yych <= '\n')
-        goto yy1193;
-      goto yy1184;
-    } else {
-      if (yych <= '\r')
-        goto yy1193;
-      if (yych == '-')
-        goto yy1195;
-      goto yy1184;
-    }
-  yy1197:
-    ++p;
-    yych = *p;
-  yy1198:
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1184;
-      if (yych <= '\t')
-        goto yy1197;
-      if (yych >= '\v')
-        goto yy1184;
-    } else {
-      if (yych <= '\r')
-        goto yy1199;
-      if (yych == ' ')
-        goto yy1197;
-      goto yy1184;
-    }
-  yy1199:
-    ++p;
-    { return 1; }
-  yy1201:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1201;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1184;
-      if (yych <= '\t')
-        goto yy1197;
-      if (yych <= '\n')
-        goto yy1199;
-      goto yy1184;
-    } else {
-      if (yych <= '\r')
-        goto yy1199;
-      if (yych == ' ')
-        goto yy1197;
-      goto yy1184;
-    }
-  }
-}
-
-// Scan a thematic break line: "...three or more hyphens, asterisks,
-// or underscores on a line by themselves. If you wish, you may use
-// spaces between the hyphens or asterisks."
-bufsize_t _scan_thematic_break(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 240, 0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 240, 0, 0, 0,  0, 0, 0, 0,
-        0, 0, 128, 0, 0, 32, 0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 64, 0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0x7F) {
-      if (yych <= '*') {
-        if (yych == '\n')
-          goto yy1205;
-        if (yych <= ')')
-          goto yy1209;
-        goto yy1206;
-      } else {
-        if (yych <= '-') {
-          if (yych <= ',')
-            goto yy1209;
-          goto yy1208;
-        } else {
-          if (yych == '_')
-            goto yy1207;
-          goto yy1209;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF) {
-          if (yych >= 0xC2)
-            goto yy1210;
-        } else {
-          if (yych <= 0xE0)
-            goto yy1212;
-          if (yych <= 0xEC)
-            goto yy1213;
-          goto yy1217;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1213;
-          goto yy1214;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1215;
-          if (yych <= 0xF4)
-            goto yy1216;
-        }
-      }
-    }
-  yy1205 : { return 0; }
-  yy1206:
-    yych = *(marker = ++p);
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1238;
-      goto yy1205;
-    } else {
-      if (yych <= ' ')
-        goto yy1238;
-      if (yych == '*')
-        goto yy1240;
-      goto yy1205;
-    }
-  yy1207:
-    yych = *(marker = ++p);
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1228;
-      goto yy1205;
-    } else {
-      if (yych <= ' ')
-        goto yy1228;
-      if (yych == '_')
-        goto yy1230;
-      goto yy1205;
-    }
-  yy1208:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 16) {
-      goto yy1218;
-    }
-    if (yych == '-')
-      goto yy1220;
-    goto yy1205;
-  yy1209:
-    yych = *++p;
-    goto yy1205;
-  yy1210:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1209;
-  yy1211:
-    p = marker;
-    goto yy1205;
-  yy1212:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1210;
-    goto yy1211;
-  yy1213:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1210;
-    goto yy1211;
-  yy1214:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1213;
-    goto yy1211;
-  yy1215:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1213;
-    goto yy1211;
-  yy1216:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0x8F)
-      goto yy1213;
-    goto yy1211;
-  yy1217:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0x9F)
-      goto yy1210;
-    goto yy1211;
-  yy1218:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1218;
-    }
-    if (yych != '-')
-      goto yy1211;
-  yy1220:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1220;
-      goto yy1211;
-    } else {
-      if (yych <= ' ')
-        goto yy1220;
-      if (yych != '-')
-        goto yy1211;
-    }
-  yy1222:
-    ++p;
-    yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1211;
-        goto yy1222;
-      } else {
-        if (yych <= '\n')
-          goto yy1224;
-        if (yych <= '\f')
-          goto yy1211;
-      }
-    } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1211;
-        goto yy1222;
-      } else {
-        if (yych == '-')
-          goto yy1226;
-        goto yy1211;
-      }
-    }
-  yy1224:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1226:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1226;
-    }
-    if (yych <= 0x08)
-      goto yy1211;
-    if (yych <= '\n')
-      goto yy1224;
-    if (yych == '\r')
-      goto yy1224;
-    goto yy1211;
-  yy1228:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1228;
-      goto yy1211;
-    } else {
-      if (yych <= ' ')
-        goto yy1228;
-      if (yych != '_')
-        goto yy1211;
-    }
-  yy1230:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1230;
-      goto yy1211;
-    } else {
-      if (yych <= ' ')
-        goto yy1230;
-      if (yych != '_')
-        goto yy1211;
-    }
-  yy1232:
-    ++p;
-    yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1211;
-        goto yy1232;
-      } else {
-        if (yych <= '\n')
-          goto yy1234;
-        if (yych <= '\f')
-          goto yy1211;
-      }
-    } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1211;
-        goto yy1232;
-      } else {
-        if (yych == '_')
-          goto yy1236;
-        goto yy1211;
-      }
-    }
-  yy1234:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1236:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1236;
-    }
-    if (yych <= 0x08)
-      goto yy1211;
-    if (yych <= '\n')
-      goto yy1234;
-    if (yych == '\r')
-      goto yy1234;
-    goto yy1211;
-  yy1238:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1238;
-      goto yy1211;
-    } else {
-      if (yych <= ' ')
-        goto yy1238;
-      if (yych != '*')
-        goto yy1211;
-    }
-  yy1240:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1240;
-      goto yy1211;
-    } else {
-      if (yych <= ' ')
-        goto yy1240;
-      if (yych != '*')
-        goto yy1211;
-    }
-  yy1242:
-    ++p;
-    yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1211;
-        goto yy1242;
-      } else {
-        if (yych <= '\n')
-          goto yy1244;
-        if (yych <= '\f')
-          goto yy1211;
-      }
-    } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1211;
-        goto yy1242;
-      } else {
-        if (yych == '*')
-          goto yy1246;
-        goto yy1211;
-      }
-    }
-  yy1244:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1246:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1246;
-    }
-    if (yych <= 0x08)
-      goto yy1211;
-    if (yych <= '\n')
-      goto yy1244;
-    if (yych == '\r')
-      goto yy1244;
-    goto yy1211;
-  }
-}
-
-// Scan an opening code fence.
-bufsize_t _scan_open_code_fence(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '`') {
-        if (yych == '\n')
-          goto yy1250;
-        if (yych <= '_')
-          goto yy1253;
-        goto yy1251;
-      } else {
-        if (yych == '~')
-          goto yy1252;
-        if (yych <= 0x7F)
-          goto yy1253;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1254;
-        if (yych <= 0xE0)
-          goto yy1256;
-        if (yych <= 0xEC)
-          goto yy1257;
-        goto yy1261;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1257;
-          goto yy1258;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1259;
-          if (yych <= 0xF4)
-            goto yy1260;
-        }
-      }
-    }
-  yy1250 : { return 0; }
-  yy1251:
-    yych = *(marker = ++p);
-    if (yych == '`')
-      goto yy1276;
-    goto yy1250;
-  yy1252:
-    yych = *(marker = ++p);
-    if (yych == '~')
-      goto yy1262;
-    goto yy1250;
-  yy1253:
-    yych = *++p;
-    goto yy1250;
-  yy1254:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1253;
-  yy1255:
-    p = marker;
-    goto yy1250;
-  yy1256:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1254;
-    goto yy1255;
-  yy1257:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1254;
-    goto yy1255;
-  yy1258:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1257;
-    goto yy1255;
-  yy1259:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1257;
-    goto yy1255;
-  yy1260:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x8F)
-      goto yy1257;
-    goto yy1255;
-  yy1261:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x9F)
-      goto yy1254;
-    goto yy1255;
-  yy1262:
-    yych = *++p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1263;
-    }
-    goto yy1255;
-  yy1263:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1265;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '~') {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1274;
-        goto yy1263;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1255;
-        if (yych <= 0xDF)
-          goto yy1267;
-        goto yy1268;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1273;
-        goto yy1269;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1270;
-        if (yych <= 0xF3)
-          goto yy1271;
-        if (yych <= 0xF4)
-          goto yy1272;
-        goto yy1255;
-      }
-    }
-  yy1265:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1265;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1274;
-        goto yy1255;
-      } else {
-        if (yych <= 0xDF)
-          goto yy1267;
-        if (yych <= 0xE0)
-          goto yy1268;
-        goto yy1269;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy1273;
-        if (yych <= 0xEF)
-          goto yy1269;
-        goto yy1270;
-      } else {
-        if (yych <= 0xF3)
-          goto yy1271;
-        if (yych <= 0xF4)
-          goto yy1272;
-        goto yy1255;
-      }
-    }
-  yy1267:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1265;
-    goto yy1255;
-  yy1268:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1267;
-    goto yy1255;
-  yy1269:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1267;
-    goto yy1255;
-  yy1270:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1269;
-    goto yy1255;
-  yy1271:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1269;
-    goto yy1255;
-  yy1272:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x8F)
-      goto yy1269;
-    goto yy1255;
-  yy1273:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x9F)
-      goto yy1267;
-    goto yy1255;
-  yy1274:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  yy1276:
-    yych = *++p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1277;
-    }
-    goto yy1255;
-  yy1277:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1279;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '`') {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1288;
-        goto yy1277;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1255;
-        if (yych <= 0xDF)
-          goto yy1281;
-        goto yy1282;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1287;
-        goto yy1283;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1284;
-        if (yych <= 0xF3)
-          goto yy1285;
-        if (yych <= 0xF4)
-          goto yy1286;
-        goto yy1255;
-      }
-    }
-  yy1279:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1279;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1288;
-        goto yy1255;
-      } else {
-        if (yych <= 0xDF)
-          goto yy1281;
-        if (yych <= 0xE0)
-          goto yy1282;
-        goto yy1283;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy1287;
-        if (yych <= 0xEF)
-          goto yy1283;
-        goto yy1284;
-      } else {
-        if (yych <= 0xF3)
-          goto yy1285;
-        if (yych <= 0xF4)
-          goto yy1286;
-        goto yy1255;
-      }
-    }
-  yy1281:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1279;
-    goto yy1255;
-  yy1282:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1281;
-    goto yy1255;
-  yy1283:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1281;
-    goto yy1255;
-  yy1284:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1283;
-    goto yy1255;
-  yy1285:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1283;
-    goto yy1255;
-  yy1286:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x8F)
-      goto yy1283;
-    goto yy1255;
-  yy1287:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x9F)
-      goto yy1281;
-    goto yy1255;
-  yy1288:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Scan a closing code fence with length at least len.
-bufsize_t _scan_close_code_fence(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '`') {
-        if (yych == '\n')
-          goto yy1292;
-        if (yych <= '_')
-          goto yy1295;
-        goto yy1293;
-      } else {
-        if (yych == '~')
-          goto yy1294;
-        if (yych <= 0x7F)
-          goto yy1295;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1296;
-        if (yych <= 0xE0)
-          goto yy1298;
-        if (yych <= 0xEC)
-          goto yy1299;
-        goto yy1303;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1299;
-          goto yy1300;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1301;
-          if (yych <= 0xF4)
-            goto yy1302;
-        }
-      }
-    }
-  yy1292 : { return 0; }
-  yy1293:
-    yych = *(marker = ++p);
-    if (yych == '`')
-      goto yy1311;
-    goto yy1292;
-  yy1294:
-    yych = *(marker = ++p);
-    if (yych == '~')
-      goto yy1304;
-    goto yy1292;
-  yy1295:
-    yych = *++p;
-    goto yy1292;
-  yy1296:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1295;
-  yy1297:
-    p = marker;
-    goto yy1292;
-  yy1298:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1296;
-    goto yy1297;
-  yy1299:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1296;
-    goto yy1297;
-  yy1300:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1299;
-    goto yy1297;
-  yy1301:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1299;
-    goto yy1297;
-  yy1302:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0x8F)
-      goto yy1299;
-    goto yy1297;
-  yy1303:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0x9F)
-      goto yy1296;
-    goto yy1297;
-  yy1304:
-    yych = *++p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1305;
-    }
-    goto yy1297;
-  yy1305:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1307;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1297;
-      if (yych <= '\n')
-        goto yy1309;
-      goto yy1297;
-    } else {
-      if (yych <= '\r')
-        goto yy1309;
-      if (yych == '~')
-        goto yy1305;
-      goto yy1297;
-    }
-  yy1307:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1307;
-    }
-    if (yych <= 0x08)
-      goto yy1297;
-    if (yych <= '\n')
-      goto yy1309;
-    if (yych != '\r')
-      goto yy1297;
-  yy1309:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  yy1311:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1312;
-    }
-    goto yy1297;
-  yy1312:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1312;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1297;
-      if (yych <= '\t')
-        goto yy1314;
-      if (yych <= '\n')
-        goto yy1316;
-      goto yy1297;
-    } else {
-      if (yych <= '\r')
-        goto yy1316;
-      if (yych != ' ')
-        goto yy1297;
-    }
-  yy1314:
-    ++p;
-    yych = *p;
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1297;
-      if (yych <= '\t')
-        goto yy1314;
-      if (yych >= '\v')
-        goto yy1297;
-    } else {
-      if (yych <= '\r')
-        goto yy1316;
-      if (yych == ' ')
-        goto yy1314;
-      goto yy1297;
-    }
-  yy1316:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Scans an entity.
-// Returns number of chars matched.
-bufsize_t _scan_entity(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '%') {
-        if (yych != '\n')
-          goto yy1322;
-      } else {
-        if (yych <= '&')
-          goto yy1321;
-        if (yych <= 0x7F)
-          goto yy1322;
-        if (yych >= 0xC2)
-          goto yy1323;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy1325;
-        if (yych == 0xED)
-          goto yy1330;
-        goto yy1326;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1327;
-        if (yych <= 0xF3)
-          goto yy1328;
-        if (yych <= 0xF4)
-          goto yy1329;
-      }
-    }
-  yy1320 : { return 0; }
-  yy1321:
-    yych = *(marker = ++p);
-    if (yych <= '@') {
-      if (yych == '#')
-        goto yy1331;
-      goto yy1320;
-    } else {
-      if (yych <= 'Z')
-        goto yy1332;
-      if (yych <= '`')
-        goto yy1320;
-      if (yych <= 'z')
-        goto yy1332;
-      goto yy1320;
-    }
-  yy1322:
-    yych = *++p;
-    goto yy1320;
-  yy1323:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1324;
-    if (yych <= 0xBF)
-      goto yy1322;
-  yy1324:
-    p = marker;
-    goto yy1320;
-  yy1325:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1324;
-    if (yych <= 0xBF)
-      goto yy1323;
-    goto yy1324;
-  yy1326:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1324;
-    if (yych <= 0xBF)
-      goto yy1323;
-    goto yy1324;
-  yy1327:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1324;
-    if (yych <= 0xBF)
-      goto yy1326;
-    goto yy1324;
-  yy1328:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1324;
-    if (yych <= 0xBF)
-      goto yy1326;
-    goto yy1324;
-  yy1329:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1324;
-    if (yych <= 0x8F)
-      goto yy1326;
-    goto yy1324;
-  yy1330:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1324;
-    if (yych <= 0x9F)
-      goto yy1323;
-    goto yy1324;
-  yy1331:
-    yych = *++p;
-    if (yych <= 'W') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1367;
-      goto yy1324;
-    } else {
-      if (yych <= 'X')
-        goto yy1366;
-      if (yych == 'x')
-        goto yy1366;
-      goto yy1324;
-    }
-  yy1332:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych >= ':')
-        goto yy1324;
-    } else {
-      if (yych <= 'Z')
-        goto yy1333;
-      if (yych <= '`')
-        goto yy1324;
-      if (yych >= '{')
-        goto yy1324;
-    }
-  yy1333:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1336;
-      if (yych <= ':')
-        goto yy1324;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-        goto yy1336;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych <= 'z')
-          goto yy1336;
-        goto yy1324;
-      }
-    }
-  yy1334:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1336:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1337;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1337:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1338;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1338:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1339;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1339:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1340;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1340:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1341;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1341:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1342;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1342:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1343;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1343:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1344;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1344:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1345;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1345:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1346;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1346:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1347;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1347:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1348;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1348:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1349;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1349:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1350;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1350:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1351;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1351:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1352;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1352:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1353;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1353:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1354;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1354:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1355;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1355:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1356;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1356:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1357;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1357:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1358;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1358:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1359;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1359:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1360;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1360:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1361;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1361:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1362;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1362:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1363;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1363:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1364;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1364:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1365;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= '{')
-          goto yy1324;
-      }
-    }
-  yy1365:
-    yych = *++p;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1366:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1374;
-      goto yy1324;
-    } else {
-      if (yych <= 'F')
-        goto yy1374;
-      if (yych <= '`')
-        goto yy1324;
-      if (yych <= 'f')
-        goto yy1374;
-      goto yy1324;
-    }
-  yy1367:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1368;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1368:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1369;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1369:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1370;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1370:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1371;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1371:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1372;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1372:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1373;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1373:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1324;
-    if (yych <= '9')
-      goto yy1365;
-    if (yych == ';')
-      goto yy1334;
-    goto yy1324;
-  yy1374:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1375;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= 'g')
-          goto yy1324;
-      }
-    }
-  yy1375:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1376;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= 'g')
-          goto yy1324;
-      }
-    }
-  yy1376:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1377;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= 'g')
-          goto yy1324;
-      }
-    }
-  yy1377:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1378;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= 'g')
-          goto yy1324;
-      }
-    }
-  yy1378:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1379;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= 'g')
-          goto yy1324;
-      }
-    }
-  yy1379:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1380;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych >= 'g')
-          goto yy1324;
-      }
-    }
-  yy1380:
-    ++p;
-    if ((yych = *p) <= ';') {
-      if (yych <= '/')
-        goto yy1324;
-      if (yych <= '9')
-        goto yy1365;
-      if (yych <= ':')
-        goto yy1324;
-      goto yy1334;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1324;
-        goto yy1365;
-      } else {
-        if (yych <= '`')
-          goto yy1324;
-        if (yych <= 'f')
-          goto yy1365;
-        goto yy1324;
-      }
-    }
-  }
-}
-
-// Returns positive value if a URL begins in a way that is potentially
-// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
-bufsize_t _scan_dangerous_url(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    yych = *(marker = p);
-    if (yych <= 'f') {
-      if (yych <= 'I') {
-        if (yych <= 'C') {
-          if (yych != '\n')
-            goto yy1388;
-        } else {
-          if (yych <= 'D')
-            goto yy1384;
-          if (yych == 'F')
-            goto yy1387;
-          goto yy1388;
-        }
-      } else {
-        if (yych <= 'V') {
-          if (yych <= 'J')
-            goto yy1385;
-          if (yych <= 'U')
-            goto yy1388;
-          goto yy1386;
-        } else {
-          if (yych == 'd')
-            goto yy1384;
-          if (yych <= 'e')
-            goto yy1388;
-          goto yy1387;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= 'u') {
-          if (yych == 'j')
-            goto yy1385;
-          goto yy1388;
-        } else {
-          if (yych <= 'v')
-            goto yy1386;
-          if (yych <= 0x7F)
-            goto yy1388;
-          if (yych >= 0xC2)
-            goto yy1389;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy1391;
-          if (yych == 0xED)
-            goto yy1396;
-          goto yy1392;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1393;
-          if (yych <= 0xF3)
-            goto yy1394;
-          if (yych <= 0xF4)
-            goto yy1395;
-        }
-      }
-    }
-  yy1383 : { return 0; }
-  yy1384:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'A')
-      goto yy1418;
-    if (yych == 'a')
-      goto yy1418;
-    goto yy1383;
-  yy1385:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'A')
-      goto yy1409;
-    if (yych == 'a')
-      goto yy1409;
-    goto yy1383;
-  yy1386:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'B')
-      goto yy1402;
-    if (yych == 'b')
-      goto yy1402;
-    goto yy1383;
-  yy1387:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'I')
-      goto yy1397;
-    if (yych == 'i')
-      goto yy1397;
-    goto yy1383;
-  yy1388:
-    yych = *++p;
-    goto yy1383;
-  yy1389:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1390;
-    if (yych <= 0xBF)
-      goto yy1388;
-  yy1390:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy1383;
-    } else {
-      goto yy1401;
-    }
-  yy1391:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1390;
-    if (yych <= 0xBF)
-      goto yy1389;
-    goto yy1390;
-  yy1392:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1390;
-    if (yych <= 0xBF)
-      goto yy1389;
-    goto yy1390;
-  yy1393:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1390;
-    if (yych <= 0xBF)
-      goto yy1392;
-    goto yy1390;
-  yy1394:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1390;
-    if (yych <= 0xBF)
-      goto yy1392;
-    goto yy1390;
-  yy1395:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1390;
-    if (yych <= 0x8F)
-      goto yy1392;
-    goto yy1390;
-  yy1396:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1390;
-    if (yych <= 0x9F)
-      goto yy1389;
-    goto yy1390;
-  yy1397:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy1398;
-    if (yych != 'l')
-      goto yy1390;
-  yy1398:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1399;
-    if (yych != 'e')
-      goto yy1390;
-  yy1399:
-    yych = *++p;
-    if (yych != ':')
-      goto yy1390;
-  yy1400:
-    ++p;
-  yy1401 : { return (bufsize_t)(p - start); }
-  yy1402:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy1403;
-    if (yych != 's')
-      goto yy1390;
-  yy1403:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy1404;
-    if (yych != 'c')
-      goto yy1390;
-  yy1404:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy1405;
-    if (yych != 'r')
-      goto yy1390;
-  yy1405:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy1406;
-    if (yych != 'i')
-      goto yy1390;
-  yy1406:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1407;
-    if (yych != 'p')
-      goto yy1390;
-  yy1407:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy1408;
-    if (yych != 't')
-      goto yy1390;
-  yy1408:
-    yych = *++p;
-    if (yych == ':')
-      goto yy1400;
-    goto yy1390;
-  yy1409:
-    yych = *++p;
-    if (yych == 'V')
-      goto yy1410;
-    if (yych != 'v')
-      goto yy1390;
-  yy1410:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy1411;
-    if (yych != 'a')
-      goto yy1390;
-  yy1411:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy1412;
-    if (yych != 's')
-      goto yy1390;
-  yy1412:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy1413;
-    if (yych != 'c')
-      goto yy1390;
-  yy1413:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy1414;
-    if (yych != 'r')
-      goto yy1390;
-  yy1414:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy1415;
-    if (yych != 'i')
-      goto yy1390;
-  yy1415:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1416;
-    if (yych != 'p')
-      goto yy1390;
-  yy1416:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy1417;
-    if (yych != 't')
-      goto yy1390;
-  yy1417:
-    yych = *++p;
-    if (yych == ':')
-      goto yy1400;
-    goto yy1390;
-  yy1418:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy1419;
-    if (yych != 't')
-      goto yy1390;
-  yy1419:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy1420;
-    if (yych != 'a')
-      goto yy1390;
-  yy1420:
-    yych = *++p;
-    if (yych != ':')
-      goto yy1390;
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych == 'I')
-      goto yy1422;
-    if (yych != 'i')
-      goto yy1401;
-  yy1422:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy1423;
-    if (yych != 'm')
-      goto yy1390;
-  yy1423:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy1424;
-    if (yych != 'a')
-      goto yy1390;
-  yy1424:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy1425;
-    if (yych != 'g')
-      goto yy1390;
-  yy1425:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1426;
-    if (yych != 'e')
-      goto yy1390;
-  yy1426:
-    yych = *++p;
-    if (yych != '/')
-      goto yy1390;
-    yych = *++p;
-    if (yych <= 'W') {
-      if (yych <= 'J') {
-        if (yych == 'G')
-          goto yy1429;
-        if (yych <= 'I')
-          goto yy1390;
-        goto yy1430;
-      } else {
-        if (yych == 'P')
-          goto yy1428;
-        if (yych <= 'V')
-          goto yy1390;
-        goto yy1431;
-      }
-    } else {
-      if (yych <= 'j') {
-        if (yych == 'g')
-          goto yy1429;
-        if (yych <= 'i')
-          goto yy1390;
-        goto yy1430;
-      } else {
-        if (yych <= 'p') {
-          if (yych <= 'o')
-            goto yy1390;
-        } else {
-          if (yych == 'w')
-            goto yy1431;
-          goto yy1390;
-        }
-      }
-    }
-  yy1428:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy1439;
-    if (yych == 'n')
-      goto yy1439;
-    goto yy1390;
-  yy1429:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy1438;
-    if (yych == 'i')
-      goto yy1438;
-    goto yy1390;
-  yy1430:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1436;
-    if (yych == 'p')
-      goto yy1436;
-    goto yy1390;
-  yy1431:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1432;
-    if (yych != 'e')
-      goto yy1390;
-  yy1432:
-    yych = *++p;
-    if (yych == 'B')
-      goto yy1433;
-    if (yych != 'b')
-      goto yy1390;
-  yy1433:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1434;
-    if (yych != 'p')
-      goto yy1390;
-  yy1434:
-    ++p;
-    { return 0; }
-  yy1436:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1437;
-    if (yych != 'e')
-      goto yy1390;
-  yy1437:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy1434;
-    if (yych == 'g')
-      goto yy1434;
-    goto yy1390;
-  yy1438:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy1434;
-    if (yych == 'f')
-      goto yy1434;
-    goto yy1390;
-  yy1439:
-    ++p;
-    if ((yych = *p) == 'G')
-      goto yy1434;
-    if (yych == 'g')
-      goto yy1434;
-    goto yy1390;
+#include <stdlib.h>
+#include "chunk.h"
+#include "scanners.h"
+
+bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
+                   bufsize_t offset) {
+  bufsize_t res;
+  unsigned char *ptr = (unsigned char *)c->data;
+
+  if (ptr == NULL || offset > c->len) {
+    return 0;
+  } else {
+    unsigned char lim = ptr[c->len];
+
+    ptr[c->len] = '\0';
+    res = scanner(ptr + offset);
+    ptr[c->len] = lim;
+  }
+
+  return res;
+}
+
+// Try to match a scheme including colon.
+bufsize_t _scan_scheme(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    yych = *p;
+    if (yych <= '@')
+      goto yy2;
+    if (yych <= 'Z')
+      goto yy4;
+    if (yych <= '`')
+      goto yy2;
+    if (yych <= 'z')
+      goto yy4;
+  yy2:
+    ++p;
+  yy3 : { return 0; }
+  yy4:
+    yych = *(marker = ++p);
+    if (yych <= '/') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy3;
+      } else {
+        if (yych <= ',')
+          goto yy3;
+        if (yych >= '/')
+          goto yy3;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '9')
+          goto yy5;
+        if (yych <= '@')
+          goto yy3;
+      } else {
+        if (yych <= '`')
+          goto yy3;
+        if (yych >= '{')
+          goto yy3;
+      }
+    }
+  yy5:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy9;
+      } else {
+        if (yych != '/')
+          goto yy9;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych >= 'A')
+          goto yy9;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych <= 'z')
+          goto yy9;
+      }
+    }
+  yy6:
+    p = marker;
+    goto yy3;
+  yy7:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy9:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy7;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    ++p;
+    if ((yych = *p) == ':')
+      goto yy7;
+    goto yy6;
+  }
+}
+
+// Try to match URI autolink after first <, returning number of chars matched.
+bufsize_t _scan_autolink_uri(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '@')
+      goto yy41;
+    if (yych <= 'Z')
+      goto yy43;
+    if (yych <= '`')
+      goto yy41;
+    if (yych <= 'z')
+      goto yy43;
+  yy41:
+    ++p;
+  yy42 : { return 0; }
+  yy43:
+    yych = *(marker = ++p);
+    if (yych <= '/') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy42;
+      } else {
+        if (yych <= ',')
+          goto yy42;
+        if (yych >= '/')
+          goto yy42;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '9')
+          goto yy44;
+        if (yych <= '@')
+          goto yy42;
+      } else {
+        if (yych <= '`')
+          goto yy42;
+        if (yych >= '{')
+          goto yy42;
+      }
+    }
+  yy44:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy48;
+      } else {
+        if (yych != '/')
+          goto yy48;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych >= 'A')
+          goto yy48;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych <= 'z')
+          goto yy48;
+      }
+    }
+  yy45:
+    p = marker;
+    goto yy42;
+  yy46:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy46;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '<')
+          goto yy45;
+        if (yych <= '>')
+          goto yy85;
+        goto yy45;
+      } else {
+        if (yych <= 0xDF)
+          goto yy78;
+        if (yych <= 0xE0)
+          goto yy79;
+        goto yy80;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy84;
+        if (yych <= 0xEF)
+          goto yy80;
+        goto yy81;
+      } else {
+        if (yych <= 0xF3)
+          goto yy82;
+        if (yych <= 0xF4)
+          goto yy83;
+        goto yy45;
+      }
+    }
+  yy48:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy46;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych == ':')
+      goto yy46;
+    goto yy45;
+  yy78:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy46;
+    goto yy45;
+  yy79:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy78;
+    goto yy45;
+  yy80:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy78;
+    goto yy45;
+  yy81:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy80;
+    goto yy45;
+  yy82:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy80;
+    goto yy45;
+  yy83:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0x8F)
+      goto yy80;
+    goto yy45;
+  yy84:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0x9F)
+      goto yy78;
+    goto yy45;
+  yy85:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match email autolink after first <, returning num of chars matched.
+bufsize_t _scan_autolink_email(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
+        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '9') {
+      if (yych <= '\'') {
+        if (yych == '!')
+          goto yy91;
+        if (yych >= '#')
+          goto yy91;
+      } else {
+        if (yych <= ')')
+          goto yy89;
+        if (yych != ',')
+          goto yy91;
+      }
+    } else {
+      if (yych <= '?') {
+        if (yych == '=')
+          goto yy91;
+        if (yych >= '?')
+          goto yy91;
+      } else {
+        if (yych <= 'Z') {
+          if (yych >= 'A')
+            goto yy91;
+        } else {
+          if (yych <= ']')
+            goto yy89;
+          if (yych <= '~')
+            goto yy91;
+        }
+      }
+    }
+  yy89:
+    ++p;
+  yy90 : { return 0; }
+  yy91:
+    yych = *(marker = ++p);
+    if (yych <= ',') {
+      if (yych <= '"') {
+        if (yych == '!')
+          goto yy95;
+        goto yy90;
+      } else {
+        if (yych <= '\'')
+          goto yy95;
+        if (yych <= ')')
+          goto yy90;
+        if (yych <= '+')
+          goto yy95;
+        goto yy90;
+      }
+    } else {
+      if (yych <= '>') {
+        if (yych <= '9')
+          goto yy95;
+        if (yych == '=')
+          goto yy95;
+        goto yy90;
+      } else {
+        if (yych <= 'Z')
+          goto yy95;
+        if (yych <= ']')
+          goto yy90;
+        if (yych <= '~')
+          goto yy95;
+        goto yy90;
+      }
+    }
+  yy92:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy93;
+      if (yych <= '9')
+        goto yy96;
+    } else {
+      if (yych <= 'Z')
+        goto yy96;
+      if (yych <= '`')
+        goto yy93;
+      if (yych <= 'z')
+        goto yy96;
+    }
+  yy93:
+    p = marker;
+    goto yy90;
+  yy94:
+    ++p;
+    yych = *p;
+  yy95:
+    if (yybm[0 + yych] & 128) {
+      goto yy94;
+    }
+    if (yych <= '>')
+      goto yy93;
+    if (yych <= '@')
+      goto yy92;
+    goto yy93;
+  yy96:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy98;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych >= ':')
+          goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy227;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy226;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy226;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy226;
+        goto yy93;
+      }
+    }
+  yy98:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy227;
+      if (yych <= '/')
+        goto yy93;
+      goto yy226;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+        goto yy226;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy226;
+        goto yy93;
+      }
+    }
+  yy99:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy93;
+      if (yych <= '9')
+        goto yy102;
+      goto yy93;
+    } else {
+      if (yych <= 'Z')
+        goto yy102;
+      if (yych <= '`')
+        goto yy93;
+      if (yych <= 'z')
+        goto yy102;
+      goto yy93;
+    }
+  yy100:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy102:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy104;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych >= ':')
+          goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy106;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy105;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy105;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy105;
+        goto yy93;
+      }
+    }
+  yy104:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy106;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy105:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy108;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy107;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy107;
+        goto yy93;
+      }
+    }
+  yy106:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy108;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy107:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy110;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy109;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy109;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy109;
+        goto yy93;
+      }
+    }
+  yy108:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy110;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy109:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy112;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy111;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy111;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy111;
+        goto yy93;
+      }
+    }
+  yy110:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy112;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy111:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy114;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy113;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy113;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy113;
+        goto yy93;
+      }
+    }
+  yy112:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy114;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy113:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy116;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy115;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy115;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy115;
+        goto yy93;
+      }
+    }
+  yy114:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy116;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy115:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy118;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy117;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy117;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy117;
+        goto yy93;
+      }
+    }
+  yy116:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy118;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy117:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy120;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy119;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy119;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy119;
+        goto yy93;
+      }
+    }
+  yy118:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy120;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy119:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy122;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy121;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy121;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy121;
+        goto yy93;
+      }
+    }
+  yy120:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy122;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy121:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy124;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy123;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy123;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy123;
+        goto yy93;
+      }
+    }
+  yy122:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy124;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy123:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy126;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy125;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy125;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy125;
+        goto yy93;
+      }
+    }
+  yy124:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy126;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy125:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy128;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy127;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy127;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy127;
+        goto yy93;
+      }
+    }
+  yy126:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy128;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy127:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy130;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy129;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy129;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy129;
+        goto yy93;
+      }
+    }
+  yy128:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy130;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy129:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy132;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy131;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy131;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy131;
+        goto yy93;
+      }
+    }
+  yy130:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy132;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy131:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy134;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy133;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy133;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy133;
+        goto yy93;
+      }
+    }
+  yy132:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy134;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy133:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy136;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy135;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy135;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy135;
+        goto yy93;
+      }
+    }
+  yy134:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy136;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy135:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy138;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy137;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy137;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy137;
+        goto yy93;
+      }
+    }
+  yy136:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy138;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy137:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy140;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy139;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy139;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy139;
+        goto yy93;
+      }
+    }
+  yy138:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy140;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy139:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy142;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy141;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy141;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy141;
+        goto yy93;
+      }
+    }
+  yy140:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy142;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy141:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy144;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy143;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy143;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy143;
+        goto yy93;
+      }
+    }
+  yy142:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy144;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy143:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy146;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy145;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy145;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy145;
+        goto yy93;
+      }
+    }
+  yy144:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy146;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy145:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy148;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy147;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy147;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy147;
+        goto yy93;
+      }
+    }
+  yy146:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy148;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy147:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy150;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy149;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy149;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy149;
+        goto yy93;
+      }
+    }
+  yy148:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy150;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy149:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy152;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy151;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy151;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy151;
+        goto yy93;
+      }
+    }
+  yy150:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy152;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy151:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy154;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy153;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy153;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy153;
+        goto yy93;
+      }
+    }
+  yy152:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy154;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy153:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy156;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy155;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy155;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy155;
+        goto yy93;
+      }
+    }
+  yy154:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy156;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy155:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy158;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy157;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy157;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy157;
+        goto yy93;
+      }
+    }
+  yy156:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy158;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy157:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy160;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy159;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy159;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy159;
+        goto yy93;
+      }
+    }
+  yy158:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy160;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy159:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy162;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy161;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy161;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy161;
+        goto yy93;
+      }
+    }
+  yy160:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy162;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy161:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy164;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy163;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy163;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy163;
+        goto yy93;
+      }
+    }
+  yy162:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy164;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy163:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy166;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy165;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy165;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy165;
+        goto yy93;
+      }
+    }
+  yy164:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy166;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy165:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy168;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy167;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy167;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy167;
+        goto yy93;
+      }
+    }
+  yy166:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy168;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy167:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy170;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy169;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy169;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy169;
+        goto yy93;
+      }
+    }
+  yy168:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy170;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy169:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy172;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy171;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy171;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy171;
+        goto yy93;
+      }
+    }
+  yy170:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy172;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy171:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy174;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy173;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy173;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy173;
+        goto yy93;
+      }
+    }
+  yy172:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy174;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy173:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy176;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy175;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy175;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy175;
+        goto yy93;
+      }
+    }
+  yy174:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy176;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy175:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy178;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy177;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy177;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy177;
+        goto yy93;
+      }
+    }
+  yy176:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy178;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy177:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy180;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy179;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy179;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy179;
+        goto yy93;
+      }
+    }
+  yy178:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy180;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy179:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy182;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy181;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy181;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy181;
+        goto yy93;
+      }
+    }
+  yy180:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy182;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy181:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy184;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy183;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy183;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy183;
+        goto yy93;
+      }
+    }
+  yy182:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy184;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy183:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy186;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy185;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy185;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy185;
+        goto yy93;
+      }
+    }
+  yy184:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy186;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy185:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy188;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy187;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy187;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy187;
+        goto yy93;
+      }
+    }
+  yy186:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy188;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy187:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy190;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy189;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy189;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy189;
+        goto yy93;
+      }
+    }
+  yy188:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy190;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy189:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy192;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy191;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy191;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy191;
+        goto yy93;
+      }
+    }
+  yy190:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy192;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy191:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy194;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy193;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy193;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy193;
+        goto yy93;
+      }
+    }
+  yy192:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy194;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy193:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy196;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy195;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy195;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy195;
+        goto yy93;
+      }
+    }
+  yy194:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy196;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy195:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy198;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy197;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy197;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy197;
+        goto yy93;
+      }
+    }
+  yy196:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy198;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy197:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy200;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy199;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy199;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy199;
+        goto yy93;
+      }
+    }
+  yy198:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy200;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy199:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy202;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy201;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy201;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy201;
+        goto yy93;
+      }
+    }
+  yy200:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy202;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy201:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy204;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy203;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy203;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy203;
+        goto yy93;
+      }
+    }
+  yy202:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy204;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy203:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy206;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy205;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy205;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy205;
+        goto yy93;
+      }
+    }
+  yy204:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy206;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy205:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy208;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy207;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy207;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy207;
+        goto yy93;
+      }
+    }
+  yy206:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy208;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy207:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy210;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy209;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy209;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy209;
+        goto yy93;
+      }
+    }
+  yy208:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy210;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy209:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy212;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy211;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy211;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy211;
+        goto yy93;
+      }
+    }
+  yy210:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy212;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy211:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy214;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy213;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy213;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy213;
+        goto yy93;
+      }
+    }
+  yy212:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy214;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy213:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy216;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy215;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy215;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy215;
+        goto yy93;
+      }
+    }
+  yy214:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy216;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy215:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy218;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy217;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy217;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy217;
+        goto yy93;
+      }
+    }
+  yy216:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy218;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy217:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy220;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy219;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy219;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy219;
+        goto yy93;
+      }
+    }
+  yy218:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy220;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy219:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy222;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy221;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy221;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy221;
+        goto yy93;
+      }
+    }
+  yy220:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy222;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy221:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy224;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy223;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy223;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy223;
+        goto yy93;
+      }
+    }
+  yy222:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy224;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy223:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= '-')
+          goto yy93;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy225;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy225;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy225;
+        goto yy93;
+      }
+    }
+  yy224:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy93;
+      if (yych >= ':')
+        goto yy93;
+    } else {
+      if (yych <= 'Z')
+        goto yy225;
+      if (yych <= '`')
+        goto yy93;
+      if (yych >= '{')
+        goto yy93;
+    }
+  yy225:
+    ++p;
+    yych = *p;
+    if (yych == '.')
+      goto yy99;
+    if (yych == '>')
+      goto yy100;
+    goto yy93;
+  yy226:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy229;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy228;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy228;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy228;
+        goto yy93;
+      }
+    }
+  yy227:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy229;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy228:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy231;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy230;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy230;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy230;
+        goto yy93;
+      }
+    }
+  yy229:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy231;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy230:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy233;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy232;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy232;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy232;
+        goto yy93;
+      }
+    }
+  yy231:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy233;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy232:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy235;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy234;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy234;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy234;
+        goto yy93;
+      }
+    }
+  yy233:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy235;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy234:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy237;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy236;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy236;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy236;
+        goto yy93;
+      }
+    }
+  yy235:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy237;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy236:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy239;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy238;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy238;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy238;
+        goto yy93;
+      }
+    }
+  yy237:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy239;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy238:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy241;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy240;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy240;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy240;
+        goto yy93;
+      }
+    }
+  yy239:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy241;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy240:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy243;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy242;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy242;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy242;
+        goto yy93;
+      }
+    }
+  yy241:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy243;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy242:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy245;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy244;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy244;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy244;
+        goto yy93;
+      }
+    }
+  yy243:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy245;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy244:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy247;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy246;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy246;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy246;
+        goto yy93;
+      }
+    }
+  yy245:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy247;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy246:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy249;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy248;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy248;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy248;
+        goto yy93;
+      }
+    }
+  yy247:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy249;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy248:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy251;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy250;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy250;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy250;
+        goto yy93;
+      }
+    }
+  yy249:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy251;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy250:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy253;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy252;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy252;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy252;
+        goto yy93;
+      }
+    }
+  yy251:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy253;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy252:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy255;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy254;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy254;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy254;
+        goto yy93;
+      }
+    }
+  yy253:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy255;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy254:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy257;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy256;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy256;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy256;
+        goto yy93;
+      }
+    }
+  yy255:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy257;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy256:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy259;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy258;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy258;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy258;
+        goto yy93;
+      }
+    }
+  yy257:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy259;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy258:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy261;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy260;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy260;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy260;
+        goto yy93;
+      }
+    }
+  yy259:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy261;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy260:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy263;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy262;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy262;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy262;
+        goto yy93;
+      }
+    }
+  yy261:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy263;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy262:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy265;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy264;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy264;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy264;
+        goto yy93;
+      }
+    }
+  yy263:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy265;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy264:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy267;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy266;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy266;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy266;
+        goto yy93;
+      }
+    }
+  yy265:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy267;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy266:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy269;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy268;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy268;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy268;
+        goto yy93;
+      }
+    }
+  yy267:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy269;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy268:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy271;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy270;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy270;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy270;
+        goto yy93;
+      }
+    }
+  yy269:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy271;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy270:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy273;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy272;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy272;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy272;
+        goto yy93;
+      }
+    }
+  yy271:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy273;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy272:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy275;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy274;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy274;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy274;
+        goto yy93;
+      }
+    }
+  yy273:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy275;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy274:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy277;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy276;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy276;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy276;
+        goto yy93;
+      }
+    }
+  yy275:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy277;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy276:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy279;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy278;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy278;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy278;
+        goto yy93;
+      }
+    }
+  yy277:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy279;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy278:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy281;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy280;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy280;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy280;
+        goto yy93;
+      }
+    }
+  yy279:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy281;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy280:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy283;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy282;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy282;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy282;
+        goto yy93;
+      }
+    }
+  yy281:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy283;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy282:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy285;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy284;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy284;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy284;
+        goto yy93;
+      }
+    }
+  yy283:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy285;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy284:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy287;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy286;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy286;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy286;
+        goto yy93;
+      }
+    }
+  yy285:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy287;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy286:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy289;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy288;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy288;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy288;
+        goto yy93;
+      }
+    }
+  yy287:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy289;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy288:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy291;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy290;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy290;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy290;
+        goto yy93;
+      }
+    }
+  yy289:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy291;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy290:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy293;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy292;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy292;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy292;
+        goto yy93;
+      }
+    }
+  yy291:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy293;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy292:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy295;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy294;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy294;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy294;
+        goto yy93;
+      }
+    }
+  yy293:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy295;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy294:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy297;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy296;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy296;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy296;
+        goto yy93;
+      }
+    }
+  yy295:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy297;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy296:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy299;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy298;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy298;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy298;
+        goto yy93;
+      }
+    }
+  yy297:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy299;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy298:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy301;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy300;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy300;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy300;
+        goto yy93;
+      }
+    }
+  yy299:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy301;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy300:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy303;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy302;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy302;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy302;
+        goto yy93;
+      }
+    }
+  yy301:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy303;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy302:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy305;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy304;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy304;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy304;
+        goto yy93;
+      }
+    }
+  yy303:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy305;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy304:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy307;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy306;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy306;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy306;
+        goto yy93;
+      }
+    }
+  yy305:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy307;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy306:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy309;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy308;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy308;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy308;
+        goto yy93;
+      }
+    }
+  yy307:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy309;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy308:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy311;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy310;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy310;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy310;
+        goto yy93;
+      }
+    }
+  yy309:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy311;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy310:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy313;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy312;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy312;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy312;
+        goto yy93;
+      }
+    }
+  yy311:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy313;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy312:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy315;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy314;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy314;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy314;
+        goto yy93;
+      }
+    }
+  yy313:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy315;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy314:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy317;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy316;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy316;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy316;
+        goto yy93;
+      }
+    }
+  yy315:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy317;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy316:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy319;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy318;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy318;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy318;
+        goto yy93;
+      }
+    }
+  yy317:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy319;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy318:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy321;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy320;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy320;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy320;
+        goto yy93;
+      }
+    }
+  yy319:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy321;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy320:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy323;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy322;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy322;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy322;
+        goto yy93;
+      }
+    }
+  yy321:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy323;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy322:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy325;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy324;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy324;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy324;
+        goto yy93;
+      }
+    }
+  yy323:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy325;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy324:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy327;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy326;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy326;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy326;
+        goto yy93;
+      }
+    }
+  yy325:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy327;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy326:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy329;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy328;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy328;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy328;
+        goto yy93;
+      }
+    }
+  yy327:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy329;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy328:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy331;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy330;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy330;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy330;
+        goto yy93;
+      }
+    }
+  yy329:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy331;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy330:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy333;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy332;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy332;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy332;
+        goto yy93;
+      }
+    }
+  yy331:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy333;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy332:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy335;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy334;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy334;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy334;
+        goto yy93;
+      }
+    }
+  yy333:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy335;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy334:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy337;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy336;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy336;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy336;
+        goto yy93;
+      }
+    }
+  yy335:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy337;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy336:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy339;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy338;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy338;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy338;
+        goto yy93;
+      }
+    }
+  yy337:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy339;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy338:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy341;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy340;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy340;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy340;
+        goto yy93;
+      }
+    }
+  yy339:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy341;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy340:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy343;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy342;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy342;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy342;
+        goto yy93;
+      }
+    }
+  yy341:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy343;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy342:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy93;
+        if (yych <= '-')
+          goto yy345;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy344;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy344;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy344;
+        goto yy93;
+      }
+    }
+  yy343:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy345;
+      if (yych <= '/')
+        goto yy93;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy93;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych >= '{')
+          goto yy93;
+      }
+    }
+  yy344:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= '-')
+          goto yy93;
+        goto yy99;
+      } else {
+        if (yych <= '/')
+          goto yy93;
+        if (yych <= '9')
+          goto yy225;
+        goto yy93;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy100;
+        if (yych <= '@')
+          goto yy93;
+        goto yy225;
+      } else {
+        if (yych <= '`')
+          goto yy93;
+        if (yych <= 'z')
+          goto yy225;
+        goto yy93;
+      }
+    }
+  yy345:
+    ++p;
+    if ((yych = *p) <= '@') {
+      if (yych <= '/')
+        goto yy93;
+      if (yych <= '9')
+        goto yy225;
+      goto yy93;
+    } else {
+      if (yych <= 'Z')
+        goto yy225;
+      if (yych <= '`')
+        goto yy93;
+      if (yych <= 'z')
+        goto yy225;
+      goto yy93;
+    }
+  }
+}
+
+// Try to match an HTML tag after first <, returning num of chars matched.
+bufsize_t _scan_html_tag(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+        0,   239, 239, 239, 239, 239, 239, 239, 239, 238, 238, 238, 238, 238,
+        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
+        239, 239, 239, 239, 238, 239, 234, 239, 239, 239, 239, 236, 239, 239,
+        239, 239, 239, 207, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
+        239, 239, 239, 239, 238, 238, 174, 231, 239, 255, 255, 255, 255, 255,
+        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+        255, 255, 255, 255, 255, 255, 255, 239, 239, 111, 239, 239, 238, 239,
+        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
+        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
+        239, 239, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+        /* table 9 .. 11: 256 */
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   64,  64,  64,  64,  64,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   64,  0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   160, 128, 0,   160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 128, 0,   0,   0,   0,   0,   0,   160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 0,   0,   0,   0,   128, 0,   160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= '!') {
+        if (yych >= '!')
+          goto yy350;
+      } else {
+        if (yych == '/')
+          goto yy351;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '?')
+          goto yy352;
+        if (yych >= 'A')
+          goto yy353;
+      } else {
+        if (yych <= '`')
+          goto yy348;
+        if (yych <= 'z')
+          goto yy353;
+      }
+    }
+  yy348:
+    ++p;
+  yy349 : { return 0; }
+  yy350:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 16) {
+      goto yy426;
+    }
+    if (yych == '-')
+      goto yy428;
+    if (yych <= '@')
+      goto yy349;
+    if (yych <= '[')
+      goto yy425;
+    goto yy349;
+  yy351:
+    yych = *(marker = ++p);
+    if (yych <= '@')
+      goto yy349;
+    if (yych <= 'Z')
+      goto yy421;
+    if (yych <= '`')
+      goto yy349;
+    if (yych <= 'z')
+      goto yy421;
+    goto yy349;
+  yy352:
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy349;
+    if (yych <= 0x7F)
+      goto yy405;
+    if (yych <= 0xC1)
+      goto yy349;
+    if (yych <= 0xF4)
+      goto yy405;
+    goto yy349;
+  yy353:
+    yych = *(marker = ++p);
+    if (yybm[256 + yych] & 64) {
+      goto yy357;
+    }
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych != '-')
+          goto yy349;
+      } else {
+        if (yych <= '/')
+          goto yy359;
+        if (yych >= ':')
+          goto yy349;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy360;
+        if (yych <= '@')
+          goto yy349;
+      } else {
+        if (yych <= '`')
+          goto yy349;
+        if (yych >= '{')
+          goto yy349;
+      }
+    }
+  yy354:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 64) {
+      goto yy357;
+    }
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych == '-')
+          goto yy354;
+      } else {
+        if (yych <= '/')
+          goto yy359;
+        if (yych <= '9')
+          goto yy354;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy360;
+        if (yych >= 'A')
+          goto yy354;
+      } else {
+        if (yych <= '`')
+          goto yy356;
+        if (yych <= 'z')
+          goto yy354;
+      }
+    }
+  yy356:
+    p = marker;
+    goto yy349;
+  yy357:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 64) {
+      goto yy357;
+    }
+    if (yych <= '>') {
+      if (yych <= '9') {
+        if (yych != '/')
+          goto yy356;
+      } else {
+        if (yych <= ':')
+          goto yy362;
+        if (yych <= '=')
+          goto yy356;
+        goto yy360;
+      }
+    } else {
+      if (yych <= '^') {
+        if (yych <= '@')
+          goto yy356;
+        if (yych <= 'Z')
+          goto yy362;
+        goto yy356;
+      } else {
+        if (yych == '`')
+          goto yy356;
+        if (yych <= 'z')
+          goto yy362;
+        goto yy356;
+      }
+    }
+  yy359:
+    yych = *++p;
+    if (yych != '>')
+      goto yy356;
+  yy360:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy362:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 128) {
+      goto yy362;
+    }
+    if (yych <= ',') {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy356;
+      } else {
+        if (yych != ' ')
+          goto yy356;
+      }
+    } else {
+      if (yych <= '<') {
+        if (yych <= '/')
+          goto yy359;
+        goto yy356;
+      } else {
+        if (yych <= '=')
+          goto yy366;
+        if (yych <= '>')
+          goto yy360;
+        goto yy356;
+      }
+    }
+  yy364:
+    ++p;
+    yych = *p;
+    if (yych <= '<') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy356;
+        if (yych <= '\r')
+          goto yy364;
+        if (yych <= 0x1F)
+          goto yy356;
+        goto yy364;
+      } else {
+        if (yych <= '/') {
+          if (yych <= '.')
+            goto yy356;
+          goto yy359;
+        } else {
+          if (yych == ':')
+            goto yy362;
+          goto yy356;
+        }
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '=')
+          goto yy366;
+        if (yych <= '>')
+          goto yy360;
+        if (yych <= '@')
+          goto yy356;
+        goto yy362;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy356;
+          goto yy362;
+        } else {
+          if (yych <= '`')
+            goto yy356;
+          if (yych <= 'z')
+            goto yy362;
+          goto yy356;
+        }
+      }
+    }
+  yy366:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy368;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '"') {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych >= '!')
+          goto yy379;
+      } else {
+        if (yych <= '\'')
+          goto yy377;
+        if (yych <= 0xC1)
+          goto yy356;
+        if (yych <= 0xDF)
+          goto yy370;
+        goto yy371;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy376;
+        goto yy372;
+      } else {
+        if (yych <= 0xF0)
+          goto yy373;
+        if (yych <= 0xF3)
+          goto yy374;
+        if (yych <= 0xF4)
+          goto yy375;
+        goto yy356;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy368;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '\'') {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= ' ')
+          goto yy402;
+        if (yych <= '"')
+          goto yy379;
+        goto yy377;
+      } else {
+        if (yych == '>')
+          goto yy360;
+        if (yych <= 0xC1)
+          goto yy356;
+        goto yy370;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy371;
+        if (yych == 0xED)
+          goto yy376;
+        goto yy372;
+      } else {
+        if (yych <= 0xF0)
+          goto yy373;
+        if (yych <= 0xF3)
+          goto yy374;
+        if (yych <= 0xF4)
+          goto yy375;
+        goto yy356;
+      }
+    }
+  yy368:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy368;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= ' ')
+          goto yy396;
+        goto yy356;
+      } else {
+        if (yych <= '>')
+          goto yy360;
+        if (yych <= 0xC1)
+          goto yy356;
+        if (yych >= 0xE0)
+          goto yy371;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy376;
+        goto yy372;
+      } else {
+        if (yych <= 0xF0)
+          goto yy373;
+        if (yych <= 0xF3)
+          goto yy374;
+        if (yych <= 0xF4)
+          goto yy375;
+        goto yy356;
+      }
+    }
+  yy370:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy368;
+    goto yy356;
+  yy371:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy370;
+    goto yy356;
+  yy372:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy370;
+    goto yy356;
+  yy373:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy372;
+    goto yy356;
+  yy374:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy372;
+    goto yy356;
+  yy375:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy372;
+    goto yy356;
+  yy376:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy370;
+    goto yy356;
+  yy377:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy377;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '\'')
+          goto yy388;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy389;
+        if (yych <= 0xE0)
+          goto yy390;
+        goto yy391;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy395;
+        if (yych <= 0xEF)
+          goto yy391;
+        goto yy392;
+      } else {
+        if (yych <= 0xF3)
+          goto yy393;
+        if (yych <= 0xF4)
+          goto yy394;
+        goto yy356;
+      }
+    }
+  yy379:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy379;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '"')
+          goto yy388;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy381;
+        if (yych <= 0xE0)
+          goto yy382;
+        goto yy383;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy387;
+        if (yych <= 0xEF)
+          goto yy383;
+        goto yy384;
+      } else {
+        if (yych <= 0xF3)
+          goto yy385;
+        if (yych <= 0xF4)
+          goto yy386;
+        goto yy356;
+      }
+    }
+  yy381:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy379;
+    goto yy356;
+  yy382:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy381;
+    goto yy356;
+  yy383:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy381;
+    goto yy356;
+  yy384:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy383;
+    goto yy356;
+  yy385:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy383;
+    goto yy356;
+  yy386:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy383;
+    goto yy356;
+  yy387:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy381;
+    goto yy356;
+  yy388:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 64) {
+      goto yy357;
+    }
+    if (yych == '/')
+      goto yy359;
+    if (yych == '>')
+      goto yy360;
+    goto yy356;
+  yy389:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy377;
+    goto yy356;
+  yy390:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy389;
+    goto yy356;
+  yy391:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy389;
+    goto yy356;
+  yy392:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy391;
+    goto yy356;
+  yy393:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy391;
+    goto yy356;
+  yy394:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy391;
+    goto yy356;
+  yy395:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy389;
+    goto yy356;
+  yy396:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy356;
+          if (yych <= 0x08)
+            goto yy368;
+          goto yy396;
+        } else {
+          if (yych == ' ')
+            goto yy396;
+          if (yych <= '!')
+            goto yy368;
+          goto yy356;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy356;
+          if (yych <= '9')
+            goto yy368;
+        } else {
+          if (yych <= ';')
+            goto yy368;
+          if (yych <= '=')
+            goto yy356;
+          if (yych <= '>')
+            goto yy360;
+          goto yy368;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy398;
+          if (yych <= '^')
+            goto yy368;
+          if (yych >= '`')
+            goto yy356;
+        } else {
+          if (yych <= 'z')
+            goto yy398;
+          if (yych <= 0x7F)
+            goto yy368;
+          if (yych <= 0xC1)
+            goto yy356;
+          goto yy370;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy371;
+          if (yych == 0xED)
+            goto yy376;
+          goto yy372;
+        } else {
+          if (yych <= 0xF0)
+            goto yy373;
+          if (yych <= 0xF3)
+            goto yy374;
+          if (yych <= 0xF4)
+            goto yy375;
+          goto yy356;
+        }
+      }
+    }
+  yy398:
+    ++p;
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy356;
+          if (yych <= 0x08)
+            goto yy368;
+          if (yych >= 0x0E)
+            goto yy368;
+        } else {
+          if (yych <= ' ')
+            goto yy400;
+          if (yych == '"')
+            goto yy356;
+          goto yy368;
+        }
+      } else {
+        if (yych <= '/') {
+          if (yych <= '\'')
+            goto yy356;
+          if (yych <= ',')
+            goto yy368;
+          if (yych <= '.')
+            goto yy398;
+          goto yy368;
+        } else {
+          if (yych <= ';') {
+            if (yych <= ':')
+              goto yy398;
+            goto yy368;
+          } else {
+            if (yych <= '<')
+              goto yy356;
+            if (yych <= '=')
+              goto yy366;
+            goto yy360;
+          }
+        }
+      }
+    } else {
+      if (yych <= 0xC1) {
+        if (yych <= '_') {
+          if (yych <= '@')
+            goto yy368;
+          if (yych <= 'Z')
+            goto yy398;
+          if (yych <= '^')
+            goto yy368;
+          goto yy398;
+        } else {
+          if (yych <= '`')
+            goto yy356;
+          if (yych <= 'z')
+            goto yy398;
+          if (yych <= 0x7F)
+            goto yy368;
+          goto yy356;
+        }
+      } else {
+        if (yych <= 0xED) {
+          if (yych <= 0xDF)
+            goto yy370;
+          if (yych <= 0xE0)
+            goto yy371;
+          if (yych <= 0xEC)
+            goto yy372;
+          goto yy376;
+        } else {
+          if (yych <= 0xF0) {
+            if (yych <= 0xEF)
+              goto yy372;
+            goto yy373;
+          } else {
+            if (yych <= 0xF3)
+              goto yy374;
+            if (yych <= 0xF4)
+              goto yy375;
+            goto yy356;
+          }
+        }
+      }
+    }
+  yy400:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy356;
+          if (yych <= 0x08)
+            goto yy368;
+          if (yych <= '\r')
+            goto yy400;
+          goto yy368;
+        } else {
+          if (yych <= ' ')
+            goto yy400;
+          if (yych == '"')
+            goto yy356;
+          goto yy368;
+        }
+      } else {
+        if (yych <= ';') {
+          if (yych <= '\'')
+            goto yy356;
+          if (yych == ':')
+            goto yy398;
+          goto yy368;
+        } else {
+          if (yych <= '<')
+            goto yy356;
+          if (yych <= '=')
+            goto yy366;
+          if (yych <= '>')
+            goto yy360;
+          goto yy368;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy398;
+          if (yych <= '^')
+            goto yy368;
+          if (yych <= '_')
+            goto yy398;
+          goto yy356;
+        } else {
+          if (yych <= 'z')
+            goto yy398;
+          if (yych <= 0x7F)
+            goto yy368;
+          if (yych <= 0xC1)
+            goto yy356;
+          goto yy370;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy371;
+          if (yych == 0xED)
+            goto yy376;
+          goto yy372;
+        } else {
+          if (yych <= 0xF0)
+            goto yy373;
+          if (yych <= 0xF3)
+            goto yy374;
+          if (yych <= 0xF4)
+            goto yy375;
+          goto yy356;
+        }
+      }
+    }
+  yy402:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy356;
+          if (yych <= 0x08)
+            goto yy368;
+          goto yy402;
+        } else {
+          if (yych == ' ')
+            goto yy402;
+          if (yych <= '!')
+            goto yy368;
+          goto yy379;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy377;
+          if (yych <= '9')
+            goto yy368;
+          goto yy398;
+        } else {
+          if (yych <= ';')
+            goto yy368;
+          if (yych <= '=')
+            goto yy356;
+          if (yych <= '>')
+            goto yy360;
+          goto yy368;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy398;
+          if (yych <= '^')
+            goto yy368;
+          if (yych <= '_')
+            goto yy398;
+          goto yy356;
+        } else {
+          if (yych <= 'z')
+            goto yy398;
+          if (yych <= 0x7F)
+            goto yy368;
+          if (yych <= 0xC1)
+            goto yy356;
+          goto yy370;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy371;
+          if (yych == 0xED)
+            goto yy376;
+          goto yy372;
+        } else {
+          if (yych <= 0xF0)
+            goto yy373;
+          if (yych <= 0xF3)
+            goto yy374;
+          if (yych <= 0xF4)
+            goto yy375;
+          goto yy356;
+        }
+      }
+    }
+  yy404:
+    ++p;
+    yych = *p;
+  yy405:
+    if (yybm[0 + yych] & 8) {
+      goto yy404;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '?')
+          goto yy413;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy406;
+        if (yych <= 0xE0)
+          goto yy407;
+        goto yy408;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy412;
+        if (yych <= 0xEF)
+          goto yy408;
+        goto yy409;
+      } else {
+        if (yych <= 0xF3)
+          goto yy410;
+        if (yych <= 0xF4)
+          goto yy411;
+        goto yy356;
+      }
+    }
+  yy406:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy404;
+    goto yy356;
+  yy407:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy406;
+    goto yy356;
+  yy408:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy406;
+    goto yy356;
+  yy409:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy408;
+    goto yy356;
+  yy410:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy408;
+    goto yy356;
+  yy411:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy408;
+    goto yy356;
+  yy412:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy406;
+    goto yy356;
+  yy413:
+    ++p;
+    yych = *p;
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '=')
+          goto yy404;
+        goto yy360;
+      } else {
+        if (yych <= 0x7F)
+          goto yy404;
+        if (yych <= 0xC1)
+          goto yy356;
+        if (yych >= 0xE0)
+          goto yy415;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy420;
+        goto yy416;
+      } else {
+        if (yych <= 0xF0)
+          goto yy417;
+        if (yych <= 0xF3)
+          goto yy418;
+        if (yych <= 0xF4)
+          goto yy419;
+        goto yy356;
+      }
+    }
+  yy414:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy404;
+    goto yy356;
+  yy415:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy414;
+    goto yy356;
+  yy416:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy414;
+    goto yy356;
+  yy417:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy416;
+    goto yy356;
+  yy418:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy416;
+    goto yy356;
+  yy419:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy416;
+    goto yy356;
+  yy420:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy414;
+    goto yy356;
+  yy421:
+    ++p;
+    yych = *p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy356;
+        if (yych >= 0x0E)
+          goto yy356;
+      } else {
+        if (yych <= ' ')
+          goto yy423;
+        if (yych == '-')
+          goto yy421;
+        goto yy356;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych <= '9')
+          goto yy421;
+        if (yych == '>')
+          goto yy360;
+        goto yy356;
+      } else {
+        if (yych <= 'Z')
+          goto yy421;
+        if (yych <= '`')
+          goto yy356;
+        if (yych <= 'z')
+          goto yy421;
+        goto yy356;
+      }
+    }
+  yy423:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy356;
+      if (yych <= '\r')
+        goto yy423;
+      goto yy356;
+    } else {
+      if (yych <= ' ')
+        goto yy423;
+      if (yych == '>')
+        goto yy360;
+      goto yy356;
+    }
+  yy425:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy461;
+    if (yych == 'c')
+      goto yy461;
+    goto yy356;
+  yy426:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy426;
+    }
+    if (yych <= 0x08)
+      goto yy356;
+    if (yych <= '\r')
+      goto yy450;
+    if (yych == ' ')
+      goto yy450;
+    goto yy356;
+  yy428:
+    yych = *++p;
+    if (yych != '-')
+      goto yy356;
+    yych = *++p;
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych != '-')
+          goto yy432;
+      } else {
+        if (yych <= '>')
+          goto yy356;
+        if (yych <= 0xC1)
+          goto yy432;
+        if (yych <= 0xDF)
+          goto yy433;
+        goto yy434;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy439;
+        goto yy435;
+      } else {
+        if (yych <= 0xF0)
+          goto yy436;
+        if (yych <= 0xF3)
+          goto yy437;
+        if (yych <= 0xF4)
+          goto yy438;
+        goto yy432;
+      }
+    }
+    yych = *++p;
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych == '-')
+          goto yy449;
+        goto yy432;
+      } else {
+        if (yych <= '>')
+          goto yy356;
+        if (yych <= 0xC1)
+          goto yy432;
+        if (yych <= 0xDF)
+          goto yy433;
+        goto yy434;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy439;
+        goto yy435;
+      } else {
+        if (yych <= 0xF0)
+          goto yy436;
+        if (yych <= 0xF3)
+          goto yy437;
+        if (yych <= 0xF4)
+          goto yy438;
+        goto yy432;
+      }
+    }
+  yy431:
+    ++p;
+    yych = *p;
+  yy432:
+    if (yybm[0 + yych] & 32) {
+      goto yy431;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '-')
+          goto yy440;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy441;
+        if (yych <= 0xE0)
+          goto yy442;
+        goto yy443;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy447;
+        if (yych <= 0xEF)
+          goto yy443;
+        goto yy444;
+      } else {
+        if (yych <= 0xF3)
+          goto yy445;
+        if (yych <= 0xF4)
+          goto yy446;
+        goto yy356;
+      }
+    }
+  yy433:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy431;
+    goto yy356;
+  yy434:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy433;
+    goto yy356;
+  yy435:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy433;
+    goto yy356;
+  yy436:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy435;
+    goto yy356;
+  yy437:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy435;
+    goto yy356;
+  yy438:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy435;
+    goto yy356;
+  yy439:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy433;
+    goto yy356;
+  yy440:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy431;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '-')
+          goto yy448;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy441;
+        if (yych <= 0xE0)
+          goto yy442;
+        goto yy443;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy447;
+        if (yych <= 0xEF)
+          goto yy443;
+        goto yy444;
+      } else {
+        if (yych <= 0xF3)
+          goto yy445;
+        if (yych <= 0xF4)
+          goto yy446;
+        goto yy356;
+      }
+    }
+  yy441:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy431;
+    goto yy356;
+  yy442:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy441;
+    goto yy356;
+  yy443:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy441;
+    goto yy356;
+  yy444:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy443;
+    goto yy356;
+  yy445:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy443;
+    goto yy356;
+  yy446:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy443;
+    goto yy356;
+  yy447:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy441;
+    goto yy356;
+  yy448:
+    yych = *++p;
+    if (yych == '>')
+      goto yy360;
+    goto yy356;
+  yy449:
+    yych = *++p;
+    if (yych == '>')
+      goto yy360;
+    goto yy356;
+  yy450:
+    ++p;
+    yych = *p;
+    if (yych <= 0xC1) {
+      if (yych <= 0x1F) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= 0x08)
+          goto yy452;
+        if (yych <= '\r')
+          goto yy450;
+      } else {
+        if (yych <= '=') {
+          if (yych <= ' ')
+            goto yy450;
+        } else {
+          if (yych <= '>')
+            goto yy360;
+          if (yych >= 0x80)
+            goto yy356;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy454;
+        if (yych <= 0xE0)
+          goto yy455;
+        if (yych <= 0xEC)
+          goto yy456;
+        goto yy460;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy456;
+          goto yy457;
+        } else {
+          if (yych <= 0xF3)
+            goto yy458;
+          if (yych <= 0xF4)
+            goto yy459;
+          goto yy356;
+        }
+      }
+    }
+  yy452:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy452;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '>')
+          goto yy360;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy454;
+        if (yych <= 0xE0)
+          goto yy455;
+        goto yy456;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy460;
+        if (yych <= 0xEF)
+          goto yy456;
+        goto yy457;
+      } else {
+        if (yych <= 0xF3)
+          goto yy458;
+        if (yych <= 0xF4)
+          goto yy459;
+        goto yy356;
+      }
+    }
+  yy454:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy452;
+    goto yy356;
+  yy455:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy454;
+    goto yy356;
+  yy456:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy454;
+    goto yy356;
+  yy457:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy456;
+    goto yy356;
+  yy458:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy456;
+    goto yy356;
+  yy459:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy456;
+    goto yy356;
+  yy460:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy454;
+    goto yy356;
+  yy461:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy462;
+    if (yych != 'd')
+      goto yy356;
+  yy462:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy463;
+    if (yych != 'a')
+      goto yy356;
+  yy463:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy464;
+    if (yych != 't')
+      goto yy356;
+  yy464:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy465;
+    if (yych != 'a')
+      goto yy356;
+  yy465:
+    yych = *++p;
+    if (yych != '[')
+      goto yy356;
+  yy466:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy466;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= ']')
+          goto yy475;
+        goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy468;
+        if (yych <= 0xE0)
+          goto yy469;
+        goto yy470;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy474;
+        if (yych <= 0xEF)
+          goto yy470;
+        goto yy471;
+      } else {
+        if (yych <= 0xF3)
+          goto yy472;
+        if (yych <= 0xF4)
+          goto yy473;
+        goto yy356;
+      }
+    }
+  yy468:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy466;
+    goto yy356;
+  yy469:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy468;
+    goto yy356;
+  yy470:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy468;
+    goto yy356;
+  yy471:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy470;
+    goto yy356;
+  yy472:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy470;
+    goto yy356;
+  yy473:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy470;
+    goto yy356;
+  yy474:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy468;
+    goto yy356;
+  yy475:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy466;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych >= '^')
+          goto yy356;
+      } else {
+        if (yych <= 0xDF)
+          goto yy477;
+        if (yych <= 0xE0)
+          goto yy478;
+        goto yy479;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy483;
+        if (yych <= 0xEF)
+          goto yy479;
+        goto yy480;
+      } else {
+        if (yych <= 0xF3)
+          goto yy481;
+        if (yych <= 0xF4)
+          goto yy482;
+        goto yy356;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy356;
+        if (yych <= '=')
+          goto yy466;
+        goto yy360;
+      } else {
+        if (yych <= 0x7F)
+          goto yy466;
+        if (yych <= 0xC1)
+          goto yy356;
+        if (yych <= 0xDF)
+          goto yy484;
+        goto yy485;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy490;
+        goto yy486;
+      } else {
+        if (yych <= 0xF0)
+          goto yy487;
+        if (yych <= 0xF3)
+          goto yy488;
+        if (yych <= 0xF4)
+          goto yy489;
+        goto yy356;
+      }
+    }
+  yy477:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy466;
+    goto yy356;
+  yy478:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy477;
+    goto yy356;
+  yy479:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy477;
+    goto yy356;
+  yy480:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy479;
+    goto yy356;
+  yy481:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy479;
+    goto yy356;
+  yy482:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy479;
+    goto yy356;
+  yy483:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy477;
+    goto yy356;
+  yy484:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy466;
+    goto yy356;
+  yy485:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy484;
+    goto yy356;
+  yy486:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy484;
+    goto yy356;
+  yy487:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy486;
+    goto yy356;
+  yy488:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0xBF)
+      goto yy486;
+    goto yy356;
+  yy489:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x8F)
+      goto yy486;
+    goto yy356;
+  yy490:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy356;
+    if (yych <= 0x9F)
+      goto yy484;
+    goto yy356;
+  }
+}
+
+// Try to match an HTML block tag start line, returning
+// an integer code for the type of block (1-6, matching the spec).
+// #7 is handled by a separate function, below.
+bufsize_t _scan_html_block_start(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    yych = *p;
+    if (yych == '<')
+      goto yy495;
+    ++p;
+  yy494 : { return 0; }
+  yy495:
+    yych = *(marker = ++p);
+    switch (yych) {
+    case '!':
+      goto yy513;
+    case '/':
+      goto yy496;
+    case '?':
+      goto yy514;
+    case 'A':
+    case 'a':
+      goto yy499;
+    case 'B':
+    case 'b':
+      goto yy500;
+    case 'C':
+    case 'c':
+      goto yy501;
+    case 'D':
+    case 'd':
+      goto yy502;
+    case 'F':
+    case 'f':
+      goto yy503;
+    case 'H':
+    case 'h':
+      goto yy504;
+    case 'I':
+    case 'i':
+      goto yy505;
+    case 'L':
+    case 'l':
+      goto yy506;
+    case 'M':
+    case 'm':
+      goto yy507;
+    case 'N':
+    case 'n':
+      goto yy508;
+    case 'O':
+    case 'o':
+      goto yy509;
+    case 'P':
+    case 'p':
+      goto yy498;
+    case 'S':
+    case 's':
+      goto yy510;
+    case 'T':
+    case 't':
+      goto yy511;
+    case 'U':
+    case 'u':
+      goto yy512;
+    default:
+      goto yy494;
+    }
+  yy496:
+    yych = *++p;
+    switch (yych) {
+    case 'A':
+    case 'a':
+      goto yy499;
+    case 'B':
+    case 'b':
+      goto yy500;
+    case 'C':
+    case 'c':
+      goto yy501;
+    case 'D':
+    case 'd':
+      goto yy502;
+    case 'F':
+    case 'f':
+      goto yy503;
+    case 'H':
+    case 'h':
+      goto yy504;
+    case 'I':
+    case 'i':
+      goto yy505;
+    case 'L':
+    case 'l':
+      goto yy506;
+    case 'M':
+    case 'm':
+      goto yy507;
+    case 'N':
+    case 'n':
+      goto yy508;
+    case 'O':
+    case 'o':
+      goto yy509;
+    case 'P':
+    case 'p':
+      goto yy698;
+    case 'S':
+    case 's':
+      goto yy699;
+    case 'T':
+    case 't':
+      goto yy511;
+    case 'U':
+    case 'u':
+      goto yy512;
+    default:
+      goto yy497;
+    }
+  yy497:
+    p = marker;
+    goto yy494;
+  yy498:
+    yych = *++p;
+    if (yych <= '>') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        if (yych <= 0x1F)
+          goto yy497;
+        goto yy530;
+      } else {
+        if (yych == '/')
+          goto yy532;
+        if (yych <= '=')
+          goto yy497;
+        goto yy530;
+      }
+    } else {
+      if (yych <= 'R') {
+        if (yych == 'A')
+          goto yy695;
+        if (yych <= 'Q')
+          goto yy497;
+        goto yy694;
+      } else {
+        if (yych <= 'a') {
+          if (yych <= '`')
+            goto yy497;
+          goto yy695;
+        } else {
+          if (yych == 'r')
+            goto yy694;
+          goto yy497;
+        }
+      }
+    }
+  yy499:
+    yych = *++p;
+    if (yych <= 'S') {
+      if (yych <= 'D') {
+        if (yych <= 'C')
+          goto yy497;
+        goto yy683;
+      } else {
+        if (yych <= 'Q')
+          goto yy497;
+        if (yych <= 'R')
+          goto yy682;
+        goto yy681;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych == 'd')
+          goto yy683;
+        goto yy497;
+      } else {
+        if (yych <= 'r')
+          goto yy682;
+        if (yych <= 's')
+          goto yy681;
+        goto yy497;
+      }
+    }
+  yy500:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych <= 'K') {
+        if (yych == 'A')
+          goto yy667;
+        goto yy497;
+      } else {
+        if (yych <= 'L')
+          goto yy666;
+        if (yych <= 'N')
+          goto yy497;
+        goto yy665;
+      }
+    } else {
+      if (yych <= 'k') {
+        if (yych == 'a')
+          goto yy667;
+        goto yy497;
+      } else {
+        if (yych <= 'l')
+          goto yy666;
+        if (yych == 'o')
+          goto yy665;
+        goto yy497;
+      }
+    }
+  yy501:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych <= 'D') {
+        if (yych == 'A')
+          goto yy652;
+        goto yy497;
+      } else {
+        if (yych <= 'E')
+          goto yy651;
+        if (yych <= 'N')
+          goto yy497;
+        goto yy650;
+      }
+    } else {
+      if (yych <= 'd') {
+        if (yych == 'a')
+          goto yy652;
+        goto yy497;
+      } else {
+        if (yych <= 'e')
+          goto yy651;
+        if (yych == 'o')
+          goto yy650;
+        goto yy497;
+      }
+    }
+  yy502:
+    yych = *++p;
+    switch (yych) {
+    case 'D':
+    case 'L':
+    case 'T':
+    case 'd':
+    case 'l':
+    case 't':
+      goto yy529;
+    case 'E':
+    case 'e':
+      goto yy642;
+    case 'I':
+    case 'i':
+      goto yy641;
+    default:
+      goto yy497;
+    }
+  yy503:
+    yych = *++p;
+    if (yych <= 'R') {
+      if (yych <= 'N') {
+        if (yych == 'I')
+          goto yy617;
+        goto yy497;
+      } else {
+        if (yych <= 'O')
+          goto yy616;
+        if (yych <= 'Q')
+          goto yy497;
+        goto yy615;
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych == 'i')
+          goto yy617;
+        goto yy497;
+      } else {
+        if (yych <= 'o')
+          goto yy616;
+        if (yych == 'r')
+          goto yy615;
+        goto yy497;
+      }
+    }
+  yy504:
+    yych = *++p;
+    if (yych <= 'S') {
+      if (yych <= 'D') {
+        if (yych <= '0')
+          goto yy497;
+        if (yych <= '6')
+          goto yy529;
+        goto yy497;
+      } else {
+        if (yych <= 'E')
+          goto yy610;
+        if (yych == 'R')
+          goto yy529;
+        goto yy497;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych <= 'T')
+          goto yy609;
+        if (yych == 'e')
+          goto yy610;
+        goto yy497;
+      } else {
+        if (yych <= 'r')
+          goto yy529;
+        if (yych == 't')
+          goto yy609;
+        goto yy497;
+      }
+    }
+  yy505:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy605;
+    if (yych == 'f')
+      goto yy605;
+    goto yy497;
+  yy506:
+    yych = *++p;
+    if (yych <= 'I') {
+      if (yych == 'E')
+        goto yy600;
+      if (yych <= 'H')
+        goto yy497;
+      goto yy599;
+    } else {
+      if (yych <= 'e') {
+        if (yych <= 'd')
+          goto yy497;
+        goto yy600;
+      } else {
+        if (yych == 'i')
+          goto yy599;
+        goto yy497;
+      }
+    }
+  yy507:
+    yych = *++p;
+    if (yych <= 'E') {
+      if (yych == 'A')
+        goto yy591;
+      if (yych <= 'D')
+        goto yy497;
+      goto yy590;
+    } else {
+      if (yych <= 'a') {
+        if (yych <= '`')
+          goto yy497;
+        goto yy591;
+      } else {
+        if (yych == 'e')
+          goto yy590;
+        goto yy497;
+      }
+    }
+  yy508:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych == 'A')
+        goto yy584;
+      if (yych <= 'N')
+        goto yy497;
+      goto yy583;
+    } else {
+      if (yych <= 'a') {
+        if (yych <= '`')
+          goto yy497;
+        goto yy584;
+      } else {
+        if (yych == 'o')
+          goto yy583;
+        goto yy497;
+      }
+    }
+  yy509:
+    yych = *++p;
+    if (yych <= 'P') {
+      if (yych == 'L')
+        goto yy529;
+      if (yych <= 'O')
+        goto yy497;
+      goto yy575;
+    } else {
+      if (yych <= 'l') {
+        if (yych <= 'k')
+          goto yy497;
+        goto yy529;
+      } else {
+        if (yych == 'p')
+          goto yy575;
+        goto yy497;
+      }
+    }
+  yy510:
+    yych = *++p;
+    switch (yych) {
+    case 'C':
+    case 'c':
+      goto yy552;
+    case 'E':
+    case 'e':
+      goto yy555;
+    case 'O':
+    case 'o':
+      goto yy554;
+    case 'T':
+    case 't':
+      goto yy551;
+    case 'U':
+    case 'u':
+      goto yy553;
+    default:
+      goto yy497;
+    }
+  yy511:
+    yych = *++p;
+    switch (yych) {
+    case 'A':
+    case 'a':
+      goto yy538;
+    case 'B':
+    case 'b':
+      goto yy537;
+    case 'D':
+    case 'd':
+      goto yy529;
+    case 'F':
+    case 'f':
+      goto yy536;
+    case 'H':
+    case 'h':
+      goto yy535;
+    case 'I':
+    case 'i':
+      goto yy534;
+    case 'R':
+    case 'r':
+      goto yy533;
+    default:
+      goto yy497;
+    }
+  yy512:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy529;
+    if (yych == 'l')
+      goto yy529;
+    goto yy497;
+  yy513:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych == '-')
+        goto yy516;
+      goto yy497;
+    } else {
+      if (yych <= 'Z')
+        goto yy517;
+      if (yych <= '[')
+        goto yy519;
+      goto yy497;
+    }
+  yy514:
+    ++p;
+    { return 3; }
+  yy516:
+    yych = *++p;
+    if (yych == '-')
+      goto yy527;
+    goto yy497;
+  yy517:
+    ++p;
+    { return 4; }
+  yy519:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy520;
+    if (yych != 'c')
+      goto yy497;
+  yy520:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy521;
+    if (yych != 'd')
+      goto yy497;
+  yy521:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy522;
+    if (yych != 'a')
+      goto yy497;
+  yy522:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy523;
+    if (yych != 't')
+      goto yy497;
+  yy523:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy524;
+    if (yych != 'a')
+      goto yy497;
+  yy524:
+    yych = *++p;
+    if (yych != '[')
+      goto yy497;
+    ++p;
+    { return 5; }
+  yy527:
+    ++p;
+    { return 2; }
+  yy529:
+    yych = *++p;
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy497;
+      if (yych <= '\r')
+        goto yy530;
+      if (yych <= 0x1F)
+        goto yy497;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      } else {
+        if (yych != '>')
+          goto yy497;
+      }
+    }
+  yy530:
+    ++p;
+    { return 6; }
+  yy532:
+    yych = *++p;
+    if (yych == '>')
+      goto yy530;
+    goto yy497;
+  yy533:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'A')
+          goto yy549;
+        if (yych == 'a')
+          goto yy549;
+        goto yy497;
+      }
+    }
+  yy534:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy547;
+    if (yych == 't')
+      goto yy547;
+    goto yy497;
+  yy535:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'D') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'E')
+          goto yy545;
+        if (yych == 'e')
+          goto yy545;
+        goto yy497;
+      }
+    }
+  yy536:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy543;
+    if (yych == 'o')
+      goto yy543;
+    goto yy497;
+  yy537:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy541;
+    if (yych == 'o')
+      goto yy541;
+    goto yy497;
+  yy538:
+    yych = *++p;
+    if (yych == 'B')
+      goto yy539;
+    if (yych != 'b')
+      goto yy497;
+  yy539:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy540;
+    if (yych != 'l')
+      goto yy497;
+  yy540:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy541:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy542;
+    if (yych != 'd')
+      goto yy497;
+  yy542:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy529;
+    if (yych == 'y')
+      goto yy529;
+    goto yy497;
+  yy543:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy544;
+    if (yych != 'o')
+      goto yy497;
+  yy544:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy529;
+    if (yych == 't')
+      goto yy529;
+    goto yy497;
+  yy545:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy546;
+    if (yych != 'a')
+      goto yy497;
+  yy546:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy529;
+    if (yych == 'd')
+      goto yy529;
+    goto yy497;
+  yy547:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy548;
+    if (yych != 'l')
+      goto yy497;
+  yy548:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy549:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy550;
+    if (yych != 'c')
+      goto yy497;
+  yy550:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy529;
+    if (yych == 'k')
+      goto yy529;
+    goto yy497;
+  yy551:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy573;
+    if (yych == 'y')
+      goto yy573;
+    goto yy497;
+  yy552:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy567;
+    if (yych == 'r')
+      goto yy567;
+    goto yy497;
+  yy553:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy563;
+    if (yych == 'm')
+      goto yy563;
+    goto yy497;
+  yy554:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy560;
+    if (yych == 'u')
+      goto yy560;
+    goto yy497;
+  yy555:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy556;
+    if (yych != 'c')
+      goto yy497;
+  yy556:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy557;
+    if (yych != 't')
+      goto yy497;
+  yy557:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy558;
+    if (yych != 'i')
+      goto yy497;
+  yy558:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy559;
+    if (yych != 'o')
+      goto yy497;
+  yy559:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy529;
+    if (yych == 'n')
+      goto yy529;
+    goto yy497;
+  yy560:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy561;
+    if (yych != 'r')
+      goto yy497;
+  yy561:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy562;
+    if (yych != 'c')
+      goto yy497;
+  yy562:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy563:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy564;
+    if (yych != 'm')
+      goto yy497;
+  yy564:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy565;
+    if (yych != 'a')
+      goto yy497;
+  yy565:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy566;
+    if (yych != 'r')
+      goto yy497;
+  yy566:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy529;
+    if (yych == 'y')
+      goto yy529;
+    goto yy497;
+  yy567:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy568;
+    if (yych != 'i')
+      goto yy497;
+  yy568:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy569;
+    if (yych != 'p')
+      goto yy497;
+  yy569:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy570;
+    if (yych != 't')
+      goto yy497;
+  yy570:
+    yych = *++p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy497;
+      if (yych >= 0x0E)
+        goto yy497;
+    } else {
+      if (yych <= ' ')
+        goto yy571;
+      if (yych != '>')
+        goto yy497;
+    }
+  yy571:
+    ++p;
+    { return 1; }
+  yy573:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy574;
+    if (yych != 'l')
+      goto yy497;
+  yy574:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy570;
+    if (yych == 'e')
+      goto yy570;
+    goto yy497;
+  yy575:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy576;
+    if (yych != 't')
+      goto yy497;
+  yy576:
+    yych = *++p;
+    if (yych <= 'I') {
+      if (yych == 'G')
+        goto yy578;
+      if (yych <= 'H')
+        goto yy497;
+    } else {
+      if (yych <= 'g') {
+        if (yych <= 'f')
+          goto yy497;
+        goto yy578;
+      } else {
+        if (yych != 'i')
+          goto yy497;
+      }
+    }
+    yych = *++p;
+    if (yych == 'O')
+      goto yy582;
+    if (yych == 'o')
+      goto yy582;
+    goto yy497;
+  yy578:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy579;
+    if (yych != 'r')
+      goto yy497;
+  yy579:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy580;
+    if (yych != 'o')
+      goto yy497;
+  yy580:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy581;
+    if (yych != 'u')
+      goto yy497;
+  yy581:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy529;
+    if (yych == 'p')
+      goto yy529;
+    goto yy497;
+  yy582:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy529;
+    if (yych == 'n')
+      goto yy529;
+    goto yy497;
+  yy583:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy585;
+    if (yych == 'f')
+      goto yy585;
+    goto yy497;
+  yy584:
+    yych = *++p;
+    if (yych == 'V')
+      goto yy529;
+    if (yych == 'v')
+      goto yy529;
+    goto yy497;
+  yy585:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy586;
+    if (yych != 'r')
+      goto yy497;
+  yy586:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy587;
+    if (yych != 'a')
+      goto yy497;
+  yy587:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy588;
+    if (yych != 'm')
+      goto yy497;
+  yy588:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy589;
+    if (yych != 'e')
+      goto yy497;
+  yy589:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy529;
+    if (yych == 's')
+      goto yy529;
+    goto yy497;
+  yy590:
+    yych = *++p;
+    if (yych <= 'T') {
+      if (yych == 'N')
+        goto yy593;
+      if (yych <= 'S')
+        goto yy497;
+      goto yy594;
+    } else {
+      if (yych <= 'n') {
+        if (yych <= 'm')
+          goto yy497;
+        goto yy593;
+      } else {
+        if (yych == 't')
+          goto yy594;
+        goto yy497;
+      }
+    }
+  yy591:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy592;
+    if (yych != 'i')
+      goto yy497;
+  yy592:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy529;
+    if (yych == 'n')
+      goto yy529;
+    goto yy497;
+  yy593:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy595;
+    if (yych == 'u')
+      goto yy595;
+    goto yy497;
+  yy594:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy529;
+    if (yych == 'a')
+      goto yy529;
+    goto yy497;
+  yy595:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'H') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'I')
+          goto yy596;
+        if (yych != 'i')
+          goto yy497;
+      }
+    }
+  yy596:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy597;
+    if (yych != 't')
+      goto yy497;
+  yy597:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy598;
+    if (yych != 'e')
+      goto yy497;
+  yy598:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy529;
+    if (yych == 'm')
+      goto yy529;
+    goto yy497;
+  yy599:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'M') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'N')
+          goto yy604;
+        if (yych == 'n')
+          goto yy604;
+        goto yy497;
+      }
+    }
+  yy600:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy601;
+    if (yych != 'g')
+      goto yy497;
+  yy601:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy602;
+    if (yych != 'e')
+      goto yy497;
+  yy602:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy603;
+    if (yych != 'n')
+      goto yy497;
+  yy603:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy529;
+    if (yych == 'd')
+      goto yy529;
+    goto yy497;
+  yy604:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy529;
+    if (yych == 'k')
+      goto yy529;
+    goto yy497;
+  yy605:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy606;
+    if (yych != 'r')
+      goto yy497;
+  yy606:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy607;
+    if (yych != 'a')
+      goto yy497;
+  yy607:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy608;
+    if (yych != 'm')
+      goto yy497;
+  yy608:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy609:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy614;
+    if (yych == 'm')
+      goto yy614;
+    goto yy497;
+  yy610:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy611;
+    if (yych != 'a')
+      goto yy497;
+  yy611:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy612;
+    if (yych != 'd')
+      goto yy497;
+  yy612:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'D') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'E')
+          goto yy613;
+        if (yych != 'e')
+          goto yy497;
+      }
+    }
+  yy613:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy529;
+    if (yych == 'r')
+      goto yy529;
+    goto yy497;
+  yy614:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy529;
+    if (yych == 'l')
+      goto yy529;
+    goto yy497;
+  yy615:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy636;
+    if (yych == 'a')
+      goto yy636;
+    goto yy497;
+  yy616:
+    yych = *++p;
+    if (yych <= 'R') {
+      if (yych == 'O')
+        goto yy632;
+      if (yych <= 'Q')
+        goto yy497;
+      goto yy633;
+    } else {
+      if (yych <= 'o') {
+        if (yych <= 'n')
+          goto yy497;
+        goto yy632;
+      } else {
+        if (yych == 'r')
+          goto yy633;
+        goto yy497;
+      }
+    }
+  yy617:
+    yych = *++p;
+    if (yych <= 'G') {
+      if (yych == 'E')
+        goto yy618;
+      if (yych <= 'F')
+        goto yy497;
+      goto yy619;
+    } else {
+      if (yych <= 'e') {
+        if (yych <= 'd')
+          goto yy497;
+      } else {
+        if (yych == 'g')
+          goto yy619;
+        goto yy497;
+      }
+    }
+  yy618:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy628;
+    if (yych == 'l')
+      goto yy628;
+    goto yy497;
+  yy619:
+    yych = *++p;
+    if (yych <= 'U') {
+      if (yych == 'C')
+        goto yy621;
+      if (yych <= 'T')
+        goto yy497;
+    } else {
+      if (yych <= 'c') {
+        if (yych <= 'b')
+          goto yy497;
+        goto yy621;
+      } else {
+        if (yych != 'u')
+          goto yy497;
+      }
+    }
+    yych = *++p;
+    if (yych == 'R')
+      goto yy627;
+    if (yych == 'r')
+      goto yy627;
+    goto yy497;
+  yy621:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy622;
+    if (yych != 'a')
+      goto yy497;
+  yy622:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy623;
+    if (yych != 'p')
+      goto yy497;
+  yy623:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy624;
+    if (yych != 't')
+      goto yy497;
+  yy624:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy625;
+    if (yych != 'i')
+      goto yy497;
+  yy625:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy626;
+    if (yych != 'o')
+      goto yy497;
+  yy626:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy529;
+    if (yych == 'n')
+      goto yy529;
+    goto yy497;
+  yy627:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy628:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy629;
+    if (yych != 'd')
+      goto yy497;
+  yy629:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy630;
+    if (yych != 's')
+      goto yy497;
+  yy630:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy631;
+    if (yych != 'e')
+      goto yy497;
+  yy631:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy529;
+    if (yych == 't')
+      goto yy529;
+    goto yy497;
+  yy632:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy634;
+    if (yych == 't')
+      goto yy634;
+    goto yy497;
+  yy633:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy529;
+    if (yych == 'm')
+      goto yy529;
+    goto yy497;
+  yy634:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy635;
+    if (yych != 'e')
+      goto yy497;
+  yy635:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy529;
+    if (yych == 'r')
+      goto yy529;
+    goto yy497;
+  yy636:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy637;
+    if (yych != 'm')
+      goto yy497;
+  yy637:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy638;
+    if (yych != 'e')
+      goto yy497;
+  yy638:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'R') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'S')
+          goto yy639;
+        if (yych != 's')
+          goto yy497;
+      }
+    }
+  yy639:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy640;
+    if (yych != 'e')
+      goto yy497;
+  yy640:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy529;
+    if (yych == 't')
+      goto yy529;
+    goto yy497;
+  yy641:
+    yych = *++p;
+    if (yych <= 'V') {
+      if (yych <= 'Q') {
+        if (yych == 'A')
+          goto yy647;
+        goto yy497;
+      } else {
+        if (yych <= 'R')
+          goto yy529;
+        if (yych <= 'U')
+          goto yy497;
+        goto yy529;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych == 'a')
+          goto yy647;
+        goto yy497;
+      } else {
+        if (yych <= 'r')
+          goto yy529;
+        if (yych == 'v')
+          goto yy529;
+        goto yy497;
+      }
+    }
+  yy642:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy643;
+    if (yych != 't')
+      goto yy497;
+  yy643:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy644;
+    if (yych != 'a')
+      goto yy497;
+  yy644:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy645;
+    if (yych != 'i')
+      goto yy497;
+  yy645:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy646;
+    if (yych != 'l')
+      goto yy497;
+  yy646:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy529;
+    if (yych == 's')
+      goto yy529;
+    goto yy497;
+  yy647:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy648;
+    if (yych != 'l')
+      goto yy497;
+  yy648:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy649;
+    if (yych != 'o')
+      goto yy497;
+  yy649:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy529;
+    if (yych == 'g')
+      goto yy529;
+    goto yy497;
+  yy650:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy660;
+    if (yych == 'l')
+      goto yy660;
+    goto yy497;
+  yy651:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy657;
+    if (yych == 'n')
+      goto yy657;
+    goto yy497;
+  yy652:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy653;
+    if (yych != 'p')
+      goto yy497;
+  yy653:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy654;
+    if (yych != 't')
+      goto yy497;
+  yy654:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy655;
+    if (yych != 'i')
+      goto yy497;
+  yy655:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy656;
+    if (yych != 'o')
+      goto yy497;
+  yy656:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy529;
+    if (yych == 'n')
+      goto yy529;
+    goto yy497;
+  yy657:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy658;
+    if (yych != 't')
+      goto yy497;
+  yy658:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy659;
+    if (yych != 'e')
+      goto yy497;
+  yy659:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy529;
+    if (yych == 'r')
+      goto yy529;
+    goto yy497;
+  yy660:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'F') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'G')
+          goto yy661;
+        if (yych != 'g')
+          goto yy497;
+      }
+    }
+  yy661:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy662;
+    if (yych != 'r')
+      goto yy497;
+  yy662:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy663;
+    if (yych != 'o')
+      goto yy497;
+  yy663:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy664;
+    if (yych != 'u')
+      goto yy497;
+  yy664:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy529;
+    if (yych == 'p')
+      goto yy529;
+    goto yy497;
+  yy665:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy680;
+    if (yych == 'd')
+      goto yy680;
+    goto yy497;
+  yy666:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy673;
+    if (yych == 'o')
+      goto yy673;
+    goto yy497;
+  yy667:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy668;
+    if (yych != 's')
+      goto yy497;
+  yy668:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy669;
+    if (yych != 'e')
+      goto yy497;
+  yy669:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= 'E') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'F')
+          goto yy670;
+        if (yych != 'f')
+          goto yy497;
+      }
+    }
+  yy670:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy671;
+    if (yych != 'o')
+      goto yy497;
+  yy671:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy672;
+    if (yych != 'n')
+      goto yy497;
+  yy672:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy529;
+    if (yych == 't')
+      goto yy529;
+    goto yy497;
+  yy673:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy674;
+    if (yych != 'c')
+      goto yy497;
+  yy674:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy675;
+    if (yych != 'k')
+      goto yy497;
+  yy675:
+    yych = *++p;
+    if (yych == 'Q')
+      goto yy676;
+    if (yych != 'q')
+      goto yy497;
+  yy676:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy677;
+    if (yych != 'u')
+      goto yy497;
+  yy677:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy678;
+    if (yych != 'o')
+      goto yy497;
+  yy678:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy679;
+    if (yych != 't')
+      goto yy497;
+  yy679:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy680:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy529;
+    if (yych == 'y')
+      goto yy529;
+    goto yy497;
+  yy681:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy692;
+    if (yych == 'i')
+      goto yy692;
+    goto yy497;
+  yy682:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy688;
+    if (yych == 't')
+      goto yy688;
+    goto yy497;
+  yy683:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy684;
+    if (yych != 'd')
+      goto yy497;
+  yy684:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy685;
+    if (yych != 'r')
+      goto yy497;
+  yy685:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy686;
+    if (yych != 'e')
+      goto yy497;
+  yy686:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy687;
+    if (yych != 's')
+      goto yy497;
+  yy687:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy529;
+    if (yych == 's')
+      goto yy529;
+    goto yy497;
+  yy688:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy689;
+    if (yych != 'i')
+      goto yy497;
+  yy689:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy690;
+    if (yych != 'c')
+      goto yy497;
+  yy690:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy691;
+    if (yych != 'l')
+      goto yy497;
+  yy691:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy692:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy693;
+    if (yych != 'd')
+      goto yy497;
+  yy693:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy529;
+    if (yych == 'e')
+      goto yy529;
+    goto yy497;
+  yy694:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy570;
+    if (yych == 'e')
+      goto yy570;
+    goto yy497;
+  yy695:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy696;
+    if (yych != 'r')
+      goto yy497;
+  yy696:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy697;
+    if (yych != 'a')
+      goto yy497;
+  yy697:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy529;
+    if (yych == 'm')
+      goto yy529;
+    goto yy497;
+  yy698:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy530;
+        if (yych <= '.')
+          goto yy497;
+        goto yy532;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych == '>')
+          goto yy530;
+        goto yy497;
+      } else {
+        if (yych <= 'A')
+          goto yy695;
+        if (yych == 'a')
+          goto yy695;
+        goto yy497;
+      }
+    }
+  yy699:
+    ++p;
+    if ((yych = *p) <= 'U') {
+      if (yych <= 'N') {
+        if (yych == 'E')
+          goto yy555;
+        goto yy497;
+      } else {
+        if (yych <= 'O')
+          goto yy554;
+        if (yych <= 'T')
+          goto yy497;
+        goto yy553;
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych == 'e')
+          goto yy555;
+        goto yy497;
+      } else {
+        if (yych <= 'o')
+          goto yy554;
+        if (yych == 'u')
+          goto yy553;
+        goto yy497;
+      }
+    }
+  }
+}
+
+// Try to match an HTML block tag start line of type 7, returning
+// 7 if successful, 0 if not.
+bufsize_t _scan_html_block_start_7(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,
+        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,
+        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,
+        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,
+        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,
+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych == '<')
+      goto yy704;
+    ++p;
+  yy703 : { return 0; }
+  yy704:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '@') {
+      if (yych == '/')
+        goto yy708;
+      goto yy703;
+    } else {
+      if (yych <= 'Z')
+        goto yy705;
+      if (yych <= '`')
+        goto yy703;
+      if (yych >= '{')
+        goto yy703;
+    }
+  yy705:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy705;
+    }
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy707;
+      if (yych <= '\r')
+        goto yy719;
+      if (yych >= ' ')
+        goto yy719;
+    } else {
+      if (yych <= '/') {
+        if (yych >= '/')
+          goto yy721;
+      } else {
+        if (yych == '>')
+          goto yy713;
+      }
+    }
+  yy707:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy703;
+    } else {
+      goto yy717;
+    }
+  yy708:
+    yych = *++p;
+    if (yych <= '@')
+      goto yy707;
+    if (yych <= 'Z')
+      goto yy709;
+    if (yych <= '`')
+      goto yy707;
+    if (yych >= '{')
+      goto yy707;
+  yy709:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy711;
+    }
+    if (yych <= '=') {
+      if (yych <= '-') {
+        if (yych <= ',')
+          goto yy707;
+        goto yy709;
+      } else {
+        if (yych <= '/')
+          goto yy707;
+        if (yych <= '9')
+          goto yy709;
+        goto yy707;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy713;
+        if (yych <= '@')
+          goto yy707;
+        goto yy709;
+      } else {
+        if (yych <= '`')
+          goto yy707;
+        if (yych <= 'z')
+          goto yy709;
+        goto yy707;
+      }
+    }
+  yy711:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy711;
+    }
+    if (yych != '>')
+      goto yy707;
+  yy713:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy713;
+    }
+    if (yych <= 0x08)
+      goto yy707;
+    if (yych <= '\n')
+      goto yy715;
+    if (yych <= '\v')
+      goto yy707;
+    if (yych <= '\r')
+      goto yy718;
+    goto yy707;
+  yy715:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy713;
+    }
+    if (yych <= 0x08)
+      goto yy717;
+    if (yych <= '\n')
+      goto yy715;
+    if (yych <= '\v')
+      goto yy717;
+    if (yych <= '\r')
+      goto yy718;
+  yy717 : { return 7; }
+  yy718:
+    yych = *++p;
+    goto yy717;
+  yy719:
+    ++p;
+    yych = *p;
+    if (yych <= ':') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy707;
+        if (yych <= '\r')
+          goto yy719;
+        if (yych <= 0x1F)
+          goto yy707;
+        goto yy719;
+      } else {
+        if (yych == '/')
+          goto yy721;
+        if (yych <= '9')
+          goto yy707;
+        goto yy722;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych == '>')
+          goto yy713;
+        if (yych <= '@')
+          goto yy707;
+        goto yy722;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy707;
+          goto yy722;
+        } else {
+          if (yych <= '`')
+            goto yy707;
+          if (yych <= 'z')
+            goto yy722;
+          goto yy707;
+        }
+      }
+    }
+  yy721:
+    yych = *++p;
+    if (yych == '>')
+      goto yy713;
+    goto yy707;
+  yy722:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy722;
+    }
+    if (yych <= ',') {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy707;
+      } else {
+        if (yych != ' ')
+          goto yy707;
+      }
+    } else {
+      if (yych <= '<') {
+        if (yych <= '/')
+          goto yy721;
+        goto yy707;
+      } else {
+        if (yych <= '=')
+          goto yy726;
+        if (yych <= '>')
+          goto yy713;
+        goto yy707;
+      }
+    }
+  yy724:
+    ++p;
+    yych = *p;
+    if (yych <= '<') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy707;
+        if (yych <= '\r')
+          goto yy724;
+        if (yych <= 0x1F)
+          goto yy707;
+        goto yy724;
+      } else {
+        if (yych <= '/') {
+          if (yych <= '.')
+            goto yy707;
+          goto yy721;
+        } else {
+          if (yych == ':')
+            goto yy722;
+          goto yy707;
+        }
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '=')
+          goto yy726;
+        if (yych <= '>')
+          goto yy713;
+        if (yych <= '@')
+          goto yy707;
+        goto yy722;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy707;
+          goto yy722;
+        } else {
+          if (yych <= '`')
+            goto yy707;
+          if (yych <= 'z')
+            goto yy722;
+          goto yy707;
+        }
+      }
+    }
+  yy726:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy728;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '"') {
+        if (yych <= 0x00)
+          goto yy707;
+        if (yych >= '!')
+          goto yy739;
+      } else {
+        if (yych <= '\'')
+          goto yy737;
+        if (yych <= 0xC1)
+          goto yy707;
+        if (yych <= 0xDF)
+          goto yy730;
+        goto yy731;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy736;
+        goto yy732;
+      } else {
+        if (yych <= 0xF0)
+          goto yy733;
+        if (yych <= 0xF3)
+          goto yy734;
+        if (yych <= 0xF4)
+          goto yy735;
+        goto yy707;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy728;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '\'') {
+        if (yych <= 0x00)
+          goto yy707;
+        if (yych <= ' ')
+          goto yy762;
+        if (yych <= '"')
+          goto yy739;
+        goto yy737;
+      } else {
+        if (yych == '>')
+          goto yy713;
+        if (yych <= 0xC1)
+          goto yy707;
+        goto yy730;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy731;
+        if (yych == 0xED)
+          goto yy736;
+        goto yy732;
+      } else {
+        if (yych <= 0xF0)
+          goto yy733;
+        if (yych <= 0xF3)
+          goto yy734;
+        if (yych <= 0xF4)
+          goto yy735;
+        goto yy707;
+      }
+    }
+  yy728:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy728;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy707;
+        if (yych <= ' ')
+          goto yy756;
+        goto yy707;
+      } else {
+        if (yych <= '>')
+          goto yy713;
+        if (yych <= 0xC1)
+          goto yy707;
+        if (yych >= 0xE0)
+          goto yy731;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy736;
+        goto yy732;
+      } else {
+        if (yych <= 0xF0)
+          goto yy733;
+        if (yych <= 0xF3)
+          goto yy734;
+        if (yych <= 0xF4)
+          goto yy735;
+        goto yy707;
+      }
+    }
+  yy730:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy728;
+    goto yy707;
+  yy731:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy730;
+    goto yy707;
+  yy732:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy730;
+    goto yy707;
+  yy733:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy732;
+    goto yy707;
+  yy734:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy732;
+    goto yy707;
+  yy735:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0x8F)
+      goto yy732;
+    goto yy707;
+  yy736:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0x9F)
+      goto yy730;
+    goto yy707;
+  yy737:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy737;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy707;
+        if (yych <= '\'')
+          goto yy748;
+        goto yy707;
+      } else {
+        if (yych <= 0xDF)
+          goto yy749;
+        if (yych <= 0xE0)
+          goto yy750;
+        goto yy751;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy755;
+        if (yych <= 0xEF)
+          goto yy751;
+        goto yy752;
+      } else {
+        if (yych <= 0xF3)
+          goto yy753;
+        if (yych <= 0xF4)
+          goto yy754;
+        goto yy707;
+      }
+    }
+  yy739:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy739;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy707;
+        if (yych <= '"')
+          goto yy748;
+        goto yy707;
+      } else {
+        if (yych <= 0xDF)
+          goto yy741;
+        if (yych <= 0xE0)
+          goto yy742;
+        goto yy743;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy747;
+        if (yych <= 0xEF)
+          goto yy743;
+        goto yy744;
+      } else {
+        if (yych <= 0xF3)
+          goto yy745;
+        if (yych <= 0xF4)
+          goto yy746;
+        goto yy707;
+      }
+    }
+  yy741:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy739;
+    goto yy707;
+  yy742:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy741;
+    goto yy707;
+  yy743:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy741;
+    goto yy707;
+  yy744:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy743;
+    goto yy707;
+  yy745:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy743;
+    goto yy707;
+  yy746:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0x8F)
+      goto yy743;
+    goto yy707;
+  yy747:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0x9F)
+      goto yy741;
+    goto yy707;
+  yy748:
+    ++p;
+    yych = *p;
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy707;
+      if (yych <= '\r')
+        goto yy719;
+      if (yych <= 0x1F)
+        goto yy707;
+      goto yy719;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy707;
+        goto yy721;
+      } else {
+        if (yych == '>')
+          goto yy713;
+        goto yy707;
+      }
+    }
+  yy749:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy737;
+    goto yy707;
+  yy750:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy749;
+    goto yy707;
+  yy751:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy749;
+    goto yy707;
+  yy752:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy751;
+    goto yy707;
+  yy753:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0xBF)
+      goto yy751;
+    goto yy707;
+  yy754:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0x8F)
+      goto yy751;
+    goto yy707;
+  yy755:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy707;
+    if (yych <= 0x9F)
+      goto yy749;
+    goto yy707;
+  yy756:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy707;
+          if (yych <= 0x08)
+            goto yy728;
+          goto yy756;
+        } else {
+          if (yych == ' ')
+            goto yy756;
+          if (yych <= '!')
+            goto yy728;
+          goto yy707;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy707;
+          if (yych <= '9')
+            goto yy728;
+        } else {
+          if (yych <= ';')
+            goto yy728;
+          if (yych <= '=')
+            goto yy707;
+          if (yych <= '>')
+            goto yy713;
+          goto yy728;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy758;
+          if (yych <= '^')
+            goto yy728;
+          if (yych >= '`')
+            goto yy707;
+        } else {
+          if (yych <= 'z')
+            goto yy758;
+          if (yych <= 0x7F)
+            goto yy728;
+          if (yych <= 0xC1)
+            goto yy707;
+          goto yy730;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy731;
+          if (yych == 0xED)
+            goto yy736;
+          goto yy732;
+        } else {
+          if (yych <= 0xF0)
+            goto yy733;
+          if (yych <= 0xF3)
+            goto yy734;
+          if (yych <= 0xF4)
+            goto yy735;
+          goto yy707;
+        }
+      }
+    }
+  yy758:
+    ++p;
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy707;
+          if (yych <= 0x08)
+            goto yy728;
+          if (yych >= 0x0E)
+            goto yy728;
+        } else {
+          if (yych <= ' ')
+            goto yy760;
+          if (yych == '"')
+            goto yy707;
+          goto yy728;
+        }
+      } else {
+        if (yych <= '/') {
+          if (yych <= '\'')
+            goto yy707;
+          if (yych <= ',')
+            goto yy728;
+          if (yych <= '.')
+            goto yy758;
+          goto yy728;
+        } else {
+          if (yych <= ';') {
+            if (yych <= ':')
+              goto yy758;
+            goto yy728;
+          } else {
+            if (yych <= '<')
+              goto yy707;
+            if (yych <= '=')
+              goto yy726;
+            goto yy713;
+          }
+        }
+      }
+    } else {
+      if (yych <= 0xC1) {
+        if (yych <= '_') {
+          if (yych <= '@')
+            goto yy728;
+          if (yych <= 'Z')
+            goto yy758;
+          if (yych <= '^')
+            goto yy728;
+          goto yy758;
+        } else {
+          if (yych <= '`')
+            goto yy707;
+          if (yych <= 'z')
+            goto yy758;
+          if (yych <= 0x7F)
+            goto yy728;
+          goto yy707;
+        }
+      } else {
+        if (yych <= 0xED) {
+          if (yych <= 0xDF)
+            goto yy730;
+          if (yych <= 0xE0)
+            goto yy731;
+          if (yych <= 0xEC)
+            goto yy732;
+          goto yy736;
+        } else {
+          if (yych <= 0xF0) {
+            if (yych <= 0xEF)
+              goto yy732;
+            goto yy733;
+          } else {
+            if (yych <= 0xF3)
+              goto yy734;
+            if (yych <= 0xF4)
+              goto yy735;
+            goto yy707;
+          }
+        }
+      }
+    }
+  yy760:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy707;
+          if (yych <= 0x08)
+            goto yy728;
+          if (yych <= '\r')
+            goto yy760;
+          goto yy728;
+        } else {
+          if (yych <= ' ')
+            goto yy760;
+          if (yych == '"')
+            goto yy707;
+          goto yy728;
+        }
+      } else {
+        if (yych <= ';') {
+          if (yych <= '\'')
+            goto yy707;
+          if (yych == ':')
+            goto yy758;
+          goto yy728;
+        } else {
+          if (yych <= '<')
+            goto yy707;
+          if (yych <= '=')
+            goto yy726;
+          if (yych <= '>')
+            goto yy713;
+          goto yy728;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy758;
+          if (yych <= '^')
+            goto yy728;
+          if (yych <= '_')
+            goto yy758;
+          goto yy707;
+        } else {
+          if (yych <= 'z')
+            goto yy758;
+          if (yych <= 0x7F)
+            goto yy728;
+          if (yych <= 0xC1)
+            goto yy707;
+          goto yy730;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy731;
+          if (yych == 0xED)
+            goto yy736;
+          goto yy732;
+        } else {
+          if (yych <= 0xF0)
+            goto yy733;
+          if (yych <= 0xF3)
+            goto yy734;
+          if (yych <= 0xF4)
+            goto yy735;
+          goto yy707;
+        }
+      }
+    }
+  yy762:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy707;
+          if (yych <= 0x08)
+            goto yy728;
+          goto yy762;
+        } else {
+          if (yych == ' ')
+            goto yy762;
+          if (yych <= '!')
+            goto yy728;
+          goto yy739;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy737;
+          if (yych <= '9')
+            goto yy728;
+          goto yy758;
+        } else {
+          if (yych <= ';')
+            goto yy728;
+          if (yych <= '=')
+            goto yy707;
+          if (yych <= '>')
+            goto yy713;
+          goto yy728;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy758;
+          if (yych <= '^')
+            goto yy728;
+          if (yych <= '_')
+            goto yy758;
+          goto yy707;
+        } else {
+          if (yych <= 'z')
+            goto yy758;
+          if (yych <= 0x7F)
+            goto yy728;
+          if (yych <= 0xC1)
+            goto yy707;
+          goto yy730;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy731;
+          if (yych == 0xED)
+            goto yy736;
+          goto yy732;
+        } else {
+          if (yych <= 0xF0)
+            goto yy733;
+          if (yych <= 0xF3)
+            goto yy734;
+          if (yych <= 0xF4)
+            goto yy735;
+          goto yy707;
+        }
+      }
+    }
+  }
+}
+
+// Try to match an HTML block end line of type 1
+bufsize_t _scan_html_block_end_1(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64,  64, 64, 64, 0,  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, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 128, 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, 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, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= ';') {
+        if (yych <= 0x00)
+          goto yy766;
+        if (yych != '\n')
+          goto yy768;
+      } else {
+        if (yych <= '<')
+          goto yy769;
+        if (yych <= 0x7F)
+          goto yy768;
+        if (yych >= 0xC2)
+          goto yy770;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy771;
+        if (yych == 0xED)
+          goto yy773;
+        goto yy772;
+      } else {
+        if (yych <= 0xF0)
+          goto yy774;
+        if (yych <= 0xF3)
+          goto yy775;
+        if (yych <= 0xF4)
+          goto yy776;
+      }
+    }
+  yy766:
+    ++p;
+  yy767 : { return 0; }
+  yy768:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy767;
+      if (yych <= '\t')
+        goto yy781;
+      goto yy767;
+    } else {
+      if (yych <= 0x7F)
+        goto yy781;
+      if (yych <= 0xC1)
+        goto yy767;
+      if (yych <= 0xF4)
+        goto yy781;
+      goto yy767;
+    }
+  yy769:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '.') {
+      if (yych <= 0x00)
+        goto yy767;
+      if (yych == '\n')
+        goto yy767;
+      goto yy781;
+    } else {
+      if (yych <= 0x7F) {
+        if (yych <= '/')
+          goto yy789;
+        goto yy781;
+      } else {
+        if (yych <= 0xC1)
+          goto yy767;
+        if (yych <= 0xF4)
+          goto yy781;
+        goto yy767;
+      }
+    }
+  yy770:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy767;
+    if (yych <= 0xBF)
+      goto yy780;
+    goto yy767;
+  yy771:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy767;
+    if (yych <= 0xBF)
+      goto yy779;
+    goto yy767;
+  yy772:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy767;
+    if (yych <= 0xBF)
+      goto yy779;
+    goto yy767;
+  yy773:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy767;
+    if (yych <= 0x9F)
+      goto yy779;
+    goto yy767;
+  yy774:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy767;
+    if (yych <= 0xBF)
+      goto yy777;
+    goto yy767;
+  yy775:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy767;
+    if (yych <= 0xBF)
+      goto yy777;
+    goto yy767;
+  yy776:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy767;
+    if (yych >= 0x90)
+      goto yy767;
+  yy777:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy778;
+    if (yych <= 0xBF)
+      goto yy779;
+  yy778:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy767;
+    } else {
+      goto yy795;
+    }
+  yy779:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy778;
+    if (yych >= 0xC0)
+      goto yy778;
+  yy780:
+    ++p;
+    yych = *p;
+  yy781:
+    if (yybm[0 + yych] & 64) {
+      goto yy780;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy778;
+        if (yych >= '=')
+          goto yy778;
+      } else {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        goto yy777;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy788;
+        if (yych <= 0xEF)
+          goto yy777;
+        goto yy785;
+      } else {
+        if (yych <= 0xF3)
+          goto yy786;
+        if (yych <= 0xF4)
+          goto yy787;
+        goto yy778;
+      }
+    }
+  yy782:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '.') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= '/')
+          goto yy789;
+        if (yych <= 0x7F)
+          goto yy780;
+        if (yych <= 0xC1)
+          goto yy778;
+        goto yy779;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych == 0xED)
+          goto yy788;
+        goto yy777;
+      } else {
+        if (yych <= 0xF0)
+          goto yy785;
+        if (yych <= 0xF3)
+          goto yy786;
+        if (yych <= 0xF4)
+          goto yy787;
+        goto yy778;
+      }
+    }
+  yy784:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy778;
+    if (yych <= 0xBF)
+      goto yy779;
+    goto yy778;
+  yy785:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy778;
+    if (yych <= 0xBF)
+      goto yy777;
+    goto yy778;
+  yy786:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy778;
+    if (yych <= 0xBF)
+      goto yy777;
+    goto yy778;
+  yy787:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy778;
+    if (yych <= 0x8F)
+      goto yy777;
+    goto yy778;
+  yy788:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy778;
+    if (yych <= 0x9F)
+      goto yy779;
+    goto yy778;
+  yy789:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 's') {
+      if (yych <= 'P') {
+        if (yych <= '\t') {
+          if (yych <= 0x00)
+            goto yy778;
+          goto yy780;
+        } else {
+          if (yych <= '\n')
+            goto yy778;
+          if (yych <= 'O')
+            goto yy780;
+          goto yy791;
+        }
+      } else {
+        if (yych <= 'o') {
+          if (yych != 'S')
+            goto yy780;
+        } else {
+          if (yych <= 'p')
+            goto yy791;
+          if (yych <= 'r')
+            goto yy780;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        } else {
+          if (yych <= 0xDF)
+            goto yy779;
+          if (yych <= 0xE0)
+            goto yy784;
+          goto yy777;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy788;
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 't') {
+      if (yych <= 'C') {
+        if (yych <= '\t') {
+          if (yych <= 0x00)
+            goto yy778;
+          goto yy780;
+        } else {
+          if (yych <= '\n')
+            goto yy778;
+          if (yych <= 'B')
+            goto yy780;
+          goto yy796;
+        }
+      } else {
+        if (yych <= 'b') {
+          if (yych == 'T')
+            goto yy797;
+          goto yy780;
+        } else {
+          if (yych <= 'c')
+            goto yy796;
+          if (yych <= 's')
+            goto yy780;
+          goto yy797;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        } else {
+          if (yych <= 0xDF)
+            goto yy779;
+          if (yych <= 0xE0)
+            goto yy784;
+          goto yy777;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy788;
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy791:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'Q') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'q') {
+          if (yych >= 'S')
+            goto yy780;
+        } else {
+          if (yych <= 'r')
+            goto yy792;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy792:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'D') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'd') {
+          if (yych >= 'F')
+            goto yy780;
+        } else {
+          if (yych <= 'e')
+            goto yy793;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy793:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= '>')
+          goto yy794;
+        if (yych <= 0x7F)
+          goto yy780;
+        if (yych <= 0xC1)
+          goto yy778;
+        goto yy779;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych == 0xED)
+          goto yy788;
+        goto yy777;
+      } else {
+        if (yych <= 0xF0)
+          goto yy785;
+        if (yych <= 0xF3)
+          goto yy786;
+        if (yych <= 0xF4)
+          goto yy787;
+        goto yy778;
+      }
+    }
+  yy794:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy780;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy795;
+        if (yych <= '<')
+          goto yy782;
+      } else {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        goto yy777;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy788;
+        if (yych <= 0xEF)
+          goto yy777;
+        goto yy785;
+      } else {
+        if (yych <= 0xF3)
+          goto yy786;
+        if (yych <= 0xF4)
+          goto yy787;
+      }
+    }
+  yy795 : { return (bufsize_t)(p - start); }
+  yy796:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'Q') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'q') {
+          if (yych <= 'R')
+            goto yy800;
+          goto yy780;
+        } else {
+          if (yych <= 'r')
+            goto yy800;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy797:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'X') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'x') {
+          if (yych >= 'Z')
+            goto yy780;
+        } else {
+          if (yych <= 'y')
+            goto yy798;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy798:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'K') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'k') {
+          if (yych >= 'M')
+            goto yy780;
+        } else {
+          if (yych <= 'l')
+            goto yy799;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy799:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'D') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'd') {
+          if (yych <= 'E')
+            goto yy793;
+          goto yy780;
+        } else {
+          if (yych <= 'e')
+            goto yy793;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy800:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'H') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'h') {
+          if (yych >= 'J')
+            goto yy780;
+        } else {
+          if (yych <= 'i')
+            goto yy801;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy801:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'O') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 'o') {
+          if (yych >= 'Q')
+            goto yy780;
+        } else {
+          if (yych <= 'p')
+            goto yy802;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  yy802:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'S') {
+        if (yych <= 0x00)
+          goto yy778;
+        if (yych == '\n')
+          goto yy778;
+        goto yy780;
+      } else {
+        if (yych <= 's') {
+          if (yych <= 'T')
+            goto yy793;
+          goto yy780;
+        } else {
+          if (yych <= 't')
+            goto yy793;
+          if (yych <= 0x7F)
+            goto yy780;
+          goto yy778;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy779;
+        if (yych <= 0xE0)
+          goto yy784;
+        if (yych <= 0xEC)
+          goto yy777;
+        goto yy788;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy777;
+          goto yy785;
+        } else {
+          if (yych <= 0xF3)
+            goto yy786;
+          if (yych <= 0xF4)
+            goto yy787;
+          goto yy778;
+        }
+      }
+    }
+  }
+}
+
+// Try to match an HTML block end line of type 2
+bufsize_t _scan_html_block_end_2(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  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, 64, 64, 64, 64, 64, 64, 64, 64, 128, 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,
+        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, 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, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= ',') {
+        if (yych <= 0x00)
+          goto yy805;
+        if (yych != '\n')
+          goto yy807;
+      } else {
+        if (yych <= '-')
+          goto yy808;
+        if (yych <= 0x7F)
+          goto yy807;
+        if (yych >= 0xC2)
+          goto yy809;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy810;
+        if (yych == 0xED)
+          goto yy812;
+        goto yy811;
+      } else {
+        if (yych <= 0xF0)
+          goto yy813;
+        if (yych <= 0xF3)
+          goto yy814;
+        if (yych <= 0xF4)
+          goto yy815;
+      }
+    }
+  yy805:
+    ++p;
+  yy806 : { return 0; }
+  yy807:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy806;
+      if (yych <= '\t')
+        goto yy820;
+      goto yy806;
+    } else {
+      if (yych <= 0x7F)
+        goto yy820;
+      if (yych <= 0xC1)
+        goto yy806;
+      if (yych <= 0xF4)
+        goto yy820;
+      goto yy806;
+    }
+  yy808:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy827;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy806;
+      if (yych <= '\t')
+        goto yy820;
+      goto yy806;
+    } else {
+      if (yych <= 0x7F)
+        goto yy820;
+      if (yych <= 0xC1)
+        goto yy806;
+      if (yych <= 0xF4)
+        goto yy820;
+      goto yy806;
+    }
+  yy809:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy806;
+    if (yych <= 0xBF)
+      goto yy819;
+    goto yy806;
+  yy810:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy806;
+    if (yych <= 0xBF)
+      goto yy818;
+    goto yy806;
+  yy811:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy806;
+    if (yych <= 0xBF)
+      goto yy818;
+    goto yy806;
+  yy812:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy806;
+    if (yych <= 0x9F)
+      goto yy818;
+    goto yy806;
+  yy813:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy806;
+    if (yych <= 0xBF)
+      goto yy816;
+    goto yy806;
+  yy814:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy806;
+    if (yych <= 0xBF)
+      goto yy816;
+    goto yy806;
+  yy815:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy806;
+    if (yych >= 0x90)
+      goto yy806;
+  yy816:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy817;
+    if (yych <= 0xBF)
+      goto yy818;
+  yy817:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy806;
+    } else {
+      goto yy830;
+    }
+  yy818:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy817;
+    if (yych >= 0xC0)
+      goto yy817;
+  yy819:
+    ++p;
+    yych = *p;
+  yy820:
+    if (yybm[0 + yych] & 64) {
+      goto yy819;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy817;
+        if (yych >= '.')
+          goto yy817;
+      } else {
+        if (yych <= 0xDF)
+          goto yy818;
+        if (yych <= 0xE0)
+          goto yy822;
+        goto yy816;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy826;
+        if (yych <= 0xEF)
+          goto yy816;
+        goto yy823;
+      } else {
+        if (yych <= 0xF3)
+          goto yy824;
+        if (yych <= 0xF4)
+          goto yy825;
+        goto yy817;
+      }
+    }
+  yy821:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy819;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy817;
+        if (yych <= '-')
+          goto yy827;
+        goto yy817;
+      } else {
+        if (yych <= 0xDF)
+          goto yy818;
+        if (yych >= 0xE1)
+          goto yy816;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy826;
+        if (yych <= 0xEF)
+          goto yy816;
+        goto yy823;
+      } else {
+        if (yych <= 0xF3)
+          goto yy824;
+        if (yych <= 0xF4)
+          goto yy825;
+        goto yy817;
+      }
+    }
+  yy822:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy817;
+    if (yych <= 0xBF)
+      goto yy818;
+    goto yy817;
+  yy823:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy817;
+    if (yych <= 0xBF)
+      goto yy816;
+    goto yy817;
+  yy824:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy817;
+    if (yych <= 0xBF)
+      goto yy816;
+    goto yy817;
+  yy825:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy817;
+    if (yych <= 0x8F)
+      goto yy816;
+    goto yy817;
+  yy826:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy817;
+    if (yych <= 0x9F)
+      goto yy818;
+    goto yy817;
+  yy827:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy827;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy817;
+        if (yych == '\n')
+          goto yy817;
+        goto yy819;
+      } else {
+        if (yych <= '>')
+          goto yy829;
+        if (yych <= 0x7F)
+          goto yy819;
+        if (yych <= 0xC1)
+          goto yy817;
+        goto yy818;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy822;
+        if (yych == 0xED)
+          goto yy826;
+        goto yy816;
+      } else {
+        if (yych <= 0xF0)
+          goto yy823;
+        if (yych <= 0xF3)
+          goto yy824;
+        if (yych <= 0xF4)
+          goto yy825;
+        goto yy817;
+      }
+    }
+  yy829:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy819;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy830;
+        if (yych <= '-')
+          goto yy821;
+      } else {
+        if (yych <= 0xDF)
+          goto yy818;
+        if (yych <= 0xE0)
+          goto yy822;
+        goto yy816;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy826;
+        if (yych <= 0xEF)
+          goto yy816;
+        goto yy823;
+      } else {
+        if (yych <= 0xF3)
+          goto yy824;
+        if (yych <= 0xF4)
+          goto yy825;
+      }
+    }
+  yy830 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match an HTML block end line of type 3
+bufsize_t _scan_html_block_end_3(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  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, 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, 128, 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,
+        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, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy833;
+        if (yych != '\n')
+          goto yy835;
+      } else {
+        if (yych <= '?')
+          goto yy836;
+        if (yych <= 0x7F)
+          goto yy835;
+        if (yych >= 0xC2)
+          goto yy837;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy838;
+        if (yych == 0xED)
+          goto yy840;
+        goto yy839;
+      } else {
+        if (yych <= 0xF0)
+          goto yy841;
+        if (yych <= 0xF3)
+          goto yy842;
+        if (yych <= 0xF4)
+          goto yy843;
+      }
+    }
+  yy833:
+    ++p;
+  yy834 : { return 0; }
+  yy835:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy834;
+      if (yych <= '\t')
+        goto yy848;
+      goto yy834;
+    } else {
+      if (yych <= 0x7F)
+        goto yy848;
+      if (yych <= 0xC1)
+        goto yy834;
+      if (yych <= 0xF4)
+        goto yy848;
+      goto yy834;
+    }
+  yy836:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '=') {
+      if (yych <= 0x00)
+        goto yy834;
+      if (yych == '\n')
+        goto yy834;
+      goto yy848;
+    } else {
+      if (yych <= 0x7F) {
+        if (yych <= '>')
+          goto yy856;
+        goto yy848;
+      } else {
+        if (yych <= 0xC1)
+          goto yy834;
+        if (yych <= 0xF4)
+          goto yy848;
+        goto yy834;
+      }
+    }
+  yy837:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy834;
+    if (yych <= 0xBF)
+      goto yy847;
+    goto yy834;
+  yy838:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy834;
+    if (yych <= 0xBF)
+      goto yy846;
+    goto yy834;
+  yy839:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy834;
+    if (yych <= 0xBF)
+      goto yy846;
+    goto yy834;
+  yy840:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy834;
+    if (yych <= 0x9F)
+      goto yy846;
+    goto yy834;
+  yy841:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy834;
+    if (yych <= 0xBF)
+      goto yy844;
+    goto yy834;
+  yy842:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy834;
+    if (yych <= 0xBF)
+      goto yy844;
+    goto yy834;
+  yy843:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy834;
+    if (yych >= 0x90)
+      goto yy834;
+  yy844:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy845;
+    if (yych <= 0xBF)
+      goto yy846;
+  yy845:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy834;
+    } else {
+      goto yy857;
+    }
+  yy846:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy845;
+    if (yych >= 0xC0)
+      goto yy845;
+  yy847:
+    ++p;
+    yych = *p;
+  yy848:
+    if (yybm[0 + yych] & 64) {
+      goto yy847;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy845;
+        if (yych >= '@')
+          goto yy845;
+      } else {
+        if (yych <= 0xDF)
+          goto yy846;
+        if (yych <= 0xE0)
+          goto yy851;
+        goto yy844;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy855;
+        if (yych <= 0xEF)
+          goto yy844;
+        goto yy852;
+      } else {
+        if (yych <= 0xF3)
+          goto yy853;
+        if (yych <= 0xF4)
+          goto yy854;
+        goto yy845;
+      }
+    }
+  yy849:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy849;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy845;
+        if (yych == '\n')
+          goto yy845;
+        goto yy847;
+      } else {
+        if (yych <= '>')
+          goto yy856;
+        if (yych <= 0x7F)
+          goto yy847;
+        if (yych <= 0xC1)
+          goto yy845;
+        goto yy846;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy851;
+        if (yych == 0xED)
+          goto yy855;
+        goto yy844;
+      } else {
+        if (yych <= 0xF0)
+          goto yy852;
+        if (yych <= 0xF3)
+          goto yy853;
+        if (yych <= 0xF4)
+          goto yy854;
+        goto yy845;
+      }
+    }
+  yy851:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy845;
+    if (yych <= 0xBF)
+      goto yy846;
+    goto yy845;
+  yy852:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy845;
+    if (yych <= 0xBF)
+      goto yy844;
+    goto yy845;
+  yy853:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy845;
+    if (yych <= 0xBF)
+      goto yy844;
+    goto yy845;
+  yy854:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy845;
+    if (yych <= 0x8F)
+      goto yy844;
+    goto yy845;
+  yy855:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy845;
+    if (yych <= 0x9F)
+      goto yy846;
+    goto yy845;
+  yy856:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy847;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy857;
+        if (yych <= '?')
+          goto yy849;
+      } else {
+        if (yych <= 0xDF)
+          goto yy846;
+        if (yych <= 0xE0)
+          goto yy851;
+        goto yy844;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy855;
+        if (yych <= 0xEF)
+          goto yy844;
+        goto yy852;
+      } else {
+        if (yych <= 0xF3)
+          goto yy853;
+        if (yych <= 0xF4)
+          goto yy854;
+      }
+    }
+  yy857 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match an HTML block end line of type 4
+bufsize_t _scan_html_block_end_4(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64, 64, 64,  64, 0,  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, 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, 128, 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, 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, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy860;
+        if (yych != '\n')
+          goto yy862;
+      } else {
+        if (yych <= '>')
+          goto yy863;
+        if (yych <= 0x7F)
+          goto yy862;
+        if (yych >= 0xC2)
+          goto yy865;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy866;
+        if (yych == 0xED)
+          goto yy868;
+        goto yy867;
+      } else {
+        if (yych <= 0xF0)
+          goto yy869;
+        if (yych <= 0xF3)
+          goto yy870;
+        if (yych <= 0xF4)
+          goto yy871;
+      }
+    }
+  yy860:
+    ++p;
+  yy861 : { return 0; }
+  yy862:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy861;
+      if (yych <= '\t')
+        goto yy876;
+      goto yy861;
+    } else {
+      if (yych <= 0x7F)
+        goto yy876;
+      if (yych <= 0xC1)
+        goto yy861;
+      if (yych <= 0xF4)
+        goto yy876;
+      goto yy861;
+    }
+  yy863:
+    yyaccept = 1;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy864;
+      if (yych <= '\t')
+        goto yy876;
+    } else {
+      if (yych <= 0x7F)
+        goto yy876;
+      if (yych <= 0xC1)
+        goto yy864;
+      if (yych <= 0xF4)
+        goto yy876;
+    }
+  yy864 : { return (bufsize_t)(p - start); }
+  yy865:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy861;
+    if (yych <= 0xBF)
+      goto yy875;
+    goto yy861;
+  yy866:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy861;
+    if (yych <= 0xBF)
+      goto yy874;
+    goto yy861;
+  yy867:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy861;
+    if (yych <= 0xBF)
+      goto yy874;
+    goto yy861;
+  yy868:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy861;
+    if (yych <= 0x9F)
+      goto yy874;
+    goto yy861;
+  yy869:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy861;
+    if (yych <= 0xBF)
+      goto yy872;
+    goto yy861;
+  yy870:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy861;
+    if (yych <= 0xBF)
+      goto yy872;
+    goto yy861;
+  yy871:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy861;
+    if (yych >= 0x90)
+      goto yy861;
+  yy872:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy873;
+    if (yych <= 0xBF)
+      goto yy874;
+  yy873:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy861;
+    } else {
+      goto yy864;
+    }
+  yy874:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy873;
+    if (yych >= 0xC0)
+      goto yy873;
+  yy875:
+    ++p;
+    yych = *p;
+  yy876:
+    if (yybm[0 + yych] & 64) {
+      goto yy875;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy873;
+        if (yych >= '?')
+          goto yy873;
+      } else {
+        if (yych <= 0xDF)
+          goto yy874;
+        if (yych <= 0xE0)
+          goto yy879;
+        goto yy872;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy883;
+        if (yych <= 0xEF)
+          goto yy872;
+        goto yy880;
+      } else {
+        if (yych <= 0xF3)
+          goto yy881;
+        if (yych <= 0xF4)
+          goto yy882;
+        goto yy873;
+      }
+    }
+  yy877:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy875;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy864;
+        if (yych <= '>')
+          goto yy877;
+        goto yy864;
+      } else {
+        if (yych <= 0xDF)
+          goto yy874;
+        if (yych >= 0xE1)
+          goto yy872;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy883;
+        if (yych <= 0xEF)
+          goto yy872;
+        goto yy880;
+      } else {
+        if (yych <= 0xF3)
+          goto yy881;
+        if (yych <= 0xF4)
+          goto yy882;
+        goto yy864;
+      }
+    }
+  yy879:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy873;
+    if (yych <= 0xBF)
+      goto yy874;
+    goto yy873;
+  yy880:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy873;
+    if (yych <= 0xBF)
+      goto yy872;
+    goto yy873;
+  yy881:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy873;
+    if (yych <= 0xBF)
+      goto yy872;
+    goto yy873;
+  yy882:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy873;
+    if (yych <= 0x8F)
+      goto yy872;
+    goto yy873;
+  yy883:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy873;
+    if (yych <= 0x9F)
+      goto yy874;
+    goto yy873;
+  }
+}
+
+// Try to match an HTML block end line of type 5
+bufsize_t _scan_html_block_end_5(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64,  64, 64, 64, 64, 64, 64, 0,  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, 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, 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, 64,
+        64, 64, 64, 128, 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, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy886;
+        if (yych != '\n')
+          goto yy888;
+      } else {
+        if (yych <= ']')
+          goto yy889;
+        if (yych <= 0x7F)
+          goto yy888;
+        if (yych >= 0xC2)
+          goto yy890;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy891;
+        if (yych == 0xED)
+          goto yy893;
+        goto yy892;
+      } else {
+        if (yych <= 0xF0)
+          goto yy894;
+        if (yych <= 0xF3)
+          goto yy895;
+        if (yych <= 0xF4)
+          goto yy896;
+      }
+    }
+  yy886:
+    ++p;
+  yy887 : { return 0; }
+  yy888:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy887;
+      if (yych <= '\t')
+        goto yy901;
+      goto yy887;
+    } else {
+      if (yych <= 0x7F)
+        goto yy901;
+      if (yych <= 0xC1)
+        goto yy887;
+      if (yych <= 0xF4)
+        goto yy901;
+      goto yy887;
+    }
+  yy889:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy908;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy887;
+      if (yych <= '\t')
+        goto yy901;
+      goto yy887;
+    } else {
+      if (yych <= 0x7F)
+        goto yy901;
+      if (yych <= 0xC1)
+        goto yy887;
+      if (yych <= 0xF4)
+        goto yy901;
+      goto yy887;
+    }
+  yy890:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy887;
+    if (yych <= 0xBF)
+      goto yy900;
+    goto yy887;
+  yy891:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy887;
+    if (yych <= 0xBF)
+      goto yy899;
+    goto yy887;
+  yy892:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy887;
+    if (yych <= 0xBF)
+      goto yy899;
+    goto yy887;
+  yy893:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy887;
+    if (yych <= 0x9F)
+      goto yy899;
+    goto yy887;
+  yy894:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy887;
+    if (yych <= 0xBF)
+      goto yy897;
+    goto yy887;
+  yy895:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy887;
+    if (yych <= 0xBF)
+      goto yy897;
+    goto yy887;
+  yy896:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy887;
+    if (yych >= 0x90)
+      goto yy887;
+  yy897:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy898;
+    if (yych <= 0xBF)
+      goto yy899;
+  yy898:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy887;
+    } else {
+      goto yy911;
+    }
+  yy899:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy898;
+    if (yych >= 0xC0)
+      goto yy898;
+  yy900:
+    ++p;
+    yych = *p;
+  yy901:
+    if (yybm[0 + yych] & 64) {
+      goto yy900;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy898;
+        if (yych >= '^')
+          goto yy898;
+      } else {
+        if (yych <= 0xDF)
+          goto yy899;
+        if (yych <= 0xE0)
+          goto yy903;
+        goto yy897;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy907;
+        if (yych <= 0xEF)
+          goto yy897;
+        goto yy904;
+      } else {
+        if (yych <= 0xF3)
+          goto yy905;
+        if (yych <= 0xF4)
+          goto yy906;
+        goto yy898;
+      }
+    }
+  yy902:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy900;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy898;
+        if (yych <= ']')
+          goto yy908;
+        goto yy898;
+      } else {
+        if (yych <= 0xDF)
+          goto yy899;
+        if (yych >= 0xE1)
+          goto yy897;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy907;
+        if (yych <= 0xEF)
+          goto yy897;
+        goto yy904;
+      } else {
+        if (yych <= 0xF3)
+          goto yy905;
+        if (yych <= 0xF4)
+          goto yy906;
+        goto yy898;
+      }
+    }
+  yy903:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy898;
+    if (yych <= 0xBF)
+      goto yy899;
+    goto yy898;
+  yy904:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy898;
+    if (yych <= 0xBF)
+      goto yy897;
+    goto yy898;
+  yy905:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy898;
+    if (yych <= 0xBF)
+      goto yy897;
+    goto yy898;
+  yy906:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy898;
+    if (yych <= 0x8F)
+      goto yy897;
+    goto yy898;
+  yy907:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy898;
+    if (yych <= 0x9F)
+      goto yy899;
+    goto yy898;
+  yy908:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy908;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy898;
+        if (yych == '\n')
+          goto yy898;
+        goto yy900;
+      } else {
+        if (yych <= '>')
+          goto yy910;
+        if (yych <= 0x7F)
+          goto yy900;
+        if (yych <= 0xC1)
+          goto yy898;
+        goto yy899;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy903;
+        if (yych == 0xED)
+          goto yy907;
+        goto yy897;
+      } else {
+        if (yych <= 0xF0)
+          goto yy904;
+        if (yych <= 0xF3)
+          goto yy905;
+        if (yych <= 0xF4)
+          goto yy906;
+        goto yy898;
+      }
+    }
+  yy910:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy900;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy911;
+        if (yych <= ']')
+          goto yy902;
+      } else {
+        if (yych <= 0xDF)
+          goto yy899;
+        if (yych <= 0xE0)
+          goto yy903;
+        goto yy897;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy907;
+        if (yych <= 0xEF)
+          goto yy897;
+        goto yy904;
+      } else {
+        if (yych <= 0xF3)
+          goto yy905;
+        if (yych <= 0xF4)
+          goto yy906;
+      }
+    }
+  yy911 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match a link title (in single quotes, in double quotes, or
+// in parentheses), returning number of chars matched.  Allow one
+// level of internal nesting (quotes within quotes).
+bufsize_t _scan_link_title(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '&') {
+      if (yych == '"')
+        goto yy916;
+    } else {
+      if (yych <= '\'')
+        goto yy917;
+      if (yych <= '(')
+        goto yy918;
+    }
+    ++p;
+  yy915 : { return 0; }
+  yy916:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy915;
+    if (yych <= 0x7F)
+      goto yy951;
+    if (yych <= 0xC1)
+      goto yy915;
+    if (yych <= 0xF4)
+      goto yy951;
+    goto yy915;
+  yy917:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy915;
+    if (yych <= 0x7F)
+      goto yy937;
+    if (yych <= 0xC1)
+      goto yy915;
+    if (yych <= 0xF4)
+      goto yy937;
+    goto yy915;
+  yy918:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy915;
+    if (yych <= 0x7F)
+      goto yy923;
+    if (yych <= 0xC1)
+      goto yy915;
+    if (yych <= 0xF4)
+      goto yy923;
+    goto yy915;
+  yy919:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy922;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy921;
+        if (yych <= ')')
+          goto yy933;
+        goto yy919;
+      } else {
+        if (yych <= 0xC1)
+          goto yy921;
+        if (yych <= 0xDF)
+          goto yy924;
+        goto yy925;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy930;
+        goto yy926;
+      } else {
+        if (yych <= 0xF0)
+          goto yy927;
+        if (yych <= 0xF3)
+          goto yy928;
+        if (yych <= 0xF4)
+          goto yy929;
+      }
+    }
+  yy921:
+    p = marker;
+    if (yyaccept <= 1) {
+      if (yyaccept == 0) {
+        goto yy915;
+      } else {
+        goto yy932;
+      }
+    } else {
+      if (yyaccept == 2) {
+        goto yy946;
+      } else {
+        goto yy960;
+      }
+    }
+  yy922:
+    ++p;
+    yych = *p;
+  yy923:
+    if (yybm[0 + yych] & 32) {
+      goto yy922;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy921;
+        if (yych <= ')')
+          goto yy931;
+        goto yy919;
+      } else {
+        if (yych <= 0xC1)
+          goto yy921;
+        if (yych >= 0xE0)
+          goto yy925;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy930;
+        goto yy926;
+      } else {
+        if (yych <= 0xF0)
+          goto yy927;
+        if (yych <= 0xF3)
+          goto yy928;
+        if (yych <= 0xF4)
+          goto yy929;
+        goto yy921;
+      }
+    }
+  yy924:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy922;
+    goto yy921;
+  yy925:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy924;
+    goto yy921;
+  yy926:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy924;
+    goto yy921;
+  yy927:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy926;
+    goto yy921;
+  yy928:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy926;
+    goto yy921;
+  yy929:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0x8F)
+      goto yy926;
+    goto yy921;
+  yy930:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0x9F)
+      goto yy924;
+    goto yy921;
+  yy931:
+    ++p;
+  yy932 : { return (bufsize_t)(p - start); }
+  yy933:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy922;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy932;
+        if (yych <= ')')
+          goto yy931;
+        goto yy919;
+      } else {
+        if (yych <= 0xC1)
+          goto yy932;
+        if (yych <= 0xDF)
+          goto yy924;
+        goto yy925;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy930;
+        goto yy926;
+      } else {
+        if (yych <= 0xF0)
+          goto yy927;
+        if (yych <= 0xF3)
+          goto yy928;
+        if (yych <= 0xF4)
+          goto yy929;
+        goto yy932;
+      }
+    }
+  yy934:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy936;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy921;
+        if (yych <= '\'')
+          goto yy947;
+        goto yy934;
+      } else {
+        if (yych <= 0xC1)
+          goto yy921;
+        if (yych <= 0xDF)
+          goto yy938;
+        goto yy939;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy944;
+        goto yy940;
+      } else {
+        if (yych <= 0xF0)
+          goto yy941;
+        if (yych <= 0xF3)
+          goto yy942;
+        if (yych <= 0xF4)
+          goto yy943;
+        goto yy921;
+      }
+    }
+  yy936:
+    ++p;
+    yych = *p;
+  yy937:
+    if (yybm[0 + yych] & 64) {
+      goto yy936;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy921;
+        if (yych <= '\'')
+          goto yy945;
+        goto yy934;
+      } else {
+        if (yych <= 0xC1)
+          goto yy921;
+        if (yych >= 0xE0)
+          goto yy939;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy944;
+        goto yy940;
+      } else {
+        if (yych <= 0xF0)
+          goto yy941;
+        if (yych <= 0xF3)
+          goto yy942;
+        if (yych <= 0xF4)
+          goto yy943;
+        goto yy921;
+      }
+    }
+  yy938:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy936;
+    goto yy921;
+  yy939:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy938;
+    goto yy921;
+  yy940:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy938;
+    goto yy921;
+  yy941:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy940;
+    goto yy921;
+  yy942:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy940;
+    goto yy921;
+  yy943:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0x8F)
+      goto yy940;
+    goto yy921;
+  yy944:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0x9F)
+      goto yy938;
+    goto yy921;
+  yy945:
+    ++p;
+  yy946 : { return (bufsize_t)(p - start); }
+  yy947:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy936;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy946;
+        if (yych <= '\'')
+          goto yy945;
+        goto yy934;
+      } else {
+        if (yych <= 0xC1)
+          goto yy946;
+        if (yych <= 0xDF)
+          goto yy938;
+        goto yy939;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy944;
+        goto yy940;
+      } else {
+        if (yych <= 0xF0)
+          goto yy941;
+        if (yych <= 0xF3)
+          goto yy942;
+        if (yych <= 0xF4)
+          goto yy943;
+        goto yy946;
+      }
+    }
+  yy948:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy950;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy921;
+        if (yych <= '"')
+          goto yy961;
+        goto yy948;
+      } else {
+        if (yych <= 0xC1)
+          goto yy921;
+        if (yych <= 0xDF)
+          goto yy952;
+        goto yy953;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy958;
+        goto yy954;
+      } else {
+        if (yych <= 0xF0)
+          goto yy955;
+        if (yych <= 0xF3)
+          goto yy956;
+        if (yych <= 0xF4)
+          goto yy957;
+        goto yy921;
+      }
+    }
+  yy950:
+    ++p;
+    yych = *p;
+  yy951:
+    if (yybm[0 + yych] & 128) {
+      goto yy950;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy921;
+        if (yych <= '"')
+          goto yy959;
+        goto yy948;
+      } else {
+        if (yych <= 0xC1)
+          goto yy921;
+        if (yych >= 0xE0)
+          goto yy953;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy958;
+        goto yy954;
+      } else {
+        if (yych <= 0xF0)
+          goto yy955;
+        if (yych <= 0xF3)
+          goto yy956;
+        if (yych <= 0xF4)
+          goto yy957;
+        goto yy921;
+      }
+    }
+  yy952:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy950;
+    goto yy921;
+  yy953:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy952;
+    goto yy921;
+  yy954:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy952;
+    goto yy921;
+  yy955:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy954;
+    goto yy921;
+  yy956:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0xBF)
+      goto yy954;
+    goto yy921;
+  yy957:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0x8F)
+      goto yy954;
+    goto yy921;
+  yy958:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy921;
+    if (yych <= 0x9F)
+      goto yy952;
+    goto yy921;
+  yy959:
+    ++p;
+  yy960 : { return (bufsize_t)(p - start); }
+  yy961:
+    yyaccept = 3;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy950;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy960;
+        if (yych <= '"')
+          goto yy959;
+        goto yy948;
+      } else {
+        if (yych <= 0xC1)
+          goto yy960;
+        if (yych <= 0xDF)
+          goto yy952;
+        goto yy953;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy958;
+        goto yy954;
+      } else {
+        if (yych <= 0xF0)
+          goto yy955;
+        if (yych <= 0xF3)
+          goto yy956;
+        if (yych <= 0xF4)
+          goto yy957;
+        goto yy960;
+      }
+    }
+  }
+}
+
+// Match space characters, including newlines.
+bufsize_t _scan_spacechars(const unsigned char *p) {
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
+    };
+    yych = *p;
+    if (yych <= 0x08)
+      goto yy964;
+    if (yych <= '\r')
+      goto yy966;
+    if (yych == ' ')
+      goto yy966;
+  yy964:
+    ++p;
+    { return 0; }
+  yy966:
+    ++p;
+    yych = *p;
+    goto yy969;
+  yy967 : { return (bufsize_t)(p - start); }
+  yy968:
+    ++p;
+    yych = *p;
+  yy969:
+    if (yybm[0 + yych] & 128) {
+      goto yy968;
+    }
+    goto yy967;
+  }
+}
+
+// Match ATX heading start.
+bufsize_t _scan_atx_heading_start(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,
+    };
+    yych = *p;
+    if (yych == '#')
+      goto yy974;
+    ++p;
+  yy973 : { return 0; }
+  yy974:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy977;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy973;
+      if (yych >= '\v')
+        goto yy973;
+    } else {
+      if (yych <= '\r')
+        goto yy975;
+      if (yych == '#')
+        goto yy979;
+      goto yy973;
+    }
+  yy975:
+    ++p;
+  yy976 : { return (bufsize_t)(p - start); }
+  yy977:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy977;
+    }
+    goto yy976;
+  yy979:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy977;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy980;
+      if (yych <= '\n')
+        goto yy975;
+    } else {
+      if (yych <= '\r')
+        goto yy975;
+      if (yych == '#')
+        goto yy981;
+    }
+  yy980:
+    p = marker;
+    goto yy973;
+  yy981:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy977;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy980;
+      if (yych <= '\n')
+        goto yy975;
+      goto yy980;
+    } else {
+      if (yych <= '\r')
+        goto yy975;
+      if (yych != '#')
+        goto yy980;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy977;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy980;
+      if (yych <= '\n')
+        goto yy975;
+      goto yy980;
+    } else {
+      if (yych <= '\r')
+        goto yy975;
+      if (yych != '#')
+        goto yy980;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy977;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy980;
+      if (yych <= '\n')
+        goto yy975;
+      goto yy980;
+    } else {
+      if (yych <= '\r')
+        goto yy975;
+      if (yych != '#')
+        goto yy980;
+    }
+    ++p;
+    if (yybm[0 + (yych = *p)] & 128) {
+      goto yy977;
+    }
+    if (yych <= 0x08)
+      goto yy980;
+    if (yych <= '\n')
+      goto yy975;
+    if (yych == '\r')
+      goto yy975;
+    goto yy980;
+  }
+}
+
+// Match setext heading line.  Return 1 for level-1 heading,
+// 2 for level-2, 0 for no match.
+bufsize_t _scan_setext_heading_line(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 32, 0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  32, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 128, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
+        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0,
+    };
+    yych = *p;
+    if (yych == '-')
+      goto yy989;
+    if (yych == '=')
+      goto yy990;
+    ++p;
+  yy988 : { return 0; }
+  yy989:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy1002;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy988;
+      if (yych <= '\n')
+        goto yy999;
+      goto yy988;
+    } else {
+      if (yych <= '\r')
+        goto yy999;
+      if (yych == ' ')
+        goto yy999;
+      goto yy988;
+    }
+  yy990:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 64) {
+      goto yy996;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy988;
+      if (yych <= '\n')
+        goto yy992;
+      goto yy988;
+    } else {
+      if (yych <= '\r')
+        goto yy992;
+      if (yych == ' ')
+        goto yy992;
+      goto yy988;
+    }
+  yy991:
+    ++p;
+    yych = *p;
+  yy992:
+    if (yybm[0 + yych] & 32) {
+      goto yy991;
+    }
+    if (yych <= 0x08)
+      goto yy993;
+    if (yych <= '\n')
+      goto yy994;
+    if (yych == '\r')
+      goto yy994;
+  yy993:
+    p = marker;
+    goto yy988;
+  yy994:
+    ++p;
+    { return 1; }
+  yy996:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy991;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy993;
+      if (yych <= '\n')
+        goto yy994;
+      goto yy993;
+    } else {
+      if (yych <= '\r')
+        goto yy994;
+      if (yych == '=')
+        goto yy996;
+      goto yy993;
+    }
+  yy998:
+    ++p;
+    yych = *p;
+  yy999:
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy993;
+      if (yych <= '\t')
+        goto yy998;
+      if (yych >= '\v')
+        goto yy993;
+    } else {
+      if (yych <= '\r')
+        goto yy1000;
+      if (yych == ' ')
+        goto yy998;
+      goto yy993;
+    }
+  yy1000:
+    ++p;
+    { return 2; }
+  yy1002:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1002;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy993;
+      if (yych <= '\t')
+        goto yy998;
+      if (yych <= '\n')
+        goto yy1000;
+      goto yy993;
+    } else {
+      if (yych <= '\r')
+        goto yy1000;
+      if (yych == ' ')
+        goto yy998;
+      goto yy993;
+    }
+  }
+}
+
+// Scan a thematic break line: "...three or more hyphens, asterisks,
+// or underscores on a line by themselves. If you wish, you may use
+// spaces between the hyphens or asterisks."
+bufsize_t _scan_thematic_break(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 240, 0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 240, 0, 0, 0,  0, 0, 0, 0,
+        0, 0, 128, 0, 0, 64, 0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 32, 0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,
+    };
+    yych = *p;
+    if (yych <= ',') {
+      if (yych == '*')
+        goto yy1008;
+    } else {
+      if (yych <= '-')
+        goto yy1009;
+      if (yych == '_')
+        goto yy1010;
+    }
+    ++p;
+  yy1007 : { return 0; }
+  yy1008:
+    yych = *(marker = ++p);
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1032;
+      goto yy1007;
+    } else {
+      if (yych <= ' ')
+        goto yy1032;
+      if (yych == '*')
+        goto yy1034;
+      goto yy1007;
+    }
+  yy1009:
+    yych = *(marker = ++p);
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1022;
+      goto yy1007;
+    } else {
+      if (yych <= ' ')
+        goto yy1022;
+      if (yych == '-')
+        goto yy1024;
+      goto yy1007;
+    }
+  yy1010:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 16) {
+      goto yy1011;
+    }
+    if (yych == '_')
+      goto yy1014;
+    goto yy1007;
+  yy1011:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy1011;
+    }
+    if (yych == '_')
+      goto yy1014;
+  yy1013:
+    p = marker;
+    goto yy1007;
+  yy1014:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1014;
+      goto yy1013;
+    } else {
+      if (yych <= ' ')
+        goto yy1014;
+      if (yych != '_')
+        goto yy1013;
+    }
+  yy1016:
+    ++p;
+    yych = *p;
+    if (yych <= '\r') {
+      if (yych <= '\t') {
+        if (yych <= 0x08)
+          goto yy1013;
+        goto yy1016;
+      } else {
+        if (yych <= '\n')
+          goto yy1018;
+        if (yych <= '\f')
+          goto yy1013;
+      }
+    } else {
+      if (yych <= ' ') {
+        if (yych <= 0x1F)
+          goto yy1013;
+        goto yy1016;
+      } else {
+        if (yych == '_')
+          goto yy1020;
+        goto yy1013;
+      }
+    }
+  yy1018:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1020:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1020;
+    }
+    if (yych <= 0x08)
+      goto yy1013;
+    if (yych <= '\n')
+      goto yy1018;
+    if (yych == '\r')
+      goto yy1018;
+    goto yy1013;
+  yy1022:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1022;
+      goto yy1013;
+    } else {
+      if (yych <= ' ')
+        goto yy1022;
+      if (yych != '-')
+        goto yy1013;
+    }
+  yy1024:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1024;
+      goto yy1013;
+    } else {
+      if (yych <= ' ')
+        goto yy1024;
+      if (yych != '-')
+        goto yy1013;
+    }
+  yy1026:
+    ++p;
+    yych = *p;
+    if (yych <= '\r') {
+      if (yych <= '\t') {
+        if (yych <= 0x08)
+          goto yy1013;
+        goto yy1026;
+      } else {
+        if (yych <= '\n')
+          goto yy1028;
+        if (yych <= '\f')
+          goto yy1013;
+      }
+    } else {
+      if (yych <= ' ') {
+        if (yych <= 0x1F)
+          goto yy1013;
+        goto yy1026;
+      } else {
+        if (yych == '-')
+          goto yy1030;
+        goto yy1013;
+      }
+    }
+  yy1028:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1030:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1030;
+    }
+    if (yych <= 0x08)
+      goto yy1013;
+    if (yych <= '\n')
+      goto yy1028;
+    if (yych == '\r')
+      goto yy1028;
+    goto yy1013;
+  yy1032:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1032;
+      goto yy1013;
+    } else {
+      if (yych <= ' ')
+        goto yy1032;
+      if (yych != '*')
+        goto yy1013;
+    }
+  yy1034:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1034;
+      goto yy1013;
+    } else {
+      if (yych <= ' ')
+        goto yy1034;
+      if (yych != '*')
+        goto yy1013;
+    }
+  yy1036:
+    ++p;
+    yych = *p;
+    if (yych <= '\r') {
+      if (yych <= '\t') {
+        if (yych <= 0x08)
+          goto yy1013;
+        goto yy1036;
+      } else {
+        if (yych <= '\n')
+          goto yy1038;
+        if (yych <= '\f')
+          goto yy1013;
+      }
+    } else {
+      if (yych <= ' ') {
+        if (yych <= 0x1F)
+          goto yy1013;
+        goto yy1036;
+      } else {
+        if (yych == '*')
+          goto yy1040;
+        goto yy1013;
+      }
+    }
+  yy1038:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1040:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1040;
+    }
+    if (yych <= 0x08)
+      goto yy1013;
+    if (yych <= '\n')
+      goto yy1038;
+    if (yych == '\r')
+      goto yy1038;
+    goto yy1013;
+  }
+}
+
+// Scan an opening code fence.
+bufsize_t _scan_open_code_fence(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych == '`')
+      goto yy1046;
+    if (yych == '~')
+      goto yy1047;
+    ++p;
+  yy1045 : { return 0; }
+  yy1046:
+    yych = *(marker = ++p);
+    if (yych == '`')
+      goto yy1063;
+    goto yy1045;
+  yy1047:
+    yych = *(marker = ++p);
+    if (yych != '~')
+      goto yy1045;
+    yych = *++p;
+    if (yybm[0 + yych] & 16) {
+      goto yy1050;
+    }
+  yy1049:
+    p = marker;
+    goto yy1045;
+  yy1050:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1052;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '~') {
+        if (yych <= 0x00)
+          goto yy1049;
+        if (yych <= '\r')
+          goto yy1061;
+        goto yy1050;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1049;
+        if (yych <= 0xDF)
+          goto yy1054;
+        goto yy1055;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1060;
+        goto yy1056;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1057;
+        if (yych <= 0xF3)
+          goto yy1058;
+        if (yych <= 0xF4)
+          goto yy1059;
+        goto yy1049;
+      }
+    }
+  yy1052:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1052;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy1049;
+        if (yych <= '\r')
+          goto yy1061;
+        goto yy1049;
+      } else {
+        if (yych <= 0xDF)
+          goto yy1054;
+        if (yych <= 0xE0)
+          goto yy1055;
+        goto yy1056;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy1060;
+        if (yych <= 0xEF)
+          goto yy1056;
+        goto yy1057;
+      } else {
+        if (yych <= 0xF3)
+          goto yy1058;
+        if (yych <= 0xF4)
+          goto yy1059;
+        goto yy1049;
+      }
+    }
+  yy1054:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1052;
+    goto yy1049;
+  yy1055:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1054;
+    goto yy1049;
+  yy1056:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1054;
+    goto yy1049;
+  yy1057:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1056;
+    goto yy1049;
+  yy1058:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1056;
+    goto yy1049;
+  yy1059:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0x8F)
+      goto yy1056;
+    goto yy1049;
+  yy1060:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0x9F)
+      goto yy1054;
+    goto yy1049;
+  yy1061:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy1063:
+    yych = *++p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1064;
+    }
+    goto yy1049;
+  yy1064:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1066;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '`') {
+        if (yych <= 0x00)
+          goto yy1049;
+        if (yych <= '\r')
+          goto yy1075;
+        goto yy1064;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1049;
+        if (yych <= 0xDF)
+          goto yy1068;
+        goto yy1069;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1074;
+        goto yy1070;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1071;
+        if (yych <= 0xF3)
+          goto yy1072;
+        if (yych <= 0xF4)
+          goto yy1073;
+        goto yy1049;
+      }
+    }
+  yy1066:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1066;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy1049;
+        if (yych <= '\r')
+          goto yy1075;
+        goto yy1049;
+      } else {
+        if (yych <= 0xDF)
+          goto yy1068;
+        if (yych <= 0xE0)
+          goto yy1069;
+        goto yy1070;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy1074;
+        if (yych <= 0xEF)
+          goto yy1070;
+        goto yy1071;
+      } else {
+        if (yych <= 0xF3)
+          goto yy1072;
+        if (yych <= 0xF4)
+          goto yy1073;
+        goto yy1049;
+      }
+    }
+  yy1068:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1066;
+    goto yy1049;
+  yy1069:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1068;
+    goto yy1049;
+  yy1070:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1068;
+    goto yy1049;
+  yy1071:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1070;
+    goto yy1049;
+  yy1072:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0xBF)
+      goto yy1070;
+    goto yy1049;
+  yy1073:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0x8F)
+      goto yy1070;
+    goto yy1049;
+  yy1074:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1049;
+    if (yych <= 0x9F)
+      goto yy1068;
+    goto yy1049;
+  yy1075:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Scan a closing code fence with length at least len.
+bufsize_t _scan_close_code_fence(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,
+    };
+    yych = *p;
+    if (yych == '`')
+      goto yy1081;
+    if (yych == '~')
+      goto yy1082;
+    ++p;
+  yy1080 : { return 0; }
+  yy1081:
+    yych = *(marker = ++p);
+    if (yych == '`')
+      goto yy1091;
+    goto yy1080;
+  yy1082:
+    yych = *(marker = ++p);
+    if (yych != '~')
+      goto yy1080;
+    yych = *++p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1085;
+    }
+  yy1084:
+    p = marker;
+    goto yy1080;
+  yy1085:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1087;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1084;
+      if (yych <= '\n')
+        goto yy1089;
+      goto yy1084;
+    } else {
+      if (yych <= '\r')
+        goto yy1089;
+      if (yych == '~')
+        goto yy1085;
+      goto yy1084;
+    }
+  yy1087:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1087;
+    }
+    if (yych <= 0x08)
+      goto yy1084;
+    if (yych <= '\n')
+      goto yy1089;
+    if (yych != '\r')
+      goto yy1084;
+  yy1089:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy1091:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1092;
+    }
+    goto yy1084;
+  yy1092:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1092;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1084;
+      if (yych <= '\t')
+        goto yy1094;
+      if (yych <= '\n')
+        goto yy1096;
+      goto yy1084;
+    } else {
+      if (yych <= '\r')
+        goto yy1096;
+      if (yych != ' ')
+        goto yy1084;
+    }
+  yy1094:
+    ++p;
+    yych = *p;
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1084;
+      if (yych <= '\t')
+        goto yy1094;
+      if (yych >= '\v')
+        goto yy1084;
+    } else {
+      if (yych <= '\r')
+        goto yy1096;
+      if (yych == ' ')
+        goto yy1094;
+      goto yy1084;
+    }
+  yy1096:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Scans an entity.
+// Returns number of chars matched.
+bufsize_t _scan_entity(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    yych = *p;
+    if (yych == '&')
+      goto yy1102;
+    ++p;
+  yy1101 : { return 0; }
+  yy1102:
+    yych = *(marker = ++p);
+    if (yych <= '@') {
+      if (yych != '#')
+        goto yy1101;
+    } else {
+      if (yych <= 'Z')
+        goto yy1105;
+      if (yych <= '`')
+        goto yy1101;
+      if (yych <= 'z')
+        goto yy1105;
+      goto yy1101;
+    }
+    yych = *++p;
+    if (yych <= 'W') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1140;
+    } else {
+      if (yych <= 'X')
+        goto yy1139;
+      if (yych == 'x')
+        goto yy1139;
+    }
+  yy1104:
+    p = marker;
+    goto yy1101;
+  yy1105:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych >= ':')
+        goto yy1104;
+    } else {
+      if (yych <= 'Z')
+        goto yy1106;
+      if (yych <= '`')
+        goto yy1104;
+      if (yych >= '{')
+        goto yy1104;
+    }
+  yy1106:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1109;
+      if (yych <= ':')
+        goto yy1104;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+        goto yy1109;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych <= 'z')
+          goto yy1109;
+        goto yy1104;
+      }
+    }
+  yy1107:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1109:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1110;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1110:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1111;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1111:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1112;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1112:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1113;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1113:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1114;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1114:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1115;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1115:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1116;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1116:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1117;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1117:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1118;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1118:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1119;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1119:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1120;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1120:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1121;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1121:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1122;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1122:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1123;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1123:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1124;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1124:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1125;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1125:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1126;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1126:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1127;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1127:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1128;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1128:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1129;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1129:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1130;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1130:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1131;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1131:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1132;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1132:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1133;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1133:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1134;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1134:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1135;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1135:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1136;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1136:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1137;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1137:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1138;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= '{')
+          goto yy1104;
+      }
+    }
+  yy1138:
+    yych = *++p;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1139:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1147;
+      goto yy1104;
+    } else {
+      if (yych <= 'F')
+        goto yy1147;
+      if (yych <= '`')
+        goto yy1104;
+      if (yych <= 'f')
+        goto yy1147;
+      goto yy1104;
+    }
+  yy1140:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1141;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1141:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1142;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1142:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1143;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1143:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1144;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1144:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1145;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1145:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1146;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1146:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy1104;
+    if (yych <= '9')
+      goto yy1138;
+    if (yych == ';')
+      goto yy1107;
+    goto yy1104;
+  yy1147:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1148;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= 'g')
+          goto yy1104;
+      }
+    }
+  yy1148:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1149;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= 'g')
+          goto yy1104;
+      }
+    }
+  yy1149:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1150;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= 'g')
+          goto yy1104;
+      }
+    }
+  yy1150:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1151;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= 'g')
+          goto yy1104;
+      }
+    }
+  yy1151:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1152;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= 'g')
+          goto yy1104;
+      }
+    }
+  yy1152:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1153;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych >= 'g')
+          goto yy1104;
+      }
+    }
+  yy1153:
+    ++p;
+    if ((yych = *p) <= ';') {
+      if (yych <= '/')
+        goto yy1104;
+      if (yych <= '9')
+        goto yy1138;
+      if (yych <= ':')
+        goto yy1104;
+      goto yy1107;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy1104;
+        goto yy1138;
+      } else {
+        if (yych <= '`')
+          goto yy1104;
+        if (yych <= 'f')
+          goto yy1138;
+        goto yy1104;
+      }
+    }
+  }
+}
+
+// Returns positive value if a URL begins in a way that is potentially
+// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
+bufsize_t _scan_dangerous_url(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    yych = *p;
+    if (yych <= 'V') {
+      if (yych <= 'F') {
+        if (yych == 'D')
+          goto yy1158;
+        if (yych >= 'F')
+          goto yy1159;
+      } else {
+        if (yych == 'J')
+          goto yy1160;
+        if (yych >= 'V')
+          goto yy1161;
+      }
+    } else {
+      if (yych <= 'f') {
+        if (yych == 'd')
+          goto yy1158;
+        if (yych >= 'f')
+          goto yy1159;
+      } else {
+        if (yych <= 'j') {
+          if (yych >= 'j')
+            goto yy1160;
+        } else {
+          if (yych == 'v')
+            goto yy1161;
+        }
+      }
+    }
+    ++p;
+  yy1157 : { return 0; }
+  yy1158:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'A')
+      goto yy1184;
+    if (yych == 'a')
+      goto yy1184;
+    goto yy1157;
+  yy1159:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'I')
+      goto yy1181;
+    if (yych == 'i')
+      goto yy1181;
+    goto yy1157;
+  yy1160:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'A')
+      goto yy1172;
+    if (yych == 'a')
+      goto yy1172;
+    goto yy1157;
+  yy1161:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'B')
+      goto yy1162;
+    if (yych != 'b')
+      goto yy1157;
+  yy1162:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy1164;
+    if (yych == 's')
+      goto yy1164;
+  yy1163:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy1157;
+    } else {
+      goto yy1171;
+    }
+  yy1164:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy1165;
+    if (yych != 'c')
+      goto yy1163;
+  yy1165:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy1166;
+    if (yych != 'r')
+      goto yy1163;
+  yy1166:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy1167;
+    if (yych != 'i')
+      goto yy1163;
+  yy1167:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy1168;
+    if (yych != 'p')
+      goto yy1163;
+  yy1168:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy1169;
+    if (yych != 't')
+      goto yy1163;
+  yy1169:
+    yych = *++p;
+    if (yych != ':')
+      goto yy1163;
+  yy1170:
+    ++p;
+  yy1171 : { return (bufsize_t)(p - start); }
+  yy1172:
+    yych = *++p;
+    if (yych == 'V')
+      goto yy1173;
+    if (yych != 'v')
+      goto yy1163;
+  yy1173:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy1174;
+    if (yych != 'a')
+      goto yy1163;
+  yy1174:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy1175;
+    if (yych != 's')
+      goto yy1163;
+  yy1175:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy1176;
+    if (yych != 'c')
+      goto yy1163;
+  yy1176:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy1177;
+    if (yych != 'r')
+      goto yy1163;
+  yy1177:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy1178;
+    if (yych != 'i')
+      goto yy1163;
+  yy1178:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy1179;
+    if (yych != 'p')
+      goto yy1163;
+  yy1179:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy1180;
+    if (yych != 't')
+      goto yy1163;
+  yy1180:
+    yych = *++p;
+    if (yych == ':')
+      goto yy1170;
+    goto yy1163;
+  yy1181:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy1182;
+    if (yych != 'l')
+      goto yy1163;
+  yy1182:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy1183;
+    if (yych != 'e')
+      goto yy1163;
+  yy1183:
+    yych = *++p;
+    if (yych == ':')
+      goto yy1170;
+    goto yy1163;
+  yy1184:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy1185;
+    if (yych != 't')
+      goto yy1163;
+  yy1185:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy1186;
+    if (yych != 'a')
+      goto yy1163;
+  yy1186:
+    yych = *++p;
+    if (yych != ':')
+      goto yy1163;
+    yyaccept = 1;
+    yych = *(marker = ++p);
+    if (yych == 'I')
+      goto yy1188;
+    if (yych != 'i')
+      goto yy1171;
+  yy1188:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy1189;
+    if (yych != 'm')
+      goto yy1163;
+  yy1189:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy1190;
+    if (yych != 'a')
+      goto yy1163;
+  yy1190:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy1191;
+    if (yych != 'g')
+      goto yy1163;
+  yy1191:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy1192;
+    if (yych != 'e')
+      goto yy1163;
+  yy1192:
+    yych = *++p;
+    if (yych != '/')
+      goto yy1163;
+    yych = *++p;
+    if (yych <= 'W') {
+      if (yych <= 'J') {
+        if (yych == 'G')
+          goto yy1195;
+        if (yych <= 'I')
+          goto yy1163;
+        goto yy1196;
+      } else {
+        if (yych == 'P')
+          goto yy1194;
+        if (yych <= 'V')
+          goto yy1163;
+        goto yy1197;
+      }
+    } else {
+      if (yych <= 'j') {
+        if (yych == 'g')
+          goto yy1195;
+        if (yych <= 'i')
+          goto yy1163;
+        goto yy1196;
+      } else {
+        if (yych <= 'p') {
+          if (yych <= 'o')
+            goto yy1163;
+        } else {
+          if (yych == 'w')
+            goto yy1197;
+          goto yy1163;
+        }
+      }
+    }
+  yy1194:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy1205;
+    if (yych == 'n')
+      goto yy1205;
+    goto yy1163;
+  yy1195:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy1204;
+    if (yych == 'i')
+      goto yy1204;
+    goto yy1163;
+  yy1196:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy1202;
+    if (yych == 'p')
+      goto yy1202;
+    goto yy1163;
+  yy1197:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy1198;
+    if (yych != 'e')
+      goto yy1163;
+  yy1198:
+    yych = *++p;
+    if (yych == 'B')
+      goto yy1199;
+    if (yych != 'b')
+      goto yy1163;
+  yy1199:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy1200;
+    if (yych != 'p')
+      goto yy1163;
+  yy1200:
+    ++p;
+    { return 0; }
+  yy1202:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy1203;
+    if (yych != 'e')
+      goto yy1163;
+  yy1203:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy1200;
+    if (yych == 'g')
+      goto yy1200;
+    goto yy1163;
+  yy1204:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy1200;
+    if (yych == 'f')
+      goto yy1200;
+    goto yy1163;
+  yy1205:
+    ++p;
+    if ((yych = *p) == 'G')
+      goto yy1200;
+    if (yych == 'g')
+      goto yy1200;
+    goto yy1163;
   }
 }
diff --git a/cbits/scanners.h b/cbits/scanners.h
--- a/cbits/scanners.h
+++ b/cbits/scanners.h
@@ -18,7 +18,6 @@
 bufsize_t _scan_html_block_end_3(const unsigned char *p);
 bufsize_t _scan_html_block_end_4(const unsigned char *p);
 bufsize_t _scan_html_block_end_5(const unsigned char *p);
-bufsize_t _scan_link_url(const unsigned char *p);
 bufsize_t _scan_link_title(const unsigned char *p);
 bufsize_t _scan_spacechars(const unsigned char *p);
 bufsize_t _scan_atx_heading_start(const unsigned char *p);
@@ -40,7 +39,6 @@
 #define scan_html_block_end_3(c, n) _scan_at(&_scan_html_block_end_3, c, n)
 #define scan_html_block_end_4(c, n) _scan_at(&_scan_html_block_end_4, c, n)
 #define scan_html_block_end_5(c, n) _scan_at(&_scan_html_block_end_5, c, n)
-#define scan_link_url(c, n) _scan_at(&_scan_link_url, c, n)
 #define scan_link_title(c, n) _scan_at(&_scan_link_title, c, n)
 #define scan_spacechars(c, n) _scan_at(&_scan_spacechars, c, n)
 #define scan_atx_heading_start(c, n) _scan_at(&_scan_atx_heading_start, c, n)
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+cmark 0.5.5.1 (02 Aug 2017)
+
+  * Update to cmark 0.28.0.
+
 cmark 0.5.5.1 (20 Mar 2017)
 
   * Update version bound for HUnit.
diff --git a/cmark.cabal b/cmark.cabal
--- a/cmark.cabal
+++ b/cmark.cabal
@@ -1,12 +1,12 @@
 name:                cmark
-version:             0.5.5.1
+version:             0.5.6
 synopsis:            Fast, accurate CommonMark (Markdown) parser and renderer
 description:
   This package provides Haskell bindings for
   <https://github.com/jgm/cmark libcmark>, the reference
   parser for <http://commonmark.org CommonMark>, a fully
   specified variant of Markdown. It includes sources for
-  libcmark (0.27.1) and does not require prior installation of the
+  libcmark (0.28.0) and does not require prior installation of the
   C library.
 
 homepage:            https://github.com/jgm/cmark-hs
@@ -14,7 +14,7 @@
 license-file:        LICENSE
 author:              John MacFarlane
 maintainer:          jgm@berkeley.edu
-copyright:           (C) 2015 John MacFarlane
+copyright:           (C) 2015--17 John MacFarlane
 category:            Text
 tested-with:         GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.2, GHC == 7.10.3
 build-type:          Simple
