packages feed

cmark-gfm 0.1.8 → 0.2.6

raw patch · 41 files changed

Files

CMarkGFM.hsc view
@@ -15,11 +15,14 @@   , optSourcePos   , optHardBreaks   , optSmart+  , optSafe   , optUnsafe+  , optFootnotes   , extStrikethrough   , extTable   , extAutolink   , extTagfilter+  , extTaskList   , Node(..)   , NodeType(..)   , PosInfo(..)@@ -250,6 +253,8 @@   | TABLE [TableCellAlignment]   | TABLE_ROW   | TABLE_CELL+  | FOOTNOTE_REFERENCE+  | FOOTNOTE_DEFINITION   deriving (Show, Read, Eq, Ord, Typeable, Data, Generic)  data PosInfo = PosInfo{ startLine   :: Int@@ -277,11 +282,20 @@ optSmart :: CMarkOption optSmart = CMarkOption #const CMARK_OPT_SMART +-- | optSafe is defined here for API compatibility, but it no longer has any+-- effect. "Safe" mode is now the default: set optUnsafe to disable it.+optSafe :: CMarkOption+optSafe = CMarkOption #const CMARK_OPT_SAFE+ -- | Allow rendering of raw HTML and potentially dangerous URLs in links -- and images. optUnsafe :: CMarkOption optUnsafe = CMarkOption #const CMARK_OPT_UNSAFE +-- | Enable footnote syntax support (equivalent of footnotes extension for official cmark-gfm)+optFootnotes :: CMarkOption+optFootnotes = CMarkOption #const CMARK_OPT_FOOTNOTES+ newtype CMarkExtension = CMarkExtension { unCMarkExtension :: String }  extStrikethrough :: CMarkExtension@@ -296,6 +310,9 @@ extTagfilter :: CMarkExtension extTagfilter = CMarkExtension "tagfilter" +extTaskList :: CMarkExtension+extTaskList = CMarkExtension "tasklist"+ ptrToNodeType :: NodePtr -> IO NodeType ptrToNodeType ptr = do   nodeType <- c_cmark_node_get_type ptr@@ -341,6 +358,10 @@          -> return SOFTBREAK        #const CMARK_NODE_LINEBREAK          -> return LINEBREAK+       #const CMARK_NODE_FOOTNOTE_DEFINITION+         -> return FOOTNOTE_DEFINITION+       #const CMARK_NODE_FOOTNOTE_REFERENCE+         -> return FOOTNOTE_REFERENCE        _ -> if nodeType == fromIntegral (Unsafe.unsafePerformIO $ peek c_CMARK_NODE_STRIKETHROUGH) then               return STRIKETHROUGH             else if nodeType == fromIntegral (Unsafe.unsafePerformIO $ peek c_CMARK_NODE_TABLE) then@@ -480,9 +501,13 @@             SOFTBREAK   -> c_cmark_node_new (#const CMARK_NODE_SOFTBREAK)             LINEBREAK   -> c_cmark_node_new (#const CMARK_NODE_LINEBREAK)             STRIKETHROUGH -> c_cmark_node_new (fromIntegral . Unsafe.unsafePerformIO $ peek c_CMARK_NODE_STRIKETHROUGH)-            TABLE _       -> error "constructing table not supported"-            TABLE_ROW     -> error "constructing table row not supported"-            TABLE_CELL    -> error "constructing table cell not supported"+            TABLE _             -> error "constructing table not supported"+            TABLE_ROW           -> error "constructing table row not supported"+            TABLE_CELL          -> error "constructing table cell not supported"+            FOOTNOTE_DEFINITION -> error "constructing footnotes not supported"+            FOOTNOTE_REFERENCE -> error "constructing footnotes not supported"++   mapM_ (\child -> fromNode child >>= c_cmark_node_append_child node) children   return node 
README.md view
@@ -44,22 +44,17 @@   - **Ease of installation:** cmark is portable and has minimal     dependencies. -cmark does not provide Haskell versions of the whole [libcmark-gfm]+cmark-gfm does not provide Haskell versions of the whole [libcmark-gfm] API, which is built around mutable `cmark_node` objects.  Instead, it provides functions for converting CommonMark to HTML (and other formats), and a function for converting CommonMark to a `Node` tree that can be processed further using Haskell. -**A note on security:**  This library does not attempt to sanitize-HTML output.  We recommend using [xss-sanitize] to filter the output,-or enabling `optSafe` to filter out all raw HTML and potentially-dangerous URLs.- **A note on stability:**  There is a good chance the API will change significantly after this early release.  [GitHub Flavored Markdown]: https://github.github.com/gfm/-[libcmark-gfm]: http://github.com/github/cmark+[libcmark-gfm]: http://github.com/github/cmark-gfm [benchmarks]: https://github.com/jgm/cmark/blob/master/benchmarks.md [cheapskate]: https://hackage.haskell.org/package/cheapskate [pandoc]: https://hackage.haskell.org/package/pandoc
bench/full-sample.md view
@@ -499,6 +499,21 @@   - - - - - - - - - deeply-nested one-element item +- [ ] a task list+- [x] a check item in the task list++- [ ] loose task list item++- [x] loose checked task list item++- [ ] nested items in the task list+  - [ ] nested item 1+  - [x] checked nested item 2+      - [ ] must go deeper+      - [x] checked deeper nested item 2+          - [ ] must go even deeper+          - [x] checked even deeper nested item 2+ [1] [2] [3] [1] [2] [3]  [looooooooooooooooooooooooooooooooooooooooooooooooooong label]
cbits/arena.c view
@@ -68,15 +68,16 @@   const size_t align = sizeof(size_t) - 1;   sz = (sz + align) & ~align; +  struct arena_chunk *chunk;   if (sz > A->sz) {-    A->prev = alloc_arena_chunk(sz, A->prev);-    return (uint8_t *) A->prev->ptr + sizeof(size_t);-  }-  if (sz > A->sz - A->used) {-    A = alloc_arena_chunk(A->sz + A->sz / 2, A);+    A->prev = chunk = alloc_arena_chunk(sz, A->prev);+  } else if (sz > A->sz - A->used) {+    A = chunk = alloc_arena_chunk(A->sz + A->sz / 2, A);+  } else {+    chunk = A;   }-  void *ptr = (uint8_t *) A->ptr + A->used;-  A->used += sz;+  void *ptr = (uint8_t *) chunk->ptr + chunk->used;+  chunk->used += sz;   *((size_t *) ptr) = sz - sizeof(size_t);   return (uint8_t *) ptr + sizeof(size_t); }@@ -98,6 +99,6 @@  cmark_mem CMARK_ARENA_MEM_ALLOCATOR = {arena_calloc, arena_realloc, arena_free}; -cmark_mem *cmark_get_arena_mem_allocator() {+cmark_mem *cmark_get_arena_mem_allocator(void) {   return &CMARK_ARENA_MEM_ALLOCATOR; }
cbits/autolink.c view
@@ -2,6 +2,7 @@ #include <parser.h> #include <string.h> #include <utf8.h>+#include <stddef.h>  #if defined(_WIN32) #define strncasecmp _strnicmp@@ -35,44 +36,25 @@ }  static size_t autolink_delim(uint8_t *data, size_t link_end) {-  uint8_t cclose, copen;   size_t i;+  size_t closing = 0;+  size_t opening = 0; -  for (i = 0; i < link_end; ++i)-    if (data[i] == '<') {+  for (i = 0; i < link_end; ++i) {+    const uint8_t c = data[i];+    if (c == '<') {       link_end = i;       break;+    } else if (c == '(') {+      opening++;+    } else if (c == ')') {+      closing++;     }+  }    while (link_end > 0) {-    cclose = data[link_end - 1];--    switch (cclose) {+    switch (data[link_end - 1]) {     case ')':-      copen = '(';-      break;-    default:-      copen = 0;-    }--    if (strchr("?!.,:*_~'\"", data[link_end - 1]) != NULL)-      link_end--;--    else if (data[link_end - 1] == ';') {-      size_t new_end = link_end - 2;--      while (new_end > 0 && cmark_isalpha(data[new_end]))-        new_end--;--      if (new_end < link_end - 2 && data[new_end] == '&')-        link_end = new_end;-      else-        link_end--;-    } else if (copen != 0) {-      size_t closing = 0;-      size_t opening = 0;-      i = 0;-       /* Allow any number of matching brackets (as recognised in copen/cclose)        * at the end of the URL.  If there is a greater number of closing        * brackets than opening ones, we remove one character from the end of@@ -80,34 +62,52 @@        *        * Examples (input text => output linked portion):        *-       *	http://www.pokemon.com/Pikachu_(Electric)-       *		=> http://www.pokemon.com/Pikachu_(Electric)+       *        http://www.pokemon.com/Pikachu_(Electric)+       *                => http://www.pokemon.com/Pikachu_(Electric)        *-       *	http://www.pokemon.com/Pikachu_((Electric)-       *		=> http://www.pokemon.com/Pikachu_((Electric)+       *        http://www.pokemon.com/Pikachu_((Electric)+       *                => http://www.pokemon.com/Pikachu_((Electric)        *-       *	http://www.pokemon.com/Pikachu_(Electric))-       *		=> http://www.pokemon.com/Pikachu_(Electric)+       *        http://www.pokemon.com/Pikachu_(Electric))+       *                => http://www.pokemon.com/Pikachu_(Electric)        *-       *	http://www.pokemon.com/Pikachu_((Electric))-       *		=> http://www.pokemon.com/Pikachu_((Electric))+       *        http://www.pokemon.com/Pikachu_((Electric))+       *                => http://www.pokemon.com/Pikachu_((Electric))        */--      while (i < link_end) {-        if (data[i] == copen)-          opening++;-        else if (data[i] == cclose)-          closing++;--        i++;+      if (closing <= opening) {+        return link_end;       }+      closing--;+      link_end--;+      break;+    case '?':+    case '!':+    case '.':+    case ',':+    case ':':+    case '*':+    case '_':+    case '~':+    case '\'':+    case '"':+      link_end--;+      break;+    case ';': {+      size_t new_end = link_end - 2; -      if (closing <= opening)-        break;+      while (new_end > 0 && cmark_isalpha(data[new_end]))+        new_end--; -      link_end--;-    } else+      if (new_end < link_end - 2 && data[new_end] == '&')+        link_end = new_end;+      else+        link_end--;       break;+    }++    default:+      return link_end;+    }   }    return link_end;@@ -116,7 +116,20 @@ static size_t check_domain(uint8_t *data, size_t size, int allow_short) {   size_t i, np = 0, uscore1 = 0, uscore2 = 0; +  /* The purpose of this code is to reject urls that contain an underscore+   * in one of the last two segments. Examples:+   *+   *   www.xxx.yyy.zzz     autolinked+   *   www.xxx.yyy._zzz    not autolinked+   *   www.xxx._yyy.zzz    not autolinked+   *   www._xxx.yyy.zzz    autolinked+   *+   * The reason is that domain names are allowed to include underscores,+   * but host names are not. See: https://stackoverflow.com/a/2183140+   */   for (i = 1; i < size - 1; i++) {+    if (data[i] == '\\' && i < size - 2)+      i++;     if (data[i] == '_')       uscore2++;     else if (data[i] == '.') {@@ -127,8 +140,17 @@       break;   } -  if (uscore1 > 0 || uscore2 > 0)-    return 0;+  if (uscore1 > 0 || uscore2 > 0) {+    /* If the url is very long then accept it despite the underscores,+     * to avoid quadratic behavior causing a denial of service. See:+     * https://github.com/github/cmark-gfm/security/advisories/GHSA-29g3-96g3-jg6c+     * Reasonable urls are unlikely to have more than 10 segments, so+     * this extra condition shouldn't have any impact on normal usage.+     */+    if (np <= 10) {+      return 0;+    }+  }    if (allow_short) {     /* We don't need a valid domain in the strict sense (with@@ -165,7 +187,7 @@   if (link_end == 0)     return NULL; -  while (link_end < size && !cmark_isspace(data[link_end]))+  while (link_end < size && !cmark_isspace(data[link_end]) && data[link_end] != '<')     link_end++;    link_end = autolink_delim(data, link_end);@@ -225,7 +247,7 @@     return 0;    link_end += domain_len;-  while (link_end < size && !cmark_isspace(data[link_end]))+  while (link_end < size && !cmark_isspace(data[link_end]) && data[link_end] != '<')     link_end++;    link_end = autolink_delim(data, link_end);@@ -245,7 +267,12 @@   cmark_node *text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);   text->as.literal = url;   cmark_node_append_child(node, text);+  +  node->start_line = text->start_line = node->end_line = text->end_line = cmark_inline_parser_get_line(inline_parser); +  node->start_column = text->start_column = max_rewind - rewind;+  node->end_column = text->end_column = cmark_inline_parser_get_column(inline_parser) - 1;+   return node; } @@ -269,111 +296,167 @@   // inline was finished in inlines.c. } -static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, int depth) {-  // postprocess_text can recurse very deeply if there is a very long line of-  // '@' only.  Stop at a reasonable depth to ensure it cannot crash.-  if (depth > 1000) return;+static bool validate_protocol(const char protocol[], uint8_t *data, size_t rewind, size_t max_rewind) {+  size_t len = strlen(protocol); -  size_t link_end;-  uint8_t *data = text->as.literal.data,-    *at;-  size_t size = text->as.literal.len;-  int rewind, max_rewind,-      nb = 0, np = 0, ns = 0;+  if (len > (max_rewind - rewind)) {+    return false;+  } -  if (offset < 0 || (size_t)offset >= size)-    return;+  // Check that the protocol matches+  if (memcmp(data - rewind - len, protocol, len) != 0) {+    return false;+  } -  data += offset;-  size -= offset;+  if (len == (max_rewind - rewind)) {+    return true;+  } -  at = (uint8_t *)memchr(data, '@', size);-  if (!at)-    return;+  char prev_char = data[-((ptrdiff_t)rewind) - len - 1]; -  max_rewind = (int)(at - data);-  data += max_rewind;-  size -= max_rewind;+  // Make sure the character before the protocol is non-alphanumeric+  return !cmark_isalnum(prev_char);+} -  for (rewind = 0; rewind < max_rewind; ++rewind) {-    uint8_t c = data[-rewind - 1];+static void postprocess_text(cmark_parser *parser, cmark_node *text) {+  size_t start = 0;+  size_t offset = 0;+  // `text` is going to be split into a list of nodes containing shorter segments+  // of text, so we detach the memory buffer from text and use `cmark_chunk_dup` to+  // create references to it. Later, `cmark_chunk_to_cstr` is used to convert+  // the references into allocated buffers. The detached buffer is freed before we+  // return.+  cmark_chunk detached_chunk = text->as.literal;+  text->as.literal = cmark_chunk_dup(&detached_chunk, 0, detached_chunk.len); -    if (cmark_isalnum(c))-      continue;+  uint8_t *data = text->as.literal.data;+  size_t remaining = text->as.literal.len; -    if (strchr(".+-_", c) != NULL)-      continue;+  while (true) {+    size_t link_end;+    uint8_t *at;+    bool auto_mailto = true;+    bool is_xmpp = false;+    size_t rewind;+    size_t max_rewind;+    size_t np = 0; -    if (c == '/')-      ns++;+    if (offset >= remaining)+      break; -    break;-  }+    at = (uint8_t *)memchr(data + start + offset, '@', remaining - offset);+    if (!at)+      break; -  if (rewind == 0 || ns > 0) {-    postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);-    return;-  }+    max_rewind = at - (data + start + offset); -  for (link_end = 0; link_end < size; ++link_end) {-    uint8_t c = data[link_end];+found_at:+    for (rewind = 0; rewind < max_rewind; ++rewind) {+      uint8_t c = data[start + offset + max_rewind - rewind - 1]; -    if (cmark_isalnum(c))-      continue;+      if (cmark_isalnum(c))+        continue; -    if (c == '@')-      nb++;-    else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[link_end + 1]))-      np++;-    else if (c != '-' && c != '_')+      if (strchr(".+-_", c) != NULL)+        continue;++      if (strchr(":", c) != NULL) {+        if (validate_protocol("mailto:", data + start + offset + max_rewind, rewind, max_rewind)) {+          auto_mailto = false;+          continue;+        }++        if (validate_protocol("xmpp:", data + start + offset + max_rewind, rewind, max_rewind)) {+          auto_mailto = false;+          is_xmpp = true;+          continue;+        }+      }+       break;-  }+    } -  if (link_end < 2 || nb != 1 || np == 0 ||-      (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) {-    postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);-    return;-  }+    if (rewind == 0) {+      offset += max_rewind + 1;+      continue;+    } -  link_end = autolink_delim(data, link_end);+    assert(data[start + offset + max_rewind] == '@');+    for (link_end = 1; link_end < remaining - offset - max_rewind; ++link_end) {+      uint8_t c = data[start + offset + max_rewind + link_end]; -  if (link_end == 0) {-    postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);-    return;-  }+      if (cmark_isalnum(c))+        continue; -  cmark_chunk_to_cstr(parser->mem, &text->as.literal);+      if (c == '@') {+        // Found another '@', so go back and try again with an updated offset and max_rewind.+        offset += max_rewind + 1;+        max_rewind = link_end - 1;+        goto found_at;+      } else if (c == '.' && link_end < remaining - offset - max_rewind - 1 &&+               cmark_isalnum(data[start + offset + max_rewind + link_end + 1]))+        np++;+      else if (c == '/' && is_xmpp)+        continue;+      else if (c != '-' && c != '_')+        break;+    } -  cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);-  cmark_strbuf buf;-  cmark_strbuf_init(parser->mem, &buf, 10);-  cmark_strbuf_puts(&buf, "mailto:");-  cmark_strbuf_put(&buf, data - rewind, (bufsize_t)(link_end + rewind));-  link_node->as.link.url = cmark_chunk_buf_detach(&buf);+    if (link_end < 2 || np == 0 ||+        (!cmark_isalpha(data[start + offset + max_rewind + link_end - 1]) &&+         data[start + offset + max_rewind + link_end - 1] != '.')) {+      offset += max_rewind + link_end;+      continue;+    } -  cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);-  cmark_chunk email = cmark_chunk_dup(-      &text->as.literal,-      offset + max_rewind - rewind,+    link_end = autolink_delim(data + start + offset + max_rewind, link_end);++    if (link_end == 0) {+      offset += max_rewind + 1;+      continue;+    }++    cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);+    cmark_strbuf buf;+    cmark_strbuf_init(parser->mem, &buf, 10);+    if (auto_mailto)+      cmark_strbuf_puts(&buf, "mailto:");+    cmark_strbuf_put(&buf, data + start + offset + max_rewind - rewind, (bufsize_t)(link_end + rewind));+    link_node->as.link.url = cmark_chunk_buf_detach(&buf);++    cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);+    cmark_chunk email = cmark_chunk_dup(+      &detached_chunk,+      (bufsize_t)(start + offset + max_rewind - rewind),       (bufsize_t)(link_end + rewind));-  cmark_chunk_to_cstr(parser->mem, &email);-  link_text->as.literal = email;-  cmark_node_append_child(link_node, link_text);+    cmark_chunk_to_cstr(parser->mem, &email);+    link_text->as.literal = email;+    cmark_node_append_child(link_node, link_text); -  cmark_node_insert_after(text, link_node);+    cmark_node_insert_after(text, link_node); -  cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);-  post->as.literal = cmark_chunk_dup(&text->as.literal,-    (bufsize_t)(offset + max_rewind + link_end),-    (bufsize_t)(size - link_end));-  cmark_chunk_to_cstr(parser->mem, &post->as.literal);+    cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);+    post->as.literal = cmark_chunk_dup(&detached_chunk,+                                       (bufsize_t)(start + offset + max_rewind + link_end),+                                       (bufsize_t)(remaining - offset - max_rewind - link_end)); -  cmark_node_insert_after(link_node, post);+    cmark_node_insert_after(link_node, post); -  text->as.literal.len = offset + max_rewind - rewind;-  text->as.literal.data[text->as.literal.len] = 0;+    text->as.literal = cmark_chunk_dup(&detached_chunk, (bufsize_t)start, (bufsize_t)(offset + max_rewind - rewind));+    cmark_chunk_to_cstr(parser->mem, &text->as.literal); -  postprocess_text(parser, post, 0, depth + 1);+    text = post;+    start += offset + max_rewind + link_end;+    remaining -= offset + max_rewind + link_end;+    offset = 0;+  }++  // Convert the reference to allocated memory.+  assert(!text->as.literal.alloc);+  cmark_chunk_to_cstr(parser->mem, &text->as.literal);++  // Free the detached buffer.+  cmark_chunk_free(parser->mem, &detached_chunk); }  static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser, cmark_node *root) {@@ -400,7 +483,7 @@     }      if (ev == CMARK_EVENT_ENTER && node->type == CMARK_NODE_TEXT) {-      postprocess_text(parser, node, 0, /*depth*/0);+      postprocess_text(parser, node);     }   } 
cbits/blocks.c view
@@ -8,6 +8,7 @@ #include <stdlib.h> #include <assert.h> #include <stdio.h>+#include <limits.h>  #include "cmark_ctype.h" #include "syntax_extension.h"@@ -26,6 +27,14 @@ #define CODE_INDENT 4 #define TAB_STOP 4 +/**+ * Very deeply nested lists can cause quadratic performance issues.+ * This constant is used in open_new_blocks() to limit the nesting+ * depth. It is unlikely that a non-contrived markdown document will+ * be nested this deeply.+ */+#define MAX_LIST_DEPTH 100+ #ifndef MIN #define MIN(x, y) ((x < y) ? x : y) #endif@@ -36,6 +45,10 @@   return (node->flags & CMARK_NODE__LAST_LINE_BLANK) != 0; } +static bool S_last_line_checked(const cmark_node *node) {+  return (node->flags & CMARK_NODE__LAST_LINE_CHECKED) != 0;+}+ static CMARK_INLINE cmark_node_type S_type(const cmark_node *node) {   return (cmark_node_type)node->type; }@@ -47,6 +60,10 @@     node->flags &= ~CMARK_NODE__LAST_LINE_BLANK; } +static void S_set_last_line_checked(cmark_node *node) {+  node->flags |= CMARK_NODE__LAST_LINE_CHECKED;+}+ static CMARK_INLINE bool S_is_line_end_char(char c) {   return (c == '\n' || c == '\r'); }@@ -121,8 +138,6 @@   parser->root = document;   parser->current = document; -  parser->last_buffer_ended_with_cr = false;-   parser->syntax_extensions = saved_exts;   parser->inline_syntax_extensions = saved_inline_exts;   parser->options = saved_options;@@ -234,26 +249,43 @@  // Check to see if a node ends with a blank line, descending // if needed into lists and sublists.-static bool ends_with_blank_line(cmark_node *node) {-  cmark_node *cur = node;-  while (cur != NULL) {-    if (S_last_line_blank(cur)) {-      return true;-    }-    if (S_type(cur) == CMARK_NODE_LIST || S_type(cur) == CMARK_NODE_ITEM) {-      cur = cur->last_child;-    } else {-      cur = NULL;-    }+static bool S_ends_with_blank_line(cmark_node *node) {+  if (S_last_line_checked(node)) {+    return(S_last_line_blank(node));+  } else if ((S_type(node) == CMARK_NODE_LIST ||+              S_type(node) == CMARK_NODE_ITEM) && node->last_child) {+    S_set_last_line_checked(node);+    return(S_ends_with_blank_line(node->last_child));+  } else {+    S_set_last_line_checked(node);+    return (S_last_line_blank(node));   }-  return false; } +// returns true if content remains after link defs are resolved.+static bool resolve_reference_link_definitions(+		cmark_parser *parser,+                cmark_node *b) {+  bufsize_t pos;+  cmark_strbuf *node_content = &b->content;+  cmark_chunk chunk = {node_content->ptr, node_content->size, 0};+  while (chunk.len && chunk.data[0] == '[' &&+         (pos = cmark_parse_reference_inline(parser->mem, &chunk,+					     parser->refmap))) {++    chunk.data += pos;+    chunk.len -= pos;+  }+  cmark_strbuf_drop(node_content, (node_content->size - chunk.len));+  return !is_blank(&b->content, 0);+}+ static cmark_node *finalize(cmark_parser *parser, cmark_node *b) {   bufsize_t pos;   cmark_node *item;   cmark_node *subitem;   cmark_node *parent;+  bool has_content;    parent = b->parent;   assert(b->flags &@@ -283,15 +315,8 @@   switch (S_type(b)) {   case CMARK_NODE_PARAGRAPH:   {-    cmark_chunk chunk = {node_content->ptr, node_content->size, 0};-    while (chunk.len && chunk.data[0] == '[' &&-           (pos = cmark_parse_reference_inline(parser->mem, &chunk, parser->refmap))) {--      chunk.data += pos;-      chunk.len -= pos;-    }-    cmark_strbuf_drop(node_content, (node_content->size - chunk.len));-    if (is_blank(node_content, 0)) {+    has_content = resolve_reference_link_definitions(parser, b);+    if (!has_content) {       // remove blank node (former reference def)       cmark_node_free(b);     }@@ -343,7 +368,8 @@       // spaces between them:       subitem = item->first_child;       while (subitem) {-        if (ends_with_blank_line(subitem) && (item->next || subitem->next)) {+        if ((item->next || subitem->next) &&+            S_ends_with_blank_line(subitem)) {           b->as.list.tight = false;           break;         }@@ -451,7 +477,6 @@   while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {     cur = cmark_iter_get_node(iter);     if (ev_type == CMARK_EVENT_EXIT && cur->type == CMARK_NODE_FOOTNOTE_DEFINITION) {-      cmark_node_unlink(cur);       cmark_footnote_create(map, cur);     }   }@@ -468,6 +493,15 @@         if (!footnote->ix)           footnote->ix = ++ix; +        // store a reference to this footnote reference's footnote definition+        // this is used by renderers when generating label ids+        cur->parent_footnote_def = footnote->node;++        // keep track of a) count of how many times this footnote def has been+        // referenced, and b) which reference index this footnote ref is at.+        // this is used by renderers when generating links and backreferences.+        cur->footnote.ref_ix = ++footnote->node->footnote.def_count;+         char n[32];         snprintf(n, sizeof(n), "%d", footnote->ix);         cmark_chunk_free(parser->mem, &cur->as.literal);@@ -498,13 +532,16 @@     qsort(map->sorted, map->size, sizeof(cmark_map_entry *), sort_footnote_by_ix);     for (unsigned int i = 0; i < map->size; ++i) {       cmark_footnote *footnote = (cmark_footnote *)map->sorted[i];-      if (!footnote->ix)+      if (!footnote->ix) {+        cmark_node_unlink(footnote->node);         continue;+      }       cmark_node_append_child(parser->root, footnote->node);       footnote->node = NULL;     }   } +  cmark_unlink_footnotes_map(map);   cmark_map_free(map); } @@ -611,6 +648,14 @@   }    finalize(parser, parser->root);++  // Limit total size of extra content created from reference links to+  // document size to avoid superlinear growth. Always allow 100KB.+  if (parser->total_size > 100000)+    parser->refmap->max_ref_size = parser->total_size;+  else+    parser->refmap->max_ref_size = 100000;+   process_inlines(parser, parser->refmap, parser->options);   if (parser->options & CMARK_OPT_FOOTNOTES)     process_footnotes(parser);@@ -670,6 +715,11 @@   const unsigned char *end = buffer + len;   static const uint8_t repl[] = {239, 191, 189}; +  if (len > UINT_MAX - parser->total_size)+    parser->total_size = UINT_MAX;+  else+    parser->total_size += len;+   if (parser->last_buffer_ended_with_cr && *buffer == '\n') {     // skip NL if last buffer ended with CR ; see #117     buffer++;@@ -748,6 +798,40 @@   } } +// Check for thematic break.  On failure, return 0 and update+// thematic_break_kill_pos with the index at which the+// parse fails.  On success, return length of match.+// "...three or more hyphens, asterisks,+// or underscores on a line by themselves. If you wish, you may use+// spaces between the hyphens or asterisks."+static int S_scan_thematic_break(cmark_parser *parser, cmark_chunk *input,+                                 bufsize_t offset) {+  bufsize_t i;+  char c;+  char nextc = '\0';+  int count;+  i = offset;+  c = peek_at(input, i);+  if (!(c == '*' || c == '_' || c == '-')) {+    parser->thematic_break_kill_pos = i;+    return 0;+  }+  count = 1;+  while ((nextc = peek_at(input, ++i))) {+    if (nextc == c) {+      count++;+    } else if (nextc != ' ' && nextc != '\t') {+      break;+    }+  }+  if (count >= 3 && (nextc == '\r' || nextc == '\n')) {+    return (i - offset) + 1;+  } else {+    parser->thematic_break_kill_pos = i;+    return 0;+  }+}+ // Find first nonspace character from current offset, setting // parser->first_nonspace, parser->first_nonspace_column, // parser->indent, and parser->blank. Does not advance parser->offset.@@ -1040,12 +1124,14 @@   bufsize_t matched = 0;   int lev = 0;   bool save_partially_consumed_tab;+  bool has_content;   int save_offset;   int save_column;+  size_t depth = 0;    while (cont_type != CMARK_NODE_CODE_BLOCK &&          cont_type != CMARK_NODE_HTML_BLOCK) {-+    depth++;     S_find_first_nonspace(parser, input);     indented = parser->indent >= CODE_INDENT; @@ -1112,27 +1198,36 @@     } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH &&                (lev =                     scan_setext_heading_line(input, parser->first_nonspace))) {-      (*container)->type = (uint16_t)CMARK_NODE_HEADING;-      (*container)->as.heading.level = lev;-      (*container)->as.heading.setext = true;-      S_advance_offset(parser, input, input->len - 1 - parser->offset, false);+      // finalize paragraph, resolving reference links+      has_content = resolve_reference_link_definitions(parser, *container);++      if (has_content) {++        (*container)->type = (uint16_t)CMARK_NODE_HEADING;+        (*container)->as.heading.level = lev;+        (*container)->as.heading.setext = true;+        S_advance_offset(parser, input, input->len - 1 - parser->offset, false);+      }     } else if (!indented &&                !(cont_type == CMARK_NODE_PARAGRAPH && !all_matched) &&-               (matched = scan_thematic_break(input, parser->first_nonspace))) {+	       (parser->thematic_break_kill_pos <= parser->first_nonspace) &&+               (matched = S_scan_thematic_break(parser, input, parser->first_nonspace))) {       // it's only now that we know the line is not part of a setext heading:       *container = add_child(parser, *container, CMARK_NODE_THEMATIC_BREAK,                              parser->first_nonspace + 1);       S_advance_offset(parser, input, input->len - 1 - parser->offset, false);     } else if (!indented &&-               parser->options & CMARK_OPT_FOOTNOTES &&+               (parser->options & CMARK_OPT_FOOTNOTES) &&+               depth < MAX_LIST_DEPTH &&                (matched = scan_footnote_definition(input, parser->first_nonspace))) {       cmark_chunk c = cmark_chunk_dup(input, parser->first_nonspace + 2, matched - 2);-      cmark_chunk_to_cstr(parser->mem, &c);        while (c.data[c.len - 1] != ']')         --c.len;       --c.len; +      cmark_chunk_to_cstr(parser->mem, &c);+       S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false);       *container = add_child(parser, *container, CMARK_NODE_FOOTNOTE_DEFINITION, parser->first_nonspace + matched + 1);       (*container)->as.literal = c;@@ -1140,6 +1235,7 @@       (*container)->internal_offset = matched;     } else if ((!indented || cont_type == CMARK_NODE_LIST) && 	       parser->indent < 4 &&+               depth < MAX_LIST_DEPTH &&                (matched = parse_list_marker(                     parser->mem, input, parser->first_nonspace,                     (*container)->type == CMARK_NODE_PARAGRAPH, &data))) {@@ -1377,6 +1473,7 @@   parser->column = 0;   parser->first_nonspace = 0;   parser->first_nonspace_column = 0;+  parser->thematic_break_kill_pos = 0;   parser->indent = 0;   parser->blank = false;   parser->partially_consumed_tab = false;
cbits/buffer.c view
@@ -10,7 +10,6 @@ #include "config.h" #include "cmark_ctype.h" #include "buffer.h"-#include "memory.h"  /* Used as default value for cmark_strbuf->ptr so that people can always  * assume ptr is non-NULL and zero terminated even for new cmark_strbufs.
cbits/chunk.h view
@@ -6,7 +6,6 @@ #include <assert.h> #include "cmark-gfm.h" #include "buffer.h"-#include "memory.h" #include "cmark_ctype.h"  #define CMARK_CHUNK_EMPTY                                                      \
cbits/cmark-gfm-core-extensions.h view
@@ -6,23 +6,46 @@ #endif  #include "cmark-gfm-extension_api.h"-#include "cmark-gfm-extensions_export.h"+#include "cmark-gfm_export.h"+#include <stdbool.h> #include <stdint.h> -CMARK_GFM_EXTENSIONS_EXPORT+CMARK_GFM_EXPORT void cmark_gfm_core_extensions_ensure_registered(void); -CMARK_GFM_EXTENSIONS_EXPORT+CMARK_GFM_EXPORT uint16_t cmark_gfm_extensions_get_table_columns(cmark_node *node); -CMARK_GFM_EXTENSIONS_EXPORT+/** Sets the number of columns for the table, returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_table_columns(cmark_node *node, uint16_t n_columns);++CMARK_GFM_EXPORT uint8_t *cmark_gfm_extensions_get_table_alignments(cmark_node *node); -CMARK_GFM_EXTENSIONS_EXPORT+/** Sets the alignments for the table, returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_table_alignments(cmark_node *node, uint16_t ncols, uint8_t *alignments);++CMARK_GFM_EXPORT int cmark_gfm_extensions_get_table_row_is_header(cmark_node *node); -CMARK_GFM_EXTENSIONS_EXPORT-char *cmark_gfm_extensions_get_tasklist_state(cmark_node *node);+/** Sets whether the node is a table header row, returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_table_row_is_header(cmark_node *node, int is_header);++CMARK_GFM_EXPORT+bool cmark_gfm_extensions_get_tasklist_item_checked(cmark_node *node);+/* For backwards compatibility */+#define cmark_gfm_extensions_tasklist_is_checked cmark_gfm_extensions_get_tasklist_item_checked++/** Sets whether a tasklist item is "checked" (completed), returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_tasklist_item_checked(cmark_node *node, bool is_checked);  #ifdef __cplusplus }
cbits/cmark-gfm-extension_api.h view
@@ -114,6 +114,7 @@   struct delimiter *previous;   struct delimiter *next;   cmark_node *inl_text;+  bufsize_t position;   bufsize_t length;   unsigned char delim_char;   int can_open;
− cbits/cmark-gfm-extensions_export.h
@@ -1,42 +0,0 @@--#ifndef CMARK_GFM_EXTENSIONS_EXPORT_H-#define CMARK_GFM_EXTENSIONS_EXPORT_H--#ifdef CMARK_GFM_EXTENSIONS_STATIC_DEFINE-#  define CMARK_GFM_EXTENSIONS_EXPORT-#  define CMARK_GFM_EXTENSIONS_NO_EXPORT-#else-#  ifndef CMARK_GFM_EXTENSIONS_EXPORT-#    ifdef libcmark_gfm_extensions_EXPORTS-        /* We are building this library */-#      define CMARK_GFM_EXTENSIONS_EXPORT __attribute__((visibility("default")))-#    else-        /* We are using this library */-#      define CMARK_GFM_EXTENSIONS_EXPORT __attribute__((visibility("default")))-#    endif-#  endif--#  ifndef CMARK_GFM_EXTENSIONS_NO_EXPORT-#    define CMARK_GFM_EXTENSIONS_NO_EXPORT __attribute__((visibility("hidden")))-#  endif-#endif--#ifndef CMARK_GFM_EXTENSIONS_DEPRECATED-#  define CMARK_GFM_EXTENSIONS_DEPRECATED __attribute__ ((__deprecated__))-#endif--#ifndef CMARK_GFM_EXTENSIONS_DEPRECATED_EXPORT-#  define CMARK_GFM_EXTENSIONS_DEPRECATED_EXPORT CMARK_GFM_EXTENSIONS_EXPORT CMARK_GFM_EXTENSIONS_DEPRECATED-#endif--#ifndef CMARK_GFM_EXTENSIONS_DEPRECATED_NO_EXPORT-#  define CMARK_GFM_EXTENSIONS_DEPRECATED_NO_EXPORT CMARK_GFM_EXTENSIONS_NO_EXPORT CMARK_GFM_EXTENSIONS_DEPRECATED-#endif--#if 0 /* DEFINE_NO_DEPRECATED */-#  ifndef CMARK_GFM_EXTENSIONS_NO_DEPRECATED-#    define CMARK_GFM_EXTENSIONS_NO_DEPRECATED-#  endif-#endif--#endif /* CMARK_GFM_EXTENSIONS_EXPORT_H */
cbits/cmark-gfm.h view
@@ -111,13 +111,13 @@  * realloc and free.  */ CMARK_GFM_EXPORT-cmark_mem *cmark_get_default_mem_allocator();+cmark_mem *cmark_get_default_mem_allocator(void);  /** An arena allocator; uses system calloc to allocate large  * slabs of memory.  Memory in these slabs is not reused at all.  */ CMARK_GFM_EXPORT-cmark_mem *cmark_get_arena_mem_allocator();+cmark_mem *cmark_get_arena_mem_allocator(void);  /** Resets the arena allocator, quickly returning all used memory  * to the operating system.@@ -225,6 +225,11 @@  */ CMARK_GFM_EXPORT cmark_node *cmark_node_last_child(cmark_node *node); +/** Returns the footnote reference of 'node', or NULL if 'node' doesn't have a+ * footnote reference.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_parent_footnote_def(cmark_node *node);+ /**  * ## Iterator  *@@ -408,6 +413,17 @@  */ CMARK_GFM_EXPORT int cmark_node_set_list_tight(cmark_node *node, int tight); +/**+ * Returns item index of 'node'. This is only used when rendering output+ * formats such as commonmark, which need to output the index. It is not+ * required for formats such as html or latex.+ */+CMARK_GFM_EXPORT int cmark_node_get_item_index(cmark_node *node);++/** Sets item index of 'node'. Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_item_index(cmark_node *node, int idx);+ /** Returns the info string from a fenced code block.  */ CMARK_GFM_EXPORT const char *cmark_node_get_fence_info(cmark_node *node);@@ -690,6 +706,20 @@  */ #define CMARK_OPT_HARDBREAKS (1 << 2) +/** `CMARK_OPT_SAFE` is defined here for API compatibility,+    but it no longer has any effect. "Safe" mode is now the default:+    set `CMARK_OPT_UNSAFE` to disable it.+ */+#define CMARK_OPT_SAFE (1 << 3)++/** Render raw HTML and unsafe links (`javascript:`, `vbscript:`,+ * `file:`, and `data:`, except for `image/png`, `image/gif`,+ * `image/jpeg`, or `image/webp` mime types).  By default,+ * raw HTML is replaced by a placeholder HTML comment. Unsafe+ * links are replaced by empty strings.+ */+#define CMARK_OPT_UNSAFE (1 << 17)+ /** Render `softbreak` elements as spaces.  */ #define CMARK_OPT_NOBREAKS (1 << 4)@@ -737,14 +767,6 @@  * a separate attribute.  */ #define CMARK_OPT_FULL_INFO_STRING (1 << 16)--/** Allow raw HTML and unsafe links, `javascript:`, `vbscript:`, `file:`, and- * all `data:` URLs -- by default, only `image/png`, `image/gif`, `image/jpeg`,- * or `image/webp` mime types are allowed. Without this option, raw HTML is- * replaced by a placeholder HTML comment, and unsafe links are replaced by- * empty strings.- */-#define CMARK_OPT_UNSAFE (1 << 17)  /**  * ## Version information
cbits/cmark-gfm_version.h view
@@ -1,7 +1,7 @@ #ifndef CMARK_GFM_VERSION_H #define CMARK_GFM_VERSION_H -#define CMARK_GFM_VERSION ((0 << 24) | (28 << 16) | (3 << 8) | 20)-#define CMARK_GFM_VERSION_STRING "0.28.3.gfm.20"+#define CMARK_GFM_VERSION ((0 << 24) | (29 << 16) | (0 << 8) | 13)+#define CMARK_GFM_VERSION_STRING "0.29.0.gfm.13"  #endif
cbits/cmark.c view
@@ -10,9 +10,9 @@ cmark_node_type CMARK_NODE_LAST_BLOCK = CMARK_NODE_FOOTNOTE_DEFINITION; cmark_node_type CMARK_NODE_LAST_INLINE = CMARK_NODE_FOOTNOTE_REFERENCE; -int cmark_version() { return CMARK_GFM_VERSION; }+int cmark_version(void) { return CMARK_GFM_VERSION; } -const char *cmark_version_string() { return CMARK_GFM_VERSION_STRING; }+const char *cmark_version_string(void) { return CMARK_GFM_VERSION_STRING; }  static void *xcalloc(size_t nmem, size_t size) {   void *ptr = calloc(nmem, size);@@ -38,7 +38,7 @@  cmark_mem CMARK_DEFAULT_MEM_ALLOCATOR = {xcalloc, xrealloc, xfree}; -cmark_mem *cmark_get_default_mem_allocator() {+cmark_mem *cmark_get_default_mem_allocator(void) {   return &CMARK_DEFAULT_MEM_ALLOCATOR; } 
cbits/commonmark.c view
@@ -34,7 +34,8 @@   needs_escaping =       c < 0x80 && escape != LITERAL &&       ((escape == NORMAL &&-        (c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' ||+        (c < 0x20 ||+	 c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' ||          c == '>' || c == '\\' || c == '`' || c == '~' || c == '!' ||          (c == '&' && cmark_isalpha(nextc)) || (c == '!' && nextc == '[') ||          (renderer->begin_content && (c == '-' || c == '+' || c == '=') &&@@ -50,14 +51,18 @@         (c == '`' || c == '<' || c == '>' || c == '"' || c == '\\')));    if (needs_escaping) {-    if (cmark_isspace((char)c)) {+    if (escape == URL && cmark_isspace((char)c)) {       // use percent encoding for spaces-      snprintf(encoded, ENCODED_SIZE, "%%%2x", c);+      snprintf(encoded, ENCODED_SIZE, "%%%2X", c);       cmark_strbuf_puts(renderer->buffer, encoded);       renderer->column += 3;-    } else {+    } else if (cmark_ispunct((char)c)) {       cmark_render_ascii(renderer, "\\");       cmark_render_code_point(renderer, c);+    } else { // render as entity+      snprintf(encoded, ENCODED_SIZE, "&#%d;", c);+      cmark_strbuf_puts(renderer->buffer, encoded);+      renderer->column += (int)strlen(encoded);     }   } else {     cmark_render_code_point(renderer, c);@@ -148,23 +153,8 @@                   link_text->as.literal.len) == 0); } -// if node is a block node, returns node.-// otherwise returns first block-level node that is an ancestor of node.-// if there is no block-level ancestor, returns NULL.-static cmark_node *get_containing_block(cmark_node *node) {-  while (node) {-    if (CMARK_NODE_BLOCK_P(node)) {-      return node;-    } else {-      node = node->parent;-    }-  }-  return NULL;-}- static int S_render_node(cmark_renderer *renderer, cmark_node *node,                          cmark_event_type ev_type, int options) {-  cmark_node *tmp;   int list_number;   cmark_delim_type list_delim;   int numticks;@@ -175,7 +165,7 @@   char fencechar[2] = {'\0', '\0'};   size_t info_len, code_len;   char listmarker[LISTMARKER_SIZE];-  char *emph_delim;+  const char *emph_delim;   bool first_in_list_item;   bufsize_t marker_width;   bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options) &&@@ -184,14 +174,17 @@   // Don't adjust tight list status til we've started the list.   // Otherwise we loose the blank line between a paragraph and   // a following list.-  if (!(node->type == CMARK_NODE_ITEM && node->prev == NULL && entering)) {-    tmp = get_containing_block(node);-    renderer->in_tight_list_item =-        tmp && // tmp might be NULL if there is no containing block-        ((tmp->type == CMARK_NODE_ITEM &&-          cmark_node_get_list_tight(tmp->parent)) ||-         (tmp && tmp->parent && tmp->parent->type == CMARK_NODE_ITEM &&-          cmark_node_get_list_tight(tmp->parent->parent)));+  if (entering) {+    if (node->parent && node->parent->type == CMARK_NODE_ITEM) {+      renderer->in_tight_list_item = node->parent->parent->as.list.tight;+    }+  } else {+    if (node->type == CMARK_NODE_LIST) {+      renderer->in_tight_list_item =+        node->parent &&+        node->parent->type == CMARK_NODE_ITEM &&+        node->parent->parent->as.list.tight;+    }   }    if (node->extension && node->extension->commonmark_render_func) {@@ -229,13 +222,8 @@     if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) {       marker_width = 4;     } else {-      list_number = cmark_node_get_list_start(node->parent);+      list_number = cmark_node_get_item_index(node);       list_delim = cmark_node_get_list_delim(node->parent);-      tmp = node;-      while (tmp->prev) {-        tmp = tmp->prev;-        list_number += 1;-      }       // we ensure a width of at least 4 so       // we get nice transition from single digits       // to double@@ -400,10 +388,12 @@     break;    case CMARK_NODE_STRONG:-    if (entering) {-      LIT("**");-    } else {-      LIT("**");+    if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+      if (entering) {+        LIT("**");+      } else {+        LIT("**");+      }     }     break; @@ -472,7 +462,13 @@   case CMARK_NODE_FOOTNOTE_REFERENCE:     if (entering) {       LIT("[^");-      OUT(cmark_chunk_to_cstr(renderer->mem, &node->as.literal), false, LITERAL);++      char *footnote_label = renderer->mem->calloc(node->parent_footnote_def->as.literal.len + 1, sizeof(char));+      memmove(footnote_label, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);++      OUT(footnote_label, false, LITERAL);+      renderer->mem->free(footnote_label);+       LIT("]");     }     break;@@ -481,9 +477,13 @@     if (entering) {       renderer->footnote_ix += 1;       LIT("[^");-      char n[32];-      snprintf(n, sizeof(n), "%d", renderer->footnote_ix);-      OUT(n, false, LITERAL);++      char *footnote_label = renderer->mem->calloc(node->as.literal.len + 1, sizeof(char));+      memmove(footnote_label, node->as.literal.data, node->as.literal.len);++      OUT(footnote_label, false, LITERAL);+      renderer->mem->free(footnote_label);+       LIT("]:\n");        cmark_strbuf_puts(renderer->prefix, "    ");
cbits/ext_scanners.c view
@@ -1,4 +1,5 @@-/* Generated by re2c 1.1.1 */+/* Generated by re2c 1.3 */+ #include "ext_scanners.h" #include <stdlib.h> @@ -39,265 +40,180 @@         0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,         0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,  0,     };-    yych = *(marker = p);-    if (yych <= '{') {-      if (yych <= 0x1F) {-        if (yych <= '\t') {-          if (yych <= 0x08)-            goto yy3;+    yych = *p;+    if (yych <= ' ') {+      if (yych <= '\n') {+        if (yych == '\t')           goto yy4;-        } else {-          if (yych <= '\n')-            goto yy2;-          if (yych <= '\f')-            goto yy4;-          goto yy3;-        }       } else {-        if (yych <= '-') {-          if (yych <= ' ')-            goto yy4;-          if (yych <= ',')-            goto yy3;-          goto yy5;-        } else {-          if (yych == ':')-            goto yy6;-          goto yy3;-        }+        if (yych <= '\f')+          goto yy4;+        if (yych >= ' ')+          goto yy4;       }     } else {-      if (yych <= 0xEC) {-        if (yych <= 0xC1) {-          if (yych <= '|')-            goto yy4;-          if (yych <= 0x7F)-            goto yy3;-        } else {-          if (yych <= 0xDF)-            goto yy7;-          if (yych <= 0xE0)-            goto yy9;-          goto yy10;-        }+      if (yych <= '9') {+        if (yych == '-')+          goto yy5;       } else {-        if (yych <= 0xF0) {-          if (yych <= 0xED)-            goto yy11;-          if (yych <= 0xEF)-            goto yy10;-          goto yy12;-        } else {-          if (yych <= 0xF3)-            goto yy13;-          if (yych <= 0xF4)-            goto yy14;-        }+        if (yych <= ':')+          goto yy6;+        if (yych == '|')+          goto yy4;       }     }-  yy2 : { return 0; }-  yy3:     ++p;-    goto yy2;+  yy3 : { return 0; }   yy4:     yych = *(marker = ++p);     if (yybm[0 + yych] & 64) {-      goto yy15;+      goto yy7;     }     if (yych == '-')-      goto yy17;+      goto yy10;     if (yych == ':')-      goto yy19;-    goto yy2;+      goto yy12;+    goto yy3;   yy5:     yych = *(marker = ++p);     if (yybm[0 + yych] & 128) {-      goto yy17;+      goto yy10;     }     if (yych <= ' ') {       if (yych <= 0x08)-        goto yy2;+        goto yy3;       if (yych <= '\r')-        goto yy21;+        goto yy14;       if (yych <= 0x1F)-        goto yy2;-      goto yy21;+        goto yy3;+      goto yy14;     } else {       if (yych <= ':') {         if (yych <= '9')-          goto yy2;-        goto yy20;+          goto yy3;+        goto yy13;       } else {         if (yych == '|')-          goto yy21;-        goto yy2;+          goto yy14;+        goto yy3;       }     }   yy6:     yych = *(marker = ++p);     if (yybm[0 + yych] & 128) {-      goto yy17;+      goto yy10;     }-    goto yy2;+    goto yy3;   yy7:     yych = *++p;-    if (yych <= 0x7F)-      goto yy8;-    if (yych <= 0xBF)-      goto yy3;-  yy8:-    p = marker;-    goto yy2;-  yy9:-    yych = *++p;-    if (yych <= 0x9F)-      goto yy8;-    if (yych <= 0xBF)-      goto yy7;-    goto yy8;-  yy10:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy8;-    if (yych <= 0xBF)-      goto yy7;-    goto yy8;-  yy11:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy8;-    if (yych <= 0x9F)-      goto yy7;-    goto yy8;-  yy12:-    yych = *++p;-    if (yych <= 0x8F)-      goto yy8;-    if (yych <= 0xBF)-      goto yy10;-    goto yy8;-  yy13:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy8;-    if (yych <= 0xBF)-      goto yy10;-    goto yy8;-  yy14:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy8;-    if (yych <= 0x8F)-      goto yy10;-    goto yy8;-  yy15:-    yych = *++p;     if (yybm[0 + yych] & 64) {-      goto yy15;+      goto yy7;     }     if (yych == '-')-      goto yy17;+      goto yy10;     if (yych == ':')-      goto yy19;-    goto yy8;-  yy17:+      goto yy12;+  yy9:+    p = marker;+    goto yy3;+  yy10:     yych = *++p;     if (yybm[0 + yych] & 128) {-      goto yy17;+      goto yy10;     }     if (yych <= 0x1F) {       if (yych <= '\n') {         if (yych <= 0x08)-          goto yy8;+          goto yy9;         if (yych <= '\t')-          goto yy20;-        goto yy22;+          goto yy13;+        goto yy15;       } else {         if (yych <= '\f')-          goto yy20;+          goto yy13;         if (yych <= '\r')-          goto yy24;-        goto yy8;+          goto yy17;+        goto yy9;       }     } else {       if (yych <= ':') {         if (yych <= ' ')-          goto yy20;+          goto yy13;         if (yych <= '9')-          goto yy8;-        goto yy20;+          goto yy9;+        goto yy13;       } else {         if (yych == '|')-          goto yy25;-        goto yy8;+          goto yy18;+        goto yy9;       }     }-  yy19:+  yy12:     yych = *++p;     if (yybm[0 + yych] & 128) {-      goto yy17;+      goto yy10;     }-    goto yy8;-  yy20:+    goto yy9;+  yy13:     yych = *++p;-  yy21:+  yy14:     if (yych <= '\r') {       if (yych <= '\t') {         if (yych <= 0x08)-          goto yy8;-        goto yy20;+          goto yy9;+        goto yy13;       } else {         if (yych <= '\n')-          goto yy22;+          goto yy15;         if (yych <= '\f')-          goto yy20;-        goto yy24;+          goto yy13;+        goto yy17;       }     } else {       if (yych <= ' ') {         if (yych <= 0x1F)-          goto yy8;-        goto yy20;+          goto yy9;+        goto yy13;       } else {         if (yych == '|')-          goto yy25;-        goto yy8;+          goto yy18;+        goto yy9;       }     }-  yy22:+  yy15:     ++p;     { return (bufsize_t)(p - start); }-  yy24:+  yy17:     yych = *++p;     if (yych == '\n')-      goto yy22;-    goto yy8;-  yy25:+      goto yy15;+    goto yy9;+  yy18:     yych = *++p;     if (yybm[0 + yych] & 128) {-      goto yy17;+      goto yy10;     }     if (yych <= '\r') {       if (yych <= '\t') {         if (yych <= 0x08)-          goto yy8;-        goto yy25;+          goto yy9;+        goto yy18;       } else {         if (yych <= '\n')-          goto yy22;+          goto yy15;         if (yych <= '\f')-          goto yy25;-        goto yy24;+          goto yy18;+        goto yy17;       }     } else {       if (yych <= ' ') {         if (yych <= 0x1F)-          goto yy8;-        goto yy25;+          goto yy9;+        goto yy18;       } else {         if (yych == ':')-          goto yy19;-        goto yy8;+          goto yy12;+        goto yy9;       }     }   }@@ -309,6 +225,7 @@    {     unsigned char yych;+    unsigned int yyaccept = 0;     static const unsigned char yybm[] = {         64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 0,  64, 64, 0,  64, 64, 64, 64,         64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,@@ -326,53 +243,51 @@         0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,         0,  0,  0,   0,     };-    yych = *(marker = p);+    yych = *p;     if (yybm[0 + yych] & 64) {-      goto yy30;+      goto yy22;     }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= '\n')-          goto yy29;+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {         if (yych <= '\r')-          goto yy32;-        goto yy34;+          goto yy25;+        if (yych <= '\\')+          goto yy27;+        goto yy25;       } else {-        if (yych <= '|')-          goto yy32;-        if (yych <= 0xC1)-          goto yy29;         if (yych <= 0xDF)-          goto yy36;-        goto yy38;+          goto yy29;+        if (yych <= 0xE0)+          goto yy30;+        goto yy31;       }     } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy40;-        goto yy39;+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy32;+        if (yych <= 0xEF)+          goto yy31;+        goto yy33;       } else {-        if (yych <= 0xF0)-          goto yy41;         if (yych <= 0xF3)-          goto yy42;+          goto yy34;         if (yych <= 0xF4)-          goto yy43;+          goto yy35;+        goto yy25;       }     }-  yy29 : { return (bufsize_t)(p - start); }-  yy30:+  yy22:+    yyaccept = 0;     yych = *(marker = ++p);     if (yybm[0 + yych] & 64) {-      goto yy30;+      goto yy22;     }     if (yych <= 0xEC) {       if (yych <= 0xC1) {         if (yych <= '\r')-          goto yy29;+          goto yy24;         if (yych <= '\\')-          goto yy34;-        goto yy29;+          goto yy27;       } else {         if (yych <= 0xDF)           goto yy36;@@ -392,29 +307,31 @@           goto yy42;         if (yych <= 0xF4)           goto yy43;-        goto yy29;       }     }-  yy32:+  yy24 : { return (bufsize_t)(p - start); }+  yy25:     ++p;-    { return 0; }-  yy34:+  yy26 : { return 0; }+  yy27:+    yyaccept = 0;     yych = *(marker = ++p);     if (yybm[0 + yych] & 128) {-      goto yy34;+      goto yy27;     }     if (yych <= 0xDF) {       if (yych <= '\f') {         if (yych == '\n')-          goto yy29;-        goto yy30;+          goto yy24;+        goto yy22;       } else {         if (yych <= '\r')-          goto yy29;+          goto yy24;         if (yych <= 0x7F)-          goto yy30;+          goto yy22;         if (yych <= 0xC1)-          goto yy29;+          goto yy24;+        goto yy36;       }     } else {       if (yych <= 0xEF) {@@ -430,18 +347,77 @@           goto yy42;         if (yych <= 0xF4)           goto yy43;-        goto yy29;+        goto yy24;       }     }+  yy29:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy26;+    if (yych <= 0xBF)+      goto yy22;+    goto yy26;+  yy30:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy26;+    if (yych <= 0xBF)+      goto yy36;+    goto yy26;+  yy31:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy26;+    if (yych <= 0xBF)+      goto yy36;+    goto yy26;+  yy32:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy26;+    if (yych <= 0x9F)+      goto yy36;+    goto yy26;+  yy33:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy26;+    if (yych <= 0xBF)+      goto yy39;+    goto yy26;+  yy34:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy26;+    if (yych <= 0xBF)+      goto yy39;+    goto yy26;+  yy35:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy26;+    if (yych <= 0x8F)+      goto yy39;+    goto yy26;   yy36:     yych = *++p;     if (yych <= 0x7F)       goto yy37;     if (yych <= 0xBF)-      goto yy30;+      goto yy22;   yy37:     p = marker;-    goto yy29;+    if (yyaccept == 0) {+      goto yy24;+    } else {+      goto yy26;+    }   yy38:     yych = *++p;     if (yych <= 0x9F)@@ -488,12 +464,10 @@ }  bufsize_t _scan_table_cell_end(const unsigned char *p) {-  const unsigned char *marker = NULL;   const unsigned char *start = p;    {     unsigned char yych;-    unsigned int yyaccept = 0;     static const unsigned char yybm[] = {         0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0,         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,   128, 0, 0, 0, 0, 0, 0, 0,@@ -509,115 +483,17 @@         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,   0,   0, 0, 0, 0, 0, 0, 0,         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,   0,   0, 0, 0,     };-    yych = *(marker = p);-    if (yych <= 0xDF) {-      if (yych <= '{') {-        if (yych != '\n')-          goto yy47;-      } else {-        if (yych <= '|')-          goto yy48;-        if (yych <= 0x7F)-          goto yy47;-        if (yych >= 0xC2)-          goto yy51;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy53;-        if (yych == 0xED)-          goto yy55;-        goto yy54;-      } else {-        if (yych <= 0xF0)-          goto yy56;-        if (yych <= 0xF3)-          goto yy57;-        if (yych <= 0xF4)-          goto yy58;-      }-    }-  yy46 : { return 0; }-  yy47:+    yych = *p;+    if (yych == '|')+      goto yy48;     ++p;-    goto yy46;+    { return 0; }   yy48:-    yyaccept = 1;-    yych = *(marker = ++p);+    yych = *++p;     if (yybm[0 + yych] & 128) {       goto yy48;     }-    if (yych <= 0x08)-      goto yy50;-    if (yych <= '\n')-      goto yy59;-    if (yych <= '\r')-      goto yy60;-  yy50 : { return (bufsize_t)(p - start); }-  yy51:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy52;-    if (yych <= 0xBF)-      goto yy47;-  yy52:-    p = marker;-    if (yyaccept == 0) {-      goto yy46;-    } else {-      goto yy50;-    }-  yy53:-    yych = *++p;-    if (yych <= 0x9F)-      goto yy52;-    if (yych <= 0xBF)-      goto yy51;-    goto yy52;-  yy54:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy52;-    if (yych <= 0xBF)-      goto yy51;-    goto yy52;-  yy55:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy52;-    if (yych <= 0x9F)-      goto yy51;-    goto yy52;-  yy56:-    yych = *++p;-    if (yych <= 0x8F)-      goto yy52;-    if (yych <= 0xBF)-      goto yy54;-    goto yy52;-  yy57:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy52;-    if (yych <= 0xBF)-      goto yy54;-    goto yy52;-  yy58:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy52;-    if (yych <= 0x8F)-      goto yy54;-    goto yy52;-  yy59:-    ++p;-    goto yy50;-  yy60:-    yych = *++p;-    if (yych == '\n')-      goto yy59;-    goto yy52;+    { return (bufsize_t)(p - start); }   } } @@ -642,138 +518,62 @@         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,   0,   0, 0, 0, 0, 0, 0, 0,         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,   0,   0, 0, 0,     };-    yych = *(marker = p);-    if (yych <= 0xC1) {-      if (yych <= '\f') {-        if (yych <= 0x08)-          goto yy64;-        if (yych == '\n')-          goto yy66;-        goto yy65;-      } else {-        if (yych <= 0x1F) {-          if (yych <= '\r')-            goto yy68;-          goto yy64;-        } else {-          if (yych <= ' ')-            goto yy65;-          if (yych <= 0x7F)-            goto yy64;-        }-      }+    yych = *p;+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy53;+      if (yych == '\n')+        goto yy56;+      goto yy55;     } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy69;-        if (yych <= 0xE0)-          goto yy71;-        if (yych <= 0xEC)-          goto yy72;-        goto yy73;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy72;-          goto yy74;-        } else {-          if (yych <= 0xF3)-            goto yy75;-          if (yych <= 0xF4)-            goto yy76;-        }-      }+      if (yych <= '\r')+        goto yy58;+      if (yych == ' ')+        goto yy55;     }-  yy63 : { return 0; }-  yy64:+  yy53:     ++p;-    goto yy63;-  yy65:+  yy54 : { return 0; }+  yy55:     yych = *(marker = ++p);     if (yych <= 0x08)-      goto yy63;+      goto yy54;     if (yych <= '\r')-      goto yy78;+      goto yy60;     if (yych == ' ')-      goto yy78;-    goto yy63;-  yy66:+      goto yy60;+    goto yy54;+  yy56:     ++p;     { return (bufsize_t)(p - start); }-  yy68:+  yy58:     yych = *++p;     if (yych == '\n')-      goto yy66;-    goto yy63;-  yy69:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy70;-    if (yych <= 0xBF)-      goto yy64;-  yy70:-    p = marker;-    goto yy63;-  yy71:-    yych = *++p;-    if (yych <= 0x9F)-      goto yy70;-    if (yych <= 0xBF)-      goto yy69;-    goto yy70;-  yy72:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy70;-    if (yych <= 0xBF)-      goto yy69;-    goto yy70;-  yy73:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy70;-    if (yych <= 0x9F)-      goto yy69;-    goto yy70;-  yy74:-    yych = *++p;-    if (yych <= 0x8F)-      goto yy70;-    if (yych <= 0xBF)-      goto yy72;-    goto yy70;-  yy75:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy70;-    if (yych <= 0xBF)-      goto yy72;-    goto yy70;-  yy76:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy70;-    if (yych <= 0x8F)-      goto yy72;-    goto yy70;-  yy77:+      goto yy56;+    goto yy54;+  yy59:     yych = *++p;-  yy78:+  yy60:     if (yybm[0 + yych] & 128) {-      goto yy77;+      goto yy59;     }     if (yych <= 0x08)-      goto yy70;+      goto yy61;     if (yych <= '\n')-      goto yy66;-    if (yych >= 0x0E)-      goto yy70;+      goto yy56;+    if (yych <= '\r')+      goto yy62;+  yy61:+    p = marker;+    goto yy54;+  yy62:     yych = *++p;     if (yych == '\n')-      goto yy66;-    goto yy70;+      goto yy56;+    goto yy61;   } }+ bufsize_t _scan_tasklist(const unsigned char *p) {   const unsigned char *marker = NULL;   const unsigned char *start = p;@@ -798,361 +598,281 @@         0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0,  0,  0, 0, 0,         0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0,  0,  0, 0, 0,     };-    yych = *(marker = p);-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= '\t') {-          if (yych <= 0x08)-            goto yy83;-          goto yy84;-        } else {-          if (yych <= '\n')-            goto yy82;-          if (yych <= '\f')-            goto yy84;-          goto yy83;-        }+    yych = *p;+    if (yych <= ' ') {+      if (yych <= '\n') {+        if (yych == '\t')+          goto yy67;       } else {-        if (yych <= '+') {-          if (yych <= ' ')-            goto yy84;-          if (yych <= ')')-            goto yy83;-          goto yy85;-        } else {-          if (yych == '-')-            goto yy85;-          goto yy83;-        }+        if (yych <= '\f')+          goto yy67;+        if (yych >= ' ')+          goto yy67;       }     } else {-      if (yych <= 0xEC) {-        if (yych <= 0xC1) {-          if (yych <= '9')-            goto yy86;-          if (yych <= 0x7F)-            goto yy83;-        } else {-          if (yych <= 0xDF)-            goto yy87;-          if (yych <= 0xE0)-            goto yy89;-          goto yy90;-        }+      if (yych <= ',') {+        if (yych <= ')')+          goto yy65;+        if (yych <= '+')+          goto yy68;       } else {-        if (yych <= 0xF0) {-          if (yych <= 0xED)-            goto yy91;-          if (yych <= 0xEF)-            goto yy90;-          goto yy92;-        } else {-          if (yych <= 0xF3)-            goto yy93;-          if (yych <= 0xF4)-            goto yy94;-        }+        if (yych <= '-')+          goto yy68;+        if (yych <= '/')+          goto yy65;+        if (yych <= '9')+          goto yy69;       }     }-  yy82 : { return 0; }-  yy83:+  yy65:     ++p;-    goto yy82;-  yy84:+  yy66 : { return 0; }+  yy67:     yych = *(marker = ++p);     if (yybm[0 + yych] & 64) {-      goto yy95;+      goto yy70;     }     if (yych <= ',') {       if (yych <= ')')-        goto yy82;+        goto yy66;       if (yych <= '+')-        goto yy97;-      goto yy82;+        goto yy73;+      goto yy66;     } else {       if (yych <= '-')-        goto yy97;+        goto yy73;       if (yych <= '/')-        goto yy82;+        goto yy66;       if (yych <= '9')-        goto yy98;-      goto yy82;+        goto yy74;+      goto yy66;     }-  yy85:+  yy68:     yych = *(marker = ++p);     if (yych <= '\n') {       if (yych == '\t')-        goto yy99;-      goto yy82;+        goto yy75;+      goto yy66;     } else {       if (yych <= '\f')-        goto yy99;+        goto yy75;       if (yych == ' ')-        goto yy99;-      goto yy82;+        goto yy75;+      goto yy66;     }-  yy86:+  yy69:     yych = *(marker = ++p);     if (yych <= 0x1F) {       if (yych <= '\t') {         if (yych <= 0x08)-          goto yy102;-        goto yy97;+          goto yy78;+        goto yy73;       } else {         if (yych <= '\n')-          goto yy82;+          goto yy66;         if (yych <= '\f')-          goto yy97;-        goto yy102;+          goto yy73;+        goto yy78;       }     } else {       if (yych <= 0x7F) {         if (yych <= ' ')-          goto yy97;-        goto yy102;+          goto yy73;+        goto yy78;       } else {         if (yych <= 0xC1)-          goto yy82;+          goto yy66;         if (yych <= 0xF4)-          goto yy102;-        goto yy82;+          goto yy78;+        goto yy66;       }     }-  yy87:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy88;-    if (yych <= 0xBF)-      goto yy83;-  yy88:-    p = marker;-    goto yy82;-  yy89:-    yych = *++p;-    if (yych <= 0x9F)-      goto yy88;-    if (yych <= 0xBF)-      goto yy87;-    goto yy88;-  yy90:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy88;-    if (yych <= 0xBF)-      goto yy87;-    goto yy88;-  yy91:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy88;-    if (yych <= 0x9F)-      goto yy87;-    goto yy88;-  yy92:-    yych = *++p;-    if (yych <= 0x8F)-      goto yy88;-    if (yych <= 0xBF)-      goto yy90;-    goto yy88;-  yy93:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy88;-    if (yych <= 0xBF)-      goto yy90;-    goto yy88;-  yy94:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy88;-    if (yych <= 0x8F)-      goto yy90;-    goto yy88;-  yy95:+  yy70:     yych = *++p;     if (yybm[0 + yych] & 64) {-      goto yy95;+      goto yy70;     }     if (yych <= ',') {       if (yych <= ')')-        goto yy88;-      if (yych >= ',')-        goto yy88;+        goto yy72;+      if (yych <= '+')+        goto yy73;     } else {       if (yych <= '-')-        goto yy97;+        goto yy73;       if (yych <= '/')-        goto yy88;+        goto yy72;       if (yych <= '9')-        goto yy98;-      goto yy88;+        goto yy74;     }-  yy97:+  yy72:+    p = marker;+    goto yy66;+  yy73:     yych = *++p;     if (yych == '[')-      goto yy88;-    goto yy100;-  yy98:+      goto yy72;+    goto yy76;+  yy74:     yych = *++p;     if (yych <= '\n') {       if (yych == '\t')-        goto yy97;-      goto yy102;+        goto yy73;+      goto yy78;     } else {       if (yych <= '\f')-        goto yy97;+        goto yy73;       if (yych == ' ')-        goto yy97;-      goto yy102;+        goto yy73;+      goto yy78;     }-  yy99:+  yy75:     yych = *++p;-  yy100:+  yy76:     if (yych <= '\f') {       if (yych == '\t')-        goto yy99;+        goto yy75;       if (yych <= '\n')-        goto yy88;-      goto yy99;+        goto yy72;+      goto yy75;     } else {       if (yych <= ' ') {         if (yych <= 0x1F)-          goto yy88;-        goto yy99;+          goto yy72;+        goto yy75;       } else {         if (yych == '[')-          goto yy110;-        goto yy88;+          goto yy86;+        goto yy72;       }     }-  yy101:+  yy77:     yych = *++p;-  yy102:+  yy78:     if (yybm[0 + yych] & 128) {-      goto yy101;+      goto yy77;     }     if (yych <= 0xC1) {       if (yych <= '\f') {         if (yych <= 0x08)-          goto yy97;+          goto yy73;         if (yych == '\n')-          goto yy88;-        goto yy99;+          goto yy72;+        goto yy75;       } else {         if (yych == ' ')-          goto yy99;+          goto yy75;         if (yych <= 0x7F)-          goto yy97;-        goto yy88;+          goto yy73;+        goto yy72;       }     } else {       if (yych <= 0xED) {         if (yych <= 0xDF)-          goto yy103;+          goto yy79;         if (yych <= 0xE0)-          goto yy104;+          goto yy80;         if (yych <= 0xEC)-          goto yy105;-        goto yy106;+          goto yy81;+        goto yy82;       } else {         if (yych <= 0xF0) {           if (yych <= 0xEF)-            goto yy105;-          goto yy107;+            goto yy81;+          goto yy83;         } else {           if (yych <= 0xF3)-            goto yy108;+            goto yy84;           if (yych <= 0xF4)-            goto yy109;-          goto yy88;+            goto yy85;+          goto yy72;         }       }     }-  yy103:+  yy79:     yych = *++p;     if (yych <= 0x7F)-      goto yy88;+      goto yy72;     if (yych <= 0xBF)-      goto yy97;-    goto yy88;-  yy104:+      goto yy73;+    goto yy72;+  yy80:     yych = *++p;     if (yych <= 0x9F)-      goto yy88;+      goto yy72;     if (yych <= 0xBF)-      goto yy103;-    goto yy88;-  yy105:+      goto yy79;+    goto yy72;+  yy81:     yych = *++p;     if (yych <= 0x7F)-      goto yy88;+      goto yy72;     if (yych <= 0xBF)-      goto yy103;-    goto yy88;-  yy106:+      goto yy79;+    goto yy72;+  yy82:     yych = *++p;     if (yych <= 0x7F)-      goto yy88;+      goto yy72;     if (yych <= 0x9F)-      goto yy103;-    goto yy88;-  yy107:+      goto yy79;+    goto yy72;+  yy83:     yych = *++p;     if (yych <= 0x8F)-      goto yy88;+      goto yy72;     if (yych <= 0xBF)-      goto yy105;-    goto yy88;-  yy108:+      goto yy81;+    goto yy72;+  yy84:     yych = *++p;     if (yych <= 0x7F)-      goto yy88;+      goto yy72;     if (yych <= 0xBF)-      goto yy105;-    goto yy88;-  yy109:+      goto yy81;+    goto yy72;+  yy85:     yych = *++p;     if (yych <= 0x7F)-      goto yy88;+      goto yy72;     if (yych <= 0x8F)-      goto yy105;-    goto yy88;-  yy110:+      goto yy81;+    goto yy72;+  yy86:     yych = *++p;     if (yych <= 'W') {       if (yych != ' ')-        goto yy88;+        goto yy72;     } else {       if (yych <= 'X')-        goto yy111;+        goto yy87;       if (yych != 'x')-        goto yy88;+        goto yy72;     }-  yy111:+  yy87:     yych = *++p;     if (yych != ']')-      goto yy88;+      goto yy72;     yych = *++p;     if (yych <= '\n') {       if (yych != '\t')-        goto yy88;+        goto yy72;     } else {       if (yych <= '\f')-        goto yy113;+        goto yy89;       if (yych != ' ')-        goto yy88;+        goto yy72;     }-  yy113:+  yy89:     yych = *++p;     if (yych <= '\n') {       if (yych == '\t')-        goto yy113;+        goto yy89;     } else {       if (yych <= '\f')-        goto yy113;+        goto yy89;       if (yych == ' ')-        goto yy113;+        goto yy89;     }     { return (bufsize_t)(p - start); }   }
cbits/footnotes.c view
@@ -38,3 +38,26 @@ cmark_map *cmark_footnote_map_new(cmark_mem *mem) {   return cmark_map_new(mem, footnote_free); }++// Before calling `cmark_map_free` on a map with `cmark_footnotes`, first+// unlink all of the footnote nodes before freeing their memory.+//+// Sometimes, two (unused) footnote nodes can end up referencing each other,+// which as they get freed up by calling `cmark_map_free` -> `footnote_free` ->+// etc, can lead to a use-after-free error.+//+// Better to `unlink` every footnote node first, setting their next, prev, and+// parent pointers to NULL, and only then walk thru & free them up.+void cmark_unlink_footnotes_map(cmark_map *map) {+  cmark_map_entry *ref;+  cmark_map_entry *next;++  ref = map->refs;+  while(ref) {+    next = ref->next;+    if (((cmark_footnote *)ref)->node) {+      cmark_node_unlink(((cmark_footnote *)ref)->node);+    }+    ref = next;+  }+}
cbits/footnotes.h view
@@ -18,6 +18,8 @@ void cmark_footnote_create(cmark_map *map, cmark_node *node); cmark_map *cmark_footnote_map_new(cmark_mem *mem); +void cmark_unlink_footnotes_map(cmark_map *map);+ #ifdef __cplusplus } #endif
cbits/html.c view
@@ -59,17 +59,45 @@     cmark_strbuf_put(html, data, (bufsize_t)len); } -static bool S_put_footnote_backref(cmark_html_renderer *renderer, cmark_strbuf *html) {+static bool S_put_footnote_backref(cmark_html_renderer *renderer, cmark_strbuf *html, cmark_node *node) {   if (renderer->written_footnote_ix >= renderer->footnote_ix)     return false;   renderer->written_footnote_ix = renderer->footnote_ix;+  char m[32];+  snprintf(m, sizeof(m), "%d", renderer->written_footnote_ix); -  cmark_strbuf_puts(html, "<a href=\"#fnref");-  char n[32];-  snprintf(n, sizeof(n), "%d", renderer->footnote_ix);-  cmark_strbuf_puts(html, n);-  cmark_strbuf_puts(html, "\" class=\"footnote-backref\">↩</a>");+  cmark_strbuf_puts(html, "<a href=\"#fnref-");+  houdini_escape_href(html, node->as.literal.data, node->as.literal.len);+  cmark_strbuf_puts(html, "\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"");+  cmark_strbuf_puts(html, m);+  cmark_strbuf_puts(html, "\" aria-label=\"Back to reference ");+  cmark_strbuf_puts(html, m);+  cmark_strbuf_puts(html, "\">↩</a>"); +  if (node->footnote.def_count > 1)+  {+    for(int i = 2; i <= node->footnote.def_count; i++) {+      char n[32];+      snprintf(n, sizeof(n), "%d", i);++      cmark_strbuf_puts(html, " <a href=\"#fnref-");+      houdini_escape_href(html, node->as.literal.data, node->as.literal.len);+      cmark_strbuf_puts(html, "-");+      cmark_strbuf_puts(html, n);+      cmark_strbuf_puts(html, "\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"");+      cmark_strbuf_puts(html, m);+      cmark_strbuf_puts(html, "-");+      cmark_strbuf_puts(html, n);+      cmark_strbuf_puts(html, "\" aria-label=\"Back to reference ");+      cmark_strbuf_puts(html, m);+      cmark_strbuf_puts(html, "-");+      cmark_strbuf_puts(html, n);+      cmark_strbuf_puts(html, "\">↩<sup class=\"footnote-ref\">");+      cmark_strbuf_puts(html, n);+      cmark_strbuf_puts(html, "</sup></a>");+    }+  }+   return true; } @@ -273,7 +301,7 @@       } else {         if (parent->type == CMARK_NODE_FOOTNOTE_DEFINITION && node->next == NULL) {           cmark_strbuf_putc(html, ' ');-          S_put_footnote_backref(renderer, html);+          S_put_footnote_backref(renderer, html, parent);         }         cmark_strbuf_puts(html, "</p>\n");       }@@ -336,10 +364,12 @@     break;    case CMARK_NODE_STRONG:-    if (entering) {-      cmark_strbuf_puts(html, "<strong>");-    } else {-      cmark_strbuf_puts(html, "</strong>");+    if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+      if (entering) {+        cmark_strbuf_puts(html, "<strong>");+      } else {+        cmark_strbuf_puts(html, "</strong>");+      }     }     break; @@ -354,8 +384,8 @@   case CMARK_NODE_LINK:     if (entering) {       cmark_strbuf_puts(html, "<a href=\"");-      if (!(!(options & CMARK_OPT_UNSAFE) &&-            scan_dangerous_url(&node->as.link.url, 0))) {+      if ((options & CMARK_OPT_UNSAFE) ||+            !(scan_dangerous_url(&node->as.link.url, 0))) {         houdini_escape_href(html, node->as.link.url.data,                             node->as.link.url.len);       }@@ -372,8 +402,8 @@   case CMARK_NODE_IMAGE:     if (entering) {       cmark_strbuf_puts(html, "<img src=\"");-      if (!(!(options & CMARK_OPT_UNSAFE) &&-            scan_dangerous_url(&node->as.link.url, 0))) {+      if ((options & CMARK_OPT_UNSAFE) ||+            !(scan_dangerous_url(&node->as.link.url, 0))) {         houdini_escape_href(html, node->as.link.url.data,                             node->as.link.url.len);       }@@ -392,16 +422,15 @@   case CMARK_NODE_FOOTNOTE_DEFINITION:     if (entering) {       if (renderer->footnote_ix == 0) {-        cmark_strbuf_puts(html, "<section class=\"footnotes\">\n<ol>\n");+        cmark_strbuf_puts(html, "<section class=\"footnotes\" data-footnotes>\n<ol>\n");       }       ++renderer->footnote_ix;-      cmark_strbuf_puts(html, "<li id=\"fn");-      char n[32];-      snprintf(n, sizeof(n), "%d", renderer->footnote_ix);-      cmark_strbuf_puts(html, n);++      cmark_strbuf_puts(html, "<li id=\"fn-");+      houdini_escape_href(html, node->as.literal.data, node->as.literal.len);       cmark_strbuf_puts(html, "\">\n");     } else {-      if (S_put_footnote_backref(renderer, html)) {+      if (S_put_footnote_backref(renderer, html, node)) {         cmark_strbuf_putc(html, '\n');       }       cmark_strbuf_puts(html, "</li>\n");@@ -410,12 +439,20 @@    case CMARK_NODE_FOOTNOTE_REFERENCE:     if (entering) {-      cmark_strbuf_puts(html, "<sup class=\"footnote-ref\"><a href=\"#fn");-      cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);-      cmark_strbuf_puts(html, "\" id=\"fnref");-      cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);-      cmark_strbuf_puts(html, "\">");-      cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);+      cmark_strbuf_puts(html, "<sup class=\"footnote-ref\"><a href=\"#fn-");+      houdini_escape_href(html, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);+      cmark_strbuf_puts(html, "\" id=\"fnref-");+      houdini_escape_href(html, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);++      if (node->footnote.ref_ix > 1) {+        char n[32];+        snprintf(n, sizeof(n), "%d", node->footnote.ref_ix);+        cmark_strbuf_puts(html, "-");+        cmark_strbuf_puts(html, n);+      }++      cmark_strbuf_puts(html, "\" data-footnote-ref>");+      houdini_escape_href(html, node->as.literal.data, node->as.literal.len);       cmark_strbuf_puts(html, "</a></sup>");     }     break;
cbits/inlines.c view
@@ -35,17 +35,24 @@  typedef struct bracket {   struct bracket *previous;-  struct delimiter *previous_delimiter;   cmark_node *inl_text;   bufsize_t position;   bool image;   bool active;   bool bracket_after;+  bool in_bracket_image0;+  bool in_bracket_image1; } bracket; +#define FLAG_SKIP_HTML_CDATA        (1u << 0)+#define FLAG_SKIP_HTML_DECLARATION  (1u << 1)+#define FLAG_SKIP_HTML_PI           (1u << 2)+#define FLAG_SKIP_HTML_COMMENT      (1u << 3)+ typedef struct subject{   cmark_mem *mem;   cmark_chunk input;+  unsigned flags;   int line;   bufsize_t pos;   int block_offset;@@ -55,6 +62,7 @@   bracket *last_bracket;   bufsize_t backticks[MAXBACKTICKS + 1];   bool scanned_for_backticks;+  bool no_link_openers; } subject;  // Extensions may populate this.@@ -109,6 +117,24 @@   } } +// Like cmark_node_append_child but without costly sanity checks.+// Assumes that child was newly created.+static void append_child(cmark_node *node, cmark_node *child) {+  cmark_node *old_last_child = node->last_child;++  child->next = NULL;+  child->prev = old_last_child;+  child->parent = node;+  node->last_child = child;++  if (old_last_child) {+    old_last_child->next = child;+  } else {+    // Also set first_child if node previously had no children.+    node->first_child = child;+  }+}+ // Duplicate a chunk by creating a copy of the buffer not by reusing the // buffer like cmark_chunk_dup does. static cmark_chunk chunk_clone(cmark_mem *mem, cmark_chunk *src) {@@ -152,7 +178,7 @@   link->start_line = link->end_line = subj->line;   link->start_column = start_column + 1;   link->end_column = end_column + 1;-  cmark_node_append_child(link, make_str_with_entities(subj, start_column + 1, end_column - 1, &url));+  append_child(link, make_str_with_entities(subj, start_column + 1, end_column - 1, &url));   return link; } @@ -161,6 +187,7 @@   int i;   e->mem = mem;   e->input = *chunk;+  e->flags = 0;   e->line = line_number;   e->pos = 0;   e->block_offset = block_offset;@@ -172,6 +199,7 @@     e->backticks[i] = 0;   }   e->scanned_for_backticks = false;+  e->no_link_openers = true; }  static CMARK_INLINE int isbacktick(int c) { return (c == '`'); }@@ -322,9 +350,11 @@ }  // Destructively modify string, converting newlines to-// spaces, then removing a single leading + trailing space.+// spaces, then removing a single leading + trailing space,+// unless the code span consists entirely of space characters. static void S_normalize_code(cmark_strbuf *s) {   bufsize_t r, w;+  bool contains_nonspace = false;    for (r = 0, w = 0; r < s->size; ++r) {     switch (s->ptr[r]) {@@ -339,10 +369,14 @@     default:       s->ptr[w++] = s->ptr[r];     }+    if (s->ptr[r] != ' ') {+      contains_nonspace = true;+    }   }    // begins and ends with space?-  if (s->ptr[0] == ' ' && s->ptr[w - 1] == ' ') {+  if (contains_nonspace &&+      s->ptr[0] == ' ' && s->ptr[w - 1] == ' ') {     cmark_strbuf_drop(s, 1);     cmark_strbuf_truncate(s, w - 2);   } else {@@ -497,6 +531,7 @@   delim->can_open = can_open;   delim->can_close = can_close;   delim->inl_text = inl_text;+  delim->position = subj->pos;   delim->length = inl_text->as.literal.len;   delim->previous = subj->last_delim;   delim->next = NULL;@@ -510,15 +545,24 @@   bracket *b = (bracket *)subj->mem->calloc(1, sizeof(bracket));   if (subj->last_bracket != NULL) {     subj->last_bracket->bracket_after = true;+    b->in_bracket_image0 = subj->last_bracket->in_bracket_image0;+    b->in_bracket_image1 = subj->last_bracket->in_bracket_image1;   }   b->image = image;   b->active = true;   b->inl_text = inl_text;   b->previous = subj->last_bracket;-  b->previous_delimiter = subj->last_delim;   b->position = subj->pos;   b->bracket_after = false;+  if (image) {+    b->in_bracket_image1 = true;+  } else {+    b->in_bracket_image0 = true;+  }   subj->last_bracket = b;+  if (!image) {+    subj->no_link_openers = false;+  } }  // Assumes the subject has a c at the current position.@@ -625,13 +669,13 @@   return NULL; } -static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *stack_bottom) {-  delimiter *closer = subj->last_delim;+static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stack_bottom) {+  delimiter *candidate;+  delimiter *closer = NULL;   delimiter *opener;   delimiter *old_closer;   bool opener_found;-  bool odd_match;-  delimiter *openers_bottom[3][128];+  bufsize_t openers_bottom[3][128];   int i;    // initialize openers_bottom:@@ -644,8 +688,10 @@   }    // move back to first relevant delim.-  while (closer != NULL && closer->previous != stack_bottom) {-    closer = closer->previous;+  candidate = subj->last_delim;+  while (candidate != NULL && candidate->position >= stack_bottom) {+    closer = candidate;+    candidate = candidate->previous;   }    // now move forward, looking for closers, and handling each@@ -655,15 +701,14 @@       // Now look backwards for first matching opener:       opener = closer->previous;       opener_found = false;-      odd_match = false;-      while (opener != NULL && opener != stack_bottom &&-             opener != openers_bottom[closer->length % 3][closer->delim_char]) {+      while (opener != NULL && opener->position >= stack_bottom &&+             opener->position >= openers_bottom[closer->length % 3][closer->delim_char]) {         if (opener->can_open && opener->delim_char == closer->delim_char) {           // interior closer of size 2 can't match opener of size 1           // or of size 1 can't match 2-          odd_match = (closer->can_open || opener->can_close) &&-                      ((opener->length + closer->length) % 3 == 0);-          if (!odd_match) {+          if (!(closer->can_open || opener->can_close) ||+	      closer->length % 3 == 0 ||+              (opener->length + closer->length) % 3 != 0) {             opener_found = true;             break;           }@@ -683,27 +728,29 @@         } else {           closer = closer->next;         }-      } else if (closer->delim_char == '\'') {+      } else if (closer->delim_char == '\'' || closer->delim_char == '"') {         cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);-        closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);-        if (opener_found) {-          cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);-          opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);+        if (closer->delim_char == '\'') {+          closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);+        } else {+          closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE);         }         closer = closer->next;-      } else if (closer->delim_char == '"') {-        cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);-        closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE);         if (opener_found) {           cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);-          opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);+          if (old_closer->delim_char == '\'') {+            opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);+          } else {+            opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);+          }+          remove_delimiter(subj, opener);+          remove_delimiter(subj, old_closer);         }-        closer = closer->next;       }       if (!opener_found) {         // set lower bound for future searches for openers         openers_bottom[old_closer->length % 3][old_closer->delim_char] =-		old_closer->previous;+		old_closer->position;         if (!old_closer->can_open) {           // we can remove a closer that can't be an           // opener, once we've seen there's no@@ -716,7 +763,8 @@     }   }   // free all delimiters in list until stack_bottom:-  while (subj->last_delim != NULL && subj->last_delim != stack_bottom) {+  while (subj->last_delim != NULL &&+         subj->last_delim->position >= stack_bottom) {     remove_delimiter(subj, subj->last_delim);   } }@@ -755,7 +803,8 @@   tmp = opener_inl->next;   while (tmp && tmp != closer_inl) {     tmpnext = tmp->next;-    cmark_node_append_child(emph, tmp);+    cmark_node_unlink(tmp);+    append_child(emph, tmp);     tmp = tmpnext;   }   cmark_node_insert_after(opener_inl, emph);@@ -886,7 +935,63 @@   }    // finally, try to match an html tag-  matchlen = scan_html_tag(&subj->input, subj->pos);+  if (subj->pos + 2 <= subj->input.len) {+    int c = subj->input.data[subj->pos];+    if (c == '!' && (subj->flags & FLAG_SKIP_HTML_COMMENT) == 0) {+      c = subj->input.data[subj->pos+1];+      if (c == '-' && subj->input.data[subj->pos+2] == '-') {+        if (subj->input.data[subj->pos+3] == '>') {+          matchlen = 4;+        } else if (subj->input.data[subj->pos+3] == '-' &&+                   subj->input.data[subj->pos+4] == '>') {+          matchlen = 5;+        } else {+          matchlen = scan_html_comment(&subj->input, subj->pos + 1);+          if (matchlen > 0) {+            matchlen += 1; // prefix "<"+          } else { // no match through end of input: set a flag so+                   // we don't reparse looking for -->:+            subj->flags |= FLAG_SKIP_HTML_COMMENT;+          }+        }+      } else if (c == '[') {+        if ((subj->flags & FLAG_SKIP_HTML_CDATA) == 0) {+          matchlen = scan_html_cdata(&subj->input, subj->pos + 2);+          if (matchlen > 0) {+            // The regex doesn't require the final "]]>". But if we're not at+            // the end of input, it must come after the match. Otherwise,+            // disable subsequent scans to avoid quadratic behavior.+            matchlen += 5; // prefix "![", suffix "]]>"+            if (subj->pos + matchlen > subj->input.len) {+              subj->flags |= FLAG_SKIP_HTML_CDATA;+              matchlen = 0;+            }+          }+        }+      } else if ((subj->flags & FLAG_SKIP_HTML_DECLARATION) == 0) {+        matchlen = scan_html_declaration(&subj->input, subj->pos + 1);+        if (matchlen > 0) {+          matchlen += 2; // prefix "!", suffix ">"+          if (subj->pos + matchlen > subj->input.len) {+            subj->flags |= FLAG_SKIP_HTML_DECLARATION;+            matchlen = 0;+          }+        }+      }+    } else if (c == '?') {+      if ((subj->flags & FLAG_SKIP_HTML_PI) == 0) {+        // Note that we allow an empty match.+        matchlen = scan_html_pi(&subj->input, subj->pos + 1);+        matchlen += 3; // prefix "?", suffix "?>"+        if (subj->pos + matchlen > subj->input.len) {+          subj->flags |= FLAG_SKIP_HTML_PI;+          matchlen = 0;+        }+      }+    } else {+      matchlen = scan_html_tag(&subj->input, subj->pos);+    }+  }   if (matchlen > 0) {     contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1);     subj->pos += matchlen;@@ -969,17 +1074,21 @@     else if (input->data[i] == '(') {       ++nb_p;       ++i;-        if (nb_p > 32)-          return -1;+      if (nb_p > 32)+        return -1;     } else if (input->data[i] == ')') {       if (nb_p == 0)         break;       --nb_p;       ++i;-    } else if (cmark_isspace(input->data[i]))+    } else if (cmark_isspace(input->data[i])) {+      if (i == offset) {+        return -1;+      }       break;-    else+    } else {       ++i;+    }   }    if (i >= input->len)@@ -1005,7 +1114,7 @@       } else if (input->data[i] == '\\')         i += 2;       else if (input->data[i] == '\n' || input->data[i] == '<')-        return manual_scan_link_url_2(input, offset, output);+        return -1;       else         ++i;     }@@ -1048,16 +1157,16 @@     return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]"));   } -  if (!opener->active) {+  // If we got here, we matched a potential link/image text.+  // Now we check to see if it's a link/image.+  is_image = opener->image;++  if (!is_image && subj->no_link_openers) {     // take delimiter off stack     pop_bracket(subj);     return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]"));   } -  // If we got here, we matched a potential link/image text.-  // Now we check to see if it's a link/image.-  is_image = opener->image;-   after_link_text_pos = subj->pos;    // First, look for an inline link.@@ -1129,19 +1238,77 @@   // What if we're a footnote link?   if (parser->options & CMARK_OPT_FOOTNOTES &&       opener->inl_text->next &&-      opener->inl_text->next->type == CMARK_NODE_TEXT &&-      !opener->inl_text->next->next) {+      opener->inl_text->next->type == CMARK_NODE_TEXT) {+     cmark_chunk *literal = &opener->inl_text->next->as.literal;-    if (literal->len > 1 && literal->data[0] == '^') {-      inl = make_simple(subj->mem, CMARK_NODE_FOOTNOTE_REFERENCE);-      inl->as.literal = cmark_chunk_dup(literal, 1, literal->len - 1);-      inl->start_line = inl->end_line = subj->line;-      inl->start_column = opener->inl_text->start_column;-      inl->end_column = subj->pos + subj->column_offset + subj->block_offset;-      cmark_node_insert_before(opener->inl_text, inl);-      cmark_node_free(opener->inl_text->next);++    // look back to the opening '[', and skip ahead to the next character+    // if we're looking at a '[^' sequence, and there is other text or nodes+    // after the ^, let's call it a footnote reference.+    if ((literal->len > 0 && literal->data[0] == '^') && (literal->len > 1 || opener->inl_text->next->next)) {++      // Before we got this far, the `handle_close_bracket` function may have+      // advanced the current state beyond our footnote's actual closing+      // bracket, ie if it went looking for a `link_label`.+      // Let's just rewind the subject's position:+      subj->pos = initial_pos;++      cmark_node *fnref = make_simple(subj->mem, CMARK_NODE_FOOTNOTE_REFERENCE);++      // the start and end of the footnote ref is the opening and closing brace+      // i.e. the subject's current position, and the opener's start_column+      int fnref_end_column = subj->pos + subj->column_offset + subj->block_offset;+      int fnref_start_column = opener->inl_text->start_column;++      // any given node delineates a substring of the line being processed,+      // with the remainder of the line being pointed to thru its 'literal'+      // struct member.+      // here, we copy the literal's pointer, moving it past the '^' character+      // for a length equal to the size of footnote reference text.+      // i.e. end_col minus start_col, minus the [ and the ^ characters+      //+      // this copies the footnote reference string, even if between the+      // `opener` and the subject's current position there are other nodes+      //+      // (first, check for underflows)+      if ((fnref_start_column + 2) <= fnref_end_column) {+        fnref->as.literal = cmark_chunk_dup(literal, 1, (fnref_end_column - fnref_start_column) - 2);+      } else {+        fnref->as.literal = cmark_chunk_dup(literal, 1, 0);+      }++      fnref->start_line = fnref->end_line = subj->line;+      fnref->start_column = fnref_start_column;+      fnref->end_column = fnref_end_column;++      // we then replace the opener with this new fnref node, the net effect+      // being replacing the opening '[' text node with a `^footnote-ref]` node.+      cmark_node_insert_before(opener->inl_text, fnref);++      process_emphasis(parser, subj, opener->position);+      // sometimes, the footnote reference text gets parsed into multiple nodes+      // i.e. '[^example]' parsed into '[', '^exam', 'ple]'.+      // this happens for ex with the autolink extension. when the autolinker+      // finds the 'w' character, it will split the text into multiple nodes+      // in hopes of being able to match a 'www.' substring.+      //+      // because this function is called one character at a time via the+      // `parse_inlines` function, and the current subj->pos is pointing at the+      // closing ] brace, and because we copy all the text between the [ ]+      // braces, we should be able to safely ignore and delete any nodes after+      // the opener->inl_text->next.+      //+      // therefore, here we walk thru the list and free them all up+      cmark_node *next_node;+      cmark_node *current_node = opener->inl_text->next;+      while(current_node) {+        next_node = current_node->next;+        cmark_node_free(current_node);+        current_node = next_node;+      }+       cmark_node_free(opener->inl_text);-      process_emphasis(parser, subj, opener->previous_delimiter);+       pop_bracket(subj);       return NULL;     }@@ -1163,31 +1330,22 @@   tmp = opener->inl_text->next;   while (tmp) {     tmpnext = tmp->next;-    cmark_node_append_child(inl, tmp);+    cmark_node_unlink(tmp);+    append_child(inl, tmp);     tmp = tmpnext;   }    // Free the bracket [:   cmark_node_free(opener->inl_text); -  process_emphasis(parser, subj, opener->previous_delimiter);+  process_emphasis(parser, subj, opener->position);   pop_bracket(subj); -  // Now, if we have a link, we also want to deactivate earlier link-  // delimiters. (This code can be removed if we decide to allow links+  // Now, if we have a link, we also want to deactivate links until+  // we get a new opener. (This code can be removed if we decide to allow links   // inside links.)   if (!is_image) {-    opener = subj->last_bracket;-    while (opener != NULL) {-      if (!opener->image) {-        if (!opener->active) {-          break;-        } else {-          opener->active = false;-        }-      }-      opener = opener->previous;-    }+    subj->no_link_openers = true;   }    return NULL;@@ -1365,7 +1523,7 @@     new_inl = make_str(subj, startpos, endpos - 1, contents);   }   if (new_inl != NULL) {-    cmark_node_append_child(parent, new_inl);+    append_child(parent, new_inl);   }    return 1;@@ -1384,7 +1542,7 @@   while (!is_eof(&subj) && parse_inline(parser, &subj, parent, options))     ; -  process_emphasis(parser, &subj, NULL);+  process_emphasis(parser, &subj, 0);   // free bracket and delim stack   while (subj.last_delim) {     remove_delimiter(&subj, subj.last_delim);@@ -1432,8 +1590,7 @@    // parse link url:   spnl(&subj);-  if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1 &&-      url.len > 0) {+  if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1) {     subj.pos += matchlen;   } else {     return 0;@@ -1597,10 +1754,15 @@ }  int cmark_inline_parser_in_bracket(cmark_inline_parser *parser, int image) {-  for (bracket *b = parser->last_bracket; b; b = b->previous)-    if (b->active && b->image == (image != 0))-      return 1;-  return 0;+  bracket *b = parser->last_bracket;+  if (!b) {+    return 0;+  }+  if (image != 0) {+    return b->in_bracket_image1;+  } else {+    return b->in_bracket_image0;+  } }  void cmark_node_unput(cmark_node *node, int n) {
cbits/iterator.h view
@@ -6,7 +6,6 @@ #endif  #include "cmark-gfm.h"-#include "memory.h"  typedef struct {   cmark_event_type ev_type;
cbits/latex.c view
@@ -385,10 +385,12 @@     break;    case CMARK_NODE_STRONG:-    if (entering) {-      LIT("\\textbf{");-    } else {-      LIT("}");+    if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+      if (entering) {+        LIT("\\textbf{");+      } else {+        LIT("}");+      }     }     break; 
cbits/man.c view
@@ -74,7 +74,6 @@  static int S_render_node(cmark_renderer *renderer, cmark_node *node,                          cmark_event_type ev_type, int options) {-  cmark_node *tmp;   int list_number;   bool entering = (ev_type == CMARK_EVENT_ENTER);   bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options);@@ -123,12 +122,7 @@       if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) {         LIT("\\[bu] 2");       } else {-        list_number = cmark_node_get_list_start(node->parent);-        tmp = node;-        while (tmp->prev) {-          tmp = tmp->prev;-          list_number += 1;-        }+        list_number = cmark_node_get_item_index(node);         char list_number_s[LIST_NUMBER_SIZE];         snprintf(list_number_s, LIST_NUMBER_SIZE, "\"%d.\" 4", list_number);         LIT(list_number_s);@@ -225,10 +219,12 @@     break;    case CMARK_NODE_STRONG:-    if (entering) {-      LIT("\\f[B]");-    } else {-      LIT("\\f[]");+    if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+      if (entering) {+        LIT("\\f[B]");+      } else {+        LIT("\\f[]");+      }     }     break; 
cbits/map.c view
@@ -51,7 +51,7 @@ }  static void sort_map(cmark_map *map) {-  unsigned int i = 0, last = 0, size = map->size;+  size_t i = 0, last = 0, size = map->size;   cmark_map_entry *r = map->refs, **sorted = NULL;    sorted = (cmark_map_entry **)map->mem->calloc(size, sizeof(cmark_map_entry *));@@ -73,6 +73,7 @@  cmark_map_entry *cmark_map_lookup(cmark_map *map, cmark_chunk *label) {   cmark_map_entry **ref = NULL;+  cmark_map_entry *r = NULL;   unsigned char *norm;    if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH)@@ -91,10 +92,15 @@   ref = (cmark_map_entry **)bsearch(norm, map->sorted, map->size, sizeof(cmark_map_entry *), refsearch);   map->mem->free(norm); -  if (!ref)-    return NULL;+  if (ref != NULL) {+    r = ref[0];+    /* Check for expansion limit */+    if (r->size > map->max_ref_size - map->ref_size)+      return NULL;+    map->ref_size += r->size;+  } -  return ref[0];+  return r; }  void cmark_map_free(cmark_map *map) {@@ -118,5 +124,6 @@   cmark_map *map = (cmark_map *)mem->calloc(1, sizeof(cmark_map));   map->mem = mem;   map->free = free;+  map->max_ref_size = UINT_MAX;   return map; }
cbits/map.h view
@@ -1,7 +1,6 @@ #ifndef CMARK_MAP_H #define CMARK_MAP_H -#include "memory.h" #include "chunk.h"  #ifdef __cplusplus@@ -11,7 +10,8 @@ struct cmark_map_entry {   struct cmark_map_entry *next;   unsigned char *label;-  unsigned int age;+  size_t age;+  size_t size; };  typedef struct cmark_map_entry cmark_map_entry;@@ -24,7 +24,9 @@   cmark_mem *mem;   cmark_map_entry *refs;   cmark_map_entry **sorted;-  unsigned int size;+  size_t size;+  size_t ref_size;+  size_t max_ref_size;   cmark_map_free_f free; }; 
cbits/node.c view
@@ -5,10 +5,42 @@ #include "node.h" #include "syntax_extension.h" +/**+ * Expensive safety checks are off by default, but can be enabled+ * by calling cmark_enable_safety_checks().+ */+static bool enable_safety_checks = false;++void cmark_enable_safety_checks(bool enable) {+  enable_safety_checks = enable;+}+ static void S_node_unlink(cmark_node *node);  #define NODE_MEM(node) cmark_node_mem(node) +void cmark_register_node_flag(cmark_node_internal_flags *flags) {+  static cmark_node_internal_flags nextflag = CMARK_NODE__REGISTER_FIRST;++  // flags should be a pointer to a global variable and this function+  // should only be called once to initialize its value.+  if (*flags) {+    fprintf(stderr, "flag initialization error in cmark_register_node_flag\n");+    abort();+  }++  // Check that we haven't run out of bits.+  if (nextflag == 0) {+    fprintf(stderr, "too many flags in cmark_register_node_flag\n");+    abort();+  }++  *flags = nextflag;+  nextflag <<= 1;+}++void cmark_init_standard_node_flags(void) {}+ bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type) {   if (child_type == CMARK_NODE_DOCUMENT) {       return false;@@ -48,8 +80,6 @@ }  static bool S_can_contain(cmark_node *node, cmark_node *child) {-  cmark_node *cur;-   if (node == NULL || child == NULL) {     return false;   }@@ -57,14 +87,16 @@     return 0;   } -  // Verify that child is not an ancestor of node or equal to node.-  cur = node;-  do {-    if (cur == child) {-      return false;-    }-    cur = cur->parent;-  } while (cur != NULL);+  if (enable_safety_checks) {+    // Verify that child is not an ancestor of node or equal to node.+    cmark_node *cur = node;+    do {+      if (cur == child) {+        return false;+      }+      cur = cur->parent;+    } while (cur != NULL);+  }    return cmark_node_can_contain_type(node, (cmark_node_type) child->type); }@@ -301,6 +333,14 @@   } } +cmark_node *cmark_node_parent_footnote_def(cmark_node *node) {+  if (node == NULL) {+    return NULL;+  } else {+    return node->parent_footnote_def;+  }+}+ void *cmark_node_get_user_data(cmark_node *node) {   if (node == NULL) {     return NULL;@@ -337,6 +377,7 @@   case CMARK_NODE_HTML_INLINE:   case CMARK_NODE_CODE:   case CMARK_NODE_FOOTNOTE_REFERENCE:+  case CMARK_NODE_FOOTNOTE_DEFINITION:     return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal);    case CMARK_NODE_CODE_BLOCK:@@ -518,6 +559,31 @@    if (node->type == CMARK_NODE_LIST) {     node->as.list.tight = tight == 1;+    return 1;+  } else {+    return 0;+  }+}++int cmark_node_get_item_index(cmark_node *node) {+  if (node == NULL) {+    return 0;+  }++  if (node->type == CMARK_NODE_ITEM) {+    return node->as.list.start;+  } else {+    return 0;+  }+}++int cmark_node_set_item_index(cmark_node *node, int idx) {+  if (node == NULL || idx < 0) {+    return 0;+  }++  if (node->type == CMARK_NODE_ITEM) {+    node->as.list.start = idx;     return 1;   } else {     return 0;
cbits/node.h view
@@ -21,6 +21,7 @@   cmark_delim_type delimiter;   unsigned char bullet_char;   bool tight;+  bool checked; // For task list extension } cmark_list;  typedef struct {@@ -50,8 +51,15 @@ enum cmark_node__internal_flags {   CMARK_NODE__OPEN = (1 << 0),   CMARK_NODE__LAST_LINE_BLANK = (1 << 1),+  CMARK_NODE__LAST_LINE_CHECKED = (1 << 2),++  // Extensions can register custom flags by calling `cmark_register_node_flag`.+  // This is the starting value for the custom flags.+  CMARK_NODE__REGISTER_FIRST = (1 << 3), }; +typedef uint16_t cmark_node_internal_flags;+ struct cmark_node {   cmark_strbuf content; @@ -70,11 +78,26 @@   int end_column;   int internal_offset;   uint16_t type;-  uint16_t flags;+  cmark_node_internal_flags flags;    cmark_syntax_extension *extension; +  /**+   * Used during cmark_render() to cache the most recent non-NULL+   * extension, if you go up the parent chain like this:+   *+   * node->parent->...parent->extension+   */+  cmark_syntax_extension *ancestor_extension;+   union {+    int ref_ix;+    int def_count;+  } footnote;++  cmark_node *parent_footnote_def;++  union {     cmark_chunk literal;     cmark_list list;     cmark_code code;@@ -82,10 +105,31 @@     cmark_link link;     cmark_custom custom;     int html_block_type;+    int cell_index; // For keeping track of TABLE_CELL table alignments     void *opaque;   } as; }; +/**+ * Syntax extensions can use this function to register a custom node+ * flag. The flags are stored in the `flags` field of the `cmark_node`+ * struct. The `flags` parameter should be the address of a global variable+ * which will store the flag value.+ */+CMARK_GFM_EXPORT+void cmark_register_node_flag(cmark_node_internal_flags *flags);++/**+ * DEPRECATED.+ *+ * This function was added in cmark-gfm version 0.29.0.gfm.7, and was+ * required to be called at program start time, which caused+ * backwards-compatibility issues in applications that use cmark-gfm as a+ * library. It is now a no-op.+ */+CMARK_GFM_EXPORT+void cmark_init_standard_node_flags(void);+ static CMARK_INLINE cmark_mem *cmark_node_mem(cmark_node *node) {   return node->content.mem; }@@ -108,6 +152,13 @@ }  CMARK_GFM_EXPORT bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type);++/**+ * Enable (or disable) extra safety checks. These extra checks cause+ * extra performance overhead (in some cases quadratic), so they are only+ * intended to be used during testing.+ */+CMARK_GFM_EXPORT void cmark_enable_safety_checks(bool enable);  #ifdef __cplusplus }
cbits/parser.h view
@@ -2,9 +2,9 @@ #define CMARK_PARSER_H  #include <stdio.h>+#include "references.h" #include "node.h" #include "buffer.h"-#include "memory.h"  #ifdef __cplusplus extern "C" {@@ -30,6 +30,7 @@   bufsize_t first_nonspace;   /* See the documentation for cmark_parser_get_first_nonspace_column() in cmark.h */   bufsize_t first_nonspace_column;+  bufsize_t thematic_break_kill_pos;   /* See the documentation for cmark_parser_get_indent() in cmark.h */   int indent;   /* See the documentation for cmark_parser_is_blank() in cmark.h */@@ -45,6 +46,7 @@   /* Options set by the user, see the Options section in cmark.h */   int options;   bool last_buffer_ended_with_cr;+  size_t total_size;   cmark_llist *syntax_extensions;   cmark_llist *inline_syntax_extensions;   cmark_ispunct_func backslash_ispunct;
cbits/plaintext.c view
@@ -16,23 +16,8 @@   cmark_render_code_point(renderer, c); } -// if node is a block node, returns node.-// otherwise returns first block-level node that is an ancestor of node.-// if there is no block-level ancestor, returns NULL.-static cmark_node *get_containing_block(cmark_node *node) {-  while (node) {-    if (CMARK_NODE_BLOCK_P(node)) {-      return node;-    } else {-      node = node->parent;-    }-  }-  return NULL;-}- static int S_render_node(cmark_renderer *renderer, cmark_node *node,                          cmark_event_type ev_type, int options) {-  cmark_node *tmp;   int list_number;   cmark_delim_type list_delim;   int i;@@ -46,14 +31,17 @@   // Don't adjust tight list status til we've started the list.   // Otherwise we loose the blank line between a paragraph and   // a following list.-  if (!(node->type == CMARK_NODE_ITEM && node->prev == NULL && entering)) {-    tmp = get_containing_block(node);-    renderer->in_tight_list_item =-        tmp && // tmp might be NULL if there is no containing block-        ((tmp->type == CMARK_NODE_ITEM &&-          cmark_node_get_list_tight(tmp->parent)) ||-         (tmp && tmp->parent && tmp->parent->type == CMARK_NODE_ITEM &&-          cmark_node_get_list_tight(tmp->parent->parent)));+  if (entering) {+    if (node->parent && node->parent->type == CMARK_NODE_ITEM) {+      renderer->in_tight_list_item = node->parent->parent->as.list.tight;+    }+  } else {+    if (node->type == CMARK_NODE_LIST) {+      renderer->in_tight_list_item =+        node->parent &&+        node->parent->type == CMARK_NODE_ITEM &&+        node->parent->parent->as.list.tight;+    }   }    if (node->extension && node->extension->plaintext_render_func) {@@ -79,13 +67,8 @@     if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) {       marker_width = 4;     } else {-      list_number = cmark_node_get_list_start(node->parent);+      list_number = cmark_node_get_item_index(node);       list_delim = cmark_node_get_list_delim(node->parent);-      tmp = node;-      while (tmp->prev) {-        tmp = tmp->prev;-        list_number += 1;-      }       // we ensure a width of at least 4 so       // we get nice transition from single digits       // to double
cbits/references.c view
@@ -32,6 +32,7 @@   ref->title = cmark_clean_title(map->mem, title);   ref->entry.age = map->size;   ref->entry.next = map->refs;+  ref->entry.size = ref->url.len + ref->title.len;    map->refs = (cmark_map_entry *)ref;   map->size++;
cbits/render.c view
@@ -31,13 +31,7 @@   cmark_chunk remainder = cmark_chunk_literal("");   int k = renderer->buffer->size - 1; -  cmark_syntax_extension *ext = NULL;-  cmark_node *n = node;-  while (n && !ext) {-    ext = n->extension;-    if (!ext)-      n = n->parent;-  }+  cmark_syntax_extension *ext = node->ancestor_extension;   if (ext && !ext->commonmark_escape_func)     ext = NULL; @@ -98,21 +92,23 @@         }       } -    } else if (c == 10) {-      cmark_strbuf_putc(renderer->buffer, '\n');-      renderer->column = 0;-      renderer->begin_line = true;-      renderer->begin_content = true;-      renderer->last_breakable = 0;     } else if (escape == LITERAL) {-      cmark_render_code_point(renderer, c);-      renderer->begin_line = false;-      // we don't set 'begin_content' to false til we've-      // finished parsing a digit.  Reason:  in commonmark-      // we need to escape a potential list marker after-      // a digit:-      renderer->begin_content =-          renderer->begin_content && cmark_isdigit((char)c) == 1;+      if (c == 10) {+        cmark_strbuf_putc(renderer->buffer, '\n');+        renderer->column = 0;+        renderer->begin_line = true;+        renderer->begin_content = true;+        renderer->last_breakable = 0;+      } else {+        cmark_render_code_point(renderer, c);+        renderer->begin_line = false;+        // we don't set 'begin_content' to false til we've+        // finished parsing a digit.  Reason:  in commonmark+        // we need to escape a potential list marker after+        // a digit:+        renderer->begin_content =+            renderer->begin_content && cmark_isdigit((char)c) == 1;+      }     } else {       (renderer->outc)(renderer, node, escape, c, nextc);       renderer->begin_line = false;@@ -180,6 +176,20 @@    while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {     cur = cmark_iter_get_node(iter);+    if (cur->extension) {+      cur->ancestor_extension = cur->extension;+    } else if (cur->parent) {+      cur->ancestor_extension = cur->parent->ancestor_extension;+    }+    if (cur->type == CMARK_NODE_ITEM) {+      // Calculate the list item's index, for the benefit of output formats+      // like commonmark and plaintext.+      if (cur->prev) {+        cmark_node_set_item_index(cur, 1 + cmark_node_get_item_index(cur->prev));+      } else {+        cmark_node_set_item_index(cur, cmark_node_get_list_start(cur->parent));+      }+    }     if (!render_node(&renderer, cur, ev_type, options)) {       // a false value causes us to skip processing       // the node's contents.  this is used for
cbits/render.h view
@@ -8,7 +8,6 @@ #include <stdlib.h> #include "buffer.h" #include "chunk.h"-#include "memory.h"  typedef enum { LITERAL, NORMAL, TITLE, URL } cmark_escaping; 
cbits/scanners.c view
@@ -1,10694 +1,14056 @@-/* Generated by re2c 1.1.1 */-#include <stdlib.h>-#include "chunk.h"-#include "scanners.h"--bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t offset)-{-	bufsize_t res;-	unsigned char *ptr = (unsigned char *)c->data;--        if (ptr == NULL || offset > c->len) {-          return 0;-        } else {-	  unsigned char lim = ptr[c->len];--	  ptr[c->len] = '\0';-	  res = scanner(ptr + offset);-	  ptr[c->len] = lim;-        }--	return res;-}----// Try to match a scheme including colon.-bufsize_t _scan_scheme(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	yych = *p;-	if (yych <= '@') goto yy2;-	if (yych <= 'Z') goto yy4;-	if (yych <= '`') goto yy2;-	if (yych <= 'z') goto yy4;-yy2:-	++p;-yy3:-	{ return 0; }-yy4:-	yych = *(marker = ++p);-	if (yych <= '/') {-		if (yych <= '+') {-			if (yych <= '*') goto yy3;-		} else {-			if (yych <= ',') goto yy3;-			if (yych >= '/') goto yy3;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '9') goto yy5;-			if (yych <= '@') goto yy3;-		} else {-			if (yych <= '`') goto yy3;-			if (yych >= '{') goto yy3;-		}-	}-yy5:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych == '+') goto yy7;-		} else {-			if (yych != '/') goto yy7;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych >= 'A') goto yy7;-		} else {-			if (yych <= '`') goto yy6;-			if (yych <= 'z') goto yy7;-		}-	}-yy6:-	p = marker;-	goto yy3;-yy7:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych == '+') goto yy10;-			goto yy6;-		} else {-			if (yych == '/') goto yy6;-			goto yy10;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-			goto yy10;-		} else {-			if (yych <= '`') goto yy6;-			if (yych <= 'z') goto yy10;-			goto yy6;-		}-	}-yy8:-	++p;-	{ return (bufsize_t)(p - start); }-yy10:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy6;-		} else {-			if (yych == '/') goto yy6;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy8;-			if (yych <= '@') goto yy6;-		} else {-			if (yych <= '`') goto yy6;-			if (yych >= '{') goto yy6;-		}-	}-	yych = *++p;-	if (yych == ':') goto yy8;-	goto yy6;-}--}--// Try to match URI autolink after first <, returning number of chars matched.-bufsize_t _scan_autolink_uri(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128,   0, 128,   0, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= '@') goto yy41;-	if (yych <= 'Z') goto yy43;-	if (yych <= '`') goto yy41;-	if (yych <= 'z') goto yy43;-yy41:-	++p;-yy42:-	{ return 0; }-yy43:-	yych = *(marker = ++p);-	if (yych <= '/') {-		if (yych <= '+') {-			if (yych <= '*') goto yy42;-		} else {-			if (yych <= ',') goto yy42;-			if (yych >= '/') goto yy42;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '9') goto yy44;-			if (yych <= '@') goto yy42;-		} else {-			if (yych <= '`') goto yy42;-			if (yych >= '{') goto yy42;-		}-	}-yy44:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych == '+') goto yy46;-		} else {-			if (yych != '/') goto yy46;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych >= 'A') goto yy46;-		} else {-			if (yych <= '`') goto yy45;-			if (yych <= 'z') goto yy46;-		}-	}-yy45:-	p = marker;-	goto yy42;-yy46:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych == '+') goto yy49;-			goto yy45;-		} else {-			if (yych == '/') goto yy45;-			goto yy49;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-			goto yy49;-		} else {-			if (yych <= '`') goto yy45;-			if (yych <= 'z') goto yy49;-			goto yy45;-		}-	}-yy47:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy47;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '<') goto yy45;-			if (yych <= '>') goto yy50;-			goto yy45;-		} else {-			if (yych <= 0xDF) goto yy52;-			if (yych <= 0xE0) goto yy53;-			goto yy54;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy55;-			if (yych <= 0xEF) goto yy54;-			goto yy56;-		} else {-			if (yych <= 0xF3) goto yy57;-			if (yych <= 0xF4) goto yy58;-			goto yy45;-		}-	}-yy49:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych == '+') goto yy59;-			goto yy45;-		} else {-			if (yych == '/') goto yy45;-			goto yy59;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-			goto yy59;-		} else {-			if (yych <= '`') goto yy45;-			if (yych <= 'z') goto yy59;-			goto yy45;-		}-	}-yy50:-	++p;-	{ return (bufsize_t)(p - start); }-yy52:-	yych = *++p;-	if (yych <= 0x7F) goto yy45;-	if (yych <= 0xBF) goto yy47;-	goto yy45;-yy53:-	yych = *++p;-	if (yych <= 0x9F) goto yy45;-	if (yych <= 0xBF) goto yy52;-	goto yy45;-yy54:-	yych = *++p;-	if (yych <= 0x7F) goto yy45;-	if (yych <= 0xBF) goto yy52;-	goto yy45;-yy55:-	yych = *++p;-	if (yych <= 0x7F) goto yy45;-	if (yych <= 0x9F) goto yy52;-	goto yy45;-yy56:-	yych = *++p;-	if (yych <= 0x8F) goto yy45;-	if (yych <= 0xBF) goto yy54;-	goto yy45;-yy57:-	yych = *++p;-	if (yych <= 0x7F) goto yy45;-	if (yych <= 0xBF) goto yy54;-	goto yy45;-yy58:-	yych = *++p;-	if (yych <= 0x7F) goto yy45;-	if (yych <= 0x8F) goto yy54;-	goto yy45;-yy59:-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych <= ',') {-			if (yych != '+') goto yy45;-		} else {-			if (yych == '/') goto yy45;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= ':') goto yy47;-			if (yych <= '@') goto yy45;-		} else {-			if (yych <= '`') goto yy45;-			if (yych >= '{') goto yy45;-		}-	}-	yych = *++p;-	if (yych == ':') goto yy47;-	goto yy45;-}--}--// Try to match email autolink after first <, returning num of chars matched.-bufsize_t _scan_autolink_email(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0, 128,   0, 128, 128, 128, 128, 128, -		  0,   0, 128, 128,   0, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128,   0,   0,   0, 128,   0, 128, -		  0, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128,   0,   0,   0, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= '9') {-		if (yych <= '\'') {-			if (yych == '!') goto yy91;-			if (yych >= '#') goto yy91;-		} else {-			if (yych <= ')') goto yy89;-			if (yych != ',') goto yy91;-		}-	} else {-		if (yych <= '?') {-			if (yych == '=') goto yy91;-			if (yych >= '?') goto yy91;-		} else {-			if (yych <= 'Z') {-				if (yych >= 'A') goto yy91;-			} else {-				if (yych <= ']') goto yy89;-				if (yych <= '~') goto yy91;-			}-		}-	}-yy89:-	++p;-yy90:-	{ return 0; }-yy91:-	yych = *(marker = ++p);-	if (yych <= ',') {-		if (yych <= '"') {-			if (yych == '!') goto yy93;-			goto yy90;-		} else {-			if (yych <= '\'') goto yy93;-			if (yych <= ')') goto yy90;-			if (yych <= '+') goto yy93;-			goto yy90;-		}-	} else {-		if (yych <= '>') {-			if (yych <= '9') goto yy93;-			if (yych == '=') goto yy93;-			goto yy90;-		} else {-			if (yych <= 'Z') goto yy93;-			if (yych <= ']') goto yy90;-			if (yych <= '~') goto yy93;-			goto yy90;-		}-	}-yy92:-	yych = *++p;-yy93:-	if (yybm[0+yych] & 128) {-		goto yy92;-	}-	if (yych <= '>') goto yy94;-	if (yych <= '@') goto yy95;-yy94:-	p = marker;-	goto yy90;-yy95:-	yych = *++p;-	if (yych <= '@') {-		if (yych <= '/') goto yy94;-		if (yych >= ':') goto yy94;-	} else {-		if (yych <= 'Z') goto yy96;-		if (yych <= '`') goto yy94;-		if (yych >= '{') goto yy94;-	}-yy96:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy98;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy98;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy98;-			goto yy94;-		}-	}-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy101;-		if (yych <= '/') goto yy94;-		goto yy102;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy102;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy102;-			goto yy94;-		}-	}-yy98:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych <= '-') goto yy101;-			goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy102;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy102;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy102;-			goto yy94;-		}-	}-yy99:-	++p;-	{ return (bufsize_t)(p - start); }-yy101:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy103;-		if (yych <= '/') goto yy94;-		goto yy104;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy104;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy104;-			goto yy94;-		}-	}-yy102:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy104;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy104;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy104;-			goto yy94;-		}-	}-yy103:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy105;-		if (yych <= '/') goto yy94;-		goto yy106;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy106;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy106;-			goto yy94;-		}-	}-yy104:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy106;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy106;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy106;-			goto yy94;-		}-	}-yy105:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy107;-		if (yych <= '/') goto yy94;-		goto yy108;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy108;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy108;-			goto yy94;-		}-	}-yy106:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy108;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy108;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy108;-			goto yy94;-		}-	}-yy107:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy109;-		if (yych <= '/') goto yy94;-		goto yy110;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy110;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy110;-			goto yy94;-		}-	}-yy108:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy110;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy110;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy110;-			goto yy94;-		}-	}-yy109:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy111;-		if (yych <= '/') goto yy94;-		goto yy112;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy112;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy112;-			goto yy94;-		}-	}-yy110:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy112;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy112;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy112;-			goto yy94;-		}-	}-yy111:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy113;-		if (yych <= '/') goto yy94;-		goto yy114;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy114;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy114;-			goto yy94;-		}-	}-yy112:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy114;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy114;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy114;-			goto yy94;-		}-	}-yy113:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy115;-		if (yych <= '/') goto yy94;-		goto yy116;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy116;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy116;-			goto yy94;-		}-	}-yy114:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy116;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy116;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy116;-			goto yy94;-		}-	}-yy115:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy117;-		if (yych <= '/') goto yy94;-		goto yy118;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy118;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy118;-			goto yy94;-		}-	}-yy116:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy118;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy118;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy118;-			goto yy94;-		}-	}-yy117:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy119;-		if (yych <= '/') goto yy94;-		goto yy120;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy120;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy120;-			goto yy94;-		}-	}-yy118:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy120;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy120;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy120;-			goto yy94;-		}-	}-yy119:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy121;-		if (yych <= '/') goto yy94;-		goto yy122;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy122;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy122;-			goto yy94;-		}-	}-yy120:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy122;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy122;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy122;-			goto yy94;-		}-	}-yy121:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy123;-		if (yych <= '/') goto yy94;-		goto yy124;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy124;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy124;-			goto yy94;-		}-	}-yy122:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy124;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy124;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy124;-			goto yy94;-		}-	}-yy123:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy125;-		if (yych <= '/') goto yy94;-		goto yy126;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy126;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy126;-			goto yy94;-		}-	}-yy124:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy126;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy126;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy126;-			goto yy94;-		}-	}-yy125:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy127;-		if (yych <= '/') goto yy94;-		goto yy128;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy128;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy128;-			goto yy94;-		}-	}-yy126:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy128;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy128;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy128;-			goto yy94;-		}-	}-yy127:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy129;-		if (yych <= '/') goto yy94;-		goto yy130;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy130;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy130;-			goto yy94;-		}-	}-yy128:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy130;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy130;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy130;-			goto yy94;-		}-	}-yy129:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy131;-		if (yych <= '/') goto yy94;-		goto yy132;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy132;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy132;-			goto yy94;-		}-	}-yy130:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy132;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy132;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy132;-			goto yy94;-		}-	}-yy131:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy133;-		if (yych <= '/') goto yy94;-		goto yy134;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy134;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy134;-			goto yy94;-		}-	}-yy132:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy134;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy134;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy134;-			goto yy94;-		}-	}-yy133:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy135;-		if (yych <= '/') goto yy94;-		goto yy136;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy136;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy136;-			goto yy94;-		}-	}-yy134:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy136;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy136;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy136;-			goto yy94;-		}-	}-yy135:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy137;-		if (yych <= '/') goto yy94;-		goto yy138;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy138;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy138;-			goto yy94;-		}-	}-yy136:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy138;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy138;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy138;-			goto yy94;-		}-	}-yy137:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy139;-		if (yych <= '/') goto yy94;-		goto yy140;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy140;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy140;-			goto yy94;-		}-	}-yy138:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy140;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy140;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy140;-			goto yy94;-		}-	}-yy139:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy141;-		if (yych <= '/') goto yy94;-		goto yy142;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy142;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy142;-			goto yy94;-		}-	}-yy140:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy142;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy142;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy142;-			goto yy94;-		}-	}-yy141:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy143;-		if (yych <= '/') goto yy94;-		goto yy144;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy144;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy144;-			goto yy94;-		}-	}-yy142:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy144;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy144;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy144;-			goto yy94;-		}-	}-yy143:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy145;-		if (yych <= '/') goto yy94;-		goto yy146;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy146;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy146;-			goto yy94;-		}-	}-yy144:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy146;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy146;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy146;-			goto yy94;-		}-	}-yy145:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy147;-		if (yych <= '/') goto yy94;-		goto yy148;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy148;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy148;-			goto yy94;-		}-	}-yy146:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy148;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy148;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy148;-			goto yy94;-		}-	}-yy147:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy149;-		if (yych <= '/') goto yy94;-		goto yy150;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy150;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy150;-			goto yy94;-		}-	}-yy148:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy150;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy150;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy150;-			goto yy94;-		}-	}-yy149:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy151;-		if (yych <= '/') goto yy94;-		goto yy152;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy152;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy152;-			goto yy94;-		}-	}-yy150:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy152;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy152;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy152;-			goto yy94;-		}-	}-yy151:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy153;-		if (yych <= '/') goto yy94;-		goto yy154;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy154;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy154;-			goto yy94;-		}-	}-yy152:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy154;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy154;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy154;-			goto yy94;-		}-	}-yy153:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy155;-		if (yych <= '/') goto yy94;-		goto yy156;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy156;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy156;-			goto yy94;-		}-	}-yy154:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy156;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy156;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy156;-			goto yy94;-		}-	}-yy155:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy157;-		if (yych <= '/') goto yy94;-		goto yy158;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy158;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy158;-			goto yy94;-		}-	}-yy156:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy158;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy158;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy158;-			goto yy94;-		}-	}-yy157:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy159;-		if (yych <= '/') goto yy94;-		goto yy160;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy160;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy160;-			goto yy94;-		}-	}-yy158:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy160;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy160;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy160;-			goto yy94;-		}-	}-yy159:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy161;-		if (yych <= '/') goto yy94;-		goto yy162;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy162;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy162;-			goto yy94;-		}-	}-yy160:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy162;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy162;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy162;-			goto yy94;-		}-	}-yy161:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy163;-		if (yych <= '/') goto yy94;-		goto yy164;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy164;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy164;-			goto yy94;-		}-	}-yy162:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy164;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy164;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy164;-			goto yy94;-		}-	}-yy163:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy165;-		if (yych <= '/') goto yy94;-		goto yy166;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy166;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy166;-			goto yy94;-		}-	}-yy164:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy166;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy166;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy166;-			goto yy94;-		}-	}-yy165:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy167;-		if (yych <= '/') goto yy94;-		goto yy168;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy168;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy168;-			goto yy94;-		}-	}-yy166:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy168;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy168;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy168;-			goto yy94;-		}-	}-yy167:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy169;-		if (yych <= '/') goto yy94;-		goto yy170;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy170;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy170;-			goto yy94;-		}-	}-yy168:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy170;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy170;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy170;-			goto yy94;-		}-	}-yy169:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy171;-		if (yych <= '/') goto yy94;-		goto yy172;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy172;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy172;-			goto yy94;-		}-	}-yy170:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy172;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy172;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy172;-			goto yy94;-		}-	}-yy171:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy173;-		if (yych <= '/') goto yy94;-		goto yy174;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy174;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy174;-			goto yy94;-		}-	}-yy172:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy174;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy174;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy174;-			goto yy94;-		}-	}-yy173:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy175;-		if (yych <= '/') goto yy94;-		goto yy176;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy176;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy176;-			goto yy94;-		}-	}-yy174:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy176;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy176;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy176;-			goto yy94;-		}-	}-yy175:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy177;-		if (yych <= '/') goto yy94;-		goto yy178;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy178;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy178;-			goto yy94;-		}-	}-yy176:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy178;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy178;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy178;-			goto yy94;-		}-	}-yy177:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy179;-		if (yych <= '/') goto yy94;-		goto yy180;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy180;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy180;-			goto yy94;-		}-	}-yy178:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy180;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy180;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy180;-			goto yy94;-		}-	}-yy179:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy181;-		if (yych <= '/') goto yy94;-		goto yy182;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy182;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy182;-			goto yy94;-		}-	}-yy180:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy182;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy182;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy182;-			goto yy94;-		}-	}-yy181:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy183;-		if (yych <= '/') goto yy94;-		goto yy184;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy184;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy184;-			goto yy94;-		}-	}-yy182:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy184;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy184;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy184;-			goto yy94;-		}-	}-yy183:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy185;-		if (yych <= '/') goto yy94;-		goto yy186;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy186;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy186;-			goto yy94;-		}-	}-yy184:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy186;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy186;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy186;-			goto yy94;-		}-	}-yy185:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy187;-		if (yych <= '/') goto yy94;-		goto yy188;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy188;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy188;-			goto yy94;-		}-	}-yy186:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy188;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy188;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy188;-			goto yy94;-		}-	}-yy187:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy189;-		if (yych <= '/') goto yy94;-		goto yy190;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy190;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy190;-			goto yy94;-		}-	}-yy188:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy190;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy190;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy190;-			goto yy94;-		}-	}-yy189:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy191;-		if (yych <= '/') goto yy94;-		goto yy192;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy192;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy192;-			goto yy94;-		}-	}-yy190:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy192;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy192;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy192;-			goto yy94;-		}-	}-yy191:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy193;-		if (yych <= '/') goto yy94;-		goto yy194;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy194;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy194;-			goto yy94;-		}-	}-yy192:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy194;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy194;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy194;-			goto yy94;-		}-	}-yy193:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy195;-		if (yych <= '/') goto yy94;-		goto yy196;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy196;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy196;-			goto yy94;-		}-	}-yy194:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy196;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy196;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy196;-			goto yy94;-		}-	}-yy195:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy197;-		if (yych <= '/') goto yy94;-		goto yy198;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy198;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy198;-			goto yy94;-		}-	}-yy196:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy198;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy198;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy198;-			goto yy94;-		}-	}-yy197:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy199;-		if (yych <= '/') goto yy94;-		goto yy200;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy200;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy200;-			goto yy94;-		}-	}-yy198:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy200;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy200;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy200;-			goto yy94;-		}-	}-yy199:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy201;-		if (yych <= '/') goto yy94;-		goto yy202;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy202;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy202;-			goto yy94;-		}-	}-yy200:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy202;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy202;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy202;-			goto yy94;-		}-	}-yy201:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy203;-		if (yych <= '/') goto yy94;-		goto yy204;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy204;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy204;-			goto yy94;-		}-	}-yy202:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy204;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy204;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy204;-			goto yy94;-		}-	}-yy203:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy205;-		if (yych <= '/') goto yy94;-		goto yy206;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy206;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy206;-			goto yy94;-		}-	}-yy204:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy206;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy206;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy206;-			goto yy94;-		}-	}-yy205:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy207;-		if (yych <= '/') goto yy94;-		goto yy208;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy208;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy208;-			goto yy94;-		}-	}-yy206:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy208;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy208;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy208;-			goto yy94;-		}-	}-yy207:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy209;-		if (yych <= '/') goto yy94;-		goto yy210;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy210;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy210;-			goto yy94;-		}-	}-yy208:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy210;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy210;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy210;-			goto yy94;-		}-	}-yy209:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy211;-		if (yych <= '/') goto yy94;-		goto yy212;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy212;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy212;-			goto yy94;-		}-	}-yy210:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy212;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy212;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy212;-			goto yy94;-		}-	}-yy211:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy213;-		if (yych <= '/') goto yy94;-		goto yy214;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy214;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy214;-			goto yy94;-		}-	}-yy212:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy214;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy214;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy214;-			goto yy94;-		}-	}-yy213:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy215;-		if (yych <= '/') goto yy94;-		goto yy216;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy216;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy216;-			goto yy94;-		}-	}-yy214:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy216;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy216;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy216;-			goto yy94;-		}-	}-yy215:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy217;-		if (yych <= '/') goto yy94;-		goto yy218;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy218;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy218;-			goto yy94;-		}-	}-yy216:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy218;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy218;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy218;-			goto yy94;-		}-	}-yy217:-	yych = *++p;-	if (yych <= '9') {-		if (yych == '-') goto yy219;-		if (yych <= '/') goto yy94;-		goto yy220;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy94;-			goto yy220;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy220;-			goto yy94;-		}-	}-yy218:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= ',') goto yy94;-			if (yych >= '.') goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych <= '9') goto yy220;-			goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-			goto yy220;-		} else {-			if (yych <= '`') goto yy94;-			if (yych <= 'z') goto yy220;-			goto yy94;-		}-	}-yy219:-	yych = *++p;-	if (yych <= '@') {-		if (yych <= '/') goto yy94;-		if (yych <= '9') goto yy221;-		goto yy94;-	} else {-		if (yych <= 'Z') goto yy221;-		if (yych <= '`') goto yy94;-		if (yych <= 'z') goto yy221;-		goto yy94;-	}-yy220:-	yych = *++p;-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych <= '-') goto yy94;-			goto yy95;-		} else {-			if (yych <= '/') goto yy94;-			if (yych >= ':') goto yy94;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy99;-			if (yych <= '@') goto yy94;-		} else {-			if (yych <= '`') goto yy94;-			if (yych >= '{') goto yy94;-		}-	}-yy221:-	yych = *++p;-	if (yych == '.') goto yy95;-	if (yych == '>') goto yy99;-	goto yy94;-}--}--// Try to match an HTML tag after first <, returning num of chars matched.-bufsize_t _scan_html_tag(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		/* table 1 .. 8: 0 */-		  0, 250, 250, 250, 250, 250, 250, 250, -		250, 235, 235, 235, 235, 235, 250, 250, -		250, 250, 250, 250, 250, 250, 250, 250, -		250, 250, 250, 250, 250, 250, 250, 250, -		235, 250, 202, 250, 250, 250, 250, 170, -		250, 250, 250, 250, 250, 246, 254, 250, -		254, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 250, 234, 234, 232, 250, -		250, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 250, 250, 122, 250, 254, -		234, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 254, 254, 254, 254, 254, -		254, 254, 254, 250, 250, 250, 250, 250, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		/* table 9 .. 11: 256 */-		  0, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 192, 128, 128, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 128, 128, 128, 128, 128,   0, -		128, 224, 224, 224, 224, 224, 224, 224, -		224, 224, 224, 224, 224, 224, 224, 224, -		224, 224, 224, 224, 224, 224, 224, 224, -		224, 224, 224, 128, 128, 128, 128, 128, -		128, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 128, 128, 128, 128, 128, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= '>') {-		if (yych <= '!') {-			if (yych >= '!') goto yy226;-		} else {-			if (yych == '/') goto yy227;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '?') goto yy228;-			if (yych >= 'A') goto yy229;-		} else {-			if (yych <= '`') goto yy224;-			if (yych <= 'z') goto yy229;-		}-	}-yy224:-	++p;-yy225:-	{ return 0; }-yy226:-	yych = *(marker = ++p);-	if (yybm[256+yych] & 32) {-		goto yy232;-	}-	if (yych == '-') goto yy230;-	if (yych <= '@') goto yy225;-	if (yych <= '[') goto yy234;-	goto yy225;-yy227:-	yych = *(marker = ++p);-	if (yych <= '@') goto yy225;-	if (yych <= 'Z') goto yy235;-	if (yych <= '`') goto yy225;-	if (yych <= 'z') goto yy235;-	goto yy225;-yy228:-	yych = *(marker = ++p);-	if (yych <= 0x00) goto yy225;-	if (yych <= 0x7F) goto yy238;-	if (yych <= 0xC1) goto yy225;-	if (yych <= 0xF4) goto yy238;-	goto yy225;-yy229:-	yych = *(marker = ++p);-	if (yych <= '.') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy225;-			if (yych <= '\r') goto yy250;-			goto yy225;-		} else {-			if (yych <= ' ') goto yy250;-			if (yych == '-') goto yy250;-			goto yy225;-		}-	} else {-		if (yych <= '@') {-			if (yych <= '9') goto yy250;-			if (yych == '>') goto yy250;-			goto yy225;-		} else {-			if (yych <= 'Z') goto yy250;-			if (yych <= '`') goto yy225;-			if (yych <= 'z') goto yy250;-			goto yy225;-		}-	}-yy230:-	yych = *++p;-	if (yych == '-') goto yy254;-yy231:-	p = marker;-	goto yy225;-yy232:-	yych = *++p;-	if (yybm[256+yych] & 32) {-		goto yy232;-	}-	if (yych <= 0x08) goto yy231;-	if (yych <= '\r') goto yy255;-	if (yych == ' ') goto yy255;-	goto yy231;-yy234:-	yych = *++p;-	if (yych == 'C') goto yy257;-	if (yych == 'c') goto yy257;-	goto yy231;-yy235:-	yych = *++p;-	if (yybm[256+yych] & 64) {-		goto yy235;-	}-	if (yych <= 0x1F) {-		if (yych <= 0x08) goto yy231;-		if (yych <= '\r') goto yy258;-		goto yy231;-	} else {-		if (yych <= ' ') goto yy258;-		if (yych == '>') goto yy252;-		goto yy231;-	}-yy237:-	yych = *++p;-yy238:-	if (yybm[256+yych] & 128) {-		goto yy237;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych >= '@') goto yy231;-		} else {-			if (yych <= 0xDF) goto yy240;-			if (yych <= 0xE0) goto yy241;-			goto yy242;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy243;-			if (yych <= 0xEF) goto yy242;-			goto yy244;-		} else {-			if (yych <= 0xF3) goto yy245;-			if (yych <= 0xF4) goto yy246;-			goto yy231;-		}-	}-	yych = *++p;-	if (yych <= 0xE0) {-		if (yych <= '>') {-			if (yych <= 0x00) goto yy231;-			if (yych <= '=') goto yy237;-			goto yy252;-		} else {-			if (yych <= 0x7F) goto yy237;-			if (yych <= 0xC1) goto yy231;-			if (yych >= 0xE0) goto yy241;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy243;-			goto yy242;-		} else {-			if (yych <= 0xF0) goto yy244;-			if (yych <= 0xF3) goto yy245;-			if (yych <= 0xF4) goto yy246;-			goto yy231;-		}-	}-yy240:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy237;-	goto yy231;-yy241:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy240;-	goto yy231;-yy242:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy240;-	goto yy231;-yy243:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy240;-	goto yy231;-yy244:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy242;-	goto yy231;-yy245:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy242;-	goto yy231;-yy246:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy242;-	goto yy231;-yy247:-	yych = *++p;-	if (yybm[0+yych] & 1) {-		goto yy247;-	}-	if (yych <= '>') {-		if (yych <= '9') {-			if (yych == '/') goto yy251;-			goto yy231;-		} else {-			if (yych <= ':') goto yy260;-			if (yych <= '=') goto yy231;-			goto yy252;-		}-	} else {-		if (yych <= '^') {-			if (yych <= '@') goto yy231;-			if (yych <= 'Z') goto yy260;-			goto yy231;-		} else {-			if (yych == '`') goto yy231;-			if (yych <= 'z') goto yy260;-			goto yy231;-		}-	}-yy249:-	yych = *++p;-yy250:-	if (yybm[0+yych] & 1) {-		goto yy247;-	}-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych == '-') goto yy249;-			goto yy231;-		} else {-			if (yych <= '/') goto yy251;-			if (yych <= '9') goto yy249;-			goto yy231;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy252;-			if (yych <= '@') goto yy231;-			goto yy249;-		} else {-			if (yych <= '`') goto yy231;-			if (yych <= 'z') goto yy249;-			goto yy231;-		}-	}-yy251:-	yych = *++p;-	if (yych != '>') goto yy231;-yy252:-	++p;-	{ return (bufsize_t)(p - start); }-yy254:-	yych = *++p;-	if (yych == '-') goto yy264;-	if (yych == '>') goto yy231;-	goto yy263;-yy255:-	yych = *++p;-	if (yybm[0+yych] & 2) {-		goto yy255;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych <= '>') goto yy252;-			goto yy231;-		} else {-			if (yych <= 0xDF) goto yy272;-			if (yych <= 0xE0) goto yy273;-			goto yy274;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy275;-			if (yych <= 0xEF) goto yy274;-			goto yy276;-		} else {-			if (yych <= 0xF3) goto yy277;-			if (yych <= 0xF4) goto yy278;-			goto yy231;-		}-	}-yy257:-	yych = *++p;-	if (yych == 'D') goto yy279;-	if (yych == 'd') goto yy279;-	goto yy231;-yy258:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych <= 0x08) goto yy231;-		if (yych <= '\r') goto yy258;-		goto yy231;-	} else {-		if (yych <= ' ') goto yy258;-		if (yych == '>') goto yy252;-		goto yy231;-	}-yy260:-	yych = *++p;-	if (yybm[0+yych] & 4) {-		goto yy260;-	}-	if (yych <= ',') {-		if (yych <= '\r') {-			if (yych <= 0x08) goto yy231;-			goto yy280;-		} else {-			if (yych == ' ') goto yy280;-			goto yy231;-		}-	} else {-		if (yych <= '<') {-			if (yych <= '/') goto yy251;-			goto yy231;-		} else {-			if (yych <= '=') goto yy282;-			if (yych <= '>') goto yy252;-			goto yy231;-		}-	}-yy262:-	yych = *++p;-yy263:-	if (yybm[0+yych] & 8) {-		goto yy262;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych <= '-') goto yy284;-			goto yy231;-		} else {-			if (yych <= 0xDF) goto yy265;-			if (yych <= 0xE0) goto yy266;-			goto yy267;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy268;-			if (yych <= 0xEF) goto yy267;-			goto yy269;-		} else {-			if (yych <= 0xF3) goto yy270;-			if (yych <= 0xF4) goto yy271;-			goto yy231;-		}-	}-yy264:-	yych = *++p;-	if (yych == '-') goto yy251;-	if (yych == '>') goto yy231;-	goto yy263;-yy265:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy262;-	goto yy231;-yy266:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy265;-	goto yy231;-yy267:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy265;-	goto yy231;-yy268:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy265;-	goto yy231;-yy269:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy267;-	goto yy231;-yy270:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy267;-	goto yy231;-yy271:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy267;-	goto yy231;-yy272:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy255;-	goto yy231;-yy273:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy272;-	goto yy231;-yy274:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy272;-	goto yy231;-yy275:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy272;-	goto yy231;-yy276:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy274;-	goto yy231;-yy277:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy274;-	goto yy231;-yy278:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy274;-	goto yy231;-yy279:-	yych = *++p;-	if (yych == 'A') goto yy285;-	if (yych == 'a') goto yy285;-	goto yy231;-yy280:-	yych = *++p;-	if (yych <= '<') {-		if (yych <= ' ') {-			if (yych <= 0x08) goto yy231;-			if (yych <= '\r') goto yy280;-			if (yych <= 0x1F) goto yy231;-			goto yy280;-		} else {-			if (yych <= '/') {-				if (yych <= '.') goto yy231;-				goto yy251;-			} else {-				if (yych == ':') goto yy260;-				goto yy231;-			}-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '=') goto yy282;-			if (yych <= '>') goto yy252;-			if (yych <= '@') goto yy231;-			goto yy260;-		} else {-			if (yych <= '_') {-				if (yych <= '^') goto yy231;-				goto yy260;-			} else {-				if (yych <= '`') goto yy231;-				if (yych <= 'z') goto yy260;-				goto yy231;-			}-		}-	}-yy282:-	yych = *++p;-	if (yybm[0+yych] & 16) {-		goto yy286;-	}-	if (yych <= 0xE0) {-		if (yych <= '"') {-			if (yych <= 0x00) goto yy231;-			if (yych <= ' ') goto yy282;-			goto yy288;-		} else {-			if (yych <= '\'') goto yy290;-			if (yych <= 0xC1) goto yy231;-			if (yych <= 0xDF) goto yy292;-			goto yy293;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy295;-			goto yy294;-		} else {-			if (yych <= 0xF0) goto yy296;-			if (yych <= 0xF3) goto yy297;-			if (yych <= 0xF4) goto yy298;-			goto yy231;-		}-	}-yy284:-	yych = *++p;-	if (yybm[0+yych] & 8) {-		goto yy262;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych <= '-') goto yy251;-			goto yy231;-		} else {-			if (yych <= 0xDF) goto yy265;-			if (yych <= 0xE0) goto yy266;-			goto yy267;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy268;-			if (yych <= 0xEF) goto yy267;-			goto yy269;-		} else {-			if (yych <= 0xF3) goto yy270;-			if (yych <= 0xF4) goto yy271;-			goto yy231;-		}-	}-yy285:-	yych = *++p;-	if (yych == 'T') goto yy299;-	if (yych == 't') goto yy299;-	goto yy231;-yy286:-	yych = *++p;-	if (yybm[0+yych] & 16) {-		goto yy286;-	}-	if (yych <= 0xE0) {-		if (yych <= '=') {-			if (yych <= 0x00) goto yy231;-			if (yych <= ' ') goto yy247;-			goto yy231;-		} else {-			if (yych <= '>') goto yy252;-			if (yych <= 0xC1) goto yy231;-			if (yych <= 0xDF) goto yy292;-			goto yy293;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy295;-			goto yy294;-		} else {-			if (yych <= 0xF0) goto yy296;-			if (yych <= 0xF3) goto yy297;-			if (yych <= 0xF4) goto yy298;-			goto yy231;-		}-	}-yy288:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy288;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych <= '"') goto yy300;-			goto yy231;-		} else {-			if (yych <= 0xDF) goto yy301;-			if (yych <= 0xE0) goto yy302;-			goto yy303;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy304;-			if (yych <= 0xEF) goto yy303;-			goto yy305;-		} else {-			if (yych <= 0xF3) goto yy306;-			if (yych <= 0xF4) goto yy307;-			goto yy231;-		}-	}-yy290:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy290;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych <= '\'') goto yy300;-			goto yy231;-		} else {-			if (yych <= 0xDF) goto yy308;-			if (yych <= 0xE0) goto yy309;-			goto yy310;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy311;-			if (yych <= 0xEF) goto yy310;-			goto yy312;-		} else {-			if (yych <= 0xF3) goto yy313;-			if (yych <= 0xF4) goto yy314;-			goto yy231;-		}-	}-yy292:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy286;-	goto yy231;-yy293:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy292;-	goto yy231;-yy294:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy292;-	goto yy231;-yy295:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy292;-	goto yy231;-yy296:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy294;-	goto yy231;-yy297:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy294;-	goto yy231;-yy298:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy294;-	goto yy231;-yy299:-	yych = *++p;-	if (yych == 'A') goto yy315;-	if (yych == 'a') goto yy315;-	goto yy231;-yy300:-	yych = *++p;-	if (yybm[0+yych] & 1) {-		goto yy247;-	}-	if (yych == '/') goto yy251;-	if (yych == '>') goto yy252;-	goto yy231;-yy301:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy288;-	goto yy231;-yy302:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy301;-	goto yy231;-yy303:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy301;-	goto yy231;-yy304:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy301;-	goto yy231;-yy305:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy303;-	goto yy231;-yy306:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy303;-	goto yy231;-yy307:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy303;-	goto yy231;-yy308:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy290;-	goto yy231;-yy309:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy308;-	goto yy231;-yy310:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy308;-	goto yy231;-yy311:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy308;-	goto yy231;-yy312:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy310;-	goto yy231;-yy313:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy310;-	goto yy231;-yy314:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy310;-	goto yy231;-yy315:-	yych = *++p;-	if (yych != '[') goto yy231;-yy316:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy316;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych >= '^') goto yy231;-		} else {-			if (yych <= 0xDF) goto yy319;-			if (yych <= 0xE0) goto yy320;-			goto yy321;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy322;-			if (yych <= 0xEF) goto yy321;-			goto yy323;-		} else {-			if (yych <= 0xF3) goto yy324;-			if (yych <= 0xF4) goto yy325;-			goto yy231;-		}-	}-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy316;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy231;-			if (yych <= ']') goto yy326;-			goto yy231;-		} else {-			if (yych <= 0xDF) goto yy319;-			if (yych <= 0xE0) goto yy320;-			goto yy321;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy322;-			if (yych <= 0xEF) goto yy321;-			goto yy323;-		} else {-			if (yych <= 0xF3) goto yy324;-			if (yych <= 0xF4) goto yy325;-			goto yy231;-		}-	}-yy319:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy316;-	goto yy231;-yy320:-	yych = *++p;-	if (yych <= 0x9F) goto yy231;-	if (yych <= 0xBF) goto yy319;-	goto yy231;-yy321:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy319;-	goto yy231;-yy322:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x9F) goto yy319;-	goto yy231;-yy323:-	yych = *++p;-	if (yych <= 0x8F) goto yy231;-	if (yych <= 0xBF) goto yy321;-	goto yy231;-yy324:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0xBF) goto yy321;-	goto yy231;-yy325:-	yych = *++p;-	if (yych <= 0x7F) goto yy231;-	if (yych <= 0x8F) goto yy321;-	goto yy231;-yy326:-	yych = *++p;-	if (yych <= 0xE0) {-		if (yych <= '>') {-			if (yych <= 0x00) goto yy231;-			if (yych <= '=') goto yy316;-			goto yy252;-		} else {-			if (yych <= 0x7F) goto yy316;-			if (yych <= 0xC1) goto yy231;-			if (yych <= 0xDF) goto yy319;-			goto yy320;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy322;-			goto yy321;-		} else {-			if (yych <= 0xF0) goto yy323;-			if (yych <= 0xF3) goto yy324;-			if (yych <= 0xF4) goto yy325;-			goto yy231;-		}-	}-}--}--// Try to (liberally) match an HTML tag after first <, returning num of chars matched.-bufsize_t _scan_liberal_html_tag(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,   0,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64, 128,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= 0xE0) {-		if (yych <= '\n') {-			if (yych <= 0x00) goto yy329;-			if (yych <= '\t') goto yy331;-		} else {-			if (yych <= 0x7F) goto yy331;-			if (yych <= 0xC1) goto yy329;-			if (yych <= 0xDF) goto yy332;-			goto yy333;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy335;-			goto yy334;-		} else {-			if (yych <= 0xF0) goto yy336;-			if (yych <= 0xF3) goto yy337;-			if (yych <= 0xF4) goto yy338;-		}-	}-yy329:-	++p;-yy330:-	{ return 0; }-yy331:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy330;-		if (yych <= '\t') goto yy340;-		goto yy330;-	} else {-		if (yych <= 0x7F) goto yy340;-		if (yych <= 0xC1) goto yy330;-		if (yych <= 0xF4) goto yy340;-		goto yy330;-	}-yy332:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy330;-	if (yych <= 0xBF) goto yy339;-	goto yy330;-yy333:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x9F) goto yy330;-	if (yych <= 0xBF) goto yy345;-	goto yy330;-yy334:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy330;-	if (yych <= 0xBF) goto yy345;-	goto yy330;-yy335:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy330;-	if (yych <= 0x9F) goto yy345;-	goto yy330;-yy336:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x8F) goto yy330;-	if (yych <= 0xBF) goto yy347;-	goto yy330;-yy337:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy330;-	if (yych <= 0xBF) goto yy347;-	goto yy330;-yy338:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy330;-	if (yych <= 0x8F) goto yy347;-	goto yy330;-yy339:-	yych = *++p;-yy340:-	if (yybm[0+yych] & 64) {-		goto yy339;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy341;-			if (yych <= '>') goto yy342;-		} else {-			if (yych <= 0xDF) goto yy345;-			if (yych <= 0xE0) goto yy346;-			goto yy347;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy348;-			if (yych <= 0xEF) goto yy347;-			goto yy349;-		} else {-			if (yych <= 0xF3) goto yy350;-			if (yych <= 0xF4) goto yy351;-		}-	}-yy341:-	p = marker;-	if (yyaccept == 0) {-		goto yy330;-	} else {-		goto yy344;-	}-yy342:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy339;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy344;-			if (yych <= '>') goto yy342;-		} else {-			if (yych <= 0xDF) goto yy345;-			if (yych <= 0xE0) goto yy346;-			goto yy347;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy348;-			if (yych <= 0xEF) goto yy347;-			goto yy349;-		} else {-			if (yych <= 0xF3) goto yy350;-			if (yych <= 0xF4) goto yy351;-		}-	}-yy344:-	{ return (bufsize_t)(p - start); }-yy345:-	yych = *++p;-	if (yych <= 0x7F) goto yy341;-	if (yych <= 0xBF) goto yy339;-	goto yy341;-yy346:-	yych = *++p;-	if (yych <= 0x9F) goto yy341;-	if (yych <= 0xBF) goto yy345;-	goto yy341;-yy347:-	yych = *++p;-	if (yych <= 0x7F) goto yy341;-	if (yych <= 0xBF) goto yy345;-	goto yy341;-yy348:-	yych = *++p;-	if (yych <= 0x7F) goto yy341;-	if (yych <= 0x9F) goto yy345;-	goto yy341;-yy349:-	yych = *++p;-	if (yych <= 0x8F) goto yy341;-	if (yych <= 0xBF) goto yy347;-	goto yy341;-yy350:-	yych = *++p;-	if (yych <= 0x7F) goto yy341;-	if (yych <= 0xBF) goto yy347;-	goto yy341;-yy351:-	yych = *++p;-	if (yych <= 0x7F) goto yy341;-	if (yych <= 0x8F) goto yy347;-	goto yy341;-}--}--// Try to match an HTML block tag start line, returning-// an integer code for the type of block (1-6, matching the spec).-// #7 is handled by a separate function, below.-bufsize_t _scan_html_block_start(const unsigned char *p)-{-  const unsigned char *marker = NULL;--{-	unsigned char yych;-	yych = *p;-	if (yych == '<') goto yy356;-	++p;-yy355:-	{ return 0; }-yy356:-	yych = *(marker = ++p);-	switch (yych) {-	case '!':	goto yy357;-	case '/':	goto yy359;-	case '?':	goto yy360;-	case 'A':-	case 'a':	goto yy362;-	case 'B':-	case 'b':	goto yy363;-	case 'C':-	case 'c':	goto yy364;-	case 'D':-	case 'd':	goto yy365;-	case 'F':-	case 'f':	goto yy366;-	case 'H':-	case 'h':	goto yy367;-	case 'I':-	case 'i':	goto yy368;-	case 'L':-	case 'l':	goto yy369;-	case 'M':-	case 'm':	goto yy370;-	case 'N':-	case 'n':	goto yy371;-	case 'O':-	case 'o':	goto yy372;-	case 'P':-	case 'p':	goto yy373;-	case 'S':-	case 's':	goto yy374;-	case 'T':-	case 't':	goto yy375;-	case 'U':-	case 'u':	goto yy376;-	default:	goto yy355;-	}-yy357:-	yych = *++p;-	if (yych <= '@') {-		if (yych == '-') goto yy377;-	} else {-		if (yych <= 'Z') goto yy378;-		if (yych <= '[') goto yy380;-	}-yy358:-	p = marker;-	goto yy355;-yy359:-	yych = *++p;-	switch (yych) {-	case 'A':-	case 'a':	goto yy362;-	case 'B':-	case 'b':	goto yy363;-	case 'C':-	case 'c':	goto yy364;-	case 'D':-	case 'd':	goto yy365;-	case 'F':-	case 'f':	goto yy366;-	case 'H':-	case 'h':	goto yy367;-	case 'I':-	case 'i':	goto yy368;-	case 'L':-	case 'l':	goto yy369;-	case 'M':-	case 'm':	goto yy370;-	case 'N':-	case 'n':	goto yy371;-	case 'O':-	case 'o':	goto yy372;-	case 'P':-	case 'p':	goto yy381;-	case 'S':-	case 's':	goto yy382;-	case 'T':-	case 't':	goto yy375;-	case 'U':-	case 'u':	goto yy376;-	default:	goto yy358;-	}-yy360:-	++p;-	{ return 3; }-yy362:-	yych = *++p;-	if (yych <= 'S') {-		if (yych <= 'D') {-			if (yych <= 'C') goto yy358;-			goto yy383;-		} else {-			if (yych <= 'Q') goto yy358;-			if (yych <= 'R') goto yy384;-			goto yy385;-		}-	} else {-		if (yych <= 'q') {-			if (yych == 'd') goto yy383;-			goto yy358;-		} else {-			if (yych <= 'r') goto yy384;-			if (yych <= 's') goto yy385;-			goto yy358;-		}-	}-yy363:-	yych = *++p;-	if (yych <= 'O') {-		if (yych <= 'K') {-			if (yych == 'A') goto yy386;-			goto yy358;-		} else {-			if (yych <= 'L') goto yy387;-			if (yych <= 'N') goto yy358;-			goto yy388;-		}-	} else {-		if (yych <= 'k') {-			if (yych == 'a') goto yy386;-			goto yy358;-		} else {-			if (yych <= 'l') goto yy387;-			if (yych == 'o') goto yy388;-			goto yy358;-		}-	}-yy364:-	yych = *++p;-	if (yych <= 'O') {-		if (yych <= 'D') {-			if (yych == 'A') goto yy389;-			goto yy358;-		} else {-			if (yych <= 'E') goto yy390;-			if (yych <= 'N') goto yy358;-			goto yy391;-		}-	} else {-		if (yych <= 'd') {-			if (yych == 'a') goto yy389;-			goto yy358;-		} else {-			if (yych <= 'e') goto yy390;-			if (yych == 'o') goto yy391;-			goto yy358;-		}-	}-yy365:-	yych = *++p;-	switch (yych) {-	case 'D':-	case 'L':-	case 'T':-	case 'd':-	case 'l':-	case 't':	goto yy392;-	case 'E':-	case 'e':	goto yy393;-	case 'I':-	case 'i':	goto yy394;-	default:	goto yy358;-	}-yy366:-	yych = *++p;-	if (yych <= 'R') {-		if (yych <= 'N') {-			if (yych == 'I') goto yy395;-			goto yy358;-		} else {-			if (yych <= 'O') goto yy396;-			if (yych <= 'Q') goto yy358;-			goto yy397;-		}-	} else {-		if (yych <= 'n') {-			if (yych == 'i') goto yy395;-			goto yy358;-		} else {-			if (yych <= 'o') goto yy396;-			if (yych == 'r') goto yy397;-			goto yy358;-		}-	}-yy367:-	yych = *++p;-	if (yych <= 'S') {-		if (yych <= 'D') {-			if (yych <= '0') goto yy358;-			if (yych <= '6') goto yy392;-			goto yy358;-		} else {-			if (yych <= 'E') goto yy398;-			if (yych == 'R') goto yy392;-			goto yy358;-		}-	} else {-		if (yych <= 'q') {-			if (yych <= 'T') goto yy399;-			if (yych == 'e') goto yy398;-			goto yy358;-		} else {-			if (yych <= 'r') goto yy392;-			if (yych == 't') goto yy399;-			goto yy358;-		}-	}-yy368:-	yych = *++p;-	if (yych == 'F') goto yy400;-	if (yych == 'f') goto yy400;-	goto yy358;-yy369:-	yych = *++p;-	if (yych <= 'I') {-		if (yych == 'E') goto yy401;-		if (yych <= 'H') goto yy358;-		goto yy402;-	} else {-		if (yych <= 'e') {-			if (yych <= 'd') goto yy358;-			goto yy401;-		} else {-			if (yych == 'i') goto yy402;-			goto yy358;-		}-	}-yy370:-	yych = *++p;-	if (yych <= 'E') {-		if (yych == 'A') goto yy403;-		if (yych <= 'D') goto yy358;-		goto yy404;-	} else {-		if (yych <= 'a') {-			if (yych <= '`') goto yy358;-			goto yy403;-		} else {-			if (yych == 'e') goto yy404;-			goto yy358;-		}-	}-yy371:-	yych = *++p;-	if (yych <= 'O') {-		if (yych == 'A') goto yy405;-		if (yych <= 'N') goto yy358;-		goto yy406;-	} else {-		if (yych <= 'a') {-			if (yych <= '`') goto yy358;-			goto yy405;-		} else {-			if (yych == 'o') goto yy406;-			goto yy358;-		}-	}-yy372:-	yych = *++p;-	if (yych <= 'P') {-		if (yych == 'L') goto yy392;-		if (yych <= 'O') goto yy358;-		goto yy407;-	} else {-		if (yych <= 'l') {-			if (yych <= 'k') goto yy358;-			goto yy392;-		} else {-			if (yych == 'p') goto yy407;-			goto yy358;-		}-	}-yy373:-	yych = *++p;-	if (yych <= '>') {-		if (yych <= ' ') {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			if (yych <= 0x1F) goto yy358;-			goto yy408;-		} else {-			if (yych == '/') goto yy410;-			if (yych <= '=') goto yy358;-			goto yy408;-		}-	} else {-		if (yych <= 'R') {-			if (yych == 'A') goto yy411;-			if (yych <= 'Q') goto yy358;-			goto yy412;-		} else {-			if (yych <= 'a') {-				if (yych <= '`') goto yy358;-				goto yy411;-			} else {-				if (yych == 'r') goto yy412;-				goto yy358;-			}-		}-	}-yy374:-	yych = *++p;-	switch (yych) {-	case 'C':-	case 'c':	goto yy413;-	case 'E':-	case 'e':	goto yy414;-	case 'O':-	case 'o':	goto yy415;-	case 'T':-	case 't':	goto yy416;-	case 'U':-	case 'u':	goto yy417;-	default:	goto yy358;-	}-yy375:-	yych = *++p;-	switch (yych) {-	case 'A':-	case 'a':	goto yy418;-	case 'B':-	case 'b':	goto yy419;-	case 'D':-	case 'd':	goto yy392;-	case 'F':-	case 'f':	goto yy420;-	case 'H':-	case 'h':	goto yy421;-	case 'I':-	case 'i':	goto yy422;-	case 'R':-	case 'r':	goto yy423;-	default:	goto yy358;-	}-yy376:-	yych = *++p;-	if (yych == 'L') goto yy392;-	if (yych == 'l') goto yy392;-	goto yy358;-yy377:-	yych = *++p;-	if (yych == '-') goto yy424;-	goto yy358;-yy378:-	++p;-	{ return 4; }-yy380:-	yych = *++p;-	if (yych == 'C') goto yy426;-	if (yych == 'c') goto yy426;-	goto yy358;-yy381:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= '@') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'A') goto yy411;-			if (yych == 'a') goto yy411;-			goto yy358;-		}-	}-yy382:-	yych = *++p;-	if (yych <= 'U') {-		if (yych <= 'N') {-			if (yych == 'E') goto yy414;-			goto yy358;-		} else {-			if (yych <= 'O') goto yy415;-			if (yych <= 'T') goto yy358;-			goto yy417;-		}-	} else {-		if (yych <= 'n') {-			if (yych == 'e') goto yy414;-			goto yy358;-		} else {-			if (yych <= 'o') goto yy415;-			if (yych == 'u') goto yy417;-			goto yy358;-		}-	}-yy383:-	yych = *++p;-	if (yych == 'D') goto yy427;-	if (yych == 'd') goto yy427;-	goto yy358;-yy384:-	yych = *++p;-	if (yych == 'T') goto yy428;-	if (yych == 't') goto yy428;-	goto yy358;-yy385:-	yych = *++p;-	if (yych == 'I') goto yy429;-	if (yych == 'i') goto yy429;-	goto yy358;-yy386:-	yych = *++p;-	if (yych == 'S') goto yy430;-	if (yych == 's') goto yy430;-	goto yy358;-yy387:-	yych = *++p;-	if (yych == 'O') goto yy431;-	if (yych == 'o') goto yy431;-	goto yy358;-yy388:-	yych = *++p;-	if (yych == 'D') goto yy432;-	if (yych == 'd') goto yy432;-	goto yy358;-yy389:-	yych = *++p;-	if (yych == 'P') goto yy433;-	if (yych == 'p') goto yy433;-	goto yy358;-yy390:-	yych = *++p;-	if (yych == 'N') goto yy434;-	if (yych == 'n') goto yy434;-	goto yy358;-yy391:-	yych = *++p;-	if (yych == 'L') goto yy435;-	if (yych == 'l') goto yy435;-	goto yy358;-yy392:-	yych = *++p;-	if (yych <= ' ') {-		if (yych <= 0x08) goto yy358;-		if (yych <= '\r') goto yy408;-		if (yych <= 0x1F) goto yy358;-		goto yy408;-	} else {-		if (yych <= '/') {-			if (yych <= '.') goto yy358;-			goto yy410;-		} else {-			if (yych == '>') goto yy408;-			goto yy358;-		}-	}-yy393:-	yych = *++p;-	if (yych == 'T') goto yy436;-	if (yych == 't') goto yy436;-	goto yy358;-yy394:-	yych = *++p;-	if (yych <= 'V') {-		if (yych <= 'Q') {-			if (yych == 'A') goto yy437;-			goto yy358;-		} else {-			if (yych <= 'R') goto yy392;-			if (yych <= 'U') goto yy358;-			goto yy392;-		}-	} else {-		if (yych <= 'q') {-			if (yych == 'a') goto yy437;-			goto yy358;-		} else {-			if (yych <= 'r') goto yy392;-			if (yych == 'v') goto yy392;-			goto yy358;-		}-	}-yy395:-	yych = *++p;-	if (yych <= 'G') {-		if (yych == 'E') goto yy438;-		if (yych <= 'F') goto yy358;-		goto yy439;-	} else {-		if (yych <= 'e') {-			if (yych <= 'd') goto yy358;-			goto yy438;-		} else {-			if (yych == 'g') goto yy439;-			goto yy358;-		}-	}-yy396:-	yych = *++p;-	if (yych <= 'R') {-		if (yych == 'O') goto yy434;-		if (yych <= 'Q') goto yy358;-		goto yy440;-	} else {-		if (yych <= 'o') {-			if (yych <= 'n') goto yy358;-			goto yy434;-		} else {-			if (yych == 'r') goto yy440;-			goto yy358;-		}-	}-yy397:-	yych = *++p;-	if (yych == 'A') goto yy441;-	if (yych == 'a') goto yy441;-	goto yy358;-yy398:-	yych = *++p;-	if (yych == 'A') goto yy442;-	if (yych == 'a') goto yy442;-	goto yy358;-yy399:-	yych = *++p;-	if (yych == 'M') goto yy376;-	if (yych == 'm') goto yy376;-	goto yy358;-yy400:-	yych = *++p;-	if (yych == 'R') goto yy443;-	if (yych == 'r') goto yy443;-	goto yy358;-yy401:-	yych = *++p;-	if (yych == 'G') goto yy444;-	if (yych == 'g') goto yy444;-	goto yy358;-yy402:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'M') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'N') goto yy445;-			if (yych == 'n') goto yy445;-			goto yy358;-		}-	}-yy403:-	yych = *++p;-	if (yych == 'I') goto yy446;-	if (yych == 'i') goto yy446;-	goto yy358;-yy404:-	yych = *++p;-	if (yych == 'N') goto yy447;-	if (yych == 'n') goto yy447;-	goto yy358;-yy405:-	yych = *++p;-	if (yych == 'V') goto yy392;-	if (yych == 'v') goto yy392;-	goto yy358;-yy406:-	yych = *++p;-	if (yych == 'F') goto yy448;-	if (yych == 'f') goto yy448;-	goto yy358;-yy407:-	yych = *++p;-	if (yych == 'T') goto yy449;-	if (yych == 't') goto yy449;-	goto yy358;-yy408:-	++p;-	{ return 6; }-yy410:-	yych = *++p;-	if (yych == '>') goto yy408;-	goto yy358;-yy411:-	yych = *++p;-	if (yych == 'R') goto yy450;-	if (yych == 'r') goto yy450;-	goto yy358;-yy412:-	yych = *++p;-	if (yych == 'E') goto yy451;-	if (yych == 'e') goto yy451;-	goto yy358;-yy413:-	yych = *++p;-	if (yych == 'R') goto yy452;-	if (yych == 'r') goto yy452;-	goto yy358;-yy414:-	yych = *++p;-	if (yych == 'C') goto yy433;-	if (yych == 'c') goto yy433;-	goto yy358;-yy415:-	yych = *++p;-	if (yych == 'U') goto yy453;-	if (yych == 'u') goto yy453;-	goto yy358;-yy416:-	yych = *++p;-	if (yych == 'Y') goto yy454;-	if (yych == 'y') goto yy454;-	goto yy358;-yy417:-	yych = *++p;-	if (yych == 'M') goto yy455;-	if (yych == 'm') goto yy455;-	goto yy358;-yy418:-	yych = *++p;-	if (yych == 'B') goto yy456;-	if (yych == 'b') goto yy456;-	goto yy358;-yy419:-	yych = *++p;-	if (yych == 'O') goto yy388;-	if (yych == 'o') goto yy388;-	goto yy358;-yy420:-	yych = *++p;-	if (yych == 'O') goto yy457;-	if (yych == 'o') goto yy457;-	goto yy358;-yy421:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'D') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'E') goto yy458;-			if (yych == 'e') goto yy458;-			goto yy358;-		}-	}-yy422:-	yych = *++p;-	if (yych == 'T') goto yy456;-	if (yych == 't') goto yy456;-	goto yy358;-yy423:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= '@') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'A') goto yy459;-			if (yych == 'a') goto yy459;-			goto yy358;-		}-	}-yy424:-	++p;-	{ return 2; }-yy426:-	yych = *++p;-	if (yych == 'D') goto yy460;-	if (yych == 'd') goto yy460;-	goto yy358;-yy427:-	yych = *++p;-	if (yych == 'R') goto yy461;-	if (yych == 'r') goto yy461;-	goto yy358;-yy428:-	yych = *++p;-	if (yych == 'I') goto yy462;-	if (yych == 'i') goto yy462;-	goto yy358;-yy429:-	yych = *++p;-	if (yych == 'D') goto yy463;-	if (yych == 'd') goto yy463;-	goto yy358;-yy430:-	yych = *++p;-	if (yych == 'E') goto yy464;-	if (yych == 'e') goto yy464;-	goto yy358;-yy431:-	yych = *++p;-	if (yych == 'C') goto yy465;-	if (yych == 'c') goto yy465;-	goto yy358;-yy432:-	yych = *++p;-	if (yych == 'Y') goto yy392;-	if (yych == 'y') goto yy392;-	goto yy358;-yy433:-	yych = *++p;-	if (yych == 'T') goto yy466;-	if (yych == 't') goto yy466;-	goto yy358;-yy434:-	yych = *++p;-	if (yych == 'T') goto yy467;-	if (yych == 't') goto yy467;-	goto yy358;-yy435:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'F') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'G') goto yy468;-			if (yych == 'g') goto yy468;-			goto yy358;-		}-	}-yy436:-	yych = *++p;-	if (yych == 'A') goto yy469;-	if (yych == 'a') goto yy469;-	goto yy358;-yy437:-	yych = *++p;-	if (yych == 'L') goto yy470;-	if (yych == 'l') goto yy470;-	goto yy358;-yy438:-	yych = *++p;-	if (yych == 'L') goto yy471;-	if (yych == 'l') goto yy471;-	goto yy358;-yy439:-	yych = *++p;-	if (yych <= 'U') {-		if (yych == 'C') goto yy472;-		if (yych <= 'T') goto yy358;-		goto yy473;-	} else {-		if (yych <= 'c') {-			if (yych <= 'b') goto yy358;-			goto yy472;-		} else {-			if (yych == 'u') goto yy473;-			goto yy358;-		}-	}-yy440:-	yych = *++p;-	if (yych == 'M') goto yy392;-	if (yych == 'm') goto yy392;-	goto yy358;-yy441:-	yych = *++p;-	if (yych == 'M') goto yy474;-	if (yych == 'm') goto yy474;-	goto yy358;-yy442:-	yych = *++p;-	if (yych == 'D') goto yy475;-	if (yych == 'd') goto yy475;-	goto yy358;-yy443:-	yych = *++p;-	if (yych == 'A') goto yy476;-	if (yych == 'a') goto yy476;-	goto yy358;-yy444:-	yych = *++p;-	if (yych == 'E') goto yy477;-	if (yych == 'e') goto yy477;-	goto yy358;-yy445:-	yych = *++p;-	if (yych == 'K') goto yy392;-	if (yych == 'k') goto yy392;-	goto yy358;-yy446:-	yych = *++p;-	if (yych == 'N') goto yy392;-	if (yych == 'n') goto yy392;-	goto yy358;-yy447:-	yych = *++p;-	if (yych == 'U') goto yy478;-	if (yych == 'u') goto yy478;-	goto yy358;-yy448:-	yych = *++p;-	if (yych == 'R') goto yy479;-	if (yych == 'r') goto yy479;-	goto yy358;-yy449:-	yych = *++p;-	if (yych <= 'I') {-		if (yych == 'G') goto yy468;-		if (yych <= 'H') goto yy358;-		goto yy480;-	} else {-		if (yych <= 'g') {-			if (yych <= 'f') goto yy358;-			goto yy468;-		} else {-			if (yych == 'i') goto yy480;-			goto yy358;-		}-	}-yy450:-	yych = *++p;-	if (yych == 'A') goto yy440;-	if (yych == 'a') goto yy440;-	goto yy358;-yy451:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych <= 0x08) goto yy358;-		if (yych <= '\r') goto yy481;-		goto yy358;-	} else {-		if (yych <= ' ') goto yy481;-		if (yych == '>') goto yy481;-		goto yy358;-	}-yy452:-	yych = *++p;-	if (yych == 'I') goto yy483;-	if (yych == 'i') goto yy483;-	goto yy358;-yy453:-	yych = *++p;-	if (yych == 'R') goto yy484;-	if (yych == 'r') goto yy484;-	goto yy358;-yy454:-	yych = *++p;-	if (yych == 'L') goto yy412;-	if (yych == 'l') goto yy412;-	goto yy358;-yy455:-	yych = *++p;-	if (yych == 'M') goto yy485;-	if (yych == 'm') goto yy485;-	goto yy358;-yy456:-	yych = *++p;-	if (yych == 'L') goto yy463;-	if (yych == 'l') goto yy463;-	goto yy358;-yy457:-	yych = *++p;-	if (yych == 'O') goto yy486;-	if (yych == 'o') goto yy486;-	goto yy358;-yy458:-	yych = *++p;-	if (yych == 'A') goto yy487;-	if (yych == 'a') goto yy487;-	goto yy358;-yy459:-	yych = *++p;-	if (yych == 'C') goto yy445;-	if (yych == 'c') goto yy445;-	goto yy358;-yy460:-	yych = *++p;-	if (yych == 'A') goto yy488;-	if (yych == 'a') goto yy488;-	goto yy358;-yy461:-	yych = *++p;-	if (yych == 'E') goto yy489;-	if (yych == 'e') goto yy489;-	goto yy358;-yy462:-	yych = *++p;-	if (yych == 'C') goto yy456;-	if (yych == 'c') goto yy456;-	goto yy358;-yy463:-	yych = *++p;-	if (yych == 'E') goto yy392;-	if (yych == 'e') goto yy392;-	goto yy358;-yy464:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'E') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'F') goto yy490;-			if (yych == 'f') goto yy490;-			goto yy358;-		}-	}-yy465:-	yych = *++p;-	if (yych == 'K') goto yy491;-	if (yych == 'k') goto yy491;-	goto yy358;-yy466:-	yych = *++p;-	if (yych == 'I') goto yy480;-	if (yych == 'i') goto yy480;-	goto yy358;-yy467:-	yych = *++p;-	if (yych == 'E') goto yy492;-	if (yych == 'e') goto yy492;-	goto yy358;-yy468:-	yych = *++p;-	if (yych == 'R') goto yy493;-	if (yych == 'r') goto yy493;-	goto yy358;-yy469:-	yych = *++p;-	if (yych == 'I') goto yy494;-	if (yych == 'i') goto yy494;-	goto yy358;-yy470:-	yych = *++p;-	if (yych == 'O') goto yy495;-	if (yych == 'o') goto yy495;-	goto yy358;-yy471:-	yych = *++p;-	if (yych == 'D') goto yy496;-	if (yych == 'd') goto yy496;-	goto yy358;-yy472:-	yych = *++p;-	if (yych == 'A') goto yy389;-	if (yych == 'a') goto yy389;-	goto yy358;-yy473:-	yych = *++p;-	if (yych == 'R') goto yy463;-	if (yych == 'r') goto yy463;-	goto yy358;-yy474:-	yych = *++p;-	if (yych == 'E') goto yy497;-	if (yych == 'e') goto yy497;-	goto yy358;-yy475:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'D') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'E') goto yy492;-			if (yych == 'e') goto yy492;-			goto yy358;-		}-	}-yy476:-	yych = *++p;-	if (yych == 'M') goto yy463;-	if (yych == 'm') goto yy463;-	goto yy358;-yy477:-	yych = *++p;-	if (yych == 'N') goto yy487;-	if (yych == 'n') goto yy487;-	goto yy358;-yy478:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'H') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'I') goto yy498;-			if (yych == 'i') goto yy498;-			goto yy358;-		}-	}-yy479:-	yych = *++p;-	if (yych == 'A') goto yy499;-	if (yych == 'a') goto yy499;-	goto yy358;-yy480:-	yych = *++p;-	if (yych == 'O') goto yy446;-	if (yych == 'o') goto yy446;-	goto yy358;-yy481:-	++p;-	{ return 1; }-yy483:-	yych = *++p;-	if (yych == 'P') goto yy500;-	if (yych == 'p') goto yy500;-	goto yy358;-yy484:-	yych = *++p;-	if (yych == 'C') goto yy463;-	if (yych == 'c') goto yy463;-	goto yy358;-yy485:-	yych = *++p;-	if (yych == 'A') goto yy501;-	if (yych == 'a') goto yy501;-	goto yy358;-yy486:-	yych = *++p;-	if (yych == 'T') goto yy392;-	if (yych == 't') goto yy392;-	goto yy358;-yy487:-	yych = *++p;-	if (yych == 'D') goto yy392;-	if (yych == 'd') goto yy392;-	goto yy358;-yy488:-	yych = *++p;-	if (yych == 'T') goto yy502;-	if (yych == 't') goto yy502;-	goto yy358;-yy489:-	yych = *++p;-	if (yych == 'S') goto yy503;-	if (yych == 's') goto yy503;-	goto yy358;-yy490:-	yych = *++p;-	if (yych == 'O') goto yy504;-	if (yych == 'o') goto yy504;-	goto yy358;-yy491:-	yych = *++p;-	if (yych == 'Q') goto yy505;-	if (yych == 'q') goto yy505;-	goto yy358;-yy492:-	yych = *++p;-	if (yych == 'R') goto yy392;-	if (yych == 'r') goto yy392;-	goto yy358;-yy493:-	yych = *++p;-	if (yych == 'O') goto yy506;-	if (yych == 'o') goto yy506;-	goto yy358;-yy494:-	yych = *++p;-	if (yych == 'L') goto yy503;-	if (yych == 'l') goto yy503;-	goto yy358;-yy495:-	yych = *++p;-	if (yych == 'G') goto yy392;-	if (yych == 'g') goto yy392;-	goto yy358;-yy496:-	yych = *++p;-	if (yych == 'S') goto yy507;-	if (yych == 's') goto yy507;-	goto yy358;-yy497:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy358;-			if (yych <= '\r') goto yy408;-			goto yy358;-		} else {-			if (yych <= ' ') goto yy408;-			if (yych <= '.') goto yy358;-			goto yy410;-		}-	} else {-		if (yych <= 'R') {-			if (yych == '>') goto yy408;-			goto yy358;-		} else {-			if (yych <= 'S') goto yy507;-			if (yych == 's') goto yy507;-			goto yy358;-		}-	}-yy498:-	yych = *++p;-	if (yych == 'T') goto yy508;-	if (yych == 't') goto yy508;-	goto yy358;-yy499:-	yych = *++p;-	if (yych == 'M') goto yy509;-	if (yych == 'm') goto yy509;-	goto yy358;-yy500:-	yych = *++p;-	if (yych == 'T') goto yy451;-	if (yych == 't') goto yy451;-	goto yy358;-yy501:-	yych = *++p;-	if (yych == 'R') goto yy432;-	if (yych == 'r') goto yy432;-	goto yy358;-yy502:-	yych = *++p;-	if (yych == 'A') goto yy510;-	if (yych == 'a') goto yy510;-	goto yy358;-yy503:-	yych = *++p;-	if (yych == 'S') goto yy392;-	if (yych == 's') goto yy392;-	goto yy358;-yy504:-	yych = *++p;-	if (yych == 'N') goto yy486;-	if (yych == 'n') goto yy486;-	goto yy358;-yy505:-	yych = *++p;-	if (yych == 'U') goto yy511;-	if (yych == 'u') goto yy511;-	goto yy358;-yy506:-	yych = *++p;-	if (yych == 'U') goto yy512;-	if (yych == 'u') goto yy512;-	goto yy358;-yy507:-	yych = *++p;-	if (yych == 'E') goto yy486;-	if (yych == 'e') goto yy486;-	goto yy358;-yy508:-	yych = *++p;-	if (yych == 'E') goto yy440;-	if (yych == 'e') goto yy440;-	goto yy358;-yy509:-	yych = *++p;-	if (yych == 'E') goto yy503;-	if (yych == 'e') goto yy503;-	goto yy358;-yy510:-	yych = *++p;-	if (yych == '[') goto yy513;-	goto yy358;-yy511:-	yych = *++p;-	if (yych == 'O') goto yy515;-	if (yych == 'o') goto yy515;-	goto yy358;-yy512:-	yych = *++p;-	if (yych == 'P') goto yy392;-	if (yych == 'p') goto yy392;-	goto yy358;-yy513:-	++p;-	{ return 5; }-yy515:-	yych = *++p;-	if (yych == 'T') goto yy463;-	if (yych == 't') goto yy463;-	goto yy358;-}--}--// Try to match an HTML block tag start line of type 7, returning-// 7 if successful, 0 if not.-bufsize_t _scan_html_block_start_7(const unsigned char *p)-{-  const unsigned char *marker = NULL;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0, 224, 224, 224, 224, 224, 224, 224, -		224, 198, 210, 194, 198, 194, 224, 224, -		224, 224, 224, 224, 224, 224, 224, 224, -		224, 224, 224, 224, 224, 224, 224, 224, -		198, 224, 128, 224, 224, 224, 224,  64, -		224, 224, 224, 224, 224, 233, 232, 224, -		233, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 232, 224, 192, 192, 192, 224, -		224, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 233, 224, 224, 224, 224, 232, -		192, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 233, 233, 233, 233, 233, 233, -		233, 233, 233, 224, 224, 224, 224, 224, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych == '<') goto yy520;-	++p;-yy519:-	{ return 0; }-yy520:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '@') {-		if (yych != '/') goto yy519;-	} else {-		if (yych <= 'Z') goto yy523;-		if (yych <= '`') goto yy519;-		if (yych <= 'z') goto yy523;-		goto yy519;-	}-	yych = *++p;-	if (yych <= '@') goto yy522;-	if (yych <= 'Z') goto yy525;-	if (yych <= '`') goto yy522;-	if (yych <= 'z') goto yy525;-yy522:-	p = marker;-	if (yyaccept == 0) {-		goto yy519;-	} else {-		goto yy538;-	}-yy523:-	yych = *++p;-	if (yybm[0+yych] & 2) {-		goto yy527;-	}-	if (yych <= '=') {-		if (yych <= '.') {-			if (yych == '-') goto yy523;-			goto yy522;-		} else {-			if (yych <= '/') goto yy529;-			if (yych <= '9') goto yy523;-			goto yy522;-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '>') goto yy530;-			if (yych <= '@') goto yy522;-			goto yy523;-		} else {-			if (yych <= '`') goto yy522;-			if (yych <= 'z') goto yy523;-			goto yy522;-		}-	}-yy525:-	yych = *++p;-	if (yych <= '/') {-		if (yych <= 0x1F) {-			if (yych <= 0x08) goto yy522;-			if (yych <= '\r') goto yy532;-			goto yy522;-		} else {-			if (yych <= ' ') goto yy532;-			if (yych == '-') goto yy525;-			goto yy522;-		}-	} else {-		if (yych <= '@') {-			if (yych <= '9') goto yy525;-			if (yych == '>') goto yy530;-			goto yy522;-		} else {-			if (yych <= 'Z') goto yy525;-			if (yych <= '`') goto yy522;-			if (yych <= 'z') goto yy525;-			goto yy522;-		}-	}-yy527:-	yych = *++p;-	if (yybm[0+yych] & 2) {-		goto yy527;-	}-	if (yych <= '>') {-		if (yych <= '9') {-			if (yych != '/') goto yy522;-		} else {-			if (yych <= ':') goto yy534;-			if (yych <= '=') goto yy522;-			goto yy530;-		}-	} else {-		if (yych <= '^') {-			if (yych <= '@') goto yy522;-			if (yych <= 'Z') goto yy534;-			goto yy522;-		} else {-			if (yych == '`') goto yy522;-			if (yych <= 'z') goto yy534;-			goto yy522;-		}-	}-yy529:-	yych = *++p;-	if (yych != '>') goto yy522;-yy530:-	yych = *++p;-	if (yybm[0+yych] & 4) {-		goto yy530;-	}-	if (yych <= 0x08) goto yy522;-	if (yych <= '\n') goto yy536;-	if (yych <= '\v') goto yy522;-	if (yych <= '\r') goto yy539;-	goto yy522;-yy532:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych <= 0x08) goto yy522;-		if (yych <= '\r') goto yy532;-		goto yy522;-	} else {-		if (yych <= ' ') goto yy532;-		if (yych == '>') goto yy530;-		goto yy522;-	}-yy534:-	yych = *++p;-	if (yybm[0+yych] & 8) {-		goto yy534;-	}-	if (yych <= ',') {-		if (yych <= '\r') {-			if (yych <= 0x08) goto yy522;-			goto yy540;-		} else {-			if (yych == ' ') goto yy540;-			goto yy522;-		}-	} else {-		if (yych <= '<') {-			if (yych <= '/') goto yy529;-			goto yy522;-		} else {-			if (yych <= '=') goto yy542;-			if (yych <= '>') goto yy530;-			goto yy522;-		}-	}-yy536:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 4) {-		goto yy530;-	}-	if (yych <= 0x08) goto yy538;-	if (yych <= '\n') goto yy536;-	if (yych <= '\v') goto yy538;-	if (yych <= '\r') goto yy539;-yy538:-	{ return 7; }-yy539:-	++p;-	goto yy538;-yy540:-	yych = *++p;-	if (yych <= '<') {-		if (yych <= ' ') {-			if (yych <= 0x08) goto yy522;-			if (yych <= '\r') goto yy540;-			if (yych <= 0x1F) goto yy522;-			goto yy540;-		} else {-			if (yych <= '/') {-				if (yych <= '.') goto yy522;-				goto yy529;-			} else {-				if (yych == ':') goto yy534;-				goto yy522;-			}-		}-	} else {-		if (yych <= 'Z') {-			if (yych <= '=') goto yy542;-			if (yych <= '>') goto yy530;-			if (yych <= '@') goto yy522;-			goto yy534;-		} else {-			if (yych <= '_') {-				if (yych <= '^') goto yy522;-				goto yy534;-			} else {-				if (yych <= '`') goto yy522;-				if (yych <= 'z') goto yy534;-				goto yy522;-			}-		}-	}-yy542:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy544;-	}-	if (yych <= 0xE0) {-		if (yych <= '"') {-			if (yych <= 0x00) goto yy522;-			if (yych <= ' ') goto yy542;-			goto yy546;-		} else {-			if (yych <= '\'') goto yy548;-			if (yych <= 0xC1) goto yy522;-			if (yych <= 0xDF) goto yy550;-			goto yy551;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy553;-			goto yy552;-		} else {-			if (yych <= 0xF0) goto yy554;-			if (yych <= 0xF3) goto yy555;-			if (yych <= 0xF4) goto yy556;-			goto yy522;-		}-	}-yy544:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy544;-	}-	if (yych <= 0xE0) {-		if (yych <= '=') {-			if (yych <= 0x00) goto yy522;-			if (yych <= ' ') goto yy527;-			goto yy522;-		} else {-			if (yych <= '>') goto yy530;-			if (yych <= 0xC1) goto yy522;-			if (yych <= 0xDF) goto yy550;-			goto yy551;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy553;-			goto yy552;-		} else {-			if (yych <= 0xF0) goto yy554;-			if (yych <= 0xF3) goto yy555;-			if (yych <= 0xF4) goto yy556;-			goto yy522;-		}-	}-yy546:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy546;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy522;-			if (yych <= '"') goto yy557;-			goto yy522;-		} else {-			if (yych <= 0xDF) goto yy558;-			if (yych <= 0xE0) goto yy559;-			goto yy560;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy561;-			if (yych <= 0xEF) goto yy560;-			goto yy562;-		} else {-			if (yych <= 0xF3) goto yy563;-			if (yych <= 0xF4) goto yy564;-			goto yy522;-		}-	}-yy548:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy548;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy522;-			if (yych <= '\'') goto yy557;-			goto yy522;-		} else {-			if (yych <= 0xDF) goto yy565;-			if (yych <= 0xE0) goto yy566;-			goto yy567;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy568;-			if (yych <= 0xEF) goto yy567;-			goto yy569;-		} else {-			if (yych <= 0xF3) goto yy570;-			if (yych <= 0xF4) goto yy571;-			goto yy522;-		}-	}-yy550:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy544;-	goto yy522;-yy551:-	yych = *++p;-	if (yych <= 0x9F) goto yy522;-	if (yych <= 0xBF) goto yy550;-	goto yy522;-yy552:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy550;-	goto yy522;-yy553:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0x9F) goto yy550;-	goto yy522;-yy554:-	yych = *++p;-	if (yych <= 0x8F) goto yy522;-	if (yych <= 0xBF) goto yy552;-	goto yy522;-yy555:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy552;-	goto yy522;-yy556:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0x8F) goto yy552;-	goto yy522;-yy557:-	yych = *++p;-	if (yybm[0+yych] & 2) {-		goto yy527;-	}-	if (yych == '/') goto yy529;-	if (yych == '>') goto yy530;-	goto yy522;-yy558:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy546;-	goto yy522;-yy559:-	yych = *++p;-	if (yych <= 0x9F) goto yy522;-	if (yych <= 0xBF) goto yy558;-	goto yy522;-yy560:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy558;-	goto yy522;-yy561:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0x9F) goto yy558;-	goto yy522;-yy562:-	yych = *++p;-	if (yych <= 0x8F) goto yy522;-	if (yych <= 0xBF) goto yy560;-	goto yy522;-yy563:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy560;-	goto yy522;-yy564:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0x8F) goto yy560;-	goto yy522;-yy565:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy548;-	goto yy522;-yy566:-	yych = *++p;-	if (yych <= 0x9F) goto yy522;-	if (yych <= 0xBF) goto yy565;-	goto yy522;-yy567:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy565;-	goto yy522;-yy568:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0x9F) goto yy565;-	goto yy522;-yy569:-	yych = *++p;-	if (yych <= 0x8F) goto yy522;-	if (yych <= 0xBF) goto yy567;-	goto yy522;-yy570:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0xBF) goto yy567;-	goto yy522;-yy571:-	yych = *++p;-	if (yych <= 0x7F) goto yy522;-	if (yych <= 0x8F) goto yy567;-	goto yy522;-}--}--// Try to match an HTML block end line of type 1-bufsize_t _scan_html_block_end_1(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,   0,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64, 128,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= 0xDF) {-		if (yych <= ';') {-			if (yych <= 0x00) goto yy574;-			if (yych != '\n') goto yy576;-		} else {-			if (yych <= '<') goto yy577;-			if (yych <= 0x7F) goto yy576;-			if (yych >= 0xC2) goto yy578;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy579;-			if (yych == 0xED) goto yy581;-			goto yy580;-		} else {-			if (yych <= 0xF0) goto yy582;-			if (yych <= 0xF3) goto yy583;-			if (yych <= 0xF4) goto yy584;-		}-	}-yy574:-	++p;-yy575:-	{ return 0; }-yy576:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy575;-		if (yych <= '\t') goto yy586;-		goto yy575;-	} else {-		if (yych <= 0x7F) goto yy586;-		if (yych <= 0xC1) goto yy575;-		if (yych <= 0xF4) goto yy586;-		goto yy575;-	}-yy577:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '.') {-		if (yych <= 0x00) goto yy575;-		if (yych == '\n') goto yy575;-		goto yy586;-	} else {-		if (yych <= 0x7F) {-			if (yych <= '/') goto yy597;-			goto yy586;-		} else {-			if (yych <= 0xC1) goto yy575;-			if (yych <= 0xF4) goto yy586;-			goto yy575;-		}-	}-yy578:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy575;-	if (yych <= 0xBF) goto yy585;-	goto yy575;-yy579:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x9F) goto yy575;-	if (yych <= 0xBF) goto yy590;-	goto yy575;-yy580:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy575;-	if (yych <= 0xBF) goto yy590;-	goto yy575;-yy581:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy575;-	if (yych <= 0x9F) goto yy590;-	goto yy575;-yy582:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x8F) goto yy575;-	if (yych <= 0xBF) goto yy592;-	goto yy575;-yy583:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy575;-	if (yych <= 0xBF) goto yy592;-	goto yy575;-yy584:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy575;-	if (yych <= 0x8F) goto yy592;-	goto yy575;-yy585:-	yych = *++p;-yy586:-	if (yybm[0+yych] & 64) {-		goto yy585;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy587;-			if (yych <= '<') goto yy588;-		} else {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			goto yy592;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy593;-			if (yych <= 0xEF) goto yy592;-			goto yy594;-		} else {-			if (yych <= 0xF3) goto yy595;-			if (yych <= 0xF4) goto yy596;-		}-	}-yy587:-	p = marker;-	if (yyaccept == 0) {-		goto yy575;-	} else {-		goto yy607;-	}-yy588:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xDF) {-		if (yych <= '.') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= '/') goto yy597;-			if (yych <= 0x7F) goto yy585;-			if (yych <= 0xC1) goto yy587;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy591;-			if (yych == 0xED) goto yy593;-			goto yy592;-		} else {-			if (yych <= 0xF0) goto yy594;-			if (yych <= 0xF3) goto yy595;-			if (yych <= 0xF4) goto yy596;-			goto yy587;-		}-	}-yy590:-	yych = *++p;-	if (yych <= 0x7F) goto yy587;-	if (yych <= 0xBF) goto yy585;-	goto yy587;-yy591:-	yych = *++p;-	if (yych <= 0x9F) goto yy587;-	if (yych <= 0xBF) goto yy590;-	goto yy587;-yy592:-	yych = *++p;-	if (yych <= 0x7F) goto yy587;-	if (yych <= 0xBF) goto yy590;-	goto yy587;-yy593:-	yych = *++p;-	if (yych <= 0x7F) goto yy587;-	if (yych <= 0x9F) goto yy590;-	goto yy587;-yy594:-	yych = *++p;-	if (yych <= 0x8F) goto yy587;-	if (yych <= 0xBF) goto yy592;-	goto yy587;-yy595:-	yych = *++p;-	if (yych <= 0x7F) goto yy587;-	if (yych <= 0xBF) goto yy592;-	goto yy587;-yy596:-	yych = *++p;-	if (yych <= 0x7F) goto yy587;-	if (yych <= 0x8F) goto yy592;-	goto yy587;-yy597:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 's') {-		if (yych <= 'P') {-			if (yych <= '\t') {-				if (yych <= 0x00) goto yy587;-				goto yy585;-			} else {-				if (yych <= '\n') goto yy587;-				if (yych <= 'O') goto yy585;-			}-		} else {-			if (yych <= 'o') {-				if (yych == 'S') goto yy599;-				goto yy585;-			} else {-				if (yych <= 'p') goto yy598;-				if (yych <= 'r') goto yy585;-				goto yy599;-			}-		}-	} else {-		if (yych <= 0xEC) {-			if (yych <= 0xC1) {-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			} else {-				if (yych <= 0xDF) goto yy590;-				if (yych <= 0xE0) goto yy591;-				goto yy592;-			}-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xED) goto yy593;-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy598:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'Q') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'q') {-				if (yych <= 'R') goto yy600;-				goto yy585;-			} else {-				if (yych <= 'r') goto yy600;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy599:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 't') {-		if (yych <= 'C') {-			if (yych <= '\t') {-				if (yych <= 0x00) goto yy587;-				goto yy585;-			} else {-				if (yych <= '\n') goto yy587;-				if (yych <= 'B') goto yy585;-				goto yy601;-			}-		} else {-			if (yych <= 'b') {-				if (yych == 'T') goto yy602;-				goto yy585;-			} else {-				if (yych <= 'c') goto yy601;-				if (yych <= 's') goto yy585;-				goto yy602;-			}-		}-	} else {-		if (yych <= 0xEC) {-			if (yych <= 0xC1) {-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			} else {-				if (yych <= 0xDF) goto yy590;-				if (yych <= 0xE0) goto yy591;-				goto yy592;-			}-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xED) goto yy593;-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy600:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'D') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'd') {-				if (yych <= 'E') goto yy603;-				goto yy585;-			} else {-				if (yych <= 'e') goto yy603;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy601:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'Q') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'q') {-				if (yych <= 'R') goto yy604;-				goto yy585;-			} else {-				if (yych <= 'r') goto yy604;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy602:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'X') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'x') {-				if (yych <= 'Y') goto yy605;-				goto yy585;-			} else {-				if (yych <= 'y') goto yy605;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy603:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xDF) {-		if (yych <= '=') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= '>') goto yy606;-			if (yych <= 0x7F) goto yy585;-			if (yych <= 0xC1) goto yy587;-			goto yy590;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy591;-			if (yych == 0xED) goto yy593;-			goto yy592;-		} else {-			if (yych <= 0xF0) goto yy594;-			if (yych <= 0xF3) goto yy595;-			if (yych <= 0xF4) goto yy596;-			goto yy587;-		}-	}-yy604:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'H') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'h') {-				if (yych <= 'I') goto yy608;-				goto yy585;-			} else {-				if (yych <= 'i') goto yy608;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy605:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'K') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'k') {-				if (yych <= 'L') goto yy600;-				goto yy585;-			} else {-				if (yych <= 'l') goto yy600;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy606:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy585;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy607;-			if (yych <= '<') goto yy588;-		} else {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			goto yy592;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy593;-			if (yych <= 0xEF) goto yy592;-			goto yy594;-		} else {-			if (yych <= 0xF3) goto yy595;-			if (yych <= 0xF4) goto yy596;-		}-	}-yy607:-	{ return (bufsize_t)(p - start); }-yy608:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'O') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 'o') {-				if (yych >= 'Q') goto yy585;-			} else {-				if (yych <= 'p') goto yy609;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-yy609:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy588;-	}-	if (yych <= 0xC1) {-		if (yych <= 'S') {-			if (yych <= 0x00) goto yy587;-			if (yych == '\n') goto yy587;-			goto yy585;-		} else {-			if (yych <= 's') {-				if (yych <= 'T') goto yy603;-				goto yy585;-			} else {-				if (yych <= 't') goto yy603;-				if (yych <= 0x7F) goto yy585;-				goto yy587;-			}-		}-	} else {-		if (yych <= 0xED) {-			if (yych <= 0xDF) goto yy590;-			if (yych <= 0xE0) goto yy591;-			if (yych <= 0xEC) goto yy592;-			goto yy593;-		} else {-			if (yych <= 0xF0) {-				if (yych <= 0xEF) goto yy592;-				goto yy594;-			} else {-				if (yych <= 0xF3) goto yy595;-				if (yych <= 0xF4) goto yy596;-				goto yy587;-			}-		}-	}-}--}--// Try to match an HTML block end line of type 2-bufsize_t _scan_html_block_end_2(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,   0,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64, 128,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= 0xDF) {-		if (yych <= ',') {-			if (yych <= 0x00) goto yy612;-			if (yych != '\n') goto yy614;-		} else {-			if (yych <= '-') goto yy615;-			if (yych <= 0x7F) goto yy614;-			if (yych >= 0xC2) goto yy616;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy617;-			if (yych == 0xED) goto yy619;-			goto yy618;-		} else {-			if (yych <= 0xF0) goto yy620;-			if (yych <= 0xF3) goto yy621;-			if (yych <= 0xF4) goto yy622;-		}-	}-yy612:-	++p;-yy613:-	{ return 0; }-yy614:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy613;-		if (yych <= '\t') goto yy624;-		goto yy613;-	} else {-		if (yych <= 0x7F) goto yy624;-		if (yych <= 0xC1) goto yy613;-		if (yych <= 0xF4) goto yy624;-		goto yy613;-	}-yy615:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 128) {-		goto yy634;-	}-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy613;-		if (yych <= '\t') goto yy624;-		goto yy613;-	} else {-		if (yych <= 0x7F) goto yy624;-		if (yych <= 0xC1) goto yy613;-		if (yych <= 0xF4) goto yy624;-		goto yy613;-	}-yy616:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy613;-	if (yych <= 0xBF) goto yy623;-	goto yy613;-yy617:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x9F) goto yy613;-	if (yych <= 0xBF) goto yy627;-	goto yy613;-yy618:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy613;-	if (yych <= 0xBF) goto yy627;-	goto yy613;-yy619:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy613;-	if (yych <= 0x9F) goto yy627;-	goto yy613;-yy620:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x8F) goto yy613;-	if (yych <= 0xBF) goto yy629;-	goto yy613;-yy621:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy613;-	if (yych <= 0xBF) goto yy629;-	goto yy613;-yy622:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy613;-	if (yych <= 0x8F) goto yy629;-	goto yy613;-yy623:-	yych = *++p;-yy624:-	if (yybm[0+yych] & 64) {-		goto yy623;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy625;-			if (yych <= '-') goto yy626;-		} else {-			if (yych <= 0xDF) goto yy627;-			if (yych <= 0xE0) goto yy628;-			goto yy629;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy630;-			if (yych <= 0xEF) goto yy629;-			goto yy631;-		} else {-			if (yych <= 0xF3) goto yy632;-			if (yych <= 0xF4) goto yy633;-		}-	}-yy625:-	p = marker;-	if (yyaccept == 0) {-		goto yy613;-	} else {-		goto yy637;-	}-yy626:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy623;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy625;-			if (yych <= '-') goto yy634;-			goto yy625;-		} else {-			if (yych <= 0xDF) goto yy627;-			if (yych <= 0xE0) goto yy628;-			goto yy629;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy630;-			if (yych <= 0xEF) goto yy629;-			goto yy631;-		} else {-			if (yych <= 0xF3) goto yy632;-			if (yych <= 0xF4) goto yy633;-			goto yy625;-		}-	}-yy627:-	yych = *++p;-	if (yych <= 0x7F) goto yy625;-	if (yych <= 0xBF) goto yy623;-	goto yy625;-yy628:-	yych = *++p;-	if (yych <= 0x9F) goto yy625;-	if (yych <= 0xBF) goto yy627;-	goto yy625;-yy629:-	yych = *++p;-	if (yych <= 0x7F) goto yy625;-	if (yych <= 0xBF) goto yy627;-	goto yy625;-yy630:-	yych = *++p;-	if (yych <= 0x7F) goto yy625;-	if (yych <= 0x9F) goto yy627;-	goto yy625;-yy631:-	yych = *++p;-	if (yych <= 0x8F) goto yy625;-	if (yych <= 0xBF) goto yy629;-	goto yy625;-yy632:-	yych = *++p;-	if (yych <= 0x7F) goto yy625;-	if (yych <= 0xBF) goto yy629;-	goto yy625;-yy633:-	yych = *++p;-	if (yych <= 0x7F) goto yy625;-	if (yych <= 0x8F) goto yy629;-	goto yy625;-yy634:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy634;-	}-	if (yych <= 0xDF) {-		if (yych <= '=') {-			if (yych <= 0x00) goto yy625;-			if (yych == '\n') goto yy625;-			goto yy623;-		} else {-			if (yych <= '>') goto yy636;-			if (yych <= 0x7F) goto yy623;-			if (yych <= 0xC1) goto yy625;-			goto yy627;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy628;-			if (yych == 0xED) goto yy630;-			goto yy629;-		} else {-			if (yych <= 0xF0) goto yy631;-			if (yych <= 0xF3) goto yy632;-			if (yych <= 0xF4) goto yy633;-			goto yy625;-		}-	}-yy636:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy623;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy637;-			if (yych <= '-') goto yy626;-		} else {-			if (yych <= 0xDF) goto yy627;-			if (yych <= 0xE0) goto yy628;-			goto yy629;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy630;-			if (yych <= 0xEF) goto yy629;-			goto yy631;-		} else {-			if (yych <= 0xF3) goto yy632;-			if (yych <= 0xF4) goto yy633;-		}-	}-yy637:-	{ return (bufsize_t)(p - start); }-}--}--// Try to match an HTML block end line of type 3-bufsize_t _scan_html_block_end_3(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,   0,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64, 128, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= 0xDF) {-		if (yych <= '>') {-			if (yych <= 0x00) goto yy640;-			if (yych != '\n') goto yy642;-		} else {-			if (yych <= '?') goto yy643;-			if (yych <= 0x7F) goto yy642;-			if (yych >= 0xC2) goto yy644;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy645;-			if (yych == 0xED) goto yy647;-			goto yy646;-		} else {-			if (yych <= 0xF0) goto yy648;-			if (yych <= 0xF3) goto yy649;-			if (yych <= 0xF4) goto yy650;-		}-	}-yy640:-	++p;-yy641:-	{ return 0; }-yy642:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy641;-		if (yych <= '\t') goto yy652;-		goto yy641;-	} else {-		if (yych <= 0x7F) goto yy652;-		if (yych <= 0xC1) goto yy641;-		if (yych <= 0xF4) goto yy652;-		goto yy641;-	}-yy643:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '=') {-		if (yych <= 0x00) goto yy641;-		if (yych == '\n') goto yy641;-		goto yy652;-	} else {-		if (yych <= 0x7F) {-			if (yych <= '>') goto yy663;-			goto yy652;-		} else {-			if (yych <= 0xC1) goto yy641;-			if (yych <= 0xF4) goto yy652;-			goto yy641;-		}-	}-yy644:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy641;-	if (yych <= 0xBF) goto yy651;-	goto yy641;-yy645:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x9F) goto yy641;-	if (yych <= 0xBF) goto yy656;-	goto yy641;-yy646:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy641;-	if (yych <= 0xBF) goto yy656;-	goto yy641;-yy647:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy641;-	if (yych <= 0x9F) goto yy656;-	goto yy641;-yy648:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x8F) goto yy641;-	if (yych <= 0xBF) goto yy658;-	goto yy641;-yy649:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy641;-	if (yych <= 0xBF) goto yy658;-	goto yy641;-yy650:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy641;-	if (yych <= 0x8F) goto yy658;-	goto yy641;-yy651:-	yych = *++p;-yy652:-	if (yybm[0+yych] & 64) {-		goto yy651;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy653;-			if (yych <= '?') goto yy654;-		} else {-			if (yych <= 0xDF) goto yy656;-			if (yych <= 0xE0) goto yy657;-			goto yy658;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy659;-			if (yych <= 0xEF) goto yy658;-			goto yy660;-		} else {-			if (yych <= 0xF3) goto yy661;-			if (yych <= 0xF4) goto yy662;-		}-	}-yy653:-	p = marker;-	if (yyaccept == 0) {-		goto yy641;-	} else {-		goto yy664;-	}-yy654:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy654;-	}-	if (yych <= 0xDF) {-		if (yych <= '=') {-			if (yych <= 0x00) goto yy653;-			if (yych == '\n') goto yy653;-			goto yy651;-		} else {-			if (yych <= '>') goto yy663;-			if (yych <= 0x7F) goto yy651;-			if (yych <= 0xC1) goto yy653;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy657;-			if (yych == 0xED) goto yy659;-			goto yy658;-		} else {-			if (yych <= 0xF0) goto yy660;-			if (yych <= 0xF3) goto yy661;-			if (yych <= 0xF4) goto yy662;-			goto yy653;-		}-	}-yy656:-	yych = *++p;-	if (yych <= 0x7F) goto yy653;-	if (yych <= 0xBF) goto yy651;-	goto yy653;-yy657:-	yych = *++p;-	if (yych <= 0x9F) goto yy653;-	if (yych <= 0xBF) goto yy656;-	goto yy653;-yy658:-	yych = *++p;-	if (yych <= 0x7F) goto yy653;-	if (yych <= 0xBF) goto yy656;-	goto yy653;-yy659:-	yych = *++p;-	if (yych <= 0x7F) goto yy653;-	if (yych <= 0x9F) goto yy656;-	goto yy653;-yy660:-	yych = *++p;-	if (yych <= 0x8F) goto yy653;-	if (yych <= 0xBF) goto yy658;-	goto yy653;-yy661:-	yych = *++p;-	if (yych <= 0x7F) goto yy653;-	if (yych <= 0xBF) goto yy658;-	goto yy653;-yy662:-	yych = *++p;-	if (yych <= 0x7F) goto yy653;-	if (yych <= 0x8F) goto yy658;-	goto yy653;-yy663:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy651;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy664;-			if (yych <= '?') goto yy654;-		} else {-			if (yych <= 0xDF) goto yy656;-			if (yych <= 0xE0) goto yy657;-			goto yy658;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy659;-			if (yych <= 0xEF) goto yy658;-			goto yy660;-		} else {-			if (yych <= 0xF3) goto yy661;-			if (yych <= 0xF4) goto yy662;-		}-	}-yy664:-	{ return (bufsize_t)(p - start); }-}--}--// Try to match an HTML block end line of type 4-bufsize_t _scan_html_block_end_4(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0, 128, 128, 128, 128, 128, 128, 128, -		128, 128,   0, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128,  64, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		128, 128, 128, 128, 128, 128, 128, 128, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yybm[0+yych] & 64) {-		goto yy670;-	}-	if (yych <= 0xE0) {-		if (yych <= '\n') {-			if (yych <= 0x00) goto yy667;-			if (yych <= '\t') goto yy669;-		} else {-			if (yych <= 0x7F) goto yy669;-			if (yych <= 0xC1) goto yy667;-			if (yych <= 0xDF) goto yy673;-			goto yy674;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy676;-			goto yy675;-		} else {-			if (yych <= 0xF0) goto yy677;-			if (yych <= 0xF3) goto yy678;-			if (yych <= 0xF4) goto yy679;-		}-	}-yy667:-	++p;-yy668:-	{ return 0; }-yy669:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy668;-		if (yych <= '\t') goto yy681;-		goto yy668;-	} else {-		if (yych <= 0x7F) goto yy681;-		if (yych <= 0xC1) goto yy668;-		if (yych <= 0xF4) goto yy681;-		goto yy668;-	}-yy670:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 128) {-		goto yy680;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy672;-			if (yych <= '>') goto yy670;-		} else {-			if (yych <= 0xDF) goto yy683;-			if (yych <= 0xE0) goto yy684;-			goto yy685;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy686;-			if (yych <= 0xEF) goto yy685;-			goto yy687;-		} else {-			if (yych <= 0xF3) goto yy688;-			if (yych <= 0xF4) goto yy689;-		}-	}-yy672:-	{ return (bufsize_t)(p - start); }-yy673:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy668;-	if (yych <= 0xBF) goto yy680;-	goto yy668;-yy674:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x9F) goto yy668;-	if (yych <= 0xBF) goto yy683;-	goto yy668;-yy675:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy668;-	if (yych <= 0xBF) goto yy683;-	goto yy668;-yy676:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy668;-	if (yych <= 0x9F) goto yy683;-	goto yy668;-yy677:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x8F) goto yy668;-	if (yych <= 0xBF) goto yy685;-	goto yy668;-yy678:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy668;-	if (yych <= 0xBF) goto yy685;-	goto yy668;-yy679:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy668;-	if (yych <= 0x8F) goto yy685;-	goto yy668;-yy680:-	yych = *++p;-yy681:-	if (yybm[0+yych] & 128) {-		goto yy680;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy682;-			if (yych <= '>') goto yy670;-		} else {-			if (yych <= 0xDF) goto yy683;-			if (yych <= 0xE0) goto yy684;-			goto yy685;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy686;-			if (yych <= 0xEF) goto yy685;-			goto yy687;-		} else {-			if (yych <= 0xF3) goto yy688;-			if (yych <= 0xF4) goto yy689;-		}-	}-yy682:-	p = marker;-	if (yyaccept == 0) {-		goto yy668;-	} else {-		goto yy672;-	}-yy683:-	yych = *++p;-	if (yych <= 0x7F) goto yy682;-	if (yych <= 0xBF) goto yy680;-	goto yy682;-yy684:-	yych = *++p;-	if (yych <= 0x9F) goto yy682;-	if (yych <= 0xBF) goto yy683;-	goto yy682;-yy685:-	yych = *++p;-	if (yych <= 0x7F) goto yy682;-	if (yych <= 0xBF) goto yy683;-	goto yy682;-yy686:-	yych = *++p;-	if (yych <= 0x7F) goto yy682;-	if (yych <= 0x9F) goto yy683;-	goto yy682;-yy687:-	yych = *++p;-	if (yych <= 0x8F) goto yy682;-	if (yych <= 0xBF) goto yy685;-	goto yy682;-yy688:-	yych = *++p;-	if (yych <= 0x7F) goto yy682;-	if (yych <= 0xBF) goto yy685;-	goto yy682;-yy689:-	yych = *++p;-	if (yych <= 0x7F) goto yy682;-	if (yych <= 0x8F) goto yy685;-	goto yy682;-}--}--// Try to match an HTML block end line of type 5-bufsize_t _scan_html_block_end_5(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,   0,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64, 128,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= 0xDF) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy692;-			if (yych != '\n') goto yy694;-		} else {-			if (yych <= ']') goto yy695;-			if (yych <= 0x7F) goto yy694;-			if (yych >= 0xC2) goto yy696;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy697;-			if (yych == 0xED) goto yy699;-			goto yy698;-		} else {-			if (yych <= 0xF0) goto yy700;-			if (yych <= 0xF3) goto yy701;-			if (yych <= 0xF4) goto yy702;-		}-	}-yy692:-	++p;-yy693:-	{ return 0; }-yy694:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy693;-		if (yych <= '\t') goto yy704;-		goto yy693;-	} else {-		if (yych <= 0x7F) goto yy704;-		if (yych <= 0xC1) goto yy693;-		if (yych <= 0xF4) goto yy704;-		goto yy693;-	}-yy695:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 128) {-		goto yy714;-	}-	if (yych <= '\n') {-		if (yych <= 0x00) goto yy693;-		if (yych <= '\t') goto yy704;-		goto yy693;-	} else {-		if (yych <= 0x7F) goto yy704;-		if (yych <= 0xC1) goto yy693;-		if (yych <= 0xF4) goto yy704;-		goto yy693;-	}-yy696:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy693;-	if (yych <= 0xBF) goto yy703;-	goto yy693;-yy697:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x9F) goto yy693;-	if (yych <= 0xBF) goto yy707;-	goto yy693;-yy698:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy693;-	if (yych <= 0xBF) goto yy707;-	goto yy693;-yy699:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy693;-	if (yych <= 0x9F) goto yy707;-	goto yy693;-yy700:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x8F) goto yy693;-	if (yych <= 0xBF) goto yy709;-	goto yy693;-yy701:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy693;-	if (yych <= 0xBF) goto yy709;-	goto yy693;-yy702:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x7F) goto yy693;-	if (yych <= 0x8F) goto yy709;-	goto yy693;-yy703:-	yych = *++p;-yy704:-	if (yybm[0+yych] & 64) {-		goto yy703;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy705;-			if (yych <= ']') goto yy706;-		} else {-			if (yych <= 0xDF) goto yy707;-			if (yych <= 0xE0) goto yy708;-			goto yy709;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy710;-			if (yych <= 0xEF) goto yy709;-			goto yy711;-		} else {-			if (yych <= 0xF3) goto yy712;-			if (yych <= 0xF4) goto yy713;-		}-	}-yy705:-	p = marker;-	if (yyaccept == 0) {-		goto yy693;-	} else {-		goto yy717;-	}-yy706:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy703;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy705;-			if (yych <= ']') goto yy714;-			goto yy705;-		} else {-			if (yych <= 0xDF) goto yy707;-			if (yych <= 0xE0) goto yy708;-			goto yy709;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy710;-			if (yych <= 0xEF) goto yy709;-			goto yy711;-		} else {-			if (yych <= 0xF3) goto yy712;-			if (yych <= 0xF4) goto yy713;-			goto yy705;-		}-	}-yy707:-	yych = *++p;-	if (yych <= 0x7F) goto yy705;-	if (yych <= 0xBF) goto yy703;-	goto yy705;-yy708:-	yych = *++p;-	if (yych <= 0x9F) goto yy705;-	if (yych <= 0xBF) goto yy707;-	goto yy705;-yy709:-	yych = *++p;-	if (yych <= 0x7F) goto yy705;-	if (yych <= 0xBF) goto yy707;-	goto yy705;-yy710:-	yych = *++p;-	if (yych <= 0x7F) goto yy705;-	if (yych <= 0x9F) goto yy707;-	goto yy705;-yy711:-	yych = *++p;-	if (yych <= 0x8F) goto yy705;-	if (yych <= 0xBF) goto yy709;-	goto yy705;-yy712:-	yych = *++p;-	if (yych <= 0x7F) goto yy705;-	if (yych <= 0xBF) goto yy709;-	goto yy705;-yy713:-	yych = *++p;-	if (yych <= 0x7F) goto yy705;-	if (yych <= 0x8F) goto yy709;-	goto yy705;-yy714:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy714;-	}-	if (yych <= 0xDF) {-		if (yych <= '=') {-			if (yych <= 0x00) goto yy705;-			if (yych == '\n') goto yy705;-			goto yy703;-		} else {-			if (yych <= '>') goto yy716;-			if (yych <= 0x7F) goto yy703;-			if (yych <= 0xC1) goto yy705;-			goto yy707;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) goto yy708;-			if (yych == 0xED) goto yy710;-			goto yy709;-		} else {-			if (yych <= 0xF0) goto yy711;-			if (yych <= 0xF3) goto yy712;-			if (yych <= 0xF4) goto yy713;-			goto yy705;-		}-	}-yy716:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy703;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= '\n') goto yy717;-			if (yych <= ']') goto yy706;-		} else {-			if (yych <= 0xDF) goto yy707;-			if (yych <= 0xE0) goto yy708;-			goto yy709;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy710;-			if (yych <= 0xEF) goto yy709;-			goto yy711;-		} else {-			if (yych <= 0xF3) goto yy712;-			if (yych <= 0xF4) goto yy713;-		}-	}-yy717:-	{ return (bufsize_t)(p - start); }-}--}--// Try to match a link title (in single quotes, in double quotes, or-// in parentheses), returning number of chars matched.  Allow one-// level of internal nesting (quotes within quotes).-bufsize_t _scan_link_title(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	static const unsigned char yybm[] = {-		  0, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 192, 208, 208, 208, 208, 144, -		208,  80, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208,  32, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		208, 208, 208, 208, 208, 208, 208, 208, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= '&') {-		if (yych == '"') goto yy722;-	} else {-		if (yych <= '\'') goto yy723;-		if (yych <= '(') goto yy724;-	}-	++p;-yy721:-	{ return 0; }-yy722:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x00) goto yy721;-	if (yych <= 0x7F) goto yy726;-	if (yych <= 0xC1) goto yy721;-	if (yych <= 0xF4) goto yy726;-	goto yy721;-yy723:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x00) goto yy721;-	if (yych <= 0x7F) goto yy740;-	if (yych <= 0xC1) goto yy721;-	if (yych <= 0xF4) goto yy740;-	goto yy721;-yy724:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych <= 0x00) goto yy721;-	if (yych <= 0x7F) goto yy753;-	if (yych <= 0xC1) goto yy721;-	if (yych <= 0xF4) goto yy753;-	goto yy721;-yy725:-	yych = *++p;-yy726:-	if (yybm[0+yych] & 16) {-		goto yy725;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy727;-			if (yych <= '"') goto yy728;-			goto yy730;-		} else {-			if (yych <= 0xC1) goto yy727;-			if (yych <= 0xDF) goto yy732;-			goto yy733;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy735;-			goto yy734;-		} else {-			if (yych <= 0xF0) goto yy736;-			if (yych <= 0xF3) goto yy737;-			if (yych <= 0xF4) goto yy738;-		}-	}-yy727:-	p = marker;-	if (yyaccept <= 1) {-		if (yyaccept == 0) {-			goto yy721;-		} else {-			goto yy729;-		}-	} else {-		if (yyaccept == 2) {-			goto yy742;-		} else {-			goto yy755;-		}-	}-yy728:-	++p;-yy729:-	{ return (bufsize_t)(p - start); }-yy730:-	yych = *++p;-	if (yybm[0+yych] & 16) {-		goto yy725;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy727;-			if (yych <= '"') goto yy765;-			goto yy730;-		} else {-			if (yych <= 0xC1) goto yy727;-			if (yych >= 0xE0) goto yy733;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy735;-			goto yy734;-		} else {-			if (yych <= 0xF0) goto yy736;-			if (yych <= 0xF3) goto yy737;-			if (yych <= 0xF4) goto yy738;-			goto yy727;-		}-	}-yy732:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy725;-	goto yy727;-yy733:-	yych = *++p;-	if (yych <= 0x9F) goto yy727;-	if (yych <= 0xBF) goto yy732;-	goto yy727;-yy734:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy732;-	goto yy727;-yy735:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0x9F) goto yy732;-	goto yy727;-yy736:-	yych = *++p;-	if (yych <= 0x8F) goto yy727;-	if (yych <= 0xBF) goto yy734;-	goto yy727;-yy737:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy734;-	goto yy727;-yy738:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0x8F) goto yy734;-	goto yy727;-yy739:-	yych = *++p;-yy740:-	if (yybm[0+yych] & 64) {-		goto yy739;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy727;-			if (yych >= '(') goto yy743;-		} else {-			if (yych <= 0xC1) goto yy727;-			if (yych <= 0xDF) goto yy745;-			goto yy746;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy748;-			goto yy747;-		} else {-			if (yych <= 0xF0) goto yy749;-			if (yych <= 0xF3) goto yy750;-			if (yych <= 0xF4) goto yy751;-			goto yy727;-		}-	}-yy741:-	++p;-yy742:-	{ return (bufsize_t)(p - start); }-yy743:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy739;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy727;-			if (yych <= '\'') goto yy766;-			goto yy743;-		} else {-			if (yych <= 0xC1) goto yy727;-			if (yych >= 0xE0) goto yy746;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy748;-			goto yy747;-		} else {-			if (yych <= 0xF0) goto yy749;-			if (yych <= 0xF3) goto yy750;-			if (yych <= 0xF4) goto yy751;-			goto yy727;-		}-	}-yy745:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy739;-	goto yy727;-yy746:-	yych = *++p;-	if (yych <= 0x9F) goto yy727;-	if (yych <= 0xBF) goto yy745;-	goto yy727;-yy747:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy745;-	goto yy727;-yy748:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0x9F) goto yy745;-	goto yy727;-yy749:-	yych = *++p;-	if (yych <= 0x8F) goto yy727;-	if (yych <= 0xBF) goto yy747;-	goto yy727;-yy750:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy747;-	goto yy727;-yy751:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0x8F) goto yy747;-	goto yy727;-yy752:-	yych = *++p;-yy753:-	if (yybm[0+yych] & 128) {-		goto yy752;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy727;-			if (yych >= '*') goto yy756;-		} else {-			if (yych <= 0xC1) goto yy727;-			if (yych <= 0xDF) goto yy758;-			goto yy759;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy761;-			goto yy760;-		} else {-			if (yych <= 0xF0) goto yy762;-			if (yych <= 0xF3) goto yy763;-			if (yych <= 0xF4) goto yy764;-			goto yy727;-		}-	}-yy754:-	++p;-yy755:-	{ return (bufsize_t)(p - start); }-yy756:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy752;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy727;-			if (yych <= ')') goto yy767;-			goto yy756;-		} else {-			if (yych <= 0xC1) goto yy727;-			if (yych >= 0xE0) goto yy759;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy761;-			goto yy760;-		} else {-			if (yych <= 0xF0) goto yy762;-			if (yych <= 0xF3) goto yy763;-			if (yych <= 0xF4) goto yy764;-			goto yy727;-		}-	}-yy758:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy752;-	goto yy727;-yy759:-	yych = *++p;-	if (yych <= 0x9F) goto yy727;-	if (yych <= 0xBF) goto yy758;-	goto yy727;-yy760:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy758;-	goto yy727;-yy761:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0x9F) goto yy758;-	goto yy727;-yy762:-	yych = *++p;-	if (yych <= 0x8F) goto yy727;-	if (yych <= 0xBF) goto yy760;-	goto yy727;-yy763:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0xBF) goto yy760;-	goto yy727;-yy764:-	yych = *++p;-	if (yych <= 0x7F) goto yy727;-	if (yych <= 0x8F) goto yy760;-	goto yy727;-yy765:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 16) {-		goto yy725;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy729;-			if (yych <= '"') goto yy728;-			goto yy730;-		} else {-			if (yych <= 0xC1) goto yy729;-			if (yych <= 0xDF) goto yy732;-			goto yy733;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy735;-			goto yy734;-		} else {-			if (yych <= 0xF0) goto yy736;-			if (yych <= 0xF3) goto yy737;-			if (yych <= 0xF4) goto yy738;-			goto yy729;-		}-	}-yy766:-	yyaccept = 2;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy739;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy742;-			if (yych <= '\'') goto yy741;-			goto yy743;-		} else {-			if (yych <= 0xC1) goto yy742;-			if (yych <= 0xDF) goto yy745;-			goto yy746;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy748;-			goto yy747;-		} else {-			if (yych <= 0xF0) goto yy749;-			if (yych <= 0xF3) goto yy750;-			if (yych <= 0xF4) goto yy751;-			goto yy742;-		}-	}-yy767:-	yyaccept = 3;-	yych = *(marker = ++p);-	if (yybm[0+yych] & 128) {-		goto yy752;-	}-	if (yych <= 0xE0) {-		if (yych <= '\\') {-			if (yych <= 0x00) goto yy755;-			if (yych <= ')') goto yy754;-			goto yy756;-		} else {-			if (yych <= 0xC1) goto yy755;-			if (yych <= 0xDF) goto yy758;-			goto yy759;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych == 0xED) goto yy761;-			goto yy760;-		} else {-			if (yych <= 0xF0) goto yy762;-			if (yych <= 0xF3) goto yy763;-			if (yych <= 0xF4) goto yy764;-			goto yy755;-		}-	}-}--}--// Match space characters, including newlines.-bufsize_t _scan_spacechars(const unsigned char *p)-{-  const unsigned char *start = p; \--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0, 128, 128, 128, 128, 128,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		128,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yybm[0+yych] & 128) {-		goto yy772;-	}-	++p;-	{ return 0; }-yy772:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy772;-	}-	{ return (bufsize_t)(p - start); }-}--}--// Match ATX heading start.-bufsize_t _scan_atx_heading_start(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0, 128,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		128,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych == '#') goto yy779;-	++p;-yy778:-	{ return 0; }-yy779:-	yych = *(marker = ++p);-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy778;-		if (yych <= '\n') goto yy783;-		goto yy778;-	} else {-		if (yych <= '\r') goto yy783;-		if (yych == '#') goto yy784;-		goto yy778;-	}-yy780:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-yy782:-	{ return (bufsize_t)(p - start); }-yy783:-	++p;-	goto yy782;-yy784:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy785;-		if (yych <= '\n') goto yy783;-	} else {-		if (yych <= '\r') goto yy783;-		if (yych == '#') goto yy786;-	}-yy785:-	p = marker;-	goto yy778;-yy786:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy785;-		if (yych <= '\n') goto yy783;-		goto yy785;-	} else {-		if (yych <= '\r') goto yy783;-		if (yych != '#') goto yy785;-	}-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy785;-		if (yych <= '\n') goto yy783;-		goto yy785;-	} else {-		if (yych <= '\r') goto yy783;-		if (yych != '#') goto yy785;-	}-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy785;-		if (yych <= '\n') goto yy783;-		goto yy785;-	} else {-		if (yych <= '\r') goto yy783;-		if (yych != '#') goto yy785;-	}-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy780;-	}-	if (yych <= 0x08) goto yy785;-	if (yych <= '\n') goto yy783;-	if (yych == '\r') goto yy783;-	goto yy785;-}--}--// Match setext heading line.  Return 1 for level-1 heading,-// 2 for level-2, 0 for no match.-bufsize_t _scan_setext_heading_line(const unsigned char *p)-{-  const unsigned char *marker = NULL;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,  32,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		 32,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,  64,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0, 128,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych == '-') goto yy794;-	if (yych == '=') goto yy795;-	++p;-yy793:-	{ return 0; }-yy794:-	yych = *(marker = ++p);-	if (yybm[0+yych] & 64) {-		goto yy801;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy793;-		if (yych <= '\n') goto yy797;-		goto yy793;-	} else {-		if (yych <= '\r') goto yy797;-		if (yych == ' ') goto yy797;-		goto yy793;-	}-yy795:-	yych = *(marker = ++p);-	if (yybm[0+yych] & 128) {-		goto yy807;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy793;-		if (yych <= '\n') goto yy804;-		goto yy793;-	} else {-		if (yych <= '\r') goto yy804;-		if (yych == ' ') goto yy804;-		goto yy793;-	}-yy796:-	yych = *++p;-yy797:-	if (yybm[0+yych] & 32) {-		goto yy796;-	}-	if (yych <= 0x08) goto yy798;-	if (yych <= '\n') goto yy799;-	if (yych == '\r') goto yy799;-yy798:-	p = marker;-	goto yy793;-yy799:-	++p;-	{ return 2; }-yy801:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy796;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy798;-		if (yych <= '\n') goto yy799;-		goto yy798;-	} else {-		if (yych <= '\r') goto yy799;-		if (yych == '-') goto yy801;-		goto yy798;-	}-yy803:-	yych = *++p;-yy804:-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy798;-		if (yych <= '\t') goto yy803;-		if (yych >= '\v') goto yy798;-	} else {-		if (yych <= '\r') goto yy805;-		if (yych == ' ') goto yy803;-		goto yy798;-	}-yy805:-	++p;-	{ return 1; }-yy807:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy807;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy798;-		if (yych <= '\t') goto yy803;-		if (yych <= '\n') goto yy805;-		goto yy798;-	} else {-		if (yych <= '\r') goto yy805;-		if (yych == ' ') goto yy803;-		goto yy798;-	}-}--}--// Scan a thematic break line: "...three or more hyphens, asterisks,-// or underscores on a line by themselves. If you wish, you may use-// spaces between the hyphens or asterisks."-bufsize_t _scan_thematic_break(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0, 240,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		240,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,  32,   0,   0,  64,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0, 128, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych <= ',') {-		if (yych == '*') goto yy813;-	} else {-		if (yych <= '-') goto yy814;-		if (yych == '_') goto yy815;-	}-	++p;-yy812:-	{ return 0; }-yy813:-	yych = *(marker = ++p);-	if (yybm[0+yych] & 16) {-		goto yy816;-	}-	if (yych == '*') goto yy819;-	goto yy812;-yy814:-	yych = *(marker = ++p);-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy821;-		goto yy812;-	} else {-		if (yych <= ' ') goto yy821;-		if (yych == '-') goto yy823;-		goto yy812;-	}-yy815:-	yych = *(marker = ++p);-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy825;-		goto yy812;-	} else {-		if (yych <= ' ') goto yy825;-		if (yych == '_') goto yy827;-		goto yy812;-	}-yy816:-	yych = *++p;-	if (yybm[0+yych] & 16) {-		goto yy816;-	}-	if (yych == '*') goto yy819;-yy818:-	p = marker;-	goto yy812;-yy819:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy819;-		goto yy818;-	} else {-		if (yych <= ' ') goto yy819;-		if (yych == '*') goto yy829;-		goto yy818;-	}-yy821:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy821;-		goto yy818;-	} else {-		if (yych <= ' ') goto yy821;-		if (yych != '-') goto yy818;-	}-yy823:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy823;-		goto yy818;-	} else {-		if (yych <= ' ') goto yy823;-		if (yych == '-') goto yy831;-		goto yy818;-	}-yy825:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy825;-		goto yy818;-	} else {-		if (yych <= ' ') goto yy825;-		if (yych != '_') goto yy818;-	}-yy827:-	yych = *++p;-	if (yych <= 0x1F) {-		if (yych == '\t') goto yy827;-		goto yy818;-	} else {-		if (yych <= ' ') goto yy827;-		if (yych == '_') goto yy833;-		goto yy818;-	}-yy829:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy829;-	}-	if (yych <= 0x08) goto yy818;-	if (yych <= '\n') goto yy835;-	if (yych == '\r') goto yy835;-	goto yy818;-yy831:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy831;-	}-	if (yych <= 0x08) goto yy818;-	if (yych <= '\n') goto yy837;-	if (yych == '\r') goto yy837;-	goto yy818;-yy833:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy833;-	}-	if (yych <= 0x08) goto yy818;-	if (yych <= '\n') goto yy839;-	if (yych == '\r') goto yy839;-	goto yy818;-yy835:-	++p;-	{ return (bufsize_t)(p - start); }-yy837:-	++p;-	{ return (bufsize_t)(p - start); }-yy839:-	++p;-	{ return (bufsize_t)(p - start); }-}--}--// Scan an opening code fence.-bufsize_t _scan_open_code_fence(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0, 192, 192, 192, 192, 192, 192, 192, -		192, 192,   0, 192, 192,   0, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		144, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 192, 192, -		192, 192, 192, 192, 192, 192, 224, 192, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych == '`') goto yy845;-	if (yych == '~') goto yy846;-	++p;-yy844:-	{ return 0; }-yy845:-	yych = *(marker = ++p);-	if (yych == '`') goto yy847;-	goto yy844;-yy846:-	yych = *(marker = ++p);-	if (yych == '~') goto yy849;-	goto yy844;-yy847:-	yych = *++p;-	if (yybm[0+yych] & 16) {-		goto yy850;-	}-yy848:-	p = marker;-	goto yy844;-yy849:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy852;-	}-	goto yy848;-yy850:-	yych = *++p;-	if (yybm[0+yych] & 16) {-		goto yy850;-	}-	if (yych <= 0xDF) {-		if (yych <= '\f') {-			if (yych <= 0x00) goto yy848;-			if (yych == '\n') {-				marker = p;-				goto yy856;-			}-			marker = p;-			goto yy854;-		} else {-			if (yych <= '\r') {-				marker = p;-				goto yy856;-			}-			if (yych <= 0x7F) {-				marker = p;-				goto yy854;-			}-			if (yych <= 0xC1) goto yy848;-			marker = p;-			goto yy858;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) {-				marker = p;-				goto yy859;-			}-			if (yych == 0xED) {-				marker = p;-				goto yy861;-			}-			marker = p;-			goto yy860;-		} else {-			if (yych <= 0xF0) {-				marker = p;-				goto yy862;-			}-			if (yych <= 0xF3) {-				marker = p;-				goto yy863;-			}-			if (yych <= 0xF4) {-				marker = p;-				goto yy864;-			}-			goto yy848;-		}-	}-yy852:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy852;-	}-	if (yych <= 0xDF) {-		if (yych <= '\f') {-			if (yych <= 0x00) goto yy848;-			if (yych == '\n') {-				marker = p;-				goto yy867;-			}-			marker = p;-			goto yy865;-		} else {-			if (yych <= '\r') {-				marker = p;-				goto yy867;-			}-			if (yych <= 0x7F) {-				marker = p;-				goto yy865;-			}-			if (yych <= 0xC1) goto yy848;-			marker = p;-			goto yy869;-		}-	} else {-		if (yych <= 0xEF) {-			if (yych <= 0xE0) {-				marker = p;-				goto yy870;-			}-			if (yych == 0xED) {-				marker = p;-				goto yy872;-			}-			marker = p;-			goto yy871;-		} else {-			if (yych <= 0xF0) {-				marker = p;-				goto yy873;-			}-			if (yych <= 0xF3) {-				marker = p;-				goto yy874;-			}-			if (yych <= 0xF4) {-				marker = p;-				goto yy875;-			}-			goto yy848;-		}-	}-yy854:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy854;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy848;-			if (yych >= 0x0E) goto yy848;-		} else {-			if (yych <= 0xDF) goto yy858;-			if (yych <= 0xE0) goto yy859;-			goto yy860;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy861;-			if (yych <= 0xEF) goto yy860;-			goto yy862;-		} else {-			if (yych <= 0xF3) goto yy863;-			if (yych <= 0xF4) goto yy864;-			goto yy848;-		}-	}-yy856:-	++p;-	p = marker;-	{ return (bufsize_t)(p - start); }-yy858:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0xBF) goto yy854;-	goto yy848;-yy859:-	yych = *++p;-	if (yych <= 0x9F) goto yy848;-	if (yych <= 0xBF) goto yy858;-	goto yy848;-yy860:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0xBF) goto yy858;-	goto yy848;-yy861:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0x9F) goto yy858;-	goto yy848;-yy862:-	yych = *++p;-	if (yych <= 0x8F) goto yy848;-	if (yych <= 0xBF) goto yy860;-	goto yy848;-yy863:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0xBF) goto yy860;-	goto yy848;-yy864:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0x8F) goto yy860;-	goto yy848;-yy865:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy865;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= 0x00) goto yy848;-			if (yych >= 0x0E) goto yy848;-		} else {-			if (yych <= 0xDF) goto yy869;-			if (yych <= 0xE0) goto yy870;-			goto yy871;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy872;-			if (yych <= 0xEF) goto yy871;-			goto yy873;-		} else {-			if (yych <= 0xF3) goto yy874;-			if (yych <= 0xF4) goto yy875;-			goto yy848;-		}-	}-yy867:-	++p;-	p = marker;-	{ return (bufsize_t)(p - start); }-yy869:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0xBF) goto yy865;-	goto yy848;-yy870:-	yych = *++p;-	if (yych <= 0x9F) goto yy848;-	if (yych <= 0xBF) goto yy869;-	goto yy848;-yy871:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0xBF) goto yy869;-	goto yy848;-yy872:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0x9F) goto yy869;-	goto yy848;-yy873:-	yych = *++p;-	if (yych <= 0x8F) goto yy848;-	if (yych <= 0xBF) goto yy871;-	goto yy848;-yy874:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0xBF) goto yy871;-	goto yy848;-yy875:-	yych = *++p;-	if (yych <= 0x7F) goto yy848;-	if (yych <= 0x8F) goto yy871;-	goto yy848;-}--}--// Scan a closing code fence with length at least len.-bufsize_t _scan_close_code_fence(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,   0,   0,   0,   0,   0,   0,   0, -		  0, 128,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		128,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		 32,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,  64,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych == '`') goto yy880;-	if (yych == '~') goto yy881;-	++p;-yy879:-	{ return 0; }-yy880:-	yych = *(marker = ++p);-	if (yych == '`') goto yy882;-	goto yy879;-yy881:-	yych = *(marker = ++p);-	if (yych == '~') goto yy884;-	goto yy879;-yy882:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy885;-	}-yy883:-	p = marker;-	goto yy879;-yy884:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy887;-	}-	goto yy883;-yy885:-	yych = *++p;-	if (yybm[0+yych] & 32) {-		goto yy885;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy883;-		if (yych <= '\t') {-			marker = p;-			goto yy889;-		}-		if (yych <= '\n') {-			marker = p;-			goto yy891;-		}-		goto yy883;-	} else {-		if (yych <= '\r') {-			marker = p;-			goto yy891;-		}-		if (yych == ' ') {-			marker = p;-			goto yy889;-		}-		goto yy883;-	}-yy887:-	yych = *++p;-	if (yybm[0+yych] & 64) {-		goto yy887;-	}-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy883;-		if (yych <= '\t') {-			marker = p;-			goto yy893;-		}-		if (yych <= '\n') {-			marker = p;-			goto yy895;-		}-		goto yy883;-	} else {-		if (yych <= '\r') {-			marker = p;-			goto yy895;-		}-		if (yych == ' ') {-			marker = p;-			goto yy893;-		}-		goto yy883;-	}-yy889:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy889;-	}-	if (yych <= 0x08) goto yy883;-	if (yych <= '\n') goto yy891;-	if (yych != '\r') goto yy883;-yy891:-	++p;-	p = marker;-	{ return (bufsize_t)(p - start); }-yy893:-	yych = *++p;-	if (yych <= '\f') {-		if (yych <= 0x08) goto yy883;-		if (yych <= '\t') goto yy893;-		if (yych >= '\v') goto yy883;-	} else {-		if (yych <= '\r') goto yy895;-		if (yych == ' ') goto yy893;-		goto yy883;-	}-yy895:-	++p;-	p = marker;-	{ return (bufsize_t)(p - start); }-}--}--// Scans an entity.-// Returns number of chars matched.-bufsize_t _scan_entity(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	yych = *p;-	if (yych == '&') goto yy901;-	++p;-yy900:-	{ return 0; }-yy901:-	yych = *(marker = ++p);-	if (yych <= '@') {-		if (yych != '#') goto yy900;-	} else {-		if (yych <= 'Z') goto yy904;-		if (yych <= '`') goto yy900;-		if (yych <= 'z') goto yy904;-		goto yy900;-	}-	yych = *++p;-	if (yych <= 'W') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy905;-	} else {-		if (yych <= 'X') goto yy906;-		if (yych == 'x') goto yy906;-	}-yy903:-	p = marker;-	goto yy900;-yy904:-	yych = *++p;-	if (yych <= '@') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy907;-		goto yy903;-	} else {-		if (yych <= 'Z') goto yy907;-		if (yych <= '`') goto yy903;-		if (yych <= 'z') goto yy907;-		goto yy903;-	}-yy905:-	yych = *++p;-	if (yych <= '/') goto yy903;-	if (yych <= '9') goto yy908;-	if (yych == ';') goto yy909;-	goto yy903;-yy906:-	yych = *++p;-	if (yych <= '@') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy911;-		goto yy903;-	} else {-		if (yych <= 'F') goto yy911;-		if (yych <= '`') goto yy903;-		if (yych <= 'f') goto yy911;-		goto yy903;-	}-yy907:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy912;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy912;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy912;-			goto yy903;-		}-	}-yy908:-	yych = *++p;-	if (yych <= '/') goto yy903;-	if (yych <= '9') goto yy913;-	if (yych != ';') goto yy903;-yy909:-	++p;-	{ return (bufsize_t)(p - start); }-yy911:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy914;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'F') {-			if (yych <= '@') goto yy903;-			goto yy914;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'f') goto yy914;-			goto yy903;-		}-	}-yy912:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy915;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy915;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy915;-			goto yy903;-		}-	}-yy913:-	yych = *++p;-	if (yych <= '/') goto yy903;-	if (yych <= '9') goto yy916;-	if (yych == ';') goto yy909;-	goto yy903;-yy914:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy917;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'F') {-			if (yych <= '@') goto yy903;-			goto yy917;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'f') goto yy917;-			goto yy903;-		}-	}-yy915:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy918;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy918;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy918;-			goto yy903;-		}-	}-yy916:-	yych = *++p;-	if (yych <= '/') goto yy903;-	if (yych <= '9') goto yy919;-	if (yych == ';') goto yy909;-	goto yy903;-yy917:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy920;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'F') {-			if (yych <= '@') goto yy903;-			goto yy920;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'f') goto yy920;-			goto yy903;-		}-	}-yy918:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy921;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy921;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy921;-			goto yy903;-		}-	}-yy919:-	yych = *++p;-	if (yych <= '/') goto yy903;-	if (yych <= '9') goto yy922;-	if (yych == ';') goto yy909;-	goto yy903;-yy920:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy923;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'F') {-			if (yych <= '@') goto yy903;-			goto yy923;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'f') goto yy923;-			goto yy903;-		}-	}-yy921:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy924;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy924;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy924;-			goto yy903;-		}-	}-yy922:-	yych = *++p;-	if (yych <= '/') goto yy903;-	if (yych <= '9') goto yy925;-	if (yych == ';') goto yy909;-	goto yy903;-yy923:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy925;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'F') {-			if (yych <= '@') goto yy903;-			goto yy925;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'f') goto yy925;-			goto yy903;-		}-	}-yy924:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy926;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy926;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy926;-			goto yy903;-		}-	}-yy925:-	yych = *++p;-	if (yych == ';') goto yy909;-	goto yy903;-yy926:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy927;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy927:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy928;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy928:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy929;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy929:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy930;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy930:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy931;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy931:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy932;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy932:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy933;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy933:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy934;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy934:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy935;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy935:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy936;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy936:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy937;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy937:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy938;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy938:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy939;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy939:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy940;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy940:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy941;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy941:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy942;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy942:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy943;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy943:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy944;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy944:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy945;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy945:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy946;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy946:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy947;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy947:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy948;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy948:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy949;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-		} else {-			if (yych <= '`') goto yy903;-			if (yych >= '{') goto yy903;-		}-	}-yy949:-	yych = *++p;-	if (yych <= ';') {-		if (yych <= '/') goto yy903;-		if (yych <= '9') goto yy925;-		if (yych <= ':') goto yy903;-		goto yy909;-	} else {-		if (yych <= 'Z') {-			if (yych <= '@') goto yy903;-			goto yy925;-		} else {-			if (yych <= '`') goto yy903;-			if (yych <= 'z') goto yy925;-			goto yy903;-		}-	}-}--}--// Returns positive value if a URL begins in a way that is potentially-// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.-bufsize_t _scan_dangerous_url(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	unsigned int yyaccept = 0;-	yych = *p;-	if (yych <= 'V') {-		if (yych <= 'F') {-			if (yych == 'D') goto yy954;-			if (yych >= 'F') goto yy955;-		} else {-			if (yych == 'J') goto yy956;-			if (yych >= 'V') goto yy957;-		}-	} else {-		if (yych <= 'f') {-			if (yych == 'd') goto yy954;-			if (yych >= 'f') goto yy955;-		} else {-			if (yych <= 'j') {-				if (yych >= 'j') goto yy956;-			} else {-				if (yych == 'v') goto yy957;-			}-		}-	}-	++p;-yy953:-	{ return 0; }-yy954:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych == 'A') goto yy958;-	if (yych == 'a') goto yy958;-	goto yy953;-yy955:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych == 'I') goto yy960;-	if (yych == 'i') goto yy960;-	goto yy953;-yy956:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych == 'A') goto yy961;-	if (yych == 'a') goto yy961;-	goto yy953;-yy957:-	yyaccept = 0;-	yych = *(marker = ++p);-	if (yych == 'B') goto yy962;-	if (yych == 'b') goto yy962;-	goto yy953;-yy958:-	yych = *++p;-	if (yych == 'T') goto yy963;-	if (yych == 't') goto yy963;-yy959:-	p = marker;-	if (yyaccept == 0) {-		goto yy953;-	} else {-		goto yy971;-	}-yy960:-	yych = *++p;-	if (yych == 'L') goto yy964;-	if (yych == 'l') goto yy964;-	goto yy959;-yy961:-	yych = *++p;-	if (yych == 'V') goto yy965;-	if (yych == 'v') goto yy965;-	goto yy959;-yy962:-	yych = *++p;-	if (yych == 'S') goto yy966;-	if (yych == 's') goto yy966;-	goto yy959;-yy963:-	yych = *++p;-	if (yych == 'A') goto yy967;-	if (yych == 'a') goto yy967;-	goto yy959;-yy964:-	yych = *++p;-	if (yych == 'E') goto yy968;-	if (yych == 'e') goto yy968;-	goto yy959;-yy965:-	yych = *++p;-	if (yych == 'A') goto yy962;-	if (yych == 'a') goto yy962;-	goto yy959;-yy966:-	yych = *++p;-	if (yych == 'C') goto yy969;-	if (yych == 'c') goto yy969;-	goto yy959;-yy967:-	yych = *++p;-	if (yych == ':') goto yy970;-	goto yy959;-yy968:-	yych = *++p;-	if (yych == ':') goto yy972;-	goto yy959;-yy969:-	yych = *++p;-	if (yych == 'R') goto yy973;-	if (yych == 'r') goto yy973;-	goto yy959;-yy970:-	yyaccept = 1;-	yych = *(marker = ++p);-	if (yych == 'I') goto yy974;-	if (yych == 'i') goto yy974;-yy971:-	{ return (bufsize_t)(p - start); }-yy972:-	++p;-	goto yy971;-yy973:-	yych = *++p;-	if (yych == 'I') goto yy975;-	if (yych == 'i') goto yy975;-	goto yy959;-yy974:-	yych = *++p;-	if (yych == 'M') goto yy976;-	if (yych == 'm') goto yy976;-	goto yy959;-yy975:-	yych = *++p;-	if (yych == 'P') goto yy977;-	if (yych == 'p') goto yy977;-	goto yy959;-yy976:-	yych = *++p;-	if (yych == 'A') goto yy978;-	if (yych == 'a') goto yy978;-	goto yy959;-yy977:-	yych = *++p;-	if (yych == 'T') goto yy968;-	if (yych == 't') goto yy968;-	goto yy959;-yy978:-	yych = *++p;-	if (yych == 'G') goto yy979;-	if (yych != 'g') goto yy959;-yy979:-	yych = *++p;-	if (yych == 'E') goto yy980;-	if (yych != 'e') goto yy959;-yy980:-	yych = *++p;-	if (yych != '/') goto yy959;-	yych = *++p;-	if (yych <= 'W') {-		if (yych <= 'J') {-			if (yych == 'G') goto yy982;-			if (yych <= 'I') goto yy959;-			goto yy983;-		} else {-			if (yych == 'P') goto yy984;-			if (yych <= 'V') goto yy959;-			goto yy985;-		}-	} else {-		if (yych <= 'j') {-			if (yych == 'g') goto yy982;-			if (yych <= 'i') goto yy959;-			goto yy983;-		} else {-			if (yych <= 'p') {-				if (yych <= 'o') goto yy959;-				goto yy984;-			} else {-				if (yych == 'w') goto yy985;-				goto yy959;-			}-		}-	}-yy982:-	yych = *++p;-	if (yych == 'I') goto yy986;-	if (yych == 'i') goto yy986;-	goto yy959;-yy983:-	yych = *++p;-	if (yych == 'P') goto yy987;-	if (yych == 'p') goto yy987;-	goto yy959;-yy984:-	yych = *++p;-	if (yych == 'N') goto yy988;-	if (yych == 'n') goto yy988;-	goto yy959;-yy985:-	yych = *++p;-	if (yych == 'E') goto yy989;-	if (yych == 'e') goto yy989;-	goto yy959;-yy986:-	yych = *++p;-	if (yych == 'F') goto yy990;-	if (yych == 'f') goto yy990;-	goto yy959;-yy987:-	yych = *++p;-	if (yych == 'E') goto yy988;-	if (yych != 'e') goto yy959;-yy988:-	yych = *++p;-	if (yych == 'G') goto yy990;-	if (yych == 'g') goto yy990;-	goto yy959;-yy989:-	yych = *++p;-	if (yych == 'B') goto yy992;-	if (yych == 'b') goto yy992;-	goto yy959;-yy990:-	++p;-	{ return 0; }-yy992:-	yych = *++p;-	if (yych == 'P') goto yy990;-	if (yych == 'p') goto yy990;-	goto yy959;-}--}--// Scans a footnote definition opening.-bufsize_t _scan_footnote_definition(const unsigned char *p)-{-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--{-	unsigned char yych;-	static const unsigned char yybm[] = {-		  0,  64,  64,  64,  64,  64,  64,  64, -		 64, 128,   0,  64,  64,   0,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		128,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,   0,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		 64,  64,  64,  64,  64,  64,  64,  64, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -		  0,   0,   0,   0,   0,   0,   0,   0, -	};-	yych = *p;-	if (yych == '[') goto yy997;-	++p;-yy996:-	{ return 0; }-yy997:-	yych = *(marker = ++p);-	if (yych != '^') goto yy996;-	yych = *++p;-	if (yych != ']') goto yy1001;-yy999:-	p = marker;-	goto yy996;-yy1000:-	yych = *++p;-yy1001:-	if (yybm[0+yych] & 64) {-		goto yy1000;-	}-	if (yych <= 0xEC) {-		if (yych <= 0xC1) {-			if (yych <= ' ') goto yy999;-			if (yych <= ']') goto yy1009;-			goto yy999;-		} else {-			if (yych <= 0xDF) goto yy1002;-			if (yych <= 0xE0) goto yy1003;-			goto yy1004;-		}-	} else {-		if (yych <= 0xF0) {-			if (yych <= 0xED) goto yy1005;-			if (yych <= 0xEF) goto yy1004;-			goto yy1006;-		} else {-			if (yych <= 0xF3) goto yy1007;-			if (yych <= 0xF4) goto yy1008;-			goto yy999;-		}-	}-yy1002:-	yych = *++p;-	if (yych <= 0x7F) goto yy999;-	if (yych <= 0xBF) goto yy1000;-	goto yy999;-yy1003:-	yych = *++p;-	if (yych <= 0x9F) goto yy999;-	if (yych <= 0xBF) goto yy1002;-	goto yy999;-yy1004:-	yych = *++p;-	if (yych <= 0x7F) goto yy999;-	if (yych <= 0xBF) goto yy1002;-	goto yy999;-yy1005:-	yych = *++p;-	if (yych <= 0x7F) goto yy999;-	if (yych <= 0x9F) goto yy1002;-	goto yy999;-yy1006:-	yych = *++p;-	if (yych <= 0x8F) goto yy999;-	if (yych <= 0xBF) goto yy1004;-	goto yy999;-yy1007:-	yych = *++p;-	if (yych <= 0x7F) goto yy999;-	if (yych <= 0xBF) goto yy1004;-	goto yy999;-yy1008:-	yych = *++p;-	if (yych <= 0x7F) goto yy999;-	if (yych <= 0x8F) goto yy1004;-	goto yy999;-yy1009:-	yych = *++p;-	if (yych != ':') goto yy999;-yy1010:-	yych = *++p;-	if (yybm[0+yych] & 128) {-		goto yy1010;-	}-	{ return (bufsize_t)(p - start); }-}-+/* Generated by re2c 3.0 */+#include "scanners.h"+#include "chunk.h"+#include <stdlib.h>++bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,+                   bufsize_t offset) {+  bufsize_t res;+  unsigned char *ptr = (unsigned char *)c->data;++  if (ptr == NULL || offset > c->len) {+    return 0;+  } else {+    unsigned char lim = ptr[c->len];++    ptr[c->len] = '\0';+    res = scanner(ptr + offset);+    ptr[c->len] = lim;+  }++  return res;+}++// Try to match a scheme including colon.+bufsize_t _scan_scheme(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    yych = *p;+    if (yych <= '@')+      goto yy1;+    if (yych <= 'Z')+      goto yy3;+    if (yych <= '`')+      goto yy1;+    if (yych <= 'z')+      goto yy3;+  yy1:+    ++p;+  yy2 : { return 0; }+  yy3:+    yych = *(marker = ++p);+    if (yych <= '/') {+      if (yych <= '+') {+        if (yych <= '*')+          goto yy2;+      } else {+        if (yych <= ',')+          goto yy2;+        if (yych >= '/')+          goto yy2;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '9')+          goto yy4;+        if (yych <= '@')+          goto yy2;+      } else {+        if (yych <= '`')+          goto yy2;+        if (yych >= '{')+          goto yy2;+      }+    }+  yy4:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych == '+')+          goto yy6;+      } else {+        if (yych != '/')+          goto yy6;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych >= 'A')+          goto yy6;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych <= 'z')+          goto yy6;+      }+    }+  yy5:+    p = marker;+    goto yy2;+  yy6:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych == '+')+          goto yy8;+        goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+        goto yy8;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+        goto yy8;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych <= 'z')+          goto yy8;+        goto yy5;+      }+    }+  yy7:+    ++p;+    { return (bufsize_t)(p - start); }+  yy8:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy5;+      } else {+        if (yych == '/')+          goto yy5;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy7;+        if (yych <= '@')+          goto yy5;+      } else {+        if (yych <= '`')+          goto yy5;+        if (yych >= '{')+          goto yy5;+      }+    }+    yych = *++p;+    if (yych == ':')+      goto yy7;+    goto yy5;+  }+}++// Try to match URI autolink after first <, returning number of chars matched.+bufsize_t _scan_autolink_uri(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych <= '@')+      goto yy10;+    if (yych <= 'Z')+      goto yy12;+    if (yych <= '`')+      goto yy10;+    if (yych <= 'z')+      goto yy12;+  yy10:+    ++p;+  yy11 : { return 0; }+  yy12:+    yych = *(marker = ++p);+    if (yych <= '/') {+      if (yych <= '+') {+        if (yych <= '*')+          goto yy11;+      } else {+        if (yych <= ',')+          goto yy11;+        if (yych >= '/')+          goto yy11;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '9')+          goto yy13;+        if (yych <= '@')+          goto yy11;+      } else {+        if (yych <= '`')+          goto yy11;+        if (yych >= '{')+          goto yy11;+      }+    }+  yy13:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych == '+')+          goto yy15;+      } else {+        if (yych != '/')+          goto yy15;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych >= 'A')+          goto yy15;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych <= 'z')+          goto yy15;+      }+    }+  yy14:+    p = marker;+    goto yy11;+  yy15:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych == '+')+          goto yy17;+        goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+        goto yy17;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+        goto yy17;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych <= 'z')+          goto yy17;+        goto yy14;+      }+    }+  yy16:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy16;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '<')+          goto yy14;+        if (yych <= '>')+          goto yy18;+        goto yy14;+      } else {+        if (yych <= 0xDF)+          goto yy19;+        if (yych <= 0xE0)+          goto yy20;+        goto yy21;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy22;+        if (yych <= 0xEF)+          goto yy21;+        goto yy23;+      } else {+        if (yych <= 0xF3)+          goto yy24;+        if (yych <= 0xF4)+          goto yy25;+        goto yy14;+      }+    }+  yy17:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych == '+')+          goto yy26;+        goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+        goto yy26;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+        goto yy26;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych <= 'z')+          goto yy26;+        goto yy14;+      }+    }+  yy18:+    ++p;+    { return (bufsize_t)(p - start); }+  yy19:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy14;+    if (yych <= 0xBF)+      goto yy16;+    goto yy14;+  yy20:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy14;+    if (yych <= 0xBF)+      goto yy19;+    goto yy14;+  yy21:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy14;+    if (yych <= 0xBF)+      goto yy19;+    goto yy14;+  yy22:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy14;+    if (yych <= 0x9F)+      goto yy19;+    goto yy14;+  yy23:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy14;+    if (yych <= 0xBF)+      goto yy21;+    goto yy14;+  yy24:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy14;+    if (yych <= 0xBF)+      goto yy21;+    goto yy14;+  yy25:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy14;+    if (yych <= 0x8F)+      goto yy21;+    goto yy14;+  yy26:+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych <= ',') {+        if (yych != '+')+          goto yy14;+      } else {+        if (yych == '/')+          goto yy14;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= ':')+          goto yy16;+        if (yych <= '@')+          goto yy14;+      } else {+        if (yych <= '`')+          goto yy14;+        if (yych >= '{')+          goto yy14;+      }+    }+    yych = *++p;+    if (yych == ':')+      goto yy16;+    goto yy14;+  }+}++// Try to match email autolink after first <, returning num of chars matched.+bufsize_t _scan_autolink_email(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,+        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych <= '9') {+      if (yych <= '\'') {+        if (yych == '!')+          goto yy30;+        if (yych >= '#')+          goto yy30;+      } else {+        if (yych <= ')')+          goto yy28;+        if (yych != ',')+          goto yy30;+      }+    } else {+      if (yych <= '?') {+        if (yych == '=')+          goto yy30;+        if (yych >= '?')+          goto yy30;+      } else {+        if (yych <= 'Z') {+          if (yych >= 'A')+            goto yy30;+        } else {+          if (yych <= ']')+            goto yy28;+          if (yych <= '~')+            goto yy30;+        }+      }+    }+  yy28:+    ++p;+  yy29 : { return 0; }+  yy30:+    yych = *(marker = ++p);+    if (yych <= ',') {+      if (yych <= '"') {+        if (yych == '!')+          goto yy32;+        goto yy29;+      } else {+        if (yych <= '\'')+          goto yy32;+        if (yych <= ')')+          goto yy29;+        if (yych <= '+')+          goto yy32;+        goto yy29;+      }+    } else {+      if (yych <= '>') {+        if (yych <= '9')+          goto yy32;+        if (yych == '=')+          goto yy32;+        goto yy29;+      } else {+        if (yych <= 'Z')+          goto yy32;+        if (yych <= ']')+          goto yy29;+        if (yych <= '~')+          goto yy32;+        goto yy29;+      }+    }+  yy31:+    yych = *++p;+  yy32:+    if (yybm[0 + yych] & 128) {+      goto yy31;+    }+    if (yych <= '>')+      goto yy33;+    if (yych <= '@')+      goto yy34;+  yy33:+    p = marker;+    goto yy29;+  yy34:+    yych = *++p;+    if (yych <= '@') {+      if (yych <= '/')+        goto yy33;+      if (yych >= ':')+        goto yy33;+    } else {+      if (yych <= 'Z')+        goto yy35;+      if (yych <= '`')+        goto yy33;+      if (yych >= '{')+        goto yy33;+    }+  yy35:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy36;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy36;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy36;+        goto yy33;+      }+    }+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy38;+      if (yych <= '/')+        goto yy33;+      goto yy39;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy39;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy39;+        goto yy33;+      }+    }+  yy36:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych <= '-')+          goto yy38;+        goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy39;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy39;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy39;+        goto yy33;+      }+    }+  yy37:+    ++p;+    { return (bufsize_t)(p - start); }+  yy38:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy40;+      if (yych <= '/')+        goto yy33;+      goto yy41;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy41;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy41;+        goto yy33;+      }+    }+  yy39:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy41;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy41;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy41;+        goto yy33;+      }+    }+  yy40:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy42;+      if (yych <= '/')+        goto yy33;+      goto yy43;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy43;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy43;+        goto yy33;+      }+    }+  yy41:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy43;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy43;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy43;+        goto yy33;+      }+    }+  yy42:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy44;+      if (yych <= '/')+        goto yy33;+      goto yy45;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy45;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy45;+        goto yy33;+      }+    }+  yy43:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy45;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy45;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy45;+        goto yy33;+      }+    }+  yy44:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy46;+      if (yych <= '/')+        goto yy33;+      goto yy47;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy47;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy47;+        goto yy33;+      }+    }+  yy45:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy47;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy47;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy47;+        goto yy33;+      }+    }+  yy46:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy48;+      if (yych <= '/')+        goto yy33;+      goto yy49;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy49;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy49;+        goto yy33;+      }+    }+  yy47:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy49;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy49;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy49;+        goto yy33;+      }+    }+  yy48:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy50;+      if (yych <= '/')+        goto yy33;+      goto yy51;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy51;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy51;+        goto yy33;+      }+    }+  yy49:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy51;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy51;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy51;+        goto yy33;+      }+    }+  yy50:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy52;+      if (yych <= '/')+        goto yy33;+      goto yy53;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy53;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy53;+        goto yy33;+      }+    }+  yy51:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy53;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy53;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy53;+        goto yy33;+      }+    }+  yy52:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy54;+      if (yych <= '/')+        goto yy33;+      goto yy55;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy55;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy55;+        goto yy33;+      }+    }+  yy53:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy55;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy55;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy55;+        goto yy33;+      }+    }+  yy54:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy56;+      if (yych <= '/')+        goto yy33;+      goto yy57;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy57;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy57;+        goto yy33;+      }+    }+  yy55:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy57;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy57;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy57;+        goto yy33;+      }+    }+  yy56:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy58;+      if (yych <= '/')+        goto yy33;+      goto yy59;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy59;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy59;+        goto yy33;+      }+    }+  yy57:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy59;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy59;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy59;+        goto yy33;+      }+    }+  yy58:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy60;+      if (yych <= '/')+        goto yy33;+      goto yy61;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy61;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy61;+        goto yy33;+      }+    }+  yy59:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy61;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy61;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy61;+        goto yy33;+      }+    }+  yy60:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy62;+      if (yych <= '/')+        goto yy33;+      goto yy63;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy63;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy63;+        goto yy33;+      }+    }+  yy61:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy63;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy63;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy63;+        goto yy33;+      }+    }+  yy62:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy64;+      if (yych <= '/')+        goto yy33;+      goto yy65;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy65;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy65;+        goto yy33;+      }+    }+  yy63:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy65;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy65;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy65;+        goto yy33;+      }+    }+  yy64:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy66;+      if (yych <= '/')+        goto yy33;+      goto yy67;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy67;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy67;+        goto yy33;+      }+    }+  yy65:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy67;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy67;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy67;+        goto yy33;+      }+    }+  yy66:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy68;+      if (yych <= '/')+        goto yy33;+      goto yy69;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy69;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy69;+        goto yy33;+      }+    }+  yy67:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy69;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy69;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy69;+        goto yy33;+      }+    }+  yy68:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy70;+      if (yych <= '/')+        goto yy33;+      goto yy71;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy71;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy71;+        goto yy33;+      }+    }+  yy69:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy71;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy71;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy71;+        goto yy33;+      }+    }+  yy70:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy72;+      if (yych <= '/')+        goto yy33;+      goto yy73;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy73;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy73;+        goto yy33;+      }+    }+  yy71:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy73;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy73;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy73;+        goto yy33;+      }+    }+  yy72:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy74;+      if (yych <= '/')+        goto yy33;+      goto yy75;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy75;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy75;+        goto yy33;+      }+    }+  yy73:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy75;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy75;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy75;+        goto yy33;+      }+    }+  yy74:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy76;+      if (yych <= '/')+        goto yy33;+      goto yy77;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy77;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy77;+        goto yy33;+      }+    }+  yy75:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy77;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy77;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy77;+        goto yy33;+      }+    }+  yy76:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy78;+      if (yych <= '/')+        goto yy33;+      goto yy79;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy79;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy79;+        goto yy33;+      }+    }+  yy77:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy79;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy79;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy79;+        goto yy33;+      }+    }+  yy78:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy80;+      if (yych <= '/')+        goto yy33;+      goto yy81;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy81;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy81;+        goto yy33;+      }+    }+  yy79:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy81;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy81;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy81;+        goto yy33;+      }+    }+  yy80:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy82;+      if (yych <= '/')+        goto yy33;+      goto yy83;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy83;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy83;+        goto yy33;+      }+    }+  yy81:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy83;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy83;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy83;+        goto yy33;+      }+    }+  yy82:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy84;+      if (yych <= '/')+        goto yy33;+      goto yy85;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy85;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy85;+        goto yy33;+      }+    }+  yy83:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy85;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy85;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy85;+        goto yy33;+      }+    }+  yy84:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy86;+      if (yych <= '/')+        goto yy33;+      goto yy87;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy87;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy87;+        goto yy33;+      }+    }+  yy85:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy87;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy87;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy87;+        goto yy33;+      }+    }+  yy86:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy88;+      if (yych <= '/')+        goto yy33;+      goto yy89;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy89;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy89;+        goto yy33;+      }+    }+  yy87:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy89;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy89;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy89;+        goto yy33;+      }+    }+  yy88:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy90;+      if (yych <= '/')+        goto yy33;+      goto yy91;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy91;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy91;+        goto yy33;+      }+    }+  yy89:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy91;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy91;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy91;+        goto yy33;+      }+    }+  yy90:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy92;+      if (yych <= '/')+        goto yy33;+      goto yy93;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy93;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy93;+        goto yy33;+      }+    }+  yy91:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy93;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy93;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy93;+        goto yy33;+      }+    }+  yy92:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy94;+      if (yych <= '/')+        goto yy33;+      goto yy95;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy95;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy95;+        goto yy33;+      }+    }+  yy93:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy95;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy95;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy95;+        goto yy33;+      }+    }+  yy94:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy96;+      if (yych <= '/')+        goto yy33;+      goto yy97;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy97;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy97;+        goto yy33;+      }+    }+  yy95:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy97;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy97;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy97;+        goto yy33;+      }+    }+  yy96:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy98;+      if (yych <= '/')+        goto yy33;+      goto yy99;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy99;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy99;+        goto yy33;+      }+    }+  yy97:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy99;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy99;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy99;+        goto yy33;+      }+    }+  yy98:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy100;+      if (yych <= '/')+        goto yy33;+      goto yy101;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy101;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy101;+        goto yy33;+      }+    }+  yy99:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy101;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy101;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy101;+        goto yy33;+      }+    }+  yy100:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy102;+      if (yych <= '/')+        goto yy33;+      goto yy103;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy103;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy103;+        goto yy33;+      }+    }+  yy101:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy103;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy103;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy103;+        goto yy33;+      }+    }+  yy102:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy104;+      if (yych <= '/')+        goto yy33;+      goto yy105;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy105;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy105;+        goto yy33;+      }+    }+  yy103:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy105;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy105;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy105;+        goto yy33;+      }+    }+  yy104:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy106;+      if (yych <= '/')+        goto yy33;+      goto yy107;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy107;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy107;+        goto yy33;+      }+    }+  yy105:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy107;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy107;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy107;+        goto yy33;+      }+    }+  yy106:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy108;+      if (yych <= '/')+        goto yy33;+      goto yy109;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy109;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy109;+        goto yy33;+      }+    }+  yy107:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy109;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy109;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy109;+        goto yy33;+      }+    }+  yy108:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy110;+      if (yych <= '/')+        goto yy33;+      goto yy111;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy111;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy111;+        goto yy33;+      }+    }+  yy109:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy111;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy111;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy111;+        goto yy33;+      }+    }+  yy110:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy112;+      if (yych <= '/')+        goto yy33;+      goto yy113;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy113;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy113;+        goto yy33;+      }+    }+  yy111:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy113;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy113;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy113;+        goto yy33;+      }+    }+  yy112:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy114;+      if (yych <= '/')+        goto yy33;+      goto yy115;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy115;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy115;+        goto yy33;+      }+    }+  yy113:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy115;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy115;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy115;+        goto yy33;+      }+    }+  yy114:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy116;+      if (yych <= '/')+        goto yy33;+      goto yy117;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy117;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy117;+        goto yy33;+      }+    }+  yy115:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy117;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy117;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy117;+        goto yy33;+      }+    }+  yy116:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy118;+      if (yych <= '/')+        goto yy33;+      goto yy119;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy119;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy119;+        goto yy33;+      }+    }+  yy117:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy119;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy119;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy119;+        goto yy33;+      }+    }+  yy118:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy120;+      if (yych <= '/')+        goto yy33;+      goto yy121;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy121;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy121;+        goto yy33;+      }+    }+  yy119:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy121;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy121;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy121;+        goto yy33;+      }+    }+  yy120:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy122;+      if (yych <= '/')+        goto yy33;+      goto yy123;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy123;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy123;+        goto yy33;+      }+    }+  yy121:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy123;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy123;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy123;+        goto yy33;+      }+    }+  yy122:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy124;+      if (yych <= '/')+        goto yy33;+      goto yy125;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy125;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy125;+        goto yy33;+      }+    }+  yy123:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy125;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy125;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy125;+        goto yy33;+      }+    }+  yy124:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy126;+      if (yych <= '/')+        goto yy33;+      goto yy127;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy127;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy127;+        goto yy33;+      }+    }+  yy125:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy127;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy127;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy127;+        goto yy33;+      }+    }+  yy126:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy128;+      if (yych <= '/')+        goto yy33;+      goto yy129;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy129;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy129;+        goto yy33;+      }+    }+  yy127:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy129;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy129;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy129;+        goto yy33;+      }+    }+  yy128:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy130;+      if (yych <= '/')+        goto yy33;+      goto yy131;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy131;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy131;+        goto yy33;+      }+    }+  yy129:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy131;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy131;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy131;+        goto yy33;+      }+    }+  yy130:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy132;+      if (yych <= '/')+        goto yy33;+      goto yy133;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy133;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy133;+        goto yy33;+      }+    }+  yy131:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy133;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy133;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy133;+        goto yy33;+      }+    }+  yy132:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy134;+      if (yych <= '/')+        goto yy33;+      goto yy135;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy135;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy135;+        goto yy33;+      }+    }+  yy133:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy135;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy135;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy135;+        goto yy33;+      }+    }+  yy134:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy136;+      if (yych <= '/')+        goto yy33;+      goto yy137;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy137;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy137;+        goto yy33;+      }+    }+  yy135:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy137;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy137;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy137;+        goto yy33;+      }+    }+  yy136:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy138;+      if (yych <= '/')+        goto yy33;+      goto yy139;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy139;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy139;+        goto yy33;+      }+    }+  yy137:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy139;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy139;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy139;+        goto yy33;+      }+    }+  yy138:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy140;+      if (yych <= '/')+        goto yy33;+      goto yy141;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy141;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy141;+        goto yy33;+      }+    }+  yy139:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy141;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy141;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy141;+        goto yy33;+      }+    }+  yy140:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy142;+      if (yych <= '/')+        goto yy33;+      goto yy143;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy143;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy143;+        goto yy33;+      }+    }+  yy141:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy143;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy143;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy143;+        goto yy33;+      }+    }+  yy142:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy144;+      if (yych <= '/')+        goto yy33;+      goto yy145;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy145;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy145;+        goto yy33;+      }+    }+  yy143:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy145;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy145;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy145;+        goto yy33;+      }+    }+  yy144:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy146;+      if (yych <= '/')+        goto yy33;+      goto yy147;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy147;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy147;+        goto yy33;+      }+    }+  yy145:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy147;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy147;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy147;+        goto yy33;+      }+    }+  yy146:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy148;+      if (yych <= '/')+        goto yy33;+      goto yy149;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy149;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy149;+        goto yy33;+      }+    }+  yy147:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy149;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy149;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy149;+        goto yy33;+      }+    }+  yy148:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy150;+      if (yych <= '/')+        goto yy33;+      goto yy151;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy151;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy151;+        goto yy33;+      }+    }+  yy149:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy151;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy151;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy151;+        goto yy33;+      }+    }+  yy150:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy152;+      if (yych <= '/')+        goto yy33;+      goto yy153;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy153;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy153;+        goto yy33;+      }+    }+  yy151:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy153;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy153;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy153;+        goto yy33;+      }+    }+  yy152:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy154;+      if (yych <= '/')+        goto yy33;+      goto yy155;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy155;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy155;+        goto yy33;+      }+    }+  yy153:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy155;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy155;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy155;+        goto yy33;+      }+    }+  yy154:+    yych = *++p;+    if (yych <= '9') {+      if (yych == '-')+        goto yy156;+      if (yych <= '/')+        goto yy33;+      goto yy157;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy33;+        goto yy157;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy157;+        goto yy33;+      }+    }+  yy155:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= ',')+          goto yy33;+        if (yych >= '.')+          goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych <= '9')+          goto yy157;+        goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+        goto yy157;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych <= 'z')+          goto yy157;+        goto yy33;+      }+    }+  yy156:+    yych = *++p;+    if (yych <= '@') {+      if (yych <= '/')+        goto yy33;+      if (yych <= '9')+        goto yy158;+      goto yy33;+    } else {+      if (yych <= 'Z')+        goto yy158;+      if (yych <= '`')+        goto yy33;+      if (yych <= 'z')+        goto yy158;+      goto yy33;+    }+  yy157:+    yych = *++p;+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych <= '-')+          goto yy33;+        goto yy34;+      } else {+        if (yych <= '/')+          goto yy33;+        if (yych >= ':')+          goto yy33;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy37;+        if (yych <= '@')+          goto yy33;+      } else {+        if (yych <= '`')+          goto yy33;+        if (yych >= '{')+          goto yy33;+      }+    }+  yy158:+    yych = *++p;+    if (yych == '.')+      goto yy34;+    if (yych == '>')+      goto yy37;+    goto yy33;+  }+}++// Try to match an HTML tag after first <, returning num of chars matched.+bufsize_t _scan_html_tag(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0,   224, 224, 224, 224, 224, 224, 224, 224, 200, 200, 200, 200, 200,+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,+        224, 224, 224, 224, 200, 224, 128, 224, 224, 224, 224, 64,  224, 224,+        224, 224, 224, 244, 240, 224, 244, 244, 244, 244, 244, 244, 244, 244,+        244, 244, 240, 224, 192, 192, 192, 224, 224, 244, 244, 244, 244, 244,+        244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,+        244, 244, 244, 244, 244, 244, 244, 224, 224, 224, 224, 240, 192, 244,+        244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,+        244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 224, 224, 224,+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych <= '@') {+      if (yych == '/')+        goto yy162;+    } else {+      if (yych <= 'Z')+        goto yy163;+      if (yych <= '`')+        goto yy160;+      if (yych <= 'z')+        goto yy163;+    }+  yy160:+    ++p;+  yy161 : { return 0; }+  yy162:+    yych = *(marker = ++p);+    if (yych <= '@')+      goto yy161;+    if (yych <= 'Z')+      goto yy164;+    if (yych <= '`')+      goto yy161;+    if (yych <= 'z')+      goto yy164;+    goto yy161;+  yy163:+    yych = *(marker = ++p);+    if (yych <= '.') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy161;+        if (yych <= '\r')+          goto yy168;+        goto yy161;+      } else {+        if (yych <= ' ')+          goto yy168;+        if (yych == '-')+          goto yy168;+        goto yy161;+      }+    } else {+      if (yych <= '@') {+        if (yych <= '9')+          goto yy168;+        if (yych == '>')+          goto yy168;+        goto yy161;+      } else {+        if (yych <= 'Z')+          goto yy168;+        if (yych <= '`')+          goto yy161;+        if (yych <= 'z')+          goto yy168;+        goto yy161;+      }+    }+  yy164:+    yych = *++p;+    if (yybm[0 + yych] & 4) {+      goto yy164;+    }+    if (yych <= 0x1F) {+      if (yych <= 0x08)+        goto yy165;+      if (yych <= '\r')+        goto yy171;+    } else {+      if (yych <= ' ')+        goto yy171;+      if (yych == '>')+        goto yy170;+    }+  yy165:+    p = marker;+    goto yy161;+  yy166:+    yych = *++p;+    if (yybm[0 + yych] & 8) {+      goto yy166;+    }+    if (yych <= '>') {+      if (yych <= '9') {+        if (yych == '/')+          goto yy169;+        goto yy165;+      } else {+        if (yych <= ':')+          goto yy172;+        if (yych <= '=')+          goto yy165;+        goto yy170;+      }+    } else {+      if (yych <= '^') {+        if (yych <= '@')+          goto yy165;+        if (yych <= 'Z')+          goto yy172;+        goto yy165;+      } else {+        if (yych == '`')+          goto yy165;+        if (yych <= 'z')+          goto yy172;+        goto yy165;+      }+    }+  yy167:+    yych = *++p;+  yy168:+    if (yybm[0 + yych] & 8) {+      goto yy166;+    }+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych == '-')+          goto yy167;+        goto yy165;+      } else {+        if (yych <= '/')+          goto yy169;+        if (yych <= '9')+          goto yy167;+        goto yy165;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy170;+        if (yych <= '@')+          goto yy165;+        goto yy167;+      } else {+        if (yych <= '`')+          goto yy165;+        if (yych <= 'z')+          goto yy167;+        goto yy165;+      }+    }+  yy169:+    yych = *++p;+    if (yych != '>')+      goto yy165;+  yy170:+    ++p;+    { return (bufsize_t)(p - start); }+  yy171:+    yych = *++p;+    if (yych <= 0x1F) {+      if (yych <= 0x08)+        goto yy165;+      if (yych <= '\r')+        goto yy171;+      goto yy165;+    } else {+      if (yych <= ' ')+        goto yy171;+      if (yych == '>')+        goto yy170;+      goto yy165;+    }+  yy172:+    yych = *++p;+    if (yybm[0 + yych] & 16) {+      goto yy172;+    }+    if (yych <= ',') {+      if (yych <= '\r') {+        if (yych <= 0x08)+          goto yy165;+      } else {+        if (yych != ' ')+          goto yy165;+      }+    } else {+      if (yych <= '<') {+        if (yych <= '/')+          goto yy169;+        goto yy165;+      } else {+        if (yych <= '=')+          goto yy174;+        if (yych <= '>')+          goto yy170;+        goto yy165;+      }+    }+  yy173:+    yych = *++p;+    if (yych <= '<') {+      if (yych <= ' ') {+        if (yych <= 0x08)+          goto yy165;+        if (yych <= '\r')+          goto yy173;+        if (yych <= 0x1F)+          goto yy165;+        goto yy173;+      } else {+        if (yych <= '/') {+          if (yych <= '.')+            goto yy165;+          goto yy169;+        } else {+          if (yych == ':')+            goto yy172;+          goto yy165;+        }+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '=')+          goto yy174;+        if (yych <= '>')+          goto yy170;+        if (yych <= '@')+          goto yy165;+        goto yy172;+      } else {+        if (yych <= '_') {+          if (yych <= '^')+            goto yy165;+          goto yy172;+        } else {+          if (yych <= '`')+            goto yy165;+          if (yych <= 'z')+            goto yy172;+          goto yy165;+        }+      }+    }+  yy174:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy175;+    }+    if (yych <= 0xE0) {+      if (yych <= '"') {+        if (yych <= 0x00)+          goto yy165;+        if (yych <= ' ')+          goto yy174;+        goto yy176;+      } else {+        if (yych <= '\'')+          goto yy177;+        if (yych <= 0xC1)+          goto yy165;+        if (yych <= 0xDF)+          goto yy178;+        goto yy179;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy181;+        goto yy180;+      } else {+        if (yych <= 0xF0)+          goto yy182;+        if (yych <= 0xF3)+          goto yy183;+        if (yych <= 0xF4)+          goto yy184;+        goto yy165;+      }+    }+  yy175:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy175;+    }+    if (yych <= 0xE0) {+      if (yych <= '=') {+        if (yych <= 0x00)+          goto yy165;+        if (yych <= ' ')+          goto yy166;+        goto yy165;+      } else {+        if (yych <= '>')+          goto yy170;+        if (yych <= 0xC1)+          goto yy165;+        if (yych <= 0xDF)+          goto yy178;+        goto yy179;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy181;+        goto yy180;+      } else {+        if (yych <= 0xF0)+          goto yy182;+        if (yych <= 0xF3)+          goto yy183;+        if (yych <= 0xF4)+          goto yy184;+        goto yy165;+      }+    }+  yy176:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy176;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy165;+        if (yych <= '"')+          goto yy185;+        goto yy165;+      } else {+        if (yych <= 0xDF)+          goto yy186;+        if (yych <= 0xE0)+          goto yy187;+        goto yy188;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy189;+        if (yych <= 0xEF)+          goto yy188;+        goto yy190;+      } else {+        if (yych <= 0xF3)+          goto yy191;+        if (yych <= 0xF4)+          goto yy192;+        goto yy165;+      }+    }+  yy177:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy177;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy165;+        if (yych <= '\'')+          goto yy185;+        goto yy165;+      } else {+        if (yych <= 0xDF)+          goto yy193;+        if (yych <= 0xE0)+          goto yy194;+        goto yy195;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy196;+        if (yych <= 0xEF)+          goto yy195;+        goto yy197;+      } else {+        if (yych <= 0xF3)+          goto yy198;+        if (yych <= 0xF4)+          goto yy199;+        goto yy165;+      }+    }+  yy178:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy175;+    goto yy165;+  yy179:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy178;+    goto yy165;+  yy180:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy178;+    goto yy165;+  yy181:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0x9F)+      goto yy178;+    goto yy165;+  yy182:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy180;+    goto yy165;+  yy183:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy180;+    goto yy165;+  yy184:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0x8F)+      goto yy180;+    goto yy165;+  yy185:+    yych = *++p;+    if (yybm[0 + yych] & 8) {+      goto yy166;+    }+    if (yych == '/')+      goto yy169;+    if (yych == '>')+      goto yy170;+    goto yy165;+  yy186:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy176;+    goto yy165;+  yy187:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy186;+    goto yy165;+  yy188:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy186;+    goto yy165;+  yy189:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0x9F)+      goto yy186;+    goto yy165;+  yy190:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy188;+    goto yy165;+  yy191:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy188;+    goto yy165;+  yy192:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0x8F)+      goto yy188;+    goto yy165;+  yy193:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy177;+    goto yy165;+  yy194:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy193;+    goto yy165;+  yy195:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy193;+    goto yy165;+  yy196:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0x9F)+      goto yy193;+    goto yy165;+  yy197:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy195;+    goto yy165;+  yy198:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0xBF)+      goto yy195;+    goto yy165;+  yy199:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy165;+    if (yych <= 0x8F)+      goto yy195;+    goto yy165;+  }+}++// Try to (liberally) match an HTML tag after first <, returning num of chars+// matched.+bufsize_t _scan_liberal_html_tag(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,  64, 64, 64, 64, 64, 64, 64, 64,  64, 0,  64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,+    };+    yych = *p;+    if (yych <= 0xE0) {+      if (yych <= '\n') {+        if (yych <= 0x00)+          goto yy201;+        if (yych <= '\t')+          goto yy203;+      } else {+        if (yych <= 0x7F)+          goto yy203;+        if (yych <= 0xC1)+          goto yy201;+        if (yych <= 0xDF)+          goto yy204;+        goto yy205;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy207;+        goto yy206;+      } else {+        if (yych <= 0xF0)+          goto yy208;+        if (yych <= 0xF3)+          goto yy209;+        if (yych <= 0xF4)+          goto yy210;+      }+    }+  yy201:+    ++p;+  yy202 : { return 0; }+  yy203:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy202;+      if (yych <= '\t')+        goto yy212;+      goto yy202;+    } else {+      if (yych <= 0x7F)+        goto yy212;+      if (yych <= 0xC1)+        goto yy202;+      if (yych <= 0xF4)+        goto yy212;+      goto yy202;+    }+  yy204:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy202;+    if (yych <= 0xBF)+      goto yy211;+    goto yy202;+  yy205:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy202;+    if (yych <= 0xBF)+      goto yy216;+    goto yy202;+  yy206:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy202;+    if (yych <= 0xBF)+      goto yy216;+    goto yy202;+  yy207:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy202;+    if (yych <= 0x9F)+      goto yy216;+    goto yy202;+  yy208:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy202;+    if (yych <= 0xBF)+      goto yy218;+    goto yy202;+  yy209:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy202;+    if (yych <= 0xBF)+      goto yy218;+    goto yy202;+  yy210:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy202;+    if (yych <= 0x8F)+      goto yy218;+    goto yy202;+  yy211:+    yych = *++p;+  yy212:+    if (yybm[0 + yych] & 64) {+      goto yy211;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy213;+        if (yych <= '>')+          goto yy214;+      } else {+        if (yych <= 0xDF)+          goto yy216;+        if (yych <= 0xE0)+          goto yy217;+        goto yy218;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy219;+        if (yych <= 0xEF)+          goto yy218;+        goto yy220;+      } else {+        if (yych <= 0xF3)+          goto yy221;+        if (yych <= 0xF4)+          goto yy222;+      }+    }+  yy213:+    p = marker;+    if (yyaccept == 0) {+      goto yy202;+    } else {+      goto yy215;+    }+  yy214:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy211;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy215;+        if (yych <= '>')+          goto yy214;+      } else {+        if (yych <= 0xDF)+          goto yy216;+        if (yych <= 0xE0)+          goto yy217;+        goto yy218;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy219;+        if (yych <= 0xEF)+          goto yy218;+        goto yy220;+      } else {+        if (yych <= 0xF3)+          goto yy221;+        if (yych <= 0xF4)+          goto yy222;+      }+    }+  yy215 : { return (bufsize_t)(p - start); }+  yy216:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy213;+    if (yych <= 0xBF)+      goto yy211;+    goto yy213;+  yy217:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy213;+    if (yych <= 0xBF)+      goto yy216;+    goto yy213;+  yy218:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy213;+    if (yych <= 0xBF)+      goto yy216;+    goto yy213;+  yy219:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy213;+    if (yych <= 0x9F)+      goto yy216;+    goto yy213;+  yy220:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy213;+    if (yych <= 0xBF)+      goto yy218;+    goto yy213;+  yy221:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy213;+    if (yych <= 0xBF)+      goto yy218;+    goto yy213;+  yy222:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy213;+    if (yych <= 0x8F)+      goto yy218;+    goto yy213;+  }+}++bufsize_t _scan_html_comment(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych == '-')+      goto yy225;+    ++p;+  yy224 : { return 0; }+  yy225:+    yych = *(marker = ++p);+    if (yych != '-')+      goto yy224;+  yy226:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy226;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy227;+        if (yych <= '-')+          goto yy228;+      } else {+        if (yych <= 0xDF)+          goto yy229;+        if (yych <= 0xE0)+          goto yy230;+        goto yy231;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy232;+        if (yych <= 0xEF)+          goto yy231;+        goto yy233;+      } else {+        if (yych <= 0xF3)+          goto yy234;+        if (yych <= 0xF4)+          goto yy235;+      }+    }+  yy227:+    p = marker;+    goto yy224;+  yy228:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy226;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy227;+        if (yych <= '-')+          goto yy236;+        goto yy227;+      } else {+        if (yych <= 0xDF)+          goto yy229;+        if (yych <= 0xE0)+          goto yy230;+        goto yy231;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy232;+        if (yych <= 0xEF)+          goto yy231;+        goto yy233;+      } else {+        if (yych <= 0xF3)+          goto yy234;+        if (yych <= 0xF4)+          goto yy235;+        goto yy227;+      }+    }+  yy229:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy227;+    if (yych <= 0xBF)+      goto yy226;+    goto yy227;+  yy230:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy227;+    if (yych <= 0xBF)+      goto yy229;+    goto yy227;+  yy231:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy227;+    if (yych <= 0xBF)+      goto yy229;+    goto yy227;+  yy232:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy227;+    if (yych <= 0x9F)+      goto yy229;+    goto yy227;+  yy233:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy227;+    if (yych <= 0xBF)+      goto yy231;+    goto yy227;+  yy234:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy227;+    if (yych <= 0xBF)+      goto yy231;+    goto yy227;+  yy235:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy227;+    if (yych <= 0x8F)+      goto yy231;+    goto yy227;+  yy236:+    yych = *++p;+    if (yych <= 0xE0) {+      if (yych <= '>') {+        if (yych <= 0x00)+          goto yy227;+        if (yych <= '=')+          goto yy226;+      } else {+        if (yych <= 0x7F)+          goto yy226;+        if (yych <= 0xC1)+          goto yy227;+        if (yych <= 0xDF)+          goto yy229;+        goto yy230;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy232;+        goto yy231;+      } else {+        if (yych <= 0xF0)+          goto yy233;+        if (yych <= 0xF3)+          goto yy234;+        if (yych <= 0xF4)+          goto yy235;+        goto yy227;+      }+    }+    ++p;+    { return (bufsize_t)(p - start); }+  }+}++bufsize_t _scan_html_pi(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yybm[0 + yych] & 128) {+      goto yy240;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy238;+        if (yych <= '?')+          goto yy243;+      } else {+        if (yych <= 0xDF)+          goto yy244;+        if (yych <= 0xE0)+          goto yy245;+        goto yy246;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy247;+        if (yych <= 0xEF)+          goto yy246;+        goto yy248;+      } else {+        if (yych <= 0xF3)+          goto yy249;+        if (yych <= 0xF4)+          goto yy250;+      }+    }+  yy238:+    ++p;+  yy239 : { return 0; }+  yy240:+    yyaccept = 0;+    yych = *(marker = ++p);+  yy241:+    if (yybm[0 + yych] & 128) {+      goto yy240;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy242;+        if (yych <= '?')+          goto yy251;+      } else {+        if (yych <= 0xDF)+          goto yy253;+        if (yych <= 0xE0)+          goto yy254;+        goto yy255;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy256;+        if (yych <= 0xEF)+          goto yy255;+        goto yy257;+      } else {+        if (yych <= 0xF3)+          goto yy258;+        if (yych <= 0xF4)+          goto yy259;+      }+    }+  yy242 : { return (bufsize_t)(p - start); }+  yy243:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= '?') {+      if (yych <= 0x00)+        goto yy239;+      if (yych <= '=')+        goto yy241;+      if (yych <= '>')+        goto yy239;+      goto yy240;+    } else {+      if (yych <= 0x7F)+        goto yy241;+      if (yych <= 0xC1)+        goto yy239;+      if (yych <= 0xF4)+        goto yy241;+      goto yy239;+    }+  yy244:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy239;+    if (yych <= 0xBF)+      goto yy240;+    goto yy239;+  yy245:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy239;+    if (yych <= 0xBF)+      goto yy253;+    goto yy239;+  yy246:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy239;+    if (yych <= 0xBF)+      goto yy253;+    goto yy239;+  yy247:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy239;+    if (yych <= 0x9F)+      goto yy253;+    goto yy239;+  yy248:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy239;+    if (yych <= 0xBF)+      goto yy255;+    goto yy239;+  yy249:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy239;+    if (yych <= 0xBF)+      goto yy255;+    goto yy239;+  yy250:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy239;+    if (yych <= 0x8F)+      goto yy255;+    goto yy239;+  yy251:+    yych = *++p;+    if (yych <= 0xE0) {+      if (yych <= '>') {+        if (yych <= 0x00)+          goto yy252;+        if (yych <= '=')+          goto yy240;+      } else {+        if (yych <= 0x7F)+          goto yy240;+        if (yych <= 0xC1)+          goto yy252;+        if (yych <= 0xDF)+          goto yy253;+        goto yy254;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy256;+        goto yy255;+      } else {+        if (yych <= 0xF0)+          goto yy257;+        if (yych <= 0xF3)+          goto yy258;+        if (yych <= 0xF4)+          goto yy259;+      }+    }+  yy252:+    p = marker;+    if (yyaccept == 0) {+      goto yy242;+    } else {+      goto yy239;+    }+  yy253:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy252;+    if (yych <= 0xBF)+      goto yy240;+    goto yy252;+  yy254:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy252;+    if (yych <= 0xBF)+      goto yy253;+    goto yy252;+  yy255:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy252;+    if (yych <= 0xBF)+      goto yy253;+    goto yy252;+  yy256:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy252;+    if (yych <= 0x9F)+      goto yy253;+    goto yy252;+  yy257:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy252;+    if (yych <= 0xBF)+      goto yy255;+    goto yy252;+  yy258:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy252;+    if (yych <= 0xBF)+      goto yy255;+    goto yy252;+  yy259:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy252;+    if (yych <= 0x8F)+      goto yy255;+    goto yy252;+  }+}++bufsize_t _scan_html_declaration(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,   64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,+        64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,+        64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,+        64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,+        64,  64,  64,  64,  64,  64,  0,   64,  64,  192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 64,  64,  64,  64,  64,  64,  64,+        64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,+        64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,+        64,  64,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych <= '@')+      goto yy261;+    if (yych <= 'Z')+      goto yy263;+  yy261:+    ++p;+  yy262 : { return 0; }+  yy263:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy266;+    }+    if (yych <= 0x08)+      goto yy262;+    if (yych <= '\r')+      goto yy264;+    if (yych != ' ')+      goto yy262;+  yy264:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy264;+    }+    if (yych <= 0xED) {+      if (yych <= 0xDF) {+        if (yych >= 0xC2)+          goto yy268;+      } else {+        if (yych <= 0xE0)+          goto yy269;+        if (yych <= 0xEC)+          goto yy270;+        goto yy271;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xEF)+          goto yy270;+        goto yy272;+      } else {+        if (yych <= 0xF3)+          goto yy273;+        if (yych <= 0xF4)+          goto yy274;+      }+    }+  yy265 : { return (bufsize_t)(p - start); }+  yy266:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy266;+    }+    if (yych <= 0x08)+      goto yy267;+    if (yych <= '\r')+      goto yy264;+    if (yych == ' ')+      goto yy264;+  yy267:+    p = marker;+    if (yyaccept == 0) {+      goto yy262;+    } else {+      goto yy265;+    }+  yy268:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy267;+    if (yych <= 0xBF)+      goto yy264;+    goto yy267;+  yy269:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy267;+    if (yych <= 0xBF)+      goto yy268;+    goto yy267;+  yy270:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy267;+    if (yych <= 0xBF)+      goto yy268;+    goto yy267;+  yy271:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy267;+    if (yych <= 0x9F)+      goto yy268;+    goto yy267;+  yy272:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy267;+    if (yych <= 0xBF)+      goto yy270;+    goto yy267;+  yy273:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy267;+    if (yych <= 0xBF)+      goto yy270;+    goto yy267;+  yy274:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy267;+    if (yych <= 0x8F)+      goto yy270;+    goto yy267;+  }+}++bufsize_t _scan_html_cdata(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych == 'C')+      goto yy277;+    if (yych == 'c')+      goto yy277;+    ++p;+  yy276 : { return 0; }+  yy277:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych == 'D')+      goto yy278;+    if (yych != 'd')+      goto yy276;+  yy278:+    yych = *++p;+    if (yych == 'A')+      goto yy280;+    if (yych == 'a')+      goto yy280;+  yy279:+    p = marker;+    if (yyaccept == 0) {+      goto yy276;+    } else {+      goto yy284;+    }+  yy280:+    yych = *++p;+    if (yych == 'T')+      goto yy281;+    if (yych != 't')+      goto yy279;+  yy281:+    yych = *++p;+    if (yych == 'A')+      goto yy282;+    if (yych != 'a')+      goto yy279;+  yy282:+    yych = *++p;+    if (yych != '[')+      goto yy279;+  yy283:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy283;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy284;+        if (yych <= ']')+          goto yy285;+      } else {+        if (yych <= 0xDF)+          goto yy286;+        if (yych <= 0xE0)+          goto yy287;+        goto yy288;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy289;+        if (yych <= 0xEF)+          goto yy288;+        goto yy290;+      } else {+        if (yych <= 0xF3)+          goto yy291;+        if (yych <= 0xF4)+          goto yy292;+      }+    }+  yy284 : { return (bufsize_t)(p - start); }+  yy285:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy283;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy279;+        if (yych <= ']')+          goto yy293;+        goto yy279;+      } else {+        if (yych <= 0xDF)+          goto yy286;+        if (yych <= 0xE0)+          goto yy287;+        goto yy288;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy289;+        if (yych <= 0xEF)+          goto yy288;+        goto yy290;+      } else {+        if (yych <= 0xF3)+          goto yy291;+        if (yych <= 0xF4)+          goto yy292;+        goto yy279;+      }+    }+  yy286:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy279;+    if (yych <= 0xBF)+      goto yy283;+    goto yy279;+  yy287:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy279;+    if (yych <= 0xBF)+      goto yy286;+    goto yy279;+  yy288:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy279;+    if (yych <= 0xBF)+      goto yy286;+    goto yy279;+  yy289:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy279;+    if (yych <= 0x9F)+      goto yy286;+    goto yy279;+  yy290:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy279;+    if (yych <= 0xBF)+      goto yy288;+    goto yy279;+  yy291:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy279;+    if (yych <= 0xBF)+      goto yy288;+    goto yy279;+  yy292:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy279;+    if (yych <= 0x8F)+      goto yy288;+    goto yy279;+  yy293:+    yych = *++p;+    if (yych <= 0xE0) {+      if (yych <= '>') {+        if (yych <= 0x00)+          goto yy279;+        if (yych <= '=')+          goto yy283;+        goto yy279;+      } else {+        if (yych <= 0x7F)+          goto yy283;+        if (yych <= 0xC1)+          goto yy279;+        if (yych <= 0xDF)+          goto yy286;+        goto yy287;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy289;+        goto yy288;+      } else {+        if (yych <= 0xF0)+          goto yy290;+        if (yych <= 0xF3)+          goto yy291;+        if (yych <= 0xF4)+          goto yy292;+        goto yy279;+      }+    }+  }+}++// Try to match an HTML block tag start line, returning+// an integer code for the type of block (1-6, matching the spec).+// #7 is handled by a separate function, below.+bufsize_t _scan_html_block_start(const unsigned char *p) {+  const unsigned char *marker = NULL;++  {+    unsigned char yych;+    yych = *p;+    if (yych == '<')+      goto yy296;+    ++p;+  yy295 : { return 0; }+  yy296:+    yych = *(marker = ++p);+    switch (yych) {+    case '!':+      goto yy297;+    case '/':+      goto yy299;+    case '?':+      goto yy300;+    case 'A':+    case 'a':+      goto yy301;+    case 'B':+    case 'b':+      goto yy302;+    case 'C':+    case 'c':+      goto yy303;+    case 'D':+    case 'd':+      goto yy304;+    case 'F':+    case 'f':+      goto yy305;+    case 'H':+    case 'h':+      goto yy306;+    case 'I':+    case 'i':+      goto yy307;+    case 'L':+    case 'l':+      goto yy308;+    case 'M':+    case 'm':+      goto yy309;+    case 'N':+    case 'n':+      goto yy310;+    case 'O':+    case 'o':+      goto yy311;+    case 'P':+    case 'p':+      goto yy312;+    case 'S':+    case 's':+      goto yy313;+    case 'T':+    case 't':+      goto yy314;+    case 'U':+    case 'u':+      goto yy315;+    default:+      goto yy295;+    }+  yy297:+    yych = *++p;+    if (yych <= '@') {+      if (yych == '-')+        goto yy316;+    } else {+      if (yych <= 'Z')+        goto yy317;+      if (yych <= '[')+        goto yy318;+    }+  yy298:+    p = marker;+    goto yy295;+  yy299:+    yych = *++p;+    switch (yych) {+    case 'A':+    case 'a':+      goto yy301;+    case 'B':+    case 'b':+      goto yy302;+    case 'C':+    case 'c':+      goto yy303;+    case 'D':+    case 'd':+      goto yy304;+    case 'F':+    case 'f':+      goto yy305;+    case 'H':+    case 'h':+      goto yy306;+    case 'I':+    case 'i':+      goto yy307;+    case 'L':+    case 'l':+      goto yy308;+    case 'M':+    case 'm':+      goto yy309;+    case 'N':+    case 'n':+      goto yy310;+    case 'O':+    case 'o':+      goto yy311;+    case 'P':+    case 'p':+      goto yy319;+    case 'S':+    case 's':+      goto yy320;+    case 'T':+    case 't':+      goto yy321;+    case 'U':+    case 'u':+      goto yy315;+    default:+      goto yy298;+    }+  yy300:+    ++p;+    { return 3; }+  yy301:+    yych = *++p;+    if (yych <= 'S') {+      if (yych <= 'D') {+        if (yych <= 'C')+          goto yy298;+        goto yy322;+      } else {+        if (yych <= 'Q')+          goto yy298;+        if (yych <= 'R')+          goto yy323;+        goto yy324;+      }+    } else {+      if (yych <= 'q') {+        if (yych == 'd')+          goto yy322;+        goto yy298;+      } else {+        if (yych <= 'r')+          goto yy323;+        if (yych <= 's')+          goto yy324;+        goto yy298;+      }+    }+  yy302:+    yych = *++p;+    if (yych <= 'O') {+      if (yych <= 'K') {+        if (yych == 'A')+          goto yy325;+        goto yy298;+      } else {+        if (yych <= 'L')+          goto yy326;+        if (yych <= 'N')+          goto yy298;+        goto yy327;+      }+    } else {+      if (yych <= 'k') {+        if (yych == 'a')+          goto yy325;+        goto yy298;+      } else {+        if (yych <= 'l')+          goto yy326;+        if (yych == 'o')+          goto yy327;+        goto yy298;+      }+    }+  yy303:+    yych = *++p;+    if (yych <= 'O') {+      if (yych <= 'D') {+        if (yych == 'A')+          goto yy328;+        goto yy298;+      } else {+        if (yych <= 'E')+          goto yy329;+        if (yych <= 'N')+          goto yy298;+        goto yy330;+      }+    } else {+      if (yych <= 'd') {+        if (yych == 'a')+          goto yy328;+        goto yy298;+      } else {+        if (yych <= 'e')+          goto yy329;+        if (yych == 'o')+          goto yy330;+        goto yy298;+      }+    }+  yy304:+    yych = *++p;+    switch (yych) {+    case 'D':+    case 'L':+    case 'T':+    case 'd':+    case 'l':+    case 't':+      goto yy331;+    case 'E':+    case 'e':+      goto yy332;+    case 'I':+    case 'i':+      goto yy333;+    default:+      goto yy298;+    }+  yy305:+    yych = *++p;+    if (yych <= 'R') {+      if (yych <= 'N') {+        if (yych == 'I')+          goto yy334;+        goto yy298;+      } else {+        if (yych <= 'O')+          goto yy335;+        if (yych <= 'Q')+          goto yy298;+        goto yy336;+      }+    } else {+      if (yych <= 'n') {+        if (yych == 'i')+          goto yy334;+        goto yy298;+      } else {+        if (yych <= 'o')+          goto yy335;+        if (yych == 'r')+          goto yy336;+        goto yy298;+      }+    }+  yy306:+    yych = *++p;+    if (yych <= 'S') {+      if (yych <= 'D') {+        if (yych <= '0')+          goto yy298;+        if (yych <= '6')+          goto yy331;+        goto yy298;+      } else {+        if (yych <= 'E')+          goto yy337;+        if (yych == 'R')+          goto yy331;+        goto yy298;+      }+    } else {+      if (yych <= 'q') {+        if (yych <= 'T')+          goto yy338;+        if (yych == 'e')+          goto yy337;+        goto yy298;+      } else {+        if (yych <= 'r')+          goto yy331;+        if (yych == 't')+          goto yy338;+        goto yy298;+      }+    }+  yy307:+    yych = *++p;+    if (yych == 'F')+      goto yy339;+    if (yych == 'f')+      goto yy339;+    goto yy298;+  yy308:+    yych = *++p;+    if (yych <= 'I') {+      if (yych == 'E')+        goto yy340;+      if (yych <= 'H')+        goto yy298;+      goto yy341;+    } else {+      if (yych <= 'e') {+        if (yych <= 'd')+          goto yy298;+        goto yy340;+      } else {+        if (yych == 'i')+          goto yy341;+        goto yy298;+      }+    }+  yy309:+    yych = *++p;+    if (yych <= 'E') {+      if (yych == 'A')+        goto yy342;+      if (yych <= 'D')+        goto yy298;+      goto yy343;+    } else {+      if (yych <= 'a') {+        if (yych <= '`')+          goto yy298;+        goto yy342;+      } else {+        if (yych == 'e')+          goto yy343;+        goto yy298;+      }+    }+  yy310:+    yych = *++p;+    if (yych <= 'O') {+      if (yych == 'A')+        goto yy344;+      if (yych <= 'N')+        goto yy298;+      goto yy345;+    } else {+      if (yych <= 'a') {+        if (yych <= '`')+          goto yy298;+        goto yy344;+      } else {+        if (yych == 'o')+          goto yy345;+        goto yy298;+      }+    }+  yy311:+    yych = *++p;+    if (yych <= 'P') {+      if (yych == 'L')+        goto yy331;+      if (yych <= 'O')+        goto yy298;+      goto yy346;+    } else {+      if (yych <= 'l') {+        if (yych <= 'k')+          goto yy298;+        goto yy331;+      } else {+        if (yych == 'p')+          goto yy346;+        goto yy298;+      }+    }+  yy312:+    yych = *++p;+    if (yych <= '>') {+      if (yych <= ' ') {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        if (yych <= 0x1F)+          goto yy298;+        goto yy347;+      } else {+        if (yych == '/')+          goto yy348;+        if (yych <= '=')+          goto yy298;+        goto yy347;+      }+    } else {+      if (yych <= 'R') {+        if (yych == 'A')+          goto yy349;+        if (yych <= 'Q')+          goto yy298;+        goto yy350;+      } else {+        if (yych <= 'a') {+          if (yych <= '`')+            goto yy298;+          goto yy349;+        } else {+          if (yych == 'r')+            goto yy350;+          goto yy298;+        }+      }+    }+  yy313:+    yych = *++p;+    switch (yych) {+    case 'C':+    case 'c':+      goto yy351;+    case 'E':+    case 'e':+      goto yy352;+    case 'O':+    case 'o':+      goto yy353;+    case 'T':+    case 't':+      goto yy354;+    case 'U':+    case 'u':+      goto yy355;+    default:+      goto yy298;+    }+  yy314:+    yych = *++p;+    switch (yych) {+    case 'A':+    case 'a':+      goto yy356;+    case 'B':+    case 'b':+      goto yy357;+    case 'D':+    case 'd':+      goto yy331;+    case 'E':+    case 'e':+      goto yy358;+    case 'F':+    case 'f':+      goto yy359;+    case 'H':+    case 'h':+      goto yy360;+    case 'I':+    case 'i':+      goto yy361;+    case 'R':+    case 'r':+      goto yy362;+    default:+      goto yy298;+    }+  yy315:+    yych = *++p;+    if (yych == 'L')+      goto yy331;+    if (yych == 'l')+      goto yy331;+    goto yy298;+  yy316:+    yych = *++p;+    if (yych == '-')+      goto yy363;+    goto yy298;+  yy317:+    ++p;+    { return 4; }+  yy318:+    yych = *++p;+    if (yych == 'C')+      goto yy364;+    if (yych == 'c')+      goto yy364;+    goto yy298;+  yy319:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= '@') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'A')+          goto yy349;+        if (yych == 'a')+          goto yy349;+        goto yy298;+      }+    }+  yy320:+    yych = *++p;+    if (yych <= 'U') {+      if (yych <= 'N') {+        if (yych == 'E')+          goto yy352;+        goto yy298;+      } else {+        if (yych <= 'O')+          goto yy353;+        if (yych <= 'T')+          goto yy298;+        goto yy355;+      }+    } else {+      if (yych <= 'n') {+        if (yych == 'e')+          goto yy352;+        goto yy298;+      } else {+        if (yych <= 'o')+          goto yy353;+        if (yych == 'u')+          goto yy355;+        goto yy298;+      }+    }+  yy321:+    yych = *++p;+    switch (yych) {+    case 'A':+    case 'a':+      goto yy356;+    case 'B':+    case 'b':+      goto yy357;+    case 'D':+    case 'd':+      goto yy331;+    case 'F':+    case 'f':+      goto yy359;+    case 'H':+    case 'h':+      goto yy360;+    case 'I':+    case 'i':+      goto yy361;+    case 'R':+    case 'r':+      goto yy362;+    default:+      goto yy298;+    }+  yy322:+    yych = *++p;+    if (yych == 'D')+      goto yy365;+    if (yych == 'd')+      goto yy365;+    goto yy298;+  yy323:+    yych = *++p;+    if (yych == 'T')+      goto yy366;+    if (yych == 't')+      goto yy366;+    goto yy298;+  yy324:+    yych = *++p;+    if (yych == 'I')+      goto yy367;+    if (yych == 'i')+      goto yy367;+    goto yy298;+  yy325:+    yych = *++p;+    if (yych == 'S')+      goto yy368;+    if (yych == 's')+      goto yy368;+    goto yy298;+  yy326:+    yych = *++p;+    if (yych == 'O')+      goto yy369;+    if (yych == 'o')+      goto yy369;+    goto yy298;+  yy327:+    yych = *++p;+    if (yych == 'D')+      goto yy370;+    if (yych == 'd')+      goto yy370;+    goto yy298;+  yy328:+    yych = *++p;+    if (yych == 'P')+      goto yy371;+    if (yych == 'p')+      goto yy371;+    goto yy298;+  yy329:+    yych = *++p;+    if (yych == 'N')+      goto yy372;+    if (yych == 'n')+      goto yy372;+    goto yy298;+  yy330:+    yych = *++p;+    if (yych == 'L')+      goto yy373;+    if (yych == 'l')+      goto yy373;+    goto yy298;+  yy331:+    yych = *++p;+    if (yych <= ' ') {+      if (yych <= 0x08)+        goto yy298;+      if (yych <= '\r')+        goto yy347;+      if (yych <= 0x1F)+        goto yy298;+      goto yy347;+    } else {+      if (yych <= '/') {+        if (yych <= '.')+          goto yy298;+        goto yy348;+      } else {+        if (yych == '>')+          goto yy347;+        goto yy298;+      }+    }+  yy332:+    yych = *++p;+    if (yych == 'T')+      goto yy374;+    if (yych == 't')+      goto yy374;+    goto yy298;+  yy333:+    yych = *++p;+    if (yych <= 'V') {+      if (yych <= 'Q') {+        if (yych == 'A')+          goto yy375;+        goto yy298;+      } else {+        if (yych <= 'R')+          goto yy331;+        if (yych <= 'U')+          goto yy298;+        goto yy331;+      }+    } else {+      if (yych <= 'q') {+        if (yych == 'a')+          goto yy375;+        goto yy298;+      } else {+        if (yych <= 'r')+          goto yy331;+        if (yych == 'v')+          goto yy331;+        goto yy298;+      }+    }+  yy334:+    yych = *++p;+    if (yych <= 'G') {+      if (yych == 'E')+        goto yy376;+      if (yych <= 'F')+        goto yy298;+      goto yy377;+    } else {+      if (yych <= 'e') {+        if (yych <= 'd')+          goto yy298;+        goto yy376;+      } else {+        if (yych == 'g')+          goto yy377;+        goto yy298;+      }+    }+  yy335:+    yych = *++p;+    if (yych <= 'R') {+      if (yych == 'O')+        goto yy372;+      if (yych <= 'Q')+        goto yy298;+      goto yy378;+    } else {+      if (yych <= 'o') {+        if (yych <= 'n')+          goto yy298;+        goto yy372;+      } else {+        if (yych == 'r')+          goto yy378;+        goto yy298;+      }+    }+  yy336:+    yych = *++p;+    if (yych == 'A')+      goto yy379;+    if (yych == 'a')+      goto yy379;+    goto yy298;+  yy337:+    yych = *++p;+    if (yych == 'A')+      goto yy380;+    if (yych == 'a')+      goto yy380;+    goto yy298;+  yy338:+    yych = *++p;+    if (yych == 'M')+      goto yy315;+    if (yych == 'm')+      goto yy315;+    goto yy298;+  yy339:+    yych = *++p;+    if (yych == 'R')+      goto yy381;+    if (yych == 'r')+      goto yy381;+    goto yy298;+  yy340:+    yych = *++p;+    if (yych == 'G')+      goto yy382;+    if (yych == 'g')+      goto yy382;+    goto yy298;+  yy341:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'M') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'N')+          goto yy383;+        if (yych == 'n')+          goto yy383;+        goto yy298;+      }+    }+  yy342:+    yych = *++p;+    if (yych == 'I')+      goto yy384;+    if (yych == 'i')+      goto yy384;+    goto yy298;+  yy343:+    yych = *++p;+    if (yych == 'N')+      goto yy385;+    if (yych == 'n')+      goto yy385;+    goto yy298;+  yy344:+    yych = *++p;+    if (yych == 'V')+      goto yy331;+    if (yych == 'v')+      goto yy331;+    goto yy298;+  yy345:+    yych = *++p;+    if (yych == 'F')+      goto yy386;+    if (yych == 'f')+      goto yy386;+    goto yy298;+  yy346:+    yych = *++p;+    if (yych == 'T')+      goto yy387;+    if (yych == 't')+      goto yy387;+    goto yy298;+  yy347:+    ++p;+    { return 6; }+  yy348:+    yych = *++p;+    if (yych == '>')+      goto yy347;+    goto yy298;+  yy349:+    yych = *++p;+    if (yych == 'R')+      goto yy388;+    if (yych == 'r')+      goto yy388;+    goto yy298;+  yy350:+    yych = *++p;+    if (yych == 'E')+      goto yy389;+    if (yych == 'e')+      goto yy389;+    goto yy298;+  yy351:+    yych = *++p;+    if (yych == 'R')+      goto yy390;+    if (yych == 'r')+      goto yy390;+    goto yy298;+  yy352:+    yych = *++p;+    if (yych == 'C')+      goto yy371;+    if (yych == 'c')+      goto yy371;+    goto yy298;+  yy353:+    yych = *++p;+    if (yych == 'U')+      goto yy391;+    if (yych == 'u')+      goto yy391;+    goto yy298;+  yy354:+    yych = *++p;+    if (yych == 'Y')+      goto yy392;+    if (yych == 'y')+      goto yy392;+    goto yy298;+  yy355:+    yych = *++p;+    if (yych == 'M')+      goto yy393;+    if (yych == 'm')+      goto yy393;+    goto yy298;+  yy356:+    yych = *++p;+    if (yych == 'B')+      goto yy394;+    if (yych == 'b')+      goto yy394;+    goto yy298;+  yy357:+    yych = *++p;+    if (yych == 'O')+      goto yy327;+    if (yych == 'o')+      goto yy327;+    goto yy298;+  yy358:+    yych = *++p;+    if (yych == 'X')+      goto yy395;+    if (yych == 'x')+      goto yy395;+    goto yy298;+  yy359:+    yych = *++p;+    if (yych == 'O')+      goto yy396;+    if (yych == 'o')+      goto yy396;+    goto yy298;+  yy360:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'D') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'E')+          goto yy397;+        if (yych == 'e')+          goto yy397;+        goto yy298;+      }+    }+  yy361:+    yych = *++p;+    if (yych == 'T')+      goto yy394;+    if (yych == 't')+      goto yy394;+    goto yy298;+  yy362:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= '@') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'A')+          goto yy398;+        if (yych == 'a')+          goto yy398;+        goto yy298;+      }+    }+  yy363:+    ++p;+    { return 2; }+  yy364:+    yych = *++p;+    if (yych == 'D')+      goto yy399;+    if (yych == 'd')+      goto yy399;+    goto yy298;+  yy365:+    yych = *++p;+    if (yych == 'R')+      goto yy400;+    if (yych == 'r')+      goto yy400;+    goto yy298;+  yy366:+    yych = *++p;+    if (yych == 'I')+      goto yy401;+    if (yych == 'i')+      goto yy401;+    goto yy298;+  yy367:+    yych = *++p;+    if (yych == 'D')+      goto yy402;+    if (yych == 'd')+      goto yy402;+    goto yy298;+  yy368:+    yych = *++p;+    if (yych == 'E')+      goto yy403;+    if (yych == 'e')+      goto yy403;+    goto yy298;+  yy369:+    yych = *++p;+    if (yych == 'C')+      goto yy404;+    if (yych == 'c')+      goto yy404;+    goto yy298;+  yy370:+    yych = *++p;+    if (yych == 'Y')+      goto yy331;+    if (yych == 'y')+      goto yy331;+    goto yy298;+  yy371:+    yych = *++p;+    if (yych == 'T')+      goto yy405;+    if (yych == 't')+      goto yy405;+    goto yy298;+  yy372:+    yych = *++p;+    if (yych == 'T')+      goto yy406;+    if (yych == 't')+      goto yy406;+    goto yy298;+  yy373:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'F') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'G')+          goto yy407;+        if (yych == 'g')+          goto yy407;+        goto yy298;+      }+    }+  yy374:+    yych = *++p;+    if (yych == 'A')+      goto yy408;+    if (yych == 'a')+      goto yy408;+    goto yy298;+  yy375:+    yych = *++p;+    if (yych == 'L')+      goto yy409;+    if (yych == 'l')+      goto yy409;+    goto yy298;+  yy376:+    yych = *++p;+    if (yych == 'L')+      goto yy410;+    if (yych == 'l')+      goto yy410;+    goto yy298;+  yy377:+    yych = *++p;+    if (yych <= 'U') {+      if (yych == 'C')+        goto yy411;+      if (yych <= 'T')+        goto yy298;+      goto yy412;+    } else {+      if (yych <= 'c') {+        if (yych <= 'b')+          goto yy298;+        goto yy411;+      } else {+        if (yych == 'u')+          goto yy412;+        goto yy298;+      }+    }+  yy378:+    yych = *++p;+    if (yych == 'M')+      goto yy331;+    if (yych == 'm')+      goto yy331;+    goto yy298;+  yy379:+    yych = *++p;+    if (yych == 'M')+      goto yy413;+    if (yych == 'm')+      goto yy413;+    goto yy298;+  yy380:+    yych = *++p;+    if (yych == 'D')+      goto yy414;+    if (yych == 'd')+      goto yy414;+    goto yy298;+  yy381:+    yych = *++p;+    if (yych == 'A')+      goto yy415;+    if (yych == 'a')+      goto yy415;+    goto yy298;+  yy382:+    yych = *++p;+    if (yych == 'E')+      goto yy416;+    if (yych == 'e')+      goto yy416;+    goto yy298;+  yy383:+    yych = *++p;+    if (yych == 'K')+      goto yy331;+    if (yych == 'k')+      goto yy331;+    goto yy298;+  yy384:+    yych = *++p;+    if (yych == 'N')+      goto yy331;+    if (yych == 'n')+      goto yy331;+    goto yy298;+  yy385:+    yych = *++p;+    if (yych == 'U')+      goto yy417;+    if (yych == 'u')+      goto yy417;+    goto yy298;+  yy386:+    yych = *++p;+    if (yych == 'R')+      goto yy418;+    if (yych == 'r')+      goto yy418;+    goto yy298;+  yy387:+    yych = *++p;+    if (yych <= 'I') {+      if (yych == 'G')+        goto yy407;+      if (yych <= 'H')+        goto yy298;+      goto yy419;+    } else {+      if (yych <= 'g') {+        if (yych <= 'f')+          goto yy298;+        goto yy407;+      } else {+        if (yych == 'i')+          goto yy419;+        goto yy298;+      }+    }+  yy388:+    yych = *++p;+    if (yych == 'A')+      goto yy378;+    if (yych == 'a')+      goto yy378;+    goto yy298;+  yy389:+    yych = *++p;+    if (yych <= 0x1F) {+      if (yych <= 0x08)+        goto yy298;+      if (yych <= '\r')+        goto yy420;+      goto yy298;+    } else {+      if (yych <= ' ')+        goto yy420;+      if (yych == '>')+        goto yy420;+      goto yy298;+    }+  yy390:+    yych = *++p;+    if (yych == 'I')+      goto yy421;+    if (yych == 'i')+      goto yy421;+    goto yy298;+  yy391:+    yych = *++p;+    if (yych == 'R')+      goto yy422;+    if (yych == 'r')+      goto yy422;+    goto yy298;+  yy392:+    yych = *++p;+    if (yych == 'L')+      goto yy350;+    if (yych == 'l')+      goto yy350;+    goto yy298;+  yy393:+    yych = *++p;+    if (yych == 'M')+      goto yy423;+    if (yych == 'm')+      goto yy423;+    goto yy298;+  yy394:+    yych = *++p;+    if (yych == 'L')+      goto yy402;+    if (yych == 'l')+      goto yy402;+    goto yy298;+  yy395:+    yych = *++p;+    if (yych == 'T')+      goto yy424;+    if (yych == 't')+      goto yy424;+    goto yy298;+  yy396:+    yych = *++p;+    if (yych == 'O')+      goto yy425;+    if (yych == 'o')+      goto yy425;+    goto yy298;+  yy397:+    yych = *++p;+    if (yych == 'A')+      goto yy426;+    if (yych == 'a')+      goto yy426;+    goto yy298;+  yy398:+    yych = *++p;+    if (yych == 'C')+      goto yy383;+    if (yych == 'c')+      goto yy383;+    goto yy298;+  yy399:+    yych = *++p;+    if (yych == 'A')+      goto yy427;+    if (yych == 'a')+      goto yy427;+    goto yy298;+  yy400:+    yych = *++p;+    if (yych == 'E')+      goto yy428;+    if (yych == 'e')+      goto yy428;+    goto yy298;+  yy401:+    yych = *++p;+    if (yych == 'C')+      goto yy394;+    if (yych == 'c')+      goto yy394;+    goto yy298;+  yy402:+    yych = *++p;+    if (yych == 'E')+      goto yy331;+    if (yych == 'e')+      goto yy331;+    goto yy298;+  yy403:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'E') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'F')+          goto yy429;+        if (yych == 'f')+          goto yy429;+        goto yy298;+      }+    }+  yy404:+    yych = *++p;+    if (yych == 'K')+      goto yy430;+    if (yych == 'k')+      goto yy430;+    goto yy298;+  yy405:+    yych = *++p;+    if (yych == 'I')+      goto yy419;+    if (yych == 'i')+      goto yy419;+    goto yy298;+  yy406:+    yych = *++p;+    if (yych == 'E')+      goto yy431;+    if (yych == 'e')+      goto yy431;+    goto yy298;+  yy407:+    yych = *++p;+    if (yych == 'R')+      goto yy432;+    if (yych == 'r')+      goto yy432;+    goto yy298;+  yy408:+    yych = *++p;+    if (yych == 'I')+      goto yy433;+    if (yych == 'i')+      goto yy433;+    goto yy298;+  yy409:+    yych = *++p;+    if (yych == 'O')+      goto yy434;+    if (yych == 'o')+      goto yy434;+    goto yy298;+  yy410:+    yych = *++p;+    if (yych == 'D')+      goto yy435;+    if (yych == 'd')+      goto yy435;+    goto yy298;+  yy411:+    yych = *++p;+    if (yych == 'A')+      goto yy328;+    if (yych == 'a')+      goto yy328;+    goto yy298;+  yy412:+    yych = *++p;+    if (yych == 'R')+      goto yy402;+    if (yych == 'r')+      goto yy402;+    goto yy298;+  yy413:+    yych = *++p;+    if (yych == 'E')+      goto yy436;+    if (yych == 'e')+      goto yy436;+    goto yy298;+  yy414:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'D') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'E')+          goto yy431;+        if (yych == 'e')+          goto yy431;+        goto yy298;+      }+    }+  yy415:+    yych = *++p;+    if (yych == 'M')+      goto yy402;+    if (yych == 'm')+      goto yy402;+    goto yy298;+  yy416:+    yych = *++p;+    if (yych == 'N')+      goto yy426;+    if (yych == 'n')+      goto yy426;+    goto yy298;+  yy417:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'H') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'I')+          goto yy437;+        if (yych == 'i')+          goto yy437;+        goto yy298;+      }+    }+  yy418:+    yych = *++p;+    if (yych == 'A')+      goto yy438;+    if (yych == 'a')+      goto yy438;+    goto yy298;+  yy419:+    yych = *++p;+    if (yych == 'O')+      goto yy384;+    if (yych == 'o')+      goto yy384;+    goto yy298;+  yy420:+    ++p;+    { return 1; }+  yy421:+    yych = *++p;+    if (yych == 'P')+      goto yy439;+    if (yych == 'p')+      goto yy439;+    goto yy298;+  yy422:+    yych = *++p;+    if (yych == 'C')+      goto yy402;+    if (yych == 'c')+      goto yy402;+    goto yy298;+  yy423:+    yych = *++p;+    if (yych == 'A')+      goto yy440;+    if (yych == 'a')+      goto yy440;+    goto yy298;+  yy424:+    yych = *++p;+    if (yych == 'A')+      goto yy441;+    if (yych == 'a')+      goto yy441;+    goto yy298;+  yy425:+    yych = *++p;+    if (yych == 'T')+      goto yy331;+    if (yych == 't')+      goto yy331;+    goto yy298;+  yy426:+    yych = *++p;+    if (yych == 'D')+      goto yy331;+    if (yych == 'd')+      goto yy331;+    goto yy298;+  yy427:+    yych = *++p;+    if (yych == 'T')+      goto yy442;+    if (yych == 't')+      goto yy442;+    goto yy298;+  yy428:+    yych = *++p;+    if (yych == 'S')+      goto yy443;+    if (yych == 's')+      goto yy443;+    goto yy298;+  yy429:+    yych = *++p;+    if (yych == 'O')+      goto yy444;+    if (yych == 'o')+      goto yy444;+    goto yy298;+  yy430:+    yych = *++p;+    if (yych == 'Q')+      goto yy445;+    if (yych == 'q')+      goto yy445;+    goto yy298;+  yy431:+    yych = *++p;+    if (yych == 'R')+      goto yy331;+    if (yych == 'r')+      goto yy331;+    goto yy298;+  yy432:+    yych = *++p;+    if (yych == 'O')+      goto yy446;+    if (yych == 'o')+      goto yy446;+    goto yy298;+  yy433:+    yych = *++p;+    if (yych == 'L')+      goto yy443;+    if (yych == 'l')+      goto yy443;+    goto yy298;+  yy434:+    yych = *++p;+    if (yych == 'G')+      goto yy331;+    if (yych == 'g')+      goto yy331;+    goto yy298;+  yy435:+    yych = *++p;+    if (yych == 'S')+      goto yy447;+    if (yych == 's')+      goto yy447;+    goto yy298;+  yy436:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy298;+        if (yych <= '\r')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= ' ')+          goto yy347;+        if (yych <= '.')+          goto yy298;+        goto yy348;+      }+    } else {+      if (yych <= 'R') {+        if (yych == '>')+          goto yy347;+        goto yy298;+      } else {+        if (yych <= 'S')+          goto yy447;+        if (yych == 's')+          goto yy447;+        goto yy298;+      }+    }+  yy437:+    yych = *++p;+    if (yych == 'T')+      goto yy448;+    if (yych == 't')+      goto yy448;+    goto yy298;+  yy438:+    yych = *++p;+    if (yych == 'M')+      goto yy449;+    if (yych == 'm')+      goto yy449;+    goto yy298;+  yy439:+    yych = *++p;+    if (yych == 'T')+      goto yy389;+    if (yych == 't')+      goto yy389;+    goto yy298;+  yy440:+    yych = *++p;+    if (yych == 'R')+      goto yy370;+    if (yych == 'r')+      goto yy370;+    goto yy298;+  yy441:+    yych = *++p;+    if (yych == 'R')+      goto yy450;+    if (yych == 'r')+      goto yy450;+    goto yy298;+  yy442:+    yych = *++p;+    if (yych == 'A')+      goto yy451;+    if (yych == 'a')+      goto yy451;+    goto yy298;+  yy443:+    yych = *++p;+    if (yych == 'S')+      goto yy331;+    if (yych == 's')+      goto yy331;+    goto yy298;+  yy444:+    yych = *++p;+    if (yych == 'N')+      goto yy425;+    if (yych == 'n')+      goto yy425;+    goto yy298;+  yy445:+    yych = *++p;+    if (yych == 'U')+      goto yy452;+    if (yych == 'u')+      goto yy452;+    goto yy298;+  yy446:+    yych = *++p;+    if (yych == 'U')+      goto yy453;+    if (yych == 'u')+      goto yy453;+    goto yy298;+  yy447:+    yych = *++p;+    if (yych == 'E')+      goto yy425;+    if (yych == 'e')+      goto yy425;+    goto yy298;+  yy448:+    yych = *++p;+    if (yych == 'E')+      goto yy378;+    if (yych == 'e')+      goto yy378;+    goto yy298;+  yy449:+    yych = *++p;+    if (yych == 'E')+      goto yy443;+    if (yych == 'e')+      goto yy443;+    goto yy298;+  yy450:+    yych = *++p;+    if (yych == 'E')+      goto yy454;+    if (yych == 'e')+      goto yy454;+    goto yy298;+  yy451:+    yych = *++p;+    if (yych == '[')+      goto yy455;+    goto yy298;+  yy452:+    yych = *++p;+    if (yych == 'O')+      goto yy456;+    if (yych == 'o')+      goto yy456;+    goto yy298;+  yy453:+    yych = *++p;+    if (yych == 'P')+      goto yy331;+    if (yych == 'p')+      goto yy331;+    goto yy298;+  yy454:+    yych = *++p;+    if (yych == 'A')+      goto yy389;+    if (yych == 'a')+      goto yy389;+    goto yy298;+  yy455:+    ++p;+    { return 5; }+  yy456:+    yych = *++p;+    if (yych == 'T')+      goto yy402;+    if (yych == 't')+      goto yy402;+    goto yy298;+  }+}++// Try to match an HTML block tag start line of type 7, returning+// 7 if successful, 0 if not.+bufsize_t _scan_html_block_start_7(const unsigned char *p) {+  const unsigned char *marker = NULL;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 210, 194, 198, 194,+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,+        224, 224, 224, 224, 198, 224, 128, 224, 224, 224, 224, 64,  224, 224,+        224, 224, 224, 233, 232, 224, 233, 233, 233, 233, 233, 233, 233, 233,+        233, 233, 232, 224, 192, 192, 192, 224, 224, 233, 233, 233, 233, 233,+        233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,+        233, 233, 233, 233, 233, 233, 233, 224, 224, 224, 224, 232, 192, 233,+        233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,+        233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 224, 224, 224,+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych == '<')+      goto yy459;+    ++p;+  yy458 : { return 0; }+  yy459:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '@') {+      if (yych != '/')+        goto yy458;+    } else {+      if (yych <= 'Z')+        goto yy461;+      if (yych <= '`')+        goto yy458;+      if (yych <= 'z')+        goto yy461;+      goto yy458;+    }+    yych = *++p;+    if (yych <= '@')+      goto yy460;+    if (yych <= 'Z')+      goto yy462;+    if (yych <= '`')+      goto yy460;+    if (yych <= 'z')+      goto yy462;+  yy460:+    p = marker;+    if (yyaccept == 0) {+      goto yy458;+    } else {+      goto yy469;+    }+  yy461:+    yych = *++p;+    if (yybm[0 + yych] & 2) {+      goto yy463;+    }+    if (yych <= '=') {+      if (yych <= '.') {+        if (yych == '-')+          goto yy461;+        goto yy460;+      } else {+        if (yych <= '/')+          goto yy464;+        if (yych <= '9')+          goto yy461;+        goto yy460;+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '>')+          goto yy465;+        if (yych <= '@')+          goto yy460;+        goto yy461;+      } else {+        if (yych <= '`')+          goto yy460;+        if (yych <= 'z')+          goto yy461;+        goto yy460;+      }+    }+  yy462:+    yych = *++p;+    if (yych <= '/') {+      if (yych <= 0x1F) {+        if (yych <= 0x08)+          goto yy460;+        if (yych <= '\r')+          goto yy466;+        goto yy460;+      } else {+        if (yych <= ' ')+          goto yy466;+        if (yych == '-')+          goto yy462;+        goto yy460;+      }+    } else {+      if (yych <= '@') {+        if (yych <= '9')+          goto yy462;+        if (yych == '>')+          goto yy465;+        goto yy460;+      } else {+        if (yych <= 'Z')+          goto yy462;+        if (yych <= '`')+          goto yy460;+        if (yych <= 'z')+          goto yy462;+        goto yy460;+      }+    }+  yy463:+    yych = *++p;+    if (yybm[0 + yych] & 2) {+      goto yy463;+    }+    if (yych <= '>') {+      if (yych <= '9') {+        if (yych != '/')+          goto yy460;+      } else {+        if (yych <= ':')+          goto yy467;+        if (yych <= '=')+          goto yy460;+        goto yy465;+      }+    } else {+      if (yych <= '^') {+        if (yych <= '@')+          goto yy460;+        if (yych <= 'Z')+          goto yy467;+        goto yy460;+      } else {+        if (yych == '`')+          goto yy460;+        if (yych <= 'z')+          goto yy467;+        goto yy460;+      }+    }+  yy464:+    yych = *++p;+    if (yych != '>')+      goto yy460;+  yy465:+    yych = *++p;+    if (yybm[0 + yych] & 4) {+      goto yy465;+    }+    if (yych <= 0x08)+      goto yy460;+    if (yych <= '\n')+      goto yy468;+    if (yych <= '\v')+      goto yy460;+    if (yych <= '\r')+      goto yy470;+    goto yy460;+  yy466:+    yych = *++p;+    if (yych <= 0x1F) {+      if (yych <= 0x08)+        goto yy460;+      if (yych <= '\r')+        goto yy466;+      goto yy460;+    } else {+      if (yych <= ' ')+        goto yy466;+      if (yych == '>')+        goto yy465;+      goto yy460;+    }+  yy467:+    yych = *++p;+    if (yybm[0 + yych] & 8) {+      goto yy467;+    }+    if (yych <= ',') {+      if (yych <= '\r') {+        if (yych <= 0x08)+          goto yy460;+        goto yy471;+      } else {+        if (yych == ' ')+          goto yy471;+        goto yy460;+      }+    } else {+      if (yych <= '<') {+        if (yych <= '/')+          goto yy464;+        goto yy460;+      } else {+        if (yych <= '=')+          goto yy472;+        if (yych <= '>')+          goto yy465;+        goto yy460;+      }+    }+  yy468:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 4) {+      goto yy465;+    }+    if (yych <= 0x08)+      goto yy469;+    if (yych <= '\n')+      goto yy468;+    if (yych <= '\v')+      goto yy469;+    if (yych <= '\r')+      goto yy470;+  yy469 : { return 7; }+  yy470:+    ++p;+    goto yy469;+  yy471:+    yych = *++p;+    if (yych <= '<') {+      if (yych <= ' ') {+        if (yych <= 0x08)+          goto yy460;+        if (yych <= '\r')+          goto yy471;+        if (yych <= 0x1F)+          goto yy460;+        goto yy471;+      } else {+        if (yych <= '/') {+          if (yych <= '.')+            goto yy460;+          goto yy464;+        } else {+          if (yych == ':')+            goto yy467;+          goto yy460;+        }+      }+    } else {+      if (yych <= 'Z') {+        if (yych <= '=')+          goto yy472;+        if (yych <= '>')+          goto yy465;+        if (yych <= '@')+          goto yy460;+        goto yy467;+      } else {+        if (yych <= '_') {+          if (yych <= '^')+            goto yy460;+          goto yy467;+        } else {+          if (yych <= '`')+            goto yy460;+          if (yych <= 'z')+            goto yy467;+          goto yy460;+        }+      }+    }+  yy472:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy473;+    }+    if (yych <= 0xE0) {+      if (yych <= '"') {+        if (yych <= 0x00)+          goto yy460;+        if (yych <= ' ')+          goto yy472;+        goto yy474;+      } else {+        if (yych <= '\'')+          goto yy475;+        if (yych <= 0xC1)+          goto yy460;+        if (yych <= 0xDF)+          goto yy476;+        goto yy477;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy479;+        goto yy478;+      } else {+        if (yych <= 0xF0)+          goto yy480;+        if (yych <= 0xF3)+          goto yy481;+        if (yych <= 0xF4)+          goto yy482;+        goto yy460;+      }+    }+  yy473:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy473;+    }+    if (yych <= 0xE0) {+      if (yych <= '=') {+        if (yych <= 0x00)+          goto yy460;+        if (yych <= ' ')+          goto yy463;+        goto yy460;+      } else {+        if (yych <= '>')+          goto yy465;+        if (yych <= 0xC1)+          goto yy460;+        if (yych <= 0xDF)+          goto yy476;+        goto yy477;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy479;+        goto yy478;+      } else {+        if (yych <= 0xF0)+          goto yy480;+        if (yych <= 0xF3)+          goto yy481;+        if (yych <= 0xF4)+          goto yy482;+        goto yy460;+      }+    }+  yy474:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy474;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy460;+        if (yych <= '"')+          goto yy483;+        goto yy460;+      } else {+        if (yych <= 0xDF)+          goto yy484;+        if (yych <= 0xE0)+          goto yy485;+        goto yy486;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy487;+        if (yych <= 0xEF)+          goto yy486;+        goto yy488;+      } else {+        if (yych <= 0xF3)+          goto yy489;+        if (yych <= 0xF4)+          goto yy490;+        goto yy460;+      }+    }+  yy475:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy475;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy460;+        if (yych <= '\'')+          goto yy483;+        goto yy460;+      } else {+        if (yych <= 0xDF)+          goto yy491;+        if (yych <= 0xE0)+          goto yy492;+        goto yy493;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy494;+        if (yych <= 0xEF)+          goto yy493;+        goto yy495;+      } else {+        if (yych <= 0xF3)+          goto yy496;+        if (yych <= 0xF4)+          goto yy497;+        goto yy460;+      }+    }+  yy476:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy473;+    goto yy460;+  yy477:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy476;+    goto yy460;+  yy478:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy476;+    goto yy460;+  yy479:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0x9F)+      goto yy476;+    goto yy460;+  yy480:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy478;+    goto yy460;+  yy481:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy478;+    goto yy460;+  yy482:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0x8F)+      goto yy478;+    goto yy460;+  yy483:+    yych = *++p;+    if (yybm[0 + yych] & 2) {+      goto yy463;+    }+    if (yych == '/')+      goto yy464;+    if (yych == '>')+      goto yy465;+    goto yy460;+  yy484:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy474;+    goto yy460;+  yy485:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy484;+    goto yy460;+  yy486:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy484;+    goto yy460;+  yy487:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0x9F)+      goto yy484;+    goto yy460;+  yy488:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy486;+    goto yy460;+  yy489:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy486;+    goto yy460;+  yy490:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0x8F)+      goto yy486;+    goto yy460;+  yy491:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy475;+    goto yy460;+  yy492:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy491;+    goto yy460;+  yy493:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy491;+    goto yy460;+  yy494:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0x9F)+      goto yy491;+    goto yy460;+  yy495:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy493;+    goto yy460;+  yy496:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0xBF)+      goto yy493;+    goto yy460;+  yy497:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy460;+    if (yych <= 0x8F)+      goto yy493;+    goto yy460;+  }+}++// Try to match an HTML block end line of type 1+bufsize_t _scan_html_block_end_1(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,  64, 64, 64, 64, 64, 64,  64, 64, 64, 0,  64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,+    };+    yych = *p;+    if (yych <= 0xDF) {+      if (yych <= ';') {+        if (yych <= 0x00)+          goto yy499;+        if (yych != '\n')+          goto yy501;+      } else {+        if (yych <= '<')+          goto yy502;+        if (yych <= 0x7F)+          goto yy501;+        if (yych >= 0xC2)+          goto yy503;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy504;+        if (yych == 0xED)+          goto yy506;+        goto yy505;+      } else {+        if (yych <= 0xF0)+          goto yy507;+        if (yych <= 0xF3)+          goto yy508;+        if (yych <= 0xF4)+          goto yy509;+      }+    }+  yy499:+    ++p;+  yy500 : { return 0; }+  yy501:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy500;+      if (yych <= '\t')+        goto yy511;+      goto yy500;+    } else {+      if (yych <= 0x7F)+        goto yy511;+      if (yych <= 0xC1)+        goto yy500;+      if (yych <= 0xF4)+        goto yy511;+      goto yy500;+    }+  yy502:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '.') {+      if (yych <= 0x00)+        goto yy500;+      if (yych == '\n')+        goto yy500;+      goto yy511;+    } else {+      if (yych <= 0x7F) {+        if (yych <= '/')+          goto yy521;+        goto yy511;+      } else {+        if (yych <= 0xC1)+          goto yy500;+        if (yych <= 0xF4)+          goto yy511;+        goto yy500;+      }+    }+  yy503:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy500;+    if (yych <= 0xBF)+      goto yy510;+    goto yy500;+  yy504:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy500;+    if (yych <= 0xBF)+      goto yy514;+    goto yy500;+  yy505:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy500;+    if (yych <= 0xBF)+      goto yy514;+    goto yy500;+  yy506:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy500;+    if (yych <= 0x9F)+      goto yy514;+    goto yy500;+  yy507:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy500;+    if (yych <= 0xBF)+      goto yy516;+    goto yy500;+  yy508:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy500;+    if (yych <= 0xBF)+      goto yy516;+    goto yy500;+  yy509:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy500;+    if (yych <= 0x8F)+      goto yy516;+    goto yy500;+  yy510:+    yych = *++p;+  yy511:+    if (yybm[0 + yych] & 64) {+      goto yy510;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy512;+        if (yych <= '<')+          goto yy513;+      } else {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        goto yy516;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy517;+        if (yych <= 0xEF)+          goto yy516;+        goto yy518;+      } else {+        if (yych <= 0xF3)+          goto yy519;+        if (yych <= 0xF4)+          goto yy520;+      }+    }+  yy512:+    p = marker;+    if (yyaccept == 0) {+      goto yy500;+    } else {+      goto yy534;+    }+  yy513:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xDF) {+      if (yych <= '.') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= '/')+          goto yy521;+        if (yych <= 0x7F)+          goto yy510;+        if (yych <= 0xC1)+          goto yy512;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy515;+        if (yych == 0xED)+          goto yy517;+        goto yy516;+      } else {+        if (yych <= 0xF0)+          goto yy518;+        if (yych <= 0xF3)+          goto yy519;+        if (yych <= 0xF4)+          goto yy520;+        goto yy512;+      }+    }+  yy514:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy512;+    if (yych <= 0xBF)+      goto yy510;+    goto yy512;+  yy515:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy512;+    if (yych <= 0xBF)+      goto yy514;+    goto yy512;+  yy516:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy512;+    if (yych <= 0xBF)+      goto yy514;+    goto yy512;+  yy517:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy512;+    if (yych <= 0x9F)+      goto yy514;+    goto yy512;+  yy518:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy512;+    if (yych <= 0xBF)+      goto yy516;+    goto yy512;+  yy519:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy512;+    if (yych <= 0xBF)+      goto yy516;+    goto yy512;+  yy520:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy512;+    if (yych <= 0x8F)+      goto yy516;+    goto yy512;+  yy521:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 's') {+      if (yych <= 'R') {+        if (yych <= '\n') {+          if (yych <= 0x00)+            goto yy512;+          if (yych <= '\t')+            goto yy510;+          goto yy512;+        } else {+          if (yych != 'P')+            goto yy510;+        }+      } else {+        if (yych <= 'o') {+          if (yych <= 'S')+            goto yy523;+          if (yych <= 'T')+            goto yy524;+          goto yy510;+        } else {+          if (yych <= 'p')+            goto yy522;+          if (yych <= 'r')+            goto yy510;+          goto yy523;+        }+      }+    } else {+      if (yych <= 0xEC) {+        if (yych <= 0xC1) {+          if (yych <= 't')+            goto yy524;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        } else {+          if (yych <= 0xDF)+            goto yy514;+          if (yych <= 0xE0)+            goto yy515;+          goto yy516;+        }+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xED)+            goto yy517;+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy522:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'Q') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'q') {+          if (yych <= 'R')+            goto yy525;+          goto yy510;+        } else {+          if (yych <= 'r')+            goto yy525;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy523:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 't') {+      if (yych <= 'C') {+        if (yych <= '\t') {+          if (yych <= 0x00)+            goto yy512;+          goto yy510;+        } else {+          if (yych <= '\n')+            goto yy512;+          if (yych <= 'B')+            goto yy510;+          goto yy526;+        }+      } else {+        if (yych <= 'b') {+          if (yych == 'T')+            goto yy527;+          goto yy510;+        } else {+          if (yych <= 'c')+            goto yy526;+          if (yych <= 's')+            goto yy510;+          goto yy527;+        }+      }+    } else {+      if (yych <= 0xEC) {+        if (yych <= 0xC1) {+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        } else {+          if (yych <= 0xDF)+            goto yy514;+          if (yych <= 0xE0)+            goto yy515;+          goto yy516;+        }+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xED)+            goto yy517;+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy524:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'D') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'd') {+          if (yych <= 'E')+            goto yy528;+          goto yy510;+        } else {+          if (yych <= 'e')+            goto yy528;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy525:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'D') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'd') {+          if (yych <= 'E')+            goto yy529;+          goto yy510;+        } else {+          if (yych <= 'e')+            goto yy529;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy526:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'Q') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'q') {+          if (yych <= 'R')+            goto yy530;+          goto yy510;+        } else {+          if (yych <= 'r')+            goto yy530;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy527:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'X') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'x') {+          if (yych <= 'Y')+            goto yy531;+          goto yy510;+        } else {+          if (yych <= 'y')+            goto yy531;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy528:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'W') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'w') {+          if (yych <= 'X')+            goto yy532;+          goto yy510;+        } else {+          if (yych <= 'x')+            goto yy532;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy529:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xDF) {+      if (yych <= '=') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= '>')+          goto yy533;+        if (yych <= 0x7F)+          goto yy510;+        if (yych <= 0xC1)+          goto yy512;+        goto yy514;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy515;+        if (yych == 0xED)+          goto yy517;+        goto yy516;+      } else {+        if (yych <= 0xF0)+          goto yy518;+        if (yych <= 0xF3)+          goto yy519;+        if (yych <= 0xF4)+          goto yy520;+        goto yy512;+      }+    }+  yy530:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'H') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'h') {+          if (yych <= 'I')+            goto yy535;+          goto yy510;+        } else {+          if (yych <= 'i')+            goto yy535;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy531:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'K') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'k') {+          if (yych <= 'L')+            goto yy525;+          goto yy510;+        } else {+          if (yych <= 'l')+            goto yy525;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy532:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'S') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 's') {+          if (yych <= 'T')+            goto yy536;+          goto yy510;+        } else {+          if (yych <= 't')+            goto yy536;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy533:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy510;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy534;+        if (yych <= '<')+          goto yy513;+      } else {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        goto yy516;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy517;+        if (yych <= 0xEF)+          goto yy516;+        goto yy518;+      } else {+        if (yych <= 0xF3)+          goto yy519;+        if (yych <= 0xF4)+          goto yy520;+      }+    }+  yy534 : { return (bufsize_t)(p - start); }+  yy535:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'O') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'o') {+          if (yych <= 'P')+            goto yy537;+          goto yy510;+        } else {+          if (yych <= 'p')+            goto yy537;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy536:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= '@') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= '`') {+          if (yych <= 'A')+            goto yy538;+          goto yy510;+        } else {+          if (yych <= 'a')+            goto yy538;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy537:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'S') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 's') {+          if (yych <= 'T')+            goto yy529;+          goto yy510;+        } else {+          if (yych <= 't')+            goto yy529;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy538:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'Q') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'q') {+          if (yych >= 'S')+            goto yy510;+        } else {+          if (yych <= 'r')+            goto yy539;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy539:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= 'D') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= 'd') {+          if (yych >= 'F')+            goto yy510;+        } else {+          if (yych <= 'e')+            goto yy540;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  yy540:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy513;+    }+    if (yych <= 0xC1) {+      if (yych <= '@') {+        if (yych <= 0x00)+          goto yy512;+        if (yych == '\n')+          goto yy512;+        goto yy510;+      } else {+        if (yych <= '`') {+          if (yych <= 'A')+            goto yy529;+          goto yy510;+        } else {+          if (yych <= 'a')+            goto yy529;+          if (yych <= 0x7F)+            goto yy510;+          goto yy512;+        }+      }+    } else {+      if (yych <= 0xED) {+        if (yych <= 0xDF)+          goto yy514;+        if (yych <= 0xE0)+          goto yy515;+        if (yych <= 0xEC)+          goto yy516;+        goto yy517;+      } else {+        if (yych <= 0xF0) {+          if (yych <= 0xEF)+            goto yy516;+          goto yy518;+        } else {+          if (yych <= 0xF3)+            goto yy519;+          if (yych <= 0xF4)+            goto yy520;+          goto yy512;+        }+      }+    }+  }+}++// Try to match an HTML block end line of type 2+bufsize_t _scan_html_block_end_2(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,+    };+    yych = *p;+    if (yych <= 0xDF) {+      if (yych <= ',') {+        if (yych <= 0x00)+          goto yy542;+        if (yych != '\n')+          goto yy544;+      } else {+        if (yych <= '-')+          goto yy545;+        if (yych <= 0x7F)+          goto yy544;+        if (yych >= 0xC2)+          goto yy546;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy547;+        if (yych == 0xED)+          goto yy549;+        goto yy548;+      } else {+        if (yych <= 0xF0)+          goto yy550;+        if (yych <= 0xF3)+          goto yy551;+        if (yych <= 0xF4)+          goto yy552;+      }+    }+  yy542:+    ++p;+  yy543 : { return 0; }+  yy544:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy543;+      if (yych <= '\t')+        goto yy554;+      goto yy543;+    } else {+      if (yych <= 0x7F)+        goto yy554;+      if (yych <= 0xC1)+        goto yy543;+      if (yych <= 0xF4)+        goto yy554;+      goto yy543;+    }+  yy545:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy564;+    }+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy543;+      if (yych <= '\t')+        goto yy554;+      goto yy543;+    } else {+      if (yych <= 0x7F)+        goto yy554;+      if (yych <= 0xC1)+        goto yy543;+      if (yych <= 0xF4)+        goto yy554;+      goto yy543;+    }+  yy546:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy543;+    if (yych <= 0xBF)+      goto yy553;+    goto yy543;+  yy547:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy543;+    if (yych <= 0xBF)+      goto yy557;+    goto yy543;+  yy548:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy543;+    if (yych <= 0xBF)+      goto yy557;+    goto yy543;+  yy549:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy543;+    if (yych <= 0x9F)+      goto yy557;+    goto yy543;+  yy550:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy543;+    if (yych <= 0xBF)+      goto yy559;+    goto yy543;+  yy551:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy543;+    if (yych <= 0xBF)+      goto yy559;+    goto yy543;+  yy552:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy543;+    if (yych <= 0x8F)+      goto yy559;+    goto yy543;+  yy553:+    yych = *++p;+  yy554:+    if (yybm[0 + yych] & 64) {+      goto yy553;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy555;+        if (yych <= '-')+          goto yy556;+      } else {+        if (yych <= 0xDF)+          goto yy557;+        if (yych <= 0xE0)+          goto yy558;+        goto yy559;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy560;+        if (yych <= 0xEF)+          goto yy559;+        goto yy561;+      } else {+        if (yych <= 0xF3)+          goto yy562;+        if (yych <= 0xF4)+          goto yy563;+      }+    }+  yy555:+    p = marker;+    if (yyaccept == 0) {+      goto yy543;+    } else {+      goto yy566;+    }+  yy556:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy553;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy555;+        if (yych <= '-')+          goto yy564;+        goto yy555;+      } else {+        if (yych <= 0xDF)+          goto yy557;+        if (yych <= 0xE0)+          goto yy558;+        goto yy559;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy560;+        if (yych <= 0xEF)+          goto yy559;+        goto yy561;+      } else {+        if (yych <= 0xF3)+          goto yy562;+        if (yych <= 0xF4)+          goto yy563;+        goto yy555;+      }+    }+  yy557:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy555;+    if (yych <= 0xBF)+      goto yy553;+    goto yy555;+  yy558:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy555;+    if (yych <= 0xBF)+      goto yy557;+    goto yy555;+  yy559:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy555;+    if (yych <= 0xBF)+      goto yy557;+    goto yy555;+  yy560:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy555;+    if (yych <= 0x9F)+      goto yy557;+    goto yy555;+  yy561:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy555;+    if (yych <= 0xBF)+      goto yy559;+    goto yy555;+  yy562:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy555;+    if (yych <= 0xBF)+      goto yy559;+    goto yy555;+  yy563:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy555;+    if (yych <= 0x8F)+      goto yy559;+    goto yy555;+  yy564:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy564;+    }+    if (yych <= 0xDF) {+      if (yych <= '=') {+        if (yych <= 0x00)+          goto yy555;+        if (yych == '\n')+          goto yy555;+        goto yy553;+      } else {+        if (yych <= '>')+          goto yy565;+        if (yych <= 0x7F)+          goto yy553;+        if (yych <= 0xC1)+          goto yy555;+        goto yy557;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy558;+        if (yych == 0xED)+          goto yy560;+        goto yy559;+      } else {+        if (yych <= 0xF0)+          goto yy561;+        if (yych <= 0xF3)+          goto yy562;+        if (yych <= 0xF4)+          goto yy563;+        goto yy555;+      }+    }+  yy565:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy553;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy566;+        if (yych <= '-')+          goto yy556;+      } else {+        if (yych <= 0xDF)+          goto yy557;+        if (yych <= 0xE0)+          goto yy558;+        goto yy559;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy560;+        if (yych <= 0xEF)+          goto yy559;+        goto yy561;+      } else {+        if (yych <= 0xF3)+          goto yy562;+        if (yych <= 0xF4)+          goto yy563;+      }+    }+  yy566 : { return (bufsize_t)(p - start); }+  }+}++// Try to match an HTML block end line of type 3+bufsize_t _scan_html_block_end_3(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,+    };+    yych = *p;+    if (yych <= 0xDF) {+      if (yych <= '>') {+        if (yych <= 0x00)+          goto yy568;+        if (yych != '\n')+          goto yy570;+      } else {+        if (yych <= '?')+          goto yy571;+        if (yych <= 0x7F)+          goto yy570;+        if (yych >= 0xC2)+          goto yy572;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy573;+        if (yych == 0xED)+          goto yy575;+        goto yy574;+      } else {+        if (yych <= 0xF0)+          goto yy576;+        if (yych <= 0xF3)+          goto yy577;+        if (yych <= 0xF4)+          goto yy578;+      }+    }+  yy568:+    ++p;+  yy569 : { return 0; }+  yy570:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy569;+      if (yych <= '\t')+        goto yy580;+      goto yy569;+    } else {+      if (yych <= 0x7F)+        goto yy580;+      if (yych <= 0xC1)+        goto yy569;+      if (yych <= 0xF4)+        goto yy580;+      goto yy569;+    }+  yy571:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '=') {+      if (yych <= 0x00)+        goto yy569;+      if (yych == '\n')+        goto yy569;+      goto yy580;+    } else {+      if (yych <= 0x7F) {+        if (yych <= '>')+          goto yy590;+        goto yy580;+      } else {+        if (yych <= 0xC1)+          goto yy569;+        if (yych <= 0xF4)+          goto yy580;+        goto yy569;+      }+    }+  yy572:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy569;+    if (yych <= 0xBF)+      goto yy579;+    goto yy569;+  yy573:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy569;+    if (yych <= 0xBF)+      goto yy583;+    goto yy569;+  yy574:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy569;+    if (yych <= 0xBF)+      goto yy583;+    goto yy569;+  yy575:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy569;+    if (yych <= 0x9F)+      goto yy583;+    goto yy569;+  yy576:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy569;+    if (yych <= 0xBF)+      goto yy585;+    goto yy569;+  yy577:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy569;+    if (yych <= 0xBF)+      goto yy585;+    goto yy569;+  yy578:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy569;+    if (yych <= 0x8F)+      goto yy585;+    goto yy569;+  yy579:+    yych = *++p;+  yy580:+    if (yybm[0 + yych] & 64) {+      goto yy579;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy581;+        if (yych <= '?')+          goto yy582;+      } else {+        if (yych <= 0xDF)+          goto yy583;+        if (yych <= 0xE0)+          goto yy584;+        goto yy585;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy586;+        if (yych <= 0xEF)+          goto yy585;+        goto yy587;+      } else {+        if (yych <= 0xF3)+          goto yy588;+        if (yych <= 0xF4)+          goto yy589;+      }+    }+  yy581:+    p = marker;+    if (yyaccept == 0) {+      goto yy569;+    } else {+      goto yy591;+    }+  yy582:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy582;+    }+    if (yych <= 0xDF) {+      if (yych <= '=') {+        if (yych <= 0x00)+          goto yy581;+        if (yych == '\n')+          goto yy581;+        goto yy579;+      } else {+        if (yych <= '>')+          goto yy590;+        if (yych <= 0x7F)+          goto yy579;+        if (yych <= 0xC1)+          goto yy581;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy584;+        if (yych == 0xED)+          goto yy586;+        goto yy585;+      } else {+        if (yych <= 0xF0)+          goto yy587;+        if (yych <= 0xF3)+          goto yy588;+        if (yych <= 0xF4)+          goto yy589;+        goto yy581;+      }+    }+  yy583:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy581;+    if (yych <= 0xBF)+      goto yy579;+    goto yy581;+  yy584:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy581;+    if (yych <= 0xBF)+      goto yy583;+    goto yy581;+  yy585:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy581;+    if (yych <= 0xBF)+      goto yy583;+    goto yy581;+  yy586:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy581;+    if (yych <= 0x9F)+      goto yy583;+    goto yy581;+  yy587:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy581;+    if (yych <= 0xBF)+      goto yy585;+    goto yy581;+  yy588:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy581;+    if (yych <= 0xBF)+      goto yy585;+    goto yy581;+  yy589:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy581;+    if (yych <= 0x8F)+      goto yy585;+    goto yy581;+  yy590:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy579;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy591;+        if (yych <= '?')+          goto yy582;+      } else {+        if (yych <= 0xDF)+          goto yy583;+        if (yych <= 0xE0)+          goto yy584;+        goto yy585;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy586;+        if (yych <= 0xEF)+          goto yy585;+        goto yy587;+      } else {+        if (yych <= 0xF3)+          goto yy588;+        if (yych <= 0xF4)+          goto yy589;+      }+    }+  yy591 : { return (bufsize_t)(p - start); }+  }+}++// Try to match an HTML block end line of type 4+bufsize_t _scan_html_block_end_4(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yybm[0 + yych] & 64) {+      goto yy596;+    }+    if (yych <= 0xE0) {+      if (yych <= '\n') {+        if (yych <= 0x00)+          goto yy593;+        if (yych <= '\t')+          goto yy595;+      } else {+        if (yych <= 0x7F)+          goto yy595;+        if (yych <= 0xC1)+          goto yy593;+        if (yych <= 0xDF)+          goto yy598;+        goto yy599;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy601;+        goto yy600;+      } else {+        if (yych <= 0xF0)+          goto yy602;+        if (yych <= 0xF3)+          goto yy603;+        if (yych <= 0xF4)+          goto yy604;+      }+    }+  yy593:+    ++p;+  yy594 : { return 0; }+  yy595:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy594;+      if (yych <= '\t')+        goto yy606;+      goto yy594;+    } else {+      if (yych <= 0x7F)+        goto yy606;+      if (yych <= 0xC1)+        goto yy594;+      if (yych <= 0xF4)+        goto yy606;+      goto yy594;+    }+  yy596:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy605;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy597;+        if (yych <= '>')+          goto yy596;+      } else {+        if (yych <= 0xDF)+          goto yy608;+        if (yych <= 0xE0)+          goto yy609;+        goto yy610;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy611;+        if (yych <= 0xEF)+          goto yy610;+        goto yy612;+      } else {+        if (yych <= 0xF3)+          goto yy613;+        if (yych <= 0xF4)+          goto yy614;+      }+    }+  yy597 : { return (bufsize_t)(p - start); }+  yy598:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy594;+    if (yych <= 0xBF)+      goto yy605;+    goto yy594;+  yy599:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy594;+    if (yych <= 0xBF)+      goto yy608;+    goto yy594;+  yy600:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy594;+    if (yych <= 0xBF)+      goto yy608;+    goto yy594;+  yy601:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy594;+    if (yych <= 0x9F)+      goto yy608;+    goto yy594;+  yy602:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy594;+    if (yych <= 0xBF)+      goto yy610;+    goto yy594;+  yy603:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy594;+    if (yych <= 0xBF)+      goto yy610;+    goto yy594;+  yy604:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy594;+    if (yych <= 0x8F)+      goto yy610;+    goto yy594;+  yy605:+    yych = *++p;+  yy606:+    if (yybm[0 + yych] & 128) {+      goto yy605;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy607;+        if (yych <= '>')+          goto yy596;+      } else {+        if (yych <= 0xDF)+          goto yy608;+        if (yych <= 0xE0)+          goto yy609;+        goto yy610;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy611;+        if (yych <= 0xEF)+          goto yy610;+        goto yy612;+      } else {+        if (yych <= 0xF3)+          goto yy613;+        if (yych <= 0xF4)+          goto yy614;+      }+    }+  yy607:+    p = marker;+    if (yyaccept == 0) {+      goto yy594;+    } else {+      goto yy597;+    }+  yy608:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy607;+    if (yych <= 0xBF)+      goto yy605;+    goto yy607;+  yy609:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy607;+    if (yych <= 0xBF)+      goto yy608;+    goto yy607;+  yy610:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy607;+    if (yych <= 0xBF)+      goto yy608;+    goto yy607;+  yy611:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy607;+    if (yych <= 0x9F)+      goto yy608;+    goto yy607;+  yy612:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy607;+    if (yych <= 0xBF)+      goto yy610;+    goto yy607;+  yy613:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy607;+    if (yych <= 0xBF)+      goto yy610;+    goto yy607;+  yy614:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy607;+    if (yych <= 0x8F)+      goto yy610;+    goto yy607;+  }+}++// Try to match an HTML block end line of type 5+bufsize_t _scan_html_block_end_5(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,  64, 64, 64,  64, 64, 64, 64, 64, 64, 0,  64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+        64, 64, 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,+        0,  0,  0,  0,+    };+    yych = *p;+    if (yych <= 0xDF) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy616;+        if (yych != '\n')+          goto yy618;+      } else {+        if (yych <= ']')+          goto yy619;+        if (yych <= 0x7F)+          goto yy618;+        if (yych >= 0xC2)+          goto yy620;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy621;+        if (yych == 0xED)+          goto yy623;+        goto yy622;+      } else {+        if (yych <= 0xF0)+          goto yy624;+        if (yych <= 0xF3)+          goto yy625;+        if (yych <= 0xF4)+          goto yy626;+      }+    }+  yy616:+    ++p;+  yy617 : { return 0; }+  yy618:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy617;+      if (yych <= '\t')+        goto yy628;+      goto yy617;+    } else {+      if (yych <= 0x7F)+        goto yy628;+      if (yych <= 0xC1)+        goto yy617;+      if (yych <= 0xF4)+        goto yy628;+      goto yy617;+    }+  yy619:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy638;+    }+    if (yych <= '\n') {+      if (yych <= 0x00)+        goto yy617;+      if (yych <= '\t')+        goto yy628;+      goto yy617;+    } else {+      if (yych <= 0x7F)+        goto yy628;+      if (yych <= 0xC1)+        goto yy617;+      if (yych <= 0xF4)+        goto yy628;+      goto yy617;+    }+  yy620:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy617;+    if (yych <= 0xBF)+      goto yy627;+    goto yy617;+  yy621:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x9F)+      goto yy617;+    if (yych <= 0xBF)+      goto yy631;+    goto yy617;+  yy622:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy617;+    if (yych <= 0xBF)+      goto yy631;+    goto yy617;+  yy623:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy617;+    if (yych <= 0x9F)+      goto yy631;+    goto yy617;+  yy624:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x8F)+      goto yy617;+    if (yych <= 0xBF)+      goto yy633;+    goto yy617;+  yy625:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy617;+    if (yych <= 0xBF)+      goto yy633;+    goto yy617;+  yy626:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x7F)+      goto yy617;+    if (yych <= 0x8F)+      goto yy633;+    goto yy617;+  yy627:+    yych = *++p;+  yy628:+    if (yybm[0 + yych] & 64) {+      goto yy627;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy629;+        if (yych <= ']')+          goto yy630;+      } else {+        if (yych <= 0xDF)+          goto yy631;+        if (yych <= 0xE0)+          goto yy632;+        goto yy633;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy634;+        if (yych <= 0xEF)+          goto yy633;+        goto yy635;+      } else {+        if (yych <= 0xF3)+          goto yy636;+        if (yych <= 0xF4)+          goto yy637;+      }+    }+  yy629:+    p = marker;+    if (yyaccept == 0) {+      goto yy617;+    } else {+      goto yy640;+    }+  yy630:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy627;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy629;+        if (yych <= ']')+          goto yy638;+        goto yy629;+      } else {+        if (yych <= 0xDF)+          goto yy631;+        if (yych <= 0xE0)+          goto yy632;+        goto yy633;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy634;+        if (yych <= 0xEF)+          goto yy633;+        goto yy635;+      } else {+        if (yych <= 0xF3)+          goto yy636;+        if (yych <= 0xF4)+          goto yy637;+        goto yy629;+      }+    }+  yy631:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy629;+    if (yych <= 0xBF)+      goto yy627;+    goto yy629;+  yy632:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy629;+    if (yych <= 0xBF)+      goto yy631;+    goto yy629;+  yy633:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy629;+    if (yych <= 0xBF)+      goto yy631;+    goto yy629;+  yy634:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy629;+    if (yych <= 0x9F)+      goto yy631;+    goto yy629;+  yy635:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy629;+    if (yych <= 0xBF)+      goto yy633;+    goto yy629;+  yy636:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy629;+    if (yych <= 0xBF)+      goto yy633;+    goto yy629;+  yy637:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy629;+    if (yych <= 0x8F)+      goto yy633;+    goto yy629;+  yy638:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy638;+    }+    if (yych <= 0xDF) {+      if (yych <= '=') {+        if (yych <= 0x00)+          goto yy629;+        if (yych == '\n')+          goto yy629;+        goto yy627;+      } else {+        if (yych <= '>')+          goto yy639;+        if (yych <= 0x7F)+          goto yy627;+        if (yych <= 0xC1)+          goto yy629;+        goto yy631;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy632;+        if (yych == 0xED)+          goto yy634;+        goto yy633;+      } else {+        if (yych <= 0xF0)+          goto yy635;+        if (yych <= 0xF3)+          goto yy636;+        if (yych <= 0xF4)+          goto yy637;+        goto yy629;+      }+    }+  yy639:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy627;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= '\n')+          goto yy640;+        if (yych <= ']')+          goto yy630;+      } else {+        if (yych <= 0xDF)+          goto yy631;+        if (yych <= 0xE0)+          goto yy632;+        goto yy633;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy634;+        if (yych <= 0xEF)+          goto yy633;+        goto yy635;+      } else {+        if (yych <= 0xF3)+          goto yy636;+        if (yych <= 0xF4)+          goto yy637;+      }+    }+  yy640 : { return (bufsize_t)(p - start); }+  }+}++// Try to match a link title (in single quotes, in double quotes, or+// in parentheses), returning number of chars matched.  Allow one+// level of internal nesting (quotes within quotes).+bufsize_t _scan_link_title(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    static const unsigned char yybm[] = {+        0,   208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 80,  80,+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 208, 208, 32,  208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,+        208, 208, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych <= '&') {+      if (yych == '"')+        goto yy643;+    } else {+      if (yych <= '\'')+        goto yy644;+      if (yych <= '(')+        goto yy645;+    }+    ++p;+  yy642 : { return 0; }+  yy643:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x00)+      goto yy642;+    if (yych <= 0x7F)+      goto yy647;+    if (yych <= 0xC1)+      goto yy642;+    if (yych <= 0xF4)+      goto yy647;+    goto yy642;+  yy644:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= 0x00)+      goto yy642;+    if (yych <= 0x7F)+      goto yy660;+    if (yych <= 0xC1)+      goto yy642;+    if (yych <= 0xF4)+      goto yy660;+    goto yy642;+  yy645:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych <= '(') {+      if (yych <= 0x00)+        goto yy642;+      if (yych <= '\'')+        goto yy672;+      goto yy642;+    } else {+      if (yych <= 0x7F)+        goto yy672;+      if (yych <= 0xC1)+        goto yy642;+      if (yych <= 0xF4)+        goto yy672;+      goto yy642;+    }+  yy646:+    yych = *++p;+  yy647:+    if (yybm[0 + yych] & 16) {+      goto yy646;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy648;+        if (yych <= '"')+          goto yy649;+        goto yy651;+      } else {+        if (yych <= 0xC1)+          goto yy648;+        if (yych <= 0xDF)+          goto yy652;+        goto yy653;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy655;+        goto yy654;+      } else {+        if (yych <= 0xF0)+          goto yy656;+        if (yych <= 0xF3)+          goto yy657;+        if (yych <= 0xF4)+          goto yy658;+      }+    }+  yy648:+    p = marker;+    if (yyaccept <= 1) {+      if (yyaccept == 0) {+        goto yy642;+      } else {+        goto yy650;+      }+    } else {+      if (yyaccept == 2) {+        goto yy662;+      } else {+        goto yy674;+      }+    }+  yy649:+    ++p;+  yy650 : { return (bufsize_t)(p - start); }+  yy651:+    yych = *++p;+    if (yybm[0 + yych] & 16) {+      goto yy646;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy648;+        if (yych <= '"')+          goto yy683;+        goto yy651;+      } else {+        if (yych <= 0xC1)+          goto yy648;+        if (yych >= 0xE0)+          goto yy653;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy655;+        goto yy654;+      } else {+        if (yych <= 0xF0)+          goto yy656;+        if (yych <= 0xF3)+          goto yy657;+        if (yych <= 0xF4)+          goto yy658;+        goto yy648;+      }+    }+  yy652:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy646;+    goto yy648;+  yy653:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy652;+    goto yy648;+  yy654:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy652;+    goto yy648;+  yy655:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0x9F)+      goto yy652;+    goto yy648;+  yy656:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy654;+    goto yy648;+  yy657:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy654;+    goto yy648;+  yy658:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0x8F)+      goto yy654;+    goto yy648;+  yy659:+    yych = *++p;+  yy660:+    if (yybm[0 + yych] & 64) {+      goto yy659;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy648;+        if (yych >= '(')+          goto yy663;+      } else {+        if (yych <= 0xC1)+          goto yy648;+        if (yych <= 0xDF)+          goto yy664;+        goto yy665;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy667;+        goto yy666;+      } else {+        if (yych <= 0xF0)+          goto yy668;+        if (yych <= 0xF3)+          goto yy669;+        if (yych <= 0xF4)+          goto yy670;+        goto yy648;+      }+    }+  yy661:+    ++p;+  yy662 : { return (bufsize_t)(p - start); }+  yy663:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy659;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy648;+        if (yych <= '\'')+          goto yy684;+        goto yy663;+      } else {+        if (yych <= 0xC1)+          goto yy648;+        if (yych >= 0xE0)+          goto yy665;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy667;+        goto yy666;+      } else {+        if (yych <= 0xF0)+          goto yy668;+        if (yych <= 0xF3)+          goto yy669;+        if (yych <= 0xF4)+          goto yy670;+        goto yy648;+      }+    }+  yy664:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy659;+    goto yy648;+  yy665:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy664;+    goto yy648;+  yy666:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy664;+    goto yy648;+  yy667:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0x9F)+      goto yy664;+    goto yy648;+  yy668:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy666;+    goto yy648;+  yy669:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy666;+    goto yy648;+  yy670:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0x8F)+      goto yy666;+    goto yy648;+  yy671:+    yych = *++p;+  yy672:+    if (yybm[0 + yych] & 128) {+      goto yy671;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= '(')+          goto yy648;+        if (yych >= '*')+          goto yy675;+      } else {+        if (yych <= 0xC1)+          goto yy648;+        if (yych <= 0xDF)+          goto yy676;+        goto yy677;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy679;+        goto yy678;+      } else {+        if (yych <= 0xF0)+          goto yy680;+        if (yych <= 0xF3)+          goto yy681;+        if (yych <= 0xF4)+          goto yy682;+        goto yy648;+      }+    }+  yy673:+    ++p;+  yy674 : { return (bufsize_t)(p - start); }+  yy675:+    yych = *++p;+    if (yych <= 0xDF) {+      if (yych <= '[') {+        if (yych <= 0x00)+          goto yy648;+        if (yych == ')')+          goto yy685;+        goto yy671;+      } else {+        if (yych <= '\\')+          goto yy675;+        if (yych <= 0x7F)+          goto yy671;+        if (yych <= 0xC1)+          goto yy648;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0)+          goto yy677;+        if (yych == 0xED)+          goto yy679;+        goto yy678;+      } else {+        if (yych <= 0xF0)+          goto yy680;+        if (yych <= 0xF3)+          goto yy681;+        if (yych <= 0xF4)+          goto yy682;+        goto yy648;+      }+    }+  yy676:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy671;+    goto yy648;+  yy677:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy676;+    goto yy648;+  yy678:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy676;+    goto yy648;+  yy679:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0x9F)+      goto yy676;+    goto yy648;+  yy680:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy678;+    goto yy648;+  yy681:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0xBF)+      goto yy678;+    goto yy648;+  yy682:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy648;+    if (yych <= 0x8F)+      goto yy678;+    goto yy648;+  yy683:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 16) {+      goto yy646;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy650;+        if (yych <= '"')+          goto yy649;+        goto yy651;+      } else {+        if (yych <= 0xC1)+          goto yy650;+        if (yych <= 0xDF)+          goto yy652;+        goto yy653;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy655;+        goto yy654;+      } else {+        if (yych <= 0xF0)+          goto yy656;+        if (yych <= 0xF3)+          goto yy657;+        if (yych <= 0xF4)+          goto yy658;+        goto yy650;+      }+    }+  yy684:+    yyaccept = 2;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy659;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= 0x00)+          goto yy662;+        if (yych <= '\'')+          goto yy661;+        goto yy663;+      } else {+        if (yych <= 0xC1)+          goto yy662;+        if (yych <= 0xDF)+          goto yy664;+        goto yy665;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy667;+        goto yy666;+      } else {+        if (yych <= 0xF0)+          goto yy668;+        if (yych <= 0xF3)+          goto yy669;+        if (yych <= 0xF4)+          goto yy670;+        goto yy662;+      }+    }+  yy685:+    yyaccept = 3;+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy671;+    }+    if (yych <= 0xE0) {+      if (yych <= '\\') {+        if (yych <= '(')+          goto yy674;+        if (yych <= ')')+          goto yy673;+        goto yy675;+      } else {+        if (yych <= 0xC1)+          goto yy674;+        if (yych <= 0xDF)+          goto yy676;+        goto yy677;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych == 0xED)+          goto yy679;+        goto yy678;+      } else {+        if (yych <= 0xF0)+          goto yy680;+        if (yych <= 0xF3)+          goto yy681;+        if (yych <= 0xF4)+          goto yy682;+        goto yy674;+      }+    }+  }+}++// Match space characters, including newlines.+bufsize_t _scan_spacechars(const unsigned char *p) {+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,+    };+    yych = *p;+    if (yybm[0 + yych] & 128) {+      goto yy687;+    }+    ++p;+    { return 0; }+  yy687:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy687;+    }+    { return (bufsize_t)(p - start); }+  }+}++// Match ATX heading start.+bufsize_t _scan_atx_heading_start(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,+    };+    yych = *p;+    if (yych == '#')+      goto yy690;+    ++p;+  yy689 : { return 0; }+  yy690:+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy689;+      if (yych <= '\n')+        goto yy693;+      goto yy689;+    } else {+      if (yych <= '\r')+        goto yy693;+      if (yych == '#')+        goto yy694;+      goto yy689;+    }+  yy691:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+  yy692 : { return (bufsize_t)(p - start); }+  yy693:+    ++p;+    goto yy692;+  yy694:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy695;+      if (yych <= '\n')+        goto yy693;+    } else {+      if (yych <= '\r')+        goto yy693;+      if (yych == '#')+        goto yy696;+    }+  yy695:+    p = marker;+    goto yy689;+  yy696:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy695;+      if (yych <= '\n')+        goto yy693;+      goto yy695;+    } else {+      if (yych <= '\r')+        goto yy693;+      if (yych != '#')+        goto yy695;+    }+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy695;+      if (yych <= '\n')+        goto yy693;+      goto yy695;+    } else {+      if (yych <= '\r')+        goto yy693;+      if (yych != '#')+        goto yy695;+    }+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy695;+      if (yych <= '\n')+        goto yy693;+      goto yy695;+    } else {+      if (yych <= '\r')+        goto yy693;+      if (yych != '#')+        goto yy695;+    }+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy691;+    }+    if (yych <= 0x08)+      goto yy695;+    if (yych <= '\n')+      goto yy693;+    if (yych == '\r')+      goto yy693;+    goto yy695;+  }+}++// Match setext heading line.  Return 1 for level-1 heading,+// 2 for level-2, 0 for no match.+bufsize_t _scan_setext_heading_line(const unsigned char *p) {+  const unsigned char *marker = NULL;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0, 0,  0, 0, 0, 0, 0, 0, 0, 32, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  32, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 64, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0,+    };+    yych = *p;+    if (yych == '-')+      goto yy699;+    if (yych == '=')+      goto yy700;+    ++p;+  yy698 : { return 0; }+  yy699:+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 64) {+      goto yy705;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy698;+      if (yych <= '\n')+        goto yy702;+      goto yy698;+    } else {+      if (yych <= '\r')+        goto yy702;+      if (yych == ' ')+        goto yy702;+      goto yy698;+    }+  yy700:+    yych = *(marker = ++p);+    if (yybm[0 + yych] & 128) {+      goto yy709;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy698;+      if (yych <= '\n')+        goto yy707;+      goto yy698;+    } else {+      if (yych <= '\r')+        goto yy707;+      if (yych == ' ')+        goto yy707;+      goto yy698;+    }+  yy701:+    yych = *++p;+  yy702:+    if (yybm[0 + yych] & 32) {+      goto yy701;+    }+    if (yych <= 0x08)+      goto yy703;+    if (yych <= '\n')+      goto yy704;+    if (yych == '\r')+      goto yy704;+  yy703:+    p = marker;+    goto yy698;+  yy704:+    ++p;+    { return 2; }+  yy705:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy701;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy703;+      if (yych <= '\n')+        goto yy704;+      goto yy703;+    } else {+      if (yych <= '\r')+        goto yy704;+      if (yych == '-')+        goto yy705;+      goto yy703;+    }+  yy706:+    yych = *++p;+  yy707:+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy703;+      if (yych <= '\t')+        goto yy706;+      if (yych >= '\v')+        goto yy703;+    } else {+      if (yych <= '\r')+        goto yy708;+      if (yych == ' ')+        goto yy706;+      goto yy703;+    }+  yy708:+    ++p;+    { return 1; }+  yy709:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy709;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy703;+      if (yych <= '\t')+        goto yy706;+      if (yych <= '\n')+        goto yy708;+      goto yy703;+    } else {+      if (yych <= '\r')+        goto yy708;+      if (yych == ' ')+        goto yy706;+      goto yy703;+    }+  }+}++// Scan an opening code fence.+bufsize_t _scan_open_code_fence(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0,   192, 192, 192, 192, 192, 192, 192, 192, 192, 0,   192, 192, 0,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 144, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,+        224, 192, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,+        0,   0,   0,   0,+    };+    yych = *p;+    if (yych == '`')+      goto yy712;+    if (yych == '~')+      goto yy713;+    ++p;+  yy711 : { return 0; }+  yy712:+    yych = *(marker = ++p);+    if (yych == '`')+      goto yy714;+    goto yy711;+  yy713:+    yych = *(marker = ++p);+    if (yych == '~')+      goto yy716;+    goto yy711;+  yy714:+    yych = *++p;+    if (yybm[0 + yych] & 16) {+      goto yy717;+    }+  yy715:+    p = marker;+    goto yy711;+  yy716:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy718;+    }+    goto yy715;+  yy717:+    yych = *++p;+    if (yybm[0 + yych] & 16) {+      goto yy717;+    }+    if (yych <= 0xDF) {+      if (yych <= '\f') {+        if (yych <= 0x00)+          goto yy715;+        if (yych == '\n') {+          marker = p;+          goto yy720;+        }+        marker = p;+        goto yy719;+      } else {+        if (yych <= '\r') {+          marker = p;+          goto yy720;+        }+        if (yych <= 0x7F) {+          marker = p;+          goto yy719;+        }+        if (yych <= 0xC1)+          goto yy715;+        marker = p;+        goto yy721;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0) {+          marker = p;+          goto yy722;+        }+        if (yych == 0xED) {+          marker = p;+          goto yy724;+        }+        marker = p;+        goto yy723;+      } else {+        if (yych <= 0xF0) {+          marker = p;+          goto yy725;+        }+        if (yych <= 0xF3) {+          marker = p;+          goto yy726;+        }+        if (yych <= 0xF4) {+          marker = p;+          goto yy727;+        }+        goto yy715;+      }+    }+  yy718:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy718;+    }+    if (yych <= 0xDF) {+      if (yych <= '\f') {+        if (yych <= 0x00)+          goto yy715;+        if (yych == '\n') {+          marker = p;+          goto yy729;+        }+        marker = p;+        goto yy728;+      } else {+        if (yych <= '\r') {+          marker = p;+          goto yy729;+        }+        if (yych <= 0x7F) {+          marker = p;+          goto yy728;+        }+        if (yych <= 0xC1)+          goto yy715;+        marker = p;+        goto yy730;+      }+    } else {+      if (yych <= 0xEF) {+        if (yych <= 0xE0) {+          marker = p;+          goto yy731;+        }+        if (yych == 0xED) {+          marker = p;+          goto yy733;+        }+        marker = p;+        goto yy732;+      } else {+        if (yych <= 0xF0) {+          marker = p;+          goto yy734;+        }+        if (yych <= 0xF3) {+          marker = p;+          goto yy735;+        }+        if (yych <= 0xF4) {+          marker = p;+          goto yy736;+        }+        goto yy715;+      }+    }+  yy719:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy719;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy715;+        if (yych >= 0x0E)+          goto yy715;+      } else {+        if (yych <= 0xDF)+          goto yy721;+        if (yych <= 0xE0)+          goto yy722;+        goto yy723;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy724;+        if (yych <= 0xEF)+          goto yy723;+        goto yy725;+      } else {+        if (yych <= 0xF3)+          goto yy726;+        if (yych <= 0xF4)+          goto yy727;+        goto yy715;+      }+    }+  yy720:+    ++p;+    p = marker;+    { return (bufsize_t)(p - start); }+  yy721:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy719;+    goto yy715;+  yy722:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy721;+    goto yy715;+  yy723:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy721;+    goto yy715;+  yy724:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0x9F)+      goto yy721;+    goto yy715;+  yy725:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy723;+    goto yy715;+  yy726:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy723;+    goto yy715;+  yy727:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0x8F)+      goto yy723;+    goto yy715;+  yy728:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy728;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= 0x00)+          goto yy715;+        if (yych >= 0x0E)+          goto yy715;+      } else {+        if (yych <= 0xDF)+          goto yy730;+        if (yych <= 0xE0)+          goto yy731;+        goto yy732;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy733;+        if (yych <= 0xEF)+          goto yy732;+        goto yy734;+      } else {+        if (yych <= 0xF3)+          goto yy735;+        if (yych <= 0xF4)+          goto yy736;+        goto yy715;+      }+    }+  yy729:+    ++p;+    p = marker;+    { return (bufsize_t)(p - start); }+  yy730:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy728;+    goto yy715;+  yy731:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy730;+    goto yy715;+  yy732:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy730;+    goto yy715;+  yy733:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0x9F)+      goto yy730;+    goto yy715;+  yy734:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy732;+    goto yy715;+  yy735:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0xBF)+      goto yy732;+    goto yy715;+  yy736:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy715;+    if (yych <= 0x8F)+      goto yy732;+    goto yy715;+  }+}++// Scan a closing code fence with length at least len.+bufsize_t _scan_close_code_fence(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0, 0, 0, 0, 0, 0, 0, 0, 0,  128, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   128, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 32, 0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0,+    };+    yych = *p;+    if (yych == '`')+      goto yy739;+    if (yych == '~')+      goto yy740;+    ++p;+  yy738 : { return 0; }+  yy739:+    yych = *(marker = ++p);+    if (yych == '`')+      goto yy741;+    goto yy738;+  yy740:+    yych = *(marker = ++p);+    if (yych == '~')+      goto yy743;+    goto yy738;+  yy741:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy744;+    }+  yy742:+    p = marker;+    goto yy738;+  yy743:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy745;+    }+    goto yy742;+  yy744:+    yych = *++p;+    if (yybm[0 + yych] & 32) {+      goto yy744;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy742;+      if (yych <= '\t') {+        marker = p;+        goto yy746;+      }+      if (yych <= '\n') {+        marker = p;+        goto yy747;+      }+      goto yy742;+    } else {+      if (yych <= '\r') {+        marker = p;+        goto yy747;+      }+      if (yych == ' ') {+        marker = p;+        goto yy746;+      }+      goto yy742;+    }+  yy745:+    yych = *++p;+    if (yybm[0 + yych] & 64) {+      goto yy745;+    }+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy742;+      if (yych <= '\t') {+        marker = p;+        goto yy748;+      }+      if (yych <= '\n') {+        marker = p;+        goto yy749;+      }+      goto yy742;+    } else {+      if (yych <= '\r') {+        marker = p;+        goto yy749;+      }+      if (yych == ' ') {+        marker = p;+        goto yy748;+      }+      goto yy742;+    }+  yy746:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy746;+    }+    if (yych <= 0x08)+      goto yy742;+    if (yych <= '\n')+      goto yy747;+    if (yych != '\r')+      goto yy742;+  yy747:+    ++p;+    p = marker;+    { return (bufsize_t)(p - start); }+  yy748:+    yych = *++p;+    if (yych <= '\f') {+      if (yych <= 0x08)+        goto yy742;+      if (yych <= '\t')+        goto yy748;+      if (yych >= '\v')+        goto yy742;+    } else {+      if (yych <= '\r')+        goto yy749;+      if (yych == ' ')+        goto yy748;+      goto yy742;+    }+  yy749:+    ++p;+    p = marker;+    { return (bufsize_t)(p - start); }+  }+}++// Scans an entity.+// Returns number of chars matched.+bufsize_t _scan_entity(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    yych = *p;+    if (yych == '&')+      goto yy752;+    ++p;+  yy751 : { return 0; }+  yy752:+    yych = *(marker = ++p);+    if (yych <= '@') {+      if (yych != '#')+        goto yy751;+    } else {+      if (yych <= 'Z')+        goto yy754;+      if (yych <= '`')+        goto yy751;+      if (yych <= 'z')+        goto yy754;+      goto yy751;+    }+    yych = *++p;+    if (yych <= 'W') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy755;+    } else {+      if (yych <= 'X')+        goto yy756;+      if (yych == 'x')+        goto yy756;+    }+  yy753:+    p = marker;+    goto yy751;+  yy754:+    yych = *++p;+    if (yych <= '@') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy757;+      goto yy753;+    } else {+      if (yych <= 'Z')+        goto yy757;+      if (yych <= '`')+        goto yy753;+      if (yych <= 'z')+        goto yy757;+      goto yy753;+    }+  yy755:+    yych = *++p;+    if (yych <= '/')+      goto yy753;+    if (yych <= '9')+      goto yy758;+    if (yych == ';')+      goto yy759;+    goto yy753;+  yy756:+    yych = *++p;+    if (yych <= '@') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy760;+      goto yy753;+    } else {+      if (yych <= 'F')+        goto yy760;+      if (yych <= '`')+        goto yy753;+      if (yych <= 'f')+        goto yy760;+      goto yy753;+    }+  yy757:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy761;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy761;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy761;+        goto yy753;+      }+    }+  yy758:+    yych = *++p;+    if (yych <= '/')+      goto yy753;+    if (yych <= '9')+      goto yy762;+    if (yych != ';')+      goto yy753;+  yy759:+    ++p;+    { return (bufsize_t)(p - start); }+  yy760:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy763;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'F') {+        if (yych <= '@')+          goto yy753;+        goto yy763;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'f')+          goto yy763;+        goto yy753;+      }+    }+  yy761:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy764;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy764;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy764;+        goto yy753;+      }+    }+  yy762:+    yych = *++p;+    if (yych <= '/')+      goto yy753;+    if (yych <= '9')+      goto yy765;+    if (yych == ';')+      goto yy759;+    goto yy753;+  yy763:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy766;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'F') {+        if (yych <= '@')+          goto yy753;+        goto yy766;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'f')+          goto yy766;+        goto yy753;+      }+    }+  yy764:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy767;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy767;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy767;+        goto yy753;+      }+    }+  yy765:+    yych = *++p;+    if (yych <= '/')+      goto yy753;+    if (yych <= '9')+      goto yy768;+    if (yych == ';')+      goto yy759;+    goto yy753;+  yy766:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy769;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'F') {+        if (yych <= '@')+          goto yy753;+        goto yy769;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'f')+          goto yy769;+        goto yy753;+      }+    }+  yy767:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy770;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy770;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy770;+        goto yy753;+      }+    }+  yy768:+    yych = *++p;+    if (yych <= '/')+      goto yy753;+    if (yych <= '9')+      goto yy771;+    if (yych == ';')+      goto yy759;+    goto yy753;+  yy769:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy772;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'F') {+        if (yych <= '@')+          goto yy753;+        goto yy772;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'f')+          goto yy772;+        goto yy753;+      }+    }+  yy770:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy773;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy773;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy773;+        goto yy753;+      }+    }+  yy771:+    yych = *++p;+    if (yych <= '/')+      goto yy753;+    if (yych <= '9')+      goto yy774;+    if (yych == ';')+      goto yy759;+    goto yy753;+  yy772:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy774;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'F') {+        if (yych <= '@')+          goto yy753;+        goto yy774;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'f')+          goto yy774;+        goto yy753;+      }+    }+  yy773:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy775;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy775;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy775;+        goto yy753;+      }+    }+  yy774:+    yych = *++p;+    if (yych == ';')+      goto yy759;+    goto yy753;+  yy775:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy776;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy776:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy777;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy777:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy778;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy778:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy779;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy779:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy780;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy780:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy781;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy781:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy782;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy782:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy783;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy783:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy784;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy784:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy785;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy785:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy786;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy786:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy787;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy787:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy788;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy788:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy789;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy789:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy790;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy790:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy791;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy791:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy792;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy792:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy793;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy793:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy794;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy794:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy795;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy795:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy796;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy796:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy797;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy797:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy798;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych >= '{')+          goto yy753;+      }+    }+  yy798:+    yych = *++p;+    if (yych <= ';') {+      if (yych <= '/')+        goto yy753;+      if (yych <= '9')+        goto yy774;+      if (yych <= ':')+        goto yy753;+      goto yy759;+    } else {+      if (yych <= 'Z') {+        if (yych <= '@')+          goto yy753;+        goto yy774;+      } else {+        if (yych <= '`')+          goto yy753;+        if (yych <= 'z')+          goto yy774;+        goto yy753;+      }+    }+  }+}++// Returns positive value if a URL begins in a way that is potentially+// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.+bufsize_t _scan_dangerous_url(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    unsigned int yyaccept = 0;+    yych = *p;+    if (yych <= 'V') {+      if (yych <= 'F') {+        if (yych == 'D')+          goto yy801;+        if (yych >= 'F')+          goto yy802;+      } else {+        if (yych == 'J')+          goto yy803;+        if (yych >= 'V')+          goto yy804;+      }+    } else {+      if (yych <= 'f') {+        if (yych == 'd')+          goto yy801;+        if (yych >= 'f')+          goto yy802;+      } else {+        if (yych <= 'j') {+          if (yych >= 'j')+            goto yy803;+        } else {+          if (yych == 'v')+            goto yy804;+        }+      }+    }+    ++p;+  yy800 : { return 0; }+  yy801:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych == 'A')+      goto yy805;+    if (yych == 'a')+      goto yy805;+    goto yy800;+  yy802:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych == 'I')+      goto yy807;+    if (yych == 'i')+      goto yy807;+    goto yy800;+  yy803:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych == 'A')+      goto yy808;+    if (yych == 'a')+      goto yy808;+    goto yy800;+  yy804:+    yyaccept = 0;+    yych = *(marker = ++p);+    if (yych == 'B')+      goto yy809;+    if (yych == 'b')+      goto yy809;+    goto yy800;+  yy805:+    yych = *++p;+    if (yych == 'T')+      goto yy810;+    if (yych == 't')+      goto yy810;+  yy806:+    p = marker;+    if (yyaccept == 0) {+      goto yy800;+    } else {+      goto yy818;+    }+  yy807:+    yych = *++p;+    if (yych == 'L')+      goto yy811;+    if (yych == 'l')+      goto yy811;+    goto yy806;+  yy808:+    yych = *++p;+    if (yych == 'V')+      goto yy812;+    if (yych == 'v')+      goto yy812;+    goto yy806;+  yy809:+    yych = *++p;+    if (yych == 'S')+      goto yy813;+    if (yych == 's')+      goto yy813;+    goto yy806;+  yy810:+    yych = *++p;+    if (yych == 'A')+      goto yy814;+    if (yych == 'a')+      goto yy814;+    goto yy806;+  yy811:+    yych = *++p;+    if (yych == 'E')+      goto yy815;+    if (yych == 'e')+      goto yy815;+    goto yy806;+  yy812:+    yych = *++p;+    if (yych == 'A')+      goto yy809;+    if (yych == 'a')+      goto yy809;+    goto yy806;+  yy813:+    yych = *++p;+    if (yych == 'C')+      goto yy816;+    if (yych == 'c')+      goto yy816;+    goto yy806;+  yy814:+    yych = *++p;+    if (yych == ':')+      goto yy817;+    goto yy806;+  yy815:+    yych = *++p;+    if (yych == ':')+      goto yy819;+    goto yy806;+  yy816:+    yych = *++p;+    if (yych == 'R')+      goto yy820;+    if (yych == 'r')+      goto yy820;+    goto yy806;+  yy817:+    yyaccept = 1;+    yych = *(marker = ++p);+    if (yych == 'I')+      goto yy821;+    if (yych == 'i')+      goto yy821;+  yy818 : { return (bufsize_t)(p - start); }+  yy819:+    ++p;+    goto yy818;+  yy820:+    yych = *++p;+    if (yych == 'I')+      goto yy822;+    if (yych == 'i')+      goto yy822;+    goto yy806;+  yy821:+    yych = *++p;+    if (yych == 'M')+      goto yy823;+    if (yych == 'm')+      goto yy823;+    goto yy806;+  yy822:+    yych = *++p;+    if (yych == 'P')+      goto yy824;+    if (yych == 'p')+      goto yy824;+    goto yy806;+  yy823:+    yych = *++p;+    if (yych == 'A')+      goto yy825;+    if (yych == 'a')+      goto yy825;+    goto yy806;+  yy824:+    yych = *++p;+    if (yych == 'T')+      goto yy815;+    if (yych == 't')+      goto yy815;+    goto yy806;+  yy825:+    yych = *++p;+    if (yych == 'G')+      goto yy826;+    if (yych != 'g')+      goto yy806;+  yy826:+    yych = *++p;+    if (yych == 'E')+      goto yy827;+    if (yych != 'e')+      goto yy806;+  yy827:+    yych = *++p;+    if (yych != '/')+      goto yy806;+    yych = *++p;+    if (yych <= 'W') {+      if (yych <= 'J') {+        if (yych == 'G')+          goto yy828;+        if (yych <= 'I')+          goto yy806;+        goto yy829;+      } else {+        if (yych == 'P')+          goto yy830;+        if (yych <= 'V')+          goto yy806;+        goto yy831;+      }+    } else {+      if (yych <= 'j') {+        if (yych == 'g')+          goto yy828;+        if (yych <= 'i')+          goto yy806;+        goto yy829;+      } else {+        if (yych <= 'p') {+          if (yych <= 'o')+            goto yy806;+          goto yy830;+        } else {+          if (yych == 'w')+            goto yy831;+          goto yy806;+        }+      }+    }+  yy828:+    yych = *++p;+    if (yych == 'I')+      goto yy832;+    if (yych == 'i')+      goto yy832;+    goto yy806;+  yy829:+    yych = *++p;+    if (yych == 'P')+      goto yy833;+    if (yych == 'p')+      goto yy833;+    goto yy806;+  yy830:+    yych = *++p;+    if (yych == 'N')+      goto yy834;+    if (yych == 'n')+      goto yy834;+    goto yy806;+  yy831:+    yych = *++p;+    if (yych == 'E')+      goto yy835;+    if (yych == 'e')+      goto yy835;+    goto yy806;+  yy832:+    yych = *++p;+    if (yych == 'F')+      goto yy836;+    if (yych == 'f')+      goto yy836;+    goto yy806;+  yy833:+    yych = *++p;+    if (yych == 'E')+      goto yy834;+    if (yych != 'e')+      goto yy806;+  yy834:+    yych = *++p;+    if (yych == 'G')+      goto yy836;+    if (yych == 'g')+      goto yy836;+    goto yy806;+  yy835:+    yych = *++p;+    if (yych == 'B')+      goto yy837;+    if (yych == 'b')+      goto yy837;+    goto yy806;+  yy836:+    ++p;+    { return 0; }+  yy837:+    yych = *++p;+    if (yych == 'P')+      goto yy836;+    if (yych == 'p')+      goto yy836;+    goto yy806;+  }+}++// Scans a footnote definition opening.+bufsize_t _scan_footnote_definition(const unsigned char *p) {+  const unsigned char *marker = NULL;+  const unsigned char *start = p;++  {+    unsigned char yych;+    static const unsigned char yybm[] = {+        0,   64, 64, 64, 64, 64, 64, 64, 64, 128, 0,  64, 64, 0,  64, 64,+        64,  64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64,+        128, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64,+        64,  64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64,+        64,  64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64,+        64,  64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 0,  64, 64,+        64,  64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64,+        64,  64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+        0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,+    };+    yych = *p;+    if (yych == '[')+      goto yy840;+    ++p;+  yy839 : { return 0; }+  yy840:+    yych = *(marker = ++p);+    if (yych != '^')+      goto yy839;+    yych = *++p;+    if (yych != ']')+      goto yy843;+  yy841:+    p = marker;+    goto yy839;+  yy842:+    yych = *++p;+  yy843:+    if (yybm[0 + yych] & 64) {+      goto yy842;+    }+    if (yych <= 0xEC) {+      if (yych <= 0xC1) {+        if (yych <= ' ')+          goto yy841;+        if (yych <= ']')+          goto yy851;+        goto yy841;+      } else {+        if (yych <= 0xDF)+          goto yy844;+        if (yych <= 0xE0)+          goto yy845;+        goto yy846;+      }+    } else {+      if (yych <= 0xF0) {+        if (yych <= 0xED)+          goto yy847;+        if (yych <= 0xEF)+          goto yy846;+        goto yy848;+      } else {+        if (yych <= 0xF3)+          goto yy849;+        if (yych <= 0xF4)+          goto yy850;+        goto yy841;+      }+    }+  yy844:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy841;+    if (yych <= 0xBF)+      goto yy842;+    goto yy841;+  yy845:+    yych = *++p;+    if (yych <= 0x9F)+      goto yy841;+    if (yych <= 0xBF)+      goto yy844;+    goto yy841;+  yy846:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy841;+    if (yych <= 0xBF)+      goto yy844;+    goto yy841;+  yy847:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy841;+    if (yych <= 0x9F)+      goto yy844;+    goto yy841;+  yy848:+    yych = *++p;+    if (yych <= 0x8F)+      goto yy841;+    if (yych <= 0xBF)+      goto yy846;+    goto yy841;+  yy849:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy841;+    if (yych <= 0xBF)+      goto yy846;+    goto yy841;+  yy850:+    yych = *++p;+    if (yych <= 0x7F)+      goto yy841;+    if (yych <= 0x8F)+      goto yy846;+    goto yy841;+  yy851:+    yych = *++p;+    if (yych != ':')+      goto yy841;+  yy852:+    yych = *++p;+    if (yybm[0 + yych] & 128) {+      goto yy852;+    }+    { return (bufsize_t)(p - start); }+  } }
cbits/scanners.h view
@@ -15,6 +15,10 @@ bufsize_t _scan_autolink_email(const unsigned char *p); bufsize_t _scan_html_tag(const unsigned char *p); bufsize_t _scan_liberal_html_tag(const unsigned char *p);+bufsize_t _scan_html_comment(const unsigned char *p);+bufsize_t _scan_html_pi(const unsigned char *p);+bufsize_t _scan_html_declaration(const unsigned char *p);+bufsize_t _scan_html_cdata(const unsigned char *p); bufsize_t _scan_html_block_start(const unsigned char *p); bufsize_t _scan_html_block_start_7(const unsigned char *p); bufsize_t _scan_html_block_end_1(const unsigned char *p);@@ -26,7 +30,6 @@ bufsize_t _scan_spacechars(const unsigned char *p); bufsize_t _scan_atx_heading_start(const unsigned char *p); bufsize_t _scan_setext_heading_line(const unsigned char *p);-bufsize_t _scan_thematic_break(const unsigned char *p); bufsize_t _scan_open_code_fence(const unsigned char *p); bufsize_t _scan_close_code_fence(const unsigned char *p); bufsize_t _scan_entity(const unsigned char *p);@@ -38,6 +41,10 @@ #define scan_autolink_email(c, n) _scan_at(&_scan_autolink_email, c, n) #define scan_html_tag(c, n) _scan_at(&_scan_html_tag, c, n) #define scan_liberal_html_tag(c, n) _scan_at(&_scan_liberal_html_tag, c, n)+#define scan_html_comment(c, n) _scan_at(&_scan_html_comment, c, n)+#define scan_html_pi(c, n) _scan_at(&_scan_html_pi, c, n)+#define scan_html_declaration(c, n) _scan_at(&_scan_html_declaration, c, n)+#define scan_html_cdata(c, n) _scan_at(&_scan_html_cdata, c, n) #define scan_html_block_start(c, n) _scan_at(&_scan_html_block_start, c, n) #define scan_html_block_start_7(c, n) _scan_at(&_scan_html_block_start_7, c, n) #define scan_html_block_end_1(c, n) _scan_at(&_scan_html_block_end_1, c, n)@@ -50,7 +57,6 @@ #define scan_atx_heading_start(c, n) _scan_at(&_scan_atx_heading_start, c, n) #define scan_setext_heading_line(c, n)                                         \   _scan_at(&_scan_setext_heading_line, c, n)-#define scan_thematic_break(c, n) _scan_at(&_scan_thematic_break, c, n) #define scan_open_code_fence(c, n) _scan_at(&_scan_open_code_fence, c, n) #define scan_close_code_fence(c, n) _scan_at(&_scan_close_code_fence, c, n) #define scan_entity(c, n) _scan_at(&_scan_entity, c, n)
cbits/strikethrough.c view
@@ -67,6 +67,7 @@   strikethrough->end_column = closer->inl_text->start_column + closer->inl_text->as.literal.len - 1;   cmark_node_free(closer->inl_text); +done:   delim = closer;   while (delim != NULL && delim != opener) {     tmp_delim = delim->previous;@@ -76,7 +77,6 @@    cmark_inline_parser_remove_delimiter(inline_parser, opener); -done:   return res; } 
cbits/table.c view
@@ -11,41 +11,55 @@ #include "table.h" #include "cmark-gfm-core-extensions.h" +// Limit to prevent a malicious input from causing a denial of service.+#define MAX_AUTOCOMPLETED_CELLS 0x80000++// Custom node flag, initialized in `create_table_extension`.+static cmark_node_internal_flags CMARK_NODE__TABLE_VISITED;+ cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW,     CMARK_NODE_TABLE_CELL;  typedef struct {+  cmark_strbuf *buf;+  int start_offset, end_offset, internal_offset;+} node_cell;++typedef struct {   uint16_t n_columns;-  cmark_llist *cells;+  int paragraph_offset;+  node_cell *cells; } table_row;  typedef struct {   uint16_t n_columns;   uint8_t *alignments;+  int n_rows;+  int n_nonempty_cells; } node_table;  typedef struct {   bool is_header; } node_table_row; -typedef struct {-  cmark_strbuf *buf;-  int start_offset, end_offset, internal_offset;-} node_cell;--static void free_table_cell(cmark_mem *mem, void *data) {-  node_cell *cell = (node_cell *)data;+static void free_table_cell(cmark_mem *mem, node_cell *cell) {   cmark_strbuf_free((cmark_strbuf *)cell->buf);   mem->free(cell->buf);-  mem->free(cell); } +static void free_row_cells(cmark_mem *mem, table_row *row) {+  while (row->n_columns > 0) {+    free_table_cell(mem, &row->cells[--row->n_columns]);+  }+  mem->free(row->cells);+  row->cells = NULL;+}+ static void free_table_row(cmark_mem *mem, table_row *row) {   if (!row)     return; -  cmark_llist_free_full(mem, row->cells, (cmark_free_func)free_table_cell);-+  free_row_cells(mem, row);   mem->free(row); } @@ -74,6 +88,33 @@   return 1; } +// Increment the number of rows in the table. Also update n_nonempty_cells,+// which keeps track of the number of cells which were parsed from the+// input file. (If one of the rows is too short, then the trailing cells+// are autocompleted. Autocompleted cells are not counted in n_nonempty_cells.)+// The purpose of this is to prevent a malicious input from generating a very+// large number of autocompleted cells, which could cause a denial of service+// vulnerability.+static int incr_table_row_count(cmark_node *node, int i) {+  if (!node || node->type != CMARK_NODE_TABLE) {+    return 0;+  }++  ((node_table *)node->as.opaque)->n_rows++;+  ((node_table *)node->as.opaque)->n_nonempty_cells += i;+  return 1;+}++// Calculate the number of autocompleted cells.+static int get_n_autocompleted_cells(cmark_node *node) {+  if (!node || node->type != CMARK_NODE_TABLE) {+    return 0;+  }++  const node_table *nt = (node_table *)node->as.opaque;+  return (nt->n_columns * nt->n_rows) - nt->n_nonempty_cells;+}+ static uint8_t *get_table_alignments(cmark_node *node) {   if (!node || node->type != CMARK_NODE_TABLE)     return 0;@@ -89,6 +130,23 @@   return 1; } +static uint8_t get_cell_alignment(cmark_node *node) {+  if (!node || node->type != CMARK_NODE_TABLE_CELL)+    return 0;++  const uint8_t *alignments = get_table_alignments(node->parent->parent);+  int i = node->as.cell_index;+  return alignments[i];+}++static int set_cell_index(cmark_node *node, int i) {+  if (!node || node->type != CMARK_NODE_TABLE_CELL)+    return 0;++  node->as.cell_index = i;+  return 1;+}+ static cmark_strbuf *unescape_pipes(cmark_mem *mem, unsigned char *string, bufsize_t len) {   cmark_strbuf *res = (cmark_strbuf *)mem->calloc(1, sizeof(cmark_strbuf));@@ -110,50 +168,111 @@   return res; } +// Adds a new cell to the end of the row. A pointer to the new cell is returned+// for the caller to initialize.+static node_cell* append_row_cell(cmark_mem *mem, table_row *row) {+  const uint32_t n_columns = row->n_columns + 1;+  // realloc when n_columns is a power of 2+  if ((n_columns & (n_columns-1)) == 0) {+    // make sure we never wrap row->n_columns+    // offset will != len and our exit will clean up as intended+    if (n_columns > UINT16_MAX) {+      return NULL;+    }+    // Use realloc to double the size of the buffer.+    row->cells = (node_cell *)mem->realloc(row->cells, (2 * n_columns - 1) * sizeof(node_cell));+  }+  row->n_columns = (uint16_t)n_columns;+  return &row->cells[n_columns-1];+}+ static table_row *row_from_string(cmark_syntax_extension *self,                                   cmark_parser *parser, unsigned char *string,                                   int len) {+  // Parses a single table row. It has the following form:+  // `delim? table_cell (delim table_cell)* delim? newline`+  // Note that cells are allowed to be empty.+  //+  // From the GitHub-flavored Markdown specification:+  //+  // > Each row consists of cells containing arbitrary text, in which inlines+  // > are parsed, separated by pipes (|). A leading and trailing pipe is also+  // > recommended for clarity of reading, and if there’s otherwise parsing+  // > ambiguity.+   table_row *row = NULL;   bufsize_t cell_matched = 1, pipe_matched = 1, offset;+  int expect_more_cells = 1;+  int row_end_offset = 0;+  int int_overflow_abort = 0;    row = (table_row *)parser->mem->calloc(1, sizeof(table_row));   row->n_columns = 0;   row->cells = NULL; +  // Scan past the (optional) leading pipe.   offset = scan_table_cell_end(string, len, 0);    // Parse the cells of the row. Stop if we reach the end of the input, or if we   // cannot detect any more cells.-  while (offset < len && (cell_matched || pipe_matched)) {+  while (offset < len && expect_more_cells) {     cell_matched = scan_table_cell(string, len, offset);     pipe_matched = scan_table_cell_end(string, len, offset + cell_matched);      if (cell_matched || pipe_matched) {+      // We are guaranteed to have a cell, since (1) either we found some+      // content and cell_matched, or (2) we found an empty cell followed by a+      // pipe.       cmark_strbuf *cell_buf = unescape_pipes(parser->mem, string + offset,           cell_matched);       cmark_strbuf_trim(cell_buf); -      node_cell *cell = (node_cell *)parser->mem->calloc(1, sizeof(*cell));+      node_cell *cell = append_row_cell(parser->mem, row);+      if (!cell) {+        int_overflow_abort = 1;+        cmark_strbuf_free(cell_buf);+        parser->mem->free(cell_buf);+        break;+      }       cell->buf = cell_buf;       cell->start_offset = offset;       cell->end_offset = offset + cell_matched - 1;-      while (cell->start_offset > 0 && string[cell->start_offset - 1] != '|') {+      cell->internal_offset = 0;++      while (cell->start_offset > row->paragraph_offset && string[cell->start_offset - 1] != '|') {         --cell->start_offset;         ++cell->internal_offset;       }-      row->n_columns += 1;-      row->cells = cmark_llist_append(parser->mem, row->cells, cell);     }      offset += cell_matched + pipe_matched; -    if (!pipe_matched) {-      pipe_matched = scan_table_row_end(string, len, offset);-      offset += pipe_matched;+    if (pipe_matched) {+      expect_more_cells = 1;+    } else {+      // We've scanned the last cell. Check if we have reached the end of the row+      row_end_offset = scan_table_row_end(string, len, offset);+      offset += row_end_offset;++      // If the end of the row is not the end of the input,+      // the row is not a real row but potentially part of the paragraph+      // preceding the table.+      if (row_end_offset && offset != len) {+        row->paragraph_offset = offset;++        free_row_cells(parser->mem, row);++        // Scan past the (optional) leading pipe.+        offset += scan_table_cell_end(string, len, offset);++        expect_more_cells = 1;+      } else {+        expect_more_cells = 0;+      }     }   } -  if (offset != len || !row->n_columns) {+  if (offset != len || row->n_columns == 0 || int_overflow_abort) {     free_table_row(parser->mem, row);     row = NULL;   }@@ -161,73 +280,107 @@   return row; } +static void try_inserting_table_header_paragraph(cmark_parser *parser,+                                                 cmark_node *parent_container,+                                                 unsigned char *parent_string,+                                                 int paragraph_offset) {+  cmark_node *paragraph;+  cmark_strbuf *paragraph_content;++  paragraph = cmark_node_new_with_mem(CMARK_NODE_PARAGRAPH, parser->mem);++  paragraph_content = unescape_pipes(parser->mem, parent_string, paragraph_offset);+  cmark_strbuf_trim(paragraph_content);+  cmark_node_set_string_content(paragraph, (char *) paragraph_content->ptr);+  cmark_strbuf_free(paragraph_content);+  parser->mem->free(paragraph_content);++  if (!cmark_node_insert_before(parent_container, paragraph)) {+    parser->mem->free(paragraph);+  }+}+ static cmark_node *try_opening_table_header(cmark_syntax_extension *self,                                             cmark_parser *parser,                                             cmark_node *parent_container,                                             unsigned char *input, int len) {-  bufsize_t matched =-      scan_table_start(input, len, cmark_parser_get_first_nonspace(parser));   cmark_node *table_header;   table_row *header_row = NULL;-  table_row *marker_row = NULL;+  table_row *delimiter_row = NULL;   node_table_row *ntr;   const char *parent_string;   uint16_t i; -  if (!matched)+  if (parent_container->flags & CMARK_NODE__TABLE_VISITED) {     return parent_container;+  } -  parent_string = cmark_node_get_string_content(parent_container);+  if (!scan_table_start(input, len, cmark_parser_get_first_nonspace(parser))) {+    return parent_container;+  } +  // Since scan_table_start was successful, we must have a delimiter row.+  delimiter_row = row_from_string(+    self, parser, input + cmark_parser_get_first_nonspace(parser),+    len - cmark_parser_get_first_nonspace(parser));+  // assert may be optimized out, don't rely on it for security boundaries+  if (!delimiter_row) {+      return parent_container;+  }++  assert(delimiter_row);+   cmark_arena_push(); +  // Check for a matching header row. We call `row_from_string` with the entire+  // (potentially long) parent container as input, but this should be safe since+  // `row_from_string` bails out early if it does not find a row.+  parent_string = cmark_node_get_string_content(parent_container);   header_row = row_from_string(self, parser, (unsigned char *)parent_string,                                (int)strlen(parent_string));--  if (!header_row) {+  if (!header_row || header_row->n_columns != delimiter_row->n_columns) {+    free_table_row(parser->mem, delimiter_row);     free_table_row(parser->mem, header_row);     cmark_arena_pop();-    return parent_container;-  }--  marker_row = row_from_string(self, parser,-                               input + cmark_parser_get_first_nonspace(parser),-                               len - cmark_parser_get_first_nonspace(parser));--  assert(marker_row);--  if (header_row->n_columns != marker_row->n_columns) {-    free_table_row(parser->mem, header_row);-    free_table_row(parser->mem, marker_row);-    cmark_arena_pop();+    parent_container->flags |= CMARK_NODE__TABLE_VISITED;     return parent_container;   }    if (cmark_arena_pop()) {+    delimiter_row = row_from_string(+        self, parser, input + cmark_parser_get_first_nonspace(parser),+        len - cmark_parser_get_first_nonspace(parser));     header_row = row_from_string(self, parser, (unsigned char *)parent_string,                                  (int)strlen(parent_string));-    marker_row = row_from_string(self, parser,-                                 input + cmark_parser_get_first_nonspace(parser),-                                 len - cmark_parser_get_first_nonspace(parser));+    // row_from_string can return NULL, add additional check to ensure n_columns match+    if (!delimiter_row || !header_row || header_row->n_columns != delimiter_row->n_columns) {+        free_table_row(parser->mem, delimiter_row);+        free_table_row(parser->mem, header_row);+        return parent_container;+    }   }    if (!cmark_node_set_type(parent_container, CMARK_NODE_TABLE)) {     free_table_row(parser->mem, header_row);-    free_table_row(parser->mem, marker_row);+    free_table_row(parser->mem, delimiter_row);     return parent_container;   } -  cmark_node_set_syntax_extension(parent_container, self);+  if (header_row->paragraph_offset) {+    try_inserting_table_header_paragraph(parser, parent_container, (unsigned char *)parent_string,+                                         header_row->paragraph_offset);+  } +  cmark_node_set_syntax_extension(parent_container, self);   parent_container->as.opaque = parser->mem->calloc(1, sizeof(node_table));-   set_n_table_columns(parent_container, header_row->n_columns); +  // allocate alignments based on delimiter_row->n_columns+  // since we populate the alignments array based on delimiter_row->cells   uint8_t *alignments =-      (uint8_t *)parser->mem->calloc(header_row->n_columns, sizeof(uint8_t));-  cmark_llist *it = marker_row->cells;-  for (i = 0; it; it = it->next, ++i) {-    node_cell *node = (node_cell *)it->data;+      (uint8_t *)parser->mem->calloc(delimiter_row->n_columns, sizeof(uint8_t));+  for (i = 0; i < delimiter_row->n_columns; ++i) {+    node_cell *node = &delimiter_row->cells[i];     bool left = node->buf->ptr[0] == ':', right = node->buf->ptr[node->buf->size - 1] == ':';      if (left && right)@@ -249,27 +402,26 @@   table_header->as.opaque = ntr = (node_table_row *)parser->mem->calloc(1, sizeof(node_table_row));   ntr->is_header = true; -  {-    cmark_llist *tmp;--    for (tmp = header_row->cells; tmp; tmp = tmp->next) {-      node_cell *cell = (node_cell *) tmp->data;-      cmark_node *header_cell = cmark_parser_add_child(parser, table_header,-          CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);-      header_cell->start_line = header_cell->end_line = parent_container->start_line;-      header_cell->internal_offset = cell->internal_offset;-      header_cell->end_column = parent_container->start_column + cell->end_offset;-      cmark_node_set_string_content(header_cell, (char *) cell->buf->ptr);-      cmark_node_set_syntax_extension(header_cell, self);-    }+  for (i = 0; i < header_row->n_columns; ++i) {+    node_cell *cell = &header_row->cells[i];+    cmark_node *header_cell = cmark_parser_add_child(parser, table_header,+                                                     CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);+    header_cell->start_line = header_cell->end_line = parent_container->start_line;+    header_cell->internal_offset = cell->internal_offset;+    header_cell->end_column = parent_container->start_column + cell->end_offset;+    cmark_node_set_string_content(header_cell, (char *) cell->buf->ptr);+    cmark_node_set_syntax_extension(header_cell, self);+    set_cell_index(header_cell, i);   } +  incr_table_row_count(parent_container, i);+   cmark_parser_advance_offset(       parser, (char *)input,       (int)strlen((char *)input) - 1 - cmark_parser_get_offset(parser), false);    free_table_row(parser->mem, header_row);-  free_table_row(parser->mem, marker_row);+  free_table_row(parser->mem, delimiter_row);   return parent_container; } @@ -283,6 +435,10 @@   if (cmark_parser_is_blank(parser))     return NULL; +  if (get_n_autocompleted_cells(parent_container) > MAX_AUTOCOMPLETED_CELLS) {+    return NULL;+  }+   table_row_block =       cmark_parser_add_child(parser, parent_container, CMARK_NODE_TABLE_ROW,                              parent_container->start_column);@@ -293,24 +449,33 @@   row = row_from_string(self, parser, input + cmark_parser_get_first_nonspace(parser),       len - cmark_parser_get_first_nonspace(parser)); +  if (!row) {+      // clean up the dangling node+      cmark_node_free(table_row_block);+      return NULL;+  }+   {-    cmark_llist *tmp;     int i, table_columns = get_n_table_columns(parent_container); -    for (tmp = row->cells, i = 0; tmp && i < table_columns; tmp = tmp->next, ++i) {-      node_cell *cell = (node_cell *) tmp->data;+    for (i = 0; i < row->n_columns && i < table_columns; ++i) {+      node_cell *cell = &row->cells[i];       cmark_node *node = cmark_parser_add_child(parser, table_row_block,           CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);       node->internal_offset = cell->internal_offset;       node->end_column = parent_container->start_column + cell->end_offset;       cmark_node_set_string_content(node, (char *) cell->buf->ptr);       cmark_node_set_syntax_extension(node, self);+      set_cell_index(node, i);     } +    incr_table_row_count(parent_container, i);+     for (; i < table_columns; ++i) {       cmark_node *node = cmark_parser_add_child(           parser, table_row_block, CMARK_NODE_TABLE_CELL, 0);       cmark_node_set_syntax_extension(node, self);+      set_cell_index(node, i);     }   } @@ -495,13 +660,7 @@                             cmark_node *node) {   if (node->type == CMARK_NODE_TABLE_CELL) {     if (cmark_gfm_extensions_get_table_row_is_header(node->parent)) {-      uint8_t *alignments = get_table_alignments(node->parent->parent);-      int i = 0;-      cmark_node *n;-      for (n = node->parent->first_child; n; n = n->next, ++i)-        if (n == node)-          break;-      switch (alignments[i]) {+      switch (get_cell_alignment(node)) {       case 'l': return " align=\"left\"";       case 'c': return " align=\"center\"";       case 'r': return " align=\"right\"";@@ -589,7 +748,6 @@                         cmark_event_type ev_type, int options) {   bool entering = (ev_type == CMARK_EVENT_ENTER);   cmark_strbuf *html = renderer->html;-  cmark_node *n;    // XXX: we just monopolise renderer->opaque.   struct html_table_state *table_state =@@ -638,7 +796,6 @@       }     }   } else if (node->type == CMARK_NODE_TABLE_CELL) {-    uint8_t *alignments = get_table_alignments(node->parent->parent);     if (entering) {       cmark_html_render_cr(html);       if (table_state->in_table_header) {@@ -647,12 +804,7 @@         cmark_strbuf_puts(html, "<td");       } -      int i = 0;-      for (n = node->parent->first_child; n; n = n->next, ++i)-        if (n == node)-          break;--      switch (alignments[i]) {+      switch (get_cell_alignment(node)) {       case 'l': html_table_add_align(html, "left", options); break;       case 'c': html_table_add_align(html, "center", options); break;       case 'r': html_table_add_align(html, "right", options); break;@@ -701,6 +853,7 @@ cmark_syntax_extension *create_table_extension(void) {   cmark_syntax_extension *self = cmark_syntax_extension_new("table"); +  cmark_register_node_flag(&CMARK_NODE__TABLE_VISITED);   cmark_syntax_extension_set_match_block_func(self, matches);   cmark_syntax_extension_set_open_block_func(self, try_opening_table_block);   cmark_syntax_extension_set_get_type_string_func(self, get_type_string);
cbits/tasklist.c view
@@ -9,19 +9,33 @@   CMARK_TASKLIST_CHECKED, } cmark_tasklist_type; +// Local constants+static const char *TYPE_STRING = "tasklist";+ static const char *get_type_string(cmark_syntax_extension *extension, cmark_node *node) {-  return "tasklist";+  return TYPE_STRING; } -char *cmark_gfm_extensions_get_tasklist_state(cmark_node *node) {-  if (!node || ((int)node->as.opaque != CMARK_TASKLIST_CHECKED && (int)node->as.opaque != CMARK_TASKLIST_NOCHECKED))++// Return 1 if state was set, 0 otherwise+int cmark_gfm_extensions_set_tasklist_item_checked(cmark_node *node, bool is_checked) {+  // The node has to exist, and be an extension, and actually be the right type in order to get the value.+  if (!node || !node->extension || strcmp(cmark_node_get_type_string(node), TYPE_STRING))     return 0; -  if ((int)node->as.opaque != CMARK_TASKLIST_CHECKED) {-    return "checked";+  node->as.list.checked = is_checked;+  return 1;+}++bool cmark_gfm_extensions_get_tasklist_item_checked(cmark_node *node) {+  if (!node || !node->extension || strcmp(cmark_node_get_type_string(node), TYPE_STRING))+    return false;++  if (node->as.list.checked) {+    return true;   }   else {-    return "unchecked";+    return false;   } } @@ -74,11 +88,8 @@   cmark_node_set_syntax_extension(parent_container, self);   cmark_parser_advance_offset(parser, (char *)input, 3, false); -  if (strstr((char*)input, "[x]")) {-    parent_container->as.opaque = (void *)CMARK_TASKLIST_CHECKED;-  } else {-    parent_container->as.opaque = (void *)CMARK_TASKLIST_NOCHECKED;-  }+  // Either an upper or lower case X means the task is completed.+  parent_container->as.list.checked = (strstr((char*)input, "[x]") || strstr((char*)input, "[X]"));    return NULL; }@@ -89,7 +100,7 @@   bool entering = (ev_type == CMARK_EVENT_ENTER);   if (entering) {     renderer->cr(renderer);-    if ((int)node->as.opaque == CMARK_TASKLIST_CHECKED) {+    if (node->as.list.checked) {       renderer->out(renderer, node, "- [x] ", false, LITERAL);     } else {       renderer->out(renderer, node, "- [ ] ", false, LITERAL);@@ -110,7 +121,7 @@     cmark_strbuf_puts(renderer->html, "<li");     cmark_html_render_sourcepos(node, renderer->html, options);     cmark_strbuf_putc(renderer->html, '>');-    if ((int)node->as.opaque == CMARK_TASKLIST_CHECKED) {+    if (node->as.list.checked) {       cmark_strbuf_puts(renderer->html, "<input type=\"checkbox\" checked=\"\" disabled=\"\" /> ");     } else {       cmark_strbuf_puts(renderer->html, "<input type=\"checkbox\" disabled=\"\" /> ");@@ -120,6 +131,15 @@   } } +static const char *xml_attr(cmark_syntax_extension *extension,+                            cmark_node *node) {+  if (node->as.list.checked) {+    return " completed=\"true\"";+  } else {+    return " completed=\"false\"";+  }+}+ cmark_syntax_extension *create_tasklist_extension(void) {   cmark_syntax_extension *ext = cmark_syntax_extension_new("tasklist"); @@ -130,6 +150,7 @@   cmark_syntax_extension_set_commonmark_render_func(ext, commonmark_render);   cmark_syntax_extension_set_plaintext_render_func(ext, commonmark_render);   cmark_syntax_extension_set_html_render_func(ext, html_render);+  cmark_syntax_extension_set_xml_attr_func(ext, xml_attr);    return ext; }
cbits/xml.c view
@@ -11,6 +11,7 @@ #include "syntax_extension.h"  #define BUFFER_SIZE 100+#define MAX_INDENT 40  // Functions to convert cmark_nodes to XML strings. @@ -26,7 +27,7 @@  static CMARK_INLINE void indent(struct render_state *state) {   int i;-  for (i = 0; i < state->indent; i++) {+  for (i = 0; i < state->indent && i < MAX_INDENT; i++) {     cmark_strbuf_putc(state->xml, ' ');   } }
changelog view
@@ -1,3 +1,37 @@+cmark-gfm 0.2.6 (28 Aug 2023)++  * Pull in upstream changes (includes security fixes).++cmark-gfm 0.2.5 (27 Sep 2022)++  * Add support for enabling footnotes (#26, Anton Sorokin).++cmark-gfm 0.2.4 (22 Sep 2022)++  * Pull in upstream changes (includes security fix).++cmark-gfm 0.2.3 (9 Mar 2022)++  * Pull in upstream changes.++cmark-gfm 0.2.2 (16 Sep 2020)++  * Pull in upstream changes.++cmark-gfm 0.2.1 (15 Nov 2019)++  * Add tasklist support (#16, Christian Gill).++cmark-gfm 0.2.0 (8 Apr 2019)++  * Pull in upstream changes.++cmark 0.6 (08 Apr 2019)++  * Update to cmark 0.29.0.+  * Export optUnsafe.  Note that the default is now to suppress+    potentially unsafe HTML; set optUnsafe to return to the old behavior.+ cmark-gfm 0.1.8 (14 Mar 2019)    * Pull in upstream changes.
cmark-gfm.cabal view
@@ -1,22 +1,21 @@ name:                cmark-gfm-version:             0.1.8+version:             0.2.6 synopsis:            Fast, accurate GitHub Flavored Markdown parser and renderer description:   This package provides Haskell bindings for   <https://github.com/github/cmark-gfm libcmark-gfm>, the reference   parser for <https://github.github.com/gfm/ GitHub Flavored Markdown>, a fully   specified variant of Markdown. It includes sources for-  libcmark-gfm (0.28.3.gfm.20) and does not require prior installation of the+  libcmark-gfm (0.29.0.gfm.13) and does not require prior installation of the   C library.  homepage:            https://github.com/kivikakk/cmark-gfm-hs license:             BSD3 license-file:        LICENSE-author:              Ashe Connor-maintainer:          kivikakk@github.com+author:              Asherah Connor+maintainer:          ashe@kivikakk.ee copyright:           (C) 2015--17 John MacFarlane, (C) 2017--19 Ashe Connor category:            Text-tested-with:         GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.2, GHC == 7.10.3 build-type:          Simple extra-source-files:  README.md                      changelog@@ -52,7 +51,6 @@                      cbits/table.h                      cbits/tagfilter.h                      cbits/tasklist.h-                     cbits/cmark-gfm-extensions_export.h                      cbits/map.h                      cbits/footnotes.h                      bench/sample.md@@ -70,8 +68,8 @@ library   exposed-modules:     CMarkGFM   build-depends:       base >=4.5 && < 5.0,-                       text >= 1.0 && < 1.3,-                       bytestring+                       text >= 1.0 && < 2.1,+                       bytestring >= 0.11.5 && < 0.12   if impl(ghc < 7.6)     build-depends:     ghc-prim >= 0.2   default-language:    Haskell2010@@ -136,4 +134,4 @@   hs-source-dirs: test   build-depends:  base, cmark-gfm, text, HUnit >= 1.2 && < 1.7   ghc-options:    -Wall -fno-warn-unused-do-bind -threaded-  default-language: Haskell98+  default-language: Haskell2010
test/test-cmark.hs view
@@ -16,11 +16,11 @@ -- Here we just make sure it's basically working. tests :: Test tests = TestList [-    "<h1>Hi</h1>\n" ~=? commonmarkToHtml [] [] "# Hi"+    "<h1>Hi</h1>\n<p><em>there</em></p>\n" ~=? commonmarkToHtml [] [] "# Hi\n\n*there*"   , "<p>dog’s</p>\n" ~=? commonmarkToHtml [optSmart] [] "dog's"-  , "<p><a href=\"\">trick</a></p>\n" ~=? commonmarkToHtml [] [] "[trick](javascript:alert('hi'))"+  , "<p><a href=\"\">trick</a></p>\n" ~=? commonmarkToHtml [optSafe] [] "[trick](javascript:alert('hi'))"   , ".RS\n.PP\nquote\n.RE\n" ~=? commonmarkToMan [] [] Nothing "> quote"-  , (Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) DOCUMENT [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) PARAGRAPH [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 6})) (TEXT "Hello ") [],Node (Just (PosInfo {startLine = 1, startColumn = 7, endLine = 1, endColumn = 13})) EMPH [Node (Just (PosInfo {startLine = 1, startColumn = 8, endLine = 1, endColumn = 12})) (TEXT "world") []]]]) ~=? commonmarkToNode [] [] "Hello *world*"+  , Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) DOCUMENT [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) PARAGRAPH [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 6})) (TEXT "Hello ") [],Node (Just (PosInfo {startLine = 1, startColumn = 7, endLine = 1, endColumn = 13})) EMPH [Node (Just (PosInfo {startLine = 1, startColumn = 8, endLine = 1, endColumn = 12})) (TEXT "world") []]]] ~=? commonmarkToNode [] [] "Hello *world*"   , "> Hello\n> *world*\n" ~=? nodeToCommonmark [] (Just 12) (Node Nothing DOCUMENT [Node Nothing BLOCK_QUOTE [Node Nothing PARAGRAPH [Node Nothing (TEXT "Hello ") [],Node Nothing EMPH [Node Nothing (TEXT "world") []]]]])   , "<p>~hi~</p>\n" ~=? commonmarkToHtml [] [] "~hi~"   , "<p><del>hi</del></p>\n" ~=? commonmarkToHtml [] [extStrikethrough] "~hi~"@@ -32,4 +32,7 @@   , Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 3, endColumn = 17})) DOCUMENT [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 3, endColumn = 17})) (TABLE [LeftAligned,CenterAligned,NoAlignment,RightAligned]) [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 17})) TABLE_ROW [Node (Just (PosInfo {startLine = 1, startColumn = 2, endLine = 1, endColumn = 4})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 3, endLine = 1, endColumn = 3})) (TEXT "a") []],Node (Just (PosInfo {startLine = 1, startColumn = 6, endLine = 1, endColumn = 8})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 7, endLine = 1, endColumn = 7})) (TEXT "b") []],Node (Just (PosInfo {startLine = 1, startColumn = 10, endLine = 1, endColumn = 12})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 11, endLine = 1, endColumn = 11})) (TEXT "c") []],Node (Just (PosInfo {startLine = 1, startColumn = 14, endLine = 1, endColumn = 16})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 15, endLine = 1, endColumn = 15})) (TEXT "d") []]],Node (Just (PosInfo {startLine = 3, startColumn = 1, endLine = 3, endColumn = 17})) TABLE_ROW [Node (Just (PosInfo {startLine = 3, startColumn = 2, endLine = 3, endColumn = 4})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 3, endLine = 3, endColumn = 3})) (TEXT "y") []],Node (Just (PosInfo {startLine = 3, startColumn = 6, endLine = 3, endColumn = 8})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 7, endLine = 3, endColumn = 7})) (TEXT "o") []],Node (Just (PosInfo {startLine = 3, startColumn = 10, endLine = 3, endColumn = 12})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 11, endLine = 3, endColumn = 11})) (TEXT "s") []],Node (Just (PosInfo {startLine = 3, startColumn = 14, endLine = 3, endColumn = 16})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 15, endLine = 3, endColumn = 15})) (TEXT "h") []]]]] ~=? commonmarkToNode [] [extTable] "| a | b | c | d |\n| :-- | :-: | --- | --: |\n| y | o | s | h |"   , "<xmp>\n" ~=? commonmarkToHtml [optUnsafe] [] "<xmp>"   , "&lt;xmp>\n" ~=? commonmarkToHtml [optUnsafe] [extTagfilter] "<xmp>"+  , "<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> foo</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> bar</li>\n</ul>\n" ~=? commonmarkToHtml [] [extTaskList] "- [ ] foo\n- [x] bar"+  , "<p>Here is footnote<sup class=\"footnote-ref\"><a href=\"#fn-1\" id=\"fnref-1\" data-footnote-ref>1</a></sup></p>\n<section class=\"footnotes\" data-footnotes>\n<ol>\n<li id=\"fn-1\">\n<p>abc <a href=\"#fnref-1\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"1\" aria-label=\"Back to reference 1\">↩</a></p>\n</li>\n</ol>\n</section>\n" ~=? commonmarkToHtml [optFootnotes] [] "Here is footnote[^1]\n\n[^1]: abc"   ]+