diff --git a/src/scanners.c b/src/scanners.c
index c540b1a..b3963a3 100644
--- a/src/scanners.c
+++ b/src/scanners.c
@@ -16661,32 +16661,32 @@
 			}
 		} else {
 			if (yych <= ')') {
-				if (yych <= '\'') goto yy1847;
-				if (yych <= '(') goto yy1856;
+				if (yych <= '\'') goto yy1846;
+				if (yych <= '(') goto yy1857;
 				goto yy1858;
 			} else {
 				if (yych == '<') goto yy1845;
-				goto yy1847;
+				goto yy1846;
 			}
 		}
 	} else {
 		if (yych <= 0xEC) {
 			if (yych <= 0xC1) {
-				if (yych <= '\\') goto yy1846;
-				if (yych <= 0x7F) goto yy1847;
+				if (yych <= '\\') goto yy1855;
+				if (yych <= 0x7F) goto yy1846;
 			} else {
-				if (yych <= 0xDF) goto yy1848;
-				if (yych <= 0xE0) goto yy1850;
-				goto yy1851;
+				if (yych <= 0xDF) goto yy1847;
+				if (yych <= 0xE0) goto yy1849;
+				goto yy1850;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1855;
-				if (yych <= 0xEF) goto yy1851;
-				goto yy1852;
+				if (yych <= 0xED) goto yy1854;
+				if (yych <= 0xEF) goto yy1850;
+				goto yy1851;
 			} else {
-				if (yych <= 0xF3) goto yy1853;
-				if (yych <= 0xF4) goto yy1854;
+				if (yych <= 0xF3) goto yy1852;
+				if (yych <= 0xF4) goto yy1853;
 			}
 		}
 	}
@@ -16709,9 +16709,9 @@
 		} else {
 			if (yych <= '<') {
 				if (yych <= ';') goto yy1870;
-				goto yy1894;
+				goto yy1905;
 			} else {
-				if (yych == '\\') goto yy1872;
+				if (yych == '\\') goto yy1879;
 				goto yy1870;
 			}
 		}
@@ -16719,19 +16719,19 @@
 		if (yych <= 0xED) {
 			if (yych <= 0xDF) {
 				if (yych <= 0xC1) goto yy1841;
-				goto yy1874;
+				goto yy1872;
 			} else {
-				if (yych <= 0xE0) goto yy1875;
-				if (yych <= 0xEC) goto yy1876;
-				goto yy1880;
+				if (yych <= 0xE0) goto yy1873;
+				if (yych <= 0xEC) goto yy1874;
+				goto yy1878;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy1876;
-				goto yy1877;
+				if (yych <= 0xEF) goto yy1874;
+				goto yy1875;
 			} else {
-				if (yych <= 0xF3) goto yy1878;
-				if (yych <= 0xF4) goto yy1879;
+				if (yych <= 0xF3) goto yy1876;
+				if (yych <= 0xF4) goto yy1877;
 				goto yy1841;
 			}
 		}
@@ -16744,46 +16744,46 @@
 	yyaccept = 0;
 	yych = *(marker = ++p);
 	if (yybm[0+yych] & 64) {
-		goto yy1894;
+		goto yy1905;
 	}
 	if (yych <= '>') {
 		if (yych <= '\r') {
 			if (yych <= '\t') {
 				if (yych <= 0x00) goto yy1841;
-				goto yy1907;
+				goto yy1919;
 			} else {
 				if (yych <= '\n') goto yy1841;
-				if (yych <= '\f') goto yy1907;
+				if (yych <= '\f') goto yy1919;
 				goto yy1841;
 			}
 		} else {
 			if (yych <= '(') {
-				if (yych <= ' ') goto yy1907;
-				goto yy1905;
+				if (yych <= ' ') goto yy1919;
+				goto yy1917;
 			} else {
-				if (yych <= ')') goto yy1907;
+				if (yych <= ')') goto yy1919;
 				if (yych <= '<') goto yy1870;
-				goto yy1896;
+				goto yy1907;
 			}
 		}
 	} else {
 		if (yych <= 0xEC) {
 			if (yych <= 0xC1) {
-				if (yych <= '\\') goto yy1892;
+				if (yych <= '\\') goto yy1916;
 				goto yy1841;
 			} else {
-				if (yych <= 0xDF) goto yy1898;
-				if (yych <= 0xE0) goto yy1899;
-				goto yy1900;
+				if (yych <= 0xDF) goto yy1909;
+				if (yych <= 0xE0) goto yy1910;
+				goto yy1911;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1904;
-				if (yych <= 0xEF) goto yy1900;
-				goto yy1901;
+				if (yych <= 0xED) goto yy1915;
+				if (yych <= 0xEF) goto yy1911;
+				goto yy1912;
 			} else {
-				if (yych <= 0xF3) goto yy1902;
-				if (yych <= 0xF4) goto yy1903;
+				if (yych <= 0xF3) goto yy1913;
+				if (yych <= 0xF4) goto yy1914;
 				goto yy1841;
 			}
 		}
@@ -16791,75 +16791,91 @@
 yy1846:
 	yyaccept = 0;
 	yych = *(marker = ++p);
-	if (yych <= '\'') goto yy1871;
-	if (yych <= '(') goto yy1881;
-	if (yych <= ')') goto yy1870;
 	goto yy1871;
 yy1847:
-	yyaccept = 0;
-	yych = *(marker = ++p);
-	goto yy1871;
-yy1848:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1847;
-yy1849:
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1846;
+yy1848:
 	p = marker;
 	if (yyaccept <= 1) {
 		if (yyaccept == 0) {
 			goto yy1841;
 		} else {
-			goto yy1857;
+			goto yy1856;
 		}
 	} else {
-		goto yy1897;
+		goto yy1908;
 	}
+yy1849:
+	yych = *++p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1847;
+	goto yy1848;
 yy1850:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1848;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1847;
+	goto yy1848;
 yy1851:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1848;
-	goto yy1849;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1850;
+	goto yy1848;
 yy1852:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy1849;
-	if (yych <= 0xBF) goto yy1851;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1850;
+	goto yy1848;
 yy1853:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1851;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1850;
+	goto yy1848;
 yy1854:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1851;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1847;
+	goto yy1848;
 yy1855:
-	yych = *++p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1848;
-	goto yy1849;
+	yyaccept = 1;
+	yych = *(marker = ++p);
+	if (yych <= 0xEC) {
+		if (yych <= 0xC1) {
+			if (yych <= 0x7F) goto yy1870;
+		} else {
+			if (yych <= 0xDF) goto yy1880;
+			if (yych <= 0xE0) goto yy1881;
+			goto yy1882;
+		}
+	} else {
+		if (yych <= 0xF0) {
+			if (yych <= 0xED) goto yy1886;
+			if (yych <= 0xEF) goto yy1882;
+			goto yy1883;
+		} else {
+			if (yych <= 0xF3) goto yy1884;
+			if (yych <= 0xF4) goto yy1885;
+		}
+	}
 yy1856:
+	{ return 0; }
+yy1857:
 	yyaccept = 1;
 	yych = *(marker = ++p);
 	if (yych <= '(') {
-		if (yych <= ' ') goto yy1857;
+		if (yych <= ' ') goto yy1856;
 		if (yych <= '\'') goto yy1862;
+		goto yy1856;
 	} else {
 		if (yych <= 0x7F) goto yy1862;
-		if (yych <= 0xC1) goto yy1857;
+		if (yych <= 0xC1) goto yy1856;
 		if (yych <= 0xF4) goto yy1862;
+		goto yy1856;
 	}
-yy1857:
-	{ return 0; }
 yy1858:
 	yych = *++p;
-	goto yy1857;
+	goto yy1856;
 yy1859:
 	++p;
 	yych = *p;
@@ -16868,11 +16884,11 @@
 	}
 	if (yych <= 0xE0) {
 		if (yych <= ')') {
-			if (yych <= ' ') goto yy1849;
-			if (yych >= ')') goto yy1881;
+			if (yych <= ' ') goto yy1848;
+			if (yych >= ')') goto yy1887;
 		} else {
 			if (yych <= 0x7F) goto yy1861;
-			if (yych <= 0xC1) goto yy1849;
+			if (yych <= 0xC1) goto yy1848;
 			if (yych <= 0xDF) goto yy1863;
 			goto yy1864;
 		}
@@ -16884,7 +16900,7 @@
 			if (yych <= 0xF0) goto yy1866;
 			if (yych <= 0xF3) goto yy1867;
 			if (yych <= 0xF4) goto yy1868;
-			goto yy1849;
+			goto yy1848;
 		}
 	}
 yy1861:
@@ -16896,11 +16912,11 @@
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= '(') goto yy1849;
+			if (yych <= '(') goto yy1848;
 			if (yych <= ')') goto yy1870;
 			goto yy1859;
 		} else {
-			if (yych <= 0xC1) goto yy1849;
+			if (yych <= 0xC1) goto yy1848;
 			if (yych >= 0xE0) goto yy1864;
 		}
 	} else {
@@ -16911,51 +16927,51 @@
 			if (yych <= 0xF0) goto yy1866;
 			if (yych <= 0xF3) goto yy1867;
 			if (yych <= 0xF4) goto yy1868;
-			goto yy1849;
+			goto yy1848;
 		}
 	}
 yy1863:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
 	if (yych <= 0xBF) goto yy1861;
-	goto yy1849;
+	goto yy1848;
 yy1864:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
+	if (yych <= 0x9F) goto yy1848;
 	if (yych <= 0xBF) goto yy1863;
-	goto yy1849;
+	goto yy1848;
 yy1865:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
 	if (yych <= 0xBF) goto yy1863;
-	goto yy1849;
+	goto yy1848;
 yy1866:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
+	if (yych <= 0x8F) goto yy1848;
 	if (yych <= 0xBF) goto yy1865;
-	goto yy1849;
+	goto yy1848;
 yy1867:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
 	if (yych <= 0xBF) goto yy1865;
-	goto yy1849;
+	goto yy1848;
 yy1868:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
 	if (yych <= 0x8F) goto yy1865;
-	goto yy1849;
+	goto yy1848;
 yy1869:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
 	if (yych <= 0x9F) goto yy1863;
-	goto yy1849;
+	goto yy1848;
 yy1870:
 	yyaccept = 0;
 	marker = ++p;
@@ -16968,861 +16984,776 @@
 			if (yych <= '(') goto yy1861;
 			goto yy1841;
 		} else {
-			if (yych == '\\') goto yy1872;
+			if (yych == '\\') goto yy1879;
 			if (yych <= 0x7F) goto yy1870;
 			goto yy1841;
 		}
 	} else {
 		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy1874;
-			if (yych <= 0xE0) goto yy1875;
-			if (yych <= 0xEC) goto yy1876;
-			goto yy1880;
+			if (yych <= 0xDF) goto yy1872;
+			if (yych <= 0xE0) goto yy1873;
+			if (yych <= 0xEC) goto yy1874;
+			goto yy1878;
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy1876;
-				goto yy1877;
+				if (yych <= 0xEF) goto yy1874;
+				goto yy1875;
 			} else {
-				if (yych <= 0xF3) goto yy1878;
-				if (yych <= 0xF4) goto yy1879;
+				if (yych <= 0xF3) goto yy1876;
+				if (yych <= 0xF4) goto yy1877;
 				goto yy1841;
 			}
 		}
 	}
 yy1872:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1870;
+	goto yy1848;
+yy1873:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1872;
+	goto yy1848;
+yy1874:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1872;
+	goto yy1848;
+yy1875:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1874;
+	goto yy1848;
+yy1876:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1874;
+	goto yy1848;
+yy1877:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1874;
+	goto yy1848;
+yy1878:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1872;
+	goto yy1848;
+yy1879:
+	++p;
+	yych = *p;
+	if (yych <= 0xEC) {
+		if (yych <= 0xC1) {
+			if (yych <= 0x7F) goto yy1870;
+			goto yy1848;
+		} else {
+			if (yych <= 0xDF) goto yy1880;
+			if (yych <= 0xE0) goto yy1881;
+			goto yy1882;
+		}
+	} else {
+		if (yych <= 0xF0) {
+			if (yych <= 0xED) goto yy1886;
+			if (yych <= 0xEF) goto yy1882;
+			goto yy1883;
+		} else {
+			if (yych <= 0xF3) goto yy1884;
+			if (yych <= 0xF4) goto yy1885;
+			goto yy1848;
+		}
+	}
+yy1880:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1870;
+	goto yy1848;
+yy1881:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1880;
+	goto yy1848;
+yy1882:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1880;
+	goto yy1848;
+yy1883:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1882;
+	goto yy1848;
+yy1884:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1882;
+	goto yy1848;
+yy1885:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1882;
+	goto yy1848;
+yy1886:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1880;
+	goto yy1848;
+yy1887:
+	yyaccept = 0;
+	marker = ++p;
+	yych = *p;
+yy1888:
+	if (yych <= 0xC1) {
+		if (yych <= ')') {
+			if (yych <= ' ') goto yy1841;
+			if (yych <= '\'') goto yy1887;
+			if (yych <= '(') goto yy1861;
+			goto yy1870;
+		} else {
+			if (yych == '\\') goto yy1896;
+			if (yych <= 0x7F) goto yy1887;
+			goto yy1841;
+		}
+	} else {
+		if (yych <= 0xED) {
+			if (yych <= 0xDF) goto yy1889;
+			if (yych <= 0xE0) goto yy1890;
+			if (yych <= 0xEC) goto yy1891;
+			goto yy1895;
+		} else {
+			if (yych <= 0xF0) {
+				if (yych <= 0xEF) goto yy1891;
+				goto yy1892;
+			} else {
+				if (yych <= 0xF3) goto yy1893;
+				if (yych <= 0xF4) goto yy1894;
+				goto yy1841;
+			}
+		}
+	}
+yy1889:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1887;
+	goto yy1848;
+yy1890:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1889;
+	goto yy1848;
+yy1891:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1889;
+	goto yy1848;
+yy1892:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1891;
+	goto yy1848;
+yy1893:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1891;
+	goto yy1848;
+yy1894:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1891;
+	goto yy1848;
+yy1895:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1889;
+	goto yy1848;
+yy1896:
+	++p;
+	yych = *p;
+	if (yych <= 0xE0) {
+		if (yych <= '\\') {
+			if (yych <= ' ') goto yy1870;
+			if (yych <= '[') goto yy1887;
+		} else {
+			if (yych <= 0x7F) goto yy1887;
+			if (yych <= 0xC1) goto yy1848;
+			if (yych <= 0xDF) goto yy1898;
+			goto yy1899;
+		}
+	} else {
+		if (yych <= 0xEF) {
+			if (yych == 0xED) goto yy1904;
+			goto yy1900;
+		} else {
+			if (yych <= 0xF0) goto yy1901;
+			if (yych <= 0xF3) goto yy1902;
+			if (yych <= 0xF4) goto yy1903;
+			goto yy1848;
+		}
+	}
 	yyaccept = 0;
 	marker = ++p;
 	yych = *p;
 	if (yych <= 0xDF) {
 		if (yych <= '[') {
 			if (yych <= ' ') goto yy1841;
-			if (yych == '(') goto yy1881;
-			goto yy1870;
-		} else {
-			if (yych <= '\\') goto yy1872;
-			if (yych <= 0x7F) goto yy1870;
-			if (yych <= 0xC1) goto yy1841;
-		}
-	} else {
-		if (yych <= 0xEF) {
-			if (yych <= 0xE0) goto yy1875;
-			if (yych == 0xED) goto yy1880;
-			goto yy1876;
-		} else {
-			if (yych <= 0xF0) goto yy1877;
-			if (yych <= 0xF3) goto yy1878;
-			if (yych <= 0xF4) goto yy1879;
-			goto yy1841;
-		}
-	}
-yy1874:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1870;
-	goto yy1849;
-yy1875:
-	++p;
-	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1874;
-	goto yy1849;
-yy1876:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1874;
-	goto yy1849;
-yy1877:
-	++p;
-	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
-	if (yych <= 0xBF) goto yy1876;
-	goto yy1849;
-yy1878:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1876;
-	goto yy1849;
-yy1879:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1876;
-	goto yy1849;
-yy1880:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1874;
-	goto yy1849;
-yy1881:
-	yyaccept = 0;
-	marker = ++p;
-	yych = *p;
-yy1882:
-	if (yych <= 0xC1) {
-		if (yych <= ')') {
-			if (yych <= ' ') goto yy1841;
-			if (yych <= '\'') goto yy1881;
-			if (yych <= '(') goto yy1861;
-			goto yy1870;
-		} else {
-			if (yych == '\\') goto yy1883;
-			if (yych <= 0x7F) goto yy1881;
-			goto yy1841;
-		}
-	} else {
-		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy1885;
-			if (yych <= 0xE0) goto yy1886;
-			if (yych <= 0xEC) goto yy1887;
-			goto yy1891;
-		} else {
-			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy1887;
-				goto yy1888;
-			} else {
-				if (yych <= 0xF3) goto yy1889;
-				if (yych <= 0xF4) goto yy1890;
-				goto yy1841;
-			}
-		}
-	}
-yy1883:
-	yyaccept = 0;
-	marker = ++p;
-	yych = *p;
-	if (yych <= 0xE0) {
-		if (yych <= '\\') {
-			if (yych <= ' ') goto yy1841;
-			if (yych <= '[') goto yy1881;
-			goto yy1883;
-		} else {
-			if (yych <= 0x7F) goto yy1881;
-			if (yych <= 0xC1) goto yy1841;
-			if (yych >= 0xE0) goto yy1886;
-		}
-	} else {
-		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1891;
+			if (yych == '(') goto yy1861;
 			goto yy1887;
 		} else {
-			if (yych <= 0xF0) goto yy1888;
-			if (yych <= 0xF3) goto yy1889;
-			if (yych <= 0xF4) goto yy1890;
+			if (yych <= '\\') goto yy1896;
+			if (yych <= 0x7F) goto yy1887;
+			if (yych <= 0xC1) goto yy1841;
+			goto yy1889;
+		}
+	} else {
+		if (yych <= 0xEF) {
+			if (yych <= 0xE0) goto yy1890;
+			if (yych == 0xED) goto yy1895;
+			goto yy1891;
+		} else {
+			if (yych <= 0xF0) goto yy1892;
+			if (yych <= 0xF3) goto yy1893;
+			if (yych <= 0xF4) goto yy1894;
 			goto yy1841;
 		}
 	}
