cmark

My personal build of CMark ✏️

Commit
c9004ffe784577c39b680096883bc8f90524bf8a
Parent
10d6247fbb2ae7f9c3e4e7e75384bcb990d83464
Author
John MacFarlane <jgm@berkeley.edu>
Date

Fixed edge case with escaped parens in link destination.

Closes #97.

This was also checked against the #82 case with asan.

Diffstat

2 files changed, 4273 insertions, 3676 deletions

Status File Name N° Changes Insertions Deletions
Modified src/scanners.c 7947 4272 3675
Modified src/scanners.re 2 1 1
diff --git a/src/scanners.c b/src/scanners.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 */
+/* Generated by re2c 0.14.3 */
 #include <stdlib.h>
 #include "chunk.h"
 #include "scanners.h"
@@ -28,6 +28,7 @@ bufsize_t _scan_scheme(const unsigned char *p) {
 
   {
     unsigned char yych;
+
     yych = *(marker = p);
     if (yych <= 0x7F) {
       if (yych <= ' ') {
@@ -2073,14 +2074,14 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy119;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
-        if (yych >= ':')
-          goto yy107;
+        if (yych <= '9')
+          goto yy119;
+        goto yy107;
       }
     } else {
       if (yych <= 'Z') {
@@ -2088,61 +2089,62 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
+        goto yy119;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy119;
+        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;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy247;
+      if (yych <= '/')
         goto yy107;
-      }
+      goto yy248;
     } else {
       if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy247;
+        goto yy248;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy247;
+          goto yy248;
         goto yy107;
       }
     }
   yy119:
     yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy248;
-      if (yych <= '/')
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy247;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy248;
         goto yy107;
-      goto yy247;
+      }
     } else {
       if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy247;
+        goto yy248;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy247;
+          goto yy248;
         goto yy107;
       }
     }
@@ -2174,14 +2176,14 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy125;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
-        if (yych >= ':')
-          goto yy107;
+        if (yych <= '9')
+          goto yy125;
+        goto yy107;
       }
     } else {
       if (yych <= 'Z') {
@@ -2189,27 +2191,50 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
+        goto yy125;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
+        if (yych <= 'z')
+          goto yy125;
+        goto yy107;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy126;
+      if (yych <= '/')
+        goto yy107;
+      goto yy127;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+        goto yy127;
+      } else {
+        if (yych <= '`')
           goto yy107;
+        if (yych <= 'z')
+          goto yy127;
+        goto yy107;
       }
     }
+  yy125:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy127;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy126;
+          goto yy127;
         goto yy107;
       }
     } else {
@@ -2218,49 +2243,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy126;
+        goto yy127;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy126;
+          goto yy127;
         goto yy107;
       }
     }
-  yy125:
+  yy126:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy127;
+        goto yy128;
       if (yych <= '/')
         goto yy107;
+      goto yy129;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy129;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy129;
+        goto yy107;
       }
     }
-  yy126:
+  yy127:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy129;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy128;
+          goto yy129;
         goto yy107;
       }
     } else {
@@ -2269,49 +2296,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy128;
+        goto yy129;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy128;
+          goto yy129;
         goto yy107;
       }
     }
-  yy127:
+  yy128:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy129;
+        goto yy130;
       if (yych <= '/')
         goto yy107;
+      goto yy131;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy131;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy131;
+        goto yy107;
       }
     }
-  yy128:
+  yy129:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy131;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy130;
+          goto yy131;
         goto yy107;
       }
     } else {
@@ -2320,49 +2349,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy130;
+        goto yy131;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy130;
+          goto yy131;
         goto yy107;
       }
     }
-  yy129:
+  yy130:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy131;
+        goto yy132;
       if (yych <= '/')
         goto yy107;
+      goto yy133;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy133;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy133;
+        goto yy107;
       }
     }
-  yy130:
+  yy131:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy133;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy132;
+          goto yy133;
         goto yy107;
       }
     } else {
@@ -2371,49 +2402,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy132;
+        goto yy133;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy132;
+          goto yy133;
         goto yy107;
       }
     }
-  yy131:
+  yy132:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy133;
+        goto yy134;
       if (yych <= '/')
         goto yy107;
+      goto yy135;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy135;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy135;
+        goto yy107;
       }
     }
-  yy132:
+  yy133:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy135;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy134;
+          goto yy135;
         goto yy107;
       }
     } else {
@@ -2422,49 +2455,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy134;
+        goto yy135;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy134;
+          goto yy135;
         goto yy107;
       }
     }
-  yy133:
+  yy134:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy135;
+        goto yy136;
       if (yych <= '/')
         goto yy107;
+      goto yy137;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy137;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy137;
+        goto yy107;
       }
     }
-  yy134:
+  yy135:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy137;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy136;
+          goto yy137;
         goto yy107;
       }
     } else {
@@ -2473,49 +2508,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy136;
+        goto yy137;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy136;
+          goto yy137;
         goto yy107;
       }
     }
-  yy135:
+  yy136:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy137;
+        goto yy138;
       if (yych <= '/')
         goto yy107;
+      goto yy139;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy139;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy139;
+        goto yy107;
       }
     }
-  yy136:
+  yy137:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy139;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy138;
+          goto yy139;
         goto yy107;
       }
     } else {
@@ -2524,49 +2561,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy138;
+        goto yy139;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy138;
+          goto yy139;
         goto yy107;
       }
     }
-  yy137:
+  yy138:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy139;
+        goto yy140;
       if (yych <= '/')
         goto yy107;
+      goto yy141;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy141;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy141;
+        goto yy107;
       }
     }
-  yy138:
+  yy139:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy141;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy140;
+          goto yy141;
         goto yy107;
       }
     } else {
@@ -2575,49 +2614,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy140;
+        goto yy141;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy140;
+          goto yy141;
         goto yy107;
       }
     }
-  yy139:
+  yy140:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy141;
+        goto yy142;
       if (yych <= '/')
         goto yy107;
+      goto yy143;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy143;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy143;
+        goto yy107;
       }
     }
-  yy140:
+  yy141:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy143;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy142;
+          goto yy143;
         goto yy107;
       }
     } else {
@@ -2626,49 +2667,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy142;
+        goto yy143;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy142;
+          goto yy143;
         goto yy107;
       }
     }
-  yy141:
+  yy142:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy143;
+        goto yy144;
       if (yych <= '/')
         goto yy107;
+      goto yy145;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy145;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy145;
+        goto yy107;
       }
     }
-  yy142:
+  yy143:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy145;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy144;
+          goto yy145;
         goto yy107;
       }
     } else {
@@ -2677,49 +2720,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy144;
+        goto yy145;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy144;
+          goto yy145;
         goto yy107;
       }
     }
-  yy143:
+  yy144:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy145;
+        goto yy146;
       if (yych <= '/')
         goto yy107;
+      goto yy147;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy147;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy147;
+        goto yy107;
       }
     }
-  yy144:
+  yy145:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy147;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy146;
+          goto yy147;
         goto yy107;
       }
     } else {
@@ -2728,49 +2773,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy146;
+        goto yy147;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy146;
+          goto yy147;
         goto yy107;
       }
     }
-  yy145:
+  yy146:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy147;
+        goto yy148;
       if (yych <= '/')
         goto yy107;
+      goto yy149;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy149;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy149;
+        goto yy107;
       }
     }
-  yy146:
+  yy147:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy149;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy148;
+          goto yy149;
         goto yy107;
       }
     } else {
@@ -2779,49 +2826,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy148;
+        goto yy149;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy148;
+          goto yy149;
         goto yy107;
       }
     }
-  yy147:
+  yy148:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy149;
+        goto yy150;
       if (yych <= '/')
         goto yy107;
+      goto yy151;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy151;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy151;
+        goto yy107;
       }
     }
-  yy148:
+  yy149:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy151;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy150;
+          goto yy151;
         goto yy107;
       }
     } else {
@@ -2830,49 +2879,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy150;
+        goto yy151;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy150;
+          goto yy151;
         goto yy107;
       }
     }
-  yy149:
+  yy150:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy151;
+        goto yy152;
       if (yych <= '/')
         goto yy107;
+      goto yy153;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy153;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy153;
+        goto yy107;
       }
     }
-  yy150:
+  yy151:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy153;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy152;
+          goto yy153;
         goto yy107;
       }
     } else {
@@ -2881,49 +2932,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy152;
+        goto yy153;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy152;
+          goto yy153;
         goto yy107;
       }
     }
-  yy151:
+  yy152:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy153;
+        goto yy154;
       if (yych <= '/')
         goto yy107;
+      goto yy155;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy155;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy155;
+        goto yy107;
       }
     }
-  yy152:
+  yy153:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy155;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy154;
+          goto yy155;
         goto yy107;
       }
     } else {
@@ -2932,49 +2985,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy154;
+        goto yy155;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy154;
+          goto yy155;
         goto yy107;
       }
     }
-  yy153:
+  yy154:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy155;
+        goto yy156;
       if (yych <= '/')
         goto yy107;
+      goto yy157;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy157;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy157;
+        goto yy107;
       }
     }
-  yy154:
+  yy155:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy157;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy156;
+          goto yy157;
         goto yy107;
       }
     } else {
@@ -2983,49 +3038,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy156;
+        goto yy157;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy156;
+          goto yy157;
         goto yy107;
       }
     }
-  yy155:
+  yy156:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy157;
+        goto yy158;
       if (yych <= '/')
         goto yy107;
+      goto yy159;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy159;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy159;
+        goto yy107;
       }
     }
-  yy156:
+  yy157:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy159;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy158;
+          goto yy159;
         goto yy107;
       }
     } else {
@@ -3034,49 +3091,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy158;
+        goto yy159;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy158;
+          goto yy159;
         goto yy107;
       }
     }
-  yy157:
+  yy158:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy159;
+        goto yy160;
       if (yych <= '/')
         goto yy107;
+      goto yy161;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy161;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy161;
+        goto yy107;
       }
     }
-  yy158:
+  yy159:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy161;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy160;
+          goto yy161;
         goto yy107;
       }
     } else {
@@ -3085,49 +3144,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy160;
+        goto yy161;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy160;
+          goto yy161;
         goto yy107;
       }
     }
-  yy159:
+  yy160:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy161;
+        goto yy162;
       if (yych <= '/')
         goto yy107;
+      goto yy163;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy163;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy163;
+        goto yy107;
       }
     }
-  yy160:
+  yy161:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy163;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy162;
+          goto yy163;
         goto yy107;
       }
     } else {
@@ -3136,49 +3197,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy162;
+        goto yy163;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy162;
+          goto yy163;
         goto yy107;
       }
     }
-  yy161:
+  yy162:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy163;
+        goto yy164;
       if (yych <= '/')
         goto yy107;
+      goto yy165;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy165;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy165;
+        goto yy107;
       }
     }
-  yy162:
+  yy163:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy165;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy164;
+          goto yy165;
         goto yy107;
       }
     } else {
@@ -3187,49 +3250,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy164;
+        goto yy165;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy164;
+          goto yy165;
         goto yy107;
       }
     }
-  yy163:
+  yy164:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy165;
+        goto yy166;
       if (yych <= '/')
         goto yy107;
+      goto yy167;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy167;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy167;
+        goto yy107;
       }
     }
-  yy164:
+  yy165:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy167;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy166;
+          goto yy167;
         goto yy107;
       }
     } else {
@@ -3238,49 +3303,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy166;
+        goto yy167;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy166;
+          goto yy167;
         goto yy107;
       }
     }
-  yy165:
+  yy166:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy167;
+        goto yy168;
       if (yych <= '/')
         goto yy107;
+      goto yy169;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy169;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy169;
+        goto yy107;
       }
     }
-  yy166:
+  yy167:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy169;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy168;
+          goto yy169;
         goto yy107;
       }
     } else {
@@ -3289,49 +3356,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy168;
+        goto yy169;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy168;
+          goto yy169;
         goto yy107;
       }
     }
-  yy167:
+  yy168:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy169;
+        goto yy170;
       if (yych <= '/')
         goto yy107;
+      goto yy171;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy171;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy171;
+        goto yy107;
       }
     }
-  yy168:
+  yy169:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy171;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy170;
+          goto yy171;
         goto yy107;
       }
     } else {
@@ -3340,49 +3409,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy170;
+        goto yy171;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy170;
+          goto yy171;
         goto yy107;
       }
     }
-  yy169:
+  yy170:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy171;
+        goto yy172;
       if (yych <= '/')
         goto yy107;
+      goto yy173;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy173;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy173;
+        goto yy107;
       }
     }
-  yy170:
+  yy171:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy173;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy172;
+          goto yy173;
         goto yy107;
       }
     } else {
@@ -3391,49 +3462,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy172;
+        goto yy173;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy172;
+          goto yy173;
         goto yy107;
       }
     }
-  yy171:
+  yy172:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy173;
+        goto yy174;
       if (yych <= '/')
         goto yy107;
+      goto yy175;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy175;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy175;
+        goto yy107;
       }
     }
-  yy172:
+  yy173:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy175;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy174;
+          goto yy175;
         goto yy107;
       }
     } else {
@@ -3442,49 +3515,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy174;
+        goto yy175;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy174;
+          goto yy175;
         goto yy107;
       }
     }
-  yy173:
+  yy174:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy175;
+        goto yy176;
       if (yych <= '/')
         goto yy107;
+      goto yy177;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy177;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy177;
+        goto yy107;
       }
     }
-  yy174:
+  yy175:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy177;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy176;
+          goto yy177;
         goto yy107;
       }
     } else {
@@ -3493,49 +3568,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy176;
+        goto yy177;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy176;
+          goto yy177;
         goto yy107;
       }
     }
-  yy175:
+  yy176:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy177;
+        goto yy178;
       if (yych <= '/')
         goto yy107;
+      goto yy179;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy179;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy179;
+        goto yy107;
       }
     }
-  yy176:
+  yy177:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy179;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy178;
+          goto yy179;
         goto yy107;
       }
     } else {
@@ -3544,49 +3621,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy178;
+        goto yy179;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy178;
+          goto yy179;
         goto yy107;
       }
     }
-  yy177:
+  yy178:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy179;
+        goto yy180;
       if (yych <= '/')
         goto yy107;
+      goto yy181;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy181;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy181;
+        goto yy107;
       }
     }
-  yy178:
+  yy179:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy181;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy180;
+          goto yy181;
         goto yy107;
       }
     } else {
@@ -3595,49 +3674,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy180;
+        goto yy181;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy180;
+          goto yy181;
         goto yy107;
       }
     }
-  yy179:
+  yy180:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy181;
+        goto yy182;
       if (yych <= '/')
         goto yy107;
+      goto yy183;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy183;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy183;
+        goto yy107;
       }
     }
-  yy180:
+  yy181:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy183;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy182;
+          goto yy183;
         goto yy107;
       }
     } else {
@@ -3646,49 +3727,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy182;
+        goto yy183;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy182;
+          goto yy183;
         goto yy107;
       }
     }
-  yy181:
+  yy182:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy183;
+        goto yy184;
       if (yych <= '/')
         goto yy107;
+      goto yy185;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy185;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy185;
+        goto yy107;
       }
     }
-  yy182:
+  yy183:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy185;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy184;
+          goto yy185;
         goto yy107;
       }
     } else {
@@ -3697,49 +3780,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy184;
+        goto yy185;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy184;
+          goto yy185;
         goto yy107;
       }
     }
-  yy183:
+  yy184:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy185;
+        goto yy186;
       if (yych <= '/')
         goto yy107;
+      goto yy187;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy187;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy187;
+        goto yy107;
       }
     }
-  yy184:
+  yy185:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy187;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy186;
+          goto yy187;
         goto yy107;
       }
     } else {
@@ -3748,49 +3833,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy186;
+        goto yy187;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy186;
+          goto yy187;
         goto yy107;
       }
     }
-  yy185:
+  yy186:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy187;
+        goto yy188;
       if (yych <= '/')
         goto yy107;
+      goto yy189;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy189;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy189;
+        goto yy107;
       }
     }
-  yy186:
+  yy187:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy189;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy188;
+          goto yy189;
         goto yy107;
       }
     } else {
@@ -3799,49 +3886,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy188;
+        goto yy189;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy188;
+          goto yy189;
         goto yy107;
       }
     }
-  yy187:
+  yy188:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy189;
+        goto yy190;
       if (yych <= '/')
         goto yy107;
+      goto yy191;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy191;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy191;
+        goto yy107;
       }
     }
-  yy188:
+  yy189:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy191;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy190;
+          goto yy191;
         goto yy107;
       }
     } else {
@@ -3850,49 +3939,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy190;
+        goto yy191;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy190;
+          goto yy191;
         goto yy107;
       }
     }
-  yy189:
+  yy190:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy191;
+        goto yy192;
       if (yych <= '/')
         goto yy107;
+      goto yy193;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy193;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy193;
+        goto yy107;
       }
     }
-  yy190:
+  yy191:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy193;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy192;
+          goto yy193;
         goto yy107;
       }
     } else {
@@ -3901,49 +3992,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy192;
+        goto yy193;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy192;
+          goto yy193;
         goto yy107;
       }
     }
-  yy191:
+  yy192:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy193;
+        goto yy194;
       if (yych <= '/')
         goto yy107;
+      goto yy195;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy195;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy195;
+        goto yy107;
       }
     }
-  yy192:
+  yy193:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy195;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy194;
+          goto yy195;
         goto yy107;
       }
     } else {
@@ -3952,49 +4045,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy194;
+        goto yy195;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy194;
+          goto yy195;
         goto yy107;
       }
     }
-  yy193:
+  yy194:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy195;
+        goto yy196;
       if (yych <= '/')
         goto yy107;
+      goto yy197;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy197;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy197;
+        goto yy107;
       }
     }
-  yy194:
+  yy195:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy197;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy196;
+          goto yy197;
         goto yy107;
       }
     } else {
@@ -4003,49 +4098,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy196;
+        goto yy197;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy196;
+          goto yy197;
         goto yy107;
       }
     }
-  yy195:
+  yy196:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy197;
+        goto yy198;
       if (yych <= '/')
         goto yy107;
+      goto yy199;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy199;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy199;
+        goto yy107;
       }
     }
-  yy196:
+  yy197:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy199;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy198;
+          goto yy199;
         goto yy107;
       }
     } else {
@@ -4054,49 +4151,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy198;
+        goto yy199;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy198;
+          goto yy199;
         goto yy107;
       }
     }
-  yy197:
+  yy198:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy199;
+        goto yy200;
       if (yych <= '/')
         goto yy107;
+      goto yy201;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy201;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy201;
+        goto yy107;
       }
     }
-  yy198:
+  yy199:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy201;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy200;
+          goto yy201;
         goto yy107;
       }
     } else {
@@ -4105,49 +4204,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy200;
+        goto yy201;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy200;
+          goto yy201;
         goto yy107;
       }
     }
-  yy199:
+  yy200:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy201;
+        goto yy202;
       if (yych <= '/')
         goto yy107;
+      goto yy203;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy203;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy203;
+        goto yy107;
       }
     }
-  yy200:
+  yy201:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy203;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy202;
+          goto yy203;
         goto yy107;
       }
     } else {
@@ -4156,49 +4257,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy202;
+        goto yy203;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy202;
+          goto yy203;
         goto yy107;
       }
     }
-  yy201:
+  yy202:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy203;
+        goto yy204;
       if (yych <= '/')
         goto yy107;
+      goto yy205;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy205;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy205;
+        goto yy107;
       }
     }
-  yy202:
+  yy203:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy205;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy204;
+          goto yy205;
         goto yy107;
       }
     } else {
@@ -4207,49 +4310,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy204;
+        goto yy205;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy204;
+          goto yy205;
         goto yy107;
       }
     }
-  yy203:
+  yy204:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy205;
+        goto yy206;
       if (yych <= '/')
         goto yy107;
+      goto yy207;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy207;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy207;
+        goto yy107;
       }
     }
-  yy204:
+  yy205:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy207;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy206;
+          goto yy207;
         goto yy107;
       }
     } else {
@@ -4258,49 +4363,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy206;
+        goto yy207;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy206;
+          goto yy207;
         goto yy107;
       }
     }
-  yy205:
+  yy206:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy207;
+        goto yy208;
       if (yych <= '/')
         goto yy107;
+      goto yy209;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy209;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy209;
+        goto yy107;
       }
     }
-  yy206:
+  yy207:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy209;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy208;
+          goto yy209;
         goto yy107;
       }
     } else {
@@ -4309,49 +4416,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy208;
+        goto yy209;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy208;
+          goto yy209;
         goto yy107;
       }
     }
-  yy207:
+  yy208:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy209;
+        goto yy210;
       if (yych <= '/')
         goto yy107;
+      goto yy211;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy211;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy211;
+        goto yy107;
       }
     }
-  yy208:
+  yy209:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy211;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy210;
+          goto yy211;
         goto yy107;
       }
     } else {
@@ -4360,49 +4469,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy210;
+        goto yy211;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy210;
+          goto yy211;
         goto yy107;
       }
     }
-  yy209:
+  yy210:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy211;
+        goto yy212;
       if (yych <= '/')
         goto yy107;
+      goto yy213;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy213;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy213;
+        goto yy107;
       }
     }
-  yy210:
+  yy211:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy213;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy212;
+          goto yy213;
         goto yy107;
       }
     } else {
@@ -4411,49 +4522,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy212;
+        goto yy213;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy212;
+          goto yy213;
         goto yy107;
       }
     }
-  yy211:
+  yy212:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy213;
+        goto yy214;
       if (yych <= '/')
         goto yy107;
+      goto yy215;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy215;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy215;
+        goto yy107;
       }
     }