-yy1885:
+yy1898:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1881;
-	goto yy1849;
-yy1886:
-	++p;
-	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1885;
-	goto yy1849;
-yy1887:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1885;
-	goto yy1849;
-yy1888:
-	++p;
-	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
 	if (yych <= 0xBF) goto yy1887;
-	goto yy1849;
-yy1889:
+	goto yy1848;
+yy1899:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1887;
-	goto yy1849;
-yy1890:
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1898;
+	goto yy1848;
+yy1900:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1887;
-	goto yy1849;
-yy1891:
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1898;
+	goto yy1848;
+yy1901:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1885;
-	goto yy1849;
-yy1892:
-	yyaccept = 0;
-	marker = ++p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1900;
+	goto yy1848;
+yy1902:
+	++p;
 	yych = *p;
-	if (yych <= '[') {
-		if (yych <= '\r') {
-			if (yych <= '\t') {
-				if (yych <= 0x00) goto yy1841;
-				goto yy1907;
-			} else {
-				if (yych <= '\n') goto yy1841;
-				if (yych <= '\f') goto yy1907;
-				goto yy1841;
-			}
-		} else {
-			if (yych <= '(') {
-				if (yych <= ' ') goto yy1907;
-				if (yych >= '(') goto yy1930;
-			} else {
-				if (yych == '>') goto yy1944;
-			}
-		}
-	} else {
-		if (yych <= 0xEC) {
-			if (yych <= 0xC1) {
-				if (yych <= '\\') goto yy1892;
-				if (yych >= 0x80) goto yy1841;
-			} else {
-				if (yych <= 0xDF) goto yy1898;
-				if (yych <= 0xE0) goto yy1899;
-				goto yy1900;
-			}
-		} else {
-			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1904;
-				if (yych <= 0xEF) goto yy1900;
-				goto yy1901;
-			} else {
-				if (yych <= 0xF3) goto yy1902;
-				if (yych <= 0xF4) goto yy1903;
-				goto yy1841;
-			}
-		}
-	}
-yy1894:
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1900;
+	goto yy1848;
+yy1903:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1900;
+	goto yy1848;
+yy1904:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1898;
+	goto yy1848;
+yy1905:
 	yyaccept = 0;
 	marker = ++p;
 	yych = *p;
 	if (yybm[0+yych] & 64) {
-		goto yy1894;
+		goto yy1905;
 	}
 	if (yych <= '>') {
 		if (yych <= '\r') {
 			if (yych <= '\t') {
 				if (yych <= 0x00) goto yy1841;
-				goto yy1907;
+				goto yy1919;
 			} else {
 				if (yych <= '\n') goto yy1841;
-				if (yych <= '\f') goto yy1907;
+				if (yych <= '\f') goto yy1919;
 				goto yy1841;
 			}
 		} else {
 			if (yych <= '(') {
-				if (yych <= ' ') goto yy1907;
-				goto yy1905;
+				if (yych <= ' ') goto yy1919;
+				goto yy1917;
 			} else {
-				if (yych <= ')') goto yy1907;
+				if (yych <= ')') goto yy1919;
 				if (yych <= '<') goto yy1870;
 			}
 		}
 	} else {
 		if (yych <= 0xEC) {
 			if (yych <= 0xC1) {
-				if (yych <= '\\') goto yy1892;
+				if (yych <= '\\') goto yy1916;
 				goto yy1841;
 			} else {
-				if (yych <= 0xDF) goto yy1898;
-				if (yych <= 0xE0) goto yy1899;
-				goto yy1900;
+				if (yych <= 0xDF) goto yy1909;
+				if (yych <= 0xE0) goto yy1910;
+				goto yy1911;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1904;
-				if (yych <= 0xEF) goto yy1900;
-				goto yy1901;
+				if (yych <= 0xED) goto yy1915;
+				if (yych <= 0xEF) goto yy1911;
+				goto yy1912;
 			} else {
-				if (yych <= 0xF3) goto yy1902;
-				if (yych <= 0xF4) goto yy1903;
+				if (yych <= 0xF3) goto yy1913;
+				if (yych <= 0xF4) goto yy1914;
 				goto yy1841;
 			}
 		}
 	}
-yy1896:
-	yyaccept = 2;
-	yych = *(marker = ++p);
-	if (yych <= ')') {
-		if (yych <= ' ') goto yy1897;
-		if (yych <= '(') goto yy1871;
-	} else {
-		if (yych <= 0x7F) goto yy1871;
-		if (yych <= 0xC1) goto yy1897;
-		if (yych <= 0xF4) goto yy1871;
-	}
-yy1897:
-	{ return (bufsize_t)(p - start); }
-yy1898:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1894;
-	goto yy1849;
-yy1899:
-	++p;
-	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1898;
-	goto yy1849;
-yy1900:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1898;
-	goto yy1849;
-yy1901:
-	++p;
-	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
-	if (yych <= 0xBF) goto yy1900;
-	goto yy1849;
-yy1902:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1900;
-	goto yy1849;
-yy1903:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1900;
-	goto yy1849;
-yy1904:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1898;
-	goto yy1849;
-yy1905:
-	++p;
-	yych = *p;
-	if (yych <= '>') {
-		if (yych <= ' ') {
-			if (yych <= '\n') {
-				if (yych <= 0x00) goto yy1849;
-				if (yych >= '\n') goto yy1849;
-			} else {
-				if (yych == '\r') goto yy1849;
-			}
-		} else {
-			if (yych <= ')') {
-				if (yych <= '\'') goto yy1905;
-				if (yych >= ')') goto yy1894;
-			} else {
-				if (yych == '<') goto yy1861;
-				if (yych <= '=') goto yy1905;
-				goto yy1920;
-			}
-		}
-	} else {
-		if (yych <= 0xE0) {
-			if (yych <= 0x7F) {
-				if (yych == '\\') goto yy1921;
-				goto yy1905;
-			} else {
-				if (yych <= 0xC1) goto yy1849;
-				if (yych <= 0xDF) goto yy1923;
-				goto yy1924;
-			}
-		} else {
-			if (yych <= 0xEF) {
-				if (yych == 0xED) goto yy1929;
-				goto yy1925;
-			} else {
-				if (yych <= 0xF0) goto yy1926;
-				if (yych <= 0xF3) goto yy1927;
-				if (yych <= 0xF4) goto yy1928;
-				goto yy1849;
-			}
-		}
-	}
 yy1907:
+	yyaccept = 2;
+	yych = *(marker = ++p);
+	if (yych <= ')') {
+		if (yych <= ' ') goto yy1908;
+		if (yych <= '(') goto yy1871;
+	} else {
+		if (yych <= 0x7F) goto yy1871;
+		if (yych <= 0xC1) goto yy1908;
+		if (yych <= 0xF4) goto yy1871;
+	}
+yy1908:
+	{ return (bufsize_t)(p - start); }
+yy1909:
 	++p;
 	yych = *p;
-	if (yybm[0+yych] & 128) {
-		goto yy1907;
-	}
-	if (yych <= 0xE0) {
-		if (yych <= '\\') {
-			if (yych <= '<') goto yy1849;
-			if (yych >= '?') goto yy1910;
-		} else {
-			if (yych <= 0xC1) goto yy1849;
-			if (yych <= 0xDF) goto yy1912;
-			goto yy1913;
-		}
-	} else {
-		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1918;
-			goto yy1914;
-		} else {
-			if (yych <= 0xF0) goto yy1915;
-			if (yych <= 0xF3) goto yy1916;
-			if (yych <= 0xF4) goto yy1917;
-			goto yy1849;
-		}
-	}
-yy1909:
-	yych = *++p;
-	goto yy1897;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1905;
+	goto yy1848;
 yy1910:
 	++p;
 	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1909;
+	goto yy1848;
+yy1911:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1909;
+	goto yy1848;
+yy1912:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1911;
+	goto yy1848;
+yy1913:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1911;
+	goto yy1848;
+yy1914:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1911;
+	goto yy1848;
+yy1915:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1909;
+	goto yy1848;
+yy1916:
+	++p;
+	yych = *p;
 	if (yych <= 0x7F) {
 		if (yych <= '\r') {
 			if (yych <= '\t') {
-				if (yych <= 0x00) goto yy1849;
-				goto yy1907;
+				if (yych <= 0x00) goto yy1870;
+				goto yy1905;
 			} else {
-				if (yych <= '\n') goto yy1849;
-				if (yych <= '\f') goto yy1907;
-				goto yy1849;
+				if (yych <= '\n') goto yy1870;
+				if (yych <= '\f') goto yy1905;
+				goto yy1870;
 			}
 		} else {
 			if (yych <= '>') {
-				if (yych <= '=') goto yy1907;
-				goto yy1919;
+				if (yych <= '=') goto yy1905;
+				goto yy1963;
 			} else {
-				if (yych == '\\') goto yy1910;
-				goto yy1907;
+				if (yych == '\\') goto yy1964;
+				goto yy1905;
 			}
 		}
 	} else {
 		if (yych <= 0xED) {
 			if (yych <= 0xDF) {
-				if (yych <= 0xC1) goto yy1849;
+				if (yych <= 0xC1) goto yy1848;
+				goto yy1965;
 			} else {
-				if (yych <= 0xE0) goto yy1913;
-				if (yych <= 0xEC) goto yy1914;
-				goto yy1918;
+				if (yych <= 0xE0) goto yy1966;
+				if (yych <= 0xEC) goto yy1967;
+				goto yy1971;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy1914;
-				goto yy1915;
+				if (yych <= 0xEF) goto yy1967;
+				goto yy1968;
 			} else {
-				if (yych <= 0xF3) goto yy1916;
-				if (yych <= 0xF4) goto yy1917;
-				goto yy1849;
+				if (yych <= 0xF3) goto yy1969;
+				if (yych <= 0xF4) goto yy1970;
+				goto yy1848;
 			}
 		}
 	}
-yy1912:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1907;
-	goto yy1849;
-yy1913:
-	++p;
-	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1912;
-	goto yy1849;
-yy1914:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1912;
-	goto yy1849;
-yy1915:
-	++p;
-	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
-	if (yych <= 0xBF) goto yy1914;
-	goto yy1849;
-yy1916:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1914;
-	goto yy1849;
 yy1917:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1914;
-	goto yy1849;
-yy1918:
+	if (yych <= '>') {
+		if (yych <= ' ') {
+			if (yych <= '\n') {
+				if (yych <= 0x00) goto yy1848;
+				if (yych >= '\n') goto yy1848;
+			} else {
+				if (yych == '\r') goto yy1848;
+			}
+		} else {
+			if (yych <= ')') {
+				if (yych <= '\'') goto yy1917;
+				if (yych >= ')') goto yy1905;
+			} else {
+				if (yych == '<') goto yy1861;
+				if (yych <= '=') goto yy1917;
+				goto yy1932;
+			}
+		}
+	} else {
+		if (yych <= 0xE0) {
+			if (yych <= 0x7F) {
+				if (yych == '\\') goto yy1933;
+				goto yy1917;
+			} else {
+				if (yych <= 0xC1) goto yy1848;
+				if (yych <= 0xDF) goto yy1935;
+				goto yy1936;
+			}
+		} else {
+			if (yych <= 0xEF) {
+				if (yych == 0xED) goto yy1941;
+				goto yy1937;
+			} else {
+				if (yych <= 0xF0) goto yy1938;
+				if (yych <= 0xF3) goto yy1939;
+				if (yych <= 0xF4) goto yy1940;
+				goto yy1848;
+			}
+		}
+	}
+yy1919:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1912;
-	goto yy1849;
-yy1919:
+	if (yybm[0+yych] & 128) {
+		goto yy1919;
+	}
+	if (yych <= 0xE0) {
+		if (yych <= '\\') {
+			if (yych <= '<') goto yy1848;
+			if (yych >= '?') goto yy1922;
+		} else {
+			if (yych <= 0xC1) goto yy1848;
+			if (yych <= 0xDF) goto yy1924;
+			goto yy1925;
+		}
+	} else {
+		if (yych <= 0xEF) {
+			if (yych == 0xED) goto yy1930;
+			goto yy1926;
+		} else {
+			if (yych <= 0xF0) goto yy1927;
+			if (yych <= 0xF3) goto yy1928;
+			if (yych <= 0xF4) goto yy1929;
+			goto yy1848;
+		}
+	}
+yy1921:
+	yych = *++p;
+	goto yy1908;
+yy1922:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) {
+		if (yych <= '\r') {
+			if (yych <= '\t') {
+				if (yych <= 0x00) goto yy1848;
+				goto yy1919;
+			} else {
+				if (yych <= '\n') goto yy1848;
+				if (yych <= '\f') goto yy1919;
+				goto yy1848;
+			}
+		} else {
+			if (yych <= '>') {
+				if (yych <= '=') goto yy1919;
+				goto yy1931;
+			} else {
+				if (yych == '\\') goto yy1922;
+				goto yy1919;
+			}
+		}
+	} else {
+		if (yych <= 0xED) {
+			if (yych <= 0xDF) {
+				if (yych <= 0xC1) goto yy1848;
+			} else {
+				if (yych <= 0xE0) goto yy1925;
+				if (yych <= 0xEC) goto yy1926;
+				goto yy1930;
+			}
+		} else {
+			if (yych <= 0xF0) {
+				if (yych <= 0xEF) goto yy1926;
+				goto yy1927;
+			} else {
+				if (yych <= 0xF3) goto yy1928;
+				if (yych <= 0xF4) goto yy1929;
+				goto yy1848;
+			}
+		}
+	}
+yy1924:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1919;
+	goto yy1848;
+yy1925:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1924;
+	goto yy1848;
+yy1926:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1924;
+	goto yy1848;
+yy1927:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1926;
+	goto yy1848;
+yy1928:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1926;
+	goto yy1848;
+yy1929:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1926;
+	goto yy1848;
+yy1930:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1924;
+	goto yy1848;
+yy1931:
 	yyaccept = 2;
 	marker = ++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy1907;
+		goto yy1919;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= '<') goto yy1897;
-			if (yych <= '>') goto yy1909;
-			goto yy1910;
+			if (yych <= '<') goto yy1908;
+			if (yych <= '>') goto yy1921;
+			goto yy1922;
 		} else {
-			if (yych <= 0xC1) goto yy1897;
-			if (yych <= 0xDF) goto yy1912;
-			goto yy1913;
+			if (yych <= 0xC1) goto yy1908;
+			if (yych <= 0xDF) goto yy1924;
+			goto yy1925;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1918;
-			goto yy1914;
+			if (yych == 0xED) goto yy1930;
+			goto yy1926;
 		} else {
-			if (yych <= 0xF0) goto yy1915;
-			if (yych <= 0xF3) goto yy1916;
-			if (yych <= 0xF4) goto yy1917;
-			goto yy1897;
+			if (yych <= 0xF0) goto yy1927;
+			if (yych <= 0xF3) goto yy1928;
+			if (yych <= 0xF4) goto yy1929;
+			goto yy1908;
 		}
 	}
-yy1920:
+yy1932:
 	yyaccept = 2;
 	yych = *(marker = ++p);
 	if (yych <= '(') {
-		if (yych <= ' ') goto yy1897;
+		if (yych <= ' ') goto yy1908;
 		if (yych <= '\'') goto yy1862;
-		goto yy1897;
+		goto yy1908;
 	} else {
 		if (yych <= 0x7F) goto yy1862;
-		if (yych <= 0xC1) goto yy1897;
+		if (yych <= 0xC1) goto yy1908;
 		if (yych <= 0xF4) goto yy1862;
-		goto yy1897;
+		goto yy1908;
 	}
-yy1921:
+yy1933:
 	++p;
 	yych = *p;
 	if (yych <= '[') {
 		if (yych <= '\r') {
 			if (yych <= '\t') {
-				if (yych <= 0x00) goto yy1849;
-				goto yy1907;
+				if (yych <= 0x00) goto yy1848;
+				goto yy1919;
 			} else {
-				if (yych <= '\n') goto yy1849;
-				if (yych <= '\f') goto yy1907;
-				goto yy1849;
+				if (yych <= '\n') goto yy1848;
+				if (yych <= '\f') goto yy1919;
+				goto yy1848;
 			}
 		} else {
 			if (yych <= ')') {
-				if (yych <= ' ') goto yy1907;
-				if (yych <= '(') goto yy1905;
-				goto yy1930;
+				if (yych <= ' ') goto yy1919;
+				if (yych <= '(') goto yy1917;
+				goto yy1942;
 			} else {
-				if (yych == '>') goto yy1932;
-				goto yy1905;
+				if (yych == '>') goto yy1944;
+				goto yy1917;
 			}
 		}
 	} else {
 		if (yych <= 0xEC) {
 			if (yych <= 0xC1) {
-				if (yych <= '\\') goto yy1921;
-				if (yych <= 0x7F) goto yy1905;
-				goto yy1849;
+				if (yych <= '\\') goto yy1933;
+				if (yych <= 0x7F) goto yy1917;
+				goto yy1848;
 			} else {
-				if (yych <= 0xDF) goto yy1923;
-				if (yych <= 0xE0) goto yy1924;
-				goto yy1925;
-			}
-		} else {
-			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1929;
-				if (yych <= 0xEF) goto yy1925;
-				goto yy1926;
-			} else {
-				if (yych <= 0xF3) goto yy1927;
-				if (yych <= 0xF4) goto yy1928;
-				goto yy1849;
-			}
-		}
-	}
-yy1923:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1905;
-	goto yy1849;
-yy1924:
-	++p;
-	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1923;
-	goto yy1849;
-yy1925:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1923;
-	goto yy1849;
-yy1926:
-	++p;
-	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
-	if (yych <= 0xBF) goto yy1925;
-	goto yy1849;
-yy1927:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1925;
-	goto yy1849;
-yy1928:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1925;
-	goto yy1849;
-yy1929:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1923;
-	goto yy1849;
-yy1930:
-	yyaccept = 0;
-	marker = ++p;
-	yych = *p;
-	if (yych <= '>') {
-		if (yych <= ' ') {
-			if (yych <= '\n') {
-				if (yych <= 0x00) goto yy1841;
-				if (yych <= '\t') goto yy1907;
-				goto yy1841;
-			} else {
-				if (yych == '\r') goto yy1841;
-				goto yy1907;
-			}
-		} else {
-			if (yych <= ')') {
-				if (yych <= '\'') goto yy1930;
-				if (yych <= '(') goto yy1905;
-				goto yy1894;
-			} else {
-				if (yych == '<') goto yy1881;
-				if (yych <= '=') goto yy1930;
-				goto yy1933;
-			}
-		}
-	} else {
-		if (yych <= 0xE0) {
-			if (yych <= 0x7F) {
-				if (yych == '\\') goto yy1934;
-				goto yy1930;
-			} else {
-				if (yych <= 0xC1) goto yy1841;
-				if (yych <= 0xDF) goto yy1936;
+				if (yych <= 0xDF) goto yy1935;
+				if (yych <= 0xE0) goto yy1936;
 				goto yy1937;
 			}
 		} else {
-			if (yych <= 0xEF) {
-				if (yych == 0xED) goto yy1942;
-				goto yy1938;
-			} else {
-				if (yych <= 0xF0) goto yy1939;
-				if (yych <= 0xF3) goto yy1940;
-				if (yych <= 0xF4) goto yy1941;
-				goto yy1841;
-			}
-		}
-	}
-yy1932:
-	yyaccept = 2;
-	marker = ++p;
-	yych = *p;
-	if (yych <= '>') {
-		if (yych <= ' ') {
-			if (yych <= '\n') {
-				if (yych <= 0x00) goto yy1897;
-				if (yych <= '\t') goto yy1907;
-				goto yy1897;
-			} else {
-				if (yych == '\r') goto yy1897;
-				goto yy1907;
-			}
-		} else {
-			if (yych <= ')') {
-				if (yych <= '\'') goto yy1905;
-				if (yych <= '(') goto yy1907;
-				goto yy1894;
-			} else {
-				if (yych == '<') goto yy1861;
-				if (yych <= '=') goto yy1905;
-				goto yy1920;
-			}
-		}
-	} else {
-		if (yych <= 0xE0) {
-			if (yych <= 0x7F) {
-				if (yych == '\\') goto yy1921;
-				goto yy1905;
-			} else {
-				if (yych <= 0xC1) goto yy1897;
-				if (yych <= 0xDF) goto yy1923;
-				goto yy1924;
-			}
-		} else {
-			if (yych <= 0xEF) {
-				if (yych == 0xED) goto yy1929;
-				goto yy1925;
-			} else {
-				if (yych <= 0xF0) goto yy1926;
-				if (yych <= 0xF3) goto yy1927;
-				if (yych <= 0xF4) goto yy1928;
-				goto yy1897;
-			}
-		}
-	}
-yy1933:
-	yyaccept = 2;
-	yych = *(marker = ++p);
-	if (yych <= ' ') goto yy1897;
-	if (yych <= 0x7F) goto yy1882;
-	if (yych <= 0xC1) goto yy1897;
-	if (yych <= 0xF4) goto yy1882;
-	goto yy1897;
-yy1934:
-	yyaccept = 0;
-	marker = ++p;
-	yych = *p;
-	if (yych <= '\\') {
-		if (yych <= '\r') {
-			if (yych <= '\t') {
-				if (yych <= 0x00) goto yy1841;
-				goto yy1907;
-			} else {
-				if (yych <= '\n') goto yy1841;
-				if (yych <= '\f') goto yy1907;
-				goto yy1841;
-			}
-		} else {
-			if (yych <= '=') {
-				if (yych <= ' ') goto yy1907;
-				goto yy1930;
-			} else {
-				if (yych <= '>') goto yy1943;
-				if (yych <= '[') goto yy1930;
-				goto yy1934;
-			}
-		}
-	} else {
-		if (yych <= 0xEC) {
-			if (yych <= 0xC1) {
-				if (yych <= 0x7F) goto yy1930;
-				goto yy1841;
-			} else {
-				if (yych <= 0xDF) goto yy1936;
-				if (yych <= 0xE0) goto yy1937;
-				goto yy1938;
-			}
-		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1942;
-				if (yych <= 0xEF) goto yy1938;
-				goto yy1939;
+				if (yych <= 0xED) goto yy1941;
+				if (yych <= 0xEF) goto yy1937;
+				goto yy1938;
 			} else {
-				if (yych <= 0xF3) goto yy1940;
-				if (yych <= 0xF4) goto yy1941;
-				goto yy1841;
+				if (yych <= 0xF3) goto yy1939;
+				if (yych <= 0xF4) goto yy1940;
+				goto yy1848;
 			}
 		}
 	}
+yy1935:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1917;
+	goto yy1848;
 yy1936:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1930;
-	goto yy1849;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1935;
+	goto yy1848;
 yy1937:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy1849;
-	if (yych <= 0xBF) goto yy1936;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1935;
+	goto yy1848;
 yy1938:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1936;
-	goto yy1849;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1937;
+	goto yy1848;
 yy1939:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy1849;
-	if (yych <= 0xBF) goto yy1938;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1937;
+	goto yy1848;
 yy1940:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0xBF) goto yy1938;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1937;
+	goto yy1848;
 yy1941:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x8F) goto yy1938;
-	goto yy1849;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1935;
+	goto yy1848;
 yy1942:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1849;
-	if (yych <= 0x9F) goto yy1936;
-	goto yy1849;
-yy1943:
-	yyaccept = 2;
+	yyaccept = 0;
 	marker = ++p;
 	yych = *p;
 	if (yych <= '>') {
 		if (yych <= ' ') {
 			if (yych <= '\n') {
-				if (yych <= 0x00) goto yy1897;
-				if (yych <= '\t') goto yy1907;
-				goto yy1897;
+				if (yych <= 0x00) goto yy1841;
+				if (yych <= '\t') goto yy1919;
+				goto yy1841;
 			} else {
-				if (yych == '\r') goto yy1897;
-				goto yy1907;
+				if (yych == '\r') goto yy1841;
+				goto yy1919;
 			}
 		} else {
 			if (yych <= ')') {
-				if (yych <= '\'') goto yy1930;
-				if (yych <= '(') goto yy1905;
-				goto yy1894;
+				if (yych <= '\'') goto yy1942;
+				if (yych <= '(') goto yy1917;
+				goto yy1905;
 			} else {
-				if (yych == '<') goto yy1881;
-				if (yych <= '=') goto yy1930;
-				goto yy1933;
+				if (yych == '<') goto yy1887;
+				if (yych <= '=') goto yy1942;
+				goto yy1945;
 			}
 		}
 	} else {
 		if (yych <= 0xE0) {
 			if (yych <= 0x7F) {
-				if (yych == '\\') goto yy1934;
-				goto yy1930;
+				if (yych == '\\') goto yy1946;
+				goto yy1942;
 			} else {
-				if (yych <= 0xC1) goto yy1897;
-				if (yych <= 0xDF) goto yy1936;
-				goto yy1937;
+				if (yych <= 0xC1) goto yy1841;
+				if (yych <= 0xDF) goto yy1947;
+				goto yy1948;
 			}
 		} else {
 			if (yych <= 0xEF) {
-				if (yych == 0xED) goto yy1942;
-				goto yy1938;
+				if (yych == 0xED) goto yy1953;
+				goto yy1949;
 			} else {
-				if (yych <= 0xF0) goto yy1939;
-				if (yych <= 0xF3) goto yy1940;
-				if (yych <= 0xF4) goto yy1941;
-				goto yy1897;
+				if (yych <= 0xF0) goto yy1950;
+				if (yych <= 0xF3) goto yy1951;
+				if (yych <= 0xF4) goto yy1952;
+				goto yy1841;
 			}
 		}
 	}
@@ -17830,51 +17761,418 @@
 	yyaccept = 2;
 	marker = ++p;
 	yych = *p;