-  yy212:
+  yy213:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy215;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy214;
+          goto yy215;
         goto yy107;
       }
     } else {
@@ -4462,49 +4575,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy214;
+        goto yy215;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy214;
+          goto yy215;
         goto yy107;
       }
     }
-  yy213:
+  yy214:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy215;
+        goto yy216;
       if (yych <= '/')
         goto yy107;
+      goto yy217;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy217;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy217;
+        goto yy107;
       }
     }
-  yy214:
+  yy215:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy217;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy216;
+          goto yy217;
         goto yy107;
       }
     } else {
@@ -4513,49 +4628,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy216;
+        goto yy217;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy216;
+          goto yy217;
         goto yy107;
       }
     }
-  yy215:
+  yy216:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy217;
+        goto yy218;
       if (yych <= '/')
         goto yy107;
+      goto yy219;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy219;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy219;
+        goto yy107;
       }
     }
-  yy216:
+  yy217:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy219;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy218;
+          goto yy219;
         goto yy107;
       }
     } else {
@@ -4564,49 +4681,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy218;
+        goto yy219;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy218;
+          goto yy219;
         goto yy107;
       }
     }
-  yy217:
+  yy218:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy219;
+        goto yy220;
       if (yych <= '/')
         goto yy107;
+      goto yy221;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy221;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy221;
+        goto yy107;
       }
     }
-  yy218:
+  yy219:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy221;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy220;
+          goto yy221;
         goto yy107;
       }
     } else {
@@ -4615,49 +4734,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy220;
+        goto yy221;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy220;
+          goto yy221;
         goto yy107;
       }
     }
-  yy219:
+  yy220:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy221;
+        goto yy222;
       if (yych <= '/')
         goto yy107;
+      goto yy223;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy223;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy223;
+        goto yy107;
       }
     }
-  yy220:
+  yy221:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy223;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy222;
+          goto yy223;
         goto yy107;
       }
     } else {
@@ -4666,49 +4787,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy222;
+        goto yy223;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy222;
+          goto yy223;
         goto yy107;
       }
     }
-  yy221:
+  yy222:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy223;
+        goto yy224;
       if (yych <= '/')
         goto yy107;
+      goto yy225;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy225;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy225;
+        goto yy107;
       }
     }
-  yy222:
+  yy223:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy225;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy224;
+          goto yy225;
         goto yy107;
       }
     } else {
@@ -4717,49 +4840,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy224;
+        goto yy225;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy224;
+          goto yy225;
         goto yy107;
       }
     }
-  yy223:
+  yy224:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy225;
+        goto yy226;
       if (yych <= '/')
         goto yy107;
+      goto yy227;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy227;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy227;
+        goto yy107;
       }
     }
-  yy224:
+  yy225:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy227;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy226;
+          goto yy227;
         goto yy107;
       }
     } else {
@@ -4768,49 +4893,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy226;
+        goto yy227;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy226;
+          goto yy227;
         goto yy107;
       }
     }
-  yy225:
+  yy226:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy227;
+        goto yy228;
       if (yych <= '/')
         goto yy107;
+      goto yy229;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy229;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy229;
+        goto yy107;
       }
     }
-  yy226:
+  yy227:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy229;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy228;
+          goto yy229;
         goto yy107;
       }
     } else {
@@ -4819,49 +4946,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy228;
+        goto yy229;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy228;
+          goto yy229;
         goto yy107;
       }
     }
-  yy227:
+  yy228:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy229;
+        goto yy230;
       if (yych <= '/')
         goto yy107;
+      goto yy231;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy231;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy231;
+        goto yy107;
       }
     }
-  yy228:
+  yy229:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy231;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy230;
+          goto yy231;
         goto yy107;
       }
     } else {
@@ -4870,49 +4999,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy230;
+        goto yy231;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy230;
+          goto yy231;
         goto yy107;
       }
     }
-  yy229:
+  yy230:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy231;
+        goto yy232;
       if (yych <= '/')
         goto yy107;
+      goto yy233;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy233;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy233;
+        goto yy107;
       }
     }
-  yy230:
+  yy231:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy233;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy232;
+          goto yy233;
         goto yy107;
       }
     } else {
@@ -4921,49 +5052,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy232;
+        goto yy233;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy232;
+          goto yy233;
         goto yy107;
       }
     }
-  yy231:
+  yy232:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy233;
+        goto yy234;
       if (yych <= '/')
         goto yy107;
+      goto yy235;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy235;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy235;
+        goto yy107;
       }
     }
-  yy232:
+  yy233:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy235;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy234;
+          goto yy235;
         goto yy107;
       }
     } else {
@@ -4972,49 +5105,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy234;
+        goto yy235;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy234;
+          goto yy235;
         goto yy107;
       }
     }
-  yy233:
+  yy234:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy235;
+        goto yy236;
       if (yych <= '/')
         goto yy107;
+      goto yy237;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy237;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy237;
+        goto yy107;
       }
     }
-  yy234:
+  yy235:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy237;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy236;
+          goto yy237;
         goto yy107;
       }
     } else {
@@ -5023,49 +5158,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy236;
+        goto yy237;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy236;
+          goto yy237;
         goto yy107;
       }
     }
-  yy235:
+  yy236:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy237;
+        goto yy238;
       if (yych <= '/')
         goto yy107;
+      goto yy239;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy239;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy239;
+        goto yy107;
       }
     }
-  yy236:
+  yy237:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy239;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy238;
+          goto yy239;
         goto yy107;
       }
     } else {
@@ -5074,49 +5211,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy238;
+        goto yy239;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy238;
+          goto yy239;
         goto yy107;
       }
     }
-  yy237:
+  yy238:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy239;
+        goto yy240;
       if (yych <= '/')
         goto yy107;
+      goto yy241;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy241;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy241;
+        goto yy107;
       }
     }
-  yy238:
+  yy239:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy241;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy240;
+          goto yy241;
         goto yy107;
       }
     } else {
@@ -5125,49 +5264,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy240;
+        goto yy241;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy240;
+          goto yy241;
         goto yy107;
       }
     }
-  yy239:
+  yy240:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy241;
+        goto yy242;
       if (yych <= '/')
         goto yy107;
+      goto yy243;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy243;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy243;
+        goto yy107;
       }
     }
-  yy240:
+  yy241:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy243;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy242;
+          goto yy243;
         goto yy107;
       }
     } else {
@@ -5176,49 +5317,51 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy242;
+        goto yy243;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy242;
+          goto yy243;
         goto yy107;
       }
     }
-  yy241:
+  yy242:
     ++p;
     yych = *p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy243;
+        goto yy244;
       if (yych <= '/')
         goto yy107;
+      goto yy245;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy245;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy245;
+        goto yy107;
       }
     }
-  yy242:
+  yy243:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy245;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy244;
+          goto yy245;
         goto yy107;
       }
     } else {
@@ -5227,35 +5370,34 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy244;
+        goto yy245;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy244;
+          goto yy245;
         goto yy107;
       }
     }
-  yy243:
+  yy244:
     ++p;
     yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy245;
+    if (yych <= '@') {
       if (yych <= '/')
         goto yy107;
+      if (yych <= '9')
+        goto yy246;
+      goto yy107;
     } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
+      if (yych <= 'Z')
+        goto yy246;
+      if (yych <= '`')
+        goto yy107;
+      if (yych <= 'z')
+        goto yy246;
+      goto yy107;
     }
-  yy244:
+  yy245:
     ++p;
     yych = *p;
     if (yych <= '=') {
@@ -5266,9 +5408,8 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
       } else {
         if (yych <= '/')
           goto yy107;
-        if (yych <= '9')
-          goto yy246;
-        goto yy107;
+        if (yych >= ':')
+          goto yy107;
       }
     } else {
       if (yych <= 'Z') {
@@ -5276,31 +5417,13 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy246;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych <= 'z')
-          goto yy246;
-        goto yy107;
+        if (yych >= '{')
+          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;
@@ -5311,18 +5434,38 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
     goto yy107;
   yy247:
     yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy250;
-        goto yy120;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy249;
+      if (yych <= '/')
+        goto yy107;
+      goto yy250;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+        goto yy250;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy250;
+        goto yy107;
+      }
+    }
+  yy248:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy249;
+          goto yy250;
         goto yy107;
       }
     } else {
@@ -5331,47 +5474,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy249;
+        goto yy250;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy249;
+          goto yy250;
         goto yy107;
       }
     }
-  yy248:
+  yy249:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy250;
+        goto yy251;
       if (yych <= '/')
         goto yy107;
+      goto yy252;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy252;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy252;
+        goto yy107;
       }
     }
-  yy249:
+  yy250:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy252;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy251;
+          goto yy252;
         goto yy107;
       }
     } else {
@@ -5380,47 +5525,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy251;
+        goto yy252;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy251;
+          goto yy252;
         goto yy107;
       }
     }
-  yy250:
+  yy251:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy252;
+        goto yy253;
       if (yych <= '/')
         goto yy107;
+      goto yy254;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy254;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy254;
+        goto yy107;
       }
     }
-  yy251:
+  yy252:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy254;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy253;
+          goto yy254;
         goto yy107;
       }
     } else {
@@ -5429,47 +5576,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy253;
+        goto yy254;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy253;
+          goto yy254;
         goto yy107;
       }
     }
-  yy252:
+  yy253:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy254;
+        goto yy255;
       if (yych <= '/')
         goto yy107;
+      goto yy256;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy256;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy256;
+        goto yy107;
       }
     }
-  yy253:
+  yy254:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy256;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy255;
+          goto yy256;
         goto yy107;
       }
     } else {
@@ -5478,47 +5627,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy255;
+        goto yy256;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy255;
+          goto yy256;
         goto yy107;
       }
     }
-  yy254:
+  yy255:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy256;
+        goto yy257;
       if (yych <= '/')
         goto yy107;
+      goto yy258;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy258;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy258;
+        goto yy107;
       }
     }
-  yy255:
+  yy256:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy258;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy257;
+          goto yy258;
         goto yy107;
       }
     } else {
@@ -5527,47 +5678,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy257;
+        goto yy258;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy257;
+          goto yy258;
         goto yy107;
       }
     }
-  yy256:
+  yy257:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy258;
+        goto yy259;
       if (yych <= '/')
         goto yy107;
+      goto yy260;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy260;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy260;
+        goto yy107;
       }
     }
-  yy257:
+  yy258:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy260;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy259;
+          goto yy260;
         goto yy107;
       }
     } else {
@@ -5576,47 +5729,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy259;
+        goto yy260;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy259;
+          goto yy260;
         goto yy107;
       }
     }
-  yy258:
+  yy259:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy260;
+        goto yy261;
       if (yych <= '/')
         goto yy107;
+      goto yy262;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy262;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy262;
+        goto yy107;
       }
     }
-  yy259:
+  yy260:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy262;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy261;
+          goto yy262;
         goto yy107;
       }
     } else {
@@ -5625,47 +5780,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy261;
+        goto yy262;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy261;
+          goto yy262;
         goto yy107;
       }
     }
-  yy260:
+  yy261:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy262;
+        goto yy263;
       if (yych <= '/')
         goto yy107;
+      goto yy264;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy264;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy264;
+        goto yy107;
       }
     }
-  yy261:
+  yy262:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy264;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy263;
+          goto yy264;
         goto yy107;
       }
     } else {
@@ -5674,47 +5831,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy263;
+        goto yy264;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy263;
+          goto yy264;
         goto yy107;
       }
     }
-  yy262:
+  yy263:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy264;
+        goto yy265;
       if (yych <= '/')
         goto yy107;
+      goto yy266;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy266;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy266;
+        goto yy107;
       }
     }
-  yy263:
+  yy264:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy266;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy265;
+          goto yy266;
         goto yy107;
       }
     } else {
@@ -5723,47 +5882,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy265;
+        goto yy266;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy265;
+          goto yy266;
         goto yy107;
       }
     }
-  yy264:
+  yy265:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy266;
+        goto yy267;
       if (yych <= '/')
         goto yy107;
+      goto yy268;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy268;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy268;
+        goto yy107;
       }
     }
-  yy265:
+  yy266:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy268;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy267;
+          goto yy268;
         goto yy107;
       }
     } else {
@@ -5772,47 +5933,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy267;
+        goto yy268;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy267;
+          goto yy268;
         goto yy107;
       }
     }
-  yy266:
+  yy267:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy268;
+        goto yy269;
       if (yych <= '/')
         goto yy107;
+      goto yy270;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy270;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy270;
+        goto yy107;
       }
     }
-  yy267:
+  yy268:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy270;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy269;
+          goto yy270;
         goto yy107;
       }
     } else {
@@ -5821,47 +5984,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy269;
+        goto yy270;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy269;
+          goto yy270;
         goto yy107;
       }
     }
-  yy268:
+  yy269:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy270;
+        goto yy271;
       if (yych <= '/')
         goto yy107;
+      goto yy272;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy272;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy272;
+        goto yy107;
       }
     }
-  yy269:
+  yy270:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy272;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy271;
+          goto yy272;
         goto yy107;
       }
     } else {
@@ -5870,47 +6035,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy271;
+        goto yy272;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy271;
+          goto yy272;
         goto yy107;
       }
     }
-  yy270:
+  yy271:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy272;
+        goto yy273;
       if (yych <= '/')
         goto yy107;
+      goto yy274;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy274;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy274;
+        goto yy107;
       }
     }
-  yy271:
+  yy272:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy274;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy273;
+          goto yy274;
         goto yy107;
       }
     } else {
@@ -5919,47 +6086,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy273;
+        goto yy274;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy273;
+          goto yy274;
         goto yy107;
       }
     }
-  yy272:
+  yy273:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy274;
+        goto yy275;
       if (yych <= '/')
         goto yy107;
+      goto yy276;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy276;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy276;
+        goto yy107;
       }
     }
-  yy273:
+  yy274:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy276;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy275;
+          goto yy276;
         goto yy107;
       }
     } else {
@@ -5968,47 +6137,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy275;
+        goto yy276;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy275;
+          goto yy276;
         goto yy107;
       }
     }
-  yy274:
+  yy275:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy276;
+        goto yy277;
       if (yych <= '/')
         goto yy107;
+      goto yy278;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy278;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy278;
+        goto yy107;
       }
     }
-  yy275:
+  yy276:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy278;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy277;
+          goto yy278;
         goto yy107;
       }
     } else {
@@ -6017,47 +6188,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy277;
+        goto yy278;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy277;
+          goto yy278;
         goto yy107;
       }
     }
-  yy276:
+  yy277:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy278;
+        goto yy279;
       if (yych <= '/')
         goto yy107;
+      goto yy280;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy280;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy280;
+        goto yy107;
       }
     }
-  yy277:
+  yy278:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy280;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy279;
+          goto yy280;
         goto yy107;
       }
     } else {
@@ -6066,47 +6239,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy279;
+        goto yy280;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy279;
+          goto yy280;
         goto yy107;
       }
     }
-  yy278:
+  yy279:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy280;
+        goto yy281;
       if (yych <= '/')
         goto yy107;
+      goto yy282;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy282;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy282;
+        goto yy107;
       }
     }
-  yy279:
+  yy280:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy282;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy281;
+          goto yy282;
         goto yy107;
       }
     } else {
@@ -6115,47 +6290,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy281;
+        goto yy282;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy281;
+          goto yy282;
         goto yy107;
       }
     }
-  yy280:
+  yy281:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy282;
+        goto yy283;
       if (yych <= '/')
         goto yy107;
+      goto yy284;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy284;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy284;
+        goto yy107;
       }
     }
-  yy281:
+  yy282:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy284;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy283;
+          goto yy284;
         goto yy107;
       }
     } else {
@@ -6164,47 +6341,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy283;
+        goto yy284;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy283;
+          goto yy284;
         goto yy107;
       }
     }
-  yy282:
+  yy283:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy284;
+        goto yy285;
       if (yych <= '/')
         goto yy107;
+      goto yy286;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy286;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy286;
+        goto yy107;
       }
     }
-  yy283:
+  yy284:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy286;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy285;
+          goto yy286;
         goto yy107;
       }
     } else {
@@ -6213,47 +6392,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy285;
+        goto yy286;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy285;
+          goto yy286;
         goto yy107;
       }
     }
-  yy284:
+  yy285:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy286;
+        goto yy287;
       if (yych <= '/')
         goto yy107;
+      goto yy288;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy288;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy288;
+        goto yy107;
       }
     }
-  yy285:
+  yy286:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy288;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy287;
+          goto yy288;
         goto yy107;
       }
     } else {
@@ -6262,47 +6443,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy287;
+        goto yy288;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy287;
+          goto yy288;
         goto yy107;
       }
     }
-  yy286:
+  yy287:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy288;
+        goto yy289;
       if (yych <= '/')
         goto yy107;
+      goto yy290;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy290;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy290;
+        goto yy107;
       }
     }
-  yy287:
+  yy288:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy290;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy289;
+          goto yy290;
         goto yy107;
       }
     } else {
@@ -6311,47 +6494,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy289;
+        goto yy290;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy289;
+          goto yy290;
         goto yy107;
       }
     }
-  yy288:
+  yy289:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy290;
+        goto yy291;
       if (yych <= '/')
         goto yy107;
+      goto yy292;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy292;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy292;
+        goto yy107;
       }
     }
-  yy289:
+  yy290:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy292;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy291;
+          goto yy292;
         goto yy107;
       }
     } else {
@@ -6360,47 +6545,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy291;
+        goto yy292;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy291;
+          goto yy292;
         goto yy107;
       }
     }
-  yy290:
+  yy291:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy292;
+        goto yy293;
       if (yych <= '/')
         goto yy107;
+      goto yy294;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy294;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy294;
+        goto yy107;
       }
     }
-  yy291:
+  yy292:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy294;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy293;
+          goto yy294;
         goto yy107;
       }
     } else {
@@ -6409,47 +6596,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy293;
+        goto yy294;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy293;
+          goto yy294;
         goto yy107;
       }
     }
-  yy292:
+  yy293:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy294;
+        goto yy295;
       if (yych <= '/')
         goto yy107;
+      goto yy296;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy296;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy296;
+        goto yy107;
       }
     }
-  yy293:
+  yy294:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy296;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy295;
+          goto yy296;
         goto yy107;
       }
     } else {
@@ -6458,47 +6647,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy295;
+        goto yy296;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy295;
+          goto yy296;
         goto yy107;
       }
     }
-  yy294:
+  yy295:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy296;
+        goto yy297;
       if (yych <= '/')
         goto yy107;
+      goto yy298;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy298;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy298;
+        goto yy107;
       }
     }
-  yy295:
+  yy296:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy298;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy297;
+          goto yy298;
         goto yy107;
       }
     } else {
@@ -6507,47 +6698,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy297;
+        goto yy298;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy297;
+          goto yy298;
         goto yy107;
       }
     }
-  yy296:
+  yy297:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy298;
+        goto yy299;
       if (yych <= '/')
         goto yy107;
+      goto yy300;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy300;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy300;
+        goto yy107;
       }
     }
-  yy297:
+  yy298:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy300;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy299;
+          goto yy300;
         goto yy107;
       }
     } else {
@@ -6556,47 +6749,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy299;
+        goto yy300;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy299;
+          goto yy300;
         goto yy107;
       }
     }
-  yy298:
+  yy299:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy300;
+        goto yy301;
       if (yych <= '/')
         goto yy107;
+      goto yy302;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy302;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy299:
+        if (yych <= 'z')
+          goto yy302;
+        goto yy107;
+      }
+    }
+  yy300:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy302;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy301;
+          goto yy302;
         goto yy107;
       }
     } else {
@@ -6605,47 +6800,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy301;
+        goto yy302;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy301;
+          goto yy302;
         goto yy107;
       }
     }
-  yy300:
+  yy301:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy302;
+        goto yy303;
       if (yych <= '/')
         goto yy107;
+      goto yy304;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy304;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy304;
+        goto yy107;
       }
     }
-  yy301:
+  yy302:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy304;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy303;
+          goto yy304;
         goto yy107;
       }
     } else {
@@ -6654,47 +6851,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy303;
+        goto yy304;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy303;
+          goto yy304;
         goto yy107;
       }
     }
-  yy302:
+  yy303:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy304;
+        goto yy305;
       if (yych <= '/')
         goto yy107;
+      goto yy306;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy306;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy306;
+        goto yy107;
       }
     }
-  yy303:
+  yy304:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy306;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy305;
+          goto yy306;
         goto yy107;
       }
     } else {
@@ -6703,47 +6902,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy305;
+        goto yy306;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy305;
+          goto yy306;
         goto yy107;
       }
     }
-  yy304:
+  yy305:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy306;
+        goto yy307;
       if (yych <= '/')
         goto yy107;
+      goto yy308;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy308;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy308;
+        goto yy107;
       }
     }
-  yy305:
+  yy306:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy308;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy307;
+          goto yy308;
         goto yy107;
       }
     } else {
@@ -6752,47 +6953,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy307;
+        goto yy308;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy307;
+          goto yy308;
         goto yy107;
       }
     }
-  yy306:
+  yy307:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy308;
+        goto yy309;
       if (yych <= '/')
         goto yy107;
+      goto yy310;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy310;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy310;
+        goto yy107;
       }
     }
-  yy307:
+  yy308:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy310;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy309;
+          goto yy310;
         goto yy107;
       }
     } else {
@@ -6801,47 +7004,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy309;
+        goto yy310;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy309;
+          goto yy310;
         goto yy107;
       }
     }
-  yy308:
+  yy309:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy310;
+        goto yy311;
       if (yych <= '/')
         goto yy107;
+      goto yy312;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy312;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy312;
+        goto yy107;
       }
     }
-  yy309:
+  yy310:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy312;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy311;
+          goto yy312;
         goto yy107;
       }
     } else {
@@ -6850,47 +7055,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy311;
+        goto yy312;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy311;
+          goto yy312;
         goto yy107;
       }
     }
-  yy310:
+  yy311:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy312;
+        goto yy313;
       if (yych <= '/')
         goto yy107;
+      goto yy314;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy314;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy314;
+        goto yy107;
       }
     }
-  yy311:
+  yy312:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy314;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy313;
+          goto yy314;
         goto yy107;
       }
     } else {
@@ -6899,47 +7106,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy313;
+        goto yy314;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy313;
+          goto yy314;
         goto yy107;
       }
     }
-  yy312:
+  yy313:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy314;
+        goto yy315;
       if (yych <= '/')
         goto yy107;
+      goto yy316;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy316;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy316;
+        goto yy107;
       }
     }
-  yy313:
+  yy314:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy316;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy315;
+          goto yy316;
         goto yy107;
       }
     } else {
@@ -6948,47 +7157,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy315;
+        goto yy316;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy315;
+          goto yy316;
         goto yy107;
       }
     }
-  yy314:
+  yy315:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy316;
+        goto yy317;
       if (yych <= '/')
         goto yy107;
+      goto yy318;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy318;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy318;
+        goto yy107;
       }
     }
-  yy315:
+  yy316:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy318;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy317;
+          goto yy318;
         goto yy107;
       }
     } else {
@@ -6997,47 +7208,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy317;
+        goto yy318;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy317;
+          goto yy318;
         goto yy107;
       }
     }
-  yy316:
+  yy317:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy318;
+        goto yy319;
       if (yych <= '/')
         goto yy107;
+      goto yy320;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy320;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy320;
+        goto yy107;
       }
     }
-  yy317:
+  yy318:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy320;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy319;
+          goto yy320;
         goto yy107;
       }
     } else {
@@ -7046,47 +7259,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy319;
+        goto yy320;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy319;
+          goto yy320;
         goto yy107;
       }
     }
-  yy318:
+  yy319:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy320;
+        goto yy321;
       if (yych <= '/')
         goto yy107;
+      goto yy322;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy322;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy322;
+        goto yy107;
       }
     }
-  yy319:
+  yy320:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy322;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy321;
+          goto yy322;
         goto yy107;
       }
     } else {
@@ -7095,47 +7310,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy321;
+        goto yy322;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy321;
+          goto yy322;
         goto yy107;
       }
     }
-  yy320:
+  yy321:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy322;
+        goto yy323;
       if (yych <= '/')
         goto yy107;
+      goto yy324;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy324;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy324;
+        goto yy107;
       }
     }
-  yy321:
+  yy322:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy324;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy323;
+          goto yy324;
         goto yy107;
       }
     } else {
@@ -7144,47 +7361,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy323;
+        goto yy324;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy323;
+          goto yy324;
         goto yy107;
       }
     }
-  yy322:
+  yy323:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy324;
+        goto yy325;
       if (yych <= '/')
         goto yy107;
+      goto yy326;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy326;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy326;
+        goto yy107;
       }
     }
-  yy323:
+  yy324:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy326;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy325;
+          goto yy326;
         goto yy107;
       }
     } else {
@@ -7193,47 +7412,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy325;
+        goto yy326;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy325;
+          goto yy326;
         goto yy107;
       }
     }
-  yy324:
+  yy325:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy326;
+        goto yy327;
       if (yych <= '/')
         goto yy107;
+      goto yy328;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy328;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy328;
+        goto yy107;
       }
     }
-  yy325:
+  yy326:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy328;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy327;
+          goto yy328;
         goto yy107;
       }
     } else {
@@ -7242,47 +7463,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy327;
+        goto yy328;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy327;
+          goto yy328;
         goto yy107;
       }
     }
-  yy326:
+  yy327:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy328;
+        goto yy329;
       if (yych <= '/')
         goto yy107;
+      goto yy330;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy330;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy330;
+        goto yy107;
       }
     }
-  yy327:
+  yy328:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy330;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy329;
+          goto yy330;
         goto yy107;
       }
     } else {
@@ -7291,47 +7514,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy329;
+        goto yy330;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy329;
+          goto yy330;
         goto yy107;
       }
     }
-  yy328:
+  yy329:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy330;
+        goto yy331;
       if (yych <= '/')
         goto yy107;
+      goto yy332;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy332;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy332;
+        goto yy107;
       }
     }
-  yy329:
+  yy330:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy332;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy331;
+          goto yy332;
         goto yy107;
       }
     } else {
@@ -7340,47 +7565,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy331;
+        goto yy332;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy331;
+          goto yy332;
         goto yy107;
       }
     }
-  yy330:
+  yy331:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy332;
+        goto yy333;
       if (yych <= '/')
         goto yy107;
+      goto yy334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy334;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy334;
+        goto yy107;
       }
     }
-  yy331:
+  yy332:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy334;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy333;
+          goto yy334;
         goto yy107;
       }
     } else {
@@ -7389,47 +7616,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy333;
+        goto yy334;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy333;
+          goto yy334;
         goto yy107;
       }
     }
-  yy332:
+  yy333:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy334;
+        goto yy335;
       if (yych <= '/')
         goto yy107;
+      goto yy336;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy336;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy336;
+        goto yy107;
       }
     }
-  yy333:
+  yy334:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy336;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy335;
+          goto yy336;
         goto yy107;
       }
     } else {
@@ -7438,47 +7667,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy335;
+        goto yy336;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy335;
+          goto yy336;
         goto yy107;
       }
     }
-  yy334:
+  yy335:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy336;
+        goto yy337;
       if (yych <= '/')
         goto yy107;
+      goto yy338;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy338;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy338;
+        goto yy107;
       }
     }
-  yy335:
+  yy336:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy338;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy337;
+          goto yy338;
         goto yy107;
       }
     } else {
@@ -7487,47 +7718,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy337;
+        goto yy338;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy337;
+          goto yy338;
         goto yy107;
       }
     }
-  yy336:
+  yy337:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy338;
+        goto yy339;
       if (yych <= '/')
         goto yy107;
+      goto yy340;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy340;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy340;
+        goto yy107;
       }
     }
-  yy337:
+  yy338:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy340;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy339;
+          goto yy340;
         goto yy107;
       }
     } else {
@@ -7536,47 +7769,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy339;
+        goto yy340;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy339;
+          goto yy340;
         goto yy107;
       }
     }
-  yy338:
+  yy339:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy340;
+        goto yy341;
       if (yych <= '/')
         goto yy107;
+      goto yy342;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy342;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy342;
+        goto yy107;
       }
     }
-  yy339:
+  yy340:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy342;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy341;
+          goto yy342;
         goto yy107;
       }
     } else {
@@ -7585,47 +7820,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy341;
+        goto yy342;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy341;
+          goto yy342;
         goto yy107;
       }
     }
-  yy340:
+  yy341:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy342;
+        goto yy343;
       if (yych <= '/')
         goto yy107;
+      goto yy344;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy344;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy344;
+        goto yy107;
       }
     }
-  yy341:
+  yy342:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy344;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy343;
+          goto yy344;
         goto yy107;
       }
     } else {
@@ -7634,47 +7871,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy343;
+        goto yy344;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy343;
+          goto yy344;
         goto yy107;
       }
     }
-  yy342:
+  yy343:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy344;
+        goto yy345;
       if (yych <= '/')
         goto yy107;
+      goto yy346;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy346;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy346;
+        goto yy107;
       }
     }
-  yy343:
+  yy344:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy346;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy345;
+          goto yy346;
         goto yy107;
       }
     } else {
@@ -7683,47 +7922,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy345;
+        goto yy346;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy345;
+          goto yy346;
         goto yy107;
       }
     }
-  yy344:
+  yy345:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy346;
+        goto yy347;
       if (yych <= '/')
         goto yy107;
+      goto yy348;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy348;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy348;
+        goto yy107;
       }
     }
-  yy345:
+  yy346:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy348;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy347;
+          goto yy348;
         goto yy107;
       }
     } else {
@@ -7732,47 +7973,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy347;
+        goto yy348;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy347;
+          goto yy348;
         goto yy107;
       }
     }
-  yy346:
+  yy347:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy348;
+        goto yy349;
       if (yych <= '/')
         goto yy107;
+      goto yy350;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy350;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy350;
+        goto yy107;
       }
     }
-  yy347:
+  yy348:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy350;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy349;
+          goto yy350;
         goto yy107;
       }
     } else {
@@ -7781,47 +8024,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy349;
+        goto yy350;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy349;
+          goto yy350;
         goto yy107;
       }
     }
-  yy348:
+  yy349:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy350;
+        goto yy351;
       if (yych <= '/')
         goto yy107;
+      goto yy352;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy352;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy352;
+        goto yy107;
       }
     }
-  yy349:
+  yy350:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy352;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy351;
+          goto yy352;
         goto yy107;
       }
     } else {
@@ -7830,47 +8075,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy351;
+        goto yy352;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy351;
+          goto yy352;
         goto yy107;
       }
     }
-  yy350:
+  yy351:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy352;
+        goto yy353;
       if (yych <= '/')
         goto yy107;
+      goto yy354;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy354;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy354;
+        goto yy107;
       }
     }
-  yy351:
+  yy352:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy354;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy353;
+          goto yy354;
         goto yy107;
       }
     } else {
@@ -7879,47 +8126,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy353;
+        goto yy354;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy353;
+          goto yy354;
         goto yy107;
       }
     }
-  yy352:
+  yy353:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy354;
+        goto yy355;
       if (yych <= '/')
         goto yy107;
+      goto yy356;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy356;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy356;
+        goto yy107;
       }
     }
-  yy353:
+  yy354:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy356;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy355;
+          goto yy356;
         goto yy107;
       }
     } else {
@@ -7928,47 +8177,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy355;
+        goto yy356;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy355;
+          goto yy356;
         goto yy107;
       }
     }
-  yy354:
+  yy355:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy356;
+        goto yy357;
       if (yych <= '/')
         goto yy107;
+      goto yy358;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy358;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy358;
+        goto yy107;
       }
     }
-  yy355:
+  yy356:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy358;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy357;
+          goto yy358;
         goto yy107;
       }
     } else {
@@ -7977,47 +8228,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy357;
+        goto yy358;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy357;
+          goto yy358;
         goto yy107;
       }
     }
-  yy356:
+  yy357:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy358;
+        goto yy359;
       if (yych <= '/')
         goto yy107;
+      goto yy360;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy360;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy360;
+        goto yy107;
       }
     }
-  yy357:
+  yy358:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy360;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy359;
+          goto yy360;
         goto yy107;
       }
     } else {
@@ -8026,47 +8279,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy359;
+        goto yy360;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy359;
+          goto yy360;
         goto yy107;
       }
     }
-  yy358:
+  yy359:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy360;
+        goto yy361;
       if (yych <= '/')
         goto yy107;
+      goto yy362;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy362;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy362;
+        goto yy107;
       }
     }
-  yy359:
+  yy360:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy362;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy361;
+          goto yy362;
         goto yy107;
       }
     } else {
@@ -8075,47 +8330,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy361;
+        goto yy362;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy361;
+          goto yy362;
         goto yy107;
       }
     }
-  yy360:
+  yy361:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy362;
+        goto yy363;
       if (yych <= '/')
         goto yy107;
+      goto yy364;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy364;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy364;
+        goto yy107;
       }
     }
-  yy361:
+  yy362:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy364;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy363;
+          goto yy364;
         goto yy107;
       }
     } else {
@@ -8124,47 +8381,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy363;
+        goto yy364;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy363;
+          goto yy364;
         goto yy107;
       }
     }
-  yy362:
+  yy363:
     yych = *++p;
     if (yych <= '9') {
       if (yych == '-')
-        goto yy364;
+        goto yy365;
       if (yych <= '/')
         goto yy107;
+      goto yy366;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
           goto yy107;
+        goto yy366;
       } else {
         if (yych <= '`')
           goto yy107;
-        if (yych >= '{')
-          goto yy107;
+        if (yych <= 'z')
+          goto yy366;
+        goto yy107;
       }
     }
-  yy363:
+  yy364:
     yych = *++p;
     if (yych <= '=') {
       if (yych <= '.') {
         if (yych <= ',')
           goto yy107;
-        if (yych <= '-')
-          goto yy366;
-        goto yy120;
+        if (yych >= '.')
+          goto yy120;
       } else {
         if (yych <= '/')
           goto yy107;
         if (yych <= '9')
-          goto yy365;
+          goto yy366;
         goto yy107;
       }
     } else {
@@ -8173,36 +8432,35 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
           goto yy121;
         if (yych <= '@')
           goto yy107;
-        goto yy365;
+        goto yy366;
       } else {
         if (yych <= '`')
           goto yy107;
         if (yych <= 'z')
-          goto yy365;
+          goto yy366;
         goto yy107;
       }
     }
-  yy364:
+  yy365:
     yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy366;
+    if (yych <= '@') {
       if (yych <= '/')
         goto yy107;
+      if (yych <= '9')
+        goto yy246;
+      goto yy107;
     } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
+      if (yych <= 'Z')
+        goto yy246;
+      if (yych <= '`')
+        goto yy107;
+      if (yych <= 'z')
+        goto yy246;
+      goto yy107;
     }
-  yy365:
-    yych = *++p;
-    if (yych <= '=') {
+  yy366:
+    ++p;
+    if ((yych = *p) <= '=') {
       if (yych <= '.') {
         if (yych <= '-')
           goto yy107;
@@ -8229,23 +8487,6 @@ bufsize_t _scan_autolink_email(const unsigned char *p) {
         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;
-    }
   }
 }
 
@@ -8258,45 +8499,37 @@ bufsize_t _scan_html_tag(const unsigned char *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,
+        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, 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,
+        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, 254, 230, 230, 226, 230, 246, 198, 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, 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,
+        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,
+        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, 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,
+        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, 224, 160, 160, 160, 160, 160, 160, 160,
+        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, 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,
+        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 <= '`') {
@@ -10692,24 +10925,50 @@ bufsize_t _scan_html_block_start(const unsigned char *p) {
     }
   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;
+    if (yych <= 'U') {
+      if (yych <= 'E') {
+        if (yych == 'C')
+          goto yy587;
+        if (yych <= 'D')
+          goto yy525;
+        goto yy590;
+      } else {
+        if (yych <= 'O') {
+          if (yych <= 'N')
+            goto yy525;
+          goto yy589;
+        } else {
+          if (yych <= 'S')
+            goto yy525;
+          if (yych <= 'T')
+            goto yy586;
+          goto yy588;
+        }
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych <= 'c') {
+          if (yych <= 'b')
+            goto yy525;
+          goto yy587;
+        } else {
+          if (yych == 'e')
+            goto yy590;
+          goto yy525;
+        }
+      } else {
+        if (yych <= 's') {
+          if (yych <= 'o')
+            goto yy589;
+          goto yy525;
+        } else {
+          if (yych <= 't')
+            goto yy586;
+          if (yych <= 'u')
+            goto yy588;
+          goto yy525;
+        }
+      }
     }
   yy546:
     yych = *++p;
@@ -15408,42 +15667,42 @@ bufsize_t _scan_link_url(const unsigned char *p) {
       } else {
         if (yych <= ')') {
           if (yych <= '\'')
-            goto yy957;
+            goto yy956;
           if (yych <= '(')
             goto yy966;
           goto yy968;
         } else {
           if (yych == '<')
             goto yy955;
-          goto yy957;
+          goto yy956;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= '\\')
-            goto yy956;
+            goto yy965;
           if (yych <= 0x7F)
-            goto yy957;
+            goto yy956;
         } else {
           if (yych <= 0xDF)
-            goto yy958;
+            goto yy957;
           if (yych <= 0xE0)
-            goto yy960;
-          goto yy961;
+            goto yy959;
+          goto yy960;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy965;
+            goto yy964;
           if (yych <= 0xEF)
-            goto yy961;
-          goto yy962;
+            goto yy960;
+          goto yy961;
         } else {
           if (yych <= 0xF3)
-            goto yy963;
+            goto yy962;
           if (yych <= 0xF4)
-            goto yy964;
+            goto yy963;
         }
       }
     }
@@ -15469,7 +15728,7 @@ bufsize_t _scan_link_url(const unsigned char *p) {
         if (yych <= '<') {
           if (yych <= ';')
             goto yy980;
-          goto yy1004;
+          goto yy1016;
         } else {
           if (yych == '\\')
             goto yy982;
@@ -15481,24 +15740,24 @@ bufsize_t _scan_link_url(const unsigned char *p) {
         if (yych <= 0xDF) {
           if (yych <= 0xC1)
             goto yy951;
-          goto yy984;
+          goto yy983;
         } else {
           if (yych <= 0xE0)
-            goto yy985;
+            goto yy984;
           if (yych <= 0xEC)
-            goto yy986;
-          goto yy990;
+            goto yy985;
+          goto yy989;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy986;
-          goto yy987;
+            goto yy985;
+          goto yy986;
         } else {
           if (yych <= 0xF3)
-            goto yy988;
+            goto yy987;
           if (yych <= 0xF4)
-            goto yy989;
+            goto yy988;
           goto yy951;
         }
       }
@@ -15511,61 +15770,61 @@ bufsize_t _scan_link_url(const unsigned char *p) {
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yybm[0 + yych] & 64) {
-      goto yy1004;
+      goto yy1016;
     }
     if (yych <= '>') {
       if (yych <= '\r') {
         if (yych <= 0x08) {
           if (yych <= 0x00)
             goto yy951;
-          goto yy1017;
+          goto yy1029;
         } else {
           if (yych <= '\n')
             goto yy951;
           if (yych <= '\f')
-            goto yy1017;
+            goto yy1029;
           goto yy951;
         }
       } else {
         if (yych <= '(') {
           if (yych <= 0x1F)
-            goto yy1017;
+            goto yy1029;
           if (yych <= ' ')
             goto yy951;
-          goto yy1015;
+          goto yy1027;
         } else {
           if (yych <= ')')
-            goto yy1017;
+            goto yy1029;
           if (yych <= '<')
             goto yy980;
-          goto yy1006;
+          goto yy1018;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= '\\')
-            goto yy1002;
+            goto yy1015;
           goto yy951;
         } else {
           if (yych <= 0xDF)
-            goto yy1008;
+            goto yy1020;
           if (yych <= 0xE0)
-            goto yy1009;
-          goto yy1010;
+            goto yy1021;
+          goto yy1022;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1014;
+            goto yy1026;
           if (yych <= 0xEF)
-            goto yy1010;
-          goto yy1011;
+            goto yy1022;
+          goto yy1023;
         } else {
           if (yych <= 0xF3)
-            goto yy1012;
+            goto yy1024;
           if (yych <= 0xF4)
-            goto yy1013;
+            goto yy1025;
           goto yy951;
         }
       }
@@ -15573,24 +15832,14 @@ bufsize_t _scan_link_url(const unsigned char *p) {
   yy956:
     yyaccept = 0;
     yych = *(marker = ++p);
-    if (yych <= '\'')
-      goto yy981;
-    if (yych <= '(')
-      goto yy991;
-    if (yych <= ')')
-      goto yy980;
     goto yy981;
   yy957:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    goto yy981;
-  yy958:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy957;
-  yy959:
+      goto yy956;
+  yy958:
     p = marker;
     if (yyaccept <= 1) {
       if (yyaccept == 0) {
@@ -15599,50 +15848,86 @@ bufsize_t _scan_link_url(const unsigned char *p) {
         goto yy967;
       }
     } else {
-      goto yy1007;
+      goto yy1019;
     }
-  yy960:
+  yy959:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy959;
-    if (yych <= 0xBF)
       goto yy958;
-    goto yy959;
-  yy961:
+    if (yych <= 0xBF)
+      goto yy957;
+    goto yy958;
+  yy960:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy959;
-    if (yych <= 0xBF)
       goto yy958;
-    goto yy959;
-  yy962:
+    if (yych <= 0xBF)
+      goto yy957;
+    goto yy958;
+  yy961:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy961;
-    goto yy959;
-  yy963:
+      goto yy960;
+    goto yy958;
+  yy962:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy961;
-    goto yy959;
-  yy964:
+      goto yy960;
+    goto yy958;
+  yy963:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy961;
-    goto yy959;
-  yy965:
+      goto yy960;
+    goto yy958;
+  yy964:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy959;
-    if (yych <= 0x9F)
       goto yy958;
-    goto yy959;
+    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);
@@ -15672,14 +15957,14 @@ bufsize_t _scan_link_url(const unsigned char *p) {
     if (yych <= 0xE0) {
       if (yych <= ')') {
         if (yych <= ' ')
-          goto yy959;
+          goto yy958;
         if (yych >= ')')
-          goto yy991;
+          goto yy997;
       } else {
         if (yych <= 0x7F)
           goto yy971;
         if (yych <= 0xC1)
-          goto yy959;
+          goto yy958;
         if (yych <= 0xDF)
           goto yy973;
         goto yy974;
@@ -15696,7 +15981,7 @@ bufsize_t _scan_link_url(const unsigned char *p) {
           goto yy977;
         if (yych <= 0xF4)
           goto yy978;
-        goto yy959;
+        goto yy958;
       }
     }
   yy971:
@@ -15709,13 +15994,13 @@ bufsize_t _scan_link_url(const unsigned char *p) {
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= '(')
-          goto yy959;
+          goto yy958;
         if (yych <= ')')
           goto yy980;
         goto yy969;
       } else {
         if (yych <= 0xC1)
-          goto yy959;
+          goto yy958;
         if (yych >= 0xE0)
           goto yy974;
       }
@@ -15731,65 +16016,65 @@ bufsize_t _scan_link_url(const unsigned char *p) {
           goto yy977;
         if (yych <= 0xF4)
           goto yy978;
-        goto yy959;
+        goto yy958;
       }
     }
   yy973:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
       goto yy971;
-    goto yy959;
+    goto yy958;
   yy974:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
       goto yy973;
-    goto yy959;
+    goto yy958;
   yy975:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
       goto yy973;
-    goto yy959;
+    goto yy958;
   yy976:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
       goto yy975;
-    goto yy959;
+    goto yy958;
   yy977:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
       goto yy975;
-    goto yy959;
+    goto yy958;
   yy978:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
       goto yy975;
-    goto yy959;
+    goto yy958;
   yy979:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
       goto yy973;
-    goto yy959;
+    goto yy958;
   yy980:
     yyaccept = 0;
     marker = ++p;
@@ -15814,22 +16099,22 @@ bufsize_t _scan_link_url(const unsigned char *p) {
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy984;
+          goto yy983;
         if (yych <= 0xE0)
-          goto yy985;
+          goto yy984;
         if (yych <= 0xEC)
-          goto yy986;
-        goto yy990;
+          goto yy985;
+        goto yy989;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy986;
-          goto yy987;
+            goto yy985;
+          goto yy986;
         } else {
           if (yych <= 0xF3)
-            goto yy988;
+            goto yy987;
           if (yych <= 0xF4)
-            goto yy989;
+            goto yy988;
           goto yy951;
         }
       }
@@ -15839,315 +16124,471 @@ bufsize_t _scan_link_url(const unsigned char *p) {
     marker = ++p;
     yych = *p;
     if (yych <= 0xDF) {
-      if (yych <= '[') {
-        if (yych <= ' ')
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy980;
+        if (yych <= '\r')
           goto yy951;
-        if (yych == '(')
-          goto yy991;
         goto yy980;
       } else {
-        if (yych <= '\\')
-          goto yy982;
+        if (yych <= ' ')
+          goto yy951;
         if (yych <= 0x7F)
           goto yy980;
         if (yych <= 0xC1)
           goto yy951;
+        goto yy990;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych <= 0xE0)
-          goto yy985;
+          goto yy991;
         if (yych == 0xED)
-          goto yy990;
-        goto yy986;
+          goto yy996;
+        goto yy992;
       } else {
         if (yych <= 0xF0)
-          goto yy987;
+          goto yy993;
         if (yych <= 0xF3)
-          goto yy988;
+          goto yy994;
         if (yych <= 0xF4)
-          goto yy989;
+          goto yy995;
         goto yy951;
       }
     }
-  yy984:
+  yy983:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
       goto yy980;
-    goto yy959;
-  yy985:
+    goto yy958;
+  yy984:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy984;
-    goto yy959;
-  yy986:
+      goto yy983;
+    goto yy958;
+  yy985:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy984;
-    goto yy959;
-  yy987:
+      goto yy983;
+    goto yy958;
+  yy986:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy986;
-    goto yy959;
-  yy988:
+      goto yy985;
+    goto yy958;
+  yy987:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy986;
-    goto yy959;
-  yy989:
+      goto yy985;
+    goto yy958;
+  yy988:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy986;
-    goto yy959;
-  yy990:
+      goto yy985;
+    goto yy958;
+  yy989:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
-      goto yy984;
-    goto yy959;
+      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;
-  yy992:
+  yy998:
     if (yych <= 0xC1) {
       if (yych <= ')') {
         if (yych <= ' ')
           goto yy951;
         if (yych <= '\'')
-          goto yy991;
+          goto yy997;
         if (yych <= '(')
           goto yy971;
         goto yy980;
       } else {
         if (yych == '\\')
-          goto yy993;
+          goto yy999;
         if (yych <= 0x7F)
-          goto yy991;
+          goto yy997;
         goto yy951;
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy995;
+          goto yy1000;
         if (yych <= 0xE0)
-          goto yy996;
+          goto yy1001;
         if (yych <= 0xEC)
-          goto yy997;
-        goto yy1001;
+          goto yy1002;
+        goto yy1006;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy997;
-          goto yy998;
+            goto yy1002;
+          goto yy1003;
         } else {
           if (yych <= 0xF3)
-            goto yy999;
+            goto yy1004;
           if (yych <= 0xF4)
-            goto yy1000;
+            goto yy1005;
           goto yy951;
         }
       }
     }
-  yy993:
+  yy999:
     yyaccept = 0;
     marker = ++p;
     yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= ' ')