-	if (yybm[0+yych] & 64) {
-		goto yy1894;
-	}
 	if (yych <= '>') {
-		if (yych <= '\r') {
-			if (yych <= '\t') {
-				if (yych <= 0x00) goto yy1897;
-				goto yy1907;
+		if (yych <= ' ') {
+			if (yych <= '\n') {
+				if (yych <= 0x00) goto yy1908;
+				if (yych <= '\t') goto yy1919;
+				goto yy1908;
 			} else {
-				if (yych <= '\n') goto yy1897;
-				if (yych <= '\f') goto yy1907;
-				goto yy1897;
+				if (yych == '\r') goto yy1908;
+				goto yy1919;
 			}
 		} else {
-			if (yych <= '(') {
-				if (yych <= ' ') goto yy1907;
+			if (yych <= ')') {
+				if (yych <= '\'') goto yy1917;
+				if (yych <= '(') goto yy1919;
 				goto yy1905;
 			} else {
-				if (yych <= ')') goto yy1907;
-				if (yych <= '<') goto yy1870;
-				goto yy1896;
+				if (yych == '<') goto yy1861;
+				if (yych <= '=') goto yy1917;
+				goto yy1932;
+			}
+		}
+	} else {
+		if (yych <= 0xE0) {
+			if (yych <= 0x7F) {
+				if (yych == '\\') goto yy1933;
+				goto yy1917;
+			} else {
+				if (yych <= 0xC1) goto yy1908;
+				if (yych <= 0xDF) goto yy1935;
+				goto yy1936;
+			}
+		} else {
+			if (yych <= 0xEF) {
+				if (yych == 0xED) goto yy1941;
+				goto yy1937;
+			} else {
+				if (yych <= 0xF0) goto yy1938;
+				if (yych <= 0xF3) goto yy1939;
+				if (yych <= 0xF4) goto yy1940;
+				goto yy1908;
+			}
+		}
+	}
+yy1945:
+	yyaccept = 2;
+	yych = *(marker = ++p);
+	if (yych <= ' ') goto yy1908;
+	if (yych <= 0x7F) goto yy1888;
+	if (yych <= 0xC1) goto yy1908;
+	if (yych <= 0xF4) goto yy1888;
+	goto yy1908;
+yy1946:
+	++p;
+	yych = *p;
+	if (yych <= '\\') {
+		if (yych <= '\r') {
+			if (yych <= '\t') {
+				if (yych <= 0x00) goto yy1870;
+				goto yy1905;
+			} else {
+				if (yych <= '\n') goto yy1870;
+				if (yych <= '\f') goto yy1905;
+				goto yy1870;
+			}
+		} else {
+			if (yych <= '=') {
+				if (yych <= ' ') goto yy1905;
+				goto yy1942;
+			} else {
+				if (yych <= '>') goto yy1954;
+				if (yych <= '[') goto yy1942;
+				goto yy1955;
 			}
 		}
 	} else {
 		if (yych <= 0xEC) {
 			if (yych <= 0xC1) {
-				if (yych <= '\\') goto yy1892;
-				goto yy1897;
+				if (yych <= 0x7F) goto yy1942;
+				goto yy1848;
 			} else {
-				if (yych <= 0xDF) goto yy1898;
-				if (yych <= 0xE0) goto yy1899;
-				goto yy1900;
+				if (yych <= 0xDF) goto yy1956;
+				if (yych <= 0xE0) goto yy1957;
+				goto yy1958;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xED) goto yy1904;
-				if (yych <= 0xEF) goto yy1900;
-				goto yy1901;
+				if (yych <= 0xED) goto yy1962;
+				if (yych <= 0xEF) goto yy1958;
+				goto yy1959;
 			} else {
-				if (yych <= 0xF3) goto yy1902;
-				if (yych <= 0xF4) goto yy1903;
-				goto yy1897;
+				if (yych <= 0xF3) goto yy1960;
+				if (yych <= 0xF4) goto yy1961;
+				goto yy1848;
 			}
 		}
 	}
+yy1947:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1942;
+	goto yy1848;
+yy1948:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1947;
+	goto yy1848;
+yy1949:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1947;
+	goto yy1848;
+yy1950:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1949;
+	goto yy1848;
+yy1951:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1949;
+	goto yy1848;
+yy1952:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1949;
+	goto yy1848;
+yy1953:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1947;
+	goto yy1848;
+yy1954:
+	yyaccept = 2;
+	marker = ++p;
+	yych = *p;
+	if (yych <= '>') {
+		if (yych <= ' ') {
+			if (yych <= '\n') {
+				if (yych <= 0x00) goto yy1908;
+				if (yych <= '\t') goto yy1919;
+				goto yy1908;
+			} else {
+				if (yych == '\r') goto yy1908;
+				goto yy1919;
+			}
+		} else {
+			if (yych <= ')') {
+				if (yych <= '\'') goto yy1942;
+				if (yych <= '(') goto yy1917;
+				goto yy1905;
+			} else {
+				if (yych == '<') goto yy1887;
+				if (yych <= '=') goto yy1942;
+				goto yy1945;
+			}
+		}
+	} else {
+		if (yych <= 0xE0) {
+			if (yych <= 0x7F) {
+				if (yych == '\\') goto yy1946;
+				goto yy1942;
+			} else {
+				if (yych <= 0xC1) goto yy1908;
+				if (yych <= 0xDF) goto yy1947;
+				goto yy1948;
+			}
+		} else {
+			if (yych <= 0xEF) {
+				if (yych == 0xED) goto yy1953;
+				goto yy1949;
+			} else {
+				if (yych <= 0xF0) goto yy1950;
+				if (yych <= 0xF3) goto yy1951;
+				if (yych <= 0xF4) goto yy1952;
+				goto yy1908;
+			}
+		}
+	}
+yy1955:
+	yyaccept = 0;
+	marker = ++p;
+	yych = *p;
+	if (yych <= '[') {
+		if (yych <= '\r') {
+			if (yych <= '\t') {
+				if (yych <= 0x00) goto yy1841;
+				goto yy1919;
+			} else {
+				if (yych <= '\n') goto yy1841;
+				if (yych <= '\f') goto yy1919;
+				goto yy1841;
+			}
+		} else {
+			if (yych <= '(') {
+				if (yych <= ' ') goto yy1919;
+				if (yych <= '\'') goto yy1942;
+				goto yy1917;
+			} else {
+				if (yych == '>') goto yy1954;
+				goto yy1942;
+			}
+		}
+	} else {
+		if (yych <= 0xEC) {
+			if (yych <= 0xC1) {
+				if (yych <= '\\') goto yy1946;
+				if (yych <= 0x7F) goto yy1942;
+				goto yy1841;
+			} else {
+				if (yych <= 0xDF) goto yy1947;
+				if (yych <= 0xE0) goto yy1948;
+				goto yy1949;
+			}
+		} else {
+			if (yych <= 0xF0) {
+				if (yych <= 0xED) goto yy1953;
+				if (yych <= 0xEF) goto yy1949;
+				goto yy1950;
+			} else {
+				if (yych <= 0xF3) goto yy1951;
+				if (yych <= 0xF4) goto yy1952;
+				goto yy1841;
+			}
+		}
+	}
+yy1956:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1942;
+	goto yy1848;
+yy1957:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1956;
+	goto yy1848;
+yy1958:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1956;
+	goto yy1848;
+yy1959:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1958;
+	goto yy1848;
+yy1960:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1958;
+	goto yy1848;
+yy1961:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1958;
+	goto yy1848;
+yy1962:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1956;
+	goto yy1848;
+yy1963:
+	yyaccept = 2;
+	marker = ++p;
+	yych = *p;
+	if (yybm[0+yych] & 64) {
+		goto yy1905;
+	}
+	if (yych <= '>') {
+		if (yych <= '\r') {
+			if (yych <= '\t') {
+				if (yych <= 0x00) goto yy1908;
+				goto yy1919;
+			} else {
+				if (yych <= '\n') goto yy1908;
+				if (yych <= '\f') goto yy1919;
+				goto yy1908;
+			}
+		} else {
+			if (yych <= '(') {
+				if (yych <= ' ') goto yy1919;
+				goto yy1917;
+			} else {
+				if (yych <= ')') goto yy1919;
+				if (yych <= '<') goto yy1870;
+				goto yy1907;
+			}
+		}
+	} else {
+		if (yych <= 0xEC) {
+			if (yych <= 0xC1) {
+				if (yych <= '\\') goto yy1916;
+				goto yy1908;
+			} else {
+				if (yych <= 0xDF) goto yy1909;
+				if (yych <= 0xE0) goto yy1910;
+				goto yy1911;
+			}
+		} else {
+			if (yych <= 0xF0) {
+				if (yych <= 0xED) goto yy1915;
+				if (yych <= 0xEF) goto yy1911;
+				goto yy1912;
+			} else {
+				if (yych <= 0xF3) goto yy1913;
+				if (yych <= 0xF4) goto yy1914;
+				goto yy1908;
+			}
+		}
+	}
+yy1964:
+	yyaccept = 0;
+	marker = ++p;
+	yych = *p;
+	if (yych <= '[') {
+		if (yych <= ' ') {
+			if (yych <= '\n') {
+				if (yych <= 0x00) goto yy1841;
+				if (yych <= '\t') goto yy1919;
+				goto yy1841;
+			} else {
+				if (yych == '\r') goto yy1841;
+				goto yy1919;
+			}
+		} else {
+			if (yych <= ')') {
+				if (yych <= '\'') goto yy1905;
+				if (yych <= '(') goto yy1917;
+				goto yy1919;
+			} else {
+				if (yych == '>') goto yy1963;
+				goto yy1905;
+			}
+		}
+	} else {
+		if (yych <= 0xEC) {
+			if (yych <= 0xC1) {
+				if (yych <= '\\') goto yy1916;
+				if (yych <= 0x7F) goto yy1905;
+				goto yy1841;
+			} else {
+				if (yych <= 0xDF) goto yy1909;
+				if (yych <= 0xE0) goto yy1910;
+				goto yy1911;
+			}
+		} else {
+			if (yych <= 0xF0) {
+				if (yych <= 0xED) goto yy1915;
+				if (yych <= 0xEF) goto yy1911;
+				goto yy1912;
+			} else {
+				if (yych <= 0xF3) goto yy1913;
+				if (yych <= 0xF4) goto yy1914;
+				goto yy1841;
+			}
+		}
+	}
+yy1965:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1905;
+	goto yy1848;
+yy1966:
+	++p;
+	yych = *p;
+	if (yych <= 0x9F) goto yy1848;
+	if (yych <= 0xBF) goto yy1965;
+	goto yy1848;
+yy1967:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1965;
+	goto yy1848;
+yy1968:
+	++p;
+	yych = *p;
+	if (yych <= 0x8F) goto yy1848;
+	if (yych <= 0xBF) goto yy1967;
+	goto yy1848;
+yy1969:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0xBF) goto yy1967;
+	goto yy1848;
+yy1970:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x8F) goto yy1967;
+	goto yy1848;
+yy1971:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1848;
+	if (yych <= 0x9F) goto yy1965;
+	goto yy1848;
 }
 
 }
@@ -17927,494 +18225,494 @@
 	yych = *(marker = p);
 	if (yych <= 0xC1) {
 		if (yych <= '"') {
-			if (yych == '\n') goto yy1947;
-			if (yych <= '!') goto yy1951;
-			goto yy1948;
+			if (yych == '\n') goto yy1974;
+			if (yych <= '!') goto yy1978;
+			goto yy1975;
 		} else {
 			if (yych <= '\'') {
-				if (yych <= '&') goto yy1951;
-				goto yy1949;
+				if (yych <= '&') goto yy1978;
+				goto yy1976;
 			} else {
-				if (yych <= '(') goto yy1950;
-				if (yych <= 0x7F) goto yy1951;
+				if (yych <= '(') goto yy1977;
+				if (yych <= 0x7F) goto yy1978;
 			}
 		}
 	} else {
 		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy1952;
-			if (yych <= 0xE0) goto yy1954;
-			if (yych <= 0xEC) goto yy1955;
-			goto yy1959;
+			if (yych <= 0xDF) goto yy1979;
+			if (yych <= 0xE0) goto yy1981;
+			if (yych <= 0xEC) goto yy1982;
+			goto yy1986;
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy1955;
-				goto yy1956;
+				if (yych <= 0xEF) goto yy1982;
+				goto yy1983;
 			} else {
-				if (yych <= 0xF3) goto yy1957;
-				if (yych <= 0xF4) goto yy1958;
+				if (yych <= 0xF3) goto yy1984;
+				if (yych <= 0xF4) goto yy1985;
 			}
 		}
 	}
-yy1947:
+yy1974:
 	{ return 0; }
-yy1948:
+yy1975:
 	yyaccept = 0;
 	yych = *(marker = ++p);
-	if (yych <= 0x00) goto yy1947;
-	if (yych <= 0x7F) goto yy1991;
-	if (yych <= 0xC1) goto yy1947;
-	if (yych <= 0xF4) goto yy1991;
-	goto yy1947;
-yy1949:
+	if (yych <= 0x00) goto yy1974;
+	if (yych <= 0x7F) goto yy2018;
+	if (yych <= 0xC1) goto yy1974;
+	if (yych <= 0xF4) goto yy2018;
+	goto yy1974;
+yy1976:
 	yyaccept = 0;
 	yych = *(marker = ++p);
-	if (yych <= 0x00) goto yy1947;
-	if (yych <= 0x7F) goto yy1977;
-	if (yych <= 0xC1) goto yy1947;
-	if (yych <= 0xF4) goto yy1977;
-	goto yy1947;
-yy1950:
+	if (yych <= 0x00) goto yy1974;
+	if (yych <= 0x7F) goto yy2004;
+	if (yych <= 0xC1) goto yy1974;
+	if (yych <= 0xF4) goto yy2004;
+	goto yy1974;
+yy1977:
 	yyaccept = 0;
 	yych = *(marker = ++p);
-	if (yych <= 0x00) goto yy1947;
-	if (yych <= 0x7F) goto yy1963;
-	if (yych <= 0xC1) goto yy1947;
-	if (yych <= 0xF4) goto yy1963;
-	goto yy1947;
-yy1951:
+	if (yych <= 0x00) goto yy1974;
+	if (yych <= 0x7F) goto yy1990;
+	if (yych <= 0xC1) goto yy1974;
+	if (yych <= 0xF4) goto yy1990;
+	goto yy1974;
+yy1978:
 	yych = *++p;
-	goto yy1947;
-yy1952:
+	goto yy1974;
+yy1979:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1951;
-yy1953:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy1978;
+yy1980:
 	p = marker;
 	if (yyaccept <= 1) {
 		if (yyaccept == 0) {
-			goto yy1947;
+			goto yy1974;
 		} else {
-			goto yy1972;
+			goto yy1999;
 		}
 	} else {
 		if (yyaccept == 2) {
-			goto yy1986;
+			goto yy2013;
 		} else {
-			goto yy2000;
+			goto yy2027;
 		}
 	}
-yy1954:
+yy1981:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy1953;
-	if (yych <= 0xBF) goto yy1952;
-	goto yy1953;
-yy1955:
+	if (yych <= 0x9F) goto yy1980;
+	if (yych <= 0xBF) goto yy1979;
+	goto yy1980;
+yy1982:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1952;
-	goto yy1953;
-yy1956:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy1979;
+	goto yy1980;
+yy1983:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy1953;
-	if (yych <= 0xBF) goto yy1955;
-	goto yy1953;
-yy1957:
+	if (yych <= 0x8F) goto yy1980;
+	if (yych <= 0xBF) goto yy1982;
+	goto yy1980;
+yy1984:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1955;
-	goto yy1953;
-yy1958:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy1982;
+	goto yy1980;
+yy1985:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x8F) goto yy1955;
-	goto yy1953;
-yy1959:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x8F) goto yy1982;
+	goto yy1980;
+yy1986:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x9F) goto yy1952;
-	goto yy1953;
-yy1960:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x9F) goto yy1979;
+	goto yy1980;
+yy1987:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy1962;
+		goto yy1989;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1953;
-			if (yych <= ')') goto yy1973;
-			goto yy1960;
+			if (yych <= 0x00) goto yy1980;
+			if (yych <= ')') goto yy2000;
+			goto yy1987;
 		} else {
-			if (yych <= 0xC1) goto yy1953;
-			if (yych <= 0xDF) goto yy1964;
-			goto yy1965;
+			if (yych <= 0xC1) goto yy1980;
+			if (yych <= 0xDF) goto yy1991;
+			goto yy1992;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1970;
-			goto yy1966;
+			if (yych == 0xED) goto yy1997;
+			goto yy1993;
 		} else {
-			if (yych <= 0xF0) goto yy1967;
-			if (yych <= 0xF3) goto yy1968;
-			if (yych <= 0xF4) goto yy1969;
-			goto yy1953;
+			if (yych <= 0xF0) goto yy1994;
+			if (yych <= 0xF3) goto yy1995;
+			if (yych <= 0xF4) goto yy1996;
+			goto yy1980;
 		}
 	}
-yy1962:
+yy1989:
 	++p;
 	yych = *p;
-yy1963:
+yy1990:
 	if (yybm[0+yych] & 32) {
-		goto yy1962;
+		goto yy1989;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1953;
-			if (yych <= ')') goto yy1971;
-			goto yy1960;
+			if (yych <= 0x00) goto yy1980;
+			if (yych <= ')') goto yy1998;
+			goto yy1987;
 		} else {
-			if (yych <= 0xC1) goto yy1953;
-			if (yych >= 0xE0) goto yy1965;
+			if (yych <= 0xC1) goto yy1980;
+			if (yych >= 0xE0) goto yy1992;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1970;
-			goto yy1966;
+			if (yych == 0xED) goto yy1997;
+			goto yy1993;
 		} else {
-			if (yych <= 0xF0) goto yy1967;
-			if (yych <= 0xF3) goto yy1968;
-			if (yych <= 0xF4) goto yy1969;
-			goto yy1953;
+			if (yych <= 0xF0) goto yy1994;
+			if (yych <= 0xF3) goto yy1995;
+			if (yych <= 0xF4) goto yy1996;
+			goto yy1980;
 		}
 	}
-yy1964:
+yy1991:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1962;
-	goto yy1953;
-yy1965:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy1989;
+	goto yy1980;
+yy1992:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy1953;
-	if (yych <= 0xBF) goto yy1964;
-	goto yy1953;
-yy1966:
+	if (yych <= 0x9F) goto yy1980;
+	if (yych <= 0xBF) goto yy1991;
+	goto yy1980;
+yy1993:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1964;
-	goto yy1953;
-yy1967:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy1991;
+	goto yy1980;
+yy1994:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy1953;
-	if (yych <= 0xBF) goto yy1966;
-	goto yy1953;
-yy1968:
+	if (yych <= 0x8F) goto yy1980;
+	if (yych <= 0xBF) goto yy1993;
+	goto yy1980;
+yy1995:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1966;
-	goto yy1953;
-yy1969:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy1993;
+	goto yy1980;
+yy1996:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x8F) goto yy1966;
-	goto yy1953;
-yy1970:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x8F) goto yy1993;
+	goto yy1980;
+yy1997:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x9F) goto yy1964;
-	goto yy1953;
-yy1971:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x9F) goto yy1991;
+	goto yy1980;
+yy1998:
 	++p;
-yy1972:
+yy1999:
 	{ return (bufsize_t)(p - start); }
-yy1973:
+yy2000:
 	yyaccept = 1;
 	marker = ++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy1962;
+		goto yy1989;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1972;
-			if (yych <= ')') goto yy1971;
-			goto yy1960;
+			if (yych <= 0x00) goto yy1999;
+			if (yych <= ')') goto yy1998;
+			goto yy1987;
 		} else {
-			if (yych <= 0xC1) goto yy1972;
-			if (yych <= 0xDF) goto yy1964;
-			goto yy1965;
+			if (yych <= 0xC1) goto yy1999;
+			if (yych <= 0xDF) goto yy1991;
+			goto yy1992;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1970;
-			goto yy1966;
+			if (yych == 0xED) goto yy1997;
+			goto yy1993;
 		} else {
-			if (yych <= 0xF0) goto yy1967;
-			if (yych <= 0xF3) goto yy1968;
-			if (yych <= 0xF4) goto yy1969;
-			goto yy1972;
+			if (yych <= 0xF0) goto yy1994;
+			if (yych <= 0xF3) goto yy1995;
+			if (yych <= 0xF4) goto yy1996;
+			goto yy1999;
 		}
 	}