+    if (yych <= 0xC1) {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy980;
+        if (yych <= '\r')
           goto yy951;
-        if (yych <= '[')
-          goto yy991;
-        goto yy993;
+        if (yych <= 0x1F)
+          goto yy980;
+        goto yy951;
       } else {
+        if (yych == '\\')
+          goto yy1007;
         if (yych <= 0x7F)
-          goto yy991;
-        if (yych <= 0xC1)
-          goto yy951;
-        if (yych >= 0xE0)
-          goto yy996;
+          goto yy997;
+        goto yy951;
       }
     } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1001;
-        goto yy997;
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1008;
+        if (yych <= 0xE0)
+          goto yy1009;
+        if (yych <= 0xEC)
+          goto yy1010;
+        goto yy1014;
       } else {
-        if (yych <= 0xF0)
-          goto yy998;
-        if (yych <= 0xF3)
-          goto yy999;
-        if (yych <= 0xF4)
-          goto yy1000;
-        goto yy951;
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1010;
+          goto yy1011;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1012;
+          if (yych <= 0xF4)
+            goto yy1013;
+          goto yy951;
+        }
       }
     }
-  yy995:
+  yy1000:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy991;
-    goto yy959;
-  yy996:
+      goto yy997;
+    goto yy958;
+  yy1001:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy995;
-    goto yy959;
-  yy997:
+      goto yy1000;
+    goto yy958;
+  yy1002:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy995;
-    goto yy959;
-  yy998:
+      goto yy1000;
+    goto yy958;
+  yy1003:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy997;
-    goto yy959;
-  yy999:
+      goto yy1002;
+    goto yy958;
+  yy1004:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy997;
-    goto yy959;
-  yy1000:
+      goto yy1002;
+    goto yy958;
+  yy1005:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy997;
-    goto yy959;
-  yy1001:
+      goto yy1002;
+    goto yy958;
+  yy1006:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
-      goto yy995;
-    goto yy959;
-  yy1002:
+      goto yy1000;
+    goto yy958;
+  yy1007:
     yyaccept = 0;
     marker = ++p;
     yych = *p;
-    if (yych <= '[') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1017;
+    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 == '\r')
+          if (yych <= '\n')
             goto yy951;
-          goto yy1017;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy951;
         }
       } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
+        if (yych <= '=') {
+          if (yych == ' ')
             goto yy951;
-          if (yych >= '(')
-            goto yy1040;
         } else {
-          if (yych == '>')
-            goto yy1054;
+          if (yych <= '>')
+            goto yy1073;
+          if (yych >= '\\')
+            goto yy1074;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1002;
           if (yych >= 0x80)
             goto yy951;
         } else {
           if (yych <= 0xDF)
-            goto yy1008;
+            goto yy1075;
           if (yych <= 0xE0)
-            goto yy1009;
-          goto yy1010;
+            goto yy1076;
+          goto yy1077;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1014;
+            goto yy1081;
           if (yych <= 0xEF)
-            goto yy1010;
-          goto yy1011;
+            goto yy1077;
+          goto yy1078;
         } else {
           if (yych <= 0xF3)
-            goto yy1012;
+            goto yy1079;
           if (yych <= 0xF4)
-            goto yy1013;
+            goto yy1080;
           goto yy951;
         }
       }
     }
-  yy1004:
+  yy1016:
     yyaccept = 0;
     marker = ++p;
     yych = *p;
     if (yybm[0 + yych] & 64) {
-      goto yy1004;
+      goto yy1016;
     }
     if (yych <= '>') {
       if (yych <= '\r') {
         if (yych <= 0x08) {
           if (yych <= 0x00)
             goto yy951;
-          goto yy1017;
+          goto yy1029;
         } else {
           if (yych <= '\n')
             goto yy951;
           if (yych <= '\f')
-            goto yy1017;
+            goto yy1029;
           goto yy951;
         }
       } else {
         if (yych <= '(') {
           if (yych <= 0x1F)
-            goto yy1017;
+            goto yy1029;
           if (yych <= ' ')
             goto yy951;
-          goto yy1015;
+          goto yy1027;
         } else {
           if (yych <= ')')
-            goto yy1017;
+            goto yy1029;
           if (yych <= '<')
             goto yy980;
         }
@@ -16156,487 +16597,487 @@ bufsize_t _scan_link_url(const unsigned char *p) {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= '\\')
-            goto yy1002;
+            goto yy1015;
           goto yy951;
         } else {
           if (yych <= 0xDF)
-            goto yy1008;
+            goto yy1020;
           if (yych <= 0xE0)
-            goto yy1009;
-          goto yy1010;
+            goto yy1021;
+          goto yy1022;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1014;
+            goto yy1026;
           if (yych <= 0xEF)
-            goto yy1010;
-          goto yy1011;
+            goto yy1022;
+          goto yy1023;
         } else {
           if (yych <= 0xF3)
-            goto yy1012;
+            goto yy1024;
           if (yych <= 0xF4)
-            goto yy1013;
+            goto yy1025;
           goto yy951;
         }
       }
     }
-  yy1006:
+  yy1018:
     yyaccept = 2;
     yych = *(marker = ++p);
     if (yych <= ')') {
       if (yych <= ' ')
-        goto yy1007;
+        goto yy1019;
       if (yych <= '(')
         goto yy981;
     } else {
       if (yych <= 0x7F)
         goto yy981;
       if (yych <= 0xC1)
-        goto yy1007;
+        goto yy1019;
       if (yych <= 0xF4)
         goto yy981;
     }
-  yy1007 : { return (bufsize_t)(p - start); }
-  yy1008:
+  yy1019 : { return (bufsize_t)(p - start); }
+  yy1020:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1004;
-    goto yy959;
-  yy1009:
+      goto yy1016;
+    goto yy958;
+  yy1021:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1008;
-    goto yy959;
-  yy1010:
+      goto yy1020;
+    goto yy958;
+  yy1022:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1008;
-    goto yy959;
-  yy1011:
+      goto yy1020;
+    goto yy958;
+  yy1023:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1010;
-    goto yy959;
-  yy1012:
+      goto yy1022;
+    goto yy958;
+  yy1024:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1010;
-    goto yy959;
-  yy1013:
+      goto yy1022;
+    goto yy958;
+  yy1025:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy1010;
-    goto yy959;
-  yy1014:
+      goto yy1022;
+    goto yy958;
+  yy1026:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
-      goto yy1008;
-    goto yy959;
-  yy1015:
+      goto yy1020;
+    goto yy958;
+  yy1027:
     ++p;
     yych = *p;
     if (yych <= '=') {
       if (yych <= 0x1F) {
         if (yych <= '\n') {
           if (yych <= 0x00)
-            goto yy959;
+            goto yy958;
           if (yych >= '\t')
-            goto yy959;
+            goto yy958;
         } else {
           if (yych == '\r')
-            goto yy959;
+            goto yy958;
         }
       } else {
         if (yych <= '(') {
           if (yych <= ' ')
-            goto yy959;
+            goto yy958;
           if (yych <= '\'')
-            goto yy1015;
+            goto yy1027;
         } else {
           if (yych <= ')')
-            goto yy1004;
+            goto yy1016;
           if (yych == '<')
             goto yy971;
-          goto yy1015;
+          goto yy1027;
         }
       }
     } else {
       if (yych <= 0xE0) {
         if (yych <= '\\') {
           if (yych <= '>')
-            goto yy1030;
+            goto yy1042;
           if (yych <= '[')
-            goto yy1015;
-          goto yy1031;
+            goto yy1027;
+          goto yy1043;
         } else {
           if (yych <= 0x7F)
-            goto yy1015;
+            goto yy1027;
           if (yych <= 0xC1)
-            goto yy959;
+            goto yy958;
           if (yych <= 0xDF)
-            goto yy1033;
-          goto yy1034;
+            goto yy1045;
+          goto yy1046;
         }
       } else {
         if (yych <= 0xEF) {
           if (yych == 0xED)
-            goto yy1039;
-          goto yy1035;
+            goto yy1051;
+          goto yy1047;
         } else {
           if (yych <= 0xF0)
-            goto yy1036;
+            goto yy1048;
           if (yych <= 0xF3)
-            goto yy1037;
+            goto yy1049;
           if (yych <= 0xF4)
-            goto yy1038;
-          goto yy959;
+            goto yy1050;
+          goto yy958;
         }
       }
     }
-  yy1017:
+  yy1029:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1017;
+      goto yy1029;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= '<')
-          goto yy959;
+          goto yy958;
         if (yych >= '?')
-          goto yy1020;
+          goto yy1032;
       } else {
         if (yych <= 0xC1)
-          goto yy959;
+          goto yy958;
         if (yych <= 0xDF)
-          goto yy1022;
-        goto yy1023;
+          goto yy1034;
+        goto yy1035;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1028;
-        goto yy1024;
+          goto yy1040;
+        goto yy1036;
       } else {
         if (yych <= 0xF0)
-          goto yy1025;
+          goto yy1037;
         if (yych <= 0xF3)
-          goto yy1026;
+          goto yy1038;
         if (yych <= 0xF4)
-          goto yy1027;
-        goto yy959;
+          goto yy1039;
+        goto yy958;
       }
     }
-  yy1019:
+  yy1031:
     yych = *++p;
-    goto yy1007;
-  yy1020:
+    goto yy1019;
+  yy1032:
     ++p;
     yych = *p;
     if (yych <= '\\') {
       if (yych <= '\r') {
         if (yych <= 0x08) {
           if (yych <= 0x00)
-            goto yy959;
-          goto yy1017;
+            goto yy958;
+          goto yy1029;
         } else {
           if (yych <= '\n')
-            goto yy959;
+            goto yy958;
           if (yych <= '\f')
-            goto yy1017;
-          goto yy959;
+            goto yy1029;
+          goto yy958;
         }
       } else {
         if (yych <= '=') {
           if (yych == ' ')
-            goto yy959;
-          goto yy1017;
+            goto yy958;
+          goto yy1029;
         } else {
           if (yych <= '>')
-            goto yy1029;
+            goto yy1041;
           if (yych <= '[')
-            goto yy1017;
-          goto yy1020;
+            goto yy1029;
+          goto yy1032;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= 0x7F)
-            goto yy1017;
-          goto yy959;
+            goto yy1029;
+          goto yy958;
         } else {
           if (yych <= 0xDF)
-            goto yy1022;
+            goto yy1034;
           if (yych <= 0xE0)
-            goto yy1023;
-          goto yy1024;
+            goto yy1035;
+          goto yy1036;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1028;
+            goto yy1040;
           if (yych <= 0xEF)
-            goto yy1024;
-          goto yy1025;
+            goto yy1036;
+          goto yy1037;
         } else {
           if (yych <= 0xF3)
-            goto yy1026;
+            goto yy1038;
           if (yych <= 0xF4)
-            goto yy1027;
-          goto yy959;
+            goto yy1039;
+          goto yy958;
         }
       }
     }
-  yy1022:
+  yy1034:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1017;
-    goto yy959;
-  yy1023:
+      goto yy1029;
+    goto yy958;
+  yy1035:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1022;
-    goto yy959;
-  yy1024:
+      goto yy1034;
+    goto yy958;
+  yy1036:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1022;
-    goto yy959;
-  yy1025:
+      goto yy1034;
+    goto yy958;
+  yy1037:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1024;
-    goto yy959;
-  yy1026:
+      goto yy1036;
+    goto yy958;
+  yy1038:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1024;
-    goto yy959;
-  yy1027:
+      goto yy1036;
+    goto yy958;
+  yy1039:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy1024;
-    goto yy959;
-  yy1028:
+      goto yy1036;
+    goto yy958;
+  yy1040:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
-      goto yy1022;
-    goto yy959;
-  yy1029:
+      goto yy1034;
+    goto yy958;
+  yy1041:
     yyaccept = 2;
     marker = ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1017;
+      goto yy1029;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= '<')
-          goto yy1007;
-        if (yych <= '>')
           goto yy1019;
-        goto yy1020;
+        if (yych <= '>')
+          goto yy1031;
+        goto yy1032;
       } else {
         if (yych <= 0xC1)
-          goto yy1007;
+          goto yy1019;
         if (yych <= 0xDF)
-          goto yy1022;
-        goto yy1023;
+          goto yy1034;
+        goto yy1035;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1028;
-        goto yy1024;
+          goto yy1040;
+        goto yy1036;
       } else {
         if (yych <= 0xF0)
-          goto yy1025;
+          goto yy1037;
         if (yych <= 0xF3)
-          goto yy1026;
+          goto yy1038;
         if (yych <= 0xF4)
-          goto yy1027;
-        goto yy1007;
+          goto yy1039;
+        goto yy1019;
       }
     }
-  yy1030:
+  yy1042:
     yyaccept = 2;
     yych = *(marker = ++p);
     if (yych <= '(') {
       if (yych <= ' ')
-        goto yy1007;
+        goto yy1019;
       if (yych <= '\'')
         goto yy972;
-      goto yy1007;
+      goto yy1019;
     } else {
       if (yych <= 0x7F)
         goto yy972;
       if (yych <= 0xC1)
-        goto yy1007;
+        goto yy1019;
       if (yych <= 0xF4)
         goto yy972;
-      goto yy1007;
+      goto yy1019;
     }
-  yy1031:
+  yy1043:
     ++p;
     yych = *p;
     if (yych <= '[') {
       if (yych <= 0x1F) {
         if (yych <= '\n') {
           if (yych <= 0x00)
-            goto yy959;
+            goto yy958;
           if (yych <= 0x08)
-            goto yy1017;
-          goto yy959;
+            goto yy1029;
+          goto yy958;
         } else {
           if (yych == '\r')
-            goto yy959;
-          goto yy1017;
+            goto yy958;
+          goto yy1029;
         }
       } else {
         if (yych <= ')') {
           if (yych <= ' ')
-            goto yy959;
+            goto yy958;
           if (yych <= '(')
-            goto yy1015;
-          goto yy1040;
+            goto yy1027;
+          goto yy1052;
         } else {
           if (yych == '>')
-            goto yy1042;
-          goto yy1015;
+            goto yy1054;
+          goto yy1027;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= '\\')
-            goto yy1031;
+            goto yy1043;
           if (yych <= 0x7F)
-            goto yy1015;
-          goto yy959;
+            goto yy1027;
+          goto yy958;
         } else {
           if (yych <= 0xDF)
-            goto yy1033;
+            goto yy1045;
           if (yych <= 0xE0)
-            goto yy1034;
-          goto yy1035;
+            goto yy1046;
+          goto yy1047;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1039;
+            goto yy1051;
           if (yych <= 0xEF)
-            goto yy1035;
-          goto yy1036;
+            goto yy1047;
+          goto yy1048;
         } else {
           if (yych <= 0xF3)
-            goto yy1037;
+            goto yy1049;
           if (yych <= 0xF4)
-            goto yy1038;
-          goto yy959;
+            goto yy1050;
+          goto yy958;
         }
       }
     }
-  yy1033:
+  yy1045:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1015;
-    goto yy959;
-  yy1034:
+      goto yy1027;
+    goto yy958;
+  yy1046:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1033;
-    goto yy959;
-  yy1035:
+      goto yy1045;
+    goto yy958;
+  yy1047:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1033;
-    goto yy959;
-  yy1036:
+      goto yy1045;
+    goto yy958;
+  yy1048:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1035;
-    goto yy959;
-  yy1037:
+      goto yy1047;
+    goto yy958;
+  yy1049:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1035;
-    goto yy959;
-  yy1038:
+      goto yy1047;
+    goto yy958;
+  yy1050:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy1035;
-    goto yy959;
-  yy1039:
+      goto yy1047;
+    goto yy958;
+  yy1051:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
-      goto yy1033;
-    goto yy959;
-  yy1040:
+      goto yy1045;
+    goto yy958;
+  yy1052:
     yyaccept = 0;
     marker = ++p;
     yych = *p;
@@ -16646,62 +17087,62 @@ bufsize_t _scan_link_url(const unsigned char *p) {
           if (yych <= 0x00)
             goto yy951;
           if (yych <= 0x08)
-            goto yy1017;
+            goto yy1029;
           goto yy951;
         } else {
           if (yych == '\r')
             goto yy951;
-          goto yy1017;
+          goto yy1029;
         }
       } else {
         if (yych <= '(') {
           if (yych <= ' ')
             goto yy951;
           if (yych <= '\'')
-            goto yy1040;
-          goto yy1015;
+            goto yy1052;
+          goto yy1027;
         } else {
           if (yych <= ')')
-            goto yy1004;
+            goto yy1016;
           if (yych == '<')
-            goto yy991;
-          goto yy1040;
+            goto yy997;
+          goto yy1052;
         }
       }
     } else {
       if (yych <= 0xE0) {
         if (yych <= '\\') {
           if (yych <= '>')
-            goto yy1043;
+            goto yy1055;
           if (yych <= '[')
-            goto yy1040;
-          goto yy1044;
+            goto yy1052;
+          goto yy1056;
         } else {
           if (yych <= 0x7F)
-            goto yy1040;
+            goto yy1052;
           if (yych <= 0xC1)
             goto yy951;
           if (yych <= 0xDF)
-            goto yy1046;
-          goto yy1047;
+            goto yy1057;
+          goto yy1058;
         }
       } else {
         if (yych <= 0xEF) {
           if (yych == 0xED)
-            goto yy1052;
-          goto yy1048;
+            goto yy1063;
+          goto yy1059;
         } else {
           if (yych <= 0xF0)
-            goto yy1049;
+            goto yy1060;
           if (yych <= 0xF3)
-            goto yy1050;
+            goto yy1061;
           if (yych <= 0xF4)
-            goto yy1051;
+            goto yy1062;
           goto yy951;
         }
       }
     }
-  yy1042:
+  yy1054:
     yyaccept = 2;
     marker = ++p;
     yych = *p;
@@ -16709,76 +17150,76 @@ bufsize_t _scan_link_url(const unsigned char *p) {
       if (yych <= 0x1F) {
         if (yych <= '\n') {
           if (yych <= 0x00)
-            goto yy1007;
+            goto yy1019;
           if (yych <= 0x08)
-            goto yy1017;
-          goto yy1007;
+            goto yy1029;
+          goto yy1019;
         } else {
           if (yych == '\r')
-            goto yy1007;
-          goto yy1017;
+            goto yy1019;
+          goto yy1029;
         }
       } else {
         if (yych <= '(') {
           if (yych <= ' ')
-            goto yy1007;
+            goto yy1019;
           if (yych <= '\'')
-            goto yy1015;
-          goto yy1017;
+            goto yy1027;
+          goto yy1029;
         } else {
           if (yych <= ')')
-            goto yy1004;
+            goto yy1016;
           if (yych == '<')
             goto yy971;
-          goto yy1015;
+          goto yy1027;
         }
       }
     } else {
       if (yych <= 0xE0) {
         if (yych <= '\\') {
           if (yych <= '>')
-            goto yy1030;
+            goto yy1042;
           if (yych <= '[')
-            goto yy1015;
-          goto yy1031;
+            goto yy1027;
+          goto yy1043;
         } else {
           if (yych <= 0x7F)
-            goto yy1015;
+            goto yy1027;
           if (yych <= 0xC1)
-            goto yy1007;
+            goto yy1019;
           if (yych <= 0xDF)
-            goto yy1033;
-          goto yy1034;
+            goto yy1045;
+          goto yy1046;
         }
       } else {
         if (yych <= 0xEF) {
           if (yych == 0xED)
-            goto yy1039;
-          goto yy1035;
+            goto yy1051;
+          goto yy1047;
         } else {
           if (yych <= 0xF0)
-            goto yy1036;
+            goto yy1048;
           if (yych <= 0xF3)
-            goto yy1037;
+            goto yy1049;
           if (yych <= 0xF4)
-            goto yy1038;
-          goto yy1007;
+            goto yy1050;
+          goto yy1019;
         }
       }
     }
-  yy1043:
+  yy1055:
     yyaccept = 2;
     yych = *(marker = ++p);
     if (yych <= ' ')
-      goto yy1007;
+      goto yy1019;
     if (yych <= 0x7F)
-      goto yy992;
+      goto yy998;
     if (yych <= 0xC1)
-      goto yy1007;
+      goto yy1019;
     if (yych <= 0xF4)
-      goto yy992;
-    goto yy1007;
-  yy1044:
+      goto yy998;
+    goto yy1019;
+  yy1056:
     yyaccept = 0;
     marker = ++p;
     yych = *p;
@@ -16786,116 +17227,116 @@ bufsize_t _scan_link_url(const unsigned char *p) {
       if (yych <= '\r') {
         if (yych <= 0x08) {
           if (yych <= 0x00)
-            goto yy951;
-          goto yy1017;
+            goto yy980;
+          goto yy1016;
         } else {
           if (yych <= '\n')
             goto yy951;
           if (yych <= '\f')
-            goto yy1017;
+            goto yy1029;
           goto yy951;
         }
       } else {
         if (yych <= '=') {
           if (yych <= 0x1F)
-            goto yy1017;
+            goto yy1016;
           if (yych <= ' ')
             goto yy951;
-          goto yy1040;
+          goto yy1052;
         } else {
           if (yych <= '>')
-            goto yy1053;
+            goto yy1064;
           if (yych <= '[')
-            goto yy1040;
-          goto yy1044;
+            goto yy1052;
+          goto yy1065;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= 0x7F)
-            goto yy1040;
+            goto yy1052;
           goto yy951;
         } else {
           if (yych <= 0xDF)
-            goto yy1046;
+            goto yy1066;
           if (yych <= 0xE0)
-            goto yy1047;
-          goto yy1048;
+            goto yy1067;
+          goto yy1068;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1052;
+            goto yy1072;
           if (yych <= 0xEF)
-            goto yy1048;
-          goto yy1049;
+            goto yy1068;
+          goto yy1069;
         } else {
           if (yych <= 0xF3)
-            goto yy1050;
+            goto yy1070;
           if (yych <= 0xF4)
-            goto yy1051;
+            goto yy1071;
           goto yy951;
         }
       }
     }
-  yy1046:
+  yy1057:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1040;
-    goto yy959;
-  yy1047:
+      goto yy1052;
+    goto yy958;
+  yy1058:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1046;
-    goto yy959;
-  yy1048:
+      goto yy1057;
+    goto yy958;
+  yy1059:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1046;
-    goto yy959;
-  yy1049:
+      goto yy1057;
+    goto yy958;
+  yy1060:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1048;
-    goto yy959;
-  yy1050:
+      goto yy1059;
+    goto yy958;
+  yy1061:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0xBF)
-      goto yy1048;
-    goto yy959;
-  yy1051:
+      goto yy1059;
+    goto yy958;
+  yy1062:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x8F)
-      goto yy1048;
-    goto yy959;
-  yy1052:
+      goto yy1059;
+    goto yy958;
+  yy1063:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy959;
+      goto yy958;
     if (yych <= 0x9F)
-      goto yy1046;
-    goto yy959;
-  yy1053:
+      goto yy1057;
+    goto yy958;
+  yy1064:
     yyaccept = 2;
     marker = ++p;
     yych = *p;
@@ -16903,799 +17344,1033 @@ bufsize_t _scan_link_url(const unsigned char *p) {
       if (yych <= 0x1F) {
         if (yych <= '\n') {
           if (yych <= 0x00)
-            goto yy1007;
+            goto yy1019;
           if (yych <= 0x08)
-            goto yy1017;
-          goto yy1007;
+            goto yy1029;
+          goto yy1019;
         } else {
           if (yych == '\r')
-            goto yy1007;
-          goto yy1017;
+            goto yy1019;
+          goto yy1029;
         }
       } else {
         if (yych <= '(') {
           if (yych <= ' ')
-            goto yy1007;
+            goto yy1019;
           if (yych <= '\'')
-            goto yy1040;
-          goto yy1015;
+            goto yy1052;
+          goto yy1027;
         } else {
           if (yych <= ')')
-            goto yy1004;
+            goto yy1016;
           if (yych == '<')
-            goto yy991;
-          goto yy1040;
+            goto yy997;
+          goto yy1052;
         }
       }
     } else {
       if (yych <= 0xE0) {
         if (yych <= '\\') {
           if (yych <= '>')
-            goto yy1043;
+            goto yy1055;
           if (yych <= '[')
-            goto yy1040;
-          goto yy1044;
+            goto yy1052;
+          goto yy1056;
         } else {
           if (yych <= 0x7F)
-            goto yy1040;
+            goto yy1052;
           if (yych <= 0xC1)
-            goto yy1007;
+            goto yy1019;
           if (yych <= 0xDF)
-            goto yy1046;
-          goto yy1047;
+            goto yy1057;
+          goto yy1058;
         }
       } else {
         if (yych <= 0xEF) {
           if (yych == 0xED)
-            goto yy1052;
-          goto yy1048;
+            goto yy1063;
+          goto yy1059;
         } else {
           if (yych <= 0xF0)
-            goto yy1049;
+            goto yy1060;
           if (yych <= 0xF3)
-            goto yy1050;
+            goto yy1061;
           if (yych <= 0xF4)
-            goto yy1051;
-          goto yy1007;
+            goto yy1062;
+          goto yy1019;
         }
       }
     }
-  yy1054:
-    yyaccept = 2;
+  yy1065:
+    yyaccept = 0;
     marker = ++p;
     yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1004;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
+    if (yych <= '[') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
           if (yych <= 0x00)
-            goto yy1007;
-          goto yy1017;
+            goto yy951;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy951;
         } else {
-          if (yych <= '\n')
-            goto yy1007;
-          if (yych <= '\f')
-            goto yy1017;
-          goto yy1007;
+          if (yych == '\r')
+            goto yy951;
+          goto yy1029;
         }
       } else {
         if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1017;
           if (yych <= ' ')
-            goto yy1007;
-          goto yy1015;
+            goto yy951;
+          if (yych <= '\'')
+            goto yy1052;
+          goto yy1027;
         } else {
-          if (yych <= ')')
-            goto yy1017;
-          if (yych <= '<')
-            goto yy980;
-          goto yy1006;
+          if (yych == '>')
+            goto yy1064;
+          goto yy1052;
         }
       }
     } else {
       if (yych <= 0xEC) {
         if (yych <= 0xC1) {
           if (yych <= '\\')
-            goto yy1002;
-          goto yy1007;
+            goto yy1056;
+          if (yych <= 0x7F)
+            goto yy1052;
+          goto yy951;
         } else {
           if (yych <= 0xDF)
-            goto yy1008;
+            goto yy1057;
           if (yych <= 0xE0)
-            goto yy1009;
-          goto yy1010;
+            goto yy1058;
+          goto yy1059;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xED)
-            goto yy1014;
+            goto yy1063;
           if (yych <= 0xEF)
-            goto yy1010;
-          goto yy1011;
+            goto yy1059;
+          goto yy1060;
         } else {
           if (yych <= 0xF3)
-            goto yy1012;
+            goto yy1061;
           if (yych <= 0xF4)
-            goto yy1013;
-          goto yy1007;
+            goto yy1062;
+          goto yy951;
         }
       }
     }
-  }
-}
-
-// 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 yy1057;
-        if (yych <= '!')
-          goto yy1061;
-        goto yy1058;
+  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 yy1061;
-          goto yy1059;
+            goto yy1088;
+          goto yy1086;
         } else {
           if (yych <= '(')
-            goto yy1060;
+            goto yy1087;
           if (yych <= 0x7F)
-            goto yy1061;
+            goto yy1088;
         }
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy1062;
+          goto yy1089;
         if (yych <= 0xE0)
-          goto yy1064;
+          goto yy1091;
         if (yych <= 0xEC)
-          goto yy1065;
-        goto yy1069;
+          goto yy1092;
+        goto yy1096;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy1065;
-          goto yy1066;
+            goto yy1092;
+          goto yy1093;
         } else {
           if (yych <= 0xF3)
-            goto yy1067;
+            goto yy1094;
           if (yych <= 0xF4)
-            goto yy1068;
+            goto yy1095;
         }
       }
     }
-  yy1057 : { return 0; }
-  yy1058:
+  yy1084 : { return 0; }
+  yy1085:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych <= 0x00)
-      goto yy1057;
+      goto yy1084;
     if (yych <= 0x7F)
-      goto yy1101;
+      goto yy1128;
     if (yych <= 0xC1)
-      goto yy1057;
+      goto yy1084;
     if (yych <= 0xF4)
-      goto yy1101;
-    goto yy1057;
-  yy1059:
+      goto yy1128;
+    goto yy1084;
+  yy1086:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych <= 0x00)
-      goto yy1057;
+      goto yy1084;
     if (yych <= 0x7F)
-      goto yy1087;
+      goto yy1114;
     if (yych <= 0xC1)
-      goto yy1057;
+      goto yy1084;
     if (yych <= 0xF4)
-      goto yy1087;
-    goto yy1057;
-  yy1060:
+      goto yy1114;
+    goto yy1084;
+  yy1087:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych <= 0x00)
-      goto yy1057;
+      goto yy1084;
     if (yych <= 0x7F)
-      goto yy1073;
+      goto yy1100;
     if (yych <= 0xC1)
-      goto yy1057;
+      goto yy1084;
     if (yych <= 0xF4)
-      goto yy1073;
-    goto yy1057;
-  yy1061:
+      goto yy1100;
+    goto yy1084;
+  yy1088:
     yych = *++p;
-    goto yy1057;
-  yy1062:
+    goto yy1084;
+  yy1089:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1061;
-  yy1063:
+      goto yy1088;
+  yy1090:
     p = marker;
     if (yyaccept <= 1) {
       if (yyaccept == 0) {
-        goto yy1057;
+        goto yy1084;
       } else {
-        goto yy1082;
+        goto yy1109;
       }
     } else {
       if (yyaccept == 2) {
-        goto yy1096;
+        goto yy1123;
       } else {
-        goto yy1110;
+        goto yy1137;
       }
     }
-  yy1064:
+  yy1091:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1062;
-    goto yy1063;
-  yy1065:
+      goto yy1089;
+    goto yy1090;
+  yy1092:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1062;
-    goto yy1063;
-  yy1066:
+      goto yy1089;
+    goto yy1090;
+  yy1093:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1065;
-    goto yy1063;
-  yy1067:
+      goto yy1092;
+    goto yy1090;
+  yy1094:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1065;
-    goto yy1063;
-  yy1068:
+      goto yy1092;
+    goto yy1090;
+  yy1095:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x8F)
-      goto yy1065;
-    goto yy1063;
-  yy1069:
+      goto yy1092;
+    goto yy1090;
+  yy1096:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x9F)
-      goto yy1062;
-    goto yy1063;
-  yy1070:
+      goto yy1089;
+    goto yy1090;
+  yy1097:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 32) {
-      goto yy1072;
+      goto yy1099;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1063;
+          goto yy1090;
         if (yych <= ')')
-          goto yy1083;
-        goto yy1070;
+          goto yy1110;
+        goto yy1097;
       } else {
         if (yych <= 0xC1)
-          goto yy1063;
+          goto yy1090;
         if (yych <= 0xDF)
-          goto yy1074;
-        goto yy1075;
+          goto yy1101;
+        goto yy1102;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1080;
-        goto yy1076;
+          goto yy1107;
+        goto yy1103;
       } else {
         if (yych <= 0xF0)
-          goto yy1077;
+          goto yy1104;
         if (yych <= 0xF3)
-          goto yy1078;
+          goto yy1105;
         if (yych <= 0xF4)
-          goto yy1079;
-        goto yy1063;
+          goto yy1106;
+        goto yy1090;
       }
     }
-  yy1072:
+  yy1099:
     ++p;
     yych = *p;
-  yy1073:
+  yy1100:
     if (yybm[0 + yych] & 32) {
-      goto yy1072;
+      goto yy1099;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1063;
+          goto yy1090;
         if (yych <= ')')
-          goto yy1081;
-        goto yy1070;
+          goto yy1108;
+        goto yy1097;
       } else {
         if (yych <= 0xC1)
-          goto yy1063;
+          goto yy1090;
         if (yych >= 0xE0)
-          goto yy1075;
+          goto yy1102;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1080;
-        goto yy1076;
+          goto yy1107;
+        goto yy1103;
       } else {
         if (yych <= 0xF0)
-          goto yy1077;
+          goto yy1104;
         if (yych <= 0xF3)
-          goto yy1078;
+          goto yy1105;
         if (yych <= 0xF4)
-          goto yy1079;
-        goto yy1063;
+          goto yy1106;
+        goto yy1090;
       }
     }
-  yy1074:
+  yy1101:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1072;
-    goto yy1063;
-  yy1075:
+      goto yy1099;
+    goto yy1090;
+  yy1102:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1074;
-    goto yy1063;
-  yy1076:
+      goto yy1101;
+    goto yy1090;
+  yy1103:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1074;
-    goto yy1063;
-  yy1077:
+      goto yy1101;
+    goto yy1090;
+  yy1104:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1076;
-    goto yy1063;
-  yy1078:
+      goto yy1103;
+    goto yy1090;
+  yy1105:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1076;
-    goto yy1063;
-  yy1079:
+      goto yy1103;
+    goto yy1090;
+  yy1106:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x8F)
-      goto yy1076;
-    goto yy1063;
-  yy1080:
+      goto yy1103;
+    goto yy1090;
+  yy1107:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x9F)
-      goto yy1074;
-    goto yy1063;
-  yy1081:
+      goto yy1101;
+    goto yy1090;
+  yy1108:
     ++p;
-  yy1082 : { return (bufsize_t)(p - start); }
-  yy1083:
+  yy1109 : { return (bufsize_t)(p - start); }
+  yy1110:
     yyaccept = 1;
     marker = ++p;
     yych = *p;
     if (yybm[0 + yych] & 32) {
-      goto yy1072;
+      goto yy1099;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1082;
+          goto yy1109;
         if (yych <= ')')
-          goto yy1081;
-        goto yy1070;
+          goto yy1108;
+        goto yy1097;
       } else {
         if (yych <= 0xC1)
-          goto yy1082;
+          goto yy1109;
         if (yych <= 0xDF)
-          goto yy1074;
-        goto yy1075;
+          goto yy1101;
+        goto yy1102;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1080;
-        goto yy1076;
+          goto yy1107;
+        goto yy1103;
       } else {
         if (yych <= 0xF0)
-          goto yy1077;
+          goto yy1104;
         if (yych <= 0xF3)
-          goto yy1078;
+          goto yy1105;
         if (yych <= 0xF4)
-          goto yy1079;
-        goto yy1082;
+          goto yy1106;
+        goto yy1109;
       }
     }
-  yy1084:
+  yy1111:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 64) {
-      goto yy1086;
+      goto yy1113;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1063;
+          goto yy1090;
         if (yych <= '\'')
-          goto yy1097;
-        goto yy1084;
+          goto yy1124;
+        goto yy1111;
       } else {
         if (yych <= 0xC1)
-          goto yy1063;
+          goto yy1090;
         if (yych <= 0xDF)
-          goto yy1088;
-        goto yy1089;
+          goto yy1115;
+        goto yy1116;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1094;
-        goto yy1090;
+          goto yy1121;
+        goto yy1117;
       } else {
         if (yych <= 0xF0)
-          goto yy1091;
+          goto yy1118;
         if (yych <= 0xF3)
-          goto yy1092;
+          goto yy1119;
         if (yych <= 0xF4)
-          goto yy1093;
-        goto yy1063;
+          goto yy1120;
+        goto yy1090;
       }
     }
-  yy1086:
+  yy1113:
     ++p;
     yych = *p;
-  yy1087:
+  yy1114:
     if (yybm[0 + yych] & 64) {
-      goto yy1086;
+      goto yy1113;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1063;
+          goto yy1090;
         if (yych <= '\'')
-          goto yy1095;
-        goto yy1084;
+          goto yy1122;
+        goto yy1111;
       } else {
         if (yych <= 0xC1)
-          goto yy1063;
+          goto yy1090;
         if (yych >= 0xE0)
-          goto yy1089;
+          goto yy1116;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1094;
-        goto yy1090;
+          goto yy1121;
+        goto yy1117;
       } else {
         if (yych <= 0xF0)
-          goto yy1091;
+          goto yy1118;
         if (yych <= 0xF3)
-          goto yy1092;
+          goto yy1119;
         if (yych <= 0xF4)
-          goto yy1093;
-        goto yy1063;
+          goto yy1120;
+        goto yy1090;
       }
     }
-  yy1088:
+  yy1115:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1086;
-    goto yy1063;
-  yy1089:
+      goto yy1113;
+    goto yy1090;
+  yy1116:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1088;
-    goto yy1063;
-  yy1090:
+      goto yy1115;
+    goto yy1090;
+  yy1117:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1088;
-    goto yy1063;
-  yy1091:
+      goto yy1115;
+    goto yy1090;
+  yy1118:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy1063;
-    if (yych <= 0xBF)
       goto yy1090;
-    goto yy1063;
-  yy1092:
+    if (yych <= 0xBF)
+      goto yy1117;
+    goto yy1090;
+  yy1119:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
-    if (yych <= 0xBF)
       goto yy1090;
-    goto yy1063;
-  yy1093:
+    if (yych <= 0xBF)
+      goto yy1117;
+    goto yy1090;
+  yy1120:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
-    if (yych <= 0x8F)
       goto yy1090;
-    goto yy1063;
-  yy1094:
+    if (yych <= 0x8F)
+      goto yy1117;
+    goto yy1090;
+  yy1121:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x9F)
-      goto yy1088;
-    goto yy1063;
-  yy1095:
+      goto yy1115;
+    goto yy1090;
+  yy1122:
     ++p;
-  yy1096 : { return (bufsize_t)(p - start); }
-  yy1097:
+  yy1123 : { return (bufsize_t)(p - start); }
+  yy1124:
     yyaccept = 2;
     marker = ++p;
     yych = *p;
     if (yybm[0 + yych] & 64) {
-      goto yy1086;
+      goto yy1113;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1096;
+          goto yy1123;
         if (yych <= '\'')
-          goto yy1095;
-        goto yy1084;
+          goto yy1122;
+        goto yy1111;
       } else {
         if (yych <= 0xC1)
-          goto yy1096;
+          goto yy1123;
         if (yych <= 0xDF)
-          goto yy1088;
-        goto yy1089;
+          goto yy1115;
+        goto yy1116;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1094;
-        goto yy1090;
+          goto yy1121;
+        goto yy1117;
       } else {
         if (yych <= 0xF0)
-          goto yy1091;
+          goto yy1118;
         if (yych <= 0xF3)
-          goto yy1092;
+          goto yy1119;
         if (yych <= 0xF4)
-          goto yy1093;
-        goto yy1096;
+          goto yy1120;
+        goto yy1123;
       }
     }
-  yy1098:
+  yy1125:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1100;
+      goto yy1127;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1063;
+          goto yy1090;
         if (yych <= '"')