-yy1974:
+yy2001:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 64) {
-		goto yy1976;
+		goto yy2003;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1953;
-			if (yych <= '\'') goto yy1987;
-			goto yy1974;
+			if (yych <= 0x00) goto yy1980;
+			if (yych <= '\'') goto yy2014;
+			goto yy2001;
 		} else {
-			if (yych <= 0xC1) goto yy1953;
-			if (yych <= 0xDF) goto yy1978;
-			goto yy1979;
+			if (yych <= 0xC1) goto yy1980;
+			if (yych <= 0xDF) goto yy2005;
+			goto yy2006;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1984;
-			goto yy1980;
+			if (yych == 0xED) goto yy2011;
+			goto yy2007;
 		} else {
-			if (yych <= 0xF0) goto yy1981;
-			if (yych <= 0xF3) goto yy1982;
-			if (yych <= 0xF4) goto yy1983;
-			goto yy1953;
+			if (yych <= 0xF0) goto yy2008;
+			if (yych <= 0xF3) goto yy2009;
+			if (yych <= 0xF4) goto yy2010;
+			goto yy1980;
 		}
 	}
-yy1976:
+yy2003:
 	++p;
 	yych = *p;
-yy1977:
+yy2004:
 	if (yybm[0+yych] & 64) {
-		goto yy1976;
+		goto yy2003;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1953;
-			if (yych <= '\'') goto yy1985;
-			goto yy1974;
+			if (yych <= 0x00) goto yy1980;
+			if (yych <= '\'') goto yy2012;
+			goto yy2001;
 		} else {
-			if (yych <= 0xC1) goto yy1953;
-			if (yych >= 0xE0) goto yy1979;
+			if (yych <= 0xC1) goto yy1980;
+			if (yych >= 0xE0) goto yy2006;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1984;
-			goto yy1980;
+			if (yych == 0xED) goto yy2011;
+			goto yy2007;
 		} else {
-			if (yych <= 0xF0) goto yy1981;
-			if (yych <= 0xF3) goto yy1982;
-			if (yych <= 0xF4) goto yy1983;
-			goto yy1953;
+			if (yych <= 0xF0) goto yy2008;
+			if (yych <= 0xF3) goto yy2009;
+			if (yych <= 0xF4) goto yy2010;
+			goto yy1980;
 		}
 	}
-yy1978:
+yy2005:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1976;
-	goto yy1953;
-yy1979:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy2003;
+	goto yy1980;
+yy2006:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy1953;
-	if (yych <= 0xBF) goto yy1978;
-	goto yy1953;
-yy1980:
+	if (yych <= 0x9F) goto yy1980;
+	if (yych <= 0xBF) goto yy2005;
+	goto yy1980;
+yy2007:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1978;
-	goto yy1953;
-yy1981:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy2005;
+	goto yy1980;
+yy2008:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy1953;
-	if (yych <= 0xBF) goto yy1980;
-	goto yy1953;
-yy1982:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1980;
-	goto yy1953;
-yy1983:
-	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
 	if (yych <= 0x8F) goto yy1980;
-	goto yy1953;
-yy1984:
+	if (yych <= 0xBF) goto yy2007;
+	goto yy1980;
+yy2009:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x9F) goto yy1978;
-	goto yy1953;
-yy1985:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy2007;
+	goto yy1980;
+yy2010:
 	++p;
-yy1986:
+	yych = *p;
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x8F) goto yy2007;
+	goto yy1980;
+yy2011:
+	++p;
+	yych = *p;
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x9F) goto yy2005;
+	goto yy1980;
+yy2012:
+	++p;
+yy2013:
 	{ return (bufsize_t)(p - start); }
-yy1987:
+yy2014:
 	yyaccept = 2;
 	marker = ++p;
 	yych = *p;
 	if (yybm[0+yych] & 64) {
-		goto yy1976;
+		goto yy2003;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1986;
-			if (yych <= '\'') goto yy1985;
-			goto yy1974;
+			if (yych <= 0x00) goto yy2013;
+			if (yych <= '\'') goto yy2012;
+			goto yy2001;
 		} else {
-			if (yych <= 0xC1) goto yy1986;
-			if (yych <= 0xDF) goto yy1978;
-			goto yy1979;
+			if (yych <= 0xC1) goto yy2013;
+			if (yych <= 0xDF) goto yy2005;
+			goto yy2006;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1984;
+			if (yych == 0xED) goto yy2011;
+			goto yy2007;
+		} else {
+			if (yych <= 0xF0) goto yy2008;
+			if (yych <= 0xF3) goto yy2009;
+			if (yych <= 0xF4) goto yy2010;
+			goto yy2013;
+		}
+	}
+yy2015:
+	++p;
+	yych = *p;
+	if (yybm[0+yych] & 128) {
+		goto yy2017;
+	}
+	if (yych <= 0xE0) {
+		if (yych <= '\\') {
+			if (yych <= 0x00) goto yy1980;
+			if (yych <= '"') goto yy2028;
+			goto yy2015;
+		} else {
+			if (yych <= 0xC1) goto yy1980;
+			if (yych <= 0xDF) goto yy2019;
+			goto yy2020;
+		}
+	} else {
+		if (yych <= 0xEF) {
+			if (yych == 0xED) goto yy2025;
+			goto yy2021;
+		} else {
+			if (yych <= 0xF0) goto yy2022;
+			if (yych <= 0xF3) goto yy2023;
+			if (yych <= 0xF4) goto yy2024;
 			goto yy1980;
-		} else {
-			if (yych <= 0xF0) goto yy1981;
-			if (yych <= 0xF3) goto yy1982;
-			if (yych <= 0xF4) goto yy1983;
-			goto yy1986;
 		}
 	}
-yy1988:
+yy2017:
 	++p;
 	yych = *p;
+yy2018:
 	if (yybm[0+yych] & 128) {
-		goto yy1990;
+		goto yy2017;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1953;
-			if (yych <= '"') goto yy2001;
-			goto yy1988;
+			if (yych <= 0x00) goto yy1980;
+			if (yych <= '"') goto yy2026;
+			goto yy2015;
 		} else {
-			if (yych <= 0xC1) goto yy1953;
-			if (yych <= 0xDF) goto yy1992;
-			goto yy1993;
+			if (yych <= 0xC1) goto yy1980;
+			if (yych >= 0xE0) goto yy2020;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1998;
-			goto yy1994;
+			if (yych == 0xED) goto yy2025;
+			goto yy2021;
 		} else {
-			if (yych <= 0xF0) goto yy1995;
-			if (yych <= 0xF3) goto yy1996;
-			if (yych <= 0xF4) goto yy1997;
-			goto yy1953;
+			if (yych <= 0xF0) goto yy2022;
+			if (yych <= 0xF3) goto yy2023;
+			if (yych <= 0xF4) goto yy2024;
+			goto yy1980;
 		}
 	}
-yy1990:
+yy2019:
 	++p;
 	yych = *p;
-yy1991:
-	if (yybm[0+yych] & 128) {
-		goto yy1990;
-	}
-	if (yych <= 0xE0) {
-		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy1953;
-			if (yych <= '"') goto yy1999;
-			goto yy1988;
-		} else {
-			if (yych <= 0xC1) goto yy1953;
-			if (yych >= 0xE0) goto yy1993;
-		}
-	} else {
-		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1998;
-			goto yy1994;
-		} else {
-			if (yych <= 0xF0) goto yy1995;
-			if (yych <= 0xF3) goto yy1996;
-			if (yych <= 0xF4) goto yy1997;
-			goto yy1953;
-		}
-	}
-yy1992:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy2017;
+	goto yy1980;
+yy2020:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1990;
-	goto yy1953;
-yy1993:
+	if (yych <= 0x9F) goto yy1980;
+	if (yych <= 0xBF) goto yy2019;
+	goto yy1980;
+yy2021:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy1953;
-	if (yych <= 0xBF) goto yy1992;
-	goto yy1953;
-yy1994:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy2019;
+	goto yy1980;
+yy2022:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1992;
-	goto yy1953;
-yy1995:
+	if (yych <= 0x8F) goto yy1980;
+	if (yych <= 0xBF) goto yy2021;
+	goto yy1980;
+yy2023:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy1953;
-	if (yych <= 0xBF) goto yy1994;
-	goto yy1953;
-yy1996:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0xBF) goto yy2021;
+	goto yy1980;
+yy2024:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0xBF) goto yy1994;
-	goto yy1953;
-yy1997:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x8F) goto yy2021;
+	goto yy1980;
+yy2025:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x8F) goto yy1994;
-	goto yy1953;
-yy1998:
+	if (yych <= 0x7F) goto yy1980;
+	if (yych <= 0x9F) goto yy2019;
+	goto yy1980;
+yy2026:
 	++p;
-	yych = *p;
-	if (yych <= 0x7F) goto yy1953;
-	if (yych <= 0x9F) goto yy1992;
-	goto yy1953;
-yy1999:
-	++p;
-yy2000:
+yy2027:
 	{ return (bufsize_t)(p - start); }
-yy2001:
+yy2028:
 	yyaccept = 3;
 	marker = ++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy1990;
+		goto yy2017;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '\\') {
-			if (yych <= 0x00) goto yy2000;
-			if (yych <= '"') goto yy1999;
-			goto yy1988;
+			if (yych <= 0x00) goto yy2027;
+			if (yych <= '"') goto yy2026;
+			goto yy2015;
 		} else {
-			if (yych <= 0xC1) goto yy2000;
-			if (yych <= 0xDF) goto yy1992;
-			goto yy1993;
+			if (yych <= 0xC1) goto yy2027;
+			if (yych <= 0xDF) goto yy2019;
+			goto yy2020;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy1998;
-			goto yy1994;
+			if (yych == 0xED) goto yy2025;
+			goto yy2021;
 		} else {
-			if (yych <= 0xF0) goto yy1995;
-			if (yych <= 0xF3) goto yy1996;
-			if (yych <= 0xF4) goto yy1997;
-			goto yy2000;
+			if (yych <= 0xF0) goto yy2022;
+			if (yych <= 0xF3) goto yy2023;
+			if (yych <= 0xF4) goto yy2024;
+			goto yy2027;
 		}
 	}
 }
@@ -18466,82 +18764,82 @@
 	yych = *(marker = p);
 	if (yych <= 0xC1) {
 		if (yych <= '\r') {
-			if (yych <= 0x08) goto yy2008;
-			if (yych == '\n') goto yy2006;
-			goto yy2005;
+			if (yych <= 0x08) goto yy2035;
+			if (yych == '\n') goto yy2033;
+			goto yy2032;
 		} else {
-			if (yych == ' ') goto yy2005;
-			if (yych <= 0x7F) goto yy2008;
+			if (yych == ' ') goto yy2032;
+			if (yych <= 0x7F) goto yy2035;
 		}
 	} else {
 		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy2010;
-			if (yych <= 0xE0) goto yy2012;
-			if (yych <= 0xEC) goto yy2013;
-			goto yy2017;
+			if (yych <= 0xDF) goto yy2037;
+			if (yych <= 0xE0) goto yy2039;
+			if (yych <= 0xEC) goto yy2040;
+			goto yy2044;
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy2013;
-				goto yy2014;
+				if (yych <= 0xEF) goto yy2040;
+				goto yy2041;
 			} else {
-				if (yych <= 0xF3) goto yy2015;
-				if (yych <= 0xF4) goto yy2016;
+				if (yych <= 0xF3) goto yy2042;
+				if (yych <= 0xF4) goto yy2043;
 			}
 		}
 	}
-yy2004:
+yy2031:
 	{ return (bufsize_t)(p - start); }
-yy2005:
+yy2032:
 	yych = *++p;
-	goto yy2007;
-yy2006:
+	goto yy2034;
+yy2033:
 	++p;
 	yych = *p;
-yy2007:
+yy2034:
 	if (yybm[0+yych] & 128) {
-		goto yy2006;
+		goto yy2033;
 	}
-	goto yy2004;
-yy2008:
+	goto yy2031;
+yy2035:
 	++p;
 	{ return 0; }
-yy2010:
+yy2037:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2011;
-	if (yych <= 0xBF) goto yy2008;
-yy2011:
+	if (yych <= 0x7F) goto yy2038;
+	if (yych <= 0xBF) goto yy2035;
+yy2038:
 	p = marker;
-	goto yy2004;
-yy2012:
+	goto yy2031;
+yy2039:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy2011;
-	if (yych <= 0xBF) goto yy2010;
-	goto yy2011;
-yy2013:
+	if (yych <= 0x9F) goto yy2038;
+	if (yych <= 0xBF) goto yy2037;
+	goto yy2038;
+yy2040:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2011;
-	if (yych <= 0xBF) goto yy2010;
-	goto yy2011;
-yy2014:
+	if (yych <= 0x7F) goto yy2038;
+	if (yych <= 0xBF) goto yy2037;
+	goto yy2038;
+yy2041:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy2011;
-	if (yych <= 0xBF) goto yy2013;
-	goto yy2011;
-yy2015:
+	if (yych <= 0x8F) goto yy2038;
+	if (yych <= 0xBF) goto yy2040;
+	goto yy2038;
+yy2042:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2011;
-	if (yych <= 0xBF) goto yy2013;
-	goto yy2011;
-yy2016:
+	if (yych <= 0x7F) goto yy2038;
+	if (yych <= 0xBF) goto yy2040;
+	goto yy2038;
+yy2043:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2011;
-	if (yych <= 0x8F) goto yy2013;
-	goto yy2011;
-yy2017:
+	if (yych <= 0x7F) goto yy2038;
+	if (yych <= 0x8F) goto yy2040;
+	goto yy2038;
+yy2044:
 	++p;
-	if ((yych = *p) <= 0x7F) goto yy2011;
-	if (yych <= 0x9F) goto yy2010;
-	goto yy2011;
+	if ((yych = *p) <= 0x7F) goto yy2038;
+	if (yych <= 0x9F) goto yy2037;
+	goto yy2038;
 }
 
 }
@@ -18591,141 +18889,141 @@
 	yych = *(marker = p);
 	if (yych <= 0xDF) {
 		if (yych <= '"') {
-			if (yych != '\n') goto yy2022;
+			if (yych != '\n') goto yy2049;
 		} else {
-			if (yych <= '#') goto yy2021;
-			if (yych <= 0x7F) goto yy2022;
-			if (yych >= 0xC2) goto yy2023;
+			if (yych <= '#') goto yy2048;
+			if (yych <= 0x7F) goto yy2049;
+			if (yych >= 0xC2) goto yy2050;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych <= 0xE0) goto yy2025;
-			if (yych == 0xED) goto yy2030;
-			goto yy2026;
+			if (yych <= 0xE0) goto yy2052;
+			if (yych == 0xED) goto yy2057;
+			goto yy2053;
 		} else {
-			if (yych <= 0xF0) goto yy2027;
-			if (yych <= 0xF3) goto yy2028;
-			if (yych <= 0xF4) goto yy2029;
+			if (yych <= 0xF0) goto yy2054;
+			if (yych <= 0xF3) goto yy2055;
+			if (yych <= 0xF4) goto yy2056;
 		}
 	}
-yy2020:
+yy2047:
 	{ return 0; }
-yy2021:
+yy2048:
 	yych = *(marker = ++p);
 	if (yybm[0+yych] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2031;
-		goto yy2020;
+		if (yych == '\n') goto yy2058;
+		goto yy2047;
 	} else {
-		if (yych <= '\r') goto yy2031;
-		if (yych == '#') goto yy2035;
-		goto yy2020;
+		if (yych <= '\r') goto yy2058;
+		if (yych == '#') goto yy2062;
+		goto yy2047;
 	}
-yy2022:
+yy2049:
 	yych = *++p;
-	goto yy2020;
-yy2023:
+	goto yy2047;
+yy2050:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2024;
-	if (yych <= 0xBF) goto yy2022;
-yy2024:
+	if (yych <= 0x7F) goto yy2051;
+	if (yych <= 0xBF) goto yy2049;
+yy2051:
 	p = marker;