-          goto yy1111;
-        goto yy1098;
+          goto yy1138;
+        goto yy1125;
       } else {
         if (yych <= 0xC1)
-          goto yy1063;
+          goto yy1090;
         if (yych <= 0xDF)
-          goto yy1102;
-        goto yy1103;
+          goto yy1129;
+        goto yy1130;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1108;
-        goto yy1104;
+          goto yy1135;
+        goto yy1131;
       } else {
         if (yych <= 0xF0)
-          goto yy1105;
+          goto yy1132;
         if (yych <= 0xF3)
-          goto yy1106;
+          goto yy1133;
         if (yych <= 0xF4)
-          goto yy1107;
-        goto yy1063;
+          goto yy1134;
+        goto yy1090;
       }
     }
-  yy1100:
+  yy1127:
     ++p;
     yych = *p;
-  yy1101:
+  yy1128:
     if (yybm[0 + yych] & 128) {
-      goto yy1100;
+      goto yy1127;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1063;
+          goto yy1090;
         if (yych <= '"')
-          goto yy1109;
-        goto yy1098;
+          goto yy1136;
+        goto yy1125;
       } else {
         if (yych <= 0xC1)
-          goto yy1063;
+          goto yy1090;
         if (yych >= 0xE0)
-          goto yy1103;
+          goto yy1130;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1108;
-        goto yy1104;
+          goto yy1135;
+        goto yy1131;
       } else {
         if (yych <= 0xF0)
-          goto yy1105;
+          goto yy1132;
         if (yych <= 0xF3)
-          goto yy1106;
+          goto yy1133;
         if (yych <= 0xF4)
-          goto yy1107;
-        goto yy1063;
+          goto yy1134;
+        goto yy1090;
       }
     }
-  yy1102:
+  yy1129:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1100;
-    goto yy1063;
-  yy1103:
+      goto yy1127;
+    goto yy1090;
+  yy1130:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1102;
-    goto yy1063;
-  yy1104:
+      goto yy1129;
+    goto yy1090;
+  yy1131:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1102;
-    goto yy1063;
-  yy1105:
+      goto yy1129;
+    goto yy1090;
+  yy1132:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1104;
-    goto yy1063;
-  yy1106:
+      goto yy1131;
+    goto yy1090;
+  yy1133:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0xBF)
-      goto yy1104;
-    goto yy1063;
-  yy1107:
+      goto yy1131;
+    goto yy1090;
+  yy1134:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x8F)
-      goto yy1104;
-    goto yy1063;
-  yy1108:
+      goto yy1131;
+    goto yy1090;
+  yy1135:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1063;
+      goto yy1090;
     if (yych <= 0x9F)
-      goto yy1102;
-    goto yy1063;
-  yy1109:
+      goto yy1129;
+    goto yy1090;
+  yy1136:
     ++p;
-  yy1110 : { return (bufsize_t)(p - start); }
-  yy1111:
+  yy1137 : { return (bufsize_t)(p - start); }
+  yy1138:
     yyaccept = 3;
     marker = ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1100;
+      goto yy1127;
     }
     if (yych <= 0xE0) {
       if (yych <= '\\') {
         if (yych <= 0x00)
-          goto yy1110;
+          goto yy1137;
         if (yych <= '"')
-          goto yy1109;
-        goto yy1098;
+          goto yy1136;
+        goto yy1125;
       } else {
         if (yych <= 0xC1)
-          goto yy1110;
+          goto yy1137;
         if (yych <= 0xDF)
-          goto yy1102;
-        goto yy1103;
+          goto yy1129;
+        goto yy1130;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1108;
-        goto yy1104;
+          goto yy1135;
+        goto yy1131;
       } else {
         if (yych <= 0xF0)
-          goto yy1105;
+          goto yy1132;
         if (yych <= 0xF3)
-          goto yy1106;
+          goto yy1133;
         if (yych <= 0xF4)
-          goto yy1107;
-        goto yy1110;
+          goto yy1134;
+        goto yy1137;
       }
     }
   }
@@ -17727,104 +18402,104 @@ bufsize_t _scan_spacechars(const unsigned char *p) {
     if (yych <= 0xC1) {
       if (yych <= '\r') {
         if (yych <= 0x08)
-          goto yy1118;
+          goto yy1145;
         if (yych == '\n')
-          goto yy1116;
-        goto yy1115;
+          goto yy1143;
+        goto yy1142;
       } else {
         if (yych == ' ')
-          goto yy1115;
+          goto yy1142;
         if (yych <= 0x7F)
-          goto yy1118;
+          goto yy1145;
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy1120;
+          goto yy1147;
         if (yych <= 0xE0)
-          goto yy1122;
+          goto yy1149;
         if (yych <= 0xEC)
-          goto yy1123;
-        goto yy1127;
+          goto yy1150;
+        goto yy1154;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy1123;
-          goto yy1124;
+            goto yy1150;
+          goto yy1151;
         } else {
           if (yych <= 0xF3)
-            goto yy1125;
+            goto yy1152;
           if (yych <= 0xF4)
-            goto yy1126;
+            goto yy1153;
         }
       }
     }
-  yy1114 : { return (bufsize_t)(p - start); }
-  yy1115:
+  yy1141 : { return (bufsize_t)(p - start); }
+  yy1142:
     yych = *++p;
-    goto yy1117;
-  yy1116:
+    goto yy1144;
+  yy1143:
     ++p;
     yych = *p;
-  yy1117:
+  yy1144:
     if (yybm[0 + yych] & 128) {
-      goto yy1116;
+      goto yy1143;
     }
-    goto yy1114;
-  yy1118:
+    goto yy1141;
+  yy1145:
     ++p;
     { return 0; }
-  yy1120:
+  yy1147:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0xBF)
-      goto yy1118;
-  yy1121:
+      goto yy1145;
+  yy1148:
     p = marker;
-    goto yy1114;
-  yy1122:
+    goto yy1141;
+  yy1149:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0xBF)
-      goto yy1120;
-    goto yy1121;
-  yy1123:
+      goto yy1147;
+    goto yy1148;
+  yy1150:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0xBF)
-      goto yy1120;
-    goto yy1121;
-  yy1124:
+      goto yy1147;
+    goto yy1148;
+  yy1151:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0xBF)
-      goto yy1123;
-    goto yy1121;
-  yy1125:
+      goto yy1150;
+    goto yy1148;
+  yy1152:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0xBF)
-      goto yy1123;
-    goto yy1121;
-  yy1126:
+      goto yy1150;
+    goto yy1148;
+  yy1153:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0x8F)
-      goto yy1123;
-    goto yy1121;
-  yy1127:
+      goto yy1150;
+    goto yy1148;
+  yy1154:
     ++p;
     if ((yych = *p) <= 0x7F)
-      goto yy1121;
+      goto yy1148;
     if (yych <= 0x9F)
-      goto yy1120;
-    goto yy1121;
+      goto yy1147;
+    goto yy1148;
   }
 }
 
@@ -17853,178 +18528,178 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) {
     if (yych <= 0xDF) {
       if (yych <= '"') {
         if (yych != '\n')
-          goto yy1132;
+          goto yy1159;
       } else {
         if (yych <= '#')
-          goto yy1131;
+          goto yy1158;
         if (yych <= 0x7F)
-          goto yy1132;
+          goto yy1159;
         if (yych >= 0xC2)
-          goto yy1133;
+          goto yy1160;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych <= 0xE0)
-          goto yy1135;
+          goto yy1162;
         if (yych == 0xED)
-          goto yy1140;
-        goto yy1136;
+          goto yy1167;
+        goto yy1163;
       } else {
         if (yych <= 0xF0)
-          goto yy1137;
+          goto yy1164;
         if (yych <= 0xF3)
-          goto yy1138;
+          goto yy1165;
         if (yych <= 0xF4)
-          goto yy1139;
+          goto yy1166;
       }
     }
-  yy1130 : { return 0; }
-  yy1131:
+  yy1157 : { return 0; }
+  yy1158:
     yych = *(marker = ++p);
     if (yybm[0 + yych] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1141;
-      goto yy1130;
+        goto yy1168;
+      goto yy1157;
     } else {
       if (yych <= '\r')
-        goto yy1141;
+        goto yy1168;
       if (yych == '#')
-        goto yy1145;
-      goto yy1130;
+        goto yy1172;
+      goto yy1157;
     }
-  yy1132:
+  yy1159:
     yych = *++p;
-    goto yy1130;
-  yy1133:
+    goto yy1157;
+  yy1160:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0xBF)
-      goto yy1132;
-  yy1134:
+      goto yy1159;
+  yy1161:
     p = marker;
-    goto yy1130;
-  yy1135:
+    goto yy1157;
+  yy1162:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0xBF)
-      goto yy1133;
-    goto yy1134;
-  yy1136:
+      goto yy1160;
+    goto yy1161;
+  yy1163:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0xBF)
-      goto yy1133;
-    goto yy1134;
-  yy1137:
+      goto yy1160;
+    goto yy1161;
+  yy1164:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0xBF)
-      goto yy1136;
-    goto yy1134;
-  yy1138:
+      goto yy1163;
+    goto yy1161;
+  yy1165:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0xBF)
-      goto yy1136;
-    goto yy1134;
-  yy1139:
+      goto yy1163;
+    goto yy1161;
+  yy1166:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0x8F)
-      goto yy1136;
-    goto yy1134;
-  yy1140:
+      goto yy1163;
+    goto yy1161;
+  yy1167:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1134;
+      goto yy1161;
     if (yych <= 0x9F)
-      goto yy1133;
-    goto yy1134;
-  yy1141:
+      goto yy1160;
+    goto yy1161;
+  yy1168:
     ++p;
-  yy1142 : { return (bufsize_t)(p - start); }
-  yy1143:
+  yy1169 : { return (bufsize_t)(p - start); }
+  yy1170:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
-    goto yy1142;
-  yy1145:
+    goto yy1169;
+  yy1172:
     yych = *++p;
     if (yybm[0 + yych] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1141;
-      goto yy1134;
+        goto yy1168;
+      goto yy1161;
     } else {
       if (yych <= '\r')
-        goto yy1141;
+        goto yy1168;
       if (yych != '#')
-        goto yy1134;
+        goto yy1161;
     }
     yych = *++p;
     if (yybm[0 + yych] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1141;
-      goto yy1134;
+        goto yy1168;
+      goto yy1161;
     } else {
       if (yych <= '\r')
-        goto yy1141;
+        goto yy1168;
       if (yych != '#')
-        goto yy1134;
+        goto yy1161;
     }
     yych = *++p;
     if (yybm[0 + yych] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1141;
-      goto yy1134;
+        goto yy1168;
+      goto yy1161;
     } else {
       if (yych <= '\r')
-        goto yy1141;
+        goto yy1168;
       if (yych != '#')
-        goto yy1134;
+        goto yy1161;
     }
     yych = *++p;
     if (yybm[0 + yych] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1141;
-      goto yy1134;
+        goto yy1168;
+      goto yy1161;
     } else {
       if (yych <= '\r')
-        goto yy1141;
+        goto yy1168;
       if (yych != '#')
-        goto yy1134;
+        goto yy1161;
     }
     ++p;
     if (yybm[0 + (yych = *p)] & 128) {
-      goto yy1143;
+      goto yy1170;
     }
     if (yych == '\n')
-      goto yy1141;
+      goto yy1168;
     if (yych == '\r')
-      goto yy1141;
-    goto yy1134;
+      goto yy1168;
+    goto yy1161;
   }
 }
 
@@ -18053,187 +18728,187 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) {
     if (yych <= 0xC1) {
       if (yych <= '-') {
         if (yych == '\n')
-          goto yy1152;
+          goto yy1179;
         if (yych <= ',')
-          goto yy1155;
-        goto yy1154;
+          goto yy1182;
+        goto yy1181;
       } else {
         if (yych == '=')
-          goto yy1153;
+          goto yy1180;
         if (yych <= 0x7F)
-          goto yy1155;
+          goto yy1182;
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy1156;
+          goto yy1183;
         if (yych <= 0xE0)
-          goto yy1158;
+          goto yy1185;
         if (yych <= 0xEC)
-          goto yy1159;
-        goto yy1163;
+          goto yy1186;
+        goto yy1190;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy1159;
-          goto yy1160;
+            goto yy1186;
+          goto yy1187;
         } else {
           if (yych <= 0xF3)
-            goto yy1161;
+            goto yy1188;
           if (yych <= 0xF4)
-            goto yy1162;
+            goto yy1189;
         }
       }
     }
-  yy1152 : { return 0; }
-  yy1153:
+  yy1179 : { return 0; }
+  yy1180:
     yych = *(marker = ++p);
     if (yybm[0 + yych] & 128) {
-      goto yy1174;
+      goto yy1201;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1172;
-      goto yy1152;
+        goto yy1199;
+      goto yy1179;
     } else {
       if (yych <= '\r')
-        goto yy1172;
+        goto yy1199;
       if (yych == ' ')
-        goto yy1170;
-      goto yy1152;
+        goto yy1197;
+      goto yy1179;
     }
-  yy1154:
+  yy1181:
     yych = *(marker = ++p);
     if (yybm[0 + yych] & 32) {
-      goto yy1164;
+      goto yy1191;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1166;
-      goto yy1152;
+        goto yy1193;
+      goto yy1179;
     } else {
       if (yych <= '\r')
-        goto yy1166;
+        goto yy1193;
       if (yych == '-')
-        goto yy1168;
-      goto yy1152;
+        goto yy1195;
+      goto yy1179;
     }
-  yy1155:
+  yy1182:
     yych = *++p;
-    goto yy1152;
-  yy1156:
+    goto yy1179;
+  yy1183:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0xBF)
-      goto yy1155;
-  yy1157:
+      goto yy1182;
+  yy1184:
     p = marker;
-    goto yy1152;
-  yy1158:
+    goto yy1179;
+  yy1185:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0xBF)
-      goto yy1156;
-    goto yy1157;
-  yy1159:
+      goto yy1183;
+    goto yy1184;
+  yy1186:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0xBF)
-      goto yy1156;
-    goto yy1157;
-  yy1160:
+      goto yy1183;
+    goto yy1184;
+  yy1187:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0xBF)
-      goto yy1159;
-    goto yy1157;
-  yy1161:
+      goto yy1186;
+    goto yy1184;
+  yy1188:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0xBF)
-      goto yy1159;
-    goto yy1157;
-  yy1162:
+      goto yy1186;
+    goto yy1184;
+  yy1189:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0x8F)
-      goto yy1159;
-    goto yy1157;
-  yy1163:
+      goto yy1186;
+    goto yy1184;
+  yy1190:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1157;
+      goto yy1184;
     if (yych <= 0x9F)
-      goto yy1156;
-    goto yy1157;
-  yy1164:
+      goto yy1183;
+    goto yy1184;
+  yy1191:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 32) {
-      goto yy1164;
+      goto yy1191;
     }
     if (yych == '\n')
-      goto yy1166;
+      goto yy1193;
     if (yych != '\r')
-      goto yy1157;
-  yy1166:
+      goto yy1184;
+  yy1193:
     ++p;
     { return 2; }
-  yy1168:
+  yy1195:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 32) {
-      goto yy1164;
+      goto yy1191;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1166;
-      goto yy1157;
+        goto yy1193;
+      goto yy1184;
     } else {
       if (yych <= '\r')
-        goto yy1166;
+        goto yy1193;
       if (yych == '-')
-        goto yy1168;
-      goto yy1157;
+        goto yy1195;
+      goto yy1184;
     }
-  yy1170:
+  yy1197:
     ++p;
     yych = *p;
     if (yych <= '\f') {
       if (yych != '\n')
-        goto yy1157;
+        goto yy1184;
     } else {
       if (yych <= '\r')
-        goto yy1172;
+        goto yy1199;
       if (yych == ' ')
-        goto yy1170;
-      goto yy1157;
+        goto yy1197;
+      goto yy1184;
     }
-  yy1172:
+  yy1199:
     ++p;
     { return 1; }
-  yy1174:
+  yy1201:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1174;
+      goto yy1201;
     }
     if (yych <= '\f') {
       if (yych == '\n')
-        goto yy1172;
-      goto yy1157;
+        goto yy1199;
+      goto yy1184;
     } else {
       if (yych <= '\r')
-        goto yy1172;
+        goto yy1199;
       if (yych == ' ')
-        goto yy1170;
-      goto yy1157;
+        goto yy1197;
+      goto yy1184;
     }
   }
 }
@@ -18248,9 +18923,9 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
   {
     unsigned char yych;
     static const unsigned char yybm[] = {
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 16, 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,  248, 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, 16, 0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
         0, 0,  0, 0, 0, 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,
@@ -18265,347 +18940,269 @@ bufsize_t _scan_thematic_break(const unsigned char *p) {
     if (yych <= 0x7F) {
       if (yych <= '*') {
         if (yych == '\n')
-          goto yy1178;
+          goto yy1205;
         if (yych <= ')')
-          goto yy1182;
-        goto yy1179;
+          goto yy1209;
+        goto yy1206;
       } else {
         if (yych <= '-') {
           if (yych <= ',')
-            goto yy1182;
-          goto yy1181;
+            goto yy1209;
+          goto yy1208;
         } else {
           if (yych == '_')
-            goto yy1180;
-          goto yy1182;
+            goto yy1207;
+          goto yy1209;
         }
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF) {
           if (yych >= 0xC2)
-            goto yy1183;
+            goto yy1210;
         } else {
           if (yych <= 0xE0)
-            goto yy1185;
+            goto yy1212;
           if (yych <= 0xEC)
-            goto yy1186;
-          goto yy1190;
+            goto yy1213;
+          goto yy1217;
         }
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy1186;
-          goto yy1187;
+            goto yy1213;
+          goto yy1214;
         } else {
           if (yych <= 0xF3)
-            goto yy1188;
+            goto yy1215;
           if (yych <= 0xF4)
-            goto yy1189;
+            goto yy1216;
         }
       }
     }
-  yy1178 : { return 0; }
-  yy1179:
+  yy1205 : { return 0; }
+  yy1206:
     yych = *(marker = ++p);
     if (yych == ' ')
-      goto yy1215;
+      goto yy1238;
     if (yych == '*')
-      goto yy1217;
-    goto yy1178;
-  yy1180:
+      goto yy1240;
+    goto yy1205;
+  yy1207:
     yych = *(marker = ++p);
     if (yych == ' ')
-      goto yy1203;
+      goto yy1228;
     if (yych == '_')
-      goto yy1205;
-    goto yy1178;
-  yy1181:
+      goto yy1230;
+    goto yy1205;
+  yy1208:
     yych = *(marker = ++p);
     if (yybm[0 + yych] & 8) {
-      goto yy1191;
+      goto yy1218;
     }
     if (yych == '-')
-      goto yy1193;
-    goto yy1178;
-  yy1182:
+      goto yy1220;
+    goto yy1205;
+  yy1209:
     yych = *++p;
-    goto yy1178;
-  yy1183:
+    goto yy1205;
+  yy1210:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0xBF)
-      goto yy1182;
-  yy1184:
+      goto yy1209;
+  yy1211:
     p = marker;
-    goto yy1178;
-  yy1185:
+    goto yy1205;
+  yy1212:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0xBF)
-      goto yy1183;
-    goto yy1184;
-  yy1186:
+      goto yy1210;
+    goto yy1211;
+  yy1213:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0xBF)
-      goto yy1183;
-    goto yy1184;
-  yy1187:
+      goto yy1210;
+    goto yy1211;
+  yy1214:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0xBF)
-      goto yy1186;
-    goto yy1184;
-  yy1188:
+      goto yy1213;
+    goto yy1211;
+  yy1215:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0xBF)
-      goto yy1186;
-    goto yy1184;
-  yy1189:
+      goto yy1213;
+    goto yy1211;
+  yy1216:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0x8F)
-      goto yy1186;
-    goto yy1184;
-  yy1190:
+      goto yy1213;
+    goto yy1211;
+  yy1217:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1184;
+      goto yy1211;
     if (yych <= 0x9F)
-      goto yy1183;
-    goto yy1184;
-  yy1191:
+      goto yy1210;
+    goto yy1211;
+  yy1218:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 8) {
-      goto yy1191;
+      goto yy1218;
     }
     if (yych != '-')
-      goto yy1184;
-  yy1193:
+      goto yy1211;
+  yy1220:
     ++p;
     yych = *p;
     if (yych == ' ')
-      goto yy1193;
+      goto yy1220;
     if (yych != '-')
-      goto yy1184;
-  yy1195:
+      goto yy1211;
+  yy1222:
     ++p;
     yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1184;
-      } else {
-        if (yych <= '\n')
-          goto yy1199;
-        if (yych <= '\f')
-          goto yy1184;
-        goto yy1199;
-      }
+    if (yybm[0 + yych] & 16) {
+      goto yy1222;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x08)
+        goto yy1211;
+      if (yych >= '\n')
+        goto yy1226;
     } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1184;
-        goto yy1195;
-      } else {
-        if (yych == '-')
-          goto yy1201;
-        goto yy1184;
-      }
+      if (yych == '\r')
+        goto yy1226;
+      goto yy1211;
     }
-  yy1197:
+  yy1224:
     ++p;
     yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1197;
+    if (yybm[0 + yych] & 32) {
+      goto yy1224;
     }
     if (yych <= 0x08)
-      goto yy1184;
+      goto yy1211;
     if (yych <= '\n')
-      goto yy1199;
+      goto yy1226;
     if (yych != '\r')
-      goto yy1184;
-  yy1199:
+      goto yy1211;
+  yy1226:
     ++p;
     { return (bufsize_t)(p - start); }
-  yy1201:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1201;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x08)
-        goto yy1184;
-      if (yych <= '\t')
-        goto yy1197;
-      goto yy1199;
-    } else {
-      if (yych == '\r')
-        goto yy1199;
-      goto yy1184;
-    }
-  yy1203:
+  yy1228:
     ++p;
     yych = *p;
     if (yych == ' ')
-      goto yy1203;
+      goto yy1228;
     if (yych != '_')
-      goto yy1184;
-  yy1205:
+      goto yy1211;
+  yy1230:
     ++p;
     yych = *p;
     if (yych == ' ')
-      goto yy1205;
+      goto yy1230;
     if (yych != '_')
-      goto yy1184;
-  yy1207:
+      goto yy1211;
+  yy1232:
     ++p;
     yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1184;
-      } else {
-        if (yych <= '\n')
-          goto yy1211;
-        if (yych <= '\f')
-          goto yy1184;
+    if (yybm[0 + yych] & 64) {
+      goto yy1232;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x08)
         goto yy1211;
-      }
+      if (yych >= '\n')
+        goto yy1236;
     } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1184;
-        goto yy1207;
-      } else {
-        if (yych == '_')
-          goto yy1213;
-        goto yy1184;
-      }
+      if (yych == '\r')
+        goto yy1236;
+      goto yy1211;
     }
-  yy1209:
+  yy1234:
     ++p;
     yych = *p;
     if (yych <= '\f') {
       if (yych <= 0x08)
-        goto yy1184;
+        goto yy1211;
       if (yych <= '\t')
-        goto yy1209;
+        goto yy1234;
       if (yych >= '\v')
-        goto yy1184;
+        goto yy1211;
     } else {
       if (yych <= '\r')
-        goto yy1211;
+        goto yy1236;
       if (yych == ' ')
-        goto yy1209;
-      goto yy1184;
-    }
-  yy1211:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1213:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1213;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x08)
-        goto yy1184;
-      if (yych <= '\t')
-        goto yy1209;
+        goto yy1234;
       goto yy1211;
-    } else {
-      if (yych == '\r')
-        goto yy1211;
-      goto yy1184;
     }
-  yy1215:
+  yy1236:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1238:
     ++p;
     yych = *p;
     if (yych == ' ')
-      goto yy1215;
+      goto yy1238;
     if (yych != '*')
-      goto yy1184;
-  yy1217:
+      goto yy1211;
+  yy1240:
     ++p;
     yych = *p;
     if (yych == ' ')
-      goto yy1217;
+      goto yy1240;
     if (yych != '*')
-      goto yy1184;
-  yy1219:
+      goto yy1211;
+  yy1242:
     ++p;
     yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1184;
-      } else {
-        if (yych <= '\n')
-          goto yy1223;
-        if (yych <= '\f')
-          goto yy1184;
-        goto yy1223;
-      }
+    if (yybm[0 + yych] & 128) {
+      goto yy1242;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x08)
+        goto yy1211;
+      if (yych >= '\n')
+        goto yy1246;
     } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1184;
-        goto yy1219;
-      } else {
-        if (yych == '*')
-          goto yy1225;
-        goto yy1184;
-      }
+      if (yych == '\r')
+        goto yy1246;
+      goto yy1211;
     }
-  yy1221:
+  yy1244:
     ++p;
     yych = *p;
     if (yych <= '\f') {
       if (yych <= 0x08)
-        goto yy1184;
+        goto yy1211;
       if (yych <= '\t')
-        goto yy1221;
+        goto yy1244;
       if (yych >= '\v')
-        goto yy1184;
+        goto yy1211;
     } else {
       if (yych <= '\r')
-        goto yy1223;
+        goto yy1246;
       if (yych == ' ')
-        goto yy1221;
-      goto yy1184;
+        goto yy1244;
+      goto yy1211;
     }
-  yy1223:
+  yy1246:
     ++p;
     { return (bufsize_t)(p - start); }
-  yy1225:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1225;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x08)
-        goto yy1184;
-      if (yych <= '\t')
-        goto yy1221;
-      goto yy1223;
-    } else {
-      if (yych == '\r')
-        goto yy1223;
-      goto yy1184;
-    }
   }
 }
 
@@ -18641,374 +19238,374 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) {
     if (yych <= 0xC1) {
       if (yych <= '`') {
         if (yych == '\n')
-          goto yy1229;
+          goto yy1250;
         if (yych <= '_')
-          goto yy1232;
-        goto yy1230;
+          goto yy1253;
+        goto yy1251;
       } else {
         if (yych == '~')
-          goto yy1231;
+          goto yy1252;
         if (yych <= 0x7F)
-          goto yy1232;
+          goto yy1253;
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy1233;
+          goto yy1254;
         if (yych <= 0xE0)
-          goto yy1235;
+          goto yy1256;
         if (yych <= 0xEC)
-          goto yy1236;
-        goto yy1240;
+          goto yy1257;
+        goto yy1261;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy1236;
-          goto yy1237;
+            goto yy1257;
+          goto yy1258;
         } else {
           if (yych <= 0xF3)
-            goto yy1238;
+            goto yy1259;
           if (yych <= 0xF4)
-            goto yy1239;
+            goto yy1260;
         }
       }
     }
-  yy1229 : { return 0; }
-  yy1230:
+  yy1250 : { return 0; }
+  yy1251:
     yych = *(marker = ++p);
     if (yych == '`')
-      goto yy1255;
-    goto yy1229;
-  yy1231:
+      goto yy1276;
+    goto yy1250;
+  yy1252:
     yych = *(marker = ++p);
     if (yych == '~')
-      goto yy1241;
-    goto yy1229;
-  yy1232:
+      goto yy1262;
+    goto yy1250;
+  yy1253:
     yych = *++p;
-    goto yy1229;
-  yy1233:
+    goto yy1250;
+  yy1254:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1232;
-  yy1234:
+      goto yy1253;
+  yy1255:
     p = marker;
-    goto yy1229;
-  yy1235:
+    goto yy1250;
+  yy1256:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1233;
-    goto yy1234;
-  yy1236:
+      goto yy1254;
+    goto yy1255;
+  yy1257:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1233;
-    goto yy1234;
-  yy1237:
+      goto yy1254;
+    goto yy1255;
+  yy1258:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1236;
-    goto yy1234;
-  yy1238:
+      goto yy1257;
+    goto yy1255;
+  yy1259:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1236;
-    goto yy1234;
-  yy1239:
+      goto yy1257;
+    goto yy1255;
+  yy1260:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0x8F)
-      goto yy1236;
-    goto yy1234;
-  yy1240:
+      goto yy1257;
+    goto yy1255;
+  yy1261:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0x9F)
-      goto yy1233;
-    goto yy1234;
-  yy1241:
+      goto yy1254;
+    goto yy1255;
+  yy1262:
     yych = *++p;
     if (yybm[0 + yych] & 16) {
-      goto yy1242;
+      goto yy1263;
     }
-    goto yy1234;
-  yy1242:
+    goto yy1255;
+  yy1263:
+    marker = p + 1;
     ++p;
     yych = *p;
-    marker = p;
     if (yybm[0 + yych] & 32) {
-      goto yy1244;
+      goto yy1265;
     }
     if (yych <= 0xE0) {
       if (yych <= '~') {
         if (yych <= 0x00)
-          goto yy1234;
+          goto yy1255;
         if (yych <= '\r')
-          goto yy1253;
-        goto yy1242;
+          goto yy1274;
+        goto yy1263;
       } else {
         if (yych <= 0xC1)
-          goto yy1234;
+          goto yy1255;
         if (yych <= 0xDF)
-          goto yy1246;
-        goto yy1247;
+          goto yy1267;
+        goto yy1268;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1252;
-        goto yy1248;
+          goto yy1273;
+        goto yy1269;
       } else {
         if (yych <= 0xF0)
-          goto yy1249;
+          goto yy1270;
         if (yych <= 0xF3)
-          goto yy1250;
+          goto yy1271;
         if (yych <= 0xF4)
-          goto yy1251;
-        goto yy1234;
+          goto yy1272;
+        goto yy1255;
       }
     }
-  yy1244:
+  yy1265:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 32) {
-      goto yy1244;
+      goto yy1265;
     }
     if (yych <= 0xEC) {
       if (yych <= 0xC1) {
         if (yych <= 0x00)
-          goto yy1234;
+          goto yy1255;
         if (yych <= '\r')
-          goto yy1253;
-        goto yy1234;
+          goto yy1274;
+        goto yy1255;
       } else {
         if (yych <= 0xDF)
-          goto yy1246;
+          goto yy1267;
         if (yych <= 0xE0)
-          goto yy1247;
-        goto yy1248;
+          goto yy1268;
+        goto yy1269;
       }
     } else {
       if (yych <= 0xF0) {
         if (yych <= 0xED)
-          goto yy1252;
+          goto yy1273;
         if (yych <= 0xEF)
-          goto yy1248;
-        goto yy1249;
+          goto yy1269;
+        goto yy1270;
       } else {
         if (yych <= 0xF3)
-          goto yy1250;
+          goto yy1271;
         if (yych <= 0xF4)
-          goto yy1251;
-        goto yy1234;
+          goto yy1272;
+        goto yy1255;
       }
     }
-  yy1246:
+  yy1267:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1244;
-    goto yy1234;
-  yy1247:
+      goto yy1265;
+    goto yy1255;
+  yy1268:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1246;
-    goto yy1234;
-  yy1248:
+      goto yy1267;
+    goto yy1255;
+  yy1269:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1246;
-    goto yy1234;
-  yy1249:
+      goto yy1267;
+    goto yy1255;
+  yy1270:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1248;
-    goto yy1234;
-  yy1250:
+      goto yy1269;
+    goto yy1255;
+  yy1271:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1248;
-    goto yy1234;
-  yy1251:
+      goto yy1269;
+    goto yy1255;
+  yy1272:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0x8F)
-      goto yy1248;
-    goto yy1234;
-  yy1252:
+      goto yy1269;
+    goto yy1255;
+  yy1273:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0x9F)
-      goto yy1246;
-    goto yy1234;
-  yy1253:
+      goto yy1267;
+    goto yy1255;
+  yy1274:
     ++p;
     p = marker;
     { return (bufsize_t)(p - start); }
-  yy1255:
+  yy1276:
     yych = *++p;
     if (yybm[0 + yych] & 64) {
-      goto yy1256;
+      goto yy1277;
     }
-    goto yy1234;
-  yy1256:
+    goto yy1255;
+  yy1277:
+    marker = p + 1;
     ++p;
     yych = *p;
-    marker = p;
     if (yybm[0 + yych] & 128) {
-      goto yy1258;
+      goto yy1279;
     }
     if (yych <= 0xE0) {
       if (yych <= '`') {
         if (yych <= 0x00)
-          goto yy1234;
+          goto yy1255;
         if (yych <= '\r')
-          goto yy1267;
-        goto yy1256;
+          goto yy1288;
+        goto yy1277;
       } else {
         if (yych <= 0xC1)
-          goto yy1234;
+          goto yy1255;
         if (yych <= 0xDF)
-          goto yy1260;
-        goto yy1261;
+          goto yy1281;
+        goto yy1282;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych == 0xED)
-          goto yy1266;
-        goto yy1262;
+          goto yy1287;
+        goto yy1283;
       } else {
         if (yych <= 0xF0)
-          goto yy1263;
+          goto yy1284;
         if (yych <= 0xF3)
-          goto yy1264;
+          goto yy1285;
         if (yych <= 0xF4)
-          goto yy1265;
-        goto yy1234;
+          goto yy1286;
+        goto yy1255;
       }
     }
-  yy1258:
+  yy1279:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 128) {
-      goto yy1258;
+      goto yy1279;
     }
     if (yych <= 0xEC) {
       if (yych <= 0xC1) {
         if (yych <= 0x00)
-          goto yy1234;
+          goto yy1255;
         if (yych <= '\r')
-          goto yy1267;
-        goto yy1234;
+          goto yy1288;
+        goto yy1255;
       } else {
         if (yych <= 0xDF)
-          goto yy1260;
+          goto yy1281;
         if (yych <= 0xE0)
-          goto yy1261;
-        goto yy1262;
+          goto yy1282;
+        goto yy1283;
       }
     } else {
       if (yych <= 0xF0) {
         if (yych <= 0xED)
-          goto yy1266;
+          goto yy1287;
         if (yych <= 0xEF)
-          goto yy1262;
-        goto yy1263;
+          goto yy1283;
+        goto yy1284;
       } else {
         if (yych <= 0xF3)
-          goto yy1264;
+          goto yy1285;
         if (yych <= 0xF4)
-          goto yy1265;
-        goto yy1234;
+          goto yy1286;
+        goto yy1255;
       }
     }
-  yy1260:
+  yy1281:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1258;
-    goto yy1234;
-  yy1261:
+      goto yy1279;
+    goto yy1255;
+  yy1282:
     ++p;
     yych = *p;
     if (yych <= 0x9F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1260;
-    goto yy1234;
-  yy1262:
+      goto yy1281;
+    goto yy1255;
+  yy1283:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1260;
-    goto yy1234;
-  yy1263:
+      goto yy1281;
+    goto yy1255;
+  yy1284:
     ++p;
     yych = *p;
     if (yych <= 0x8F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1262;
-    goto yy1234;
-  yy1264:
+      goto yy1283;
+    goto yy1255;
+  yy1285:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0xBF)
-      goto yy1262;
-    goto yy1234;
-  yy1265:
+      goto yy1283;
+    goto yy1255;
+  yy1286:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0x8F)
-      goto yy1262;
-    goto yy1234;
-  yy1266:
+      goto yy1283;
+    goto yy1255;
+  yy1287:
     ++p;
     yych = *p;
     if (yych <= 0x7F)
-      goto yy1234;
+      goto yy1255;
     if (yych <= 0x9F)
-      goto yy1260;
-    goto yy1234;
-  yy1267:
+      goto yy1281;
+    goto yy1255;
+  yy1288:
     ++p;
     p = marker;
     { return (bufsize_t)(p - start); }
@@ -19040,190 +19637,190 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) {
     if (yych <= 0xC1) {
       if (yych <= '`') {
         if (yych == '\n')
-          goto yy1271;
+          goto yy1292;
         if (yych <= '_')
-          goto yy1274;
-        goto yy1272;
+          goto yy1295;
+        goto yy1293;
       } else {
         if (yych == '~')
-          goto yy1273;
+          goto yy1294;
         if (yych <= 0x7F)
-          goto yy1274;
+          goto yy1295;
       }
     } else {
       if (yych <= 0xED) {
         if (yych <= 0xDF)
-          goto yy1275;
+          goto yy1296;
         if (yych <= 0xE0)
-          goto yy1277;
+          goto yy1298;
         if (yych <= 0xEC)
-          goto yy1278;
-        goto yy1282;
+          goto yy1299;
+        goto yy1303;
       } else {
         if (yych <= 0xF0) {
           if (yych <= 0xEF)
-            goto yy1278;
-          goto yy1279;
+            goto yy1299;
+          goto yy1300;
         } else {
           if (yych <= 0xF3)
-            goto yy1280;
+            goto yy1301;
           if (yych <= 0xF4)
-            goto yy1281;
+            goto yy1302;
         }
       }
     }
-  yy1271 : { return 0; }
-  yy1272:
+  yy1292 : { return 0; }
+  yy1293:
     yych = *(marker = ++p);
     if (yych == '`')
-      goto yy1290;
-    goto yy1271;
-  yy1273:
+      goto yy1311;
+    goto yy1292;
+  yy1294:
     yych = *(marker = ++p);
     if (yych == '~')
-      goto yy1283;
-    goto yy1271;
-  yy1274:
+      goto yy1304;
+    goto yy1292;
+  yy1295:
     yych = *++p;
-    goto yy1271;
-  yy1275:
+    goto yy1292;
+  yy1296:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0xBF)
-      goto yy1274;
-  yy1276:
+      goto yy1295;
+  yy1297:
     p = marker;
-    goto yy1271;
-  yy1277:
+    goto yy1292;
+  yy1298:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0xBF)
-      goto yy1275;
-    goto yy1276;
-  yy1278:
+      goto yy1296;
+    goto yy1297;
+  yy1299:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0xBF)
-      goto yy1275;
-    goto yy1276;
-  yy1279:
+      goto yy1296;
+    goto yy1297;
+  yy1300:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0xBF)
-      goto yy1278;
-    goto yy1276;
-  yy1280:
+      goto yy1299;
+    goto yy1297;
+  yy1301:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0xBF)
-      goto yy1278;
-    goto yy1276;
-  yy1281:
+      goto yy1299;
+    goto yy1297;
+  yy1302:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0x8F)
-      goto yy1278;
-    goto yy1276;
-  yy1282:
+      goto yy1299;
+    goto yy1297;
+  yy1303:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1276;
+      goto yy1297;
     if (yych <= 0x9F)
-      goto yy1275;
-    goto yy1276;
-  yy1283:
+      goto yy1296;
+    goto yy1297;
+  yy1304:
     yych = *++p;
     if (yybm[0 + yych] & 32) {
-      goto yy1284;
+      goto yy1305;
     }
-    goto yy1276;
-  yy1284:
+    goto yy1297;
+  yy1305:
+    marker = p + 1;
     ++p;
     yych = *p;
-    marker = p;
     if (yybm[0 + yych] & 64) {
-      goto yy1286;
+      goto yy1307;
     }
     if (yych <= '\f') {
       if (yych <= 0x08)
-        goto yy1276;
+        goto yy1297;
       if (yych <= '\n')
-        goto yy1288;
-      goto yy1276;
+        goto yy1309;
+      goto yy1297;
     } else {
       if (yych <= '\r')
-        goto yy1288;
+        goto yy1309;
       if (yych == '~')
-        goto yy1284;
-      goto yy1276;
+        goto yy1305;
+      goto yy1297;
     }
-  yy1286:
+  yy1307:
     ++p;
     yych = *p;
     if (yybm[0 + yych] & 64) {
-      goto yy1286;
+      goto yy1307;
     }
     if (yych <= 0x08)
-      goto yy1276;
+      goto yy1297;
     if (yych <= '\n')
-      goto yy1288;
+      goto yy1309;
     if (yych != '\r')
-      goto yy1276;
-  yy1288:
+      goto yy1297;
+  yy1309:
     ++p;
     p = marker;
     { return (bufsize_t)(p - start); }
-  yy1290:
+  yy1311:
     yych = *++p;
     if (yybm[0 + yych] & 128) {
-      goto yy1291;
+      goto yy1312;
     }
-    goto yy1276;
-  yy1291:
+    goto yy1297;
+  yy1312:
+    marker = p + 1;
     ++p;
     yych = *p;
-    marker = p;
     if (yybm[0 + yych] & 128) {
-      goto yy1291;
+      goto yy1312;
     }
     if (yych <= '\f') {
       if (yych <= 0x08)
-        goto yy1276;
+        goto yy1297;
       if (yych <= '\t')
-        goto yy1293;
+        goto yy1314;
       if (yych <= '\n')
-        goto yy1295;
-      goto yy1276;
+        goto yy1316;
+      goto yy1297;
     } else {
       if (yych <= '\r')
-        goto yy1295;
+        goto yy1316;
       if (yych != ' ')
-        goto yy1276;
+        goto yy1297;
     }
-  yy1293:
+  yy1314:
     ++p;
     yych = *p;
     if (yych <= '\f') {
       if (yych <= 0x08)
-        goto yy1276;
+        goto yy1297;
       if (yych <= '\t')
-        goto yy1293;
+        goto yy1314;
       if (yych >= '\v')
-        goto yy1276;
+        goto yy1297;
     } else {
       if (yych <= '\r')
-        goto yy1295;
+        goto yy1316;
       if (yych == ' ')
-        goto yy1293;
-      goto yy1276;
+        goto yy1314;
+      goto yy1297;
     }
-  yy1295:
+  yy1316:
     ++p;
     p = marker;
     { return (bufsize_t)(p - start); }
@@ -19242,997 +19839,997 @@ bufsize_t _scan_entity(const unsigned char *p) {
     if (yych <= 0xDF) {
       if (yych <= '%') {
         if (yych != '\n')
-          goto yy1301;
+          goto yy1322;
       } else {
         if (yych <= '&')
-          goto yy1300;
+          goto yy1321;
         if (yych <= 0x7F)
-          goto yy1301;
+          goto yy1322;
         if (yych >= 0xC2)
-          goto yy1302;
+          goto yy1323;
       }
     } else {
       if (yych <= 0xEF) {
         if (yych <= 0xE0)
-          goto yy1304;
+          goto yy1325;
         if (yych == 0xED)
-          goto yy1309;
-        goto yy1305;
+          goto yy1330;
+        goto yy1326;
       } else {
         if (yych <= 0xF0)
-          goto yy1306;
+          goto yy1327;
         if (yych <= 0xF3)
-          goto yy1307;
+          goto yy1328;
         if (yych <= 0xF4)
-          goto yy1308;
+          goto yy1329;
       }
     }
-  yy1299 : { return 0; }
-  yy1300:
+  yy1320 : { return 0; }
+  yy1321:
     yych = *(marker = ++p);
     if (yych <= '@') {
       if (yych == '#')
-        goto yy1310;
-      goto yy1299;
+        goto yy1331;
+      goto yy1320;
     } else {
       if (yych <= 'Z')
-        goto yy1311;
+        goto yy1332;
       if (yych <= '`')
-        goto yy1299;
+        goto yy1320;
       if (yych <= 'z')
-        goto yy1311;
-      goto yy1299;
+        goto yy1332;
+      goto yy1320;
     }
-  yy1301:
+  yy1322:
     yych = *++p;
-    goto yy1299;
-  yy1302:
+    goto yy1320;
+  yy1323:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0xBF)
-      goto yy1301;
-  yy1303:
+      goto yy1322;
+  yy1324:
     p = marker;