-	goto yy2020;
-yy2025:
+	goto yy2047;
+yy2052:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy2024;
-	if (yych <= 0xBF) goto yy2023;
-	goto yy2024;
-yy2026:
+	if (yych <= 0x9F) goto yy2051;
+	if (yych <= 0xBF) goto yy2050;
+	goto yy2051;
+yy2053:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2024;
-	if (yych <= 0xBF) goto yy2023;
-	goto yy2024;
-yy2027:
+	if (yych <= 0x7F) goto yy2051;
+	if (yych <= 0xBF) goto yy2050;
+	goto yy2051;
+yy2054:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy2024;
-	if (yych <= 0xBF) goto yy2026;
-	goto yy2024;
-yy2028:
+	if (yych <= 0x8F) goto yy2051;
+	if (yych <= 0xBF) goto yy2053;
+	goto yy2051;
+yy2055:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2024;
-	if (yych <= 0xBF) goto yy2026;
-	goto yy2024;
-yy2029:
+	if (yych <= 0x7F) goto yy2051;
+	if (yych <= 0xBF) goto yy2053;
+	goto yy2051;
+yy2056:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2024;
-	if (yych <= 0x8F) goto yy2026;
-	goto yy2024;
-yy2030:
+	if (yych <= 0x7F) goto yy2051;
+	if (yych <= 0x8F) goto yy2053;
+	goto yy2051;
+yy2057:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2024;
-	if (yych <= 0x9F) goto yy2023;
-	goto yy2024;
-yy2031:
+	if (yych <= 0x7F) goto yy2051;
+	if (yych <= 0x9F) goto yy2050;
+	goto yy2051;
+yy2058:
 	++p;
-yy2032:
+yy2059:
 	{ return (bufsize_t)(p - start); }
-yy2033:
+yy2060:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
-	goto yy2032;
-yy2035:
+	goto yy2059;
+yy2062:
 	yych = *++p;
 	if (yybm[0+yych] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2031;
-		goto yy2024;
+		if (yych == '\n') goto yy2058;
+		goto yy2051;
 	} else {
-		if (yych <= '\r') goto yy2031;
-		if (yych != '#') goto yy2024;
+		if (yych <= '\r') goto yy2058;
+		if (yych != '#') goto yy2051;
 	}
 	yych = *++p;
 	if (yybm[0+yych] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2031;
-		goto yy2024;
+		if (yych == '\n') goto yy2058;
+		goto yy2051;
 	} else {
-		if (yych <= '\r') goto yy2031;
-		if (yych != '#') goto yy2024;
+		if (yych <= '\r') goto yy2058;
+		if (yych != '#') goto yy2051;
 	}
 	yych = *++p;
 	if (yybm[0+yych] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2031;
-		goto yy2024;
+		if (yych == '\n') goto yy2058;
+		goto yy2051;
 	} else {
-		if (yych <= '\r') goto yy2031;
-		if (yych != '#') goto yy2024;
+		if (yych <= '\r') goto yy2058;
+		if (yych != '#') goto yy2051;
 	}
 	yych = *++p;
 	if (yybm[0+yych] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2031;
-		goto yy2024;
+		if (yych == '\n') goto yy2058;
+		goto yy2051;
 	} else {
-		if (yych <= '\r') goto yy2031;
-		if (yych != '#') goto yy2024;
+		if (yych <= '\r') goto yy2058;
+		if (yych != '#') goto yy2051;
 	}
 	++p;
 	if (yybm[0+(yych = *p)] & 128) {
-		goto yy2033;
+		goto yy2060;
 	}
-	if (yych == '\n') goto yy2031;
-	if (yych == '\r') goto yy2031;
-	goto yy2024;
+	if (yych == '\n') goto yy2058;
+	if (yych == '\r') goto yy2058;
+	goto yy2051;
 }
 
 }
@@ -18775,148 +19073,148 @@
 	yych = *(marker = p);
 	if (yych <= 0xC1) {
 		if (yych <= '-') {
-			if (yych == '\n') goto yy2042;
-			if (yych <= ',') goto yy2045;
-			goto yy2044;
+			if (yych == '\n') goto yy2069;
+			if (yych <= ',') goto yy2072;
+			goto yy2071;
 		} else {
-			if (yych == '=') goto yy2043;
-			if (yych <= 0x7F) goto yy2045;
+			if (yych == '=') goto yy2070;
+			if (yych <= 0x7F) goto yy2072;
 		}
 	} else {
 		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy2046;
-			if (yych <= 0xE0) goto yy2048;
-			if (yych <= 0xEC) goto yy2049;
-			goto yy2053;
+			if (yych <= 0xDF) goto yy2073;
+			if (yych <= 0xE0) goto yy2075;
+			if (yych <= 0xEC) goto yy2076;
+			goto yy2080;
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy2049;
-				goto yy2050;
+				if (yych <= 0xEF) goto yy2076;
+				goto yy2077;
 			} else {
-				if (yych <= 0xF3) goto yy2051;
-				if (yych <= 0xF4) goto yy2052;
+				if (yych <= 0xF3) goto yy2078;
+				if (yych <= 0xF4) goto yy2079;
 			}
 		}
 	}
-yy2042:
+yy2069:
 	{ return 0; }
-yy2043:
+yy2070:
 	yych = *(marker = ++p);
 	if (yybm[0+yych] & 128) {
-		goto yy2064;
+		goto yy2091;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2062;
-		goto yy2042;
+		if (yych == '\n') goto yy2089;
+		goto yy2069;
 	} else {
-		if (yych <= '\r') goto yy2062;
-		if (yych == ' ') goto yy2060;
-		goto yy2042;
+		if (yych <= '\r') goto yy2089;
+		if (yych == ' ') goto yy2087;
+		goto yy2069;
 	}
-yy2044:
+yy2071:
 	yych = *(marker = ++p);
 	if (yybm[0+yych] & 32) {
-		goto yy2054;
+		goto yy2081;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2056;
-		goto yy2042;
+		if (yych == '\n') goto yy2083;
+		goto yy2069;
 	} else {
-		if (yych <= '\r') goto yy2056;
-		if (yych == '-') goto yy2058;
-		goto yy2042;
+		if (yych <= '\r') goto yy2083;
+		if (yych == '-') goto yy2085;
+		goto yy2069;
 	}
-yy2045:
+yy2072:
 	yych = *++p;
-	goto yy2042;
-yy2046:
+	goto yy2069;
+yy2073:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2047;
-	if (yych <= 0xBF) goto yy2045;
-yy2047:
+	if (yych <= 0x7F) goto yy2074;
+	if (yych <= 0xBF) goto yy2072;
+yy2074:
 	p = marker;
-	goto yy2042;
-yy2048:
+	goto yy2069;
+yy2075:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy2047;
-	if (yych <= 0xBF) goto yy2046;
-	goto yy2047;
-yy2049:
+	if (yych <= 0x9F) goto yy2074;
+	if (yych <= 0xBF) goto yy2073;
+	goto yy2074;
+yy2076:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2047;
-	if (yych <= 0xBF) goto yy2046;
-	goto yy2047;
-yy2050:
+	if (yych <= 0x7F) goto yy2074;
+	if (yych <= 0xBF) goto yy2073;
+	goto yy2074;
+yy2077:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy2047;
-	if (yych <= 0xBF) goto yy2049;
-	goto yy2047;
-yy2051:
+	if (yych <= 0x8F) goto yy2074;
+	if (yych <= 0xBF) goto yy2076;
+	goto yy2074;
+yy2078:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2047;
-	if (yych <= 0xBF) goto yy2049;
-	goto yy2047;
-yy2052:
+	if (yych <= 0x7F) goto yy2074;
+	if (yych <= 0xBF) goto yy2076;
+	goto yy2074;
+yy2079:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2047;
-	if (yych <= 0x8F) goto yy2049;
-	goto yy2047;
-yy2053:
+	if (yych <= 0x7F) goto yy2074;
+	if (yych <= 0x8F) goto yy2076;
+	goto yy2074;
+yy2080:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2047;
-	if (yych <= 0x9F) goto yy2046;
-	goto yy2047;
-yy2054:
+	if (yych <= 0x7F) goto yy2074;
+	if (yych <= 0x9F) goto yy2073;
+	goto yy2074;
+yy2081:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy2054;
+		goto yy2081;
 	}
-	if (yych == '\n') goto yy2056;
-	if (yych != '\r') goto yy2047;
-yy2056:
+	if (yych == '\n') goto yy2083;
+	if (yych != '\r') goto yy2074;
+yy2083:
 	++p;
 	{ return 2; }
-yy2058:
+yy2085:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy2054;
+		goto yy2081;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2056;
-		goto yy2047;
+		if (yych == '\n') goto yy2083;
+		goto yy2074;
 	} else {
-		if (yych <= '\r') goto yy2056;
-		if (yych == '-') goto yy2058;
-		goto yy2047;
+		if (yych <= '\r') goto yy2083;
+		if (yych == '-') goto yy2085;
+		goto yy2074;
 	}
-yy2060:
+yy2087:
 	++p;
 	yych = *p;
 	if (yych <= '\f') {
-		if (yych != '\n') goto yy2047;
+		if (yych != '\n') goto yy2074;
 	} else {
-		if (yych <= '\r') goto yy2062;
-		if (yych == ' ') goto yy2060;
-		goto yy2047;
+		if (yych <= '\r') goto yy2089;
+		if (yych == ' ') goto yy2087;
+		goto yy2074;
 	}
-yy2062:
+yy2089:
 	++p;
 	{ return 1; }
-yy2064:
+yy2091:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy2064;
+		goto yy2091;
 	}
 	if (yych <= '\f') {
-		if (yych == '\n') goto yy2062;
-		goto yy2047;
+		if (yych == '\n') goto yy2089;
+		goto yy2074;
 	} else {
-		if (yych <= '\r') goto yy2062;
-		if (yych == ' ') goto yy2060;
-		goto yy2047;
+		if (yych <= '\r') goto yy2089;
+		if (yych == ' ') goto yy2087;
+		goto yy2074;
 	}
 }
 
@@ -18969,207 +19267,207 @@
 	yych = *(marker = p);
 	if (yych <= 0x7F) {
 		if (yych <= '*') {
-			if (yych == '\n') goto yy2068;
-			if (yych <= ')') goto yy2072;
-			goto yy2069;
+			if (yych == '\n') goto yy2095;
+			if (yych <= ')') goto yy2099;
+			goto yy2096;
 		} else {
 			if (yych <= '-') {
-				if (yych <= ',') goto yy2072;
-				goto yy2071;
+				if (yych <= ',') goto yy2099;
+				goto yy2098;
 			} else {
-				if (yych == '_') goto yy2070;
-				goto yy2072;
+				if (yych == '_') goto yy2097;
+				goto yy2099;
 			}
 		}
 	} else {
 		if (yych <= 0xED) {
 			if (yych <= 0xDF) {
-				if (yych >= 0xC2) goto yy2073;
+				if (yych >= 0xC2) goto yy2100;
 			} else {
-				if (yych <= 0xE0) goto yy2075;
-				if (yych <= 0xEC) goto yy2076;
-				goto yy2080;
+				if (yych <= 0xE0) goto yy2102;
+				if (yych <= 0xEC) goto yy2103;
+				goto yy2107;
 			}
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy2076;
-				goto yy2077;
+				if (yych <= 0xEF) goto yy2103;
+				goto yy2104;
 			} else {
-				if (yych <= 0xF3) goto yy2078;
-				if (yych <= 0xF4) goto yy2079;
+				if (yych <= 0xF3) goto yy2105;
+				if (yych <= 0xF4) goto yy2106;
 			}
 		}
 	}
-yy2068:
+yy2095:
 	{ return 0; }
-yy2069:
+yy2096:
 	yych = *(marker = ++p);
-	if (yych == ' ') goto yy2101;
-	if (yych == '*') goto yy2103;
-	goto yy2068;
-yy2070:
+	if (yych == ' ') goto yy2128;
+	if (yych == '*') goto yy2130;
+	goto yy2095;
+yy2097:
 	yych = *(marker = ++p);
-	if (yych == ' ') goto yy2091;
-	if (yych == '_') goto yy2093;
-	goto yy2068;
-yy2071:
+	if (yych == ' ') goto yy2118;
+	if (yych == '_') goto yy2120;
+	goto yy2095;
+yy2098:
 	yych = *(marker = ++p);
 	if (yybm[0+yych] & 8) {
-		goto yy2081;
+		goto yy2108;
 	}
-	if (yych == '-') goto yy2083;
-	goto yy2068;
-yy2072:
+	if (yych == '-') goto yy2110;
+	goto yy2095;
+yy2099:
 	yych = *++p;
-	goto yy2068;
-yy2073:
+	goto yy2095;
+yy2100:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2074;
-	if (yych <= 0xBF) goto yy2072;
-yy2074:
+	if (yych <= 0x7F) goto yy2101;
+	if (yych <= 0xBF) goto yy2099;
+yy2101:
 	p = marker;
-	goto yy2068;
-yy2075:
+	goto yy2095;
+yy2102:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy2074;
-	if (yych <= 0xBF) goto yy2073;
-	goto yy2074;
-yy2076:
+	if (yych <= 0x9F) goto yy2101;
+	if (yych <= 0xBF) goto yy2100;
+	goto yy2101;
+yy2103:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2074;
-	if (yych <= 0xBF) goto yy2073;
-	goto yy2074;
-yy2077:
+	if (yych <= 0x7F) goto yy2101;
+	if (yych <= 0xBF) goto yy2100;
+	goto yy2101;
+yy2104:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy2074;
-	if (yych <= 0xBF) goto yy2076;
-	goto yy2074;
-yy2078:
+	if (yych <= 0x8F) goto yy2101;
+	if (yych <= 0xBF) goto yy2103;
+	goto yy2101;
+yy2105:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2074;
-	if (yych <= 0xBF) goto yy2076;
-	goto yy2074;
-yy2079:
+	if (yych <= 0x7F) goto yy2101;
+	if (yych <= 0xBF) goto yy2103;
+	goto yy2101;
+yy2106:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2074;
-	if (yych <= 0x8F) goto yy2076;
-	goto yy2074;
-yy2080:
+	if (yych <= 0x7F) goto yy2101;
+	if (yych <= 0x8F) goto yy2103;
+	goto yy2101;
+yy2107:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2074;
-	if (yych <= 0x9F) goto yy2073;
-	goto yy2074;
-yy2081:
+	if (yych <= 0x7F) goto yy2101;
+	if (yych <= 0x9F) goto yy2100;
+	goto yy2101;
+yy2108:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 8) {
-		goto yy2081;
+		goto yy2108;
 	}
-	if (yych != '-') goto yy2074;
-yy2083:
+	if (yych != '-') goto yy2101;
+yy2110:
 	++p;
 	yych = *p;
-	if (yych == ' ') goto yy2083;
-	if (yych != '-') goto yy2074;
-yy2085:
+	if (yych == ' ') goto yy2110;
+	if (yych != '-') goto yy2101;
+yy2112:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 16) {
-		goto yy2085;
+		goto yy2112;
 	}
 	if (yych <= '\n') {
-		if (yych <= 0x08) goto yy2074;
-		if (yych >= '\n') goto yy2089;
+		if (yych <= 0x08) goto yy2101;
+		if (yych >= '\n') goto yy2116;
 	} else {
-		if (yych == '\r') goto yy2089;
-		goto yy2074;
+		if (yych == '\r') goto yy2116;
+		goto yy2101;
 	}
-yy2087:
+yy2114:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy2087;
+		goto yy2114;
 	}
-	if (yych <= 0x08) goto yy2074;
-	if (yych <= '\n') goto yy2089;
-	if (yych != '\r') goto yy2074;
-yy2089:
+	if (yych <= 0x08) goto yy2101;
+	if (yych <= '\n') goto yy2116;
+	if (yych != '\r') goto yy2101;
+yy2116:
 	++p;
 	{ return (bufsize_t)(p - start); }
-yy2091:
+yy2118:
 	++p;
 	yych = *p;
-	if (yych == ' ') goto yy2091;
-	if (yych != '_') goto yy2074;
-yy2093:
+	if (yych == ' ') goto yy2118;
+	if (yych != '_') goto yy2101;
+yy2120:
 	++p;
 	yych = *p;
-	if (yych == ' ') goto yy2093;
-	if (yych != '_') goto yy2074;
-yy2095:
+	if (yych == ' ') goto yy2120;
+	if (yych != '_') goto yy2101;
+yy2122:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 64) {
-		goto yy2095;
+		goto yy2122;
 	}
 	if (yych <= '\n') {
-		if (yych <= 0x08) goto yy2074;
-		if (yych >= '\n') goto yy2099;
+		if (yych <= 0x08) goto yy2101;
+		if (yych >= '\n') goto yy2126;
 	} else {
-		if (yych == '\r') goto yy2099;
-		goto yy2074;
+		if (yych == '\r') goto yy2126;
+		goto yy2101;
 	}
-yy2097:
+yy2124:
 	++p;
 	yych = *p;
 	if (yych <= '\f') {
-		if (yych <= 0x08) goto yy2074;
-		if (yych <= '\t') goto yy2097;
-		if (yych >= '\v') goto yy2074;
+		if (yych <= 0x08) goto yy2101;
+		if (yych <= '\t') goto yy2124;
+		if (yych >= '\v') goto yy2101;
 	} else {
-		if (yych <= '\r') goto yy2099;
-		if (yych == ' ') goto yy2097;
-		goto yy2074;
+		if (yych <= '\r') goto yy2126;
+		if (yych == ' ') goto yy2124;
+		goto yy2101;
 	}
-yy2099:
+yy2126:
 	++p;
 	{ return (bufsize_t)(p - start); }
-yy2101:
+yy2128:
 	++p;
 	yych = *p;
-	if (yych == ' ') goto yy2101;
-	if (yych != '*') goto yy2074;
-yy2103:
+	if (yych == ' ') goto yy2128;
+	if (yych != '*') goto yy2101;
+yy2130:
 	++p;
 	yych = *p;
-	if (yych == ' ') goto yy2103;
-	if (yych != '*') goto yy2074;
-yy2105:
+	if (yych == ' ') goto yy2130;
+	if (yych != '*') goto yy2101;
+yy2132:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy2105;
+		goto yy2132;
 	}
 	if (yych <= '\n') {
-		if (yych <= 0x08) goto yy2074;
-		if (yych >= '\n') goto yy2109;
+		if (yych <= 0x08) goto yy2101;
+		if (yych >= '\n') goto yy2136;
 	} else {
-		if (yych == '\r') goto yy2109;
-		goto yy2074;
+		if (yych == '\r') goto yy2136;
+		goto yy2101;
 	}
-yy2107:
+yy2134:
 	++p;
 	yych = *p;
 	if (yych <= '\f') {
-		if (yych <= 0x08) goto yy2074;
-		if (yych <= '\t') goto yy2107;
-		if (yych >= '\v') goto yy2074;
+		if (yych <= 0x08) goto yy2101;
+		if (yych <= '\t') goto yy2134;
+		if (yych >= '\v') goto yy2101;
 	} else {
-		if (yych <= '\r') goto yy2109;
-		if (yych == ' ') goto yy2107;
-		goto yy2074;
+		if (yych <= '\r') goto yy2136;
+		if (yych == ' ') goto yy2134;
+		goto yy2101;
 	}
-yy2109:
+yy2136:
 	++p;
 	{ return (bufsize_t)(p - start); }
 }
@@ -19221,290 +19519,290 @@
 	yych = *(marker = p);
 	if (yych <= 0xC1) {
 		if (yych <= '`') {
-			if (yych == '\n') goto yy2113;
-			if (yych <= '_') goto yy2116;
-			goto yy2114;
+			if (yych == '\n') goto yy2140;
+			if (yych <= '_') goto yy2143;
+			goto yy2141;
 		} else {
-			if (yych == '~') goto yy2115;
-			if (yych <= 0x7F) goto yy2116;
+			if (yych == '~') goto yy2142;
+			if (yych <= 0x7F) goto yy2143;
 		}
 	} else {
 		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy2117;
-			if (yych <= 0xE0) goto yy2119;
-			if (yych <= 0xEC) goto yy2120;
-			goto yy2124;
+			if (yych <= 0xDF) goto yy2144;
+			if (yych <= 0xE0) goto yy2146;
+			if (yych <= 0xEC) goto yy2147;
+			goto yy2151;
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy2120;
-				goto yy2121;
+				if (yych <= 0xEF) goto yy2147;
+				goto yy2148;
 			} else {
-				if (yych <= 0xF3) goto yy2122;
-				if (yych <= 0xF4) goto yy2123;
+				if (yych <= 0xF3) goto yy2149;
+				if (yych <= 0xF4) goto yy2150;
 			}
 		}
 	}
-yy2113:
+yy2140:
 	{ return 0; }
-yy2114:
+yy2141:
 	yych = *(marker = ++p);
-	if (yych == '`') goto yy2139;
-	goto yy2113;
-yy2115:
+	if (yych == '`') goto yy2166;
+	goto yy2140;
+yy2142:
 	yych = *(marker = ++p);
-	if (yych == '~') goto yy2125;
-	goto yy2113;
-yy2116:
+	if (yych == '~') goto yy2152;
+	goto yy2140;
+yy2143:
 	yych = *++p;
-	goto yy2113;
-yy2117:
+	goto yy2140;
+yy2144:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2116;
-yy2118:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2143;
+yy2145:
 	p = marker;
-	goto yy2113;
-yy2119:
+	goto yy2140;
+yy2146:
 	yych = *++p;
-	if (yych <= 0x9F) goto yy2118;
-	if (yych <= 0xBF) goto yy2117;
-	goto yy2118;
-yy2120:
+	if (yych <= 0x9F) goto yy2145;
+	if (yych <= 0xBF) goto yy2144;
+	goto yy2145;
+yy2147:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2117;
-	goto yy2118;
-yy2121:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2144;
+	goto yy2145;
+yy2148:
 	yych = *++p;
-	if (yych <= 0x8F) goto yy2118;
-	if (yych <= 0xBF) goto yy2120;
-	goto yy2118;
-yy2122:
+	if (yych <= 0x8F) goto yy2145;
+	if (yych <= 0xBF) goto yy2147;
+	goto yy2145;
+yy2149:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2120;
-	goto yy2118;
-yy2123:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2147;
+	goto yy2145;
+yy2150:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0x8F) goto yy2120;
-	goto yy2118;
-yy2124:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0x8F) goto yy2147;
+	goto yy2145;
+yy2151:
 	yych = *++p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0x9F) goto yy2117;
-	goto yy2118;
-yy2125:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0x9F) goto yy2144;
+	goto yy2145;
+yy2152:
 	yych = *++p;
 	if (yybm[0+yych] & 16) {
-		goto yy2126;
+		goto yy2153;
 	}
-	goto yy2118;
-yy2126:
+	goto yy2145;
+yy2153:
 	marker = p + 1;
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy2128;
+		goto yy2155;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '~') {
-			if (yych <= 0x00) goto yy2118;
-			if (yych <= '\r') goto yy2137;
-			goto yy2126;
+			if (yych <= 0x00) goto yy2145;
+			if (yych <= '\r') goto yy2164;
+			goto yy2153;
 		} else {
-			if (yych <= 0xC1) goto yy2118;
-			if (yych <= 0xDF) goto yy2130;
-			goto yy2131;
+			if (yych <= 0xC1) goto yy2145;
+			if (yych <= 0xDF) goto yy2157;
+			goto yy2158;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy2136;
-			goto yy2132;
+			if (yych == 0xED) goto yy2163;
+			goto yy2159;
 		} else {
-			if (yych <= 0xF0) goto yy2133;
-			if (yych <= 0xF3) goto yy2134;
-			if (yych <= 0xF4) goto yy2135;
-			goto yy2118;
+			if (yych <= 0xF0) goto yy2160;
+			if (yych <= 0xF3) goto yy2161;
+			if (yych <= 0xF4) goto yy2162;
+			goto yy2145;
 		}
 	}
-yy2128:
+yy2155:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 32) {
-		goto yy2128;
+		goto yy2155;
 	}
 	if (yych <= 0xEC) {
 		if (yych <= 0xC1) {
-			if (yych <= 0x00) goto yy2118;
-			if (yych <= '\r') goto yy2137;
-			goto yy2118;
+			if (yych <= 0x00) goto yy2145;
+			if (yych <= '\r') goto yy2164;
+			goto yy2145;
 		} else {
-			if (yych <= 0xDF) goto yy2130;
-			if (yych <= 0xE0) goto yy2131;
-			goto yy2132;
+			if (yych <= 0xDF) goto yy2157;
+			if (yych <= 0xE0) goto yy2158;
+			goto yy2159;
 		}
 	} else {
 		if (yych <= 0xF0) {
-			if (yych <= 0xED) goto yy2136;
-			if (yych <= 0xEF) goto yy2132;
-			goto yy2133;
+			if (yych <= 0xED) goto yy2163;
+			if (yych <= 0xEF) goto yy2159;
+			goto yy2160;
 		} else {
-			if (yych <= 0xF3) goto yy2134;
-			if (yych <= 0xF4) goto yy2135;
-			goto yy2118;
+			if (yych <= 0xF3) goto yy2161;
+			if (yych <= 0xF4) goto yy2162;
+			goto yy2145;
 		}
 	}
-yy2130:
+yy2157:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2128;
-	goto yy2118;
-yy2131:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2155;
+	goto yy2145;
+yy2158:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy2118;
-	if (yych <= 0xBF) goto yy2130;
-	goto yy2118;
-yy2132:
+	if (yych <= 0x9F) goto yy2145;
+	if (yych <= 0xBF) goto yy2157;
+	goto yy2145;
+yy2159:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2130;
-	goto yy2118;
-yy2133:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2157;
+	goto yy2145;
+yy2160:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy2118;
-	if (yych <= 0xBF) goto yy2132;
-	goto yy2118;
-yy2134:
+	if (yych <= 0x8F) goto yy2145;
+	if (yych <= 0xBF) goto yy2159;
+	goto yy2145;
+yy2161:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2132;
-	goto yy2118;
-yy2135:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2159;
+	goto yy2145;
+yy2162:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0x8F) goto yy2132;
-	goto yy2118;
-yy2136:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0x8F) goto yy2159;
+	goto yy2145;
+yy2163:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0x9F) goto yy2130;
-	goto yy2118;
-yy2137:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0x9F) goto yy2157;
+	goto yy2145;
+yy2164:
 	++p;
 	p = marker;
 	{ return (bufsize_t)(p - start); }
-yy2139:
+yy2166:
 	yych = *++p;
 	if (yybm[0+yych] & 64) {
-		goto yy2140;
+		goto yy2167;
 	}
-	goto yy2118;
-yy2140:
+	goto yy2145;
+yy2167:
 	marker = p + 1;
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy2142;
+		goto yy2169;
 	}
 	if (yych <= 0xE0) {
 		if (yych <= '`') {
-			if (yych <= 0x00) goto yy2118;
-			if (yych <= '\r') goto yy2151;
-			goto yy2140;
+			if (yych <= 0x00) goto yy2145;
+			if (yych <= '\r') goto yy2178;
+			goto yy2167;
 		} else {
-			if (yych <= 0xC1) goto yy2118;
-			if (yych <= 0xDF) goto yy2144;
-			goto yy2145;
+			if (yych <= 0xC1) goto yy2145;
+			if (yych <= 0xDF) goto yy2171;
+			goto yy2172;
 		}
 	} else {
 		if (yych <= 0xEF) {
-			if (yych == 0xED) goto yy2150;
-			goto yy2146;
+			if (yych == 0xED) goto yy2177;
+			goto yy2173;
 		} else {
-			if (yych <= 0xF0) goto yy2147;
-			if (yych <= 0xF3) goto yy2148;
-			if (yych <= 0xF4) goto yy2149;
-			goto yy2118;
+			if (yych <= 0xF0) goto yy2174;
+			if (yych <= 0xF3) goto yy2175;
+			if (yych <= 0xF4) goto yy2176;
+			goto yy2145;
 		}
 	}
-yy2142:
+yy2169:
 	++p;
 	yych = *p;
 	if (yybm[0+yych] & 128) {
-		goto yy2142;
+		goto yy2169;
 	}
 	if (yych <= 0xEC) {
 		if (yych <= 0xC1) {
-			if (yych <= 0x00) goto yy2118;
-			if (yych <= '\r') goto yy2151;
-			goto yy2118;
+			if (yych <= 0x00) goto yy2145;
+			if (yych <= '\r') goto yy2178;
+			goto yy2145;
 		} else {
-			if (yych <= 0xDF) goto yy2144;
-			if (yych <= 0xE0) goto yy2145;
-			goto yy2146;
+			if (yych <= 0xDF) goto yy2171;
+			if (yych <= 0xE0) goto yy2172;
+			goto yy2173;
 		}
 	} else {
 		if (yych <= 0xF0) {
-			if (yych <= 0xED) goto yy2150;
-			if (yych <= 0xEF) goto yy2146;
-			goto yy2147;
+			if (yych <= 0xED) goto yy2177;
+			if (yych <= 0xEF) goto yy2173;
+			goto yy2174;
 		} else {
-			if (yych <= 0xF3) goto yy2148;
-			if (yych <= 0xF4) goto yy2149;
-			goto yy2118;
+			if (yych <= 0xF3) goto yy2175;
+			if (yych <= 0xF4) goto yy2176;
+			goto yy2145;
 		}
 	}
-yy2144:
+yy2171:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2142;
-	goto yy2118;
-yy2145:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2169;
+	goto yy2145;
+yy2172:
 	++p;
 	yych = *p;
-	if (yych <= 0x9F) goto yy2118;
-	if (yych <= 0xBF) goto yy2144;
-	goto yy2118;
-yy2146:
+	if (yych <= 0x9F) goto yy2145;
+	if (yych <= 0xBF) goto yy2171;
+	goto yy2145;
+yy2173:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2144;
-	goto yy2118;
-yy2147:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2171;
+	goto yy2145;
+yy2174:
 	++p;
 	yych = *p;
-	if (yych <= 0x8F) goto yy2118;
-	if (yych <= 0xBF) goto yy2146;
-	goto yy2118;
-yy2148:
+	if (yych <= 0x8F) goto yy2145;
+	if (yych <= 0xBF) goto yy2173;
+	goto yy2145;
+yy2175:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0xBF) goto yy2146;
-	goto yy2118;
-yy2149:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0xBF) goto yy2173;
+	goto yy2145;
+yy2176:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0x8F) goto yy2146;
-	goto yy2118;
-yy2150:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0x8F) goto yy2173;
+	goto yy2145;
+yy2177:
 	++p;
 	yych = *p;
-	if (yych <= 0x7F) goto yy2118;
-	if (yych <= 0x9F) goto yy2144;
-	goto yy2118;
-yy2151:
+	if (yych <= 0x7F) goto yy2145;
+	if (yych <= 0x9F) goto yy2171;
+	goto yy2145;
+yy2178:
 	++p;
 	p = marker;
 	{ return (bufsize_t)(p - start); }
@@ -19557,208 +19855,49 @@
 	yych = *(marker = p);
 	if (yych <= 0xC1) {
 		if (yych <= '`') {
-			if (yych == '\n') goto yy2155;
-			if (yych <= '_') goto yy2158;
-			goto yy2156;
+			if (yych == '\n') goto yy2182;
+			if (yych <= '_') goto yy2185;
+			goto yy2183;
 		} else {
-			if (yych == '~') goto yy2157;
-			if (yych <= 0x7F) goto yy2158;
+			if (yych == '~') goto yy2184;
+			if (yych <= 0x7F) goto yy2185;
 		}
 	} else {
 		if (yych <= 0xED) {
-			if (yych <= 0xDF) goto yy2159;
-			if (yych <= 0xE0) goto yy2161;
-			if (yych <= 0xEC) goto yy2162;
-			goto yy2166;
+			if (yych <= 0xDF) goto yy2186;
+			if (yych <= 0xE0) goto yy2188;
+			if (yych <= 0xEC) goto yy2189;
+			goto yy2193;
 		} else {
 			if (yych <= 0xF0) {
-				if (yych <= 0xEF) goto yy2162;
-				goto yy2163;
+				if (yych <= 0xEF) goto yy2189;
+				goto yy2190;
 			} else {
-				if (yych <= 0xF3) goto yy2164;
-				if (yych <= 0xF4) goto yy2165;
+				if (yych <= 0xF3) goto yy2191;
+				if (yych <= 0xF4) goto yy2192;
 			}
 		}
 	}
-yy2155:
+yy2182:
 	{ return 0; }