-    goto yy1299;
-  yy1304:
+    goto yy1320;
+  yy1325:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0xBF)
-      goto yy1302;
-    goto yy1303;
-  yy1305:
+      goto yy1323;
+    goto yy1324;
+  yy1326:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0xBF)
-      goto yy1302;
-    goto yy1303;
-  yy1306:
+      goto yy1323;
+    goto yy1324;
+  yy1327:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0xBF)
-      goto yy1305;
-    goto yy1303;
-  yy1307:
+      goto yy1326;
+    goto yy1324;
+  yy1328:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0xBF)
-      goto yy1305;
-    goto yy1303;
-  yy1308:
+      goto yy1326;
+    goto yy1324;
+  yy1329:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0x8F)
-      goto yy1305;
-    goto yy1303;
-  yy1309:
+      goto yy1326;
+    goto yy1324;
+  yy1330:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1303;
+      goto yy1324;
     if (yych <= 0x9F)
-      goto yy1302;
-    goto yy1303;
-  yy1310:
+      goto yy1323;
+    goto yy1324;
+  yy1331:
     yych = *++p;
     if (yych <= 'W') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1346;
-      goto yy1303;
+        goto yy1367;
+      goto yy1324;
     } else {
       if (yych <= 'X')
-        goto yy1345;
+        goto yy1366;
       if (yych == 'x')
-        goto yy1345;
-      goto yy1303;
+        goto yy1366;
+      goto yy1324;
     }
-  yy1311:
+  yy1332:
     yych = *++p;
     if (yych <= '@') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych >= ':')
-        goto yy1303;
+        goto yy1324;
     } else {
       if (yych <= 'Z')
-        goto yy1312;
+        goto yy1333;
       if (yych <= '`')
-        goto yy1303;
+        goto yy1324;
       if (yych >= '{')
-        goto yy1303;
+        goto yy1324;
     }
-  yy1312:
+  yy1333:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1315;
+        goto yy1336;
       if (yych <= ':')
-        goto yy1303;
+        goto yy1324;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
-        goto yy1315;
+          goto yy1324;
+        goto yy1336;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych <= 'z')
-          goto yy1315;
-        goto yy1303;
+          goto yy1336;
+        goto yy1324;
       }
     }
-  yy1313:
+  yy1334:
     ++p;
     { return (bufsize_t)(p - start); }
-  yy1315:
+  yy1336:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1316;
+        goto yy1337;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1316:
+  yy1337:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1317;
+        goto yy1338;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1317:
+  yy1338:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1318;
+        goto yy1339;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1318:
+  yy1339:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1319;
+        goto yy1340;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1319:
+  yy1340:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1320;
+        goto yy1341;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1320:
+  yy1341:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1321;
+        goto yy1342;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1321:
+  yy1342:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1322;
+        goto yy1343;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1322:
+  yy1343:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1323;
+        goto yy1344;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1323:
+  yy1344:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
-      if (yych <= '9')
         goto yy1324;
+      if (yych <= '9')
+        goto yy1345;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1324:
+  yy1345:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1325;
+        goto yy1346;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1325:
+  yy1346:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1326;
+        goto yy1347;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1326:
+  yy1347:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1327;
+        goto yy1348;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1327:
+  yy1348:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1328;
+        goto yy1349;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1328:
+  yy1349:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1329;
+        goto yy1350;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1329:
+  yy1350:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1330;
+        goto yy1351;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1330:
+  yy1351:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1331;
+        goto yy1352;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1331:
+  yy1352:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1332;
+        goto yy1353;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1332:
+  yy1353:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1333;
+        goto yy1354;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1333:
+  yy1354:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1334;
+        goto yy1355;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1334:
+  yy1355:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1335;
+        goto yy1356;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1335:
+  yy1356:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1336;
+        goto yy1357;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1336:
+  yy1357:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1337;
+        goto yy1358;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1337:
+  yy1358:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1338;
+        goto yy1359;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1338:
+  yy1359:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1339;
+        goto yy1360;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1339:
+  yy1360:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1340;
+        goto yy1361;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1340:
+  yy1361:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1341;
+        goto yy1362;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1341:
+  yy1362:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1342;
+        goto yy1363;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1342:
+  yy1363:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1343;
+        goto yy1364;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1343:
+  yy1364:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1344;
+        goto yy1365;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'Z') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= '{')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1344:
+  yy1365:
     yych = *++p;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1345:
+      goto yy1334;
+    goto yy1324;
+  yy1366:
     yych = *++p;
     if (yych <= '@') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1353;
-      goto yy1303;
+        goto yy1374;
+      goto yy1324;
     } else {
       if (yych <= 'F')
-        goto yy1353;
+        goto yy1374;
       if (yych <= '`')
-        goto yy1303;
+        goto yy1324;
       if (yych <= 'f')
-        goto yy1353;
-      goto yy1303;
+        goto yy1374;
+      goto yy1324;
     }
-  yy1346:
+  yy1367:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1347;
+      goto yy1368;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1347:
+      goto yy1334;
+    goto yy1324;
+  yy1368:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1348;
+      goto yy1369;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1348:
+      goto yy1334;
+    goto yy1324;
+  yy1369:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1349;
+      goto yy1370;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1349:
+      goto yy1334;
+    goto yy1324;
+  yy1370:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1350;
+      goto yy1371;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1350:
+      goto yy1334;
+    goto yy1324;
+  yy1371:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1351;
+      goto yy1372;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1351:
+      goto yy1334;
+    goto yy1324;
+  yy1372:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1352;
+      goto yy1373;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1352:
+      goto yy1334;
+    goto yy1324;
+  yy1373:
     yych = *++p;
     if (yych <= '/')
-      goto yy1303;
+      goto yy1324;
     if (yych <= '9')
-      goto yy1344;
+      goto yy1365;
     if (yych == ';')
-      goto yy1313;
-    goto yy1303;
-  yy1353:
+      goto yy1334;
+    goto yy1324;
+  yy1374:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1354;
+        goto yy1375;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= 'g')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1354:
+  yy1375:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1355;
+        goto yy1376;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= 'g')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1355:
+  yy1376:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1356;
+        goto yy1377;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= 'g')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1356:
+  yy1377:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1357;
+        goto yy1378;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= 'g')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1357:
+  yy1378:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1358;
+        goto yy1379;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= 'g')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1358:
+  yy1379:
     yych = *++p;
     if (yych <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1359;
+        goto yy1380;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
+          goto yy1324;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych >= 'g')
-          goto yy1303;
+          goto yy1324;
       }
     }
-  yy1359:
+  yy1380:
     ++p;
     if ((yych = *p) <= ';') {
       if (yych <= '/')
-        goto yy1303;
+        goto yy1324;
       if (yych <= '9')
-        goto yy1344;
+        goto yy1365;
       if (yych <= ':')
-        goto yy1303;
-      goto yy1313;
+        goto yy1324;
+      goto yy1334;
     } else {
       if (yych <= 'F') {
         if (yych <= '@')
-          goto yy1303;
-        goto yy1344;
+          goto yy1324;
+        goto yy1365;
       } else {
         if (yych <= '`')
-          goto yy1303;
+          goto yy1324;
         if (yych <= 'f')
-          goto yy1344;
-        goto yy1303;
+          goto yy1365;
+        goto yy1324;
       }
     }
   }
@@ -20252,415 +20849,415 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) {
       if (yych <= 'I') {
         if (yych <= 'C') {
           if (yych != '\n')
-            goto yy1367;
+            goto yy1388;
         } else {
           if (yych <= 'D')
-            goto yy1363;
+            goto yy1384;
           if (yych == 'F')
-            goto yy1366;
-          goto yy1367;
+            goto yy1387;
+          goto yy1388;
         }
       } else {
         if (yych <= 'V') {
           if (yych <= 'J')
-            goto yy1364;
+            goto yy1385;
           if (yych <= 'U')
-            goto yy1367;
-          goto yy1365;
+            goto yy1388;
+          goto yy1386;
         } else {
           if (yych == 'd')
-            goto yy1363;
+            goto yy1384;
           if (yych <= 'e')
-            goto yy1367;
-          goto yy1366;
+            goto yy1388;
+          goto yy1387;
         }
       }
     } else {
       if (yych <= 0xDF) {
         if (yych <= 'u') {
           if (yych == 'j')
-            goto yy1364;
-          goto yy1367;
+            goto yy1385;
+          goto yy1388;
         } else {
           if (yych <= 'v')
-            goto yy1365;
+            goto yy1386;
           if (yych <= 0x7F)
-            goto yy1367;
+            goto yy1388;
           if (yych >= 0xC2)
-            goto yy1368;
+            goto yy1389;
         }
       } else {
         if (yych <= 0xEF) {
           if (yych <= 0xE0)
-            goto yy1370;
+            goto yy1391;
           if (yych == 0xED)
-            goto yy1375;
-          goto yy1371;
+            goto yy1396;
+          goto yy1392;
         } else {
           if (yych <= 0xF0)
-            goto yy1372;
+            goto yy1393;
           if (yych <= 0xF3)
-            goto yy1373;
+            goto yy1394;
           if (yych <= 0xF4)
-            goto yy1374;
+            goto yy1395;
         }
       }
     }
-  yy1362 : { return 0; }
-  yy1363:
+  yy1383 : { return 0; }
+  yy1384:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych == 'A')
-      goto yy1397;
+      goto yy1418;
     if (yych == 'a')
-      goto yy1397;
-    goto yy1362;
-  yy1364:
+      goto yy1418;
+    goto yy1383;
+  yy1385:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych == 'A')
-      goto yy1388;
+      goto yy1409;
     if (yych == 'a')
-      goto yy1388;
-    goto yy1362;
-  yy1365:
+      goto yy1409;
+    goto yy1383;
+  yy1386:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych == 'B')
-      goto yy1381;
+      goto yy1402;
     if (yych == 'b')
-      goto yy1381;
-    goto yy1362;
-  yy1366:
+      goto yy1402;
+    goto yy1383;
+  yy1387:
     yyaccept = 0;
     yych = *(marker = ++p);
     if (yych == 'I')
-      goto yy1376;
+      goto yy1397;
     if (yych == 'i')
-      goto yy1376;
-    goto yy1362;
-  yy1367:
+      goto yy1397;
+    goto yy1383;
+  yy1388:
     yych = *++p;
-    goto yy1362;
-  yy1368:
+    goto yy1383;
+  yy1389:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0xBF)
-      goto yy1367;
-  yy1369:
+      goto yy1388;
+  yy1390:
     p = marker;
     if (yyaccept == 0) {
-      goto yy1362;
+      goto yy1383;
     } else {
-      goto yy1380;
+      goto yy1401;
     }
-  yy1370:
+  yy1391:
     yych = *++p;
     if (yych <= 0x9F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0xBF)
-      goto yy1368;
-    goto yy1369;
-  yy1371:
+      goto yy1389;
+    goto yy1390;
+  yy1392:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0xBF)
-      goto yy1368;
-    goto yy1369;
-  yy1372:
+      goto yy1389;
+    goto yy1390;
+  yy1393:
     yych = *++p;
     if (yych <= 0x8F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0xBF)
-      goto yy1371;
-    goto yy1369;
-  yy1373:
+      goto yy1392;
+    goto yy1390;
+  yy1394:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0xBF)
-      goto yy1371;
-    goto yy1369;
-  yy1374:
+      goto yy1392;
+    goto yy1390;
+  yy1395:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0x8F)
-      goto yy1371;
-    goto yy1369;
-  yy1375:
+      goto yy1392;
+    goto yy1390;
+  yy1396:
     yych = *++p;
     if (yych <= 0x7F)
-      goto yy1369;
+      goto yy1390;
     if (yych <= 0x9F)
-      goto yy1368;
-    goto yy1369;
-  yy1376:
+      goto yy1389;
+    goto yy1390;
+  yy1397:
     yych = *++p;
     if (yych == 'L')
-      goto yy1377;
+      goto yy1398;
     if (yych != 'l')
-      goto yy1369;
-  yy1377:
+      goto yy1390;
+  yy1398:
     yych = *++p;
     if (yych == 'E')
-      goto yy1378;
+      goto yy1399;
     if (yych != 'e')
-      goto yy1369;
-  yy1378:
+      goto yy1390;
+  yy1399:
     yych = *++p;
     if (yych != ':')
-      goto yy1369;
-  yy1379:
+      goto yy1390;
+  yy1400:
     ++p;
-  yy1380 : { return (bufsize_t)(p - start); }
-  yy1381:
+  yy1401 : { return (bufsize_t)(p - start); }
+  yy1402:
     yych = *++p;
     if (yych == 'S')
-      goto yy1382;
+      goto yy1403;
     if (yych != 's')
-      goto yy1369;
-  yy1382:
+      goto yy1390;
+  yy1403:
     yych = *++p;
     if (yych == 'C')
-      goto yy1383;
+      goto yy1404;
     if (yych != 'c')
-      goto yy1369;
-  yy1383:
+      goto yy1390;
+  yy1404:
     yych = *++p;
     if (yych == 'R')
-      goto yy1384;
+      goto yy1405;
     if (yych != 'r')
-      goto yy1369;
-  yy1384:
+      goto yy1390;
+  yy1405:
     yych = *++p;
     if (yych == 'I')
-      goto yy1385;
+      goto yy1406;
     if (yych != 'i')
-      goto yy1369;
-  yy1385:
+      goto yy1390;
+  yy1406:
     yych = *++p;
     if (yych == 'P')
-      goto yy1386;
+      goto yy1407;
     if (yych != 'p')
-      goto yy1369;
-  yy1386:
+      goto yy1390;
+  yy1407:
     yych = *++p;
     if (yych == 'T')
-      goto yy1387;
+      goto yy1408;
     if (yych != 't')
-      goto yy1369;
-  yy1387:
+      goto yy1390;
+  yy1408:
     yych = *++p;
     if (yych == ':')
-      goto yy1379;
-    goto yy1369;
-  yy1388:
+      goto yy1400;
+    goto yy1390;
+  yy1409:
     yych = *++p;
     if (yych == 'V')
-      goto yy1389;
+      goto yy1410;
     if (yych != 'v')
-      goto yy1369;
-  yy1389:
+      goto yy1390;
+  yy1410:
     yych = *++p;
     if (yych == 'A')
-      goto yy1390;
+      goto yy1411;
     if (yych != 'a')
-      goto yy1369;
-  yy1390:
+      goto yy1390;
+  yy1411:
     yych = *++p;
     if (yych == 'S')
-      goto yy1391;
+      goto yy1412;
     if (yych != 's')
-      goto yy1369;
-  yy1391:
+      goto yy1390;
+  yy1412:
     yych = *++p;
     if (yych == 'C')
-      goto yy1392;
+      goto yy1413;
     if (yych != 'c')
-      goto yy1369;
-  yy1392:
+      goto yy1390;
+  yy1413:
     yych = *++p;
     if (yych == 'R')
-      goto yy1393;
+      goto yy1414;
     if (yych != 'r')
-      goto yy1369;
-  yy1393:
+      goto yy1390;
+  yy1414:
     yych = *++p;
     if (yych == 'I')
-      goto yy1394;
+      goto yy1415;
     if (yych != 'i')
-      goto yy1369;
-  yy1394:
+      goto yy1390;
+  yy1415:
     yych = *++p;
     if (yych == 'P')
-      goto yy1395;
+      goto yy1416;
     if (yych != 'p')
-      goto yy1369;
-  yy1395:
+      goto yy1390;
+  yy1416:
     yych = *++p;
     if (yych == 'T')
-      goto yy1396;
+      goto yy1417;
     if (yych != 't')
-      goto yy1369;
-  yy1396:
+      goto yy1390;
+  yy1417:
     yych = *++p;
     if (yych == ':')
-      goto yy1379;
-    goto yy1369;
-  yy1397:
+      goto yy1400;
+    goto yy1390;
+  yy1418:
     yych = *++p;
     if (yych == 'T')
-      goto yy1398;
+      goto yy1419;
     if (yych != 't')
-      goto yy1369;
-  yy1398:
+      goto yy1390;
+  yy1419:
     yych = *++p;
     if (yych == 'A')
-      goto yy1399;
+      goto yy1420;
     if (yych != 'a')
-      goto yy1369;
-  yy1399:
+      goto yy1390;
+  yy1420:
     yych = *++p;
     if (yych != ':')
-      goto yy1369;
+      goto yy1390;
     yyaccept = 1;
     yych = *(marker = ++p);
     if (yych == 'I')
-      goto yy1401;
+      goto yy1422;
     if (yych != 'i')
-      goto yy1380;
-  yy1401:
+      goto yy1401;
+  yy1422:
     yych = *++p;
     if (yych == 'M')
-      goto yy1402;
+      goto yy1423;
     if (yych != 'm')
-      goto yy1369;
-  yy1402:
+      goto yy1390;
+  yy1423:
     yych = *++p;
     if (yych == 'A')
-      goto yy1403;
+      goto yy1424;
     if (yych != 'a')
-      goto yy1369;
-  yy1403:
+      goto yy1390;
+  yy1424:
     yych = *++p;
     if (yych == 'G')
-      goto yy1404;
+      goto yy1425;
     if (yych != 'g')
-      goto yy1369;
-  yy1404:
+      goto yy1390;
+  yy1425:
     yych = *++p;
     if (yych == 'E')
-      goto yy1405;
+      goto yy1426;
     if (yych != 'e')
-      goto yy1369;
-  yy1405:
+      goto yy1390;
+  yy1426:
     yych = *++p;
     if (yych != '/')
-      goto yy1369;
+      goto yy1390;
     yych = *++p;
     if (yych <= 'W') {
       if (yych <= 'J') {
         if (yych == 'G')
-          goto yy1408;
+          goto yy1429;
         if (yych <= 'I')
-          goto yy1369;
-        goto yy1409;
+          goto yy1390;
+        goto yy1430;
       } else {
         if (yych == 'P')
-          goto yy1407;
+          goto yy1428;
         if (yych <= 'V')
-          goto yy1369;
-        goto yy1410;
+          goto yy1390;
+        goto yy1431;
       }
     } else {
       if (yych <= 'j') {
         if (yych == 'g')
-          goto yy1408;
+          goto yy1429;
         if (yych <= 'i')
-          goto yy1369;
-        goto yy1409;
+          goto yy1390;
+        goto yy1430;
       } else {
         if (yych <= 'p') {
           if (yych <= 'o')
-            goto yy1369;
+            goto yy1390;
         } else {
           if (yych == 'w')
-            goto yy1410;
-          goto yy1369;
+            goto yy1431;
+          goto yy1390;
         }
       }
     }
-  yy1407:
+  yy1428:
     yych = *++p;
     if (yych == 'N')
-      goto yy1418;
+      goto yy1439;
     if (yych == 'n')
-      goto yy1418;
-    goto yy1369;
-  yy1408:
+      goto yy1439;
+    goto yy1390;
+  yy1429:
     yych = *++p;
     if (yych == 'I')
-      goto yy1417;
+      goto yy1438;
     if (yych == 'i')
-      goto yy1417;
-    goto yy1369;
-  yy1409:
+      goto yy1438;
+    goto yy1390;
+  yy1430:
     yych = *++p;
     if (yych == 'P')
-      goto yy1415;
+      goto yy1436;
     if (yych == 'p')
-      goto yy1415;
-    goto yy1369;
-  yy1410:
+      goto yy1436;
+    goto yy1390;
+  yy1431:
     yych = *++p;
     if (yych == 'E')
-      goto yy1411;
+      goto yy1432;
     if (yych != 'e')
-      goto yy1369;
-  yy1411:
+      goto yy1390;
+  yy1432:
     yych = *++p;
     if (yych == 'B')
-      goto yy1412;
+      goto yy1433;
     if (yych != 'b')
-      goto yy1369;
-  yy1412:
+      goto yy1390;
+  yy1433:
     yych = *++p;
     if (yych == 'P')
-      goto yy1413;
+      goto yy1434;
     if (yych != 'p')
-      goto yy1369;
-  yy1413:
+      goto yy1390;
+  yy1434:
     ++p;
     { return 0; }
-  yy1415:
+  yy1436:
     yych = *++p;
     if (yych == 'E')
-      goto yy1416;
+      goto yy1437;
     if (yych != 'e')
-      goto yy1369;
-  yy1416:
+      goto yy1390;
+  yy1437:
     yych = *++p;
     if (yych == 'G')
-      goto yy1413;
+      goto yy1434;
     if (yych == 'g')
-      goto yy1413;
-    goto yy1369;
-  yy1417:
+      goto yy1434;
+    goto yy1390;
+  yy1438:
     yych = *++p;
     if (yych == 'F')
-      goto yy1413;
+      goto yy1434;
     if (yych == 'f')
-      goto yy1413;
-    goto yy1369;
-  yy1418:
+      goto yy1434;
+    goto yy1390;
+  yy1439:
     ++p;
     if ((yych = *p) == 'G')
-      goto yy1413;
+      goto yy1434;
     if (yych == 'g')
-      goto yy1413;
-    goto yy1369;
+      goto yy1434;
+    goto yy1390;
   }
 }
diff --git a/src/scanners.re b/src/scanners.re
@@ -215,7 +215,7 @@ bufsize_t _scan_link_url(const unsigned char *p)
   const unsigned char *start = p;
 /*!re2c
   [ \r\n]* [<] ([^<> \t\r\n\\\x00] | escaped_char | [\\])* [>] { return (bufsize_t)(p - start); }
-  [ \r\n]* (reg_char+ | escaped_char | [\\] | in_parens_nosp)* { return (bufsize_t)(p - start); }
+  [ \r\n]* (reg_char+ | escaped_char | [\\] [^() \t\v\f\r\n] | in_parens_nosp)* [\\]? { return (bufsize_t)(p - start); }
   .? { return 0; }
 */
 }