-yy2156:
-	yych = *(marker = ++p);
-	if (yych == '`') goto yy2174;
-	goto yy2155;
-yy2157:
-	yych = *(marker = ++p);
-	if (yych == '~') goto yy2167;
-	goto yy2155;
-yy2158:
-	yych = *++p;
-	goto yy2155;
-yy2159:
-	yych = *++p;
-	if (yych <= 0x7F) goto yy2160;
-	if (yych <= 0xBF) goto yy2158;
-yy2160:
-	p = marker;
-	goto yy2155;
-yy2161:
-	yych = *++p;
-	if (yych <= 0x9F) goto yy2160;
-	if (yych <= 0xBF) goto yy2159;
-	goto yy2160;
-yy2162:
-	yych = *++p;
-	if (yych <= 0x7F) goto yy2160;
-	if (yych <= 0xBF) goto yy2159;
-	goto yy2160;
-yy2163:
-	yych = *++p;
-	if (yych <= 0x8F) goto yy2160;
-	if (yych <= 0xBF) goto yy2162;
-	goto yy2160;
-yy2164:
-	yych = *++p;
-	if (yych <= 0x7F) goto yy2160;
-	if (yych <= 0xBF) goto yy2162;
-	goto yy2160;
-yy2165:
-	yych = *++p;
-	if (yych <= 0x7F) goto yy2160;
-	if (yych <= 0x8F) goto yy2162;
-	goto yy2160;
-yy2166:
-	yych = *++p;
-	if (yych <= 0x7F) goto yy2160;
-	if (yych <= 0x9F) goto yy2159;
-	goto yy2160;
-yy2167:
-	yych = *++p;
-	if (yybm[0+yych] & 32) {
-		goto yy2168;
-	}
-	goto yy2160;
-yy2168:
-	marker = p + 1;
-	++p;
-	yych = *p;
-	if (yybm[0+yych] & 64) {
-		goto yy2170;
-	}
-	if (yych <= '\f') {
-		if (yych <= 0x08) goto yy2160;
-		if (yych <= '\n') goto yy2172;
-		goto yy2160;
-	} else {
-		if (yych <= '\r') goto yy2172;
-		if (yych == '~') goto yy2168;
-		goto yy2160;
-	}
-yy2170:
-	++p;
-	yych = *p;
-	if (yybm[0+yych] & 64) {
-		goto yy2170;
-	}
-	if (yych <= 0x08) goto yy2160;
-	if (yych <= '\n') goto yy2172;
-	if (yych != '\r') goto yy2160;
-yy2172:
-	++p;
-	p = marker;
-	{ return (bufsize_t)(p - start); }
-yy2174:
-	yych = *++p;
-	if (yybm[0+yych] & 128) {
-		goto yy2175;
-	}
-	goto yy2160;
-yy2175:
-	marker = p + 1;
-	++p;
-	yych = *p;
-	if (yybm[0+yych] & 128) {
-		goto yy2175;
-	}
-	if (yych <= '\f') {
-		if (yych <= 0x08) goto yy2160;
-		if (yych <= '\t') goto yy2177;
-		if (yych <= '\n') goto yy2179;
-		goto yy2160;
-	} else {
-		if (yych <= '\r') goto yy2179;
-		if (yych != ' ') goto yy2160;
-	}
-yy2177:
-	++p;
-	yych = *p;
-	if (yych <= '\f') {
-		if (yych <= 0x08) goto yy2160;
-		if (yych <= '\t') goto yy2177;
-		if (yych >= '\v') goto yy2160;
-	} else {
-		if (yych <= '\r') goto yy2179;
-		if (yych == ' ') goto yy2177;
-		goto yy2160;
-	}
-yy2179:
-	++p;
-	p = marker;
-	{ return (bufsize_t)(p - start); }
-}
-
-}
-
-// Scans an entity.
-// Returns number of chars matched.
-bufsize_t _scan_entity(const unsigned char *p)
-{
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-{
-	unsigned char yych;
-	yych = *(marker = p);
-	if (yych <= 0xDF) {
-		if (yych <= '%') {
-			if (yych != '\n') goto yy2185;
-		} else {
-			if (yych <= '&') goto yy2184;
-			if (yych <= 0x7F) goto yy2185;
-			if (yych >= 0xC2) goto yy2186;
-		}
-	} else {
-		if (yych <= 0xEF) {
-			if (yych <= 0xE0) goto yy2188;
-			if (yych == 0xED) goto yy2193;
-			goto yy2189;
-		} else {
-			if (yych <= 0xF0) goto yy2190;
-			if (yych <= 0xF3) goto yy2191;
-			if (yych <= 0xF4) goto yy2192;
-		}
-	}
 yy2183:
-	{ return 0; }
+	yych = *(marker = ++p);
+	if (yych == '`') goto yy2201;
+	goto yy2182;
 yy2184:
 	yych = *(marker = ++p);
-	if (yych <= '@') {
-		if (yych == '#') goto yy2194;
-		goto yy2183;
-	} else {
-		if (yych <= 'Z') goto yy2195;
-		if (yych <= '`') goto yy2183;
-		if (yych <= 'z') goto yy2195;
-		goto yy2183;
-	}
+	if (yych == '~') goto yy2194;
+	goto yy2182;
 yy2185:
 	yych = *++p;
-	goto yy2183;
+	goto yy2182;
 yy2186:
 	yych = *++p;
 	if (yych <= 0x7F) goto yy2187;
 	if (yych <= 0xBF) goto yy2185;
 yy2187:
 	p = marker;
-	goto yy2183;
+	goto yy2182;
 yy2188:
 	yych = *++p;
 	if (yych <= 0x9F) goto yy2187;
@@ -19791,642 +19930,801 @@
 	goto yy2187;
 yy2194:
 	yych = *++p;
-	if (yych <= 'W') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2230;
-		goto yy2187;
-	} else {
-		if (yych <= 'X') goto yy2229;
-		if (yych == 'x') goto yy2229;
-		goto yy2187;
+	if (yybm[0+yych] & 32) {
+		goto yy2195;
 	}
+	goto yy2187;
 yy2195:
-	yych = *++p;
-	if (yych <= '@') {
-		if (yych <= '/') goto yy2187;
-		if (yych >= ':') goto yy2187;
-	} else {
-		if (yych <= 'Z') goto yy2196;
-		if (yych <= '`') goto yy2187;
-		if (yych >= '{') goto yy2187;
+	marker = p + 1;
+	++p;
+	yych = *p;
+	if (yybm[0+yych] & 64) {
+		goto yy2197;
 	}
-yy2196:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2199;
-		if (yych <= ':') goto yy2187;
+	if (yych <= '\f') {
+		if (yych <= 0x08) goto yy2187;
+		if (yych <= '\n') goto yy2199;
+		goto yy2187;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-			goto yy2199;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych <= 'z') goto yy2199;
-			goto yy2187;
-		}
+		if (yych <= '\r') goto yy2199;
+		if (yych == '~') goto yy2195;
+		goto yy2187;
 	}
 yy2197:
 	++p;
-	{ return (bufsize_t)(p - start); }
+	yych = *p;
+	if (yybm[0+yych] & 64) {
+		goto yy2197;
+	}
+	if (yych <= 0x08) goto yy2187;
+	if (yych <= '\n') goto yy2199;
+	if (yych != '\r') goto yy2187;
 yy2199:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2200;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
-yy2200:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2201;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	++p;
+	p = marker;
+	{ return (bufsize_t)(p - start); }
 yy2201:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2202;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+	if (yybm[0+yych] & 128) {
+		goto yy2202;
 	}
+	goto yy2187;
 yy2202:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2203;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+	marker = p + 1;
+	++p;
+	yych = *p;
+	if (yybm[0+yych] & 128) {
+		goto yy2202;
 	}
-yy2203:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2204;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+	if (yych <= '\f') {
+		if (yych <= 0x08) goto yy2187;
+		if (yych <= '\t') goto yy2204;
+		if (yych <= '\n') goto yy2206;
+		goto yy2187;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+		if (yych <= '\r') goto yy2206;
+		if (yych != ' ') goto yy2187;
 	}
 yy2204:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2205;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+	++p;
+	yych = *p;
+	if (yych <= '\f') {
+		if (yych <= 0x08) goto yy2187;
+		if (yych <= '\t') goto yy2204;
+		if (yych >= '\v') goto yy2187;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
-yy2205:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2206;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+		if (yych <= '\r') goto yy2206;
+		if (yych == ' ') goto yy2204;
+		goto yy2187;
 	}
 yy2206:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2207;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
+	++p;
+	p = marker;
+	{ return (bufsize_t)(p - start); }
+}
+
+}
+
+// Scans an entity.
+// Returns number of chars matched.
+bufsize_t _scan_entity(const unsigned char *p)
+{
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+{
+	unsigned char yych;
+	yych = *(marker = p);
+	if (yych <= 0xDF) {
+		if (yych <= '%') {
+			if (yych != '\n') goto yy2212;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
+			if (yych <= '&') goto yy2211;
+			if (yych <= 0x7F) goto yy2212;
+			if (yych >= 0xC2) goto yy2213;
 		}
-	}
-yy2207:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2208;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 0xEF) {
+			if (yych <= 0xE0) goto yy2215;
+			if (yych == 0xED) goto yy2220;
+			goto yy2216;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
-yy2208:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2209;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
-yy2209:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2210;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
+			if (yych <= 0xF0) goto yy2217;
+			if (yych <= 0xF3) goto yy2218;
+			if (yych <= 0xF4) goto yy2219;
 		}
 	}
 yy2210:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2211;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	{ return 0; }
 yy2211:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2212;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+	yych = *(marker = ++p);
+	if (yych <= '@') {
+		if (yych == '#') goto yy2221;
+		goto yy2210;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+		if (yych <= 'Z') goto yy2222;
+		if (yych <= '`') goto yy2210;
+		if (yych <= 'z') goto yy2222;
+		goto yy2210;
 	}
 yy2212:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2213;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	goto yy2210;
 yy2213:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2214;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x7F) goto yy2214;
+	if (yych <= 0xBF) goto yy2212;
 yy2214:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2215;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	p = marker;
+	goto yy2210;
 yy2215:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2216;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x9F) goto yy2214;
+	if (yych <= 0xBF) goto yy2213;
+	goto yy2214;
 yy2216:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2217;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x7F) goto yy2214;
+	if (yych <= 0xBF) goto yy2213;
+	goto yy2214;
 yy2217:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2218;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x8F) goto yy2214;
+	if (yych <= 0xBF) goto yy2216;
+	goto yy2214;
 yy2218:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2219;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x7F) goto yy2214;
+	if (yych <= 0xBF) goto yy2216;
+	goto yy2214;
 yy2219:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2220;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x7F) goto yy2214;
+	if (yych <= 0x8F) goto yy2216;
+	goto yy2214;
 yy2220:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2221;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	if (yych <= 0x7F) goto yy2214;
+	if (yych <= 0x9F) goto yy2213;
+	goto yy2214;
 yy2221:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2222;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+	if (yych <= 'W') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2257;
+		goto yy2214;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+		if (yych <= 'X') goto yy2256;
+		if (yych == 'x') goto yy2256;
+		goto yy2214;
 	}
 yy2222:
 	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2223;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+	if (yych <= '@') {
+		if (yych <= '/') goto yy2214;
+		if (yych >= ':') goto yy2214;
 	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
+		if (yych <= 'Z') goto yy2223;
+		if (yych <= '`') goto yy2214;
+		if (yych >= '{') goto yy2214;
 	}
 yy2223:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2224;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2226;
+		if (yych <= ':') goto yy2214;
 	} else {
 		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
+			if (yych <= '@') goto yy2214;
+			goto yy2226;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych <= 'z') goto yy2226;
+			goto yy2214;
 		}
 	}
 yy2224:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2225;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
-yy2225:
-	yych = *++p;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2226;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
-	} else {
-		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
-		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
-		}
-	}
+	++p;
+	{ return (bufsize_t)(p - start); }
 yy2226:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2227;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
 		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2227:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2228;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
 		if (yych <= 'Z') {
-			if (yych <= '@') goto yy2187;
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= '{') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2228:
 	yych = *++p;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2229;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2229:
 	yych = *++p;
-	if (yych <= '@') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2237;
-		goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2230;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') goto yy2237;
-		if (yych <= '`') goto yy2187;
-		if (yych <= 'f') goto yy2237;
-		goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
 	}
 yy2230:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2231;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2231;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2231:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2232;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2232;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2232:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2233;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2233;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2233:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2234;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2234;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2234:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2235;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2235;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2235:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2236;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2236;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2236:
 	yych = *++p;
-	if (yych <= '/') goto yy2187;
-	if (yych <= '9') goto yy2228;
-	if (yych == ';') goto yy2197;
-	goto yy2187;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2237;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
 yy2237:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2238;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= 'g') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2238:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2239;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= 'g') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2239:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2240;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= 'g') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2240:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2241;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= 'g') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2241:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2242;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= 'g') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2242:
 	yych = *++p;
 	if (yych <= ';') {
-		if (yych <= '/') goto yy2187;
+		if (yych <= '/') goto yy2214;
 		if (yych <= '9') goto yy2243;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
-		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych >= 'g') goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
 		}
 	}
 yy2243:
-	++p;
-	if ((yych = *p) <= ';') {
-		if (yych <= '/') goto yy2187;
-		if (yych <= '9') goto yy2228;
-		if (yych <= ':') goto yy2187;
-		goto yy2197;
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2244;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2244:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2245;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2245:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2246;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2246:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2247;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2247:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2248;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2248:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2249;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2249:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2250;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2250:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2251;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2251:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2252;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2252:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2253;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2253:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2254;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2254:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2255;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'Z') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= '{') goto yy2214;
+		}
+	}
+yy2255:
+	yych = *++p;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2256:
+	yych = *++p;
+	if (yych <= '@') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2264;
+		goto yy2214;
+	} else {
+		if (yych <= 'F') goto yy2264;
+		if (yych <= '`') goto yy2214;
+		if (yych <= 'f') goto yy2264;
+		goto yy2214;
+	}
+yy2257:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2258;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2258:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2259;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2259:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2260;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2260:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2261;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2261:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2262;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2262:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2263;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2263:
+	yych = *++p;
+	if (yych <= '/') goto yy2214;
+	if (yych <= '9') goto yy2255;
+	if (yych == ';') goto yy2224;
+	goto yy2214;
+yy2264:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2265;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
 	} else {
 		if (yych <= 'F') {
-			if (yych <= '@') goto yy2187;
-			goto yy2228;
+			if (yych <= '@') goto yy2214;
 		} else {
-			if (yych <= '`') goto yy2187;
-			if (yych <= 'f') goto yy2228;
-			goto yy2187;
+			if (yych <= '`') goto yy2214;
+			if (yych >= 'g') goto yy2214;
+		}
+	}
+yy2265:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2266;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'F') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= 'g') goto yy2214;
+		}
+	}
+yy2266:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2267;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'F') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= 'g') goto yy2214;
+		}
+	}
+yy2267:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2268;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'F') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= 'g') goto yy2214;
+		}
+	}
+yy2268:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2269;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'F') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= 'g') goto yy2214;
+		}
+	}
+yy2269:
+	yych = *++p;
+	if (yych <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2270;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'F') {
+			if (yych <= '@') goto yy2214;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych >= 'g') goto yy2214;
+		}
+	}
+yy2270:
+	++p;
+	if ((yych = *p) <= ';') {
+		if (yych <= '/') goto yy2214;
+		if (yych <= '9') goto yy2255;
+		if (yych <= ':') goto yy2214;
+		goto yy2224;
+	} else {
+		if (yych <= 'F') {
+			if (yych <= '@') goto yy2214;
+			goto yy2255;
+		} else {
+			if (yych <= '`') goto yy2214;
+			if (yych <= 'f') goto yy2255;
+			goto yy2214;
 		}
 	}
 }
diff --git a/src/scanners.re b/src/scanners.re
index d2cdefe..efa6731 100644
--- a/src/scanners.re
+++ b/src/scanners.re
@@ -210,7 +210,7 @@
   const unsigned char *start = p;
 /*!re2c
   [ \r\n]* [<] ([^<>\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 | in_parens_nosp | [\\][^()])* { return (bufsize_t)(p - start); }
   .? { return 0; }
 */
 }
